{"version":3,"file":"main.30024fea.js","mappings":"4aAEM,MAAOA,YAAW,SACN,KAAAC,IAAM,MAAK,UACX,KAAAC,MAAQ,QAAO,UACf,KAAAC,MAAQ,QAAO,UACf,KAAAC,MAAQ,QAAO,UACf,KAAAC,KAAO,OAAM,UACb,KAAAC,YAAc,cAAa,UAC3B,KAAAC,KAAO,OAAM,UACb,KAAAC,YAAc,cAAa,UAC3B,KAAAC,QAAU,UAAS,WAEV,KAAAC,OAAS,CAC5BV,YAAYC,IACZD,YAAYE,MACZF,YAAYG,MACZH,YAAYI,MACZJ,YAAYK,KACZL,YAAYM,YACZN,YAAYO,KACZP,YAAYQ,YACZR,YAAYS,SCpBb,MAAME,YAAc,CACvBC,YAAY,EACZC,cAAe,CAACb,YAAYS,QAAST,YAAYG,Q,4hBCa9C,MAAMW,QAAU,IAAIC,KAAAA,IAAuB,WAW5C,MAAOC,mBAKTC,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEQ,eAAeC,YACX,IAAIC,KAAOH,KAAKP,QAAU,iCAC1B,GAAmB,OAAfS,WACA,MAAM,IAAIpB,MAAM,mDACIiB,IAAfG,aACLC,MAAQ,cAAgBC,mBAAmB,GAAKF,YAAc,KAClEC,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKgB,sBAAsBD,cAClCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKgB,sBAAsBD,WACpC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BJ,sBAAsBK,UAC5B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,WAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAGjF,OAFoCoC,eAA8BnC,IAAlBoC,cAA8BA,cAAqB,MAE5FG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,WAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,eAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,WAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,eAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,WAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,eAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAsB,MAChC,+B,cA1EQ3C,oBAAkB,SAKP6C,KAAAA,IAAU,SAAwC/C,QAAO,oC,MALpEE,mBAAkB8C,QAAlB9C,mBAAkB,OA6EzB,MAAO+C,qBAAqB5D,MAO9Bc,YAAY+C,QAAiBrB,OAAgBD,SAAkBX,QAAkCkC,QAC7FC,QASM,KAAAC,gBAAiB,EAPvB9C,KAAK2C,QAAUA,QACf3C,KAAKsB,OAASA,OACdtB,KAAKqB,SAAWA,SAChBrB,KAAKU,QAAUA,QACfV,KAAK4C,OAASA,OAKlBG,sBAAsBC,KAClB,OAA8B,IAAvBA,IAAIF,gBAInB,SAASP,eAAeI,QAAiBrB,OAAgBD,SAAkBX,QAAkCkC,QACzG,OAAIA,MAAAA,QACOzB,EAAAA,WAAAA,GAAiByB,SAEjBzB,EAAAA,WAAAA,GAAiB,IAAIuB,aAAaC,QAASrB,OAAQD,SAAUX,QAAS,OAGrF,SAASsB,WAAWiB,MAChB,OAAO,IAAIC,WAAAA,GAAoBC,WAC3B,GAAKF,KAGE,CACH,IAAIG,OAAS,IAAIC,WACjBD,OAAOE,OAASC,QACZJ,SAASK,KAAMD,MAAME,OAAeb,QACpCO,SAASO,YAEbN,OAAOO,WAAWV,WARlBE,SAASK,KAAK,IACdL,SAASO,cC5Id,MAAME,qBAAuB,KAChC,MAAMC,KAAOC,SAASC,qBAAqB,QAC3C,GAAIF,MAAMG,OAAS,EAAG,CAClB,MAAMC,IAAMJ,KAAK,GAAGK,KACpB,GAAID,IACA,OAAIA,IAAIE,SAAS,KACNF,IAAIG,OAAO,EAAGH,IAAID,OAAS,GAE/BC,IAGf,OAAO,MCSEI,0BAA4B,IAAI3E,KAAAA,IAAiD,4BASjF4E,iBAAmB,IAAI5E,KAAAA,IAAgC,oBAMvD6E,qBAAuB,IAAI7E,KAAAA,IAA+B,yBAM1D8E,sBAAwB,IAAI9E,KAAAA,IAAoC,yBAKhE+E,cAAgB,IAAI/E,KAAAA,IAAgC,iBAKpDgF,iBAAmB,IAAIhF,KAAAA,IAAgC,oBAKvDiF,4BAA8B,IAAIjF,KAAAA,IAA+B,+BAEjEkF,cAAuBC,KAAAA,SAAAA,MAAe,wCAwM7C,MAAOC,aAIEjD,UACP,OAAO7B,KAAK+E,SAGLC,qBACP,OAAOhF,KAAKiF,aAGLC,wBACP,OAAOlF,KAAKmF,uBAGLC,yBACP,OAAOpF,KAAKqF,wBAGLC,wBACP,OAAOtF,KAAKuF,uBAKhB3F,YACW4F,UACCP,aACAI,wBACAF,uBACAI,wBAJD,KAAAC,UAAAA,UACC,KAAAP,aAAAA,aACA,KAAAI,wBAAAA,wBACA,KAAAF,uBAAAA,uBACA,KAAAI,uBAAAA,wBAQV,MAAOE,gBAAb7F,cAIY,KAAA8F,WAAa,IAAIC,IAKjB,KAAAC,YAAc,IAAID,IAEnBE,WAAWC,aAOd,MAAMC,MAAQ,IAAIjB,aACdgB,YAAYN,UACZM,YAAYE,sBACZF,YAAYG,0BACZH,YAAYI,yBACZJ,YAAYK,0BAEhBnG,KAAK0F,WAAWU,IAAIN,YAAYN,UAAUa,WAAWC,cAAeP,OAGjEQ,UAAUf,UAAkB3D,KAI/B,MAAMkE,MAAQ/F,KAAKwG,WAAWhB,WAC1BO,QAKCA,MAAchB,SAAWlD,IAK1B7B,KAAK4F,YAAYQ,IAAIvE,IAAKkE,QAI3BS,WAAWhB,WACd,OAAOxF,KAAK0F,WAAW3D,IAAIyD,UAAUa,WAAWC,eAG7CG,kBAAkB5E,KACrB,OAAO7B,KAAK4F,YAAY7D,IAAIF,KAGzB6E,cAEH,OAD+BC,MAAMC,KAAK5G,KAAK0F,WAAWrG,W,6EC/V3D,MAAMwH,gBAAkBC,OAAOC,OAAO,CACzCC,uBAAwBnC,SAAAA,SAAAA,MAAe,wCACvCoC,yBAA0BpC,SAAAA,SAAAA,MAAe,wCACzCqC,kBAAmBrC,SAAAA,SAAAA,MAAe,wCAClCsC,6BAA8BtC,SAAAA,SAAAA,MAAe,wCAC7CuC,yBAA0BvC,SAAAA,SAAAA,MAAe,wCACzCwC,2CAA4CxC,SAAAA,SAAAA,MAAe,wCAC3DyC,2BAA4BzC,SAAAA,SAAAA,MAAe,wCAC3C0C,wBAAyB1C,SAAAA,SAAAA,MAAe,wCACxC2C,kCAAmC3C,SAAAA,SAAAA,MAAe,wCAClD4C,uBAAwB5C,SAAAA,SAAAA,MAAe,wCACvC6C,yBAA0B7C,SAAAA,SAAAA,MAAe,wCACzC8C,sBAAuB9C,SAAAA,SAAAA,MAAe,wCACtC+C,yBAA0B/C,SAAAA,SAAAA,MAAe,wCACzCgD,gCAAiChD,SAAAA,SAAAA,MAAe,wCAChDiD,0CAA2CjD,SAAAA,SAAAA,MAAe,wCAC1DkD,kCAAmClD,SAAAA,SAAAA,MAAe,wCAClDmD,+BAAgCnD,SAAAA,SAAAA,MAAe,wCAC/CoD,kCAAmCpD,SAAAA,SAAAA,MAAe,wCAClDqD,iCAAkCrD,SAAAA,SAAAA,MAAe,wCACjDsD,wBAAyBtD,SAAAA,SAAAA,MAAe,wCACxCuD,0BAA2BvD,SAAAA,SAAAA,MAAe,wCAC1CwD,0BAA2BxD,SAAAA,SAAAA,MAAe,wCAC1CyD,sBAAuBzD,SAAAA,SAAAA,MAAe,wCACtC0D,wBAAyB1D,SAAAA,SAAAA,MAAe,wCACxC2D,qBAAsB3D,SAAAA,SAAAA,MAAe,wCACrC4D,wBAAyB5D,SAAAA,SAAAA,MAAe,wCACxC6D,uBAAwB7D,SAAAA,SAAAA,MAAe,wCACvC8D,6BAA8B9D,SAAAA,SAAAA,MAAe,wCAC7C+D,8BAA+B/D,SAAAA,SAAAA,MAAe,wCAC9CgE,gCAAiChE,SAAAA,SAAAA,MAAe,wCAChDiE,gCAAiCjE,SAAAA,SAAAA,MAAe,wCAChDkE,6BAA8BlE,SAAAA,SAAAA,MAAe,wCAC7CmE,yBAA0BnE,SAAAA,SAAAA,MAAe,wCACzCoE,2BAA4BpE,SAAAA,SAAAA,MAAe,wCAC3CqE,wBAAyBrE,SAAAA,SAAAA,MAAe,wCACxCsE,2BAA4BtE,SAAAA,SAAAA,MAAe,wCAC3CuE,8BAA+BvE,SAAAA,SAAAA,MAAe,wCAC9CwE,iCAAkCxE,SAAAA,SAAAA,MAAe,wCACjDyE,gCAAiCzE,SAAAA,SAAAA,MAAe,wCAChD0E,6BAA8B1E,SAAAA,SAAAA,MAAe,wCAC7C2E,gCAAiC3E,SAAAA,SAAAA,MAAe,wCAChD4E,2CAA4C5E,SAAAA,SAAAA,MAAe,wCAC3D6E,yBAA0B7E,SAAAA,SAAAA,MAAe,wCACzC8E,2BAA4B9E,SAAAA,SAAAA,MAAe,wCAC3C+E,wBAAyB/E,SAAAA,SAAAA,MAAe,wCACxCgF,2BAA4BhF,SAAAA,SAAAA,MAAe,wCAC3CiF,qCAAsCjF,SAAAA,SAAAA,MAAe,wCACrDkF,yBAA0BlF,SAAAA,SAAAA,MAAe,wCACzCmF,2BAA4BnF,SAAAA,SAAAA,MAAe,wCAC3CoF,wBAAyBpF,SAAAA,SAAAA,MAAe,wCACxCqF,2BAA4BrF,SAAAA,SAAAA,MAAe,wCAC3CsF,oBAAqBtF,SAAAA,SAAAA,MAAe,wCACpCuF,sBAAuBvF,SAAAA,SAAAA,MAAe,wCACtCwF,mBAAoBxF,SAAAA,SAAAA,MAAe,wCACnCyF,sBAAuBzF,SAAAA,SAAAA,MAAe,wCACtC0F,2BAA4B1F,SAAAA,SAAAA,MAAe,wCAC3C2F,6BAA8B3F,SAAAA,SAAAA,MAAe,wCAC7C4F,0BAA2B5F,SAAAA,SAAAA,MAAe,wCAC1C6F,6BAA8B7F,SAAAA,SAAAA,MAAe,wCAC7C8F,qBAAsB9F,SAAAA,SAAAA,MAAe,wCACrC+F,uBAAwB/F,SAAAA,SAAAA,MAAe,wCACvCgG,oBAAqBhG,SAAAA,SAAAA,MAAe,wCACpCiG,uBAAwBjG,SAAAA,SAAAA,MAAe,wCACvCkG,4BAA6BlG,SAAAA,SAAAA,MAAe,wCAC5CmG,8BAA+BnG,SAAAA,SAAAA,MAAe,wCAC9CoG,2BAA4BpG,SAAAA,SAAAA,MAAe,wCAC3CqG,8BAA+BrG,SAAAA,SAAAA,MAAe,wCAC9CsG,6BAA8BtG,SAAAA,SAAAA,MAAe,wCAC7CuG,+BAAgCvG,SAAAA,SAAAA,MAAe,wCAC/CwG,4BAA6BxG,SAAAA,SAAAA,MAAe,wCAC5CyG,+BAAgCzG,SAAAA,SAAAA,MAAe,wCAC/C0G,mBAAoB1G,SAAAA,SAAAA,MAAe,wCACnC2G,qBAAsB3G,SAAAA,SAAAA,MAAe,wCACrC4G,kBAAmB5G,SAAAA,SAAAA,MAAe,wCAClC6G,qBAAsB7G,SAAAA,SAAAA,MAAe,wCACrC8G,mBAAoB9G,SAAAA,SAAAA,MAAe,wCACnC+G,qBAAsB/G,SAAAA,SAAAA,MAAe,wCACrCgH,kBAAmBhH,SAAAA,SAAAA,MAAe,wCAClCiH,qBAAsBjH,SAAAA,SAAAA,MAAe,wCACrCkH,uBAAwBlH,SAAAA,SAAAA,MAAe,wCACvCmH,yBAA0BnH,SAAAA,SAAAA,MAAe,wCACzCoH,sBAAuBpH,SAAAA,SAAAA,MAAe,wCACtCqH,yBAA0BrH,SAAAA,SAAAA,MAAe,wCACzCsH,mBAAoBtH,SAAAA,SAAAA,MAAe,wCACnCuH,qBAAsBvH,SAAAA,SAAAA,MAAe,wCACrCwH,kBAAmBxH,SAAAA,SAAAA,MAAe,wCAClCyH,qBAAsBzH,SAAAA,SAAAA,MAAe,wCACrC0H,oBAAqB1H,SAAAA,SAAAA,MAAe,wCACpC2H,sBAAuB3H,SAAAA,SAAAA,MAAe,wCACtC4H,mBAAoB5H,SAAAA,SAAAA,MAAe,wCACnC6H,sBAAuB7H,SAAAA,SAAAA,MAAe,wCACtC8H,4BAA6B9H,SAAAA,SAAAA,MAAe,wCAC5C+H,8BAA+B/H,SAAAA,SAAAA,MAAe,wCAC9CgI,2BAA4BhI,SAAAA,SAAAA,MAAe,wCAC3CiI,8BAA+BjI,SAAAA,SAAAA,MAAe,wCAC9CkI,mBAAoBlI,SAAAA,SAAAA,MAAe,wCACnCmI,qBAAsBnI,SAAAA,SAAAA,MAAe,wCACrCoI,kBAAmBpI,SAAAA,SAAAA,MAAe,wCAClCqI,oBAAqBrI,SAAAA,SAAAA,MAAe,wCACpCsI,wBAAyBtI,SAAAA,SAAAA,MAAe,wCACxCuI,2BAA4BvI,SAAAA,SAAAA,MAAe,wCAC3CwI,4BAA6BxI,SAAAA,SAAAA,MAAe,wCAC5CyI,8BAA+BzI,SAAAA,SAAAA,MAAe,wCAC9C0I,2BAA4B1I,SAAAA,SAAAA,MAAe,wCAC3C2I,8BAA+B3I,SAAAA,SAAAA,MAAe,wCAC9C4I,uBAAwB5I,SAAAA,SAAAA,MAAe,wCACvC6I,yBAA0B7I,SAAAA,SAAAA,MAAe,wCACzC8I,wBAAyB9I,SAAAA,SAAAA,MAAe,wCACxC+I,2BAA4B/I,SAAAA,SAAAA,MAAe,wCAC3CgJ,4BAA6BhJ,SAAAA,SAAAA,MAAe,wCAC5CiJ,sBAAuBjJ,SAAAA,SAAAA,MAAe,wCACtCkJ,wBAAyBlJ,SAAAA,SAAAA,MAAe,wCACxCmJ,qBAAsBnJ,SAAAA,SAAAA,MAAe,wCACrCoJ,wBAAyBpJ,SAAAA,SAAAA,MAAe,wCACxCqJ,2BAA4BrJ,SAAAA,SAAAA,MAAe,wCAC3CsJ,6BAA8BtJ,SAAAA,SAAAA,MAAe,wCAC7CuJ,0BAA2BvJ,SAAAA,SAAAA,MAAe,wCAC1CwJ,4BAA6BxJ,SAAAA,SAAAA,MAAe,wCAC5CyJ,yBAA0BzJ,SAAAA,SAAAA,MAAe,wCACzC0J,4BAA6B1J,SAAAA,SAAAA,MAAe,wCAC5C2J,8BAA+B3J,SAAAA,SAAAA,MAAe,wCAC9C4J,gCAAiC5J,SAAAA,SAAAA,MAAe,wCAChD6J,6BAA8B7J,SAAAA,SAAAA,MAAe,wCAC7C8J,gCAAiC9J,SAAAA,SAAAA,MAAe,wCAChD+J,sBAAuB/J,SAAAA,SAAAA,MAAe,wCACtCgK,wBAAyBhK,SAAAA,SAAAA,MAAe,wCACxCiK,4BAA6BjK,SAAAA,SAAAA,MAAe,wCAC5CkK,8BAA+BlK,SAAAA,SAAAA,MAAe,wCAC9CmK,6BAA8BnK,SAAAA,SAAAA,MAAe,wCAC7CoK,sCAAuCpK,SAAAA,SAAAA,MAAe,wCACtDqK,oCAAqCrK,SAAAA,SAAAA,MAAe,wCACpDsK,uCAAwCtK,SAAAA,SAAAA,MAAe,wCACvDuK,4BAA6BvK,SAAAA,SAAAA,MAAe,wCAC5CwK,8BAA+BxK,SAAAA,SAAAA,MAAe,wCAC9CyK,oCAAqCzK,SAAAA,SAAAA,MAAe,wCACpD0K,uCAAwC1K,SAAAA,SAAAA,MAAe,wCACvD2K,8BAA+B3K,SAAAA,SAAAA,MAAe,wCAC9C4K,4BAA6B5K,SAAAA,SAAAA,MAAe,wCAC5C6K,+BAAgC7K,SAAAA,SAAAA,MAAe,wCAC/C8K,wBAAyB9K,SAAAA,SAAAA,MAAe,wCACxC+K,kCAAmC/K,SAAAA,SAAAA,MAAe,wCAClDgL,0BAA2BhL,SAAAA,SAAAA,MAAe,wCAC1CiL,uBAAwBjL,SAAAA,SAAAA,MAAe,wCACvCkL,0BAA2BlL,SAAAA,SAAAA,MAAe,wCAC1CmL,yBAA0BnL,SAAAA,SAAAA,MAAe,wCACzCoL,6BAA8BpL,SAAAA,SAAAA,MAAe,wCAC7CqL,0BAA2BrL,SAAAA,SAAAA,MAAe,wCAC1CsL,6BAA8BtL,SAAAA,SAAAA,MAAe,wCAC7CuL,yBAA0BvL,SAAAA,SAAAA,MAAe,wCACzCwL,8BAA+BxL,SAAAA,SAAAA,MAAe,wCAC9CyL,2BAA4BzL,SAAAA,SAAAA,MAAe,wCAC3C0L,8BAA+B1L,SAAAA,SAAAA,MAAe,wCAC9C2L,kCAAmC3L,SAAAA,SAAAA,MAAe,wCAClD4L,4BAA6B5L,SAAAA,SAAAA,MAAe,wCAC5C6L,4BAA6B7L,SAAAA,SAAAA,MAAe,wCAC5C8L,gCAAiC9L,SAAAA,SAAAA,MAAe,wCAChD+L,4BAA6B/L,SAAAA,SAAAA,MAAe,wCAC5CgM,qCAAsChM,SAAAA,SAAAA,MAAe,wCACrDiM,qCAAsCjM,SAAAA,SAAAA,MAAe,wCACrDkM,kCAAmClM,SAAAA,SAAAA,MAAe,wCAClDmM,wCAAyCnM,SAAAA,SAAAA,MAAe,wCACxDoM,+BAAgCpM,SAAAA,SAAAA,MAAe,wCAC/CqM,6BAA8BrM,SAAAA,SAAAA,MAAe,wCAC7CsM,8BAA+BtM,SAAAA,SAAAA,MAAe,wCAC9CuM,4BAA6BvM,SAAAA,SAAAA,MAAe,wCAC5CwM,4BAA6BxM,SAAAA,SAAAA,MAAe,wCAC5CyM,oBAAqBzM,SAAAA,SAAAA,MAAe,wCACpC0M,0BAA2B1M,SAAAA,SAAAA,MAAe,wCAC1C2M,kCAAmC3M,SAAAA,SAAAA,MAAe,wCAClD4M,8BAA+B5M,SAAAA,SAAAA,MAAe,wCAC9C6M,6BAA8B7M,SAAAA,SAAAA,MAAe,wCAC7C8M,4BAA6B9M,SAAAA,SAAAA,MAAe,wCAC5C+M,2BAA4B/M,SAAAA,SAAAA,MAAe,wCAC3CgN,0BAA2BhN,SAAAA,SAAAA,MAAe,wCAC1CiN,iCAAkCjN,SAAAA,SAAAA,MAAe,wCACjDkN,iCAAkClN,SAAAA,SAAAA,MAAe,wCACjDmN,sCAAuCnN,SAAAA,SAAAA,MAAe,wCACtDoN,qCAAsCpN,SAAAA,SAAAA,MAAe,wCACrDqN,+BAAgCrN,SAAAA,SAAAA,MAAe,wCAC/CsN,4BAA6BtN,SAAAA,SAAAA,MAAe,wCAC5CuN,6BAA8BvN,SAAAA,SAAAA,MAAe,wCAC7CwN,iCAAkCxN,SAAAA,SAAAA,MAAe,wCACjDyN,8BAA+BzN,SAAAA,SAAAA,MAAe,wCAC9C0N,8BAA+B1N,SAAAA,SAAAA,MAAe,wCAC9C2N,mCAAoC3N,SAAAA,SAAAA,MAAe,wCACnD4N,8BAA+B5N,SAAAA,SAAAA,MAAe,wCAC9C6N,0BAA2B7N,SAAAA,SAAAA,MAAe,wCAC1C8N,2BAA4B9N,SAAAA,SAAAA,MAAe,wCAC3C+N,+BAAgC/N,SAAAA,SAAAA,MAAe,wCAC/CgO,uBAAwBhO,SAAAA,SAAAA,MAAe,wCACvCiO,sBAAuBjO,SAAAA,SAAAA,MAAe,wCACtCkO,8BAA+BlO,SAAAA,SAAAA,MAAe,wCAC9CmO,sBAAuBnO,SAAAA,SAAAA,MAAe,wCACtCoO,oCAAqCpO,SAAAA,SAAAA,MAAe,wCACpDqO,oCAAqCrO,SAAAA,SAAAA,MAAe,wCACpDsO,wCAAyCtO,SAAAA,SAAAA,MAAe,wCACxDuO,wCAAyCvO,SAAAA,SAAAA,MAAe,wCACxDwO,wCAAyCxO,SAAAA,SAAAA,MAAe,wCACxDyO,kCAAmCzO,SAAAA,SAAAA,MAAe,wCAClD0O,qBAAsB1O,SAAAA,SAAAA,MAAe,wCACrC2O,2BAA4B3O,SAAAA,SAAAA,MAAe,wCAC3C4O,2BAA4B5O,SAAAA,SAAAA,MAAe,wCAC3C6O,8BAA+B7O,SAAAA,SAAAA,MAAe,wCAC9C8O,wBAAyB9O,SAAAA,SAAAA,MAAe,wCACxC+O,sBAAuB/O,SAAAA,SAAAA,MAAe,wCACtCgP,gCAAiChP,SAAAA,SAAAA,MAAe,wCAChDiP,8BAA+BjP,SAAAA,SAAAA,MAAe,wCAC9CkP,sCAAuClP,SAAAA,SAAAA,MAAe,wCACtDmP,iCAAkCnP,SAAAA,SAAAA,MAAe,wCACjDoP,gCAAiCpP,SAAAA,SAAAA,MAAe,wCAChDqP,8BAA+BrP,SAAAA,SAAAA,MAAe,wCAC9CsP,iDAAkDtP,SAAAA,SAAAA,MAAe,wCACjEuP,sCAAuCvP,SAAAA,SAAAA,MAAe,wCACtDwP,qBAAsBxP,SAAAA,SAAAA,MAAe,wCACrCyP,yBAA0BzP,SAAAA,SAAAA,MAAe,wCACzC0P,0BAA2B1P,SAAAA,SAAAA,MAAe,wCAC1C2P,oCAAqC3P,SAAAA,SAAAA,MAAe,wCACpD4P,8BAA+B5P,SAAAA,SAAAA,MAAe,wCAC9C6P,+BAAgC7P,SAAAA,SAAAA,MAAe,wCAC/C8P,kBAAmB9P,SAAAA,SAAAA,MAAe,wCAClC+P,uBAAwB/P,SAAAA,SAAAA,MAAe,wCACvCgQ,2BAA4BhQ,SAAAA,SAAAA,MAAe,wCAC3CiQ,2BAA4BjQ,SAAAA,SAAAA,MAAe,wCAC3CkQ,sBAAuBlQ,SAAAA,SAAAA,MAAe,wCACtCmQ,uBAAwBnQ,SAAAA,SAAAA,MAAe,wCACvCoQ,uBAAwBpQ,SAAAA,SAAAA,MAAe,wCACvCqQ,yBAA0BrQ,SAAAA,SAAAA,MAAe,wCACzCsQ,0BAA2BtQ,SAAAA,SAAAA,MAAe,wCAC1CuQ,8BAA+BvQ,SAAAA,SAAAA,MAAe,wCAC9CwQ,kCAAmCxQ,SAAAA,SAAAA,MAAe,wCAClDyQ,yBAA0BzQ,SAAAA,SAAAA,MAAe,wCACzC0Q,yBAA0B1Q,SAAAA,SAAAA,MAAe,wCACzC2Q,2BAA4B3Q,SAAAA,SAAAA,MAAe,wCAC3C4Q,uBAAwB5Q,SAAAA,SAAAA,MAAe,wCACvC6Q,oBAAqB7Q,SAAAA,SAAAA,MAAe,wCACpC8Q,0BAA2B9Q,SAAAA,SAAAA,MAAe,wCAC1C+Q,6BAA8B/Q,SAAAA,SAAAA,MAAe,wCAC7CgR,2BAA4BhR,SAAAA,SAAAA,MAAe,wCAC3CiR,gCAAiCjR,SAAAA,SAAAA,MAAe,wCAChDkR,gCAAiClR,SAAAA,SAAAA,MAAe,wCAChDmR,iBAAkBnR,SAAAA,SAAAA,MAAe,wCACjCoR,oBAAqBpR,SAAAA,SAAAA,MAAe,wCACpCqR,gCAAiCrR,SAAAA,SAAAA,MAAe,wCAChDsR,mCAAoCtR,SAAAA,SAAAA,MAAe,wCACnDuR,qCAAsCvR,SAAAA,SAAAA,MAAe,wCACrDwR,+BAAgCxR,SAAAA,SAAAA,MAAe,wCAC/CyR,gCAAiCzR,SAAAA,SAAAA,MAAe,wCAChD0R,kCAAmC1R,SAAAA,SAAAA,MAAe,wCAClD2R,yCAA0C3R,SAAAA,SAAAA,MAAe,wCACzD4R,uCAAwC5R,SAAAA,SAAAA,MAAe,wCACvD6R,8BAA+B7R,SAAAA,SAAAA,MAAe,wCAC9C8R,2CAA4C9R,SAAAA,SAAAA,MAAe,wCAC3D+R,iCAAkC/R,SAAAA,SAAAA,MAAe,wCACjDgS,8BAA+BhS,SAAAA,SAAAA,MAAe,wCAC9CiS,8BAA+BjS,SAAAA,SAAAA,MAAe,wCAC9CkS,gCAAiClS,SAAAA,SAAAA,MAAe,wCAChDmS,2BAA4BnS,SAAAA,SAAAA,MAAe,wCAC3CoS,oBAAqBpS,SAAAA,SAAAA,MAAe,wCACpCqS,4BAA6BrS,SAAAA,SAAAA,MAAe,wCAC5CsS,iCAAkCtS,SAAAA,SAAAA,MAAe,wCACjDuS,wBAAyBvS,SAAAA,SAAAA,MAAe,wCACxCwS,0BAA2BxS,SAAAA,SAAAA,MAAe,wCAC1CyS,4BAA6BzS,SAAAA,SAAAA,MAAe,wCAC5C0S,qBAAsB1S,SAAAA,SAAAA,MAAe,wCACrC2S,sBAAuB3S,SAAAA,SAAAA,MAAe,wCACtC4S,wBAAyB5S,SAAAA,SAAAA,MAAe,wCACxC6S,qBAAsB7S,SAAAA,SAAAA,MAAe,wCACrC8S,0BAA2B9S,SAAAA,SAAAA,MAAe,wCAC1C+S,4BAA6B/S,SAAAA,SAAAA,MAAe,wCAC5CgT,4BAA6BhT,SAAAA,SAAAA,MAAe,wCAC5CiT,iBAAkBjT,SAAAA,SAAAA,MAAe,wCACjCkT,uBAAwBlT,SAAAA,SAAAA,MAAe,wCACvCmT,uBAAwBnT,SAAAA,SAAAA,MAAe,wCACvCoT,uBAAwBpT,SAAAA,SAAAA,MAAe,wCACvCqT,wBAAyBrT,SAAAA,SAAAA,MAAe,wCACxCsT,2BAA4BtT,SAAAA,SAAAA,MAAe,wCAC3CuT,2BAA4BvT,SAAAA,SAAAA,MAAe,wCAC3CwT,sBAAuBxT,SAAAA,SAAAA,MAAe,wCACtCyT,2CAA4CzT,SAAAA,SAAAA,MAAe,wCAC3D0T,uBAAwB1T,SAAAA,SAAAA,MAAe,wCACvC2T,+BAAgC3T,SAAAA,SAAAA,MAAe,wCAC/C4T,yBAA0B5T,SAAAA,SAAAA,MAAe,wCACzC6T,yBAA0B7T,SAAAA,SAAAA,MAAe,wCACzC8T,yBAA0B9T,SAAAA,SAAAA,MAAe,wCACzC+T,4BAA6B/T,SAAAA,SAAAA,MAAe,wCAC5CgU,sBAAuBhU,SAAAA,SAAAA,MAAe,wCACtCiU,4BAA6BjU,SAAAA,SAAAA,MAAe,wCAC5CkU,mBAAoBlU,SAAAA,SAAAA,MAAe,wCACnCmU,sCAAuCnU,SAAAA,SAAAA,MAAe,wCACtDoU,qBAAsBpU,SAAAA,SAAAA,MAAe,wCACrCqU,sBAAuBrU,SAAAA,SAAAA,MAAe,wCACtCsU,mBAAoBtU,SAAAA,SAAAA,MAAe,wCACnCuU,uBAAwBvU,SAAAA,SAAAA,MAAe,wCACvCwU,+BAAgCxU,SAAAA,SAAAA,MAAe,wCAC/CyU,iCAAkCzU,SAAAA,SAAAA,MAAe,wCACjD0U,0BAA2B1U,SAAAA,SAAAA,MAAe,wCAC1C2U,sBAAuB3U,SAAAA,SAAAA,MAAe,wCACtC4U,iCAAkC5U,SAAAA,SAAAA,MAAe,wCACjD6U,8BAA+B7U,SAAAA,SAAAA,MAAe,wCAC9C8U,mCAAoC9U,SAAAA,SAAAA,MAAe,wCACnD+U,iCAAkC/U,SAAAA,SAAAA,MAAe,wCACjDgV,+BAAgChV,SAAAA,SAAAA,MAAe,wCAC/CiV,gCAAiCjV,SAAAA,SAAAA,MAAe,wCAChDkV,oCAAqClV,SAAAA,SAAAA,MAAe,wCACpDmV,mBAAoBnV,SAAAA,SAAAA,MAAe,wCACnCoV,gCAAiCpV,SAAAA,SAAAA,MAAe,wCAChDqV,+BAAgCrV,SAAAA,SAAAA,MAAe,wCAC/CsV,+BAAgCtV,SAAAA,SAAAA,MAAe,wCAC/CuV,2BAA4BvV,SAAAA,SAAAA,MAAe,wCAC3CwV,wBAAyBxV,SAAAA,SAAAA,MAAe,wCACxCyV,6BAA8BzV,SAAAA,SAAAA,MAAe,wCAC7C0V,yBAA0B1V,SAAAA,SAAAA,MAAe,wCACzC2V,yBAA0B3V,SAAAA,SAAAA,MAAe,wCACzC4V,4BAA6B5V,SAAAA,SAAAA,MAAe,wCAC5C6V,mCAAoC7V,SAAAA,SAAAA,MAAe,wCACnD8V,2BAA4B9V,SAAAA,SAAAA,MAAe,wCAC3C+V,2BAA4B/V,SAAAA,SAAAA,MAAe,wCAC3CgW,yBAA0BhW,SAAAA,SAAAA,MAAe,wCACzCiW,2BAA4BjW,SAAAA,SAAAA,MAAe,wCAC3CkW,yBAA0BlW,SAAAA,SAAAA,MAAe,wCACzCmW,qBAAsBnW,SAAAA,SAAAA,MAAe,wCACrCoW,8BAA+BpW,SAAAA,SAAAA,MAAe,wCAC9CqW,8BAA+BrW,SAAAA,SAAAA,MAAe,wCAC9CsW,4BAA6BtW,SAAAA,SAAAA,MAAe,wCAC5CuW,2BAA4BvW,SAAAA,SAAAA,MAAe,wCAC3CwW,2BAA4BxW,SAAAA,SAAAA,MAAe,wCAC3CyW,6BAA8BzW,SAAAA,SAAAA,MAAe,wCAC7C0W,yBAA0B1W,SAAAA,SAAAA,MAAe,wCACzC2W,sBAAuB3W,SAAAA,SAAAA,MAAe,wCACtC4W,4BAA6B5W,SAAAA,SAAAA,MAAe,wCAC5C6W,yBAA0B7W,SAAAA,SAAAA,MAAe,wCACzC8W,qBAAsB9W,SAAAA,SAAAA,MAAe,wCACrC+W,qCAAsC/W,SAAAA,SAAAA,MAAe,wCACrDgX,8BAA+BhX,SAAAA,SAAAA,MAAe,wCAC9CiX,0BAA2BjX,SAAAA,SAAAA,MAAe,wCAC1CkX,gCAAiClX,SAAAA,SAAAA,MAAe,wCAChDmX,sCAAuCnX,SAAAA,SAAAA,MAAe,wCACtDoX,2BAA4BpX,SAAAA,SAAAA,MAAe,wCAC3CqX,wBAAyBrX,SAAAA,SAAAA,MAAe,wCACxCsX,0BAA2BtX,SAAAA,SAAAA,MAAe,wCAC1CuX,8BAA+BvX,SAAAA,SAAAA,MAAe,wCAC9CwX,0BAA2BxX,SAAAA,SAAAA,MAAe,wCAC1CyX,4BAA6BzX,SAAAA,SAAAA,MAAe,wCAC5C0X,4BAA6B1X,SAAAA,SAAAA,MAAe,wCAC5C2X,uBAAwB3X,SAAAA,SAAAA,MAAe,wCACvC4X,oBAAqB5X,SAAAA,SAAAA,MAAe,wCACpC6X,4BAA6B7X,SAAAA,SAAAA,MAAe,wCAC5C8X,4BAA6B9X,SAAAA,SAAAA,MAAe,wCAC5C+X,uBAAwB/X,SAAAA,SAAAA,MAAe,wCACvCgY,oBAAqBhY,SAAAA,SAAAA,MAAe,wCACpCiY,iCAAkCjY,SAAAA,SAAAA,MAAe,wCACjDkY,iCAAkClY,SAAAA,SAAAA,MAAe,wCACjDmY,4BAA6BnY,SAAAA,SAAAA,MAAe,wCAC5CoY,yBAA0BpY,SAAAA,SAAAA,MAAe,wCACzCqY,8BAA+BrY,SAAAA,SAAAA,MAAe,wCAC9CsY,oBAAqBtY,SAAAA,SAAAA,MAAe,wCACpCuY,sBAAuBvY,SAAAA,SAAAA,MAAe,wCACtCwY,+BAAgCxY,SAAAA,SAAAA,MAAe,wCAC/CyY,qBAAsBzY,SAAAA,SAAAA,MAAe,wCACrC0Y,iCAAkC1Y,SAAAA,SAAAA,MAAe,wCACjD2Y,iCAAkC3Y,SAAAA,SAAAA,MAAe,wCACjD4Y,4BAA6B5Y,SAAAA,SAAAA,MAAe,wCAC5C6Y,yBAA0B7Y,SAAAA,SAAAA,MAAe,wCACzC8Y,yBAA0B9Y,SAAAA,SAAAA,MAAe,wCACzC+Y,0BAA2B/Y,SAAAA,SAAAA,MAAe,wCAC1CgZ,yBAA0BhZ,SAAAA,SAAAA,MAAe,wCACzCiZ,2BAA4BjZ,SAAAA,SAAAA,MAAe,wCAC3CkZ,wBAAyBlZ,SAAAA,SAAAA,MAAe,wCACxCmZ,2BAA4BnZ,SAAAA,SAAAA,MAAe,wCAC3CoZ,0BAA2BpZ,SAAAA,SAAAA,MAAe,wCAC1CqZ,oBAAqBrZ,SAAAA,SAAAA,MAAe,wCACpCsZ,mCAAoCtZ,SAAAA,SAAAA,MAAe,wCACnDuZ,wCAAyCvZ,SAAAA,SAAAA,MAAe,wCACxDwZ,8BAA+BxZ,SAAAA,SAAAA,MAAe,wCAC9CyZ,wCAAyCzZ,SAAAA,SAAAA,MAAe,0CCtX/C0Z,uBAAyB,IAAI7e,KAAAA,IAA2C,uBCI/E,MAAO8e,mBACTzb,kBAAkB0b,mBACd,MAAMC,UAAY,GAQlB,OAPID,mBAAmBza,QACnB0a,UAAUC,KAAK,CACXC,QAASL,uBACTM,SAAUJ,kBACVK,OAAO,IAGR,CACHC,SAAUP,mBACVE,WAEP,+B,cAdQF,qBAAkB,8B,KAAlBA,qBAAkB,iCCLzB,MAAOQ,aAAY,SACP,KAAAC,OAAS,SAAQ,UACjB,KAAAC,SAAW,WAAU,UACrB,KAAAC,KAAO,OAAM,UACb,KAAAC,OAAS,SAAQ,UACjB,KAAAC,QAAU,UAAS,UACnB,KAAAC,UAAY,YAAW,UAEd,KAAAjgB,OAAS,CAC5B2f,aAAaC,OACbD,aAAaE,SACbF,aAAaG,KACbH,aAAaI,OACbJ,aAAaK,QACbL,aAAaM,W,wDCXf,MAAOC,wBACFC,UAAUC,cACb,OAAQA,cACJ,KAAKT,aAAaC,OAEd,OAAOS,yBAAAA,GAAAA,QACX,KAAKV,aAAaE,SAClB,KAAKF,aAAaM,UAEd,OAAOI,yBAAAA,GAAAA,OACX,KAAKV,aAAaK,QAClB,KAAKL,aAAaG,KAClB,KAAKH,aAAaI,OAEd,OAAOM,yBAAAA,GAAAA,MACX,QACI,OAAOA,yBAAAA,GAAAA,QAElB,+B,cAlBQH,0BAAuB,+B,gCAAvBA,wBAAuBI,MAAAA,I,sCCY7B,MAAMlgB,YAAU,IAAIC,KAAAA,IAAuB,WAgB5C,MAAOkgB,oBAKThgB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEogB,6BAA6Bpe,MACzB,IAAItB,KAAOH,KAAKP,QAAU,kDAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,iCAIxB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAK+f,oCAAoChf,cAChDF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK+f,oCAAoChf,WAClD,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B2e,oCAAoC1e,UAC1C,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAO/B0d,aAAave,MACT,IAAItB,KAAOH,KAAKP,QAAU,kCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,iCAIxB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKigB,oBAAoBlf,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKigB,oBAAoBlf,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B6e,oBAAoB5e,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAC9B,+B,cAlIQsd,qBAAmB,SAKRpd,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEmgB,oBAAmBnd,QAAnBmd,oBAAmB,OAuK1B,MAAOM,aAKTtgB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzE0gB,+BACI,IAAIhgB,KAAOH,KAAKP,QAAU,2CAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKogB,oCAAoCrf,cAChDF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKogB,oCAAoCrf,WAClD,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9Bgf,oCAAoC/e,UAC1C,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAGjF,OAFIoC,eAA8BnC,IAAlBoC,cAA8BA,cAAqB,MAE5DG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAsB,MAOjC+d,SACI,IAAIlgB,KAAOH,KAAKP,QAAU,qBAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKsgB,cAAcvf,cAC1BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKsgB,cAAcvf,WAC5B,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9Bkf,cAAcjf,UACpB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAK8B,gBAAgBC,OAAOF,YAG3Cte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAiC,MAO5Cqe,aAAaC,SAAiBC,YAC1B,IAAI1gB,KAAOH,KAAKP,QAAU,4BAC1B,GAAImhB,MAAAA,SACA,MAAM,IAAI9hB,MAAM,gEAGpB,GADIqB,MAAQ,YAAcC,mBAAmB,GAAKwgB,UAAY,IAC1DC,MAAAA,WACA,MAAM,IAAI/hB,MAAM,kEAEhBqB,MAAQ,cAAgBC,mBAAmB,GAAKygB,YAAc,IAClE1gB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK8gB,oBAAoB/f,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK8gB,oBAAoB/f,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B0f,oBAAoBzf,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKoC,WAAWL,OAAOF,YAGtCte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA4B,MAOvC0e,uBACI,IAAI7gB,KAAOH,KAAKP,QAAU,mCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKihB,4BAA4BlgB,cACxCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKihB,4BAA4BlgB,WAC1C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B6f,4BAA4B5f,UAClC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKuC,iBAAiBR,OAAOF,YAG5Cte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAkC,MAO7C6e,sBAAsBC,WAClB,IAAIjhB,KAAOH,KAAKP,QAAU,qCAC1B,GAAI2hB,MAAAA,UACA,MAAM,IAAItiB,MAAM,iEAEhBsiB,WAAaA,UAAUC,SAAQb,OAAUrgB,MAAQ,aAAeC,mBAAmB,GAAKogB,MAAQ,OACpGrgB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKshB,6BAA6BvgB,cACzCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKshB,6BAA6BvgB,WAC3C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BkgB,6BAA6BjgB,UACnC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAO/Bif,qBAAqBH,WACjB,IAAIjhB,KAAOH,KAAKP,QAAU,oCAC1B,GAAI2hB,MAAAA,UACA,MAAM,IAAItiB,MAAM,iEAEhBsiB,WAAaA,UAAUC,SAAQb,OAAUrgB,MAAQ,aAAeC,mBAAmB,GAAKogB,MAAQ,OACpGrgB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKwhB,4BAA4BzgB,cACxCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKwhB,4BAA4BzgB,WAC1C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BogB,4BAA4BngB,UAClC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAC9B,+B,cA5WQ4d,cAAY,SAKD1d,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEygB,aAAYzd,QAAZyd,aAAY,OAwXnB,MAAOuB,eAKT7hB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEiiB,uBACI,IAAIvhB,KAAOH,KAAKP,QAAU,kCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK2hB,4BAA4B5gB,cACxCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK2hB,4BAA4B5gB,WAC1C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BugB,4BAA4BtgB,UAClC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKiD,mBAAgBC,OAAOrB,YAG3Cte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAuB,MACjC,+B,cApEQmf,gBAAc,SAKHjf,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEgiB,eAAchf,QAAdgf,eAAc,OAgFrB,MAAOK,aAKTliB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEsiB,iBAAiBtgB,MACb,IAAItB,KAAOH,KAAKP,QAAU,4BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKgiB,wBAAwBjhB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKgiB,wBAAwBjhB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B4gB,wBAAwB3gB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAY+f,cAAcvB,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MACvC,+B,cArEQwf,cAAY,SAKDtf,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEqiB,aAAYrf,QAAZqf,aAAY,OAkGnB,MAAOI,eAKTtiB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzE0iB,wBACI,IAAIhiB,KAAOH,KAAKP,QAAU,mCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKoiB,6BAA6BrhB,cACzCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKoiB,6BAA6BrhB,WAC3C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BghB,6BAA6B/gB,UACnC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAK0D,SAAS3B,OAAOF,YAGpCte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA0B,MAQrCggB,uBAAuBC,UACnB,IAAIpiB,KAAOH,KAAKP,QAAU,qCAC1B,GAAiB,OAAb8iB,SACA,MAAM,IAAIzjB,MAAM,iDACEiB,IAAbwiB,WACLpiB,MAAQ,YAAcC,mBAAmB,GAAKmiB,UAAY,KAC9DpiB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKwiB,8BAA8BzhB,cAC1CF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKwiB,8BAA8BzhB,WAC5C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BohB,8BAA8BnhB,UACpC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYugB,cAAc/B,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MAQxCogB,cAAcH,UACV,IAAIpiB,KAAOH,KAAKP,QAAU,4BAC1B,GAAiB,OAAb8iB,SACA,MAAM,IAAIzjB,MAAM,iDACEiB,IAAbwiB,WACLpiB,MAAQ,YAAcC,mBAAmB,GAAKmiB,UAAY,KAC9DpiB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK2iB,qBAAqB5hB,cACjCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK2iB,qBAAqB5hB,WACnC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BuhB,qBAAqBthB,UAC3B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAY0gB,cAAclC,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MAOxCugB,WAAWphB,MACP,IAAItB,KAAOH,KAAKP,QAAU,6BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAK8iB,kBAAkB/hB,cAC9BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK8iB,kBAAkB/hB,WAChC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B0hB,kBAAkBzhB,UACxB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYugB,cAAc/B,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MACvC,+B,cAjPQ4f,gBAAc,SAKH1f,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEyiB,eAAczf,QAAdyf,eAAc,OA4PrB,MAAOa,oBAKTnjB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAMzEujB,iBAAiBvhB,MACb,IAAItB,KAAOH,KAAKP,QAAU,mCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKijB,wBAAwBliB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKijB,wBAAwBliB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B6hB,wBAAwB5hB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKuE,iBAAiBxC,OAAOF,YAG5Cte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAkC,MAC5C,+B,cA3EQygB,qBAAmB,SAKRvgB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEsjB,oBAAmBtgB,QAAnBsgB,oBAAmB,OA0F1B,MAAOI,cAKTvjB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAMzE2jB,aACI,IAAIjjB,KAAOH,KAAKP,QAAU,uBAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKqjB,kBAAkBtiB,cAC9BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKqjB,kBAAkBtiB,WAChC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BiiB,kBAAkBhiB,UACxB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAK2E,cAAc5C,OAAOF,YAGzCte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA+B,MAM1CihB,WAAWC,GAAW/hB,MAClB,IAAItB,KAAOH,KAAKP,QAAU,4BAC1B,GAAI+jB,MAAAA,GACA,MAAM,IAAI1kB,MAAM,uCACpBqB,KAAOA,KAAKE,QAAQ,OAAQD,mBAAmB,GAAKojB,KACpDrjB,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,iCAIxB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKyjB,kBAAkB1iB,cAC9BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKyjB,kBAAkB1iB,WAChC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BqiB,kBAAkBpiB,UACxB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAC9B,+B,cA9HQ6gB,eAAa,SAKF3gB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpE0jB,cAAa1gB,QAAb0gB,cAAa,OA2IpB,MAAOO,uBAKT9jB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAQzEkkB,iBAAiBliB,MACb,IAAItB,KAAOH,KAAKP,QAAU,yCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAK4jB,wBAAwB7iB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK4jB,wBAAwB7iB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BwiB,wBAAwBviB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAGjF,OAFIoC,eAA8BnC,IAAlBoC,cAA8BA,cAAqB,MAE5DG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAsB,MAChC,+B,cAnEQohB,wBAAsB,SAKXlhB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEikB,uBAAsBjhB,QAAtBihB,uBAAsB,OAiG7B,MAAOG,gBAKTjkB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAQzEqkB,cAAcriB,MACV,IAAItB,KAAOH,KAAKP,QAAU,4BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAK+jB,qBAAqBhjB,cACjCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK+jB,qBAAqBhjB,WACnC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B2iB,qBAAqB1iB,UAC3B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAIqC,cAAe,CACfD,UAAY,GACZ,IAAK,IAAIL,OAAOM,cACRA,cAAc6hB,eAAeniB,OACvBK,UAAYL,UAA8B9B,IAAvBoC,cAAcN,KAAqBM,cAAcN,KAAY,WAI9FK,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIgiB,UAAiB,KACjBC,cAAkC,KAAlBjiB,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQ2D,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIzD,QAAQ0D,cACbD,UAAWtF,KAAK6B,WAGpByD,UAAiB,KAErB,OAAO1hB,mBAAe,cAAejB,OAAQW,cAAeL,SAAUqiB,eAEpD,MAAX3iB,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA0C,MAQrD6hB,aAAa1iB,MACT,IAAItB,KAAOH,KAAKP,QAAU,2BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKokB,oBAAoBrjB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKokB,oBAAoBrjB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BgjB,oBAAoB/iB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAIqC,cAAe,CACfD,UAAY,GACZ,IAAK,IAAIL,OAAOM,cACRA,cAAc6hB,eAAeniB,OACvBK,UAAYL,UAA8B9B,IAAvBoC,cAAcN,KAAqBM,cAAcN,KAAY,WAI9FK,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIgiB,UAAiB,KACjBC,cAAkC,KAAlBjiB,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQ2D,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIzD,QAAQ0D,cACbD,UAAWtF,KAAK6B,WAGpByD,UAAiB,KAErB,OAAO1hB,mBAAe,cAAejB,OAAQW,cAAeL,SAAUqiB,eAEpD,MAAX3iB,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA0C,MAOrD+hB,mBACI,IAAIlkB,KAAOH,KAAKP,QAAU,+BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKskB,wBAAwBvjB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKskB,wBAAwBvjB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BkjB,wBAAwBjjB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYqiB,cAAc7D,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MAQxCkiB,aAAa/iB,MACT,IAAItB,KAAOH,KAAKP,QAAU,2BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKykB,oBAAoB1jB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKykB,oBAAoB1jB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BqjB,oBAAoBpjB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAIqC,cAAe,CACfD,UAAY,GACZ,IAAK,IAAIL,OAAOM,cACRA,cAAc6hB,eAAeniB,OACvBK,UAAYL,UAA8B9B,IAAvBoC,cAAcN,KAAqBM,cAAcN,KAAY,WAI9FK,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIgiB,UAAiB,KACjBC,cAAkC,KAAlBjiB,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQ2D,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIzD,QAAQ0D,cACbD,UAAWtF,KAAK6B,WAGpByD,UAAiB,KAErB,OAAO1hB,mBAAe,cAAejB,OAAQW,cAAeL,SAAUqiB,eAEpD,MAAX3iB,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA0C,MACpD,+B,cAhTQuhB,iBAAe,SAKJrhB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEokB,gBAAephB,QAAfohB,gBAAe,OA6TtB,MAAOa,aAKT9kB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAQzEklB,iBAAiBljB,MACb,IAAItB,KAAOH,KAAKP,QAAU,4BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,8BAChB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAK4kB,wBAAwB7jB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK4kB,wBAAwB7jB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BwjB,wBAAwBvjB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKkG,aAAanE,OAAOF,YAGxCte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA8B,MACxC,+B,cA7EQoiB,cAAY,SAKDliB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEilB,aAAYjiB,QAAZiiB,aAAY,OAsHnB,MAAOI,cAKTllB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEslB,YACI,IAAI5kB,KAAOH,KAAKP,QAAU,sBAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKglB,iBAAiBjkB,cAC7BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKglB,iBAAiBjkB,WAC/B,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B4jB,iBAAiB3jB,UACvB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAK6B,WAGpBte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAwB,MAUnC2iB,aAAaC,aACT,IAAI/kB,KAAOH,KAAKP,QAAU,0BAC1B,GAAoB,OAAhBylB,YACA,MAAM,IAAIpmB,MAAM,oDACKiB,IAAhBmlB,cACL/kB,MAAQ,eAAiBC,mBAAmB,GAAK8kB,aAAe,KACpE/kB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKmlB,oBAAoBpkB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKmlB,oBAAoBpkB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B+jB,oBAAoB9jB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYkjB,UAAU1E,OAAOve,gBACtBG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAyB,MAQpC+iB,wBAAwBnlB,WAAoBglB,aACxC,IAAI/kB,KAAOH,KAAKP,QAAU,wCAC1B,GAAIS,MAAAA,WACA,MAAM,IAAIpB,MAAM,kEAGpB,GADIqB,MAAQ,cAAgBC,mBAAmB,GAAKF,YAAc,IAC9C,OAAhBglB,YACA,MAAM,IAAIpmB,MAAM,oDACKiB,IAAhBmlB,cACL/kB,MAAQ,eAAiBC,mBAAmB,GAAK8kB,aAAe,KACpE/kB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKslB,+BAA+BvkB,cAC3CF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKslB,+BAA+BvkB,WAC7C,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BkkB,+BAA+BjkB,UACrC,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,WAAYjB,OAAQW,cAAeL,aAEvC,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAO/BijB,SACI,IAAIplB,KAAOH,KAAKP,QAAU,sBAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKwlB,cAAczkB,cAC1BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKwlB,cAAczkB,WAC5B,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BokB,cAAcnkB,UACpB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAO/BmjB,cAAcP,aACV,IAAI/kB,KAAOH,KAAKP,QAAU,8BAC1B,GAAoB,OAAhBylB,YACA,MAAM,IAAIpmB,MAAM,oDACKiB,IAAhBmlB,cACL/kB,MAAQ,eAAiBC,mBAAmB,GAAK8kB,aAAe,KACpE/kB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK0lB,qBAAqB3kB,cACjCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK0lB,qBAAqB3kB,WACnC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BskB,qBAAqBrkB,UAC3B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,WAAYjB,OAAQW,cAAeL,aAEvC,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAO/BqjB,+BACI,IAAIxlB,KAAOH,KAAKP,QAAU,yCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK4lB,oCAAoC7kB,cAChDF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK4lB,oCAAoC7kB,WAClD,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BwkB,oCAAoCvkB,UAC1C,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAGjF,OAFIoC,eAA8BnC,IAAlBoC,cAA8BA,cAAqB,MAE5DG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAuB,MACjC,+B,cA1VQwiB,eAAa,SAKFtiB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEqlB,cAAariB,QAAbqiB,cAAa,OAoXpB,MAAOe,YAKTjmB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UASzEqmB,SAASC,WAA4BC,YACjC,IAAI7lB,KAAOH,KAAKP,QAAU,oBAC1B,GAAIsmB,MAAAA,WACA,MAAM,IAAIjnB,MAAM,kEAGpB,GADIqB,MAAQ,cAAgBC,mBAAmB,GAAK2lB,YAAc,IAC/C,OAAfC,WACA,MAAM,IAAIlnB,MAAM,mDACIiB,IAAfimB,aACL7lB,MAAQ,cAAgBC,mBAAmB,GAAK4lB,YAAc,KAClE7lB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKimB,gBAAgBllB,cAC5BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKimB,gBAAgBllB,WAC9B,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B6kB,gBAAgB5kB,UACtB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYgkB,iBAAiBxF,OAAOve,gBAC7BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAgC,MAQ3C6jB,KAAK1kB,MACD,IAAItB,KAAOH,KAAKP,QAAU,kBAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,iCAIxB,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKomB,YAAYrlB,cACxBF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKomB,YAAYrlB,WAC1B,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BglB,YAAY/kB,UAClB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAQ/B+jB,aAAaC,SAAkBC,YAAoBC,SAAiBT,YAChE,IAAI5lB,KAAOH,KAAKP,QAAU,2BAC1B,GAAI6mB,MAAAA,SACA,MAAM,IAAIxnB,MAAM,gEAGpB,GADIqB,MAAQ,YAAcC,mBAAmB,GAAKkmB,UAAY,IAC1DC,MAAAA,YACA,MAAM,IAAIznB,MAAM,mEAGpB,GADIqB,MAAQ,eAAiBC,mBAAmB,GAAKmmB,aAAe,IAChEC,MAAAA,SACA,MAAM,IAAI1nB,MAAM,gEAGpB,GADIqB,MAAQ,YAAcC,mBAAmB,GAAKomB,UAAY,IAC1DT,MAAAA,WACA,MAAM,IAAIjnB,MAAM,kEAEhBqB,MAAQ,cAAgBC,mBAAmB,GAAK2lB,YAAc,IAClE5lB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKymB,oBAAoB1lB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKymB,oBAAoB1lB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BqlB,oBAAoBplB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYwkB,qBAAqBhG,OAAOve,gBACjCG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoC,MAC9C,+B,cAvNQujB,aAAW,SAKArjB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEomB,YAAWpjB,QAAXojB,YAAW,OAsOlB,MAAOc,kBAKT/mB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAMzEmnB,eACI,IAAIzmB,KAAOH,KAAKP,QAAU,gCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK6mB,oBAAoB9lB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK6mB,oBAAoB9lB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BylB,oBAAoBxlB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAKmI,gBAAgBpG,OAAOF,YAG3Cte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAiC,MAM5CykB,eAAeC,eACX,IAAI7mB,KAAOH,KAAKP,QAAU,mCAC1B,GAAIunB,MAAAA,cACA,MAAM,IAAIloB,MAAM,qEAEhBqB,MAAQ,iBAAmBC,mBAAmB,GAAK4mB,eAAiB,IACxE7mB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,KAI7B,OAAOX,KAAKH,KAAKe,QAAQ,OAAQT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAChEf,KAAKinB,sBAAsBlmB,cAClCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKinB,sBAAsBlmB,WACpC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B6lB,sBAAsB5lB,UAC5B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAC9B,+B,cA/HQqkB,mBAAiB,SAKNnkB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEknB,kBAAiBlkB,QAAjBkkB,kBAAiB,OAsJxB,MAAOO,gBAKTtnB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAQzE0nB,YAAY3D,IACR,IAAIrjB,KAAOH,KAAKP,QAAU,2BAC1B,GAAI+jB,MAAAA,GACA,MAAM,IAAI1kB,MAAM,0DAEhBqB,MAAQ,MAAQC,mBAAmB,GAAKojB,IAAM,IAClDrjB,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKonB,mBAAmBrmB,cAC/BF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKonB,mBAAmBrmB,WACjC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BgmB,mBAAmB/lB,UACzB,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYmlB,cAAc3G,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MAOxCglB,eACI,IAAInnB,KAAOH,KAAKP,QAAU,2BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKunB,oBAAoBxmB,cAChCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKunB,oBAAoBxmB,WAClC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BmmB,oBAAoBlmB,UAC1B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBACjF,GAAI6G,MAAM4Z,QAAQpe,eAAgB,CAC9BD,UAAY,GACZ,IAAK,IAAIse,QAAQre,cACbD,UAAWyc,KAAK0I,cAAc3G,OAAOF,YAGzCte,UAAiB,KAErB,OAAOI,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA+B,MAO1CklB,oBACI,IAAIrnB,KAAOH,KAAKP,QAAU,gCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKynB,yBAAyB1mB,cACrCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKynB,yBAAyB1mB,WACvC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BqmB,yBAAyBpmB,UAC/B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYmlB,cAAc3G,OAAOve,gBAC1BG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA6B,MACvC,+B,cAnLQ4kB,iBAAe,SAKJ1kB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEynB,gBAAezkB,QAAfykB,gBAAe,OAkMtB,MAAOQ,oBAKT9nB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAMzEkoB,mBACI,IAAIxnB,KAAOH,KAAKP,QAAU,mCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK4nB,wBAAwB7mB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK4nB,wBAAwB7mB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9BwmB,wBAAwBvmB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAY2lB,UAAUnH,OAAOve,gBACtBG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAyB,MAMpCwlB,iBAAiBrmB,MACb,IAAItB,KAAOH,KAAKP,QAAU,mCAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAI7B,IAAIC,SAAiB,CACjBmB,KAHaW,KAAK0d,UAAUre,MAI5BlB,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,eAAgB,iCAIxB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAK+nB,wBAAwBhnB,cACpCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAK+nB,wBAAwBhnB,WACtC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B2mB,wBAAwB1mB,UAC9B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBAClDK,EAAAA,GAAAA,IAAoB,SAET,MAAXhB,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,cAAejB,OAAQW,cAAeL,aAE1C,MAAXN,OACAU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,eAAgBjB,OAAQW,cAAeL,aAE3C,MAAXN,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAAoB,MAC9B,+B,cA5HQolB,qBAAmB,SAKRllB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEioB,oBAAmBjlB,QAAnBilB,oBAAmB,OAwI1B,MAAOM,cAKTpoB,YAAgCC,KAA+CJ,SAFrE,KAAAK,sBAAmEC,EAGzEC,KAAKH,KAAOA,KACZG,KAAKP,QAAUA,MAAAA,QAA4CA,QAAU,UAOzEwoB,iBACI,IAAI9nB,KAAOH,KAAKP,QAAU,2BAC1BU,KAAOA,KAAKE,QAAQ,QAAS,IAE7B,IAAIC,SAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,iBAAiB,EACjBC,QAAS,IAAIC,KAAAA,GAAY,CACrB,OAAU,gBAIlB,OAAOX,KAAKH,KAAKe,QAAQ,MAAOT,KAAMG,UAAUO,MAAKC,EAAAA,mBAAAA,KAAqBC,WAC/Df,KAAKkoB,sBAAsBnnB,cAClCF,MAAKI,EAAAA,WAAAA,IAAkBF,YACvB,KAAIA,qBAAqBG,KAAAA,IAOrB,OAAOC,EAAAA,WAAAA,GAAiBJ,WANxB,IACI,OAAOf,KAAKkoB,sBAAsBnnB,WACpC,MAAOK,GACL,OAAOD,EAAAA,WAAAA,GAAiBC,QAO9B8mB,sBAAsB7mB,UAC5B,MAAMC,OAASD,SAASC,OAClBC,aACFF,oBAAoBG,KAAAA,GAAeH,SAASI,KAC3CJ,SAAiBK,iBAAiBC,KAAQN,SAAiBK,WAAQ3B,EAExE,IAAI6B,SAAgB,GAAI,GAAIP,SAASX,QAAW,IAAK,IAAImB,OAAOR,SAASX,QAAQoB,OAAUF,SAASC,KAAOR,SAASX,QAAQqB,IAAIF,KAChI,OAAe,MAAXP,OACOU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,gBACzD,IAAIC,UAAiB,KACjBC,cAAkC,KAAlBF,cAAuB,KAAOG,KAAKC,MAAMJ,cAAejC,KAAKF,kBAEjF,OADAoC,UAAYimB,YAAYzH,OAAOve,gBACxBG,EAAAA,GAAAA,IAAcJ,eAEH,MAAXZ,QAA6B,MAAXA,OAClBU,eAAWT,cAAcV,MAAKC,EAAAA,mBAAAA,KAAoBmB,eAClDM,mBAAe,uCAAwCjB,OAAQW,cAAeL,cAGlFU,EAAAA,GAAAA,IAA2B,MACrC,+B,cA7DQ0lB,eAAa,SAKFxlB,KAAAA,IAAU,SAAwC/C,YAAO,oC,MALpEuoB,cAAavlB,QAAbulB,cAAa,OAgEpB,MAAOpF,cAGThjB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwoB,gBAAqCzoB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,MAIzFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIggB,cAEjB,OADAhgB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,OAFAA,KAAuB,iBAATA,KAAoBA,KAAO,IACxB,gBAAwBroB,IAApBC,KAAKwoB,WAA2BxoB,KAAKwoB,WAAkB,KACrEJ,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIggB,cAEjB,OADAhgB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOgmB,qBAIThpB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK4gB,cAA2D7gB,IAAhD8oB,KAAAA,SAAAA,KAAyBN,MAAgB,UAAmBM,KAAAA,SAAAA,KAAyBN,MAAgB,UAAU,KAC/HvoB,KAAK8oB,WAA2B/oB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,MAI1ExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIgmB,qBAEjB,OADAhmB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAkCroB,IAA9BC,KAAK4gB,UAAUva,WAA2BrG,KAAK4gB,UAAUva,WAAkB,KAC9F+hB,KAAY,WAAmBroB,IAAfC,KAAK8oB,MAAsB9oB,KAAK8oB,MAAa,KACtDV,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIgmB,qBAEjB,OADAhmB,OAAO0lB,KAAKK,MACL/lB,QASR,IAAKmmB,gBAIX,MAJD,SAAYA,iBACRA,gBAAAA,OAAAA,SACAA,gBAAAA,OAAAA,SACAA,gBAAAA,IAAAA,MAHJ,CAAYA,kBAAAA,gBAAe,KAAfA,iBAIX,GAEK,MAAOxE,cAIT3kB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK6B,SAAuB9B,IAAjBwoB,MAAW,IAAkBA,MAAW,IAAS,KAC5DvoB,KAAKgpB,UAAyBjpB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,MAIvExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI2hB,cAEjB,OADA3hB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC/B,SAAiBroB,IAAbC,KAAK6B,IAAoB7B,KAAK6B,IAAW,KACvDumB,KAAW,UAAkBroB,IAAdC,KAAKgpB,KAAqBhpB,KAAKgpB,KAAY,KACnDZ,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI2hB,cAEjB,OADA3hB,OAAO0lB,KAAKK,MACL/lB,QAST,MAAOse,iBAITthB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKgpB,UAAyBjpB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKipB,aAA+BlpB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,MAIhFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIse,iBAEjB,OADAte,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC9B,UAAkBroB,IAAdC,KAAKgpB,KAAqBhpB,KAAKgpB,KAAY,KAC1DZ,KAAc,aAAqBroB,IAAjBC,KAAKipB,QAAwBjpB,KAAKipB,QAAe,KAC5Db,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIse,iBAEjB,OADAte,OAAO0lB,KAAKK,MACL/lB,QASR,IAAKsmB,oBAIX,MAJD,SAAYA,qBACRA,oBAAAA,cAAAA,gBACAA,oBAAAA,eAAAA,iBACAA,oBAAAA,YAAAA,cAHJ,CAAYA,sBAAAA,oBAAmB,KAAnBA,qBAIX,GAEK,MAAOC,oBAQTvpB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAGhDroB,KAAKopB,eAAiB,0FAG1Bd,KAAKC,OACGA,QACAvoB,KAAKsmB,cAAiCvmB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAKumB,iBAAiExmB,IAAnD8oB,KAAAA,SAAAA,KAAyBN,MAAmB,aAAmBM,KAAAA,SAAAA,KAAyBN,MAAmB,aAAU,KACxIvoB,KAAKwmB,cAA2DzmB,IAAhD8oB,KAAAA,SAAAA,KAAyBN,MAAgB,UAAmBM,KAAAA,SAAAA,KAAyBN,MAAgB,UAAU,KAC/HvoB,KAAK+lB,gBAAqChmB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,MAIzFxlB,cAAcqlB,MAEV,GAAsB,qFADtBA,KAAuB,iBAATA,KAAoBA,KAAO,IACzB,MAAyF,CACrG,IAAIxlB,OAAS,IAAIymB,YAEjB,OADAzmB,OAAO0lB,KAAKF,MACLxlB,OAEX,IAAIA,OAAS,IAAIumB,oBAEjB,OADAvmB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAOH,OANAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC7B,MAAIpoB,KAAKopB,eACrBhB,KAAe,cAAsBroB,IAAlBC,KAAKsmB,SAAyBtmB,KAAKsmB,SAAgB,KACtE8B,KAAkB,iBAAqCroB,IAAjCC,KAAKumB,aAAalgB,WAA2BrG,KAAKumB,aAAalgB,WAAkB,KACvG+hB,KAAe,cAAkCroB,IAA9BC,KAAKwmB,UAAUngB,WAA2BrG,KAAKwmB,UAAUngB,WAAkB,KAC9F+hB,KAAiB,gBAAwBroB,IAApBC,KAAK+lB,WAA2B/lB,KAAK+lB,WAAkB,KACrEqC,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIumB,oBAEjB,OADAvmB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAO8jB,qBAGT9mB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKspB,yBAAuDvpB,IAAjCwoB,MAA2B,oBAAkBA,MAA2B,oBAAS,MAIpHxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI8jB,qBAEjB,OADA9jB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,OAFAA,KAAuB,iBAATA,KAAoBA,KAAO,IACf,yBAAiCroB,IAA7BC,KAAKspB,oBAAoCtpB,KAAKspB,oBAA2B,KAChGlB,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI8jB,qBAEjB,OADA9jB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAO6d,gBAWT7gB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKupB,eAAmCxpB,IAAvBwoB,MAAiB,UAAkBA,MAAiB,UAAS,KAC9EvoB,KAAKwpB,kBAAyCzpB,IAA1BwoB,MAAoB,aAAkBA,MAAoB,aAAS,KACvFvoB,KAAKypB,qBAAyE1pB,IAAvD8oB,KAAAA,SAAAA,KAAyBN,MAAuB,iBAAmBM,KAAAA,SAAAA,KAAyBN,MAAuB,iBAAU,KACpJvoB,KAAK0pB,UAAyB3pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAK2pB,UAAyB5pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAK4pB,aAA+B7pB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,KACxEvoB,KAAK6pB,cAAiC9pB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAK8pB,qBAA+C/pB,IAA7BwoB,MAAuB,gBAAkBA,MAAuB,gBAAS,KAChGvoB,KAAK+pB,gBAAqChqB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,MAIzFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI6d,gBAEjB,OADA7d,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAWH,OAVAA,KAAuB,iBAATA,KAAoBA,KAAO,IACzB,eAAuBroB,IAAnBC,KAAKupB,UAA0BvpB,KAAKupB,UAAiB,KACzEnB,KAAmB,kBAA0BroB,IAAtBC,KAAKwpB,aAA6BxpB,KAAKwpB,aAAoB,KAClFpB,KAAsB,qBAAyCroB,IAArCC,KAAKypB,iBAAiBpjB,WAA2BrG,KAAKypB,iBAAiBpjB,WAAkB,KACnH+hB,KAAW,UAAkBroB,IAAdC,KAAK0pB,KAAqB1pB,KAAK0pB,KAAY,KAC1DtB,KAAW,UAAkBroB,IAAdC,KAAK2pB,KAAqB3pB,KAAK2pB,KAAY,KAC1DvB,KAAc,aAAqBroB,IAAjBC,KAAK4pB,QAAwB5pB,KAAK4pB,QAAe,KACnExB,KAAe,cAAsBroB,IAAlBC,KAAK6pB,SAAyB7pB,KAAK6pB,SAAgB,KACtEzB,KAAsB,qBAA6BroB,IAAzBC,KAAK8pB,gBAAgC9pB,KAAK8pB,gBAAuB,KAC3F1B,KAAiB,gBAAwBroB,IAApBC,KAAK+pB,WAA2B/pB,KAAK+pB,WAAkB,KACrE3B,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI6d,gBAEjB,OADA7d,OAAO0lB,KAAKK,MACL/lB,QAgBT,MAAOme,WAUTnhB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAKgqB,eAA6DjqB,IAAjD8oB,KAAAA,SAAAA,KAAyBN,MAAiB,WAAmBM,KAAAA,SAAAA,KAAyBN,MAAiB,WAAU,KAClIvoB,KAAKiqB,WAA2BlqB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,KAClEvoB,KAAKkqB,iBAAuCnqB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KACpFvoB,KAAKmqB,eAAmCpqB,IAAvBwoB,MAAiB,UAAkBA,MAAiB,UAAS,KAC9EvoB,KAAKoqB,cAAiCrqB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAK0pB,UAAyB3pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKqqB,WAA2BtqB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,MAI1ExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIme,WAEjB,OADAne,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAUH,OATAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAgB,eAAmCroB,IAA/BC,KAAKgqB,WAAW3jB,WAA2BrG,KAAKgqB,WAAW3jB,WAAkB,KACjG+hB,KAAY,WAAmBroB,IAAfC,KAAKiqB,MAAsBjqB,KAAKiqB,MAAa,KAC7D7B,KAAkB,iBAAyBroB,IAArBC,KAAKkqB,YAA4BlqB,KAAKkqB,YAAmB,KAC/E9B,KAAgB,eAAuBroB,IAAnBC,KAAKmqB,UAA0BnqB,KAAKmqB,UAAiB,KACzE/B,KAAe,cAAsBroB,IAAlBC,KAAKoqB,SAAyBpqB,KAAKoqB,SAAgB,KACtEhC,KAAW,UAAkBroB,IAAdC,KAAK0pB,KAAqB1pB,KAAK0pB,KAAY,KAC1DtB,KAAY,WAAmBroB,IAAfC,KAAKqqB,MAAsBrqB,KAAKqqB,MAAa,KACtDjC,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIme,WAEjB,OADAne,OAAO0lB,KAAKK,MACL/lB,QAeT,MAAO0nB,oBAIT1qB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK4gB,cAA2D7gB,IAAhD8oB,KAAAA,SAAAA,KAAyBN,MAAgB,UAAmBM,KAAAA,SAAAA,KAAyBN,MAAgB,UAAU,KAC/HvoB,KAAKuqB,iBAAiExqB,IAAnD8oB,KAAAA,SAAAA,KAAyBN,MAAmB,aAAmBM,KAAAA,SAAAA,KAAyBN,MAAmB,aAAU,MAIhJxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI0nB,oBAEjB,OADA1nB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAkCroB,IAA9BC,KAAK4gB,UAAUva,WAA2BrG,KAAK4gB,UAAUva,WAAkB,KAC9F+hB,KAAkB,iBAAqCroB,IAAjCC,KAAKuqB,aAAalkB,WAA2BrG,KAAKuqB,aAAalkB,WAAkB,KAChG+hB,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI0nB,oBAEjB,OADA1nB,OAAO0lB,KAAKK,MACL/lB,QAST,MAAOqf,cAGTriB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAKwqB,mBAAqB,IAIlClC,KAAKC,OACD,GAAIA,MACA,GAAI5hB,MAAM4Z,QAAQgI,MAA0B,oBAAI,CAC5CvoB,KAAKwqB,mBAAqB,GAC1B,IAAK,IAAIhK,QAAQ+H,MAA0B,mBACvCvoB,KAAKwqB,mBAAoB7L,KAAK6B,WAGlCxgB,KAAKwqB,mBAA0B,KAK3CznB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIqf,cAEjB,OADArf,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAEH,GADAA,KAAuB,iBAATA,KAAoBA,KAAO,GACrCzhB,MAAM4Z,QAAQvgB,KAAKwqB,oBAAqB,CACxCpC,KAAyB,mBAAI,GAC7B,IAAK,IAAI5H,QAAQxgB,KAAKwqB,mBAClBpC,KAAyB,mBAAEzJ,KAAK6B,MAExC,OAAO4H,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIqf,cAEjB,OADArf,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAO6nB,cAIT7qB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK0qB,sBAA2E3qB,IAAxD8oB,KAAAA,SAAAA,KAAyBN,MAAwB,kBAAmBM,KAAAA,SAAAA,KAAyBN,MAAwB,kBAAU,KACvJvoB,KAAKwqB,wBAAqDzqB,IAAhCwoB,MAA0B,mBAAkBA,MAA0B,mBAAS,MAIjHxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI6nB,cAEjB,OADA7nB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAClB,sBAA0CroB,IAAtCC,KAAK0qB,kBAAkBrkB,WAA2BrG,KAAK0qB,kBAAkBrkB,WAAkB,KACtH+hB,KAAyB,wBAAgCroB,IAA5BC,KAAKwqB,mBAAmCxqB,KAAKwqB,mBAA0B,KAC7FpC,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI6nB,cAEjB,OADA7nB,OAAO0lB,KAAKK,MACL/lB,QAST,MAAO+nB,6BAGT/qB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK4qB,yBAAiF7qB,IAA3D8oB,KAAAA,SAAAA,KAAyBN,MAA2B,qBAAmBM,KAAAA,SAAAA,KAAyBN,MAA2B,qBAAU,MAIxKxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI+nB,6BAEjB,OADA/nB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,OAFAA,KAAuB,iBAATA,KAAoBA,KAAO,IACf,yBAA6CroB,IAAzCC,KAAK4qB,qBAAqBvkB,WAA2BrG,KAAK4qB,qBAAqBvkB,WAAkB,KACxH+hB,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI+nB,6BAEjB,OADA/nB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOioB,cAKTjrB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAK8qB,SAAW,EAChB9qB,KAAK+qB,SAAW,EAChB/qB,KAAKgrB,UAAY,GAIzB1C,KAAKC,OACGA,QACAvoB,KAAK8qB,cAAiC/qB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAI,EACtEvoB,KAAK+qB,cAAiChrB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAI,EACtEvoB,KAAKgrB,eAAmCjrB,IAAvBwoB,MAAiB,UAAkBA,MAAiB,UAAI,GAIjFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIioB,cAEjB,OADAjoB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAKH,OAJAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAsBroB,IAAlBC,KAAK8qB,SAAyB9qB,KAAK8qB,SAAgB,KACtE1C,KAAe,cAAsBroB,IAAlBC,KAAK+qB,SAAyB/qB,KAAK+qB,SAAgB,KACtE3C,KAAgB,eAAuBroB,IAAnBC,KAAKgrB,UAA0BhrB,KAAKgrB,UAAiB,KAClE5C,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIioB,cAEjB,OADAjoB,OAAO0lB,KAAKK,MACL/lB,QAUT,MAAOqoB,cAKTrrB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAGhDroB,KAAKopB,eAAiB,gBAG1Bd,KAAKC,OACGA,QACAvoB,KAAKkrB,UAAyBnrB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,MAIvExlB,cAAcqlB,MAEV,GAAsB,2FADtBA,KAAuB,iBAATA,KAAoBA,KAAO,IACzB,MAA+F,CAC3G,IAAIxlB,OAAS,IAAIuoB,oBAEjB,OADAvoB,OAAO0lB,KAAKF,MACLxlB,OAEX,GAAsB,uFAAlBwlB,KAAY,MAA4F,CACxG,IAAIxlB,OAAS,IAAIwoB,iBAEjB,OADAxoB,OAAO0lB,KAAKF,MACLxlB,OAEX,IAAIA,OAAS,IAAIqoB,cAEjB,OADAroB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC7B,MAAIpoB,KAAKopB,eACrBhB,KAAW,UAAkBroB,IAAdC,KAAKkrB,KAAqBlrB,KAAKkrB,KAAY,KACnD9C,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIqoB,cAEjB,OADAroB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOuoB,4BAA4BF,cAErCrrB,YAAYwoB,MACRvlB,MAAMulB,MACNpoB,KAAKopB,eAAiB,wFAG1Bd,KAAKC,OACD1lB,MAAMylB,KAAKC,OAGfxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIuoB,oBAEjB,OADAvoB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,OAFAA,KAAuB,iBAATA,KAAoBA,KAAO,GACzCvlB,MAAM4lB,OAAOL,MACNA,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIuoB,oBAEjB,OADAvoB,OAAO0lB,KAAKK,MACL/lB,QAOT,MAAOyoB,uBAITzrB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACMvoB,KAAMsrB,cAAiCvrB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC5EvoB,KAAMurB,cAAiCxrB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,MAI1FxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIyoB,uBAEjB,OADAzoB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAsBroB,IAAlBC,KAAKsrB,SAAyBtrB,KAAKsrB,SAAgB,KACtElD,KAAe,cAAsBroB,IAAlBC,KAAKurB,SAAyBvrB,KAAKurB,SAAgB,KAC/DnD,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIyoB,uBAEjB,OADAzoB,OAAO0lB,KAAKK,MACL/lB,QAST,MAAOykB,cAMTznB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACMvoB,KAAMwjB,QAAqBzjB,IAAhBwoB,MAAU,GAAkBA,MAAU,GAAS,KAC1DvoB,KAAMwrB,UAAyBzrB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAChEvoB,KAAMyrB,iBAAuC1rB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KAC3FvoB,KAAK0rB,cAAgBnD,MAAqB,cAAI8C,uBAAuB3K,OAAO6H,MAAqB,eAAU,MAInHxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIykB,cAEjB,OADAzkB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAMH,OALAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAAgBroB,IAAZC,KAAKwjB,GAAmBxjB,KAAKwjB,GAAU,KACpD4E,KAAW,UAAkBroB,IAAdC,KAAKwrB,KAAqBxrB,KAAKwrB,KAAY,KAC1DpD,KAAkB,iBAAyBroB,IAArBC,KAAKyrB,YAA4BzrB,KAAKyrB,YAAmB,KAC/ErD,KAAoB,cAAIpoB,KAAK0rB,cAAgB1rB,KAAK0rB,cAAcjD,SAAgB,KACzEL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIykB,cAEjB,OADAzkB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOyf,SAITziB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAAqBzjB,IAAhBwoB,MAAU,GAAkBA,MAAU,GAAS,KACzDvoB,KAAK2pB,UAAyB5pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,MAIvExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIyf,SAEjB,OADAzf,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAAgBroB,IAAZC,KAAKwjB,GAAmBxjB,KAAKwjB,GAAU,KACpD4E,KAAW,UAAkBroB,IAAdC,KAAK2pB,KAAqB3pB,KAAK2pB,KAAY,KACnDvB,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIyf,SAEjB,OADAzf,OAAO0lB,KAAKK,MACL/lB,QAST,MAAOwiB,UAGTxlB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACD,GAAIA,MACA,GAAI5hB,MAAM4Z,QAAQgI,MAAuB,iBAAI,CACnCvoB,KAAM2rB,gBAAkB,GAC9B,IAAK,IAAInL,QAAQ+H,MAAuB,gBAC9BvoB,KAAM2rB,gBAAiBhN,KAAKiN,eAAelL,OAAOF,YAGtDxgB,KAAM2rB,gBAAuB,KAK/C5oB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIwiB,UAEjB,OADAxiB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAEH,GADAA,KAAuB,iBAATA,KAAoBA,KAAO,GACrCzhB,MAAM4Z,QAAQvgB,KAAK2rB,iBAAkB,CACrCvD,KAAsB,gBAAI,GAC1B,IAAK,IAAI5H,QAAQxgB,KAAK2rB,gBAClBvD,KAAsB,gBAAEzJ,KAAK6B,KAAKiI,UAE1C,OAAOL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIwiB,UAEjB,OADAxiB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOwoB,yBAAyBH,cAKlCrrB,YAAYwoB,MACRvlB,MAAMulB,MACNpoB,KAAKopB,eAAiB,qFAG1Bd,KAAKC,OAED,GADA1lB,MAAMylB,KAAKC,OACPA,MAGA,GAFAvoB,KAAK6rB,WAAqD9rB,IAA7C8oB,KAAAA,SAAAA,KAAyBN,MAAa,OAAmBM,KAAAA,SAAAA,KAAyBN,MAAa,OAAU,KACtHvoB,KAAK8rB,SAAWvD,MAAgB,SAAIwD,YAAYrL,OAAO6H,MAAgB,UAAU,KAC7E5hB,MAAM4Z,QAAQgI,MAAoB,cAAI,CACtCvoB,KAAKgsB,aAAe,GACpB,IAAK,IAAIxL,QAAQ+H,MAAoB,aACjCvoB,KAAKgsB,aAAcrN,KAAKiD,mBAAgBC,OAAOrB,YAGnDxgB,KAAKgsB,aAAoB,KAKrCjpB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIwoB,iBAEjB,OADAxoB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,IAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC7B,WAA+BroB,IAA3BC,KAAK6rB,OAAOxlB,WAA2BrG,KAAK6rB,OAAOxlB,WAAkB,KACrF+hB,KAAe,SAAIpoB,KAAK8rB,SAAW9rB,KAAK8rB,SAASrD,SAAgB,KAC7D9hB,MAAM4Z,QAAQvgB,KAAKgsB,cAAe,CAClC5D,KAAmB,aAAI,GACvB,IAAK,IAAI5H,QAAQxgB,KAAKgsB,aAClB5D,KAAmB,aAAEzJ,KAAK6B,MAGlC,OADA3d,MAAM4lB,OAAOL,MACNA,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIwoB,iBAEjB,OADAxoB,OAAO0lB,KAAKK,MACL/lB,QAUT,MAAOmpB,YAITnsB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAKisB,QAAU,IAAIpB,cACnB7qB,KAAKksB,YAAc,IAAIrB,eAI/BvC,KAAKC,OACGA,QACAvoB,KAAKisB,QAAU1D,MAAe,QAAIsC,cAAcnK,OAAO6H,MAAe,SAAK,IAAIsC,cAC/E7qB,KAAKksB,YAAc3D,MAAmB,YAAIsC,cAAcnK,OAAO6H,MAAmB,aAAK,IAAIsC,eAInG9nB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAImpB,YAEjB,OADAnpB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC3B,QAAIpoB,KAAKisB,QAAUjsB,KAAKisB,QAAQxD,SAAgB,KAC9DL,KAAkB,YAAIpoB,KAAKksB,YAAclsB,KAAKksB,YAAYzD,SAAgB,KACnEL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAImpB,YAEjB,OADAnpB,OAAO0lB,KAAKK,MACL/lB,QAST,MAAOupB,eAKTvsB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK2pB,UAAyB5pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKosB,aAA+BrsB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,KACxEvoB,KAAKqsB,kBAAyCtsB,IAA1BwoB,MAAoB,aAAkBA,MAAoB,aAAS,MAI/FxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIupB,eAEjB,OADAvpB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAKH,OAJAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC9B,UAAkBroB,IAAdC,KAAK2pB,KAAqB3pB,KAAK2pB,KAAY,KAC1DvB,KAAc,aAAqBroB,IAAjBC,KAAKosB,QAAwBpsB,KAAKosB,QAAe,KACnEhE,KAAmB,kBAA0BroB,IAAtBC,KAAKqsB,aAA6BrsB,KAAKqsB,aAAoB,KAC3EjE,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIupB,eAEjB,OADAvpB,OAAO0lB,KAAKK,MACL/lB,QAUT,MAAOsgB,iBAUTtjB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAKssB,gBAAqCvsB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,KACjFvoB,KAAKusB,cAAiCxsB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAKwsB,cAAiCzsB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAKiqB,WAA2BlqB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,KAClEvoB,KAAKysB,aAA+B1sB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,KACxEvoB,KAAK0sB,gBAAqC3sB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,KACjFvoB,KAAKgpB,UAAyBjpB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,MAIvExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIsgB,iBAEjB,OADAtgB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAUH,OATAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAiB,gBAAwBroB,IAApBC,KAAKssB,WAA2BtsB,KAAKssB,WAAkB,KAC5ElE,KAAe,cAAsBroB,IAAlBC,KAAKusB,SAAyBvsB,KAAKusB,SAAgB,KACtEnE,KAAe,cAAsBroB,IAAlBC,KAAKwsB,SAAyBxsB,KAAKwsB,SAAgB,KACtEpE,KAAY,WAAmBroB,IAAfC,KAAKiqB,MAAsBjqB,KAAKiqB,MAAa,KAC7D7B,KAAc,aAAqBroB,IAAjBC,KAAKysB,QAAwBzsB,KAAKysB,QAAe,KACnErE,KAAiB,gBAAwBroB,IAApBC,KAAK0sB,WAA2B1sB,KAAK0sB,WAAkB,KAC5EtE,KAAW,UAAkBroB,IAAdC,KAAKgpB,KAAqBhpB,KAAKgpB,KAAY,KACnDZ,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIsgB,iBAEjB,OADAtgB,OAAO0lB,KAAKK,MACL/lB,QAeR,IAAK+pB,iBAKX,MALD,SAAYA,kBACRA,iBAAAA,YAAAA,cACAA,iBAAAA,QAAAA,UACAA,iBAAAA,MAAAA,QACAA,iBAAAA,OAAAA,SAJJ,CAAYA,mBAAAA,iBAAgB,KAAhBA,kBAKX,GAEK,MAAOC,oBAMThtB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACD,GAAIA,MAAO,CACP,GAAI5hB,MAAM4Z,QAAQgI,MAAW,KAAI,CAC7BvoB,KAAK6sB,IAAM,GACX,IAAK,IAAIrM,QAAQ+H,MAAW,IACxBvoB,KAAK6sB,IAAKlO,KAAKiD,mBAAgBC,OAAOrB,YAG1CxgB,KAAK6sB,IAAW,KAEpB7sB,KAAK8sB,iBAAuC/sB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,MAI5FxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIgqB,oBAEjB,OADAhqB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAEH,GADAA,KAAuB,iBAATA,KAAoBA,KAAO,GACrCzhB,MAAM4Z,QAAQvgB,KAAK6sB,KAAM,CACzBzE,KAAU,IAAI,GACd,IAAK,IAAI5H,QAAQxgB,KAAK6sB,IAClBzE,KAAU,IAAEzJ,KAAK6B,MAGzB,OADA4H,KAAkB,iBAAyBroB,IAArBC,KAAK8sB,YAA4B9sB,KAAK8sB,YAAmB,KACxE1E,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIgqB,oBAEjB,OADAhqB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOgpB,eAMThsB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAAqBzjB,IAAhBwoB,MAAU,GAAkBA,MAAU,GAAS,KACzDvoB,KAAKyrB,iBAAuC1rB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KACpFvoB,KAAK+sB,UAAyBhtB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKgtB,kBAAyCjtB,IAA1BwoB,MAAoB,aAAkBA,MAAoB,aAAS,MAI/FxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIgpB,eAEjB,OADAhpB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAMH,OALAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAAgBroB,IAAZC,KAAKwjB,GAAmBxjB,KAAKwjB,GAAU,KACpD4E,KAAkB,iBAAyBroB,IAArBC,KAAKyrB,YAA4BzrB,KAAKyrB,YAAmB,KAC/ErD,KAAW,UAAkBroB,IAAdC,KAAK+sB,KAAqB/sB,KAAK+sB,KAAY,KAC1D3E,KAAmB,kBAA0BroB,IAAtBC,KAAKgtB,aAA6BhtB,KAAKgtB,aAAoB,KAC3E5E,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIgpB,eAEjB,OADAhpB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAO0gB,cAMT1jB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAKitB,eAAmCltB,IAAvBwoB,MAAiB,UAAkBA,MAAiB,UAAS,KAC9EvoB,KAAKktB,iBAAuCntB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KACpFvoB,KAAKmtB,cAAiCptB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,MAInFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI0gB,cAEjB,OADA1gB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAMH,OALAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAgB,eAAuBroB,IAAnBC,KAAKitB,UAA0BjtB,KAAKitB,UAAiB,KACzE7E,KAAkB,iBAAyBroB,IAArBC,KAAKktB,YAA4BltB,KAAKktB,YAAmB,KAC/E9E,KAAe,cAAsBroB,IAAlBC,KAAKmtB,SAAyBntB,KAAKmtB,SAAgB,KAC/D/E,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI0gB,cAEjB,OADA1gB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOwqB,wBAGTxtB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKqtB,iBAAuCttB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,MAI5FxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIwqB,wBAEjB,OADAxqB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,OAFAA,KAAuB,iBAATA,KAAoBA,KAAO,IACvB,iBAAyBroB,IAArBC,KAAKqtB,YAA4BrtB,KAAKqtB,YAAmB,KACxEjF,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIwqB,wBAEjB,OADAxqB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOsjB,iBAGTtmB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACD,GAAIA,MACA,GAAI5hB,MAAM4Z,QAAQgI,MAAqB,eAAI,CACvCvoB,KAAKstB,cAAgB,GACrB,IAAK,IAAI9M,QAAQ+H,MAAqB,cAClCvoB,KAAKstB,cAAe3O,KAAK4O,aAAa7M,OAAOF,YAGjDxgB,KAAKstB,cAAqB,KAKtCvqB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIsjB,iBAEjB,OADAtjB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAEH,GADAA,KAAuB,iBAATA,KAAoBA,KAAO,GACrCzhB,MAAM4Z,QAAQvgB,KAAKstB,eAAgB,CACnClF,KAAoB,cAAI,GACxB,IAAK,IAAI5H,QAAQxgB,KAAKstB,cAClBlF,KAAoB,cAAEzJ,KAAK6B,KAAKiI,UAExC,OAAOL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIsjB,iBAEjB,OADAtjB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOymB,oBAAoBF,oBAM7BvpB,YAAYwoB,MACRvlB,MAAMulB,MACNpoB,KAAKopB,eAAiB,kFAG1Bd,KAAKC,OACD1lB,MAAMylB,KAAKC,OACPA,QACAvoB,KAAKwtB,iBAAiEztB,IAAnD8oB,KAAAA,SAAAA,KAAyBN,MAAmB,aAAmBM,KAAAA,SAAAA,KAAyBN,MAAmB,aAAU,KACxIvoB,KAAKytB,aAA+B1tB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,MAIhFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIymB,YAEjB,OADAzmB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAKH,OAJAA,KAAuB,iBAATA,KAAoBA,KAAO,IACvB,iBAAqCroB,IAAjCC,KAAKwtB,aAAannB,WAA2BrG,KAAKwtB,aAAannB,WAAkB,KACvG+hB,KAAc,aAAqBroB,IAAjBC,KAAKytB,QAAwBztB,KAAKytB,QAAe,KACnE5qB,MAAM4lB,OAAOL,MACNA,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIymB,YAEjB,OADAzmB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAO8qB,iBAMT9tB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK2tB,YAAuD5tB,IAA9C8oB,KAAAA,SAAAA,KAAyBN,MAAc,QAAmBM,KAAAA,SAAAA,KAAyBN,MAAc,QAAU,KACzHvoB,KAAK4tB,wBAAqD7tB,IAAhCwoB,MAA0B,mBAAkBA,MAA0B,mBAAS,KACzGvoB,KAAK6tB,cAAiC9tB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAK8tB,cAAiC/tB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,MAInFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI8qB,iBAEjB,OADA9qB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAMH,OALAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC5B,YAAgCroB,IAA5BC,KAAK2tB,QAAQtnB,WAA2BrG,KAAK2tB,QAAQtnB,WAAkB,KACxF+hB,KAAyB,wBAAgCroB,IAA5BC,KAAK4tB,mBAAmC5tB,KAAK4tB,mBAA0B,KACpGxF,KAAe,cAAsBroB,IAAlBC,KAAK6tB,SAAyB7tB,KAAK6tB,SAAgB,KACtEzF,KAAe,cAAsBroB,IAAlBC,KAAK8tB,SAAyB9tB,KAAK8tB,SAAgB,KAC/D1F,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI8qB,iBAEjB,OADA9qB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOiiB,aAMTjlB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAK+tB,QAAU,IAIvBzF,KAAKC,OACD,GAAIA,MAIA,GAHAvoB,KAAKguB,eAAmCjuB,IAAvBwoB,MAAiB,UAAkBA,MAAiB,UAAS,KAC9EvoB,KAAKiuB,aAA+BluB,IAArBwoB,MAAe,QAAkBA,MAAe,QAAS,KACxEvoB,KAAKkuB,WAA2BnuB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,KAC9D5hB,MAAM4Z,QAAQgI,MAAe,SAAI,CACjCvoB,KAAK+tB,QAAU,GACf,IAAK,IAAIvN,QAAQ+H,MAAe,QAC5BvoB,KAAK+tB,QAASpP,KAAKwP,iBAAiBzN,OAAOF,YAG/CxgB,KAAK+tB,QAAe,KAKhChrB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIiiB,aAEjB,OADAjiB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAKH,IAJAA,KAAuB,iBAATA,KAAoBA,KAAO,IACzB,eAAuBroB,IAAnBC,KAAKguB,UAA0BhuB,KAAKguB,UAAiB,KACzE5F,KAAc,aAAqBroB,IAAjBC,KAAKiuB,QAAwBjuB,KAAKiuB,QAAe,KACnE7F,KAAY,WAAmBroB,IAAfC,KAAKkuB,MAAsBluB,KAAKkuB,MAAa,KACzDvnB,MAAM4Z,QAAQvgB,KAAK+tB,SAAU,CAC7B3F,KAAc,QAAI,GAClB,IAAK,IAAI5H,QAAQxgB,KAAK+tB,QAClB3F,KAAc,QAAEzJ,KAAK6B,KAAKiI,UAElC,OAAOL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIiiB,aAEjB,OADAjiB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOurB,iBAOTvuB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAK0pB,UAAyB3pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAK0sB,gBAAqC3sB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,KACjFvoB,KAAKwsB,cAAiCzsB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAKiqB,WAA2BlqB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,MAI1ExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIurB,iBAEjB,OADAvrB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAOH,OANAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAW,UAAkBroB,IAAdC,KAAK0pB,KAAqB1pB,KAAK0pB,KAAY,KAC1DtB,KAAiB,gBAAwBroB,IAApBC,KAAK0sB,WAA2B1sB,KAAK0sB,WAAkB,KAC5EtE,KAAe,cAAsBroB,IAAlBC,KAAKwsB,SAAyBxsB,KAAKwsB,SAAgB,KACtEpE,KAAY,WAAmBroB,IAAfC,KAAKiqB,MAAsBjqB,KAAKiqB,MAAa,KACtD7B,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIurB,iBAEjB,OADAvrB,OAAO0lB,KAAKK,MACL/lB,QAYT,MAAO6f,cAIT7iB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACD,GAAIA,MAEA,GADAvoB,KAAKuiB,cAAiCxiB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KACvEA,MAAc,OAAG,CACjBvoB,KAAKX,OAAS,GACd,IAAK,IAAIwC,OAAO0mB,MAAc,OACtBA,MAAc,OAAEvE,eAAeniB,OACzB7B,KAAKX,OAASwC,UAAgC9B,IAAzBwoB,MAAc,OAAE1mB,KAAqB0mB,MAAc,OAAE1mB,KAAY,WAIpG7B,KAAKX,OAAc,KAK/B0D,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI6f,cAEjB,OADA7f,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAGH,IAFAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAsBroB,IAAlBC,KAAKuiB,SAAyBviB,KAAKuiB,SAAgB,KAClEviB,KAAKX,OAAQ,CACb+oB,KAAa,OAAI,GACjB,IAAK,IAAIvmB,OAAO7B,KAAKX,OACbW,KAAKX,OAAO2kB,eAAeniB,OACrBumB,KAAa,OAAGvmB,UAA4B9B,IAArBC,KAAKX,OAAOwC,KAAqB7B,KAAKX,OAAOwC,KAAY,MAGlG,OAAOumB,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI6f,cAEjB,OADA7f,OAAO0lB,KAAKK,MACL/lB,QAmER,IAAKwrB,eAGX,MAHD,SAAYA,gBACRA,eAAAA,OAAAA,SACAA,eAAAA,QAAAA,UAFJ,CAAYA,iBAAAA,eAAc,KAAdA,gBAGX,GAEK,MAAOtH,gBAOTlnB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAKquB,WAA2BtuB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,KAClEvoB,KAAKqqB,WAA2BtqB,IAAnBwoB,MAAa,MAAkBA,MAAa,MAAS,KAClEvoB,KAAK2pB,UAAyB5pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKsuB,cAAiCvuB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,MAInFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIkkB,gBAEjB,OADAlkB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAOH,OANAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAY,WAAmBroB,IAAfC,KAAKquB,MAAsBruB,KAAKquB,MAAa,KAC7DjG,KAAY,WAAmBroB,IAAfC,KAAKqqB,MAAsBrqB,KAAKqqB,MAAa,KAC7DjC,KAAW,UAAkBroB,IAAdC,KAAK2pB,KAAqB3pB,KAAK2pB,KAAY,KAC1DvB,KAAe,cAAsBroB,IAAlBC,KAAKsuB,SAAyBtuB,KAAKsuB,SAAgB,KAC/DlG,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIkkB,gBAEjB,OADAlkB,OAAO0lB,KAAKK,MACL/lB,QAYT,MAAO2qB,aAMT3tB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAKwjB,QAA+CzjB,IAA1C8oB,KAAAA,SAAAA,KAAyBN,MAAU,IAAmBM,KAAAA,SAAAA,KAAyBN,MAAU,IAAU,KAC7GvoB,KAAKuuB,cAAiCxuB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,KAC3EvoB,KAAK2pB,UAAyB5pB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,KAC/DvoB,KAAKwuB,UAAyBzuB,IAAlBwoB,MAAY,KAAkBA,MAAY,KAAS,MAIvExlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAI2qB,aAEjB,OADA3qB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAMH,OALAA,KAAuB,iBAATA,KAAoBA,KAAO,IAChC,QAA4BroB,IAAxBC,KAAKwjB,IAAInd,WAA2BrG,KAAKwjB,IAAInd,WAAkB,KAC5E+hB,KAAe,cAAsBroB,IAAlBC,KAAKuuB,SAAyBvuB,KAAKuuB,SAAgB,KACtEnG,KAAW,UAAkBroB,IAAdC,KAAK2pB,KAAqB3pB,KAAK2pB,KAAY,KAC1DvB,KAAW,UAAkBroB,IAAdC,KAAKwuB,KAAqBxuB,KAAKwuB,KAAY,KACnDpG,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAI2qB,aAEjB,OADA3qB,OAAO0lB,KAAKK,MACL/lB,QAWT,MAAOulB,YAoBTvoB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAKyuB,gBAAkB,IAI/BnG,KAAKC,OACD,GAAIA,MASA,GARAvoB,KAAK0uB,gBAAqC3uB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,KACjFvoB,KAAKqsB,kBAAyCtsB,IAA1BwoB,MAAoB,aAAkBA,MAAoB,aAAS,KACvFvoB,KAAK2uB,iBAAuC5uB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KACpFvoB,KAAK4uB,2BAA2D7uB,IAAnCwoB,MAA6B,sBAAkBA,MAA6B,sBAAS,KAClHvoB,KAAK6uB,gCAAqE9uB,IAAxCwoB,MAAkC,2BAAkBA,MAAkC,2BAAS,KACjIvoB,KAAK8uB,8BAAiE/uB,IAAtCwoB,MAAgC,yBAAkBA,MAAgC,yBAAS,KAC3HvoB,KAAK+uB,gBAAqChvB,IAAxBwoB,MAAkB,WAAkBA,MAAkB,WAAS,KACjFvoB,KAAKgvB,iBAAuCjvB,IAAzBwoB,MAAmB,YAAkBA,MAAmB,YAAS,KAChF5hB,MAAM4Z,QAAQgI,MAAuB,iBAAI,CACzCvoB,KAAKyuB,gBAAkB,GACvB,IAAK,IAAIjO,QAAQ+H,MAAuB,gBACpCvoB,KAAKyuB,gBAAiB9P,KAAKwN,eAAezL,OAAOF,YAGrDxgB,KAAKyuB,gBAAuB,KAKxC1rB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIulB,YAEjB,OADAvlB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAUH,IATAA,KAAuB,iBAATA,KAAoBA,KAAO,IACxB,gBAAwBroB,IAApBC,KAAK0uB,WAA2B1uB,KAAK0uB,WAAkB,KAC5EtG,KAAmB,kBAA0BroB,IAAtBC,KAAKqsB,aAA6BrsB,KAAKqsB,aAAoB,KAClFjE,KAAkB,iBAAyBroB,IAArBC,KAAK2uB,YAA4B3uB,KAAK2uB,YAAmB,KAC/EvG,KAA4B,2BAAmCroB,IAA/BC,KAAK4uB,sBAAsC5uB,KAAK4uB,sBAA6B,KAC7GxG,KAAiC,gCAAwCroB,IAApCC,KAAK6uB,2BAA2C7uB,KAAK6uB,2BAAkC,KAC5HzG,KAA+B,8BAAsCroB,IAAlCC,KAAK8uB,yBAAyC9uB,KAAK8uB,yBAAgC,KACtH1G,KAAiB,gBAAwBroB,IAApBC,KAAK+uB,WAA2B/uB,KAAK+uB,WAAkB,KAC5E3G,KAAkB,iBAAyBroB,IAArBC,KAAKgvB,YAA4BhvB,KAAKgvB,YAAmB,KAC3EroB,MAAM4Z,QAAQvgB,KAAKyuB,iBAAkB,CACrCrG,KAAsB,gBAAI,GAC1B,IAAK,IAAI5H,QAAQxgB,KAAKyuB,gBAClBrG,KAAsB,gBAAEzJ,KAAK6B,KAAKiI,UAE1C,OAAOL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIulB,YAEjB,OADAvlB,OAAO0lB,KAAKK,MACL/lB,QAyBT,MAAOilB,UAGTjoB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAG3CD,OACDpoB,KAAKivB,QAAU,IAIvB3G,KAAKC,OACD,GAAIA,MACA,GAAI5hB,MAAM4Z,QAAQgI,MAAe,SAAI,CACjCvoB,KAAKivB,QAAU,GACf,IAAK,IAAIzO,QAAQ+H,MAAe,QAC5BvoB,KAAKivB,QAAStQ,KAAKuQ,eAAexO,OAAOF,YAG7CxgB,KAAKivB,QAAe,KAKhClsB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIilB,UAEjB,OADAjlB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAEH,GADAA,KAAuB,iBAATA,KAAoBA,KAAO,GACrCzhB,MAAM4Z,QAAQvgB,KAAKivB,SAAU,CAC7B7G,KAAc,QAAI,GAClB,IAAK,IAAI5H,QAAQxgB,KAAKivB,QAClB7G,KAAc,QAAEzJ,KAAK6B,KAAKiI,UAElC,OAAOL,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIilB,UAEjB,OADAjlB,OAAO0lB,KAAKK,MACL/lB,QAQT,MAAOssB,eAITtvB,YAAYwoB,MACR,GAAIA,KACA,IAAK,IAAIC,YAAYD,KACbA,KAAKpE,eAAeqE,YACdroB,KAAMqoB,UAAkBD,KAAMC,WAKpDC,KAAKC,OACGA,QACAvoB,KAAK4gB,cAA2D7gB,IAAhD8oB,KAAAA,SAAAA,KAAyBN,MAAgB,UAAmBM,KAAAA,SAAAA,KAAyBN,MAAgB,UAAU,KAC/HvoB,KAAKwsB,cAAiCzsB,IAAtBwoB,MAAgB,SAAkBA,MAAgB,SAAS,MAInFxlB,cAAcqlB,MACVA,KAAuB,iBAATA,KAAoBA,KAAO,GACzC,IAAIxlB,OAAS,IAAIssB,eAEjB,OADAtsB,OAAO0lB,KAAKF,MACLxlB,OAGX6lB,OAAOL,MAIH,OAHAA,KAAuB,iBAATA,KAAoBA,KAAO,IAC1B,cAAkCroB,IAA9BC,KAAK4gB,UAAUva,WAA2BrG,KAAK4gB,UAAUva,WAAkB,KAC9F+hB,KAAe,cAAsBroB,IAAlBC,KAAKwsB,SAAyBxsB,KAAKwsB,SAAgB,KAC/DpE,KAGXM,QACI,MAAMC,KAAO3oB,KAAKyoB,SAClB,IAAI7lB,OAAS,IAAIssB,eAEjB,OADAtsB,OAAO0lB,KAAKK,MACL/lB,QASR,IAAKusB,kBAGX,MAHD,SAAYA,mBACRA,kBAAAA,kBAAAA,OAAAA,GAAAA,SACAA,kBAAAA,kBAAAA,QAAAA,GAAAA,UAFJ,CAAYA,oBAAAA,kBAAiB,KAAjBA,mBAGX,GAEK,MAAOzsB,yBAAqB5D,MAO9Bc,YAAY+C,QAAiBrB,OAAgBD,SAAkBX,QAAkCkC,QAC7FC,QASM,KAAAC,gBAAiB,EAPvB9C,KAAK2C,QAAUA,QACf3C,KAAKsB,OAASA,OACdtB,KAAKqB,SAAWA,SAChBrB,KAAKU,QAAUA,QACfV,KAAK4C,OAASA,OAKlBG,sBAAsBC,KAClB,OAA8B,IAAvBA,IAAIF,gBAInB,SAASP,mBAAeI,QAAiBrB,OAAgBD,SAAkBX,QAAkCkC,QACzG,OAAIA,MAAAA,QACOzB,EAAAA,WAAAA,GAAiByB,SAEjBzB,EAAAA,WAAAA,GAAiB,IAAIuB,iBAAaC,QAASrB,OAAQD,SAAUX,QAAS,OAGrF,SAASsB,eAAWiB,MAChB,OAAO,IAAIC,WAAAA,GAAoBC,WAC3B,GAAKF,KAGE,CACH,IAAIG,OAAS,IAAIC,WACjBD,OAAOE,OAASC,QACZJ,SAASK,KAAMD,MAAME,OAAeb,QACpCO,SAASO,YAEbN,OAAOO,WAAWV,WARlBE,SAASK,KAAK,IACdL,SAASO,cAYf,MAAOke,mBACF7e,cAAcqsB,MACjB,MAAoB,iBAATA,MACHvG,KAAAA,SAAAA,OAA2BuG,MACpBvG,KAAAA,SAAAA,MAA0BuG,MAGlCA,MChiKT,MAAOC,UAAS,SACF,KAAAC,kBAAoB,WAAU,UAE9B,KAAAC,eAAiB,kBAAiB,UAClC,KAAAC,qBAAuB,WAAU,UACjC,KAAAC,kBAAoB,YAAW,UAE/B,KAAAC,QAAU,MAAK,UACf,KAAAC,SAAW,OAAM,UACjB,KAAAC,UAAY,QAAO,UAEnB,KAAAC,YAAc,eAAc,UAC5B,KAAAC,iBAAmB,oBCVjC,MAAOC,aAQEC,iBACP,OAAOhwB,KAAKiwB,mBAGLD,eAAWE,OACdA,QAAUlwB,KAAKiwB,qBACfjwB,KAAKmwB,4BAA6B,GAEtCnwB,KAAKiwB,mBAAqBC,MAM9BtwB,YACoBwwB,QACAC,eACAC,QACAC,eAHA,KAAAH,QAAAA,QACA,KAAAC,eAAAA,eACA,KAAAC,QAAAA,QACA,KAAAC,cAAAA,cAPZ,KAAAN,oBAAqB,EACrB,KAAAE,4BAA6B,EAQjCnwB,KAAKwjB,GAAK4M,QAAQ5M,GAClBxjB,KAAK0pB,KAAO0G,QAAQ1G,MAAQ8G,uBAAAA,IAAAA,KAC5BxwB,KAAK2pB,KAAOyG,QAAQzG,KACpB3pB,KAAKywB,QAAUL,QAAQK,QAAUL,QAAQK,QAAU,IAAM,GACzDzwB,KAAKqqB,MAAQ+F,QAAQ/F,MAAQ+F,QAAQ/F,MAAQ,IAAM,GAGhDqG,iBAEH,IAAIC,cAAgB,GACpB,GAAI3wB,KAAKowB,QAAQQ,WAAY,CACzB,MAAMC,MAAQ7wB,KAAKowB,QAAQQ,WAAWE,MAAM,KAC5C,IAAK,IAAIC,EAAI,EAAGA,EAAIF,MAAM7sB,SAAU+sB,EAAG,CAEnC,MAAM7F,KAAO2F,MAAME,GAAGC,oBACtB,IAAIC,SAAW,GACf,OAAQ/F,MACJ,IAAK,MAEG+F,SAAW5B,UAAUK,QAEzB,MAEJ,IAAK,OACL,IAAK,UAEGuB,SAAW5B,UAAUM,SAEzB,MAEJ,IAAK,QAEGsB,SAAW5B,UAAUO,UAK7BqB,SACAN,eAAiBM,SACM,IAAhB/F,KAAKlnB,OAEZ2sB,eAAiBzF,KAAKgG,cAEtBP,eAAiBE,MAAME,GAGvBA,EAAIF,MAAM7sB,OAAS,IACnB2sB,eAAiB,MAK7B,MAAO,CACHnN,GAAIxjB,KAAKwjB,GAAGnd,WACZ6kB,KAAMlrB,KAAK2pB,OACXD,KAAM1pB,KAAK0pB,KACXyH,UAAWnxB,KAAKqqB,QAChBsG,cACAS,WAAY,CACRd,QAAS,IAAMtwB,KAAKswB,UACpBe,UAAWrxB,KAAKqxB,WAAa,KAAOrxB,KAAKgwB,aAE7CsB,SAAW9Q,OACHxgB,KAAKmwB,6BACL3P,KAAK0K,KAAOlrB,KAAK2pB,OACjBnJ,KAAKkJ,KAAO1pB,KAAK0pB,KACjB1pB,KAAKmwB,4BAA6B,IAE9BnwB,KAAKgwB,c,gDCrGvB,MAAOuB,gBAAe,SACV,KAAAC,UAAY,YAAW,UACvB,KAAAC,KAAO,OAAM,UACb,KAAAC,WAAa,aAAY,UACzB,KAAAC,WAAa,aAAY,UACzB,KAAAC,aAAe,eAAc,UAC7B,KAAAC,UAAY,YAAW,UACvB,KAAAC,OAAS,SAAQ,UACjB,KAAAC,UAAY,YAAW,UACvB,KAAAC,IAAM,MAAK,WACX,KAAAC,4BAA8B,8BAA6B,WAC3D,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,mBAAqB,qBAAoB,WACzC,KAAAC,UAAY,YAAW,WACvB,KAAAC,WAAa,aAAY,WACzB,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,aAAe,eAAc,WAC7B,KAAAC,UAAY,YAAW,WACvB,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,WAAa,aAAY,WACzB,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,aAAe,eAAc,WAC7B,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,WAAa,aAAY,WACzB,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,aAAe,eAAc,WAC7B,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,UAAY,YAAW,WACvB,KAAAC,UAAY,YAAW,WACvB,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,QAAU,UAAS,WAEV,KAAAn0B,OAAS,CAC5BkyB,gBAAgBC,UAChBD,gBAAgBE,KAChBF,gBAAgBG,WAChBH,gBAAgBI,WAChBJ,gBAAgBK,aAChBL,gBAAgBM,UAChBN,gBAAgBO,OAChBP,gBAAgBQ,UAChBR,gBAAgBS,IAChBT,gBAAgBU,4BAChBV,gBAAgBW,gBAChBX,gBAAgBY,cAChBZ,gBAAgBa,eAChBb,gBAAgBc,mBAChBd,gBAAgBe,UAChBf,gBAAgBgB,WAChBhB,gBAAgBiB,kBAChBjB,gBAAgBkB,sBAChBlB,gBAAgBmB,aAChBnB,gBAAgBoB,UAChBpB,gBAAgBqB,cAChBrB,gBAAgBsB,WAChBtB,gBAAgBuB,cAChBvB,gBAAgBwB,aAChBxB,gBAAgByB,kBAChBzB,gBAAgB0B,WAChB1B,gBAAgB2B,oBAChB3B,gBAAgB4B,aAChB5B,gBAAgB6B,sBAChB7B,gBAAgB8B,UAChB9B,gBAAgB+B,UAChB/B,gBAAgBgC,eAChBhC,gBAAgBiC,SCtEjB,IAAKC,gBAKX,MALD,SAAYA,iBACVA,gBAAAA,gBAAAA,WAAAA,GAAAA,aACAA,gBAAAA,gBAAAA,UAAAA,GAAAA,YACAA,gBAAAA,gBAAAA,aAAAA,GAAAA,eACAA,gBAAAA,gBAAAA,aAAAA,GAAAA,eAJF,CAAYA,kBAAAA,gBAAe,KAAfA,iBAKX,GCCK,MAAOC,eAAb9zB,cACS,KAAAkpB,MAAyB2K,gBAAgBE,cAG5C,MAAOC,qBAAbh0B,cACS,KAAA4jB,GAAY3e,SAAAA,SAAAA,MACZ,KAAAgvB,WAAa,GACb,KAAAC,MAAQ,GAGX,MAAOC,iBAGXn0B,YAAY4jB,GAAYqQ,YAFjB,KAAArQ,GAAY3e,SAAAA,SAAAA,MACZ,KAAAgvB,WAAa,GAEdrQ,KACFxjB,KAAKwjB,GAAKA,IAERqQ,aACF7zB,KAAK6zB,WAAaA,aAKlB,MAAOG,eAAbp0B,cACS,KAAA4jB,GAAY3e,SAAAA,SAAAA,MACZ,KAAAgvB,WAAa,IAGhB,MAAOI,iBAEXr0B,YAAYs0B,KACVl0B,KAAKuD,MAAQ2wB,KAIX,MAAOC,kBAIP,MAAOC,0BACXx0B,YAAmBy0B,QAAwBC,SAAxB,KAAAD,QAAAA,QAAwB,KAAAC,QAAAA,SAGvC,MAAOC,mBAKX30B,YAAY4jB,GAAY5iB,QAAuB4zB,OAAgBC,eAJxD,KAAAjR,GAAK,GAEL,KAAAgR,OAAS,GACT,KAAAC,cAAgB,GAErBz0B,KAAKwjB,GAAKA,GACVxjB,KAAKY,QAAUA,QACfZ,KAAKw0B,OAASA,OACdx0B,KAAKy0B,cAAgBA,eAInB,MAAOC,sBACT90B,YAAmB+0B,gBAAiB,GAAjB,KAAAA,eAAAA,gBAGjB,MAAOC,iCAOXh1B,YAAY4jB,GAAYqR,MAAeC,OAAgBC,OAAgBC,OAAgBC,QANhF,KAAAzR,GAAK,GACL,KAAAqR,MAAQ,GACR,KAAAC,OAAS,GACT,KAAAC,OAAS,GACT,KAAAC,OAAS,GACT,KAAAC,OAAS,GAEdj1B,KAAKwjB,GAAKA,GACVxjB,KAAK60B,MAAQA,MACb70B,KAAK80B,OAASA,OACd90B,KAAK+0B,OAASA,OACd/0B,KAAKg1B,OAASA,OACdh1B,KAAKi1B,OAASA,QAIZ,MAAOC,kBAEXt1B,YAAYwB,GACVpB,KAAKm1B,OAAS/zB,GChFlB,IAAKg0B,eAqXJ,MArXD,SAAKA,gBAQHA,eAAAA,eAAAA,SAAAA,KAAAA,WAKAA,eAAAA,eAAAA,oBAAAA,KAAAA,sBAOAA,eAAAA,eAAAA,WAAAA,KAAAA,aAQAA,eAAAA,eAAAA,GAAAA,KAAAA,KAKAA,eAAAA,eAAAA,QAAAA,KAAAA,UAMAA,eAAAA,eAAAA,SAAAA,KAAAA,WAOAA,eAAAA,eAAAA,8BAAAA,KAAAA,gCAKAA,eAAAA,eAAAA,WAAAA,KAAAA,aAMAA,eAAAA,eAAAA,cAAAA,KAAAA,gBAOAA,eAAAA,eAAAA,gBAAAA,KAAAA,kBAMAA,eAAAA,eAAAA,aAAAA,KAAAA,eAMAA,eAAAA,eAAAA,iBAAAA,KAAAA,mBAMAA,eAAAA,eAAAA,QAAAA,KAAAA,UAOAA,eAAAA,eAAAA,iBAAAA,KAAAA,mBAKAA,eAAAA,eAAAA,kBAAAA,KAAAA,oBAUAA,eAAAA,eAAAA,MAAAA,KAAAA,QAQAA,eAAAA,eAAAA,UAAAA,KAAAA,YAMAA,eAAAA,eAAAA,aAAAA,KAAAA,eAOAA,eAAAA,eAAAA,UAAAA,KAAAA,YAKAA,eAAAA,eAAAA,aAAAA,KAAAA,eAQAA,eAAAA,eAAAA,mBAAAA,KAAAA,qBAOAA,eAAAA,eAAAA,mBAAAA,KAAAA,qBAMAA,eAAAA,eAAAA,YAAAA,KAAAA,cAQAA,eAAAA,eAAAA,aAAAA,KAAAA,eAOAA,eAAAA,eAAAA,iBAAAA,KAAAA,mBAMAA,eAAAA,eAAAA,UAAAA,KAAAA,YAMAA,eAAAA,eAAAA,UAAAA,KAAAA,YAMAA,eAAAA,eAAAA,mBAAAA,KAAAA,qBAKAA,eAAAA,eAAAA,eAAAA,KAAAA,iBAKAA,eAAAA,eAAAA,8BAAAA,KAAAA,gCAOAA,eAAAA,eAAAA,gBAAAA,KAAAA,kBAMAA,eAAAA,eAAAA,SAAAA,KAAAA,WASAA,eAAAA,eAAAA,KAAAA,KAAAA,OAKAA,eAAAA,eAAAA,gBAAAA,KAAAA,kBAKAA,eAAAA,eAAAA,oBAAAA,KAAAA,sBAKAA,eAAAA,eAAAA,kBAAAA,KAAAA,oBAOAA,eAAAA,eAAAA,aAAAA,KAAAA,eAMAA,eAAAA,eAAAA,uBAAAA,KAAAA,yBAOAA,eAAAA,eAAAA,sBAAAA,KAAAA,wBAKAA,eAAAA,eAAAA,mBAAAA,KAAAA,qBAOAA,eAAAA,eAAAA,cAAAA,KAAAA,gBAKAA,eAAAA,eAAAA,oBAAAA,KAAAA,sBAKAA,eAAAA,eAAAA,qBAAAA,KAAAA,uBAKAA,eAAAA,eAAAA,OAAAA,KAAAA,SAKAA,eAAAA,eAAAA,kBAAAA,KAAAA,oBAKAA,eAAAA,eAAAA,iBAAAA,KAAAA,mBAQAA,eAAAA,eAAAA,sBAAAA,KAAAA,wBAKAA,eAAAA,eAAAA,kBAAAA,KAAAA,oBAMAA,eAAAA,eAAAA,gCAAAA,KAAAA,kCAMAA,eAAAA,eAAAA,8BAAAA,KAAAA,gCAKAA,eAAAA,eAAAA,sBAAAA,KAAAA,wBAMAA,eAAAA,eAAAA,gBAAAA,KAAAA,kBAKAA,eAAAA,eAAAA,YAAAA,KAAAA,cAMAA,eAAAA,eAAAA,oBAAAA,KAAAA,sBAKAA,eAAAA,eAAAA,gBAAAA,KAAAA,kBAKAA,eAAAA,eAAAA,2BAAAA,KAAAA,6BAKAA,eAAAA,eAAAA,wBAAAA,KAAAA,0BAKAA,eAAAA,eAAAA,qBAAAA,KAAAA,uBAKAA,eAAAA,eAAAA,cAAAA,KAAAA,gBAKAA,eAAAA,eAAAA,aAAAA,KAAAA,eAOAA,eAAAA,eAAAA,gCAAAA,KAAAA,kCApXF,CAAKA,iBAAAA,eAAc,KAAdA,gBAqXJ,GAED,iDCzXM,MAAOC,0BAA0Bv2B,MACnCc,YAAY+C,QAAwBtB,UAChCwB,MAAMF,SAD0B,KAAAtB,SAAAA,UAIlC,MAAOi0B,aAQA7zB,WACT,OAAOzB,KAAKu1B,MAGHC,iBACT,OAAOx1B,KAAKy1B,YAGHD,eAAWtF,OACpBlwB,KAAKy1B,YAAcvF,MAGVwF,gBACT,OAAO11B,KAAK21B,WAGHC,kBACT,OAAO51B,KAAK61B,aAGHC,0BACT,OAAO91B,KAAK+1B,qBAKdn2B,YAAYo2B,KAAev0B,KAAmBw0B,aAA2HP,WAIvK,GArCQ,KAAAH,MAAoB,KACpB,KAAAE,YAAc,EACd,KAAAE,YAAa,EACb,KAAAE,aAAe,GACf,KAAAE,qBAAsC,KACtC,KAAAG,OAAS,GA6BbF,OACAh2B,KAAKy1B,YAAcO,MAEnBv0B,KACA,IAEQw0B,cAAc50B,UAAa40B,aAAaz1B,cAA8C,SAA9By1B,aAAaz1B,aAGrER,KAAKu1B,MAAQ9zB,KAFbzB,KAAKu1B,MAAQnzB,KAAKC,MAAMZ,MAI9B,MAAOL,GACLpB,KAAKu1B,MAAQ9zB,KAGjBi0B,YACA11B,KAAK21B,WAAaD,WAEtB11B,KAAKU,QAAU,IAAIiF,IACfswB,cAAc50B,UAAUX,SACxBu1B,aAAa50B,SAASX,QAAQ2gB,SAAQ,CAAC6O,MAAOruB,OAC9C7B,KAAKU,QAAQ0F,IAAIvE,IAAKquB,UAG1BlwB,KAAKm2B,yBAGAC,uBAAuB/0B,UAC5BrB,KAAKy1B,YAAcp0B,SAASm0B,WAC5Bx1B,KAAK21B,YAAa,EAClB31B,KAAKu1B,MAAQl0B,SAASuB,OACtB5C,KAAKm2B,yBAGA9vB,WACL,OAAOjE,KAAK0d,UAAU9f,MAIjBq2B,gBACL,GAAIr2B,KAAKy1B,cAAgBL,4BAAAA,IAAqBp1B,KAAKy1B,cAAgBL,4BAAAA,QAGnE,MAAM,IAAIt2B,MAAM,gBAAkBkB,KAAKy1B,aAGlCa,WAAWN,MAChB,GAAKA,MAKH,GAAIh2B,KAAKy1B,cAAgBO,KACvB,MAAM,IAAIl3B,MAAM,gBAAkBkB,KAAKy1B,kBALzC,GAAIz1B,KAAKy1B,cAAgBL,4BAAAA,IAAqBp1B,KAAKy1B,cAAgBL,4BAAAA,QACjE,MAAM,IAAIt2B,MAAM,gBAAkBkB,KAAKy1B,aAUrCU,yBACN,GACEn2B,KAAKu1B,QACJv1B,KAAKy1B,cAAgBL,4BAAAA,cAA+Bp1B,KAAKy1B,cAAgBL,4BAAAA,WAE1E,IACEp1B,KAAK61B,aAAe71B,KAAKu1B,MAAmB,YAC5Cv1B,KAAK+1B,qBAAuB/1B,KAAKu1B,MAA2B,oBAC5D,MAAOn0B,KAIJ2B,gBAAgBwzB,KACnB,IACI,OAAOn0B,KAAKC,MAAMk0B,KACpB,MAAO70B,OACL,OAAO,OChHb,MAAO80B,oCAAsB13B,MAE/Bc,YAAY+C,SACRE,MAAMF,UCRR,MAAO8zB,oBAYT72B,YACW82B,QACAC,QADA,KAAAD,QAAAA,QACA,KAAAC,OAAAA,OAVJ,KAAAC,YAAa,EAoBPtG,QACTuG,aACAC,MACAC,MAAgB,yDAGhB,IAAK,MAAKJ,SAAW,MAAKC,WAAY,CAClC,MAAKA,YAAa,EAGlB,IAAII,GAAU,MAAKN,QAEnB,GAAIG,aAKA,YAJAI,YAAW,KACPD,GAAGE,MAAMJ,MAAOC,QACjB,GAKP,IAAIn0B,OAASo0B,GAAGE,MAAMJ,MAAOC,YACvBn0B,UAlBM,ICrBlB,MAAOu0B,gBAGTv3B,YAAmBw3B,OAAA,KAAAA,MAAAA,MAFZ,KAAAC,oBAAqB,EAIrBC,kBACHt3B,KAAKq3B,oBAAqB,GCP5B,MAAOE,aAYT33B,YAAmB82B,QAA+BC,QAA/B,KAAAD,QAAAA,QAA+B,KAAAC,OAAAA,OAR3C,KAAAC,YAAa,EAiBbtG,QAAQuG,aAAuBC,MAAYC,MAC9C,IAAK/2B,KAAK22B,SAAW32B,KAAK42B,WAAY,CAClC52B,KAAK42B,YAAa,EAElB,IAAII,GAAUh3B,KAAK02B,QAEfG,aACAI,YAAW,KACPD,GAAGE,MAAMJ,MAAOC,QACjB,GAEHC,GAAGE,MAAMJ,MAAOC,QCjC1B,MAAOS,kBAYT53B,YAAY63B,YACRz3B,KAAK03B,WAAcV,IAAiBS,WAAWE,UAAUX,IACzDh3B,KAAK43B,aAAgBZ,IAAiBS,WAAWI,YAAYb,IAC7Dh3B,KAAK83B,KAAQd,IAAiBS,WAAWM,IAAIf,IAC7Ch3B,KAAKg4B,KAAQhB,IAAiBS,WAAWQ,IAAIjB,IAC7Ch3B,KAAKk4B,OAAS,IAAMT,WAAWU,QAC/Bn4B,KAAKo4B,OAAS,IAAMX,WAAWY,MAU/BA,YACA,OAAOr4B,KAAKo4B,SAQTT,UAAUX,IACb,OAAOh3B,KAAK03B,WAAWV,IAQpBsB,IAAItB,IACP,OAAOh3B,KAAK23B,UAAUX,IAOnBa,YAAYb,IACfh3B,KAAK43B,aAAaZ,IAOfI,MAAMJ,IACTh3B,KAAK63B,YAAYb,IAOde,IAAIf,IACP,OAAOh3B,KAAK83B,KAAKd,IAOdiB,IAAIjB,IACP,OAAOh3B,KAAKg4B,KAAKhB,IAMdmB,QACHn4B,KAAKk4B,UC/EP,MAAgBK,8BAAtB34B,cAEY,KAAA44B,MAAQ,IAAIhB,kBAAkBx3B,MAC5B,KAAAy4B,eAAiB,IAAI9xB,MASpB0xB,YACP,OAAOr4B,KAAKy4B,eAAez0B,OAQxB2zB,UAAUX,IAIb,OAHIA,IACAh3B,KAAKy4B,eAAe9Z,KAAK3e,KAAK04B,mBAAmB1B,IAAI,IAElD,KACHh3B,KAAK63B,YAAYb,KASlBsB,IAAItB,IACP,OAAOh3B,KAAK23B,UAAUX,IAQnBe,IAAIf,IAIP,OAHIA,IACAh3B,KAAKy4B,eAAe9Z,KAAK3e,KAAK04B,mBAAmB1B,IAAI,IAElD,KACHh3B,KAAK63B,YAAYb,KAQlBiB,IAAIjB,IACP,QAAKA,IACEh3B,KAAKy4B,eAAeE,MAAML,KAAQA,IAAI5B,SAAWM,KAOrDa,YAAYb,IACf,GAAKA,GAEL,IAAK,IAAIjG,EAAI,EAAGA,EAAI/wB,KAAKy4B,eAAez0B,OAAQ+sB,IAC5C,GAAI/wB,KAAKy4B,eAAe1H,GAAG2F,SAAWM,GAAI,CACtCh3B,KAAKy4B,eAAeG,OAAO7H,EAAG,GAC9B,OASLqG,MAAMJ,IACTh3B,KAAK63B,YAAYb,IAcX6B,UACNhC,aACAC,MACAC,MAGA,IAAK,IAAIuB,MAAO,IAAIt4B,KAAKy4B,gBAAiB,CACtC,IAAIK,GAAK,IAAI3B,iBAAgB,IAAMn3B,KAAKo3B,MAAMkB,IAAI5B,WAC9CqC,MAAapyB,MAAMqyB,UAAUC,MAAMC,KAAKnC,MAS5C,GARAgC,MAAMpa,KAAKma,IAEHR,IACNhI,QAAQuG,aAAcC,MAAOiC,OAG/B/4B,KAAKm5B,QAAQb,MAERzB,cAAgBiC,GAAGzB,mBACpB,MAAO,CAAEA,oBAAoB,GAIrC,OAAIR,aACO,KAGJ,CAAEQ,oBAAoB,GAGvBqB,mBACNhC,QACAC,QAEA,OAAO,IAAIY,aAA4Bb,QAASC,QAM1CwC,QAAQb,KACd,GAAIA,IAAI3B,QAAU2B,IAAI1B,WAAY,CAC9B,IAAI7F,EAAI/wB,KAAKy4B,eAAeW,QAAQd,KAChCvH,GAAK,GACL/wB,KAAKy4B,eAAeG,OAAO7H,EAAG,IASnCsI,UACH,OAAOr5B,KAAKw4B,MAMTL,QACHn4B,KAAKy4B,eAAeG,OAAO,EAAG54B,KAAKy4B,eAAez0B,SClKpD,MAAgBs1B,oDAA6Cf,8BAC/D34B,cACIiD,QAGMg2B,UACNhC,aACAC,MACAC,MAEA,MAAM,IAAIP,4BACN,oDAIEkC,mBACNhC,QACAC,QAEA,OAAO,IAAIF,oBAAmCC,QAASC,QAc3C4C,mBACZ1C,aACAC,MACAC,MAAgB,yDAGhB,IAAK,IAAIuB,MAAO,IAAI,MAAKG,gBAAiB,CAEtC,IAAIK,GAAK,IAAI3B,iBAAgB,IAAM,MAAKC,MAAMkB,IAAI5B,WAC9CqC,MAAapyB,MAAMqyB,UAAUC,MAAMC,KAAKnC,MAC5CgC,MAAMpa,KAAKma,IAEX,IAAIU,GAAKlB,IAMT,SALMkB,GAAGlJ,QAAQuG,aAAcC,MAAOiC,OAGtC,MAAKI,QAAQb,MAERzB,cAAgBiC,GAAGzB,mBACpB,MAAO,CAAEA,oBAAoB,GAIrC,OAAIR,aACO,KAGJ,CAAEQ,oBAAoB,KAxBb,IC3BlB,MAAOoC,qCACDH,4CAKR15B,cACIiD,QASE62B,SAAS3C,MAAW,8EACtB,MAAMn0B,aAAe,MAAK22B,oBAAmB,EAAO,MAAMI,YAC1D,GAAc,MAAV/2B,OACA,MAAM,IAAI4zB,4BAAc,kCAG5B,OAAO5zB,SANe,GAcnBg3B,cAAc7C,MACjB/2B,KAAKu5B,oBAAmB,EAAMv5B,KAAM25B,WAOjCN,UACH,OAAOx2B,MAAMw2B,WCvCf,MAAOQ,8BACDtB,8BAOR34B,cACIiD,QAWJ62B,SAAS3C,MACL,MAAMn0B,OAAS5C,KAAK64B,WAAU,EAAO74B,KAAM25B,WAC3C,GAAc,MAAV/2B,OACA,MAAM,IAAI4zB,4BAAc,kCAE5B,OAAO5zB,OAUXg3B,cAAc7C,MACV/2B,KAAK64B,WAAU,EAAM74B,KAAM25B,WAWxBN,UACH,OAAOx2B,MAAMw2B,WCjDf,MAAOS,yBACDvB,8BAQR34B,cACIiD,QAUG62B,WACH,MAAM92B,OAAS5C,KAAK64B,WAAU,EAAO74B,KAAM25B,WAC3C,GAAc,MAAV/2B,OACA,MAAM,IAAI4zB,4BAAc,kCAE5B,OAAO5zB,OASJg3B,gBACH55B,KAAK64B,WAAU,EAAM74B,KAAM25B,WAWxBN,UACH,OAAOx2B,MAAMw2B,WC/Cf,MAAOU,gCAA+BF,uBAEtC,MAAOG,6BAAoCP,8BAE3C,MAAOQ,8BAA8BH,kBAIrC,MAAOI,kBAKTt6B,YAAYu6B,SAAU,GAFd,KAAAC,kBAAoB,IAAIH,sBAG5Bj6B,KAAKq6B,yBAA0B,EAC/Br6B,KAAKm6B,QAAUA,SACE,IAAbA,SACAlD,YAAY71B,IACRpB,KAAKq6B,yBAA0B,EAC/Br6B,KAAKo6B,kBAAkBV,aACxBS,SAIJG,cACHt6B,KAAKq6B,yBAA0B,EAC/Br6B,KAAKo6B,kBAAkBV,WAGpBa,SAAS7D,SACZ,OAAO12B,KAAKo6B,kBAAkBzC,UAAUjB,UAI1C,SAAU8D,WAAWC,IACvB,OAAO,IAAIC,SAASC,SAAY1D,WAAW0D,QAASF,MAOlD,MAAOG,SAKTh7B,YAAYi7B,iBAAwBC,SAChC96B,KAAK+6B,QAAU,IAAIL,SAAW,CAACC,QAASK,UACpCh7B,KAAK26B,QAAUA,QACf36B,KAAKg7B,OAASA,YACWj7B,IAArB86B,wBACgB96B,IAAZ+6B,UAAqC,IAAZA,QACzBH,QAAQE,kBAERG,OAAOH,sBAMhBI,QACHj7B,KAAK+6B,QAAU,IAAIL,SAAW,CAACC,QAASK,UACpCh7B,KAAK26B,QAAUA,QACf36B,KAAKg7B,OAASA,WC/EpB,MAAOE,WAWXt7B,YAAYu7B,QAAiBjL,OARrB,KAAAkL,QAAe,KAkBhB,KAAAC,OAAQ,EACP,KAAAC,WAA2B,IAAMt7B,KAAKu7B,OAV5Cv7B,KAAKw7B,SAAWL,QAChBn7B,KAAKu7B,OAASrL,MACdlwB,KAAKo7B,QAAU,KAcNlL,YACT,OAAOlwB,KAAKs7B,aAGHG,aACT,OAAOz7B,KAAKo7B,QAGHD,cACT,OAAOn7B,KAAKw7B,SAGHE,kBACT,OAAwB,OAAjB17B,KAAKo7B,QAGPO,SAASzL,OACdlwB,KAAKu7B,OAASrL,MACdlwB,KAAKs7B,WAAa,IAAMt7B,KAAKu7B,OAC7Bv7B,KAAKo7B,QAAU,KACfp7B,KAAKq7B,OAAQ,EAGRO,UAAU1L,MAAYoL,YAC3Bt7B,KAAKo7B,QAAUlL,MACflwB,KAAKu7B,OAAS,KACdv7B,KAAKs7B,WAAaA,WAClBt7B,KAAKq7B,OAAQ,G,OCrDX,MAAOQ,UAGAC,WACT,OAAO97B,KAAK+7B,OAAO/3B,OAGrBpE,cANQ,KAAAm8B,OAAS,IAAIp1B,MACd,SAAuB,YAQvBq1B,IAAI9L,OAET,OADAlwB,KAAK+7B,OAAOpd,KAAKuR,OACVlwB,KAGTm4B,QACEn4B,KAAK+7B,OAAO/3B,OAAS,EAGvBi4B,OAAO/L,OACL,MAAMa,EAAI/wB,KAAK+7B,OAAO3C,QAAQlJ,OAC9B,OAAIa,GAAK,WAEE/wB,KAAK+7B,OAAOhL,IACZ,GAKb1P,QAAQ6a,YACN,IAAM,IAAInL,EAAI,EAAIA,EAAI/wB,KAAK+7B,OAAO/3B,SAAU+sB,EAC1CmL,WAAWl8B,KAAK+7B,OAAOhL,IAI3B,GAACoL,GAjCOC,OAAOC,YAiCbD,OAAOE,aACP,IAAK,MAAMvL,KAAK/wB,KAAK+7B,aACXhL,EAIZkH,IAAI/H,OAEF,OADUlwB,KAAK+7B,OAAO3C,QAAQlJ,QACrB,EAMX7wB,SACE,OAAOW,KAAK+7B,OAGPQ,MAAMC,MACX,IAAK,MAAMC,QAAQz8B,KAAK+7B,OAAQ,CAC9B,IAAIS,KAKF,OAAOC,KAJP,GAAID,KAAKC,MACP,OAAOA,KAMb,MAAM,IAAI39B,MAAM,sBAGX49B,eAAeF,MACpB,IAAK,MAAMC,QAAQz8B,KAAK+7B,OAAQ,CAC9B,IAAIS,KAKF,OAAOC,KAJP,GAAID,KAAKC,MACP,OAAOA,KAMb,OAAO,KAGFE,MAAMH,MACX,MAAM55B,OAAS,IAAIg6B,IACnB,IAAK,MAAM1M,SAASlwB,KAAK+7B,OACnBS,KAAKtM,QACPttB,OAAOo5B,IAAI9L,OAGf,OAAOttB,OAGFi6B,IAAIL,MACT,IAAK,MAAMC,QAAQz8B,KAAK+7B,OACtB,GAAIS,KAAKC,MACP,OAAO,EAGX,OAAO,GAI0B92B,ICnG/B,MAAOm3B,kDAAgCjB,UAO3Cj8B,YAAYm9B,QAAgCC,UAAkCC,WAC5Ep6B,QAHK,KAAAq6B,SAAU,EAIfl9B,KAAK+8B,QAAUA,QACf/8B,KAAKg9B,UAAYA,UACjBh9B,KAAKi9B,UAAYA,UAGZl6B,YAAeo6B,OACpB,MAAMv6B,OAAS,IAAIk6B,0CACnB,IAAK,MAAMtc,QAAQ2c,MACjBv6B,OAAOo5B,IAAIxb,MAEb,OAAO5d,OAGFo5B,IAAI9L,OACT,MAAMttB,OAASC,MAAMm5B,IAAI9L,OAIzB,OAHuB,IAAjBlwB,KAAKk9B,cAAwCn9B,IAAjBC,KAAK+8B,SACrC/8B,KAAK+8B,QAAQ7M,OAERttB,OAGFu1B,QACLt1B,MAAMs1B,SACiB,IAAjBn4B,KAAKk9B,cAA0Cn9B,IAAnBC,KAAKi9B,WACrCj9B,KAAKi9B,YAKFhB,OAAO/L,OACZ,MAAMttB,OAASC,MAAMo5B,OAAO/L,OAI5B,OAHuB,IAAjBlwB,KAAKk9B,cAA0Cn9B,IAAnBC,KAAKg9B,WACrCh9B,KAAKg9B,UAAU9M,OAEVttB,QCtCL,MAAOw6B,wBAAbx9B,cAMc,KAAAy9B,QAAU,IAAI13B,IAChB,KAAA23B,2BAA6B,IAAIvD,wBAMlC,KAAAwD,cAAgB,GAChB,KAAAC,oBAAsB,EACtB,KAAAC,cAAgB,GAEhB,KAAAC,SAA+B,KAE/B36B,iBAAwC46B,gBAA8BC,kBACzE,MAAMh7B,OAAS,IAAI+6B,gBAEnB,OADA/6B,OAAOi7B,SAASD,kBACTh7B,OAGAk7B,mBACP,OAAO99B,KAAKq9B,QAAQv7B,OAGbi8B,cACP,IAAK,MAAOl8B,IAAKquB,SAAUlwB,KAAKq9B,QAC5B,IAAoB,IAAhBnN,MAAMmL,MACN,OAAO,EAGf,OAAO,EAGA0C,YAAQ1C,OACf,IAAK,MAAOx5B,IAAKquB,SAAUlwB,KAAKq9B,QAC5BnN,MAAMmL,MAAQA,MAIX2C,gBACP,OAAOh+B,KAAKq9B,QAOTY,kBAAkBvH,SACrB,OAAO12B,KAAKs9B,2BAA2B3F,UAAUjB,SAO9CwH,UACHl+B,KAAKq9B,QAAQlF,QAOVgG,SAAShD,SACZ,OAAOn7B,KAAKq9B,QAAQpF,IAAIkD,QAAQ70B,eAK7B83B,iBAAoBjD,QAAiBkD,YAExC,OADAlD,QAAUA,QAAQ70B,cACdtG,KAAKs+B,oBAAoBnD,SAClB,KAEJn7B,KAAKu+B,SAAYpD,QAASkD,YAG9BE,SAAYpD,QAAiBkD,YAOhC,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,aAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UACA,OAAOA,UAAUtO,MAErB,MAAM,IAAIpxB,MAAM,SAAWq8B,QAAU,mBAGlCsD,kBAAqBtD,QAAiBuD,aAAkBL,YAC3D,OAAIr+B,KAAKm+B,SAAShD,SACPn7B,KAAKu+B,SAAYpD,QAASkD,YAC1BK,mBAAJ,EAKJC,iBAAoBxD,QAAiByD,UACvB,OAAbA,SACA5+B,KAAKq9B,QAAQpB,OAAOd,SAEpBn7B,KAAK6+B,SAAS1D,QAASyD,UAIxBC,SAAY1D,QAAiByD,UAGhC,GADAzD,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASiD,cAElB,CACH,MAAMJ,UAAY,IAAItD,WAAWC,QAASyD,UAC1C5+B,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtC++B,qBAAqB5D,QAAiBkD,YAEzC,OADAlD,QAAUA,QAAQ70B,cACdtG,KAAKs+B,oBAAoBnD,SAClB,KAEJn7B,KAAKg/B,aAAa7D,QAASkD,YAG/BW,aAAa7D,QAAiBkD,YAOjC,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,QAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UACA,OAAO,IAAIS,KAAKT,UAAUtO,OAE9B,MAAM,IAAIpxB,MAAM,SAAWq8B,QAAU,mBAGlC+D,qBAAqB/D,QAAiByD,UACxB,OAAbA,SACA5+B,KAAKq9B,QAAQpB,OAAOd,SAEpBn7B,KAAKm/B,aAAahE,QAASyD,UAI5BO,aAAahE,QAAiByD,UAGjC,GADAzD,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASiD,SAASQ,mBAE3B,CACH,MAAMZ,UAAY,IAAItD,WAAWC,QAASyD,SAASQ,eACnDp/B,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtCq/B,qBAAqBlE,QAAiBkD,YAEzC,OADAlD,QAAUA,QAAQ70B,cACdtG,KAAKs+B,oBAAoBnD,SAClB,KAEJn7B,KAAKs/B,aAAanE,QAASkD,YAG/BiB,aAAanE,QAAiBkD,YAOjC,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,QAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UACA,OAAwB,OAApBA,UAAUtO,MACHrrB,SAAAA,SAAAA,MAEJA,SAAAA,SAAAA,MAAe25B,UAAUtO,MAAM5pB,eAE1C,MAAM,IAAIxH,MAAM,SAAWq8B,QAAU,mBAGlCoE,qBAAqBpE,QAAiByD,UACxB,OAAbA,SACA5+B,KAAKq9B,QAAQpB,OAAOd,SAEpBn7B,KAAKw/B,aAAarE,QAASyD,UAI5BY,aAAarE,QAAiByD,UAGjC,GADAzD,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASiD,SAASv4B,gBAE3B,CACH,MAAMm4B,UAAY,IAAItD,WAAWC,QAASyD,SAASv4B,WAAWC,eAC9DtG,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtCy/B,cAAiBtE,QAAiByD,UAErC,MAAMc,UAAY,IAAI/4B,MACtB,IAAK,MAAM81B,QAAQmC,SACfc,UAAU/gB,KAAK8d,MAInB,GADAtB,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAAS+D,eAElB,CACH,MAAMlB,UAAY,IAAItD,WAAWC,QAASuE,WAC1C1/B,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAGtC2/B,cAAiBxE,QAAiBkD,YAOrC,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,YAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM94B,OAAS,IAAIk6B,2CACd17B,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE5CoB,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE7C,KACIw+B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAGjD4C,OAAOs6B,SAAU,EACjB,IAAK,MAAM1c,QAAQge,UAAUtO,MACzBttB,OAAOo5B,IAAIxb,MAUf,OARA5d,OAAOs6B,SAAU,EACjBsB,UAAU5C,UAAUh5B,QAAQ,KACxB,MAAMg9B,aAAe,IAAIj5B,MACzB,IAAK,MAAM6Z,QAAQ5d,OACfg9B,aAAajhB,KAAK6B,MAEtB,OAAOof,gBAEJh9B,OAEP,OAAO47B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAOlC0E,kBAAkB1E,QAAiByD,UAEtC,MAAMkB,YAAc,IAAIn5B,MACxB,IAAK,MAAM81B,QAAQmC,SACfkB,YAAYnhB,KAAK8d,KAAKp2B,YAI1B,GADA80B,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASmE,iBAElB,CACH,MAAMtB,UAAY,IAAItD,WAAWC,QAAS2E,aAC1C9/B,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAGtC+/B,kBAAkB5E,QAAiBkD,YAOtC,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,gBAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM94B,OAAS,IAAIk6B,2CACd17B,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE5CoB,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE7C,KACIw+B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAGjD4C,OAAOs6B,SAAU,EACjB,IAAK,MAAM1c,QAAQge,UAAUtO,MACzBttB,OAAOo5B,IAAIn3B,SAAAA,SAAAA,MAAe2b,KAAKna,WAAWC,gBAU9C,OARA1D,OAAOs6B,SAAU,EACjBsB,UAAU5C,UAAUh5B,QAAQ,KACxB,MAAMg9B,aAAe,IAAIj5B,MACzB,IAAK,MAAM6Z,QAAQ5d,OACfg9B,aAAajhB,KAAK6B,KAAKna,YAE3B,OAAOu5B,gBAEJh9B,OAEP,OAAO47B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAOlC6E,mBAAiC7E,QAAiBkD,WAAqB4B,SAO1E,GANI5B,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,OAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAGzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM94B,OAAS,IAAI+C,IACnB,GAAwB,OAApB64B,UAAUtO,MACV,IAAK,MAAMruB,OAAOiF,OAAOhF,KAAK08B,UAAUtO,OACpB,WAAZ+P,QACAr9B,OAAOwD,IAAI85B,OAAOr+B,KAAyB28B,UAAUtO,MAAMruB,MAG3De,OAAOwD,IAAIvE,IAAwB28B,UAAUtO,MAAMruB,MAa/D,OARA28B,UAAU5C,UAAUh5B,QAAQ,KACxB,MAAMu9B,WAAkB,GAIxB,OAHAv9B,OAAOye,SAAQ,CAAC6O,MAAOruB,OACnBs+B,WAAWt+B,KAAOquB,SAEfiQ,cAGJv9B,OAEP,OAAO47B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAGlCiF,mBAAiCjF,QAAiByD,UAErDzD,QAAUA,QAAQ70B,cAElB,MAAM65B,WAAkB,GAKxB,GAJAvB,SAASvd,SAAQ,CAAC6O,MAAOruB,OACrBs+B,WAAWt+B,KAAOquB,SAGlBlwB,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASwE,gBAElB,CACH,MAAM3B,UAAY,IAAItD,WAAWC,QAASgF,YAC1CngC,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtCqgC,eAAkEC,UAA4BnF,QAAiBkD,YAOlH,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,eAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM6E,MAAQ,IAAID,UAGlB,OAFAC,MAAMC,WAAWhC,UAAUtO,OAC3BsO,UAAU5C,UAAU2E,OAAO,IAAMA,MAAME,WAChCF,MAEP,OAAO/B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAGlCuF,eAAuCvF,QAAiByD,UAG3D,GADAzD,QAAUA,QAAQ70B,cACdtG,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASiD,SAAS6B,cAE3B,CACH,MAAMjC,UAAY,IAAItD,WAAWC,QAASyD,SAAS6B,UACnDzgC,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtC2gC,oBAA4CxF,QAAiByD,UAEhEzD,QAAUA,QAAQ70B,cAElB,MAAMs5B,aAAe,IAAIj5B,MACzB,IAAK,MAAM6Z,QAAQoe,SACfgB,aAAajhB,KAAK6B,KAAKigB,UAG3B,GAAIzgC,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASiE,kBAElB,CACH,MAAMpB,UAAY,IAAItD,WAAWC,QAASyE,cAC1C5/B,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAGtC4gC,oBAA2EN,UAA4BnF,QAAiBkD,YAO3H,GANIA,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,sBAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAEzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM94B,OAAS,IAAIk6B,2CACd17B,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE5CoB,IACGo9B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAE7C,KACIw+B,UAAUnD,OAAQ,EAClBr7B,KAAKs9B,2BAA2B5D,SAAS15B,SAGjD4C,OAAOs6B,SAAU,EACjB,IAAK,MAAM1c,QAAQge,UAAUtO,MAAO,CAChC,MAAMqQ,MAAQ,IAAID,UAClBC,MAAMC,WAAWhgB,MACjB5d,OAAOo5B,IAAIuE,OAUf,OARA39B,OAAOs6B,SAAU,EACjBsB,UAAU5C,UAAUh5B,QAAQ,KACxB,MAAMg9B,aAAe,IAAIj5B,MACzB,IAAK,MAAM6Z,QAAQ5d,OACfg9B,aAAajhB,KAAK6B,KAAKigB,UAE3B,OAAOb,gBAEJh9B,OAEP,OAAO47B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAOlC0F,yBACHP,UACAnF,QACAkD,WACA4B,SAQA,GANI5B,aACAr+B,KAAKu9B,cAAgBpC,QACrBn7B,KAAKw9B,oBAAsBa,WAC3Br+B,KAAKy9B,cAAgB,OAEzBtC,QAAUA,QAAQ70B,eACgB,IAA9BtG,KAAKq9B,QAAQpF,IAAIkD,SACjB,MAAM,IAAIr8B,MAAM,SAAWq8B,QAAU,mBAGzC,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,GAAIqD,UAAW,CACX,IAA8B,IAA1BA,UAAU9C,YAAuB,CACjC,MAAM94B,OAAS,IAAI+C,IACnB,GAAwB,OAApB64B,UAAUtO,MACV,IAAK,MAAMruB,OAAOiF,OAAOhF,KAAK08B,UAAUtO,OAAQ,CAC5C,MAAMqQ,MAAQ,IAAID,UAClBC,MAAMC,WAAWhC,UAAUtO,MAAMruB,MACjB,WAAZo+B,QACAr9B,OAAOwD,IAAI85B,OAAOr+B,KAAyB0+B,OAG3C39B,OAAOwD,IAAIvE,IAAwB0+B,OAa/C,OARA/B,UAAU5C,UAAUh5B,QAAQ,KACxB,MAAMu9B,WAAkB,GAIxB,OAHAv9B,OAAOye,SAAQ,CAAC6O,MAAOruB,OACnBs+B,WAAWt+B,KAAOquB,SAEfiQ,cAGJv9B,OAEP,OAAO47B,UAAU/C,OAGzB,MAAM,IAAI38B,MAAM,SAAWq8B,QAAU,mBAGlC2F,yBAA4D3F,QAAiByD,UAEhFzD,QAAUA,QAAQ70B,cAElB,MAAM65B,WAAkB,GAKxB,GAJAvB,SAASvd,SAAQ,CAAC6O,MAAOruB,OACrBs+B,WAAWt+B,KAAOquB,MAAMuQ,YAGxBzgC,KAAKq9B,QAAQpF,IAAIkD,SAAU,CAC3B,MAAM2D,QAAU9+B,KAAKq9B,QAAQt7B,IAAIo5B,SAC7B2D,SACAA,QAAQnD,SAASwE,gBAElB,CACH,MAAM3B,UAAY,IAAItD,WAAWC,QAASgF,YAC1CngC,KAAKq9B,QAAQj3B,IAAI+0B,QAASqD,WAE9Bx+B,KAAKs9B,2BAA2B5D,SAAS15B,MAOtCwgC,WAAWO,QACd,GAAIA,OAAQ,CACR/gC,KAAKq9B,QAAU,IAAI13B,IACnB,IAAK,MAAM9D,OAAOiF,OAAOhF,KAAKi/B,QAAS,CAEnC,MAAM7Q,MAAQ6Q,OAAOl/B,KACrB7B,KAAKq9B,QAAQj3B,IAAIvE,IAAIyE,cAAe,IAAI40B,WAAWr5B,IAAKquB,SAGhElwB,KAAKghC,cAGFnD,SAASoD,QACZjhC,KAAKq9B,QAAQlF,QACb,IAAK,MAAOt2B,IAAKquB,SAAU+Q,OAAOjD,UAAW,CACzC,MAAMQ,UAAY,IAAItD,WAAWr5B,IAAKquB,MAAMA,OAC5ClwB,KAAKq9B,QAAQj3B,IAAIvE,IAAK28B,WAE1Bx+B,KAAKghC,cAGFE,eAAeD,OAAsBE,QACxC,MAAMC,WAAaD,OAAS,IAAIvE,IAAYj2B,MAAMC,KAAKu6B,QAAQE,KAAKC,GAAMA,EAAEh7B,sBAAkBvG,EAC9F,IAAK,MAAO8B,IAAKquB,SAAU+Q,OAAOjD,UAC9B,IAAKoD,YAAcA,WAAWnJ,IAAIp2B,KAAM,CACpC,MAAM28B,UAAY,IAAItD,WAAWr5B,IAAKquB,MAAMA,OAC5ClwB,KAAKq9B,QAAQj3B,IAAIvE,IAAK28B,WAG9Bx+B,KAAKghC,cAGCA,eAEHO,SAAS5Y,MACZ,MAAMwY,OAAS/+B,KAAKC,MAAMsmB,MAC1B3oB,KAAKwgC,WAAWW,QAGbV,SACH,MAAM79B,OAA+B,GACrC,IAAK,MAAOf,IAAKquB,SAAUlwB,KAAKq9B,QAC5Bz6B,OAAOf,KAAOquB,MAAMA,MAExB,OAAOttB,OAGJ4+B,gBAGH,MADe,UADFp/B,KAAK0d,UAAU9f,KAAKygC,UAK9Bp6B,WACH,OAAOjE,KAAK0d,UAAU9f,KAAKygC,UAGxBgB,uBAMCnD,oBAAoBnD,SACxB,IAAKn7B,KAAKq9B,QAAQpF,IAAIkD,SAClB,OAAO,EAGX,MAAMqD,UAAYx+B,KAAKq9B,QAAQt7B,IAAIo5B,SACnC,OAAQqD,WAAiC,OAApBA,UAAUtO,OC7sBjC,MAAOwR,gBAAb9hC,cACU,KAAA+hC,WAAa,EACb,KAAAC,UAAW,EACX,KAAAC,SAAU,EACV,KAAAC,OAAS,GAEV,KAAAC,SAAY3gC,MAEZ65B,QACLj7B,KAAK2hC,WAAa,EAClB3hC,KAAK4hC,UAAW,EAChB5hC,KAAK6hC,SAAU,EACf7hC,KAAK8hC,OAAS,GAGTz/B,MAAM2/B,GACX,IAAIjR,EACAkR,IAAM,EACV,IAAKlR,EAAI,EAAGA,EAAIiR,EAAEh+B,OAAQ+sB,IAAK,CAC7B,MAAMmR,EAAIF,EAAEjR,GACR/wB,KAAK4hC,SACH5hC,KAAK6hC,QACP7hC,KAAK6hC,SAAU,EAEL,OAANK,EACFliC,KAAK6hC,SAAU,EACA,MAANK,IACTliC,KAAK4hC,UAAW,GAIV,MAANM,EACFliC,KAAK2hC,aACU,MAANO,GACTliC,KAAK2hC,aACmB,IAApB3hC,KAAK2hC,aACP3hC,KAAK8hC,QAAUE,EAAEG,UAAUF,IAAKlR,EAAI,GACpC/wB,KAAK+hC,SAAS3/B,KAAKC,MAAMrC,KAAK8hC,SAC9B9hC,KAAK8hC,OAAS,GACdG,IAAMlR,EAAI,IAEG,MAANmR,IACTliC,KAAK4hC,UAAW,GAItB5hC,KAAK8hC,QAAUE,EAAEG,UAAUF,MC5CzB,MAAOG,YAOTxiC,cANO,KAAAyiC,YAAa,EAOhBriC,KAAKsiC,SAAWz9B,SAAAA,SAAAA,YAChB7E,KAAKuiC,WAAa,IAAI3F,IACtB58B,KAAKwiC,YAAc,IAAI5F,IACvB58B,KAAKyiC,mBAAqB,IAAI7F,IAG3B75B,kBAAkB2/B,SACrB,MAAMC,UAAY,IAAIP,YACtB,IAAK,MAAMlS,SAASwS,QAChBC,UAAUC,MAAM1S,OAEpB,OAAOyS,UAGJja,QACH,MAAMma,OAAS,IAAIT,YACnB,IAAK,MAAMlS,SAASlwB,KAAKsiC,SACrBO,OAAOP,SAAStG,IAAI9L,OAGxB,IAAK,MAAMA,SAASlwB,KAAKwiC,YACrBK,OAAOL,YAAYxG,IAAI9L,OAG3B,IAAK,MAAMA,SAASlwB,KAAKuiC,WACrBM,OAAON,WAAWvG,IAAI9L,OAG1B,IAAK,MAAMA,SAASlwB,KAAKyiC,mBACrBI,OAAOJ,mBAAmBzG,IAAI9L,OAIlC,OADA2S,OAAOR,WAAariC,KAAKqiC,WAClBQ,OAGJC,UAAUH,WACb,MAAM//B,OAAS,IAAImgC,cAInB,IAAK,MAAMvf,MAAMmf,UAAUL,UACO,IAA1BtiC,KAAKsiC,SAASrK,IAAIzU,MAClB5gB,OAAOogC,YAAYV,SAAStG,IAAIxY,IAChC5gB,OAAOqgC,OAAQ,GAIvB,IAAK,MAAMzf,MAAMxjB,KAAKsiC,UACiB,IAA/BK,UAAUL,SAASrK,IAAIzU,MACvB5gB,OAAOsgC,cAAcZ,SAAStG,IAAIxY,IAClC5gB,OAAOugC,SAAU,GAMzB,IAAK,MAAMjP,OAAOyO,UAAUJ,YACS,IAA7BviC,KAAKuiC,WAAWtK,IAAI/D,OACpBtxB,OAAOogC,YAAYT,WAAWvG,IAAI9H,KAClCtxB,OAAOqgC,OAAQ,GAIvB,IAAK,MAAM/O,OAAOl0B,KAAKuiC,YACmB,IAAlCI,UAAUJ,WAAWtK,IAAI/D,OACzBtxB,OAAOsgC,cAAcX,WAAWvG,IAAI9H,KACpCtxB,OAAOugC,SAAU,GAMzB,IAAK,MAAMjP,OAAOyO,UAAUF,oBACiB,IAArCziC,KAAKyiC,mBAAmBxK,IAAI/D,OAC5BtxB,OAAOogC,YAAYP,mBAAmBzG,IAAI9H,KAC1CtxB,OAAOqgC,OAAQ,GAIvB,IAAK,MAAM/O,OAAOl0B,KAAKyiC,oBAC2B,IAA1CE,UAAUF,mBAAmBxK,IAAI/D,OACjCtxB,OAAOsgC,cAAcT,mBAAmBzG,IAAI9H,KAC5CtxB,OAAOugC,SAAU,GAMzB,IAAK,MAAMC,SAAST,UAAUH,aACU,IAAhCxiC,KAAKwiC,YAAYvK,IAAImL,SACrBxgC,OAAOogC,YAAYR,YAAYxG,IAAIoH,OACnCxgC,OAAOqgC,OAAQ,GAIvB,IAAK,MAAMG,SAASpjC,KAAKwiC,aACoB,IAArCG,UAAUH,YAAYvK,IAAImL,SAC1BxgC,OAAOsgC,cAAcV,YAAYxG,IAAIoH,OACrCxgC,OAAOugC,SAAU,GAIzB,OAAOvgC,OAGJggC,MAAMS,WACT,IAAIC,UAAW,EAEf,IAAK,MAAM9f,MAAM6f,UAAUf,UACO,IAA1BtiC,KAAKsiC,SAASrK,IAAIzU,MAClBxjB,KAAKsiC,SAAStG,IAAIxY,IAClB8f,UAAW,GAInB,IAAK,MAAMpP,OAAOmP,UAAUd,YACS,IAA7BviC,KAAKuiC,WAAWtK,IAAI/D,OACpBl0B,KAAKuiC,WAAWvG,IAAI9H,KACpBoP,UAAW,GAInB,IAAK,MAAMpP,OAAOmP,UAAUZ,oBACiB,IAArCziC,KAAKyiC,mBAAmBxK,IAAI/D,OAC5Bl0B,KAAKyiC,mBAAmBzG,IAAI9H,KAC5BoP,UAAW,GAInB,IAAK,MAAMF,SAASC,UAAUb,aACU,IAAhCxiC,KAAKwiC,YAAYvK,IAAImL,SACrBpjC,KAAKwiC,YAAYxG,IAAIoH,OACrBE,UAAW,GAUnB,OALwB,IAApBtjC,KAAKqiC,aAAiD,IAAzBgB,UAAUhB,aACvCriC,KAAKqiC,YAAa,EAClBiB,UAAW,GAGRA,SAGJ7C,SACH,MAAMz9B,IAAM,CACRugC,SAAU,IAAI58B,MACd68B,YAAa,IAAI78B,MACjB88B,WAAY,IAAI98B,MAChB+8B,mBAAoB,IAAI/8B,MACxBg9B,WAAY3jC,KAAKqiC,YAErB,IAAK,MAAMnS,SAASlwB,KAAKsiC,SACrBt/B,IAAIugC,SAAS5kB,KAAK,CAAE9c,IAAKquB,MAAM7pB,WAAYu9B,MAAO,QAEtD,IAAK,MAAM1T,SAASlwB,KAAKuiC,WACrBv/B,IAAIygC,WAAW9kB,KAAKuR,OAExB,IAAK,MAAMA,SAASlwB,KAAKyiC,mBACrBz/B,IAAI0gC,mBAAmB/kB,KAAKuR,OAEhC,IAAK,MAAMA,SAASlwB,KAAKwiC,YACrBx/B,IAAIwgC,YAAY7kB,KAAKuR,OAEzB,OAAO9tB,KAAK0d,UAAU9c,MAI9B,MAAM+/B,cAMFnjC,cACII,KAAKgjC,YAAc,IAAIZ,YACvBpiC,KAAKkjC,cAAgB,IAAId,YACzBpiC,KAAKijC,OAAQ,EACbjjC,KAAKmjC,SAAU,GC9LjB,MAAOU,MAKXjkC,YAAYkkC,UAHJ,KAAAC,YAAmB,KACnB,KAAAC,SAAW,EAGjBhkC,KAAKikC,UAAYH,SAGZI,OAAO/J,SACRn6B,KAAK+jC,cACPI,aAAankC,KAAK+jC,aAClB/jC,KAAK+jC,YAAc,OAEJ,IAAb5J,UACFn6B,KAAK+jC,YAAc9M,YAAW,KAC5Bj3B,KAAKikC,cACJ9J,UAIAiK,OAAOA,QACZpkC,KAAKgkC,QAAUI,OACXpkC,KAAK+jC,cACPI,aAAankC,KAAK+jC,aAClB/jC,KAAK+jC,YAAc,OAEC,IAAlB/jC,KAAKgkC,UACPhkC,KAAK+jC,YAAc9M,YAAW,KAC5Bj3B,KAAKikC,YACLjkC,KAAK+jC,YAAc,KACnB/jC,KAAKokC,OAAOpkC,KAAKgkC,WAChBhkC,KAAKgkC,UAIL9F,UACDl+B,KAAK+jC,cACPI,aAAankC,KAAK+jC,aAClB/jC,KAAK+jC,YAAc,O,2CC7BnB,MAAOM,iBCGP,MAwCSC,2BACP,OAAOtkC,KAAKukC,sBAGLC,sBACP,OAAOxkC,KAAKykC,iBASLC,oBACP,OAAO1kC,KAAK2kC,eAGFC,kBACV,IAAIC,MAAQ7kC,KAAK8kC,WAAa9kC,KAAK+kC,WAAa,EAIhD,OAHIF,MAAQ,MACRA,MAAQ,KAELA,MAOXjlC,YAAYolC,QAAsB,eAnExB,KAAAC,qBAAuB,IAEvB,KAAAC,iBAAmB,IAOnB,KAAAC,uBAA6C,KAC7C,KAAAC,0BAA4BvgC,SAAAA,SAAAA,YAC5B,KAAA4/B,kBAAmB,EACnB,KAAAY,qBAAuB,EAC1B,KAAAC,gCAAkC,IAAIC,wBACtC,KAAAC,qCAAuC,IAAID,wBAC3C,KAAAE,+BAAiC,IAAIF,wBACrC,KAAAG,iCAAmC,IAAIH,wBACvC,KAAAI,yBAA2B,IAAIJ,wBAC/B,KAAAK,0BAA4B,IAAIL,wBAChC,KAAAM,yBAA2B,IAAIN,wBAC/B,KAAAO,2BAA6B,IAAIP,wBACjC,KAAAQ,qCAAuC,IAAIR,wBAC3C,KAAAS,iDAAmD,IAAIT,wBACvD,KAAAU,0BAA4B,IAAIV,wBAChC,KAAAW,qCAAuC,IAAIX,qBACxC,KAAAY,oBAAwD,KACxD,KAAAxB,eAAiB,GAGjB,KAAAJ,sBAAwB,GAM3B,KAAA6B,wBAA2C3S,gBAAgBE,aAU3D,KAAA0S,oBAAsB,GAEtB,KAAAtB,WAAa,KACb,KAAAD,YAAc,EAoBjB9kC,KAAKsmC,QAAUtB,OACfhlC,KAAKumC,iBAAmB,IAAI1C,OAAK,uBAAC,kBACxB,MAAK2C,wBAEfxmC,KAAKymC,sBAAwB,IAAI5C,OAAK,uBAAC,kBAC7B,MAAK6C,oCAINC,eAAY,0DACjB,OAAKlC,yBACC,OAAKmC,qBAGf,OAAKtB,gCAAgCnN,QACrC,OAAKqN,qCAAqCrN,QAC1C,OAAKsN,+BAA+BtN,QACpC,OAAKuN,iCAAiCvN,QACtC,OAAKwN,yBAAyBxN,QAC9B,OAAKyN,0BAA0BzN,QAC/B,OAAK0N,yBAAyB1N,QAC9B,OAAK2N,2BAA2B3N,QAChC,OAAK6N,iDAAiD7N,QACtD,OAAK+N,qCAAqC/N,QAC1C,OAAK4N,qCAAqC5N,QAC1C,OAAK8N,0BAA0B9N,QAE/B,OAAKoO,iBAAiBrI,UACtB,OAAKuI,sBAAsBvI,YAnBN,GA4BZ0I,oBAAiB,0DAC1B,aAAa,OAAKC,2BAA0B,KADlB,GAIvBC,qBACH9mC,KAAKmlC,uBAAyB,KAGrB4B,uBAAuBlE,QAAmB,0DACnD,MAAMmE,MAAQniC,SAAAA,SAAAA,UACd,OAAKsgC,uBAAyBtC,OAC9B,OAAKuC,0BAA0BjN,QAC/B,OAAKiN,0BAA0Bh/B,IAAI4gC,MAAOnE,QAC1C,MAAMoE,WAAa,OAAK9B,uBAAuB1E,SAC/C,aAAa,OAAKyG,sBAAsB,YAAaD,cANF,GAS1CE,yBAAyBtE,QAAmB,0DAClB,MAA/B,OAAKsC,yBACL,OAAKA,uBAAyB,IAAI/C,aAGtC,MAAM4E,MAAQniC,SAAAA,SAAAA,UAGd,OAFA,OAAKugC,0BAA0Bh/B,IAAI4gC,MAAOnE,SAEQ,IAA9C,OAAKsC,uBAAuBvC,MAAMC,eAC5B,OAAKqE,sBAAsB,cAAerE,OAAOpC,UAChDuG,OAGA,IAAItM,SAAe,SAAUC,QAASK,QACzCL,QAAQqM,YAdqC,GAmB5CI,8BAA8BC,WAAqB,0DAC5D,MAAMC,cAAgB,OAAKnC,uBAC3B,GAAqB,MAAjBmC,cACA,OAGJ,IAAK,MAAMC,YAAYF,UACf,OAAKjC,0BAA0BnN,IAAIsP,WACnC,OAAKnC,0BAA0BnJ,OAAOsL,UAI9C,MAAM5E,gBAAkBP,YAAYoF,WAAW,OAAKpC,0BAA0B/lC,UACxEooC,cAAgBH,cAAcxE,UAAUH,WAC9C,OAAKwC,uBAAyBxC,WACA,IAA1B,OAAK8B,mBACDgD,cAAcxE,OAAsC,MAA7BwE,cAAczE,oBAC/B,OAAKkE,sBAAsB,cAAeO,cAAczE,YAAYvC,WAE1EgH,cAActE,SAA0C,MAA/BsE,cAAcvE,sBACjC,OAAKgE,sBAAsB,mBAAoBO,cAAcvE,cAAczC,cApB7B,GAyBnDiH,yBAAyBlkB,GAAYniB,UAAgB,0DAC9D,aAAa,OAAK6lC,sBAAsB,sBAAuB1jB,GAAIniB,YADL,GAIrDsmC,kCAAkCnkB,GAAY2W,SAAe,0DACtE,aAAa,OAAK+M,sBAAsB,+BAAgC1jB,GAAI2W,WADN,GAI7DyN,qBAAqBC,iBAA4B,0DAC1D,MAAMhF,OAAS,IAAIzF,wBAEnB,OADAyF,OAAOhE,SAAS,gBAAiBgJ,uBACpB,OAAKX,sBAAsB,kBAAmBrE,UAHD,GAMjDiF,qBAAqBllC,QAAmB,2DACjD,aAAa,QAAKskC,sBAAsB,kBAAmBtkC,UADV,GAIxCmlC,wBAAwBnlC,QAAmB,2DACpD,aAAa,QAAKskC,sBAAsB,qBAAsBtkC,UADV,GAI3ColC,4BAA4BnT,MAAeC,OAAgBC,OAAgBC,OAAgBC,QAAc,2DAClH,aAAa,QAAKiS,sBAAsB,yBAA0BrS,MAAOC,OAAQC,OAAQC,OAAQC,UADiB,GAIzGgT,wBAAqB,2DAE9B,aADqB,QAAKC,yBAAiC,sBAD7B,GAKrBC,wBAAqB,2DAC9B,MAAMvS,kBAAoB,QAAKwS,+BAA4ChL,wBAAa,oBAIxF,OAHIxH,YAAYuI,SAAS,eACrB,QAAKwG,eAAiB/O,YAAY2I,SAAiB,cAEhD3I,cALuB,GAQxByS,mBAAmBhnC,UACzB,MAAMgzB,QAAUhzB,SAASk9B,SAAiB,WAAWj4B,cAC/CguB,QAAUjzB,SAASg/B,eAA0CjD,wBAAa,WAChF,OAAQ/I,SACJ,IAAK,iBAEGr0B,KAAKsoC,sBAAsBhU,QAAQjuB,YAEvC,MAEJ,IAAK,eAGG,OADArG,KAAKukC,sBAAwBjQ,QAAQiK,SAAiB,OAC/C,EAIf,IAAK,oBACD,CACI,MAAM/a,GAAK8Q,QAAQgL,aAAa,MAC1BzL,WAAaS,QAAQiK,SAAiB,cACtCgK,WAAajU,QAAQiK,SAAiB,cAC5Cv+B,KAAKwoC,mBAAmBhlB,GAAIqQ,WAAY0U,YAE5C,MAEJ,IAAK,gBACD,CACI,MAAM/kB,GAAK8Q,QAAQgL,aAAa,MAC1BzL,WAAaS,QAAQiK,SAAiB,cAC5Cv+B,KAAKyoC,eAAejlB,GAAIqQ,YAE5B,MAEJ,IAAK,cACD,CACI,MAAMrQ,GAAK8Q,QAAQgL,aAAa,MAC1BzL,WAAaS,QAAQiK,SAAiB,cAC5Cv+B,KAAK0oC,aAAallB,GAAIqQ,YAE1B,MAEJ,IAAK,gBAEG7zB,KAAK2oC,qBAAqBrU,QAAQjuB,YAEtC,MAEJ,IAAK,gBAEGrG,KAAK4oC,qBAAqBtU,QAAQjuB,YAEtC,MAEJ,IAAK,kBACD,CACI,MAAMmd,GAAK8Q,QAAQiK,SAAiB,MAC9B39B,QAAU0zB,QAAQ+L,eAA0CjD,wBAAa,WACzEyL,WAAavU,QAAQiK,SAAiB,cACtCuK,kBAAoBxU,QAAQiK,SAAiB,qBACnDv+B,KAAK+oC,iBAAiBvlB,GAAI5iB,QAASioC,WAAYC,mBAEnD,MAEJ,IAAK,gCACD,CACI,MAAMtlB,GAAK8Q,QAAQiK,SAAiB,MAC9BvQ,UAAYsG,QAAQiK,SAAiB,aACrCyK,WAAa1U,QAAQiK,SAAiB,cACtCxJ,OAAST,QAAQiK,SAAiB,UAClCvJ,OAASV,QAAQiK,SAAiB,UAClCtJ,OAASX,QAAQiK,SAAiB,UACxCv+B,KAAKipC,+BAA+BzlB,GAAIwK,UAAWgb,WAAYjU,OAAQC,OAAQC,QAEnF,MAEJ,IAAK,oBACD,CACI,MAAMN,eAAiBL,QAAQiK,SAAkB,gBACjDv+B,KAAKkpC,2BAA2BvU,gBAEpC,MAEJ,IAAK,OACD,MAEJ,QAEQ30B,KAAKmpC,uBAAuB9U,QAASC,SAIjD,OAAO,EAGE8T,+BAAsD9H,UAAwBxL,UAAmBiC,MAAkC,2DAC5I,MAAMzC,QAAU,IAAI8I,wBACpB9I,QAAQuK,SAAS,SAAU/J,QAC3BR,QAAQuK,SAAS,SAAU9H,MAC3B,MAAM11B,eAAiB,QAAKilC,QAAQ8C,oBAAoB,OAAQ,qBAAuB,QAAK7E,sBAAwB,UAAWjQ,QAAQjuB,YACvI,GAAIhF,SAASm0B,aAAeJ,4BAAAA,GACxB,MAAM,IAAIt2B,MAAM,qCAAuCuC,SAASm0B,YAEpE,MAAM6T,MAAQ,IAAI/I,UAElB,OADA+I,MAAM7I,WAAWn/B,SAASI,MACnB4nC,QAVqI,GAanInB,yBAA4BpT,UAAmBiC,MAAkC,2DAC1F,GAAmC,OAA/B,QAAKwN,uBAAwE,IAAtC,QAAKA,sBAAsBvgC,OAClE,MAAM,IAAIlF,MAAM,iBAGpB,MAAMw1B,QAAU,IAAI8I,wBACpB9I,QAAQuK,SAAS,SAAU/J,QAC3BR,QAAQuK,SAAS,SAAU9H,MAC3B,MAAM11B,eAAiB,QAAKilC,QAAQ8C,oBAAoB,OAAQ,qBAAuB,QAAK7E,sBAAwB,UAAWjQ,QAAQjuB,YACvI,GAAIhF,SAASm0B,aAAeJ,4BAAAA,GACxB,MAAM,IAAIt2B,MAAM,qCAAuCuC,SAASm0B,YAGpE,OADen0B,SAASI,OAZkE,GAgBjFylC,sBAAsBpS,UAAmBiC,MAAkC,2DACpF,GAAmC,OAA/B,QAAKwN,uBAAwE,IAAtC,QAAKA,sBAAsBvgC,OAClE,MAAM,IAAIlF,MAAM,iBAGpB,MAAMw1B,QAAU,IAAI8I,wBACpB9I,QAAQuK,SAAS,SAAU/J,QAC3BR,QAAQuK,SAAS,SAAU9H,MAC3B,MAAM11B,eAAiB,QAAKilC,QAAQ8C,oBAAoB,OAAQ,qBAAuB,QAAK7E,sBAAwB,UAAWjQ,QAAQjuB,YACvI,GAAIhF,SAASm0B,aAAeJ,4BAAAA,GACxB,MAAM,IAAIt2B,MAAM,qCAAuCuC,SAASm0B,cAVgB,GAmBxE8T,oBAAoBC,UAAyB,2DACzD,IACI,IAAIC,WAAY,EAEhB,IAA8B,IAA1B,QAAK/E,iBACL,OAEJ,OAAQ8E,UACJ,KAAK9V,gBAAgBgW,UACjB,QAAKlD,iBAAiBrC,QAAQ,GAC9B,QAAKmB,qBAAuB,EACxB,QAAKF,+BACC,QAAK4B,uBAAuB,QAAK5B,yBAE3C,MAGJ,KAAK1R,gBAAgBE,aAEjB6V,UAAgC,IAApB,QAAK1E,YACZ,QAAKA,WAAa,IAA0B,IAArB,QAAKA,aAAoD,IAA9B,QAAKO,6BAClD,QAAKqE,6BAEf,MAGJ,KAAKjW,gBAAgBkW,WACb,QAAKnF,iBAAmB,QAAKa,qBAAuB,IACpD,QAAKkB,iBAAiBrC,OAAO,QAAKU,aAClC2E,SAAW9V,gBAAgBmW,cAE/B,MAGJ,KAAKnW,gBAAgBmW,aACjB,QAAKrD,iBAAiBrC,OAAO,QAAKU,aAKtC4E,WACA,QAAKK,qBAAqBN,UAEhC,MAAOnoC,SAEC,QAAKulC,kBA7C0C,GAiDnDkD,qBAAqB/gB,OAC3B,GAAI9oB,KAAKomC,0BAA4Btd,MAAO,CACxC9oB,KAAKomC,wBAA0Btd,MAC/B,MAAMghB,IAAM,IAAIC,eAChBD,IAAIhhB,MAAQA,MACZ9oB,KAAKslC,gCAAgC5L,SAASoQ,MAI5CrB,eAAejlB,GAAWqQ,YAChC,MAAMiW,IAAM,IAAIC,iBAChBD,IAAItmB,GAAKA,GACTsmB,IAAIjW,WAAaA,WACjB7zB,KAAK0lC,iCAAiChM,SAASoQ,KAGzCpB,aAAallB,GAAWqQ,YAC9B,MAAMiW,IAAM,IAAIC,eAChBD,IAAItmB,GAAKA,GACTsmB,IAAIjW,WAAaA,WACjB7zB,KAAKylC,+BAA+B/L,SAASoQ,KAGvCtB,mBAAmBhlB,GAAWqQ,WAAoBC,OACxD,MAAMgW,IAAM,IAAIC,qBAChBD,IAAItmB,GAAKA,GACTsmB,IAAIjW,WAAaA,WACjBiW,IAAIhW,MAAQA,MACZ9zB,KAAKwlC,qCAAqC9L,SAASoQ,KAGhDxB,sBAAsB0B,WACzB,MAAMC,GAAK,IAAI7M,wBACf6M,GAAGzJ,WAAWp+B,KAAKC,MAAM2nC,YACzBhqC,KAAK4lC,0BAA0BlM,SAASuQ,IAGrCtB,qBAAqBuB,UACxB,MAAMD,GAAK,IAAI7M,wBACf6M,GAAGzJ,WAAWp+B,KAAKC,MAAM6nC,WACzBlqC,KAAK2lC,yBAAyBjM,SAASuQ,IAGjCrB,qBAAqBuB,OAC3B,MAAML,IAAM,IAAIC,iBAChBD,IAAIK,MAAQ/nC,KAAKC,MAAM8nC,OACvBnqC,KAAK6lC,yBAAyBnM,SAASoQ,KAGjCX,uBAAuB9U,QAAiBC,SAC9C,MAAMyC,KAAO,IAAIgT,0BAA+B1V,QAASC,SACzDt0B,KAAKimC,0BAA0BvM,SAAS3C,MAGlCgS,iBAAiBvlB,GAAY5iB,QAAuBwpC,KAAcC,aACxE,MAAMP,IAAM,IAAIC,mBAAwBvmB,GAAI5iB,QAASwpC,KAAMC,aAC3DrqC,KAAK8lC,2BAA2BpM,SAASoQ,KAGnCZ,2BAA2BvU,gBACjC,MAAMmV,IAAM,IAAIC,sBAA2BpV,gBAC3C30B,KAAK+lC,qCAAqCrM,SAASoQ,KAG7Cb,+BAA+BzlB,GAAYqR,MAAeC,OAAgBC,OAAgBC,OAAgBC,QAChH,MAAM8B,KAAO,IAAIgT,iCAAsCvmB,GAAIqR,MAAOC,OAAQC,OAAQC,OAAQC,QAC1Fj1B,KAAKgmC,iDAAiDtM,SAAS3C,MAGnD2P,gCAA6B,2DACzC,IAAI4D,QAAS,EAEb,IACI,QAAK7D,sBAAsBvC,QAAQ,GACnC,MAAMqG,YAAc,IAAIrQ,kBAAkB,QAAKgL,kBAE/CoF,cADuB,QAAKE,mBAAmBD,cAC7B/U,aAAeJ,4BAAAA,GACnC,MAAOh0B,GACLkpC,QAAS,GAEE,IAAXA,gBACY,QAAKZ,8BACb,QAAKG,qBAAqBpW,gBAAgBE,iBAbT,GAsB/B6S,oBAAiB,2DACvB,QAAKJ,0BAA4B3S,gBAAgBgW,kBAE3C,QAAK7C,uBAHY,GAOfC,0BAA0B4D,WAAkB,4DAC1B,IAA1B,QAAKhG,mBACL,QAAKA,kBAAmB,QAClB,QAAKiG,gCACPD,WAAa,QAAKrE,0BAA4B3S,gBAAgBE,aAC9D,QAAKkW,qBAAqBpW,gBAAgBE,cAE1C,QAAKyS,wBAA0B3S,gBAAgBE,gBAPC,GAiB5C+V,4BAAyB,2DACrC,GAAI,QAAKlF,kBAAoB,QAAKa,qBAAuB,QAAKP,aAAmC,IAArB,QAAKA,YAAoB,CACjG,QAAKO,uBACL,UACU,QAAKwB,2BAA0B,GACvC,MAAOzlC,IAET,IACI,QAAKqlC,sBAAsBvC,OAAO,QAAKa,YACzC,OACF,OAAO,EAEX,OAAO,IAZ8B,GAe5B4F,uBAAoB,iEACvB,QAAK9D,2BAA0B,GACrC,QAAKgD,qBAAqBpW,gBAAgBmW,gBAFb,KDvgBjChqC,YAAYolC,QACRniC,MAAMmiC,QAZF,KAAA4F,WAAyC,KACzC,KAAAC,IAAwB,KAkBnBL,mBAAmBlQ,aAA8C,yDAW1E,IAAIj5B,SAEJ,OAZA,MAAKojC,kBAAmB,EACQ,MAA5B,MAAK0B,sBACL,MAAKA,oBAAoB7L,cACzB,MAAK6L,oBAAsB,MAEZ,MAAf7L,cACA,MAAK6L,oBAAsB7L,mBAEzB,MAAKgP,oBAAoB7V,gBAAgBkW,YAG/C,MAAKrD,QAAQwE,aAAc,GACU,IAAjC,MAAKxE,QAAQyE,kBAEb1pC,eAAiB,MAAK2pC,iBAClB3pC,SAASm0B,aAAeJ,4BAAAA,KACxB,MAAKkR,QAAQwE,aAAc,EACpBzpC,WAGgB,IAA3B,MAAKilC,QAAQ2E,gBAEA,MAAKC,WAEX,IAAI5V,aAAaF,4BAAAA,yBAzB8C,GA6BvE+V,wBAAwBxoC,SACvB3C,KAAKsmC,QAAQwE,aAAe9qC,KAAK6qC,KACjC7qC,KAAK6qC,IAAIO,KAAKzoC,SAIN+nC,gCAA6B,0DACzC,UACU,OAAKxD,sBAAsB,cACnC,MAAO9lC,IAIL,OAAKwpC,aACL,OAAKA,WAAWS,QAChB,OAAKT,WAAa,MAElB,OAAKC,MACL,OAAKA,IAAIQ,QACT,OAAKR,IAAM,MAEiB,MAA5B,OAAK1E,sBACL,OAAKA,oBAAoB7L,cACzB,OAAK6L,oBAAsB,QAjBU,GAyB/B+E,WAAQ,0DAClB,MAAMI,IAAM,6BACZ,IAAIC,QAAU,GAEVA,SAD6C,IAA7C,OAAKjF,QAAQkF,cAAcrnC,SAAS,KAC1B,OAAKmiC,QAAQkF,cAAgB,IAAMF,IAEnC,OAAKhF,QAAQkF,cAAgBF,IAG3C,OAAK/G,sBAAwB,GAC7B,MAAMkH,KAAO,OAEP/qC,QAAe,CACrBA,QAAkB,IAClBA,QAAQA,QAAQgrC,cAAgBD,KAAKnF,QAAQD,oBAC7C,IAAK,MAAOxkC,IAAKquB,SAAUub,KAAKnF,QAAQqF,kBACpCjrC,QAAQA,QAAQmB,KAAOquB,MAG3B,OAAO,IAAIwK,SAAsB,SAAUC,QAASK,QAChDyQ,KAAKb,WAAa,IAAIgB,YAAAA,EAAoBL,QAAS7qC,SACnD+qC,KAAKb,WAAWiB,QAAM,uBAAG,gBAEzBJ,KAAKb,WAAWkB,QAAO,6CAAG,UAAO1qC,SAEvBqqC,KAAKnC,oBAAoB7V,gBAAgBE,iBAClD,wDAHsB,GAKvB8X,KAAKb,WAAWmB,UAAS,6CAAG,UAAOnpC,QAC/B,MAAMwlB,KAAOhmB,KAAKC,MAAMO,OAAOwlB,MACzB6hB,GAAK,IAAI7M,wBAEf,GADA6M,GAAGzJ,WAAWpY,MACVqjB,KAAKpD,mBAAmB4B,IAExB,IAEI,MAAMrU,kBAAoB6V,KAAKtD,wBACzB3S,WAAaI,YAAY2I,SAAiB,eAC1CyN,OAASpW,YAAYyK,eAA0CjD,wBAAa,sBAC5EqO,KAAKvF,qCAAqCxM,SAAS+R,KAAKlH,wBAEJ,IAAtDkH,KAAKtF,qBAAqB9L,yBACtBoR,KAAKZ,MACLY,KAAKZ,IAAIQ,QACTI,KAAKZ,IAAM,MAEf7P,OAAO,IAAI1F,aAAaF,4BAAAA,WAA2B,GAAI,MAAM,KAEzDI,aAAeJ,4BAAAA,IACXqW,KAAKb,aACLa,KAAKb,WAAWS,QAChBI,KAAKb,WAAa,MAEtB5P,OAAO,IAAI1F,aAAaF,4BAAAA,aAA6B4W,OAAO3lC,WAAY,MAAM,YAExEolC,KAAKnC,oBAAoB7V,gBAAgBgW,WAC/C9O,QAAQ,IAAIrF,aAAaF,4BAAAA,GAAmB,KAAM,MAAM,KAGlE,MAAOh0B,GACDqqC,KAAKb,aACLa,KAAKb,WAAWS,QAChBI,KAAKb,WAAa,MAEtB5P,OAAO,IAAI1F,aAAaF,4BAAAA,aAA6B,KAAM,MAAM,QAG5E,yDAvCwB,QA5BX,GAuER4V,iBAAc,0DACxB,MAAMM,IAAM,mCACZ,IAAIC,QAAU,GAEVA,SAD6C,IAA7C,OAAKjF,QAAQkF,cAAcrnC,SAAS,KAC1B,OAAKmiC,QAAQkF,cAAgB,IAAMF,IAEnC,OAAKhF,QAAQkF,cAAgBF,IAG3CC,QAAUA,QAAQlrC,QAAQ,OAAQ,MAElC,OAAKkkC,sBAAwB,GAC7B,MAAM7jC,QAAe,GACrBA,QAAQgrC,cAAgB,OAAKpF,QAAQD,oBACrC,IAAK,MAAOxkC,IAAKquB,SAAU,OAAKoW,QAAQqF,kBACpCjrC,QAAQmB,KAAOquB,MAEnB,MAAM+b,aAAe7pC,KAAK0d,UAAUpf,SACpC6qC,QAAUA,QAAU,YAAcU,aAElC,MAAMR,KAAO,OACb,OAAO,IAAI/Q,SAAsB,SAAUC,QAASK,QAChDyQ,KAAKZ,IAAM,IAAIqB,UAAUX,SACrBE,KAAKZ,MACLY,KAAKZ,IAAIkB,UAAS,6CAAG,UAAgBxoC,OACjC,MAAM6kB,KAAOhmB,KAAKC,MAAMkB,MAAM6kB,MACxB6hB,GAAK,IAAI7M,wBAEf,GADA6M,GAAGzJ,WAAWpY,MACVqjB,KAAKpD,mBAAmB4B,IAExB,IAEI,MAAMrU,kBAAoB6V,KAAKtD,wBACzB3S,WAAaI,YAAY2I,SAAiB,eAC1CyN,OAASpW,YAAYyK,eAA0CjD,wBAAa,sBAC5EqO,KAAKvF,qCAAqCxM,SAAS+R,KAAKlH,wBAGJ,IAAtDkH,KAAKtF,qBAAqB9L,yBACtBoR,KAAKZ,MACLY,KAAKZ,IAAIQ,QACTI,KAAKZ,IAAM,MAEf7P,OAAO,IAAI1F,aAAaF,4BAAAA,WAA2B,GAAI,MAAM,KAEzDI,aAAeJ,4BAAAA,IACXqW,KAAKZ,MACLY,KAAKZ,IAAIQ,QACTI,KAAKZ,IAAM,MAEf7P,OAAO,IAAI1F,aAAaF,4BAAAA,aAA6B4W,OAAO3lC,WAAY,MAAM,YAExEolC,KAAKnC,oBAAoB7V,gBAAgBgW,WAC/C9O,QAAQ,IAAIrF,aAAaF,4BAAAA,GAAmB,KAAM,MAAM,KAGlE,MAAOh0B,GACDqqC,KAAKZ,MACLY,KAAKZ,IAAIQ,QACTI,KAAKZ,IAAM,MAEf7P,OAAO,IAAI1F,aAAaF,4BAAAA,aAA6B,KAAM,MAAM,QAG5E,yDAxCiB,GA0ClBqW,KAAKZ,IAAIsB,QAAO,6CAAG,UAAgB5oC,aACzBkoC,KAAKnC,oBAAoB7V,gBAAgBE,iBAClD,yDAFe,GAIhB8X,KAAKZ,IAAIiB,QAAO,6CAAG,UAAgBvoC,OAC3BkoC,KAAKrF,0BAA4B3S,gBAAgBmW,aACjD5O,OAAO,IAAI1F,aAAaF,4BAAAA,UAA0B,GAAI,MAAM,WAEtDqW,KAAKnC,oBAAoB7V,gBAAgBE,cAC/CgH,QAAQ,IAAIrF,aAAaF,4BAAAA,aAA6B,GAAI,MAAM,QAEvE,yDAPe,SAtEA,IEnK1B,MAAOgX,QAAO,SACJ,KAAA/F,oBAAsB,gBAAe,UACrC,KAAAgG,uBAAyB,mBAAkB,UAC3C,KAAAC,uBAAyB,mBAAkB,UAC3C,KAAAC,mCAAqC,+BAA8B,UACnE,KAAAC,qBAAuB,iBAAgB,UACvC,KAAAC,gBAAkB,YAAW,UAC7B,KAAAC,yBAA2B,qBAAoB,UAC/C,KAAAC,qBAAuB,iBAAgB,UACvC,KAAAC,kBAAoB,cAAa,WACjC,KAAAC,0BAA4B,yBCEtC,MAAOC,eAeEtB,oBACP,OAAOxrC,KAAK+sC,eAGLpB,wBACP,OAAO3rC,KAAKgtC,mBAGLC,cACP,MAAMrqC,OAAS5C,KAAKgtC,mBAAmBjrC,IAAI,eAC3C,OAAIa,QAGO,UAIJqqC,YAAQ/c,OACflwB,KAAKktC,oBAAoB,cAAehd,OAKjCmW,0BACP,OAAOrmC,KAAKmtC,qBAGL9G,wBAAoBnW,OAC3BlwB,KAAKmtC,qBAAuBjd,MAC5BlwB,KAAKotC,cAAc/G,oBAAsBnW,MAKlCoU,2BACP,OAAOtkC,KAAKotC,cAAc9I,qBAGnBQ,iBACP,OAAO9kC,KAAKqtC,YAGLvI,eAAW5U,OAClBlwB,KAAKqtC,YAAcnd,MACnBlwB,KAAKotC,cAActI,WAAa5U,MAGzB6U,iBACP,OAAO/kC,KAAKstC,YAGLvI,eAAW7U,OAClBlwB,KAAKqtC,YAAcnd,MACnBlwB,KAAKotC,cAAcrI,WAAa7U,MAGzBqd,eACP,OAAOvtC,KAAKotC,cAchBxtC,YAAYmrC,gBAA2BE,WApF7B,KAAAuC,cAAgB,IAEhB,KAAAT,eAAiB,GAEjB,KAAAC,mBAAqB,IAAIrnC,IACzB,KAAAwnC,qBAAuB,GACvB,KAAAE,YAAc,EACd,KAAAC,YAAc,EA2BjB,KAAAG,kBAAmB,EAuCnB,KAAA3C,aAAc,EACd,KAAAC,iBAAkB,EAClB,KAAAE,WAAY,EACZ,KAAAyC,gCAAiC,EASpC1tC,KAAKitC,QAAU,UACfjtC,KAAK2tC,sBAAwB,oBAC7B3tC,KAAK4tC,uBAAyB,WACP7tC,MAAnBgrC,kBACA/qC,KAAK+qC,gBAAkBA,iBAEVhrC,MAAbkrC,YACAjrC,KAAKirC,UAAYA,WAErBjrC,KAAK6tC,gBAOF9qC,qCAAqC+qC,SAAyBC,UAIjE,OAHgB,MAAZA,WACAA,SAAW,IAER,SAAWC,OAAOC,KAAKH,SAAW,IAAMC,UAG5ChrC,qCAAqCmrC,OACxC,MAAO,SAAWA,MAGfnrC,sBAAsBorC,OACzB,OAAc,OAAVA,MACOA,MAAM9tC,QAAQ,kBAAmB,IAErC,UAOJwtC,gBACH7tC,KAAKotC,cAAgB,IAAI/I,SAASrkC,MAGzB2mC,eAAY,+DACf,MAAKyG,cAAczG,iBADJ,GAKlByH,gBAAgB9C,IAAawC,SAAyBC,SAAyBM,oBAClFruC,KAAK+sC,eAAiBzB,KACJ,IAAbwC,SACD9tC,KAAKqmC,oBAAsByG,eAAewB,8BAA8BR,SAAUC,UAE9EM,qBACAruC,KAAKqmC,oBAAsBgI,oBAK1BE,oCACTzZ,OACAwW,IACA7pC,KACAjB,aACA85B,aAA8C,0DAE9C,aAAa,OAAKkU,4BAA4B1Z,OAAQwW,IAAK7pC,KAAM64B,YAAa95B,gBAFhC,GAKrC4oC,oBAAoBtU,OAAgBwW,IAAa7pC,KAAqB64B,aAA8C,0DAC7H,aAAa,OAAKkU,4BAA4B1Z,OAAQwW,IAAK7pC,KAAM64B,eAD4D,GAIzHkU,4BACJ1Z,OACAwW,IACA7pC,KACA64B,YACA95B,cAAoE,gBAEpE,IAAIiuC,wBACJ,OAAO,IAAI/T,QAAO,4CAAe,UAAOC,QAASK,QAC7C,IACI,IAAIuQ,QAAU,IACc,IAAxBD,IAAIoD,WAAW,OACfpD,IAAMA,IAAInJ,UAAU,IAGpBoJ,SADqC,IAArC,OAAKC,cAAcrnC,SAAS,KAClB,OAAKqnC,cAAgB,IAAMF,IAE3B,OAAKE,cAAgBF,IAGnC,MAAMqD,eAA8B,IAAIC,QACxC,GAA6B,QAAzB9Z,OAAO5D,eAA2Bqa,QAAQvnC,OAAS,OAAKwpC,cAAe,CAEvE1Y,OAAS,OACT,MAAM+Z,SAAWtD,QAAQza,MAAM,KAC/Bya,QAAUsD,SAAS,GACnB,MAAM5E,GAAK,IAAI7M,wBACf6M,GAAGpL,SAAS,QAASgQ,SAAS,IAC9BptC,KAAOwoC,GAAG5jC,WACVsoC,eAAeG,OAAO,yBAA0B,QAGtB,IAA1B,OAAKrB,kBACLkB,eAAevoC,IAAI,mBAAoB,eAG3CuoC,eAAevoC,IAAI,eAAgB,qBAC9B,OAAKsnC,gCAAkC,OAAKrH,oBAAoBriC,OAAS,GAC1E2qC,eAAevoC,IAAI,gBAAiB,OAAKigC,qBAE7C,IAAK,MAAOxkC,IAAKquB,SAAU,OAAK8c,mBAC5B2B,eAAevoC,IAAIvE,IAAKquB,OAGC,QAAzB4E,OAAO5D,eAAoC,OAATzvB,OAClCA,KAAO,MAGX,MAAMstC,YAA2B,CAC7Bja,OACAp0B,QAASiuC,eACTltC,MAEJ,GAAI64B,YAAa,CACb,MAAM0U,WAAa,IAAIC,iBACM,IAAzB3U,YAAYH,SACZlD,YAAW,IAAM+X,WAAWE,SAAS5U,YAAYH,SAErDsU,wBAA0BnU,YAAYC,UAAS,IAAMyU,WAAWE,UAChEH,YAAYI,OAASH,WAAWG,OAGpC,IAAIC,aACJ,MAAMC,oBAAsBC,MAAM/D,QAASwD,aAC3C,GAA4B,OAAxBM,eAAe5tC,KAGf,OAFA2tC,aAAe,IAAI9Z,aAAaF,4BAAAA,4BAChCuF,QAAQyU,cAIZ,GAAIC,cAAc/tC,SAAW8zB,4BAAAA,gBAAgC,CAGzD,YADA4F,OADiB,IAAI1F,aAAaF,4BAAAA,gBAAgC,KAAM,MAAM,IAKlF,IAAIma,aAA2B,KAC/B,GAAI/uC,aACA,OAAQA,cACJ,IAAK,cACD+uC,mBAAqBF,cAAcG,cACnC,MAEJ,IAAK,OACDD,mBAAqBF,cAAcpsC,OACnC,MAEJ,IAAK,WACDssC,mBAAqBF,cAAcI,WACnC,MAEJ,IAAK,OACDF,mBAAqBF,cAAc1mB,OAO1C4mB,eACDA,mBAAqBF,cAAcnkB,QAGvCyP,QADiB,IAAIrF,aAAa+Z,cAAc/tC,OAAQiuC,aAAc,CAAEluC,SAAUguC,cAAe7uC,eAAgB,IAEnH,MAAOY,GACL45B,OAAO55B,GACT,QACEqtC,gCAEP,2DArGiB,IAwGTiB,qBACTpE,IACAqE,KACAluC,KACAqiC,SACAxJ,aAA8C,0DAE9C,MAAMsV,YAAc,IAAIlO,gBAKxB,IAAI+M,wBACJ,OALAmB,YAAY7N,SAAYpZ,OACpBmb,SAASnb,OAIN,IAAI+R,QAAO,6CAAe,UAAOC,QAASK,QAC7C,IACI,IAAIuQ,QAAU,IACc,IAAxBD,IAAIoD,WAAW,OACfpD,IAAMA,IAAInJ,UAAU,IAGpBoJ,SADqC,IAArC,OAAKC,cAAcrnC,SAAS,KAClB,OAAKqnC,cAAgB,IAAMF,IAE3B,OAAKE,cAAgBF,IAGnC,MAAMqD,eAA8B,IAAIC,SACnC,OAAKlB,gCAAkC,OAAKrH,oBAAoBriC,OAAS,GAC1E2qC,eAAevoC,IAAI,gBAAiB,OAAKigC,qBAE7CsI,eAAevoC,IAAI,eAAgB,4BACnCuoC,eAAevoC,IAAI,uBAAwB,QAC3C,IAAK,MAAOvE,IAAKquB,SAAU,OAAK8c,mBAC5B2B,eAAevoC,IAAIvE,IAAKquB,OAGD,QAAvByf,KAAKze,eAAoC,OAATzvB,OAChCA,KAAO,MAGX,MAAMstC,YAA2B,CAC7Bja,OAAQ6a,KACRjvC,QAASiuC,eACTltC,MAGJ,GAAI64B,YAAa,CACb,MAAM0U,WAAa,IAAIC,iBACM,IAAzB3U,YAAYH,SACZlD,YAAW,IAAM+X,WAAWE,SAAS5U,YAAYH,SAErDsU,wBAA0BnU,YAAYC,UAAS,IAAMyU,WAAWE,UAChEH,YAAYI,OAASH,WAAWG,OAGpC,IAAIC,aACJ,MAAMC,oBAAsBC,MAAM/D,QAASwD,aAC3C,GAA2B,OAAvBM,cAAc5tC,KAGd,OAFA2tC,aAAe,IAAI9Z,aAAaF,4BAAAA,4BAChCuF,QAAQyU,cAGZ,GAAIC,cAAc/tC,SAAW8zB,4BAAAA,gBAAgC,CAGzD,YADA4F,OADiB,IAAI1F,aAAaF,4BAAAA,gBAAgC,KAAM,MAAM,IAKlF,MAAMhyB,OAASisC,cAAc5tC,MAAMouC,YACnC,OAAa,CACT,MAAMjtC,aAAeQ,OAAO0sC,OAC5B,GAAIltC,OAAOmtC,KAGP,OAFAX,aAAe,IAAI9Z,aAAa+Z,cAAc/tC,aAC9Cq5B,QAAQyU,cAGZ,MAAMlkB,KAAO,IAAI8kB,YAAY,SAASC,OAAOrtC,OAAOstB,OACpD0f,YAAYvtC,MAAM6oB,OAExB,MAAO9pB,GACL45B,OAAO55B,GACT,QACEqtC,gCAEP,6DAtEiB,MAR4B,GAiFrCyB,sBAAsB5V,aAA8C,0DAC7E,MAAMmR,KAAO,OACb,OAAO,IAAI/Q,QAAO,6CAAe,UAAgBC,QAASK,QACtD,MAAQV,cAAuD,IAAxCA,YAAYD,yBAC/B,IACI,MAAMh5B,eAAiBoqC,KAAKrC,oBAAoB,MAAOqC,KAAKmC,uBAAwB,KAAMtT,aAC1F,OAAQj5B,SAASm0B,YACb,KAAKJ,4BAAAA,GAKL,KAAKA,4BAAAA,UACL,KAAKA,4BAAAA,aAED,YADAuF,QAAQt5B,UAIZ,cACUkkC,WAAmB,MAInC,MAAOnkC,SACCmkC,WAAmB,KAGjC5K,QAAQ,IAAIrF,aAAaF,4BAAAA,gBAAgC,KAAM,MAAM,OACxE,6DA1BiB,MAF2D,GA+B1E8X,oBAAoBiD,UAAmBC,YAAqBC,WAAY,GAC3E,MAAMngB,OAAsB,IAAdmgB,UAAqBvD,eAAewD,eAAeF,aAAeA,YAChFpwC,KAAKgtC,mBAAmB5mC,IAAI+pC,UAAWjgB,OAGpCqgB,mBAAmBC,kBAA2BC,KACjDzwC,KAAKktC,oBAAoBd,QAAQG,mCAAoCiE,mBAAmB,GACxFxwC,KAAKktC,oBAAoBd,QAAQI,qBAAsBiE,KAAK,GAGnDjG,mBAAmBlQ,aAA8C,0DAC1E,aAAa,OAAK8S,cAAc5C,mBAAmBlQ,eADuB,GAIjEsM,oBAAiB,0DAC1B,aAAa,OAAKwG,cAAcxG,sBADN,GAIvB8J,qBACH1wC,KAAKotC,cAActG,qBAGVC,uBAAuBlE,QAAmB,gEAC7C,OAAKuK,cAAcrG,uBAAuBlE,UADG,GAI1CsE,yBAAyBtE,QAAmB,2DACrD,aAAa,QAAKuK,cAAcjG,yBAAyBtE,UADJ,GAI5CuE,8BAA8BC,WAAqB,2DAC5D,aAAa,QAAK+F,cAAchG,8BAA8BC,aADF,GAInDK,yBAAyBlkB,GAAYniB,UAAgB,2DAC9D,aAAa,QAAK+rC,cAAc1F,yBAAyBlkB,GAAIniB,YADC,GAIrDsmC,kCAAkCnkB,GAAY2W,SAAe,2DACtE,aAAa,QAAKiT,cAAczF,kCAAkCnkB,GAAI2W,WADA,GAI7DyN,qBAAqBC,iBAA4B,2DAC1D,aAAa,QAAKuF,cAAcxF,qBAAqBC,mBADK,GAIjDC,qBAAqBllC,QAAmB,2DACjD,aAAa,QAAKwqC,cAActF,qBAAqBllC,UADJ,GAIxCmlC,wBAAwBnlC,QAAmB,2DACpD,aAAa,QAAKwqC,cAAcrF,wBAAwBnlC,UADJ,GAI3ColC,4BAA4BnT,MAAeC,OAAgBC,OAAgBC,OAAgBC,QAAc,2DAClH,aAAa,QAAKmY,cAAcpF,4BAA4BnT,MAAOC,OAAQC,OAAQC,OAAQC,UADuB,GAIzG0V,uBAAoB,2DAC7B,OAAO,QAAKyC,cAAczC,yBADG,GAIpB1C,wBAAqB,2DAE9B,aADqB,QAAKmF,cAAcnF,0BADV,GAS3B0I,yBAAyBja,SAC5B,OAAO12B,KAAKotC,cAAc9H,gCAAgC3N,UAAUjB,SAGjEka,oBAAoBla,SACvB,OAAO12B,KAAKotC,cAAc5H,qCAAqC7N,UAAUjB,SAGtEma,cAAcna,SACjB,OAAO12B,KAAKotC,cAAc3H,+BAA+B9N,UAAUjB,SAGhEoa,gBAAgBpa,SACnB,OAAO12B,KAAKotC,cAAc1H,iCAAiC/N,UAAUjB,SAGlEqa,gBAAgBra,SACnB,OAAO12B,KAAKotC,cAAczH,yBAAyBhO,UAAUjB,SAG1Dsa,iBAAiBta,SACpB,OAAO12B,KAAKotC,cAAcxH,0BAA0BjO,UAAUjB,SAG3Dua,gBAAgBva,SACnB,OAAO12B,KAAKotC,cAAcvH,yBAAyBlO,UAAUjB,SAG1Dwa,kBAAkBxa,SACrB,OAAO12B,KAAKotC,cAActH,2BAA2BnO,UAAUjB,SAG5Dya,4BAA4Bza,SAC/B,OAAO12B,KAAKotC,cAAcrH,qCAAqCpO,UAAUjB,SAGtE0a,gCAAgC1a,SACnC,OAAO12B,KAAKotC,cAAcpH,iDAAiDrO,UAAUjB,SAGlF2a,oBAAoB3a,SACvB,OAAO12B,KAAKotC,cAAclH,qCAAqCvO,UAAUjB,UChgB1E,IAAK4a,WAKX,MALD,SAAYA,YACVA,WAAAA,WAAAA,SAAAA,GAAAA,WACAA,WAAAA,WAAAA,UAAAA,GAAAA,YACAA,WAAAA,WAAAA,YAAAA,GAAAA,cACAA,WAAAA,WAAAA,WAAAA,GAAAA,aAJF,CAAYA,aAAAA,WAAU,KAAVA,YAKX,GAEK,MAAOC,sBAGX3xC,YAAYkpB,OACV9oB,KAAK8oB,MAAQA,MAGR0oB,WACL,OAAOxxC,KAAK8oB,QAAUwoB,WAAWG,UAAYzxC,KAAK8oB,QAAUwoB,WAAWI,YCbrE,MAAOC,cAAb/xC,cACW,KAAA+vC,KAAO,MACP,KAAAluC,KAAsB,KACnB,KAAAmwC,KAAO,GAEN3tC,UACP,OAAOjE,KAAK4xC,KAGL3tC,QAAIisB,OACXlwB,KAAK4xC,KAAO1hB,MAGT7pB,WACH,OAAOjE,KAAK0d,UAAU,CAAE6vB,KAAM3vC,KAAK2vC,KAAM1rC,IAAKjE,KAAK2vC,KAAMluC,KAAMzB,KAAKyB,QAItE,MAAOowC,8BAA8BF,cAA3C/xC,c,oBACW,KAAAkyC,WAAiC,KAE7B7tC,UACP,IAAKjE,KAAK8xC,WACN,MAAM,IAAIhzC,MAAM,sBAEpB,OAAOkB,KAAK8xC,WAAWC,QAAU,IAAM/xC,KAAK4xC,KAGrC3tC,QAAIisB,OACXlwB,KAAK4xC,KAAO1hB,OC1Bd,MAAO8hB,oBAeEC,wBACP,OAAOjyC,KAAKkyC,mBAGLC,eACP,OAAOnyC,KAAKoyC,UAShBxyC,YAAYolC,OAAqBmN,SAAkBE,UAA0BC,SAAmBC,kBANzF,KAAAC,SAAU,EAObxyC,KAAKkyC,mBAAqB,IAAIrW,UAC9B77B,KAAKsmC,QAAUtB,OACfhlC,KAAKoyC,UAAYD,SAEbnyC,KAAKyyC,WADLJ,WAGkB,GAEtBryC,KAAK0yC,UAAYJ,SACjBtyC,KAAK2yC,kBAAoBJ,iBAOtBK,qBAAqBT,SAAkBxC,KAAcluC,MACxD,IAAqB,IAAjBzB,KAAKwyC,QACL,MAAM,IAAI1zC,MAAM,yDAGpB,MAAM+zC,UAAY,IAAIhB,sBACtBgB,UAAUf,WAAa9xC,KAAKsmC,QAC5BuM,UAAU5uC,IAAMkuC,SAChBU,UAAUlD,KAAOA,KACjBkD,UAAUpxC,KAAOA,KACjBzB,KAAKkyC,mBAAmBlW,IAAI6W,WAGzBC,oBAAoBC,aACvB,IAAqB,IAAjB/yC,KAAKwyC,QACL,MAAM,IAAI1zC,MAAM,yDAGpB,IAAK,MAAM+zC,aAAa7yC,KAAKkyC,mBACzBa,YAAYC,wBAAwBH,UAAU5uC,IAAK4uC,UAAUlD,KAAMkD,UAAUpxC,OC7DnF,MAAOwxC,mCAAkFjB,oBAc3FpyC,YAAY0gC,UAAwB0E,OAAqBmN,SAAkBE,UAAmBC,SAAmBC,kBAC7G1vC,MAAMmiC,OAAQmN,SAAUE,UAAWC,SAAUC,kBAZvC,KAAAW,SAA2C,KAajDlzC,KAAKmzC,WAAa7S,UAOT8S,gBAAa,yDACtB,GAAqB,MAAjB,MAAKF,SAAkB,CAavB,GAZA,MAAKA,SAAW,IAAIpW,2CACf17B,IACG,MAAK27B,QAAQ37B,MAEhBA,IACG,MAAK47B,UAAU57B,MAEnB,KACI,MAAK67B,eAGb,MAAKiW,SAAShW,SAAU,GACiB,IAArC,MAAKoJ,QAAQ+M,oBAA8B,CAC3C,MAAMhyC,eAAiB,MAAKilC,QAAQ8C,oBAAoB,MAAO,MAAK+I,SAAU,KAAM,IAAIjY,mBACxF,MAAKoZ,cAAcjyC,UAEvB,MAAK6xC,SAAShW,SAAU,EAE5B,OAAO,MAAKgW,WApBU,GAuBbK,qBAAqBR,aAAyB,0DAevD,IAdyC,IAArC,OAAKzM,QAAQ+M,sBACb,OAAKH,SAAW,IAAIpW,2CACf17B,IACG,OAAK27B,QAAQ37B,MAEhBA,IACG,OAAK47B,UAAU57B,MAEnB,KACI,OAAK67B,gBAKI,MAAjB,OAAKiW,SAaL,YAVAH,YAAYC,wBAAiD,GAAI,GAAI,MAAO3xC,UACjE,IAAIq5B,SAAQ,CAACC,QAASK,UACJ,MAAjB,OAAKkY,SAITlY,OAAO,4BAHHL,QAAQ,OAAKuY,eASzB,OAAKA,SAAW,IAAIpW,2CACf17B,IACG,OAAK27B,QAAQ37B,MAEhBA,IACG,OAAK47B,UAAU57B,MAEnB,KACI,OAAK67B,eAKjB,MAAMh5B,IAAM,OAAKqiC,QAAQyL,QAAU,IAAM,OAAKI,SAC9CY,YAAYC,wBAAiD/uC,IAAK,MAAO,MAAO5C,UACrE,IAAIq5B,SAAQ,CAACC,QAASK,UACzB,IAAK,OAAKkY,SACN,MAAM,IAAIp0C,MAAM,eAEpB,IACQuC,SAASI,OACT,OAAKyxC,SAAShW,SAAU,EACxB,OAAKoW,cAAcjyC,UACnB,OAAK6xC,SAAShW,SAAU,GAE5BvC,QAAQ,OAAKuY,UACf,MAAO9xC,GACL45B,OAAO55B,WAzDoC,GAgEnDkyC,cAAcjyC,UAClB,GAAIA,SAASI,KAAM,CACf,IAAKzB,KAAKkzC,SACN,MAAM,IAAIp0C,MAAM,4BAGpB,IAAK,MAAM0hB,QAAQnf,SAASI,KAAM,CAC9B,MAAM8+B,MAAQ,IAAIvgC,KAAKmzC,WACvB5S,MAAM7C,SAAW19B,KAAKsmC,QACtB/F,MAAMC,WAAWhgB,MACjBxgB,KAAKkzC,SAASlX,IAAIuE,OAClBA,MAAMtC,mBAAmBuV,cACrB,MAAMhwB,GAAKgwB,YAAYjV,SAASv+B,KAAKyyC,YACrC,IAAIgB,GAAKzzC,KAAKoyC,UAAY,IAAM5uB,GAChCiwB,GAAKA,GAAGntC,cACR,MAAMotC,MAAQ1zC,KAAKiyC,kBAAkBvV,gBAAgB4E,GAA+B,QAAzBA,EAAEqO,KAAKrpC,eAA2Bg7B,EAAEr9B,IAAIqC,cAAcnC,SAASsvC,MACtHC,QACAA,MAAMjyC,KAAO+xC,aAEjBxzC,KAAK4yC,qBAAqBa,GAAI,MAAOD,kBAM9CzW,QAAQ4W,SACX,IAAuB,IAAnB3zC,KAAK0yC,UACL,MAAM,IAAI5zC,MAAM,+BAEpBkB,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAW,OAAQuB,SAG/C3W,UAAU2W,SACb,MAAMnwB,GAAKmwB,QAAQpV,SAASv+B,KAAKyyC,YACjCzyC,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAY,IAAM5uB,GAAI,SAAU,MAG5DyZ,YACHj9B,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAW,SAAU,OC7JtD,MAAOwB,UAUAC,aACT,OAAO7zC,KAAKq9B,QAAQh+B,SAOtBO,eAAeuhC,QAfP,KAAA9D,QAAU,IAAIT,IACd,KAAAkX,eAAiB,IAAIlX,IAAY,CAAC,KAAM,OAAQ,oBAevC78B,IAAXohC,QAA0C,IAAlBA,OAAOn9B,OACjChE,KAAKq9B,QAAQrB,IAAI,KAEjBh8B,KAAK+zC,YAAY5S,QAQd4S,YAAY5S,QACjB,IAAK,MAAM2I,OAAO3I,OAAQ,CACxB,MAAM6S,UAAYlK,IAAIxjC,cAAc2tC,OAChCD,UAAUhwC,OAAS,IAAqC,IAAhChE,KAAKq9B,QAAQpF,IAAI+b,YAC3Ch0C,KAAKq9B,QAAQrB,IAAIgY,WAIrB,IAAIh0C,KAAKq9B,QAAQpF,IAAI,KAKrB,IAAK,MAAMic,SAASl0C,KAAK8zC,eAClB9zC,KAAKq9B,QAAQpF,IAAIic,QACpBl0C,KAAKq9B,QAAQrB,IAAIkY,OAKhB7tC,WACL,IAAIzD,OAAS,GACb,IAAK,MAAMsxC,SAASl0C,KAAKq9B,QACnBz6B,OAAOoB,OAAS,EAClBpB,OAASA,OAAS,IAAMsxC,MAExBtxC,QAAkBsxC,MAGtB,OAAOtxC,QC3DL,MAAOuxC,YACJC,cAAcjK,MAAe6J,UAAmBK,MACrD,GAAIA,KAAKvY,KAAO,EAAG,CAEfqO,OAD0B,IAAxBA,MAAMhmC,SAAS,KACTgmC,MAAQ,IAAM6J,UAAY,IAE1B7J,MAAQ6J,UAAY,IAG9B,IAAIM,MAAQ,EAEZ,IAAK,MAAM7X,QAAQ4X,KACbC,MAAQ,EACVnK,MAAQA,MAAQ,IAAM1N,KAEtB0N,OAAgB1N,KAElB6X,QAGJ,OAAOnK,MAGFoK,oBAAoBpK,MAAe6J,UAAmB3S,KAC3D,GAAIA,IAAIvF,KAAO,EAAG,CAEdqO,OAD0B,IAAxBA,MAAMhmC,SAAS,KACTgmC,MAAQ,IAAM6J,UAAY,IAE1B7J,MAAQ6J,UAAY,IAG9B,MAAMhxC,IAAW,GACjB,IAAK,IAAI+C,SAASs7B,IACS,iBAAbt7B,MAAM,GAEhB/C,IAAI+C,MAAM,IAAMY,MAAMC,KAAKb,MAAM,IAEjC/C,IAAI+C,MAAM,IAAMA,MAAM,GAK1BokC,OADa/nC,KAAK0d,UAAU9c,KAG9B,OAAOmnC,MAGFqK,UAAUrK,MAAe6J,UAAmB9jB,OACjD,GAAIia,MAAMnmC,OAAS,QAAejE,IAAVmwB,MAAqB,CAC3C,IAAIukB,MAAQvkB,MACRwkB,SAAW,GAGbA,SAFKD,YAAmC10C,IAAtB00C,MAAMrV,aACxBsV,SAAWD,MAAMrV,eACG/+B,QAAQ,IAAK,SAEtB6vB,MAAM7pB,WAGjB8jC,OAD0B,IAAxBA,MAAMhmC,SAAS,KACTgmC,MAAQ,IAAM6J,UAAY,IAAMU,SAEhCvK,MAAQ6J,UAAY,IAAMU,SAGtC,OAAOvK,MAGFwK,qBAAqBxK,MAAe6J,UAAmBK,MAC5D,GAAIA,KAAKvY,KAAO,EAAG,CAEfqO,OAD0B,IAAxBA,MAAMhmC,SAAS,KACTgmC,MAAQ,IAAM6J,UAAY,IAE1B7J,MAAQ6J,UAAY,IAG9B,MAAM7W,MAAkB,GACxB,IAAK,MAAMV,QAAQ4X,KACjBlX,MAAMxe,KAAK8d,KAAKp2B,YAGlB8jC,OAAS/nC,KAAK0d,UAAUqd,OAE1B,OAAOgN,OC1EL,MAAOyK,oBCJP,MAIJh1C,YAAYi1C,WAFF,KAAAC,aAAe,IAAIX,YAMzBn0C,KAAK+0C,WAHFF,WACe,cAMfG,aAEL,OADch1C,KAAK+0C,WAAa,IAI3BE,kBDeLr1C,YAAYi1C,WACRhyC,MAAMgyC,WA1BH,KAAAK,kBAAoB,IAAIC,SAAAA,QAGxB,KAAAC,iBAAmB,IAAID,SAAAA,QACvB,KAAAE,eAAiB,IAAI1vC,IACrB,KAAA68B,YAAc,IAAI5F,IAClB,KAAA0Y,cAAgB,IAAIH,SAAAA,QAEpB,KAAAhU,OAAS,IAAIvE,IACb,KAAA2Y,MAAQ,IAAIJ,SAAAA,QACZ,KAAAK,cAAgB,IAAIL,SAAAA,QAOpB,KAAAM,YAAc,IAAIN,SAAAA,QAClB,KAAAO,cAAgB,IAAI9Y,IAepBoY,aACHh1C,KAAKi1C,eACL,IAAI9K,MAAQtnC,MAAMmyC,aAqBlB,OApBA7K,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,aAAcnqC,KAAKq+B,YAC9D8L,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,SAAUnqC,KAAKmhC,QAC9DgJ,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,OAAQnqC,KAAK2pB,MACxDwgB,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,YAAanqC,KAAK21C,WAC7DxL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,QAASnqC,KAAKu1C,OAC7DpL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,cAAenqC,KAAKwiC,aACnE2H,MAAQnqC,KAAK80C,aAAaP,oBAAoBpK,MAAO,iBAAkBnqC,KAAKq1C,gBAC5ElL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,cAAenqC,KAAKy1C,aACnEtL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,oBAAqBnqC,KAAKk1C,mBACzE/K,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,OAAQnqC,KAAK41C,MACxDzL,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,WAAYnqC,KAAK61C,UAC5D1L,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,YAAanqC,KAAK81C,WAC7D3L,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,sBAAuBnqC,KAAK+1C,qBACvE5L,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,iBAAkBnqC,KAAKg2C,gBAClE7L,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,OAAQnqC,KAAKi2C,MACxD9L,MAAQnqC,KAAK80C,aAAaN,UAAUrK,MAAO,oBAAqBnqC,KAAKk2C,mBACrE/L,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,gBAAiBnqC,KAAK01C,eACrEvL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,gBAAiBnqC,KAAKs1C,eACrEnL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,gBAAiBnqC,KAAKw1C,eACrErL,MAAQnqC,KAAK80C,aAAaV,cAAcjK,MAAO,mBAAoBnqC,KAAKo1C,kBACjEjL,MAOJ8K,eAEH,MAAMkB,GAAK,IAAIvC,aAAa5zC,KAAKmhC,QACjCnhC,KAAKmhC,OAAS,IAAIvE,IAAYuZ,GAAGtC,SEzEnC,MAAOuC,oBAAoBxB,YAC/Bh1C,eAAey2C,SACbxzC,QACA,IAAK,MAAMyzC,KAAKD,QAEdr2C,KAAKmhC,OAAOnF,IAAIsa,GAIbjwC,WACL,IAAI8jC,MAAQtnC,MAAMmyC,aAElB,OADA7K,MAAQA,MAAMhI,UAAUgI,MAAM/Q,QAAQ,MAAM/4B,QAAQ,IAAK,IAClD8pC,OCDL,MAAOoM,4BAA4BvE,oBAY1BwE,wBACP,OAAOx2C,KAAKy2C,mBAOhB72C,YAAY82C,OAA+B1R,OAAqBmN,SAAkBwE,QAAiBrE,SAAmBnI,OASlH,GARAtnC,MAAMmiC,OAAQmN,SAAUwE,QAASrE,UAAU,GAlBrC,KAAAY,SAAiD,KAEjD,KAAA0D,OAA8B,KAiBpC52C,KAAK62C,QAAUH,OAEX12C,KAAK42C,OADLzM,OAGc,IAAIiM,aAGjBp2C,KAAK42C,OAAOzV,OACb,GAA4B,MAAxBuV,OAAOI,cACP92C,KAAK42C,OAAOzV,OAAS,IAAIvE,IAAY8Z,OAAOI,cAAcjD,YACvD,CAEH,MAAMkD,SAAW,IAAInD,UACrB5zC,KAAK42C,OAAOzV,OAAS,IAAIvE,IAAYma,SAASlD,SAIjB,IAAjC7zC,KAAKoyC,UAAUhZ,QAAQ,KACvBp5B,KAAKy2C,mBAAqBz2C,KAAKoyC,UAAY,IAAMpyC,KAAK42C,OAAOvwC,WAE7DrG,KAAKy2C,mBAAqBz2C,KAAKoyC,UAAY,IAAMpyC,KAAK42C,OAAOvwC,WAQxD+sC,gBAAa,yDACtB,GAAqB,MAAjB,MAAKF,SAAkB,CAavB,GAZA,MAAKA,SAAW,IAAIpW,2CACf17B,IACG,MAAK27B,QAAQ37B,MAEhBA,IACG,MAAK47B,UAAU57B,MAEnB,KACI,MAAK67B,eAGb,MAAKiW,SAAShW,SAAU,GACiB,IAArC,MAAKoJ,QAAQ+M,oBAA8B,CAC3C,MAAMhyC,eAAiB,MAAKilC,QAAQ8C,oBAAoB,MAAO,MAAKqN,mBAAoB,KAAM,IAAIvc,mBAClG,GAAI74B,SAASI,KACT,IAAK,MAAM+e,QAAQnf,SAASI,KAAM,CAC9B,MAAMu1C,SAAW,MAAKC,kBAAkBz2B,MACpCw2B,UACA,MAAK9D,SAASlX,IAAIgb,WAKlC,MAAK9D,SAAShW,SAAU,EAE5B,OAAO,MAAKgW,WA3BU,GA8BbK,qBAAqBR,aAAyB,0DAevD,IAdyC,IAArC,OAAKzM,QAAQ+M,sBACb,OAAKH,SAAW,IAAIpW,2CACf17B,IACG,OAAK27B,QAAQ37B,MAEhBA,IACG,OAAK47B,UAAU57B,MAEnB,KACI,OAAK67B,gBAKI,MAAjB,OAAKiW,SAaL,YAVAH,YAAYC,wBAAuD,GAAI,GAAI,MAAM,IACtE,IAAItY,SAAQ,CAACC,QAASK,UACJ,MAAjB,OAAKkY,SAITlY,OAAO,4BAHHL,QAAQ,OAAKuY,eASzB,OAAKA,SAAW,IAAIpW,2CACf17B,IACG,OAAK27B,QAAQ37B,MAEhBA,IACG,OAAK47B,UAAU57B,MAEnB,KACI,OAAK67B,eAKjB,MAAMh5B,IAAM,OAAKqiC,QAAQyL,QAAU,IAAM,OAAKyE,kBAC9CzD,YAAYC,wBAAuD/uC,IAAK,MAAO,MAAO5C,UAC3E,IAAIq5B,SAAQ,CAACC,QAASK,UACzB,IAAK,OAAKkY,SACN,MAAM,IAAIp0C,MAAM,eAEpB,IACI,GAAIuC,SAASI,KAAM,CACf,OAAKyxC,SAAShW,SAAU,EACxB,IAAK,MAAM1c,QAAQnf,SAASI,KAAM,CAC9B,MAAMu1C,SAAW,OAAKC,kBAAkBz2B,MACpCw2B,UACA,OAAK9D,SAASlX,IAAIgb,UAG1B,OAAK9D,SAAShW,SAAU,EAE5BvC,QAAQ,OAAKuY,UACf,MAAO9xC,GACL45B,OAAO55B,WA9DoC,GAqEpD61C,kBAAkBlW,QACrB,OAAO/gC,KAAK62C,QAAQI,kBAA2BC,OAAQnW,QAGpDhE,QAAQ4W,SACX,IAAuB,IAAnB3zC,KAAK0yC,UACL,MAAM,IAAI5zC,MAAM,+BAEpB,MAAM2C,KAAO,IAAI27B,wBACjB37B,KAAKo9B,SAAS7+B,KAAKyyC,WAAYkB,QAAQnwB,IACvCxjB,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAW,OAAQ3wC,MAG/Cu7B,UAAU2W,SACb3zC,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAY,IAAMuB,QAAQnwB,GAAI,SAAU,MAGpEyZ,YACHj9B,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAW,SAAU,OC/KtD,MAAO+E,8BAAiCnF,oBAe1CpyC,YAAYolC,OAAqBmN,SAAkBE,WAC/CxvC,MAAMmiC,OAAQmN,SAAU,MAAM,GAAM,GAb9B,KAAA5pB,MAAkB,KAClB,KAAA6uB,SAAU,EACZ,KAAA5b,SAAW,GAYfx7B,KAAKw7B,SAAW6W,UAOPe,gBAAa,yDACtB,IAAqB,IAAjB,MAAKgE,QACL,IAAyC,IAArC,MAAK9Q,QAAQ+M,oBAA8B,CAC3C,MAAMhyC,eAAiB,MAAKilC,QAAQ8C,oBAAoB,MAAO,MAAKgJ,UAAW,KAAM,IAAIlY,mBACzF,MAAKoZ,cAAcjyC,eAEnB,MAAKknB,MAAQ,KAGrB,OAAO,MAAKA,QATU,GAYbgrB,qBAAqBR,aAAyB,0DAMvD,IALyC,IAArC,OAAKzM,QAAQ+M,sBACb,OAAK9qB,MAAQ,KACb,OAAK6uB,SAAU,IAGE,IAAjB,OAAKA,QAQL,YALArE,YAAYC,wBAAkC,GAAI,GAAI,MAAO3xC,UAClD,IAAIq5B,SAAQ,CAACC,QAASK,UACzBL,QAAQ,OAAKpS,YAMzB,MAAMtkB,IAAM,OAAKqiC,QAAQyL,QAAU,IAAM,OAAKI,SAC9CY,YAAYC,wBAAkC/uC,IAAK,MAAO,MAAO5C,UACtD,IAAIq5B,SAAQ,CAACC,QAASK,UACzB,IACQ35B,SAASI,MACT,OAAK6xC,cAAcjyC,UAEvBs5B,QAAQ,OAAKpS,OACf,MAAOnnB,GACL45B,OAAO55B,WA1BoC,GAiCnDkyC,cAAcjyC,UACdA,SAASI,OACTzB,KAAKuoB,MAAQlnB,SAASI,KAAKzB,KAAKw7B,WAEpCx7B,KAAKo3C,SAAU,GCxEjB,MAAOC,yCAAwFrF,oBAejGpyC,YAAY0gC,UAAwB0E,OAAqBmN,SAAkBmF,iBACvEz0C,MAAMmiC,OAAQmN,SAAU,MAAM,GAAM,GAZhC,KAAA5pB,MAAkB,KAClB,KAAAgvB,kBAAmB,EAYvBv3C,KAAKmzC,WAAa7S,UAClBtgC,KAAKu3C,iBAAmBD,gBAOflE,gBAAa,yDACtB,GAAkB,MAAd,MAAK7qB,QACoC,IAArC,MAAK+d,QAAQ+M,oBAA8B,CAC3C,MAAMhyC,eAAiB,MAAKilC,QAAQ8C,oBAAoB,MAAO,MAAK+I,SAAU,MAC1E9wC,SAASI,OACT,MAAK8mB,MAAQ,IAAI,MAAK4qB,WACtB,MAAK5qB,MAAMmV,SAAW,MAAK4I,QAC3B,MAAK/d,MAAMiY,WAAWn/B,SAASI,MAC/B,MAAK+1C,iBAIjB,OAAO,MAAKjvB,QAZU,GAebgrB,qBAAqBR,aAAyB,0DAKvD,IAJyC,IAArC,OAAKzM,QAAQ+M,sBACb,OAAK9qB,MAAQ,IAAI,OAAK4qB,YAGR,MAAd,OAAK5qB,MASL,YANAwqB,YAAYC,wBAAkC,GAAI,GAAI,MAAO3xC,UAClD,IAAIq5B,SAAQ,CAACC,QAASK,UACzBL,QAAQ,OAAKpS,YAOzB,MAAMtkB,IAAM,OAAKqiC,QAAQyL,QAAU,IAAM,OAAKI,SAE9CY,YAAYC,wBAAkC/uC,IAAK,MAAO,MAAO5C,UACtD,IAAIq5B,SAAQ,CAACC,QAASK,UACzB,IACQ35B,SAASI,OACT,OAAK8mB,MAAQ,IAAI,OAAK4qB,WACtB,OAAK5qB,MAAMmV,SAAW,OAAK4I,QAC3B,OAAK/d,MAAMiY,WAAWn/B,SAASI,MAC/B,OAAK+1C,iBAET7c,QAAQ,OAAKpS,OACf,MAAOnnB,GACL45B,OAAO55B,WA9BoC,GAqCpDq2C,aAAa9H,KAAczf,OAE9B,OADAlwB,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAWzC,KAAe,MAATzf,MAAgB,KAAOA,OAC1D,SAATyf,MAA6B,OAAVzf,OACflwB,KAAKuoB,MAGTvoB,KAAKuoB,MAAQ,IAAIvoB,KAAKmzC,WACtBnzC,KAAKuoB,MAAMmV,SAAW19B,KAAKsmC,QAC3BtmC,KAAKuoB,MAAMsV,SAAS3N,OACpBlwB,KAAKw3C,gBACEx3C,KAAKuoB,OAET2H,MAGHsnB,gBACe,OAAfx3C,KAAKuoB,OAGTvoB,KAAKuoB,MAAM0V,mBAAmBuV,cAC1B,IAA8B,IAA1BxzC,KAAKu3C,iBACL,MAAM,IAAIz4C,MAAM,wBAEpB,GAAmB,OAAfkB,KAAKuoB,MACL,OAEJ,MAAMmrB,MAAQ1zC,KAAKiyC,kBAAkBvV,gBAAgB4E,GAAiB,QAAXA,EAAEqO,OAC/C,OAAV+D,MACAA,MAAMjyC,KAAOzB,KAAKuoB,MAElBvoB,KAAK4yC,qBAAqB5yC,KAAKoyC,UAAW,MAAOpyC,KAAKuoB,WC5GhE,MAAOmvB,oCAAuDnB,oBAahE32C,YAAY0gC,UAAwBoW,OAA+B1R,OAAoBmN,SAAkBwE,QAAiBrE,SAAmBnI,OACzItnC,MAAM6zC,OAAQ1R,OAAQmN,SAAUwE,QAASrE,SAAUnI,OACnDnqC,KAAKmzC,WAAa7S,UAOf2W,kBAAkBlW,QACrB,OAAO/gC,KAAK62C,QAAQI,kBAAkBj3C,KAAKmzC,WAAYpS,SCRzD,MAAO4W,mBAAmBva,wBAejBwa,gBACP,OAAO53C,KAAK63C,WAGLnB,aACP,OAAO12C,KAAK62C,QAGL9Y,cACP,OAAOl7B,MAAMk7B,QAGNA,YAAQ1C,OAEf,GADAx4B,MAAMk7B,QAAU1C,OACF,IAAVA,MAAiB,CACjB,MAAMyc,iBAAmB,IAAIlb,IAC7B,IAAK,MAAO/6B,IAAKk2C,WAAY/3C,KAAK63C,WAC1BE,QAAQ9F,kBAAkBnW,KAAO,IACjCgc,iBAAiB9b,IAAIn6B,KACrBk2C,QAAQvF,SAAU,GAG1B,IAAK,MAAMwF,YAAYF,iBACnB93C,KAAK63C,WAAW5b,OAAO+b,WAKxB3E,0BACP,OAAO,EAGA4E,aACP,OAAOj4C,KAAKk4C,QAOhBt4C,YAAYmyC,SACRlvC,QArDG,KAAAs1C,uBAAyB,EACzB,KAAAC,eAAiB,GAEd,KAAAF,SAAU,EAEZ,KAAArB,QAAwC,KAiD5C72C,KAAK63C,WAAa,IAAIlyC,IACtB3F,KAAK+xC,QAAUA,QAOZsG,iBACHr4C,KAAK63C,WAAW1f,QAGbmgB,YAA2CC,WAAoBR,QAAY1Z,YAK9E,OAJAr+B,KAAKo4C,eAAiBG,WAClBla,aACAr+B,KAAKm4C,uBAAyB9Z,aAEM,IAApCr+B,KAAK63C,WAAW5f,IAAIsgB,aACpBv4C,KAAK63C,WAAWzxC,IAAImyC,WAAYR,SACzBA,SAEJ/3C,KAAK63C,WAAW91C,IAAIw2C,YAGfC,4BACZlY,UACAiY,WACAlG,UACAC,SACAC,iBACAlU,WACA0U,aAAiC,yDAEjC,MAAMgF,QAAU,MAAKO,YACjBC,WACA,IAAItF,2BAAiC3S,UAAW,MAAMiY,WAAYlG,UAAWC,SAAUC,kBACvFlU,YAEJ,OAAK0U,mBAGKgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBARQ,GAerBqF,qBACZF,WACA5B,QACArE,SACAnI,MACA9L,WACA0U,aAAiC,0DAEjC,IAAK,OAAK2D,OACN,MAAM,IAAI53C,MAAM,kBAGpB,MAAMi5C,QAAU,IAAIxB,oBAAoB,OAAKG,OAAQ,OAAM6B,WAAY5B,QAASrE,SAAUnI,OACpFuO,WAAa,OAAKJ,YAAYP,QAAQvB,kBAAmBuB,QAAS1Z,YAGxE,OAAK0U,mBAGKgF,QAAQxE,qBAAqBR,aAC5B,YAHM2F,WAAWtF,kBAXK,GAkBrBuF,6BACZrY,UACAiY,WACA5B,QACArE,SACAnI,MACA9L,WACA0U,aAAgC,0DAEhC,IAAK,OAAK2D,OACN,MAAM,IAAI53C,MAAM,kBAIpB,MAAMi5C,QAAU,IAAIL,4BAA+BpX,UAAW,OAAKoW,OAAQ,OAAM6B,WAAY5B,QAASrE,SAAUnI,OAC1GyO,WAAa,OAAKN,YAAYP,QAAQvB,kBAAmBuB,QAAS1Z,YAExE,OAAK0U,mBAGK6F,WAAWrF,qBAAqBR,aAC/B,YAHM6F,WAAWxF,kBAXI,GAkB7ByF,cAAcN,YACjBv4C,KAAK63C,WAAW5b,OAAOsc,YAGXO,wBAAwBP,WAAoB5I,KAAcluC,KAAqBsxC,aAAiC,0DAC5H,MAAMnwC,aAAe,OAAKm2C,gCAAgCR,WAAY5I,KAAMluC,KAAMsxC,aAIlF,IAHInwC,QAAWA,OAAO4yB,aAAeJ,4BAAAA,IAAqBxyB,OAAO4yB,aAAeJ,4BAAAA,SAC5E,OAAKyjB,cAAcN,aAElB31C,OACD,MAAM,IAAI9D,MAAM,yCAEpB,OAAO8D,SARqH,GAWhHo2C,yBACZ1Y,UACAiY,WACA5I,KACA2H,gBACAjZ,WACA58B,MAAc,0DAOd,OALgB,OAAK62C,YACjBC,WACA,IAAIlB,iCAAuC/W,UAAW,OAAMiY,WAAYjB,iBACxEjZ,YAEWoZ,aAAa9H,KAAMluC,QAPpB,GAULw3C,qBACT3Y,UACAiY,WACAjB,gBACAjZ,WACA0U,aAAiC,0DAEjC,MAAMgF,QAAU,OAAKO,YACjBC,WACA,IAAIlB,iCAAkD/W,UAAW,OAAMiY,WAAYjB,iBACnFjZ,YAEJ,OAAK0U,mBAGKgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBARQ,GAexB8F,sBAAyBX,WAAoBpd,QAAiBkD,WAA4B0U,aAAiC,0DACpI,MAAMgF,QAAU,OAAKO,YAAYC,WAAY,IAAIpB,sBAAyB,OAAMoB,WAAYpd,SAAUkD,YACtG,OAAK0U,mBAGKgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBAH2G,GAU3HhK,oBAAoBuG,KAAc1rC,IAAaxC,KAAoBysC,OAAiC,0DAC7G,MAAMiL,OAAS,OAAKpH,QAAU,IAAM9tC,IACpC,IAAK,OAAK4yC,QACN,MAAM,IAAI/3C,MAAM,sBAEpB,aAAa,OAAK+3C,QAAQuC,KAAKhQ,oBAAoBuG,KAAMwJ,OAAQ13C,KAAMysC,SALsC,GAQpGK,oCACToB,KACA1rC,IACAxC,KACAjB,aACA0tC,OAAiC,0DAEjC,MAAMiL,OAAS,OAAKpH,QAAU,IAAM9tC,IACpC,IAAK,OAAK4yC,QACN,MAAM,IAAI/3C,MAAM,sBAEpB,aAAa,OAAK+3C,QAAQuC,KAAK7K,oCAAoCoB,KAAMwJ,OAAQ13C,KAAMjB,aAAc0tC,SANpE,GAUxBmL,+BACTxG,UACAlD,KACAluC,KACAsxC,YACAuG,gBACApL,OAAiC,2DAEjC,GAAK6E,YAQD,OADAA,YAAYC,wBAA2B,QAAKjB,QAAU,IAAMc,UAAWlD,KAAMluC,KAAM63C,iBAC5E,KARO,CACd,MAAMj4C,eAAiB,QAAK+nC,oBAAoBuG,KAAMkD,UAAmB,MAARpxC,KAAeA,KAAK4E,WAAa,KAAM6nC,OACxG,IAAKoL,gBACD,MAAM,IAAIx6C,MAAM,kCAEpB,aAAaw6C,gBAAgBj4C,aAPA,GAcxB03C,gCACTlG,UACAlD,KACAluC,KACAsxC,YACA7E,OAAiC,2DAEjC,GAAK6E,YAEE,CACH,MAAMuG,gBAAmBj4C,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QACjDL,QAAQt5B,aAGL,IAAIq5B,SAAuB,SAAUC,QAASK,QACjDA,OAAO35B,aAKnB,OADA0xC,YAAYC,wBAAuC,QAAKjB,QAAU,IAAMc,UAAWlD,KAAMluC,KAAM63C,iBACxF,KAdP,aAAa,QAAKlQ,oBAAoBuG,KAAMkD,UAAmB,MAARpxC,KAAeA,KAAK4E,WAAa,KAAM6nC,SAHjE,GAqBxBqL,YAAYC,mBAAoB,GAAK,2DAC9C,QAAK3B,WAAW1f,UAD8B,GAQ3CshB,gBACH,IAAIphB,MAAQ,EACZ,MAAM52B,KAAO,IAAI27B,wBACjB,IAAK,MAAOv7B,IAAKqyC,SAAUl0C,KAAKg+B,WACR,IAAhBkW,MAAM7Y,QACN55B,KAAKo9B,SAASqV,MAAM/Y,QAAS+Y,MAAMhkB,OACnCmI,SAGR,OAAc,IAAVA,MACO,KAEJ52B,KAGJi4C,gBACH,IAAIrhB,MAAQ,EACZ,MAAM52B,KAAO,IAAI27B,wBACjB,IAAK,MAAOv7B,IAAKqyC,SAAUl0C,KAAKg+B,UAC5Bv8B,KAAKo9B,SAASqV,MAAM/Y,QAAS+Y,MAAMhkB,OACnCmI,QAEJ,OAAc,IAAVA,MACO,KAEJ52B,KAGJqxC,oBAAoBC,aACvB,IAAK,MAAOlxC,IAAKk2C,WAAY/3C,KAAK63C,WAC9BE,QAAQjF,oBAAoBC,aAK7B4G,KAAKP,KAA6BrY,QACrC/gC,KAAK62C,QAAUuC,KACfp5C,KAAKwgC,WAAWO,QAOblD,SAASoD,QACZjhC,KAAK62C,QAAU5V,OAAOyV,OACtB12C,KAAK63C,WAAW1f,QAChB,IAAK,MAAOt2B,IAAKswC,YAAalR,OAAO2W,UACjC53C,KAAK63C,WAAWzxC,IAAIvE,IAAKswC,UAE7BtvC,MAAMg7B,SAASoD,QAGZ2Y,kBAAkB3Y,OAAqB2W,WAC1C,IAAK,MAAO/1C,IAAKswC,YAAalR,OAAO2W,UAC7BA,UAAU3f,IAAIp2B,MACd7B,KAAK63C,WAAWzxC,IAAIvE,IAAKswC,UAK9BjR,eAAeD,OAAqBE,QACvCnhC,KAAK62C,QAAU5V,OAAOyV,OAEtB7zC,MAAMq+B,eAAeD,OAAQE,SCrX/B,MAAO0Y,sBAAU,SACL,KAAA36C,KAAO,EAAG,UACV,KAAA46C,KAAO,EAAG,UACV,KAAAC,SAAW,EAAG,UACd,KAAAC,WAAa,EAAG,UAChB,KAAAC,SAAW,EAAG,UACd,KAAAC,iBAAmB,GAAI,UACvB,KAAAC,cAAgB,GAAI,UACpB,KAAAC,aAAe,GAAI,UACnB,KAAAC,YAAc,IAAI,WAClB,KAAAC,UAAY,IAAK,WACjB,KAAAC,YAAc,IAAK,WACnB,KAAAC,aAAe,KAAK,WACpB,KAAAC,gBAAkB,KAAK,WACvB,KAAAC,YAAc,KAAM,WACpB,KAAAC,UAAY,KAAM,WAClB,KAAAC,kBAAoB,MAAM,WAC1B,KAAAC,kBAAoB,MAAM,WAC1B,KAAAC,SAAW,MAAO,WAClB,KAAAC,YAAc,OAAO,WACrB,KAAAC,cAAgB,OAAO,WACvB,KAAAC,iBAAmB,OAAO,WAC1B,KAAAC,eAAiB,QAAQ,WACzB,KAAAC,YAAc,QAAQ,WACtB,KAAAC,kBAAoB,QAAQ,WAC5B,KAAAC,cAAgB,QAAQ,WACxB,KAAAC,cAAgB,SAAS,WACzB,KAAAC,YAAc,SAAS,WACvB,KAAAC,WAAa,SAAS,WACtB,KAAAC,WAAa,UAAS,WACtB,KAAAC,qBAAuB,UAAU,WACjC,KAAAC,UAAY,UAAU,WACtB,KAAAC,YAAc,WAAU,WACxB,KAAAh9C,IAAM,WCvBlB,MAAOi9C,aAAY,SACP,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,6BAA+B,0BAAyB,UACxD,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,QAAU,KAAI,WACd,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,kCAAoC,+BAA8B,WAClE,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,UAAY,OAAM,WAClB,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,yBAA2B,sBAAqB,WAChD,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,YAAc,SAAQ,WACtB,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,kBAAoB,eC2BhC,MAAOC,mBAAmBlhB,wBAEjB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB2D,iBACP,OAAO7zB,KAAKu+B,SAAiB,cAEtB1K,eAAW3D,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BquB,YACP,OAAOv+C,KAAK4gC,oBAA6C0d,WAAY,SAE9DC,UAAMruB,OACblwB,KAAK2gC,oBAAoB,QAASzQ,OAG/BuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAKy/B,cAA2B,QAAS,IAAI3C,4CAI/C,MAAO0hB,sBAAsBphB,wBAEpBhV,WACP,OAAOpoB,KAAKu+B,SAAiB,QAEtBnW,SAAK8H,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBzC,cACP,OAAOztB,KAAKu+B,SAAiB,WAEtB9Q,YAAQyC,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BuuB,oBACP,OAAOz+C,KAAKu+B,SAAiB,iBAEtBkgB,kBAAcvuB,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhCwuB,wBACP,OAAO1+C,KAAKs/B,aAAa,qBAElBof,sBAAkBxuB,OACzBlwB,KAAKw/B,aAAa,oBAAqBtP,OAGhCyuB,eACP,OAAO3+C,KAAKs/B,aAAa,YAElBqf,aAASzuB,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvB0uB,iBACP,OAAO5+C,KAAKu+B,SAAiB,cAEtBqgB,eAAW1uB,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7B2uB,wBACP,OAAO7+C,KAAKg/B,aAAa,qBAElB6f,sBAAkB3uB,OACzBlwB,KAAKm/B,aAAa,oBAAqBjP,OAGhC4uB,gBACP,OAAO9+C,KAAKu+B,SAAiB,aAEtBugB,cAAU5uB,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAGhCuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAK6+B,SAAiB,gBAAiB,IACvC7+B,KAAKw/B,aAAa,oBAAqB36B,SAAAA,SAAAA,OACvC7E,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAKm/B,aAAa,oBAAqB,IAAIF,MAC3Cj/B,KAAK6+B,SAAiB,YAAa,KAIrC,MAAOkgB,mBAAmB3hB,wBAEjBx6B,aACP,OAAO5C,KAAKu+B,SAAiB,UAEtB37B,WAAOstB,OACdlwB,KAAK6+B,SAAiB,SAAU3O,OAGzBvtB,cACP,OAAO3C,KAAKu+B,SAAiB,WAEtB57B,YAAQutB,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BzD,cACP,OAAOzsB,KAAKu+B,SAAiB,WAEtB9R,YAAQyD,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG9BuR,sBACHzhC,KAAK6+B,SAAiB,SAAU,IAChC7+B,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAK6+B,SAAiB,UAAW,KAInC,MAAOmgB,mBAAmB5hB,wBAEjB6hB,WACP,OAAOj/C,KAAKs/B,aAAa,QAElB2f,SAAK/uB,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnBgvB,gBACP,OAAOl/C,KAAKu+B,SAAiB,aAEtB2gB,cAAUhvB,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BivB,gBACP,OAAOn/C,KAAKu+B,SAAiB,aAEtB4gB,cAAUjvB,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAGhCuR,sBACHzhC,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,YAAa,KAIrC,MAAOugB,oBAAoBhiB,wBAElB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBA,YACP,OAAOlwB,KAAKu+B,SAAiB,SAEtBrO,UAAMA,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAG5BuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,QAAS,KAMjC,MAAOqY,eAAeS,WAIb0H,kBACP,OAAOr/C,KAAKu+B,SAAkBsd,aAAaC,kBAIpCwD,mBACP,OAAOt/C,KAAKg/B,aAAa6c,aAAaE,mBAI/BwD,mBACP,OAAOv/C,KAAKs/B,aAAauc,aAAaG,kBAAmBnC,sBAAAA,aAIlD2F,qBAAiBtvB,OACxBlwB,KAAKw/B,aAAaqc,aAAaI,sBAAuB/rB,OAI/ChG,kBACP,OAAOlqB,KAAKu+B,SAAiBsd,aAAaK,iBAAkBrC,sBAAAA,aAErD3vB,gBAAYgG,OACnBlwB,KAAK6+B,SAAiBgd,aAAaK,iBAAkBhsB,OAI9C2D,iBACP,OAAO7zB,KAAKu+B,SAAiBsd,aAAaM,iBAEnCtoB,eAAW3D,OAClBlwB,KAAK6+B,SAAiBgd,aAAaM,gBAAiBjsB,OAI7CuvB,8BACP,OAAOz/C,KAAKs/B,aAAauc,aAAaO,8BAI/BsD,mBACP,OAAO1/C,KAAKu+B,SAAkBsd,aAAaQ,mBAEpCqD,iBAAaxvB,OACpBlwB,KAAK6+B,SAAkBgd,aAAaQ,kBAAmBnsB,OAIhD1M,SACP,OAAOxjB,KAAKs/B,aAAauc,aAAaS,SAI/BqD,4BACP,OAAO3/C,KAAKu+B,SAAkBsd,aAAaU,4BAIpCqD,kBACP,OAAO5/C,KAAKu+B,SAAkBsd,aAAaW,kBAIpCqD,kBACP,OAAO7/C,KAAKu+B,SAAkBsd,aAAaY,kBAIpCqD,mCACP,OAAO9/C,KAAKu+B,SAAkBsd,aAAaa,kCAAmC7C,sBAAAA,aAIvEkG,sBACP,OAAO//C,KAAKu+B,SAAkBsd,aAAac,sBAIpCqD,sBACP,OAAOhgD,KAAKu+B,SAAkBsd,aAAae,qBAAsB/C,sBAAAA,aAI1DoG,iBACP,OAAOjgD,KAAKu+B,SAAkBsd,aAAagB,gBAAiBhD,sBAAAA,aAIrDqG,+BACP,OAAOlgD,KAAKu+B,SAAkBsd,aAAaiB,8BAA+BjD,sBAAAA,aAInEsG,sBACP,OAAOngD,KAAKu+B,SAAkBsd,aAAakB,qBAAsBlD,sBAAAA,YAE1DsG,oBAAgBjwB,OACvBlwB,KAAK6+B,SAAkBgd,aAAakB,qBAAsB7sB,OAInDkwB,qBACP,OAAOpgD,KAAKu+B,SAAkBsd,aAAamB,oBAAqBnD,sBAAAA,aAIzDwG,gBACP,OAAOrgD,KAAKu+B,SAAiBsd,aAAaoB,gBAInCnH,gBACP,OAAO91C,KAAKo+B,iBAAyByd,aAAaqB,eAAgBrD,sBAAAA,aAE3D/D,cAAU5lB,OACjBlwB,KAAK2+B,iBAAyBkd,aAAaqB,eAAgBhtB,OAIpDowB,kBACP,OAAOtgD,KAAKu+B,SAAkBsd,aAAasB,iBAAkBtD,sBAAAA,MAEtDyG,gBAAYpwB,OACnBlwB,KAAK6+B,SAAkBgd,aAAasB,iBAAkBjtB,OAI/CqwB,yBACP,OAAOvgD,KAAKg/B,aAAa6c,aAAauB,yBAI/BoD,wBACP,OAAOxgD,KAAKu+B,SAAiBsd,aAAawB,wBAInCoD,oBACP,OAAOzgD,KAAKu+B,SAAiBsd,aAAayB,oBAInC3zB,WACP,OAAO3pB,KAAKu+B,SAAiBsd,aAAa0B,UAAW1D,sBAAAA,aAE9ClwB,SAAKuG,OACZlwB,KAAK6+B,SAAiBgd,aAAa0B,UAAWrtB,OAIvCwwB,+BACP,OAAO1gD,KAAKu+B,SAAkBsd,aAAa2B,8BAA+B3D,sBAAAA,aAInE8G,oBACP,OAAO3gD,KAAKs/B,aAAauc,aAAa4B,oBAI/BmD,wBACP,OAAO5gD,KAAKu+B,SAAiBsd,aAAa6B,wBAEnCkD,sBAAkB1wB,OACzBlwB,KAAK6+B,SAAiBgd,aAAa6B,uBAAwBxtB,OAIpD2wB,iBACP,OAAO7gD,KAAKs/B,aAAauc,aAAa8B,iBAE/BkD,eAAW3wB,OAClBlwB,KAAKw/B,aAAaqc,aAAa8B,gBAAiBztB,OAIzC4wB,mBACP,OAAO9gD,KAAKu+B,SAAiBsd,aAAa+B,mBAEnCkD,iBAAa5wB,OACpBlwB,KAAK6+B,SAAiBgd,aAAa+B,kBAAmB1tB,OAI/C6wB,6BACP,OAAO/gD,KAAKs/B,aAAauc,aAAagC,6BAE/BkD,2BAAuB7wB,OAC9BlwB,KAAKw/B,aAAaqc,aAAagC,4BAA6B3tB,OAIrD8wB,sBACP,OAAOhhD,KAAKs/B,aAAauc,aAAaiC,sBAE/BkD,oBAAgB9wB,OACvBlwB,KAAKw/B,aAAaqc,aAAaiC,qBAAsB5tB,OAI9C+wB,0BACP,OAAOjhD,KAAKu+B,SAAiBsd,aAAakC,0BAInCmD,4BACP,OAAOlhD,KAAKs/B,aAAauc,aAAamC,4BAI/BmD,mBACP,OAAOnhD,KAAKu+B,SAAiBsd,aAAaoC,kBAAmBpE,sBAAAA,eAEtDsH,iBAAajxB,OACpBlwB,KAAK6+B,SAAiBgd,aAAaoC,kBAAmB/tB,OAI/CkxB,aACP,OAAOphD,KAAKu+B,SAAkBsd,aAAaqC,aAEpCkD,WAAOlxB,OACdlwB,KAAK6+B,SAAkBgd,aAAaqC,YAAahuB,OAI1CmxB,qBACP,OAAOrhD,KAAKu+B,SAAkBsd,aAAasC,qBAIpCmD,yBACP,OAAOthD,KAAKu+B,SAAkBsd,aAAauC,wBAAyBvE,sBAAAA,aAI7D0H,mBACP,OAAOvhD,KAAKu+B,SAAkBsd,aAAawC,mBAOpChL,0BAEP,OAAOrzC,KAAKm+B,SAAS,MAOzBv+B,YAAYi0B,YACRhxB,MAAM,oBACa9C,IAAf8zB,aACA7zB,KAAK6zB,WAAaA,YAInBgK,SAASoD,QACZjhC,KAAKwhD,cAAgBvgB,OAAOugB,cAC5B3+C,MAAMg7B,SAASoD,QAGZC,eAAeD,OAAiBE,QACnCnhC,KAAKwhD,cAAgBvgB,OAAOugB,cAC5B3+C,MAAMq+B,eAAeD,OAAQE,QAOvBH,cACN,GAAIhhC,KAAKm+B,SAAS,MAAO,CACrB,MAAM3a,GAAKxjB,KAAKu+B,SAAiB,MAC7B/a,GAAGxf,OAAS,IACZhE,KAAK+xC,QAAU,eAAiBvuB,KAgB/B+1B,YAAYC,mBAAoB,GAAK,yDAC9C,GAAmB,MAAf,MAAK9C,OAAkB,MAAM,IAAI53C,MAAM,kBAG3C,IAA0B,IAAtB06C,kBAA6B,CAC7B,MAAMiI,gBAAkB,MAAK/K,OAAOgL,eAAexK,OAAQ,MAAK1zB,GAAI,KAAM,KAAM,KAChF,IAAKi+B,UAAa,MAAM,IAAI3iD,MAAM,sBAClC,MAAK++B,SAAS4jB,WAElB,MAAKpJ,mBATyC,GAgBrCsJ,cAAcxX,MAA2B4I,aAA+B,0DACjF,OAAO,OAAK0F,qBAAqB,QAAS,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,GAIxE6O,+BAA+B7O,aAAiC,0DACzE,aAAa,OAAKkG,qBAAkC7b,wBAAa,cAAc,EAAOyc,sBAAAA,KAAiB9G,eAD9B,GAIhE8O,0BAA0B9O,aAAiC,0DACpE,OAAO,OAAKyF,4BAAuD4G,YAAa,oBAAqB,MAAM,GAAM,EAAMvF,sBAAAA,KAAiB9G,eADpE,GAI3D+O,mBAAmB/O,aAAiC,0DAC7D,aAAa,OAAKkG,qBAAiC+F,WAAY,cAAc,EAAMnF,sBAAAA,KAAiB9G,eADvC,GAIpDgP,oBAAoBhP,aAAiC,0DAC9D,OAAO,OAAKyF,4BAAqDwG,WAAY,cAAe,QAAQ,GAAO,EAAOnF,sBAAAA,KAAiB9G,eADrE,GAIrDiP,oBAAoBjP,aAAiC,0DAC9D,OAAO,OAAKyF,4BAAqDuG,WAAY,cAAe,MAAM,GAAM,EAAOlF,sBAAAA,KAAiB9G,eADlE,GAIrDkP,uBAAuBC,QAAelW,OAAgB+G,aAA0B,0DACzF,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQhjB,aAAa,UAAW+iB,SAChCC,QAAQtjB,SAAS,SAAUmN,QAEpB,OAAKqN,+BAA8C,oBAAqB,MAAO8I,QAASpP,aAXtE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALW,GAehF+gD,yBAAyBrP,aAA0B,0DAS5D,OAAO,OAAKsG,+BAA6C,mBAAoB,MAAO,KAAMtG,aARjE1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAAsB,SAASC,QAASK,QAAUL,QAAQ/3B,WAErE,OAAO,IAAI83B,SAAsB,SAASC,QAASK,QAAUA,OAAO35B,kBANhB,GAYnDghD,sBAAsB7+B,GAAWuvB,aAAiC,2DAE3E,aADM,QAAKiG,yBAAwDwF,cAAe,cAAgBh7B,GAAI,UAAU,EAAMq2B,sBAAAA,KAAiB,MAChI,IAAIvkB,aAAaF,4BAAAA,MAFmD,GAKlEktB,mBAAmB9+B,GAAWuvB,aAAiC,2DACxE,aAAa,QAAKkG,qBAAoCuF,cAAe,cAAgBh7B,IAAI,EAAMq2B,sBAAAA,KAAiB9G,eADxC,GAI/DwP,mBAAmB/+B,GAAW0M,MAAuB6iB,aAAiC,2DAC/F,aAAa,QAAKiG,yBAAwDwF,cAAe,cAAgBh7B,GAAI,QAAQ,EAAMq2B,sBAAAA,KAAiB3pB,SAD7C,GAItFsyB,6BAA6BrY,MAA2B4I,aAA+B,2DAChG,OAAO,QAAK0F,qBAAqB,uBAAwB,MAAM,EAAMtO,MAAO0P,sBAAAA,qBAAiC9G,eADb,GAIvF0P,mBAAmBtY,MAA2B4I,aAA+B,2DACtF,OAAO,QAAK0F,qBAAqB,aAAc,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI7E2P,mBAAmBvY,MAA2B4I,aAA+B,2DACtF,OAAO,QAAK0F,qBAAqB,aAAc,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,GAI7E4P,4BAA4B5P,aAAiC,2DACtE,OAAO,QAAKyF,4BAAqD8F,WAAY,uBAAwB,MAAM,GAAM,EAAOzE,sBAAAA,KAAiB9G,eADnE,GAI7D6P,sBAAsB1yB,MAA4B6iB,aAA0B,2DASrF,OAAO,QAAKsG,+BAA8C,mBAAoB,OAAQnpB,MAAO6iB,aARpE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALO,GAY5EwhD,iBAAiB3yB,MAAqB6iB,aAA0B,2DAUzE,OAAO,QAAKsG,+BAAuC,cAAe,OAAQnpB,MAAO6iB,aATxD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAAgB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEhE,OAAO,IAAI83B,SAAgB,SAAUC,QAASK,QAAUA,OAAO35B,kBANE,GAoBhEyhD,mBAAmBC,WAAwBhQ,aAA0B,2DAC9E,IAAK,QAAKyO,cACN,OAAO,EAGX,MAAM5gC,SAAW,QAAK4C,GAEtB,IAAIw/B,kBAEJ,GADAA,kBAAoB,QAAKxB,cAAcyB,OAAOriC,SAAUmiC,YACpDC,kBAAmB,CACnB,MAAME,cAAgBC,SAASJ,YAAaviC,QACpCwiC,mBACOA,kBAAkB/qB,IAAIzX,QAIrC,OAAmB,MAAfuyB,YACOmQ,eAEPnQ,YAAYC,wBAAiC,mBAAoB,MAAO,MAAO3xC,UACpE,IAAIq5B,SAAiB,SAAUC,QAASK,QAC3CL,QAAQuoB,qBAIb,GAkCX,OAAO,QAAK7J,+BAAwC,mBAAoB,MAAO,KAAMtG,aA/B5D1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAM3zB,KAAOJ,SAASI,KAEtBuhD,kBAAoBn+C,SAAAA,SAAAA,YACpB,IAAK,MAAMu+C,cAAc3hD,KAAM,CAC3B,MAAM4hD,cAAgBx+C,SAAAA,SAAAA,SAAkBu+C,YACpCC,cAAcvoB,SACdkoB,kBAAkBhnB,IAAIqnB,cAAcnzB,OAGxC,QAAKsxB,eACL,QAAKA,cAAc8B,OAAO1iC,SAAUoiC,mBAGxC,MAAME,cAAgBC,SAASJ,YAAaviC,QACpCwiC,mBACOA,kBAAkB/qB,IAAIzX,QAIrC,OAAO,IAAIka,SAAiB,SAAUC,QAASK,QAC3CL,QAAQuoB,kBAGZ,OAAO,IAAIxoB,SAAiB,SAAUC,QAASK,QAC3CA,OAAO35B,kBAtD2D,GA8D3EkiD,SAA4BjjB,WAC/B,OAAOtgC,gBAAgBsgC,WC/vBzB,MAAOkjB,gBAAe,SACV,KAAAtkD,KAAO,OAAM,UACb,KAAAukD,WAAa,aAAY,UACzB,KAAAC,IAAM,MAAK,UACX,KAAAC,WAAa,aAAY,UACzB,KAAAC,cAAgB,gBAAe,UAC/B,KAAAC,YAAc,cAAa,UAC3B,KAAAC,SAAW,WAAU,UACrB,KAAAC,KAAO,OAAM,UACb,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,WAAa,aAAY,WACzB,KAAAC,YAAc,cAAa,WAC3B,KAAAC,YAAc,cAAa,WAC3B,KAAAC,YAAc,cAAa,WAC3B,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,WAAa,aAAY,WACzB,KAAAC,qBAAuB,uBAAsB,WAEpC,KAAAplD,OAAS,CAC5BmkD,gBAAgBtkD,KAChBskD,gBAAgBC,WAChBD,gBAAgBE,IAChBF,gBAAgBG,WAChBH,gBAAgBI,cAChBJ,gBAAgBK,YAChBL,gBAAgBM,SAChBN,gBAAgBO,KAChBP,gBAAgBQ,MAChBR,gBAAgBS,OAChBT,gBAAgBU,WAChBV,gBAAgBW,YAChBX,gBAAgBY,YAChBZ,gBAAgBa,YAChBb,gBAAgBc,oBAChBd,gBAAgBe,uBAChBf,gBAAgBgB,WAChBhB,gBAAgBiB,sBCtClB,MAAOC,oBAAmB,SACd,KAAAC,UAAY,YAAW,UACvB,KAAAC,UAAY,YAAW,UAEd,KAAAvlD,OAAS,CAC5BqlD,oBAAoBC,UACpBD,oBAAoBE,WCNtB,MAAOC,YAAW,SACN,KAAA3lD,KAAO,OAAM,UACb,KAAA4lD,UAAY,YAAW,UACvB,KAAAC,cAAgB,gBAAe,UAC/B,KAAAC,iBAAmB,mBAAkB,UACrC,KAAAC,SAAW,WAAU,UACrB,KAAAC,YAAc,cAAa,UAC3B,KAAAC,gBAAkB,kBAAiB,UACnC,KAAAC,eAAiB,iBAAgB,UAExB,KAAA/lD,OAAS,CAC5BwlD,YAAY3lD,KACZ2lD,YAAYC,UACZD,YAAYE,cACZF,YAAYG,iBACZH,YAAYI,SACZJ,YAAYK,YACZL,YAAYM,gBACZN,YAAYO,gBClBd,MAAOC,WAAU,SACL,KAAAnmD,KAAO,OAAM,UACb,KAAAomD,gBAAkB,kBAAiB,UACnC,KAAAC,iBAAmB,mBAAkB,UACrC,KAAAC,cAAgB,gBAAe,UAC/B,KAAAC,aAAe,eAAc,UAC7B,KAAAC,aAAe,eAAc,UAC7B,KAAAC,MAAQ,QAAO,UACf,KAAAC,IAAM,MAAK,UACX,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,aAAe,eAAc,WAC7B,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,gBAAkB,kBAAiB,WAE1B,KAAA7mD,OAAS,CAC5BgmD,WAAWnmD,KACXmmD,WAAWC,gBACXD,WAAWE,iBACXF,WAAWG,cACXH,WAAWI,aACXJ,WAAWK,aACXL,WAAWM,MACXN,WAAWO,IACXP,WAAWQ,OACXR,WAAWS,OACXT,WAAWU,OACXV,WAAWW,aACXX,WAAWY,eACXZ,WAAWa,iBC9Bb,MAAOC,aAAY,SACP,KAAAjnD,KAAO,OAAM,UACb,KAAAknD,MAAQ,QAAO,UACf,KAAAC,iBAAmB,mBAAkB,UAE5B,KAAAhnD,OAAS,CAC5B8mD,aAAajnD,KACbinD,aAAaC,MACbD,aAAaE,kBCRf,MAAOC,WAAU,SACL,KAAAC,QAAU,UAAS,UACnB,KAAAC,MAAQ,QAAO,UACf,KAAAC,MAAQ,QAAO,UACf,KAAAV,OAAS,SAAQ,UACjB,KAAAW,SAAW,WAAU,UACrB,KAAAC,kBAAoB,oBAAmB,UAE9B,KAAAtnD,OAAS,CAC5BinD,WAAWC,QACXD,WAAWE,MACXF,WAAWG,MACXH,WAAWP,OACXO,WAAWI,SACXJ,WAAWK,mBCdb,MAAOC,2BAA0B,SACrB,KAAA1nD,KAAO,OAAM,UACb,KAAA2nD,KAAO,OAAM,UACb,KAAAC,KAAO,OAAM,UACb,KAAAC,KAAO,OAAM,UACb,KAAAC,KAAO,OAAM,UACb,KAAAC,KAAO,OAAM,UACb,KAAAC,OAAS,SAAQ,UACjB,KAAAC,QAAU,UAAS,UACnB,KAAAC,KAAO,OAAM,WACb,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,QAAU,UAAS,WACnB,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,QAAU,UAAS,WACnB,KAAAC,IAAM,MAAK,WACX,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,KAAO,OAAM,WACb,KAAAC,QAAU,UAAS,WACnB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,MAAQ,QAAO,WACf,KAAAtC,QAAU,UAAS,WACnB,KAAAuC,oBAAsB,sBAAqB,WAC3C,KAAAC,OAAS,SAAQ,WACjB,KAAAC,KAAO,OAAM,WACb,KAAAC,OAAS,SAAQ,WACjB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,YAAc,cAAa,WAC3B,KAAAC,YAAc,cAAa,WAC3B,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,SAAW,WAAU,WACrB,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,mBAAqB,qBAAoB,WACzC,KAAAC,UAAY,YAAW,WACvB,KAAAC,SAAW,WAAU,WACrB,KAAAC,KAAO,OAAM,WACb,KAAAC,WAAa,aAAY,WACzB,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,MAAQ,QAAO,WACf,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,0BAA4B,4BAA2B,WACvD,KAAAC,0BAA4B,4BAA2B,WACvD,KAAAC,0BAA4B,4BAA2B,WACvD,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,+BAAiC,iCAAgC,WACjE,KAAAC,kCAAoC,oCAAmC,WACvE,KAAAC,mCAAqC,qCAAoC,WACzE,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,QAAU,UAAS,WACnB,KAAAC,UAAY,YAAW,WACvB,KAAAC,WAAa,aAAY,WACzB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,WACnB,KAAAC,QAAU,UAAS,YACnB,KAAAC,SAAW,WAAU,YAEZ,KAAAztD,OAAS,CAC5BunD,2BAA2B1nD,KAC3B0nD,2BAA2BC,KAC3BD,2BAA2BE,KAC3BF,2BAA2BG,KAC3BH,2BAA2BI,KAC3BJ,2BAA2BK,KAC3BL,2BAA2BM,OAC3BN,2BAA2BO,QAC3BP,2BAA2BQ,KAC3BR,2BAA2BS,MAC3BT,2BAA2BU,OAC3BV,2BAA2BW,OAC3BX,2BAA2BY,OAC3BZ,2BAA2Ba,QAC3Bb,2BAA2Bc,MAC3Bd,2BAA2Be,MAC3Bf,2BAA2BgB,MAC3BhB,2BAA2BiB,OAC3BjB,2BAA2BkB,OAC3BlB,2BAA2BmB,QAC3BnB,2BAA2BoB,QAC3BpB,2BAA2BqB,QAC3BrB,2BAA2BsB,QAC3BtB,2BAA2BuB,sBAC3BvB,2BAA2BwB,QAC3BxB,2BAA2ByB,IAC3BzB,2BAA2B0B,cAC3B1B,2BAA2B2B,QAC3B3B,2BAA2B4B,QAC3B5B,2BAA2B6B,KAC3B7B,2BAA2B8B,QAC3B9B,2BAA2B+B,OAC3B/B,2BAA2BgC,OAC3BhC,2BAA2BiC,MAC3BjC,2BAA2BL,QAC3BK,2BAA2BkC,oBAC3BlC,2BAA2BmC,OAC3BnC,2BAA2BoC,KAC3BpC,2BAA2BqC,OAC3BrC,2BAA2BsC,QAC3BtC,2BAA2BuC,QAC3BvC,2BAA2BwC,QAC3BxC,2BAA2ByC,SAC3BzC,2BAA2B0C,OAC3B1C,2BAA2B2C,MAC3B3C,2BAA2B4C,MAC3B5C,2BAA2B6C,QAC3B7C,2BAA2B8C,QAC3B9C,2BAA2B+C,QAC3B/C,2BAA2BgD,SAC3BhD,2BAA2BiD,MAC3BjD,2BAA2BkD,MAC3BlD,2BAA2BmD,MAC3BnD,2BAA2BoD,MAC3BpD,2BAA2BqD,OAC3BrD,2BAA2BsD,YAC3BtD,2BAA2BuD,YAC3BvD,2BAA2BwD,QAC3BxD,2BAA2ByD,SAC3BzD,2BAA2B0D,SAC3B1D,2BAA2B2D,sBAC3B3D,2BAA2B4D,mBAC3B5D,2BAA2B6D,UAC3B7D,2BAA2B8D,SAC3B9D,2BAA2B+D,KAC3B/D,2BAA2BgE,WAC3BhE,2BAA2BiE,MAC3BjE,2BAA2BkE,OAC3BlE,2BAA2BmE,oBAC3BnE,2BAA2BoE,OAC3BpE,2BAA2BqE,OAC3BrE,2BAA2BsE,OAC3BtE,2BAA2BuE,MAC3BvE,2BAA2BwE,sBAC3BxE,2BAA2ByE,yBAC3BzE,2BAA2B0E,0BAC3B1E,2BAA2B2E,0BAC3B3E,2BAA2B4E,0BAC3B5E,2BAA2B6E,kBAC3B7E,2BAA2B8E,+BAC3B9E,2BAA2B+E,kCAC3B/E,2BAA2BgF,mCAC3BhF,2BAA2BiF,QAC3BjF,2BAA2BkF,QAC3BlF,2BAA2BmF,QAC3BnF,2BAA2BoF,SAC3BpF,2BAA2BqF,QAC3BrF,2BAA2BsF,UAC3BtF,2BAA2BuF,WAC3BvF,2BAA2BwF,QAC3BxF,2BAA2ByF,QAC3BzF,2BAA2B0F,QAC3B1F,2BAA2B2F,QAC3B3F,2BAA2B4F,QAC3B5F,2BAA2B6F,QAC3B7F,2BAA2B8F,SAC3B9F,2BAA2B+F,QAC3B/F,2BAA2BgG,QAC3BhG,2BAA2BiG,QAC3BjG,2BAA2BkG,UC1M7B,MAAOC,SAAQ,SACH,KAAAC,SAAW,WAAU,UACrB,KAAAC,SAAW,WAAU,UACrB,KAAAC,GAAK,KAAI,UAEA,KAAA7tD,OAAS,CAC5B0tD,SAASC,SACTD,SAASE,SACTF,SAASG,ICRX,MAAOC,WAAU,SACL,KAAAC,UAAY,YAAW,UACvB,KAAAC,KAAO,OAAM,UAEJ,KAAAhuD,OAAS,CAC5B8tD,WAAWC,UACXD,WAAWE,MCNb,MAAOC,YAAW,SACN,KAAApuD,KAAO,OAAM,UACb,KAAAquD,OAAS,SAAQ,UACjB,KAAAC,MAAQ,QAAO,UAEN,KAAAnuD,OAAS,CAC5BiuD,YAAYpuD,KACZouD,YAAYC,OACZD,YAAYE,OCGd,MAAOhqB,YAAW,SACN,KAAAtkC,KAAO,OAAM,UACb,KAAAuuD,aAAe,eAAc,UAC7B,KAAAC,YAAc,cAAa,UAC3B,KAAAC,OAAS,SAAQ,UACjB,KAAAC,aAAe,eAAc,UAC7B,KAAAC,MAAQ,QAAO,UACf,KAAAC,QAAU,UAAS,UACnB,KAAAC,YAAc,cAAa,UAC3B,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,YAAc,cAAa,WAC3B,KAAAC,QAAU,UAAS,WACnB,KAAAC,MAAQ,QAAO,WACf,KAAAC,UAAY,YAAW,WACvB,KAAAC,MAAQ,QAAO,WACf,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,WAAa,aAAY,WACzB,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,UAAY,YAAW,WACvB,KAAAC,MAAQ,QAAO,WACf,KAAAC,MAAQ,QAAO,WACf,KAAAC,WAAa,aAAY,WACzB,KAAAC,SAAW,WAAU,WACrB,KAAAC,MAAQ,QAAO,WACf,KAAAC,OAAS,SAAQ,WACjB,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,SAAW,WAAU,WACrB,KAAAC,WAAa,aAAY,WACzB,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,YAAc,cAAa,WAC3B,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,UAAY,YAAW,WACvB,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,QAAU,UAAS,WACnB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,WAAa,aAAY,WACzB,KAAAC,MAAQ,QAAO,WACf,KAAAC,SAAW,WAAU,WACrB,KAAAC,aAAe,eAAc,WAC7B,KAAAC,QAAU,UAAS,WACnB,KAAAC,SAAW,WAAU,WACrB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,OAAS,SAAQ,WACjB,KAAAC,UAAY,YAAW,WACvB,KAAAC,YAAc,cAAa,WAC3B,KAAAC,UAAY,YAAW,WACvB,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,KAAO,OAAM,WACb,KAAAC,UAAY,YAAW,WACvB,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,aAAe,eAAc,WAC7B,KAAAC,aAAe,eAAc,WAC7B,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,YAAc,cAAa,WAC3B,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,iCAAmC,mCAAkC,WACrE,KAAAC,QAAU,UAAS,WACnB,KAAAC,YAAc,cAAa,WAC3B,KAAAC,SAAW,WAAU,WAEZ,KAAAtyD,OAAS,CAC5BmkC,YAAYtkC,KACZskC,YAAYiqB,aACZjqB,YAAYkqB,YACZlqB,YAAYmqB,OACZnqB,YAAYoqB,aACZpqB,YAAYqqB,MACZrqB,YAAYsqB,QACZtqB,YAAYuqB,YACZvqB,YAAYwqB,iBACZxqB,YAAYyqB,YACZzqB,YAAY0qB,QACZ1qB,YAAY2qB,MACZ3qB,YAAY4qB,UACZ5qB,YAAY6qB,MACZ7qB,YAAY8qB,gBACZ9qB,YAAY+qB,WACZ/qB,YAAYgrB,qBACZhrB,YAAYirB,UACZjrB,YAAYkrB,MACZlrB,YAAYmrB,MACZnrB,YAAYorB,WACZprB,YAAYqrB,SACZrrB,YAAYsrB,MACZtrB,YAAYurB,OACZvrB,YAAYwrB,cACZxrB,YAAYyrB,SACZzrB,YAAY0rB,WACZ1rB,YAAY2rB,QACZ3rB,YAAY4rB,SACZ5rB,YAAY6rB,cACZ7rB,YAAY8rB,YACZ9rB,YAAY+rB,kBACZ/rB,YAAYgsB,UACZhsB,YAAYisB,eACZjsB,YAAYksB,eACZlsB,YAAYmsB,QACZnsB,YAAYosB,OACZpsB,YAAYqsB,WACZrsB,YAAYssB,MACZtsB,YAAYusB,SACZvsB,YAAYwsB,aACZxsB,YAAYysB,QACZzsB,YAAY0sB,SACZ1sB,YAAY2sB,OACZ3sB,YAAY4sB,OACZ5sB,YAAY6sB,OACZ7sB,YAAY8sB,UACZ9sB,YAAY+sB,YACZ/sB,YAAYgtB,UACZhtB,YAAYitB,eACZjtB,YAAYktB,eACZltB,YAAYmtB,oBACZntB,YAAYotB,iBACZptB,YAAYqtB,eACZrtB,YAAYstB,eACZttB,YAAYutB,KACZvtB,YAAYwtB,UACZxtB,YAAYytB,gBACZztB,YAAY0tB,cACZ1tB,YAAY2tB,aACZ3tB,YAAY4tB,aACZ5tB,YAAY6tB,cACZ7tB,YAAY8tB,YACZ9tB,YAAY+tB,cACZ/tB,YAAYguB,iCACZhuB,YAAYiuB,QACZjuB,YAAYkuB,YACZluB,YAAYmuB,UAGT5uD,mBAAmB8wB,YACtB,OAAQA,YACJ,KAAK2P,YAAYiqB,aACb,OAAOjK,gBAAgBnkD,OAE3B,KAAKmkC,YAAYkqB,YACb,OAAOhJ,oBAAoBrlD,OAE/B,KAAKmkC,YAAYoqB,aACb,OAAOr8B,gBAAgBlyB,OAE3B,KAAKmkC,YAAYsqB,QACb,OAAOjJ,YAAYxlD,OAEvB,KAAKmkC,YAAY0qB,QACb,OAAO7I,WAAWhmD,OAEtB,KAAKmkC,YAAYirB,UACb,OAAOtI,aAAa9mD,OAExB,KAAKmkC,YAAYsrB,MACb,OAAO/B,SAAS1tD,OAEpB,KAAKmkC,YAAYyrB,SACb,OAAO3B,YAAYjuD,OAEvB,KAAKmkC,YAAYmsB,QACb,OAAOxC,WAAW9tD,OAEtB,KAAKmkC,YAAYysB,QACb,OAAO3J,WAAWjnD,OAEtB,KAAKmkC,YAAYotB,iBACb,OAAOhK,2BAA2BvnD,OAG1C,OAAO,IAAIsH,OCnLb,MAAOirD,0BAA0B/V,aAAY,SACjC,KAAAgW,wBAA0B,qBAAoB,UAC9C,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,uBAAyB,oBAAmB,UAC5C,KAAAC,WAAa,QAAO,UACpB,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,oBAAsB,iBCZlC,MAAOC,oBAAoB11B,wBAElB21B,mBACP,OAAO/yD,KAAKq/B,qBAAqB,gBAE1B0zB,iBAAa7iC,OACpBlwB,KAAKu/B,qBAAqB,eAAgBrP,OAGnCnF,eACP,OAAO/qB,KAAKo+B,iBAAyB,YAE9BrT,aAASmF,OAChBlwB,KAAK2+B,iBAAyB,WAAYzO,OAGnClF,gBACP,OAAOhrB,KAAKo+B,iBAAyB,aAE9BpT,cAAUkF,OACjBlwB,KAAK2+B,iBAAyB,YAAazO,OAGpC8iC,uBACP,OAAOhzD,KAAK+/B,kBAAkB,oBAEvBizB,qBAAiB9iC,OACxBlwB,KAAK6/B,kBAAkB,mBAAoB3P,OAGpCzC,cACP,OAAOztB,KAAKu+B,SAAiB,WAEtB9Q,YAAQyC,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1B+iC,0BACP,OAAOjzD,KAAK+/B,kBAAkB,uBAEvBkzB,wBAAoB/iC,OAC3BlwB,KAAK6/B,kBAAkB,sBAAuB3P,OAGvC1D,eACP,OAAOxsB,KAAKo+B,iBAAyB,YAE9B5R,aAAS0D,OAChBlwB,KAAK2+B,iBAAyB,WAAYzO,OAGnCgjC,WACP,OAAOlzD,KAAK2/B,cAAsB,QAE3BuzB,SAAKhjC,OACZlwB,KAAKy/B,cAAsB,OAAQvP,OAGhCuR,sBACHzhC,KAAKw/B,aAAa,eAAgB36B,SAAAA,SAAAA,OAClC7E,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6/B,kBAAkB,mBAAoB,IAAI/C,2CAC/C98B,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAK6/B,kBAAkB,sBAAuB,IAAI/C,2CAClD98B,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAKy/B,cAAsB,OAAQ,IAAI3C,4CAIzC,MAAOq2B,kBAAkB/1B,wBAEhB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBkjC,uBACP,OAAOpzD,KAAKu+B,SAAiB,oBAEtB60B,qBAAiBljC,OACxBlwB,KAAK6+B,SAAiB,mBAAoB3O,OAGvCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,mBAAoB,IAM5C,MAAOw0B,oBAAoBnc,OAIlBoc,yBACP,OAAOtzD,KAAKu+B,SAAiBqzB,kBAAkBC,wBAAyBhY,sBAAAA,UAEjEyZ,uBAAmBpjC,OAC1BlwB,KAAK6+B,SAAiB+yB,kBAAkBC,wBAAyB3hC,OAI1DqjC,qBACP,OAAOvzD,KAAKu+B,SAAiBqzB,kBAAkBE,oBAAqBjY,sBAAAA,UAE7D0Z,mBAAerjC,OACtBlwB,KAAK6+B,SAAiB+yB,kBAAkBE,oBAAqB5hC,OAItDsjC,gBACP,OAAOxzD,KAAKs/B,aAAasyB,kBAAkBG,eAAgBlY,sBAAAA,UAEpD2Z,cAAUtjC,OACjBlwB,KAAKw/B,aAAaoyB,kBAAkBG,eAAgB7hC,OAI7CujC,mBACP,OAAOzzD,KAAKu+B,SAAiBqzB,kBAAkBI,kBAAmBnY,sBAAAA,UAE3D4Z,iBAAavjC,OACpBlwB,KAAK6+B,SAAiB+yB,kBAAkBI,kBAAmB9hC,OAIpDwjC,wBACP,OAAO1zD,KAAKu+B,SAAkBqzB,kBAAkBK,uBAAwBpY,sBAAAA,UAEjE6Z,sBAAkBxjC,OACzBlwB,KAAK6+B,SAAkB+yB,kBAAkBK,uBAAwB/hC,OAI1D7F,YACP,OAAOrqB,KAAKu+B,SAAiBqzB,kBAAkBM,WAAYrY,sBAAAA,UAEpDxvB,UAAM6F,OACblwB,KAAK6+B,SAAiB+yB,kBAAkBM,WAAYhiC,OAI7CyjC,qBACP,OAAO3zD,KAAKu+B,SAAkBqzB,kBAAkBO,oBAAqBtY,sBAAAA,UAE9D8Z,mBAAezjC,OACtBlwB,KAAK6+B,SAAkB+yB,kBAAkBO,oBAAqBjiC,OAIvD0jC,uBACP,OAAO5zD,KAAKu+B,SAAiBqzB,kBAAkBQ,sBAAuBvY,sBAAAA,UAE/D+Z,qBAAiB1jC,OACxBlwB,KAAK6+B,SAAiB+yB,kBAAkBQ,sBAAuBliC,OAIxD2jC,gBACP,OAAO7zD,KAAKu+B,SAAiBqzB,kBAAkBS,eAAgBxY,sBAAAA,UAExDga,cAAU3jC,OACjBlwB,KAAK6+B,SAAiB+yB,kBAAkBS,eAAgBniC,OAIjD4jC,sBACP,OAAO9zD,KAAKu+B,SAAkBqzB,kBAAkBU,qBAAsBzY,sBAAAA,UAE/Dia,oBAAgB5jC,OACvBlwB,KAAK6+B,SAAkB+yB,kBAAkBU,qBAAsBpiC,OAIxD6jC,6BACP,OAAO/zD,KAAKu+B,SAAiBqzB,kBAAkBW,4BAA6B1Y,sBAAAA,UAErEka,2BAAuB7jC,OAC9BlwB,KAAK6+B,SAAiB+yB,kBAAkBW,4BAA6BriC,OAI9D8jC,6BACP,OAAOh0D,KAAKu+B,SAAiBqzB,kBAAkBY,4BAA6B3Y,sBAAAA,UAErEma,2BAAuB9jC,OAC9BlwB,KAAK6+B,SAAiB+yB,kBAAkBY,4BAA6BtiC,OAI9D+jC,6BACP,OAAOj0D,KAAKu+B,SAAiBqzB,kBAAkBa,4BAA6B5Y,sBAAAA,UAErEoa,2BAAuB/jC,OAC9BlwB,KAAK6+B,SAAiB+yB,kBAAkBa,4BAA6BviC,OAI9D1D,eACP,OAAOxsB,KAAKu+B,SAAiBqzB,kBAAkBc,cAAe7Y,sBAAAA,UAEvDrtB,aAAS0D,OAChBlwB,KAAK6+B,SAAiB+yB,kBAAkBc,cAAexiC,OAIhDgkC,gBACP,OAAOl0D,KAAKu+B,SAAiBqzB,kBAAkBe,eAAgB9Y,sBAAAA,UAExDqa,cAAUhkC,OACjBlwB,KAAK6+B,SAAiB+yB,kBAAkBe,eAAgBziC,OAIjDikC,yBACP,OAAOn0D,KAAKu+B,SAAiBqzB,kBAAkBgB,wBAAyB/Y,sBAAAA,UAEjEsa,uBAAmBjkC,OAC1BlwB,KAAK6+B,SAAiB+yB,kBAAkBgB,wBAAyB1iC,OAI1DkkC,qBACP,OAAOp0D,KAAKu+B,SAAiBqzB,kBAAkBiB,oBAAqBhZ,sBAAAA,UAE7Dua,mBAAelkC,OACtBlwB,KAAK6+B,SAAiB+yB,kBAAkBiB,oBAAqB3iC,OAOjEtwB,cACIiD,MAAM2gC,YAAYmqB,QAOT0G,yBAAyBlqB,MAA2B4I,aAA+B,yDAC5F,OAAO,MAAK0F,qBAAqB,mBAAoB,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,GAInFuhB,cAAcvhB,aAA0B,0DAQjD,OAAO,OAAKsG,+BAA8C,WAAY,OAAQ,KAAMtG,aAP3D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL7B,GAWxCkzD,mBAAmBxhB,aAAiC,0DAC7D,OAAO,OAAKyF,4BAAmD2a,UAAW,aAAc,MAAM,GAAO,EAAMtZ,sBAAAA,WAAuB9G,eADrE,GAIpDyhB,kBAAkBrqB,MAA2B4I,aAA+B,0DACrF,OAAO,OAAK0F,qBAAqB,YAAa,MAAM,EAAOtO,MAAO0P,sBAAAA,YAAwB9G,eADL,GAI5E0hB,aAAavkC,MAA4B6iB,aAA0B,0DAa5E,OAJc,MAAT7iB,QACDA,MAAQ,IAAI4iC,aAGT,OAAKzZ,+BAAuC,UAAW,OAAQnpB,MAAO6iB,aAZpD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAAS,GACjC,OAAO,IAAIi5B,SAAgB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEhE,OAAO,IAAI83B,SAAgB,SAAUC,QAASK,QAAUA,OAAO35B,kBANK,ICxR9E,MAAOqzD,kBAAb90D,cACS,KAAA00C,MAAQ,EAER,KAAA3E,KAAO,GACP,KAAA1rC,IAAM,GACN,KAAAuxB,WAAaJ,4BAAAA,sBACb,KAAAxyB,OAAsC,MAGzC,MAAO+xD,gCAAgCr/B,aAG3C11B,YAAYo2B,MACVnzB,MAAMmzB,MAHD,KAAA4+B,kBAAoB,IAAIjuD,MAMxB2sC,cAAcjyC,UAEnB,GADArB,KAAKy1B,YAAcp0B,SAASm0B,WACxBx1B,KAAKw1B,aAAeJ,4BAAAA,IAAqB/zB,SAASI,KAAM,CAC1D,IAAIsvB,EAAI,EACR,IAAK,MAAMnuB,UAAUvB,SAASI,KAE5BzB,KAAK40D,kBAAkB7jC,GAAGyE,WAAa5yB,OAAOiyD,WAC9C70D,KAAK40D,kBAAkB7jC,GAAGnuB,OAASA,OAAOkyD,SACxC/jC,OAGJ/wB,KAAKu1B,MAAQl0B,SAASI,MCxBtB,MAAOszD,gBAWA18B,YACT,OAAOr4B,KAAKg1D,aAAal5B,KAO3Bl8B,YAAYq1D,MAfJ,KAAAD,aAAe,IAAIp4B,IACnB,KAAAs4B,UAAY,IAAIP,wBAetB30D,KAAKm1D,MAAQF,KAORjiB,wBAAwB/uC,IAAa0rC,KAAcluC,KAAqBgsB,SAC7E,MAAMolB,UAAY,IAAIlB,cACtBkB,UAAUlD,KAAOA,KACjBkD,UAAU5uC,IAAMjE,KAAKm1D,MAAM3pB,cAAgB,IAAMvnC,IAErC,MAAR0rC,MAAwB,MAARluC,MAAuC,QAAvBkuC,KAAKrpC,cACvCusC,UAAUpxC,KAAO,IAAI27B,wBAErByV,UAAUpxC,KAAOA,KAEnBzB,KAAKg1D,aAAah5B,IAAI6W,WAEtB,MAAMjwC,OAAS,IAAI8xD,kBAOnB,OANA9xD,OAAO0xC,MAAQt0C,KAAKg1D,aAAal5B,KACjCl5B,OAAO6qB,QAAUA,QACjB7qB,OAAO+sC,KAAOA,KACd/sC,OAAOqB,IAAMA,IACbjE,KAAKk1D,UAAUN,kBAAkBj2C,KAAK/b,QAE/B5C,KAAKg1D,aAAal5B,KAGds5B,wBAAwBlnB,OAAiC,yDACpE,GAA+B,IAA3B,MAAK8mB,aAAal5B,KACpB,OAAO,IAAI64B,wBAAwBv/B,4BAAAA,IAGrC,GAA+B,IAA3B,MAAK4/B,aAAal5B,KAAY,CAEhC,MAAMu5B,oBAAsB,MAAKL,aAAalzD,OAAO0B,OAAO0sB,MAC5D,IAAIjsB,IAAMoxD,oBAAoBpxD,IAC9BA,IAAMA,IAAI5D,QAAQ,MAAK80D,MAAM3pB,cAAgB,IAAK,IAClD,IAAI/pC,KAAsB,KACM,MAA5B4zD,oBAAoB5zD,OAEpBA,KADG4zD,oBAAoB5zD,gBAAgB27B,wBAChCi4B,oBAAoB5zD,KAAK4E,WAEzBjE,KAAK0d,UAAUu1C,oBAAoB5zD,OAG9C,MAAM2tC,mBAAqB,MAAK+lB,MAAM/rB,oBAAoBisB,oBAAoB1lB,KAAM1rC,IAAKxC,KAAMysC,OAE/F,MAAKgnB,UAAU1/B,WAAa4Z,aAAa5Z,WACrC,MAAK0/B,UAAU1/B,aAAeJ,4BAAAA,UAChC,MAAK8/B,UAAU1/B,WAAaJ,4BAAAA,IAE9B,MAAMkgC,iBAAmB,MAAKJ,UAAUN,kBAAkB,GAC1DU,iBAAiB9/B,WAAa4Z,aAAa5Z,WACvC4Z,aAAa3tC,OACf6zD,iBAAiB1yD,OAASwsC,aAAa3tC,UAEpC,CACL,MAAMA,KAAO,IAAIkF,MACjB,IAAK,MAAM6Z,QAAQ,MAAKw0C,aAAc,CACpC,MAAMO,QAAgC,GACtCA,QAAQtxD,IAAMuc,KAAKvc,IACnBsxD,QAAQ5lB,KAAOnvB,KAAKmvB,KAChBnvB,KAAK/e,OACP8zD,QAAQ9zD,KAAO+e,KAAK/e,KAAK4E,YAE3B5E,KAAKkd,KAAK42C,SAEZ,MAAMnmB,mBAAqB,MAAK+lB,MAAM/rB,oBACpC,OACA,2BACAhnC,KAAK0d,UAAUre,MACfysC,OAEF,MAAKgnB,UAAU5hB,cAAclE,cAE/B,OAAO,MAAK8lB,YAhDwD,IC5ClE,MAAOM,wCAAwC3Z,aAAY,SAC/C,KAAA4Z,6BAA+B,0BAAyB,UACxD,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,sCAAwC,mCAAkC,UAC1E,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,+BAAiC,4BAA2B,UAC5D,KAAAC,mCAAqC,gCAA+B,UACpE,KAAAC,iCAAmC,8BAA6B,UAChE,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,iCAAmC,8BCrB/C,MAAOC,oCAAsB1e,WAGjC/3C,YAAYqE,KACVpB,MAAMoB,MCKJ,MAAOqyD,wCAAwCl5B,wBAEtCpB,UACP,OAAOh8B,KAAKs/B,aAAa,OAElBtD,QAAI9L,OACXlwB,KAAKw/B,aAAa,MAAOtP,OAGlB+L,aACP,OAAOj8B,KAAKs/B,aAAa,UAElBrD,WAAO/L,OACdlwB,KAAKw/B,aAAa,SAAUtP,OAGrBqmC,aACP,OAAOv2D,KAAKs/B,aAAa,UAElBi3B,WAAOrmC,OACdlwB,KAAKw/B,aAAa,SAAUtP,OAGrBsmC,WACP,OAAOx2D,KAAKs/B,aAAa,QAElBk3B,SAAKtmC,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGvBuR,sBACHzhC,KAAKw/B,aAAa,MAAO36B,SAAAA,SAAAA,OACzB7E,KAAKw/B,aAAa,SAAU36B,SAAAA,SAAAA,OAC5B7E,KAAKw/B,aAAa,SAAU36B,SAAAA,SAAAA,OAC5B7E,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,QAI5B,MAAO4xD,mCAAmCr5B,wBAEjC5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBxG,WACP,OAAO1pB,KAAKs/B,aAAa,QAElB5V,SAAKwG,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnBwmC,gBACP,OAAO12D,KAAKs/B,aAAa,aAElBo3B,cAAUxmC,OACjBlwB,KAAKw/B,aAAa,YAAatP,OAGxBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB9D,cACP,OAAOpsB,KAAKu+B,SAAiB,WAEtBnS,YAAQ8D,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BymC,sBACP,OAAO32D,KAAK2/B,cAAsB,mBAE3Bg3B,oBAAgBzmC,OACvBlwB,KAAKy/B,cAAsB,kBAAmBvP,OAGvC0mC,4BACP,OAAO52D,KAAK2/B,cAAsB,yBAE3Bi3B,0BAAsB1mC,OAC7BlwB,KAAKy/B,cAAsB,wBAAyBvP,OAG7C2mC,gCACP,OAAO72D,KAAK2/B,cAAsB,6BAE3Bk3B,8BAA0B3mC,OACjClwB,KAAKy/B,cAAsB,4BAA6BvP,OAGjD4mC,sCACP,OAAO92D,KAAK+/B,kBAAkB,mCAEvB+2B,oCAAgC5mC,OACvClwB,KAAK6/B,kBAAkB,kCAAmC3P,OAGnD6mC,mBACP,OAAO/2D,KAAK2/B,cAAsB,gBAE3Bo3B,iBAAa7mC,OACpBlwB,KAAKy/B,cAAsB,eAAgBvP,OAGpC8mC,uBACP,OAAOh3D,KAAKqgC,eAAkFi2B,gCAAiC,oBAExHU,qBAAiB9mC,OACxBlwB,KAAK0gC,eAAiD,mBAAoBxQ,OAGnE+mC,iBACP,OAAOj3D,KAAKqgC,eAA0CjD,wBAAa,cAE5D65B,eAAW/mC,OAClBlwB,KAAK0gC,eAA6B,aAAcxQ,OAGzCgnC,qBACP,OAAOl3D,KAAKu+B,SAAkB,kBAEvB24B,mBAAehnC,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGlCinC,gBACP,OAAOn3D,KAAKu+B,SAAiB,aAEtB44B,cAAUjnC,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BknC,qBACP,OAAOp3D,KAAKu+B,SAAiB,kBAEtB64B,mBAAelnC,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGrCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAKw/B,aAAa,YAAa36B,SAAAA,SAAAA,OAC/B7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAKy/B,cAAsB,kBAAmB,IAAI3C,2CAClD98B,KAAKy/B,cAAsB,wBAAyB,IAAI3C,2CACxD98B,KAAKy/B,cAAsB,4BAA6B,IAAI3C,2CAC5D98B,KAAK6/B,kBAAkB,kCAAmC,IAAI/C,2CAC9D98B,KAAKy/B,cAAsB,eAAgB,IAAI3C,2CAC/C,MAAMu6B,oBAAsB,IAAIf,gCAChCe,oBAAoB51B,sBACpBzhC,KAAK0gC,eAAe,mBAAoB22B,qBACxC,MAAMC,cAAgB,IAAIl6B,wBAC1Bk6B,cAAc71B,sBACdzhC,KAAK0gC,eAAe,aAAc42B,eAClCt3D,KAAK6+B,SAAkB,kBAAkB,GACzC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,iBAAkB,KCpD1C,MAAO04B,kBAAkBn6B,wBAEhBzT,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBsnC,gBACP,OAAOx3D,KAAKu+B,SAAiB,aAEtBi5B,cAAUtnC,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5B4d,eACP,OAAO9tC,KAAKu+B,SAAiB,YAEtBuP,aAAS5d,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BunC,eACP,OAAOz3D,KAAKs/B,aAAa,YAElBm4B,aAASvnC,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvB6d,eACP,OAAO/tC,KAAKu+B,SAAiB,YAEtBwP,aAAS7d,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BwnC,wBACP,OAAO13D,KAAKu+B,SAAkB,qBAEvBm5B,sBAAkBxnC,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGzCuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAK6+B,SAAkB,qBAAqB,IAI9C,MAAO84B,oBAAoBv6B,wBAElBzT,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBlH,WACP,OAAOhpB,KAAKs/B,aAAa,QAElBtW,SAAKkH,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnB0nC,iBACP,OAAO53D,KAAKu+B,SAAiB,cAEtBq5B,eAAW1nC,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7B2nC,qBACP,OAAO73D,KAAKu+B,SAAkB,kBAEvBs5B,mBAAe3nC,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGlC4nC,wBACP,OAAO93D,KAAKu+B,SAAkB,qBAEvBu5B,sBAAkB5nC,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrC6nC,eACP,OAAO/3D,KAAKu+B,SAAkB,YAEvBw5B,aAAS7nC,OAChBlwB,KAAK6+B,SAAkB,WAAY3O,OAG5B8nC,gBACP,OAAOh4D,KAAKu+B,SAAkB,aAEvBy5B,cAAU9nC,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAG7B+nC,cACP,OAAOj4D,KAAKu+B,SAAiB,WAEtB05B,YAAQ/nC,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BgoC,iBACP,OAAOl4D,KAAKu+B,SAAiB,cAEtB25B,eAAWhoC,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BhwB,iBACP,OAAOF,KAAKs/B,aAAa,cAElBp/B,eAAWgwB,OAClBlwB,KAAKw/B,aAAa,aAActP,OAGzBioC,iBACP,OAAOn4D,KAAKu+B,SAAiB,cAEtB45B,eAAWjoC,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BkoC,gBACP,OAAOp4D,KAAKu+B,SAAiB,aAEtB65B,cAAUloC,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BwnC,wBACP,OAAO13D,KAAKu+B,SAAkB,qBAEvBm5B,sBAAkBxnC,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrC4d,eACP,OAAO9tC,KAAKu+B,SAAiB,YAEtBuP,aAAS5d,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3B6d,eACP,OAAO/tC,KAAKu+B,SAAiB,YAEtBwP,aAAS7d,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BmoC,iBACP,OAAOr4D,KAAK4gC,oBAA2C22B,UAAW,cAE3Dc,eAAWnoC,OAClBlwB,KAAK2gC,oBAAoB,aAAczQ,OAGhCooC,kBACP,OAAOt4D,KAAKu+B,SAAiB,eAEtB+5B,gBAAYpoC,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAGlCuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAK6+B,SAAkB,kBAAkB,GACzC7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAkB,YAAY,GACnC7+B,KAAK6+B,SAAkB,aAAa,GACpC7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAKw/B,aAAa,aAAc36B,SAAAA,SAAAA,OAChC7E,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAKy/B,cAA0B,aAAc,IAAI3C,2CACjD98B,KAAK6+B,SAAiB,cAAe,KAIvC,MAAO05B,qBAAqBn7B,wBAEnB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBhG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BlH,WACP,OAAOhpB,KAAKu+B,SAAiB,QAEtBvV,SAAKkH,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBA,YACP,OAAOlwB,KAAKu+B,SAAiB,SAEtBrO,UAAMA,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxB4O,cACP,OAAO9+B,KAAKu+B,SAAiB,WAEtBO,YAAQ5O,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BsoC,UACP,OAAOx4D,KAAKu+B,SAAiB,OAEtBi6B,QAAItoC,OACXlwB,KAAK6+B,SAAiB,MAAO3O,OAGtBuoC,aACP,OAAOz4D,KAAKu+B,SAAkB,UAEvBk6B,WAAOvoC,OACdlwB,KAAK6+B,SAAkB,SAAU3O,OAG9BuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,IAC5B7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,QAAS,IAC/B7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAK6+B,SAAiB,MAAO,GAC7B7+B,KAAK6+B,SAAkB,UAAU,IAInC,MAAO65B,sBAAsBt7B,wBAEpB/S,YACP,OAAOrqB,KAAKu+B,SAAiB,SAEtBlU,UAAM6F,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxB3G,gBACP,OAAOvpB,KAAKu+B,SAAiB,aAEtBhV,cAAU2G,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5B1G,mBACP,OAAOxpB,KAAKu+B,SAAiB,gBAEtB/U,iBAAa0G,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAGnCuR,sBACHzhC,KAAK6+B,SAAiB,QAAS,IAC/B7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,eAAgB,IAIxC,MAAO85B,0BAA0Bv7B,wBAExBvJ,iBACP,OAAO7zB,KAAKu+B,SAAiB,cAEtB1K,eAAW3D,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBwO,mBACP,OAAO1+B,KAAKu+B,SAAiB,gBAEtBG,iBAAaxO,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAG/BlC,gBACP,OAAOhuB,KAAKu+B,SAAiB,aAEtBvQ,cAAUkC,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5B0oC,oBACP,OAAO54D,KAAKu+B,SAAiB,iBAEtBq6B,kBAAc1oC,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhC1M,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjB2oC,gBACP,OAAO74D,KAAKu+B,SAAkB,aAEvBs6B,cAAU3oC,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAG7B4oC,aACP,OAAO94D,KAAKu+B,SAAkB,UAEvBu6B,WAAO5oC,OACdlwB,KAAK6+B,SAAkB,SAAU3O,OAG1B6oC,oBACP,OAAO/4D,KAAKu+B,SAAkB,iBAEvBw6B,kBAAc7oC,OACrBlwB,KAAK6+B,SAAkB,gBAAiB3O,OAGjC8oC,gBACP,OAAOh5D,KAAKu+B,SAAiB,aAEtBy6B,cAAU9oC,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5B+oC,YACP,OAAOj5D,KAAKs/B,aAAa,SAElB25B,UAAM/oC,OACblwB,KAAKw/B,aAAa,QAAStP,OAGpB+vB,iBACP,OAAOjgD,KAAKu+B,SAAkB,cAEvB0hB,eAAW/vB,OAClBlwB,KAAK6+B,SAAkB,aAAc3O,OAG9BgpC,sBACP,OAAOl5D,KAAKu+B,SAAiB,mBAEtB26B,oBAAgBhpC,OACvBlwB,KAAK6+B,SAAiB,kBAAmB3O,OAGtCuR,sBACHzhC,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,eAAgB,IACtC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAkB,aAAa,GACpC7+B,KAAK6+B,SAAkB,UAAU,GACjC7+B,KAAK6+B,SAAkB,iBAAiB,GACxC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAKw/B,aAAa,QAAS36B,SAAAA,SAAAA,OAC3B7E,KAAK6+B,SAAkB,cAAc,GACrC7+B,KAAK6+B,SAAiB,kBAAmB,IAI3C,MAAOs6B,oBAAoB/7B,wBAElB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB+lB,WACP,OAAOj2C,KAAKs/B,aAAa,QAElB2W,SAAK/lB,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnBkpC,kBACP,OAAOp5D,KAAKs/B,aAAa,eAElB85B,gBAAYlpC,OACnBlwB,KAAKw/B,aAAa,cAAetP,OAG1BmpC,0BACP,OAAOr5D,KAAKu+B,SAAiB,uBAEtB86B,wBAAoBnpC,OAC3BlwB,KAAK6+B,SAAiB,sBAAuB3O,OAG1CuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAKw/B,aAAa,cAAe36B,SAAAA,SAAAA,OACjC7E,KAAK6+B,SAAiB,sBAAuB,KAI/C,MAAOy6B,kCAAkCl8B,wBAEhC5Z,SACP,OAAOxjB,KAAKo+B,iBAAyB,MAE9B5a,OAAG0M,OACVlwB,KAAK2+B,iBAAyB,KAAMzO,OAG7BvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBhG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BqpC,eACP,OAAOv5D,KAAKu+B,SAAiB,YAEtBg7B,aAASrpC,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3B7wB,aACP,OAAOW,KAAK2/B,cAAsB,UAE3BtgC,WAAO6wB,OACdlwB,KAAKy/B,cAAsB,SAAUvP,OAGlCuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAKy/B,cAAsB,SAAU,IAAI3C,4CAI3C,MAAO08B,4BAA4Bp8B,wBAE1B5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBupC,cACP,OAAOz5D,KAAKu+B,SAAkB,WAEvBk7B,YAAQvpC,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG3BwpC,oBACP,OAAO15D,KAAKu+B,SAAiB,iBAEtBm7B,kBAAcxpC,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhChG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAGlCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAkB,WAAW,GAClC7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAK6+B,SAAiB,cAAe,KAMvC,MAAO86B,kCAAkCziB,OAIhC0iB,8BACP,OAAO55D,KAAKu+B,SAAkBi3B,gCAAgCC,8BAEvDmE,4BAAwB1pC,OAC/BlwB,KAAK6+B,SAAkB22B,gCAAgCC,6BAA8BvlC,OAI9E2pC,iBACP,OAAO75D,KAAKu+B,SAAkBi3B,gCAAgCE,iBAEvDmE,eAAW3pC,OAClBlwB,KAAK6+B,SAAkB22B,gCAAgCE,gBAAiBxlC,OAIjE4pC,2BACP,OAAO95D,KAAKu+B,SAAiBi3B,gCAAgCG,0BAA2B9b,sBAAAA,UAEjFigB,yBAAqB5pC,OAC5BlwB,KAAK6+B,SAAiB22B,gCAAgCG,0BAA2BzlC,OAI1E6pC,uCACP,OAAO/5D,KAAKu+B,SAAiBi3B,gCAAgCI,sCAAuC/b,sBAAAA,UAE7FkgB,qCAAiC7pC,OACxClwB,KAAK6+B,SAAiB22B,gCAAgCI,sCAAuC1lC,OAItF8pC,2BACP,OAAOh6D,KAAKu+B,SAAiBi3B,gCAAgCK,0BAA2Bhc,sBAAAA,UAEjFmgB,yBAAqB9pC,OAC5BlwB,KAAK6+B,SAAiB22B,gCAAgCK,0BAA2B3lC,OAI1E+pC,gCACP,OAAOj6D,KAAKu+B,SAAiBi3B,gCAAgCM,+BAAgCjc,sBAAAA,UAEtFogB,8BAA0B/pC,OACjClwB,KAAK6+B,SAAiB22B,gCAAgCM,+BAAgC5lC,OAI/EgqC,oCACP,OAAOl6D,KAAKu+B,SAAiBi3B,gCAAgCO,mCAAoClc,sBAAAA,UAE1FqgB,kCAA8BhqC,OACrClwB,KAAK6+B,SAAiB22B,gCAAgCO,mCAAoC7lC,OAInFiqC,kCACP,OAAOn6D,KAAKu+B,SAAiBi3B,gCAAgCQ,iCAAkCnc,sBAAAA,UAExFsgB,gCAA4BjqC,OACnClwB,KAAK6+B,SAAiB22B,gCAAgCQ,iCAAkC9lC,OAIjFkqC,gCACP,OAAOp6D,KAAKu+B,SAAiBi3B,gCAAgCS,+BAAgCpc,sBAAAA,UAEtFugB,8BAA0BlqC,OACjClwB,KAAK6+B,SAAiB22B,gCAAgCS,+BAAgC/lC,OAI/EmqC,oBACP,OAAOr6D,KAAKu+B,SAAiBi3B,gCAAgCU,mBAAoBrc,sBAAAA,UAE1EwgB,kBAAcnqC,OACrBlwB,KAAK6+B,SAAiB22B,gCAAgCU,mBAAoBhmC,OAInEoqC,kBACP,OAAOt6D,KAAKs/B,aAAak2B,gCAAgCW,iBAAkBtc,sBAAAA,eAEpEygB,gBAAYpqC,OACnBlwB,KAAKw/B,aAAag2B,gCAAgCW,iBAAkBjmC,OAI7DqqC,kCACP,OAAOv6D,KAAKu+B,SAAiBi3B,gCAAgCY,iCAAkCvc,sBAAAA,eAOnGj6C,cACIiD,MAAM2gC,YAAYgrB,sBAOTgM,uBAAuBznB,aAAiC,yDACjE,OAAO,MAAKyF,4BAAuEghB,oBAAqB,iBAAkB,MAAM,GAAM,EAAM3f,sBAAAA,KAAiB9G,eAD5F,GAIxD0nB,wBAAwB1nB,aAAiC,0DAClE,OAAO,OAAKyF,4BACR8gB,0BACA,kBACA,MACA,GACA,EACAzf,sBAAAA,SACA9G,eAR8D,GAYzD2nB,oCAAoC3nB,aAAiC,0DAC9E,OAAO,OAAKyF,4BACRie,2BACA,8BACA,MACA,GACA,EACA5c,sBAAAA,UACA9G,eAR0E,GAYrE4nB,qBAAqB5nB,aAAiC,0DAC/D,OAAO,OAAKyF,4BAAuD2gB,YAAa,eAAgB,MAAM,GAAO,EAAOtf,sBAAAA,kBAA8B9G,eADnF,GAItD6nB,0BAA0B7nB,aAAiC,0DACpE,OAAO,OAAKyF,4BAAmEmgB,kBAAmB,eAAgB,MAAM,GAAO,EAAM9e,sBAAAA,YAAwB9G,eADzF,GAI3D8nB,yBAAyB9nB,aAAiC,0DACnE,MAAMnwC,aAAe,OAAKs2C,sBAA8B,mBAAoB,KAAMW,sBAAAA,KAAiB9G,aACnG,OAAInwC,OACOiC,SAAAA,SAAAA,MAAejC,OAAO0D,eAE1BzB,SAAAA,SAAAA,QAL4D,GAQ1Di2D,uBAAuB/nB,aAAiC,0DACjE,OAAO,OAAKyF,4BAA2DkgB,cAAe,iBAAkB,MAAM,GAAM,EAAO7e,sBAAAA,UAAsB9G,eADhF,GAIxDgoB,uBAAuBhoB,aAA0B,0DAY1D,OAAO,OAAKsG,+BAA8C,oBAAqB,OAAQ,KAAMtG,aAXpE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QACjDL,QAAQt5B,aAGL,IAAIq5B,SAAuB,SAAUC,QAASK,QACjDA,OAAO35B,iBARuC,GAejD25D,iCAAiCx3C,GAAWuvB,aAA0B,0DAC/E,MAYMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQ3iB,aAAa,KAAMhc,IAEpB,OAAK61B,+BAAwC,8BAA+B,OAAQ8I,QAASpP,aAf3E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAAgB,UACxC,OAAO,IAAIi5B,SAAiB,SAAUC,QAASK,QAC3CL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAAiB,SAAUC,QAASK,QAC3CA,OAAO35B,kBAT4D,GAmBtE45D,uBAAuBloB,aAAiC,2DACjE,aAAa,QAAKkG,qBAAkC7b,wBAAa,kBAAkB,EAAOyc,sBAAAA,KAAiB9G,eAD1C,GAIxDmoB,qBAAqBnoB,aAAiC,2DAC/D,OAAO,QAAKyF,4BAAyD+f,aAAc,eAAgB,MAAM,GAAM,EAAO1e,sBAAAA,KAAiB9G,eADxE,GAItDooB,yBAAyBpoB,aAA0B,2DAa5D,OAAO,QAAKsG,+BAAoD,mBAAoB,MAAO,KAAMtG,aAZxE1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAA6B,SAAUC,QAASK,QACvDL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAA6B,SAAUC,QAASK,QACvDA,OAAO35B,kBATyC,GAgBnD+5D,uCAAuCroB,aAA0B,2DAa1E,OAAO,QAAKsG,+BAAoD,iCAAkC,MAAO,KAAMtG,aAZtF1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAA6B,SAAUC,QAASK,QACvDL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAA6B,SAAUC,QAASK,QACvDA,OAAO35B,kBATuD,GAgBjEg6D,gCAAgCtoB,aAA0B,2DAanE,OAAO,QAAKsG,+BAAoD,0BAA2B,MAAO,KAAMtG,aAZ/E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAA6B,SAAUC,QAASK,QACvDL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAA6B,SAAUC,QAASK,QACvDA,OAAO35B,kBATgD,GAgB1Di6D,kCAAkCvoB,aAA0B,2DAarE,OAAO,QAAKsG,+BAAoD,2BAA4B,MAAO,KAAMtG,aAZhF1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAA6B,SAAUC,QAASK,QACvDL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAA6B,SAAUC,QAASK,QACvDA,OAAO35B,kBATkD,GAgB5Dk6D,+BAA+BxoB,aAA0B,2DAalE,OAAO,QAAKsG,+BAAoD,yBAA0B,MAAO,KAAMtG,aAZ9E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAA6B,SAAUC,QAASK,QACvDL,QAAQ/3B,WAGZ,OAAO,IAAI83B,SAA6B,SAAUC,QAASK,QACvDA,OAAO35B,kBAT+C,GAgBzDm6D,qBAAqBzoB,aAAiC,2DAC/D,OAAO,QAAKyF,4BAAuDmf,YAAa,eAAgB,MAAM,GAAM,EAAO9d,sBAAAA,UAAsB9G,eAD1E,GAItD0oB,gBAAgBtxB,MAA6B4I,aAAiC,2DACvF,OAAO,QAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,iBAA6B9G,eADN,GAI9E2oB,uBAAuBvxB,MAA6B4I,aAAiC,2DAC9F,OAAO,QAAK0F,qBAAqB,iBAAkB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADO,GAIrF4oB,wBAAwBzrC,MAA0B6iB,aAA0B,2DAarF,OAAO,QAAKsG,+BAA8C,qBAAsB,OAAQnpB,MAAO6iB,aAZtE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QACjDL,QAAQt5B,aAGL,IAAIq5B,SAAuB,SAAUC,QAASK,QACjDA,OAAO35B,iBARkE,ICt6BvF,MAAOu6D,mBAAbh8D,cACS,KAAAqE,IAAM,GACN,KAAA0rC,KAAO,GACP,KAAAluC,KAAsB,KACtB,KAAAo6D,SAAU,EACV,KAAAC,qBAAsB,EAEtB,KAAAxiB,gBAAmE,KACnE,KAAAxV,SAAoD,KAE9Ci4B,eAAen5D,QAA0B,yDACpD,GAA4B,MAAxB,MAAK02C,gBAAyB,CAChC,MAAM0iB,GAAK,IAAI1mC,aACf0mC,GAAG5lC,uBAAuBxzB,QAC1B,MAAMq5D,UAAY,MAAK3iB,gBAAgB0iB,IAClB,MAAjB,MAAKl4B,iBACD,MAAKA,eAAem4B,SANsB,IAYlD,MAAOC,YAMAC,sBACT,OAAOn8D,KAAKg1D,aAOdp1D,YAAY82C,QAbJ,KAAAse,aAAuC,KACvC,KAAAoH,aAA2C,KAajDp8D,KAAKg1D,aAAe,IAAID,gBAAgBre,OAAO0C,MAG1Clb,UACLl+B,KAAKg1D,aAAe,KAOTqH,WAAcC,WAA+BnnC,QAAuC,0DAC/F,IAAK,OAAKinC,aACR,MAAM,IAAIt9D,MAAM,uDAGlB,MAAMy9D,IAAM,OAAKH,aACjB,IAAIG,IAcF,MAAM,IAAIz9D,MAAM,+BAbhB,IAAgC,IAA5By9D,IAAIT,qBAAiC3mC,QAAUonC,IAAIjjB,gBAAiB,CAEtE,MAAMj4C,SAAW,IAAIi0B,aACrBj0B,SAASm0B,WAAaJ,4BAAAA,SAChBD,aAAaonC,IAAIjjB,gBAAgBj4C,gBAGrCk7D,IAAIz4B,SADF3O,QAGa,KAMrB,OAAKinC,aAAe,OAtB2E,GA0BpFvlC,aAAaqX,OAAyB,0DACjD,GAAyB,MAArB,OAAK8mB,aACP,MAAM,IAAIl2D,MAAM,uBAGlB,MAAMuC,eAAiB,OAAK2zD,aAAaI,wBAAwBlnB,OACjE,GAAI7sC,SAASm0B,aAAeJ,4BAAAA,GAC1B,IAAK,MAAMw/B,qBAAqBvzD,SAASuzD,kBAAmB,CAE1D,MAAM2H,IAAM3H,kBAAkBnnC,QACnB,MAAP8uC,YACIA,IAAIR,eAAenH,yBAK7B,IAAK,MAAMA,qBAAqBvzD,SAASuzD,kBAAmB,CAC1D,MAAM2H,IAAM3H,kBAAkBnnC,QACnB,MAAP8uC,MACF3H,kBAAkBp/B,WAAan0B,SAASm0B,WACpCn0B,SAASI,OACXmzD,kBAAkBhyD,OAASvB,SAASI,YAEhC86D,IAAIR,eAAenH,oBAI/B,OAAOvzD,WA3B0C,GAkC5C2xC,wBACL/uC,IACA0rC,KACAluC,KACA63C,iBAEA,GAAyB,MAArBt5C,KAAKg1D,aACP,MAAM,IAAIl2D,MAAM,uBAGlB,MAAMy9D,IAAM,IAAIX,mBACZtiB,kBACFijB,IAAIjjB,gBAAkBA,iBAGpB3J,MACF4sB,IAAIT,qBAAsB,EAC1B97D,KAAKg1D,aAAahiB,wBAAwB/uC,IAAK0rC,KAAMluC,KAAM86D,MAG3DA,IAAIT,qBAAsB,EAE5B97D,KAAKo8D,aAAeG,KC5IlB,MAAOC,cAAb58D,cACS,KAAAsuC,MAAQ,GACR,KAAAuuB,WAAmB,IAAIx9B,KACvB,KAAAy9B,kBAAoB,EAEpBC,4BACL,OAA8C,IAAxC38D,KAAKkuC,MAAMQ,WAAW,gBAAqE,IAAxC1uC,KAAKkuC,MAAMQ,WAAW,cACtE,SAAW1uC,KAAKkuC,MAElBluC,KAAKkuC,OCPV,MAAO0uB,UAYXh9D,YAAYi9D,gBAA0B1nC,OAAagF,QAAiB2iC,YAR5D,KAAAC,SAAW,EACX,KAAAC,YAAc,EACd,KAAAC,YAAa,EACb,KAAAC,kBAAmB,EACnB,KAAAC,0BAA2B,EAC3B,KAAAC,cAAgB,EAChB,KAAAC,UAAW,EAGjBr9D,KAAKs9D,QAAUnoC,OACfn1B,KAAK+8D,SAAW5iC,QAChBn6B,KAAKg9D,YAAcF,WACnB98D,KAAKu9D,OAAS,IAAI15B,OAAM,KACtB7jC,KAAKw9D,mBAEPx9D,KAAKy9D,UAAY,IAAI55B,OAAM,KACzB7jC,KAAKw9D,mBAEPx9D,KAAKk9D,iBAAmBL,gBACxB78D,KAAKq9D,SAAuC,kBAA5BloC,OAAOv1B,YAAY+pB,KAG9B+zC,UACsB,IAAvB19D,KAAKo9D,eACPp9D,KAAKy9D,UAAUv5B,OAAOlkC,KAAKg9D,aAE7Bh9D,KAAKo9D,iBACmB,IAApBp9D,KAAKi9D,WACPj9D,KAAKu9D,OAAOr5B,OAAOlkC,KAAK+8D,UAExB/8D,KAAKm9D,0BAA2B,EAItBK,gBAAa,yDACzB,GAAoB,MAAhB,MAAKF,QAAT,CAIA,MAAKpgC,UACL,KACyB,IAAlB,MAAKmgC,SACR,MAAKC,gBAEC,MAAKA,UAGb,MAAOl8D,IAGT,MAAKu8D,YAhBoB,GAmBpBzgC,UACLl9B,KAAKi9D,YAAa,EAClBj9D,KAAKu9D,OAAOr5B,QAAQ,GACpBlkC,KAAKy9D,UAAUv5B,QAAQ,GACvBlkC,KAAKo9D,cAAgB,EAGhBO,SACL39D,KAAKi9D,YAAa,EACdj9D,KAAKm9D,2BAAsD,IAA1Bn9D,KAAKk9D,mBACxCl9D,KAAKm9D,0BAA2B,EAChCn9D,KAAK09D,WAIFx/B,UACLl+B,KAAKk9B,WClBH,MAAO0gC,cAzDP,MAIFh+D,YAAYy4B,OAHJ,KAAAwlC,MAAwB,GAI5B79D,KAAKq4B,MAAQA,MAGTylC,QACJ,GAAI99D,KAAKq4B,MAAQ,GAAKr4B,KAAK69D,MAAM75D,OAAS,EAAG,CACzChE,KAAKq4B,QACL,IAAI70B,KAAOxD,KAAK69D,MAAME,QACtB,QAAah+D,IAATyD,KACA,KAAM,2CAEVA,QAIDw6D,UACH,OAAO,IAAItjC,SAAoB,CAACuhC,IAAKgC,OAYjCj+D,KAAK69D,MAAMl/C,MAXE,KACT,IAAIu/C,UAAW,EACfjC,KAAI,KACKiC,WACDA,UAAW,EACXl+D,KAAKq4B,QACLr4B,KAAK89D,eAMd99D,KAAKq4B,MAAQ,GACZr4B,KAAK89D,WAOVK,IAAO7nB,GACV,OAAOt2C,KAAKg+D,UACXI,MAAKC,SACK/nB,IACN8nB,MAAMnC,MACHoC,UACOpC,OAEVqC,OAAOC,MAEJ,MADAF,UACME,WAOlB3+D,cACIiD,MAAM,IChDd,MAUM27D,cAAiBr9B,QACfA,OAAOlJ,IAXG,KAYH,IAAI2E,IAZD,KAcPuE,OAGLs9B,WAAa,CAACC,OAAiBhoB,OAA+BvV,UAChE,MAAMb,UAAYo+B,OAAO9+D,YACnB++D,KAAOjoB,OAAOO,kBAAkB3W,UAAW,CAAE,CAACub,aAAaM,iBAAkBuiB,OAAO7qC,aAM1F,OALIsN,OACAw9B,KAAKz9B,eAAew9B,OAAQv9B,QAE5Bw9B,KAAK9gC,SAAS6gC,QAEXC,MAGX,MAAMC,yBAQFh/D,YAA4Bi/D,QAAuBH,QAAvB,KAAAG,QAAAA,QAAuB,KAAAH,OAAAA,OAPnC,KAAAI,iBAAmB,IAAIliC,IACvB,KAAAmiC,iBAAmB,IAAIniC,IACvB,KAAAoiC,gBAAkB,IAAIr5D,IACtB,KAAAs5D,mBAAqB,IAAIt5D,IAClC,KAAAu5D,oBAAsB,EACtB,KAAAC,eAAgB,EAIhBC,kBACHp/D,KAAKm/D,eAAgB,EACrB,IAAK,MAAMhtB,YAAYnyC,KAAK++D,iBACxB/+D,KAAK0+D,OAAO7lB,cAAc1G,UAE9BnyC,KAAK++D,iBAAiB5mC,QACtBn4B,KAAK8+D,iBAAiB3mC,SAI9B,MAAMknC,qBAKSC,sBACP,OAAOd,cAAcx+D,KAAKu/D,kBAG9B3/D,YAA4B8+D,QAAA,KAAAA,OAAAA,OARX,KAAAa,iBAAmB,IAAI3iC,IACvB,KAAA4iC,aAAe,IAAI75D,IACpB,KAAA85D,aAAe56D,SAAAA,SAAAA,YAQxB66D,kBAAkBb,QAAgBH,OAAiBxqB,MAAeyrB,WACrEzrB,MAAQA,MAAM5tC,cACd,MAAMs5D,YAAc5/D,KAAKw/D,aAAaz9D,IAAImyC,OACtC0rB,YACAA,YAAY5jC,IAAI6iC,SAEhB7+D,KAAKw/D,aAAap5D,IAAI8tC,MAAOrvC,SAAAA,SAAAA,UAAmB,CAACg6D,WAErD7+D,KAAKu/D,iBAAiBvjC,IAAIkY,OAE1B,IAAI2rB,WAAa7/D,KAAKy/D,aAAa19D,IAAI88D,SAClCgB,aACDA,WAAa,IAAIjB,yBAAyBC,QAASH,QACnD1+D,KAAKy/D,aAAar5D,IAAIy4D,QAASgB,aAGnC,IAAIC,0BAA4BD,WAAWb,gBAAgBj9D,IAAI49D,WAC1DG,4BACDA,0BAA4B,IAAIljC,IAChCijC,WAAWb,gBAAgB54D,IAAIu5D,UAAWG,4BAE9CA,0BAA0B9jC,IAAIkY,OAC9B2rB,WAAWX,qBAAuBS,UAG/BI,qBAAqBlB,QAAgBH,OAAiBvsB,SAAkBwtB,WAC3E,IAAIE,WAAa7/D,KAAKy/D,aAAa19D,IAAI88D,SAClCgB,aACDA,WAAa,IAAIjB,yBAAyBC,QAASH,QACnD1+D,KAAKy/D,aAAar5D,IAAIy4D,QAASgB,aAGnC,IAAIG,6BAA+BH,WAAWZ,mBAAmBl9D,IAAI49D,WAChEK,+BACDA,6BAA+B,IAAIpjC,IACnCijC,WAAWZ,mBAAmB74D,IAAIu5D,UAAWK,+BAEjDA,6BAA6BhkC,IAAImW,UACjC0tB,WAAWX,qBAAuBS,UAG/BM,YAAYpB,SACf7+D,KAAKy/D,aAAaxjC,OAAO4iC,SAEzB,MAAMqB,eAA2B,GACjC,IAAK,MAAOhsB,MAAO0rB,eAAgB5/D,KAAKw/D,aACpCI,YAAY3jC,OAAO4iC,SACM,IAArBe,YAAY9jC,MACZokC,eAAevhD,KAAKu1B,OAI5B,IAAK,MAAMA,SAASgsB,eAChBlgE,KAAKw/D,aAAavjC,OAAOiY,OACzBl0C,KAAKu/D,iBAAiBtjC,OAAOiY,QAKnC,MAAOisB,uBAAsB,SAChB,KAAAC,SAAW,IAAIz6D,IAQ9B/F,YAAoB82C,QAAA,KAAAA,OAAAA,OANZ,KAAA2pB,uBAAyBx7D,SAAAA,SAAAA,YACzB,KAAAy7D,iBAAmBz7D,SAAAA,SAAAA,YACnB,KAAA07D,iBAAmB17D,SAAAA,SAAAA,YACnB,KAAA27D,6BAA+B37D,SAAAA,SAAAA,YAC/B,KAAA47D,cAAgC,GAGpCzgE,KAAKygE,cAAc9hD,KAAK+3B,OAAOgqB,qBAAqB52B,KAAQ9pC,KAAK0gE,oBAAoB52B,QAGjF42B,oBAAoB52B,KACnBA,IAAI0H,aACLxxC,KAAKqgE,uBAAuBloC,QAC5Bn4B,KAAKsgE,iBAAiBnoC,QACtBn4B,KAAKwgE,6BAA6BroC,QAClCn4B,KAAKugE,iBAAiBpoC,SAIvByY,oBAAoBiuB,QAAgB/0B,KACvC,MAAM62B,qBAAuB3gE,KAAKqgE,uBAAuBt+D,IAAI+nC,IAAItmB,IACjE,GAAIm9C,qBAAsB,CACtB,MAAMd,WAAac,qBAAqBlB,aAAa19D,IAAI88D,SACzD,GAAIgB,aAAeA,WAAWX,oBAAsBp1B,IAAIhW,SAAWgW,IAAIhW,MAAO,CAC1E+rC,WAAWV,eAAgB,EAC3B,MAAMh+B,OAAS0+B,WAAWb,gBAAgBj9D,IAAI+nC,IAAIhW,OAClD,GAAIqN,OACA,IAAK,MAAM+S,SAAS/S,OAChB0+B,WAAWf,iBAAiB9iC,IAAIkY,OAIxC,MAAM6qB,iBAAmBc,WAAWZ,mBAAmBl9D,IAAI+nC,IAAIhW,OAC/D,GAAIirC,iBACA,IAAK,MAAM5sB,YAAY4sB,iBACnBc,WAAWd,iBAAiB/iC,IAAImW,UAIxC,IAAIyuB,uBAAyB5gE,KAAKwgE,6BAA6Bz+D,IAAI+nC,IAAItmB,IAClEo9C,yBACDA,uBAAyB,IAAIhkC,IAC7B58B,KAAKwgE,6BAA6Bp6D,IAAI0jC,IAAItmB,GAAIo9C,yBAElDA,uBAAuB5kC,IAAI6jC,cAKhC98D,WAAW2zC,QACd,IAAImqB,QAAU7gE,KAAKogE,SAASr+D,IAAI20C,QAChC,OAAImqB,UAIJA,QAAU,IAAIV,uBAAuBzpB,QACrC12C,KAAKogE,SAASh6D,IAAIswC,OAAQmqB,SACnBA,SAGJC,wBAAwBjC,QAAgBH,OAAiBxqB,MAAeyrB,WAC3E,IAAIE,WAAa7/D,KAAKqgE,uBAAuBt+D,IAAI28D,OAAOl7C,IACnDq8C,aACDA,WAAa,IAAIR,qBAAqBZ,WAAWC,OAAQ1+D,KAAK02C,SAC9D12C,KAAKqgE,uBAAuBj6D,IAAIs4D,OAAOl7C,GAAIq8C,aAE/CA,WAAWH,kBAAkBb,QAASH,OAAQxqB,MAAOyrB,WAErD,MAAMW,iBAAmBtgE,KAAKsgE,iBAAiBv+D,IAAI28D,OAAOl7C,IACtD88C,iBACAA,iBAAiBtkC,IAAI6iC,SAErB7+D,KAAKsgE,iBAAiBl6D,IAAIs4D,OAAOl7C,GAAI3e,SAAAA,SAAAA,UAAmB,CAACg6D,WAI1DkC,2BAA2BlC,QAAgBH,OAAiBvsB,SAAkBwtB,WACjF,IAAIE,WAAa7/D,KAAKqgE,uBAAuBt+D,IAAI28D,OAAOl7C,IACnDq8C,aACDA,WAAa,IAAIR,qBAAqBZ,WAAWC,OAAQ1+D,KAAK02C,SAC9D12C,KAAKqgE,uBAAuBj6D,IAAIs4D,OAAOl7C,GAAIq8C,aAE/CA,WAAWE,qBAAqBlB,QAASH,OAAQvsB,SAAUwtB,WAE3D,MAAMW,iBAAmBtgE,KAAKsgE,iBAAiBv+D,IAAI28D,OAAOl7C,IACtD88C,iBACAA,iBAAiBtkC,IAAI6iC,SAErB7+D,KAAKsgE,iBAAiBl6D,IAAIs4D,OAAOl7C,GAAI3e,SAAAA,SAAAA,UAAmB,CAACg6D,WAI1DmC,sBAAsBnC,QAAgBj+C,UACzC,MAAM0/C,iBAAmBtgE,KAAKsgE,iBAAiBv+D,IAAI6e,UACnD,GAAI0/C,iBAEA,GADAA,iBAAiBrkC,OAAO4iC,SACM,IAA1ByB,iBAAiBxkC,MAKjB,GAJA97B,KAAKqgE,uBAAuBpkC,OAAOrb,UACnC5gB,KAAKugE,iBAAiBtkC,OAAOrb,UAC7B5gB,KAAKwgE,6BAA6BvkC,OAAOrb,UAEA,IAArC5gB,KAAKqgE,uBAAuBvkC,KAAY,CACxC,IAAK,MAAMjE,eAAe73B,KAAKygE,cAC3B5oC,cAEJsoC,uBAAuBC,SAASnkC,OAAOj8B,KAAK02C,aAE7C,CACH,MAAMmpB,WAAa7/D,KAAKqgE,uBAAuBt+D,IAAI6e,UAC/Ci/C,YACAA,WAAWI,YAAYpB,SAE3B,MAAM+B,uBAAyB5gE,KAAKwgE,6BAA6Bz+D,IAAI6e,UACrE,GAAIggD,uBAAwB,CACxB,MAAMK,kCAAoCC,QAAQN,wBAAyBt/B,GAAMA,EAAEu9B,QAAQsC,OAAOtC,WAC9FoC,mCACAL,uBAAuB3kC,OAAOglC,qCAOrCG,iBAA0DvC,QAAgBv+B,UAAwB6J,OAAkB,yDAC7H,MAAMk3B,SAAWx8D,SAAAA,SAAAA,YACjB,IAAK,MAAM+b,YAAYupB,MAAMoL,MACzB,GAAI,MAAK8qB,uBAAuBpoC,IAAIrX,UAAW,CAC3C,IAAI0gD,MAAQ,MAAKf,iBAAiBx+D,IAAI6e,UACjC0gD,QACDA,MAAQ,IAAI1D,MACZ,MAAK2C,iBAAiBn6D,IAAIwa,SAAU0gD,QAExCD,SAASj7D,IAAIwa,eAAgB0gD,MAAMtD,WAI3C,MAAMp7D,OAAc,GACpB,IACI,MAAM2+D,oBAAsB18D,SAAAA,SAAAA,YACtB28D,sBAAwB38D,SAAAA,SAAAA,YAC9B,IAAK,MAAM+b,YAAYupB,MAAMoL,MAAO,CAChC,MAAMorB,qBAAuB,MAAKN,uBAAuBt+D,IAAI6e,UAC7D,GAAI+/C,qBAAsB,CACtB,MAAMd,WAAac,qBAAqBlB,aAAa19D,IAAI88D,SACzD,GAAIgB,YAAcA,WAAWV,eAAsD,IAArCU,WAAWf,iBAAiBhjC,KAAY,CAElF+jC,WAAWT,kBACXx8D,OAAO+b,KAAKkhD,WAAWnB,QACvB,MAAML,QAAUgD,SAASt/D,IAAI6e,UACzBy9C,UACAA,UACAgD,SAASplC,OAAOrb,WAEpB,UAIR,MAAMggD,uBAAyB,MAAKJ,6BAA6Bz+D,IAAI6e,UAC/D89C,aAAe,MAAKhd,eAAkB9gC,SAAUupB,MAAMhJ,QAC5D,GAAIu9B,SAAWkC,uBAAwB,CAEnCh+D,OAAO+b,KAAK+/C,QACZ,MAAML,QAAUgD,SAASt/D,IAAI6e,UACzBy9C,UACAA,UACAgD,SAASplC,OAAOrb,gBAIpB,GADA2gD,oBAAoBvlC,IAAIpb,UACpBggD,uBAAwB,CAExB,MAAM9B,iBAAmB,IAAIliC,IAC7B4kC,sBAAsBp7D,IAAIwa,SAAUk+C,kBACpC,IAAK,MAAMe,cAAce,uBACrB,IAAK,MAAM1sB,SAAS2rB,WAAWf,iBAC3BA,iBAAiB9iC,IAAIkY,QAOzC,GAAIqtB,oBAAoBzlC,KAAO,EAAG,CAI9B,GAHAqO,MAAMoL,MAAQ1wC,SAAAA,SAAAA,UAAmB08D,oBAAoBz/D,QAGpB,IAA7By/D,oBAAoBzlC,KAAY,CAChC,MAAM2lC,iBAAmBD,sBAAsBz/D,IAAI4E,MAAMC,KAAK26D,qBAAqB,IAC/EE,mBACAt3B,MAAMhJ,OAASq9B,cApTrB,EAACkD,QAA2BC,WAC1C,MAAMC,aAAe,IAAIhlC,IAAY8kC,SACrC,IAAK,MAAMxtB,SAASytB,QAChBC,aAAa5lC,IAAIkY,OAErB,OAAO0tB,cA+S0CC,CAAU13B,MAAMhJ,OAAQsgC,oBAI7D,MAAMn/B,eAAiB,MAAKoU,OAAO0qB,iBAAuB9gC,UAAW6J,MAAO,KAAM,MAClF,IAAK,MAAMu0B,UAAUp8B,SAAU,CAC3B,IAAIw/B,eAAiBpD,OACrB,MAAM99C,SAAW89C,OAAOl7C,GAElBm9C,qBAAuB,MAAKN,uBAAuBt+D,IAAI6e,UAC7D,GAAI+/C,qBAAsB,CAElBx2B,MAAMhJ,OAAOlJ,IAlUvB,KAmUU0oC,qBAAqBjC,OAAOx9B,eAAew9B,QAE3CiC,qBAAqBjC,OAAOx9B,eAAew9B,OAAQv0B,MAAMhJ,QAG7D,MAAMy/B,uBAAyB,MAAKJ,6BAA6Bz+D,IAAI6e,UACrE,GAAIggD,uBAAwB,CACxB,MAAMmB,6BAA2D,GACjE,IAAK,MAAMlC,cAAce,uBAAwB,CAC7C,MAAM9B,iBAAmB,IAAIliC,IAAYijC,WAAWf,kBAG9CkD,eAAiBvD,WAAWoB,WAAWnB,OAAQ,MAAKhoB,QAC1DsrB,eAAe9gC,eAAew9B,OAAQI,kBACtCe,WAAWnB,OAASsD,eAGpB,IAAK,MAAM9tB,SAAS4qB,kBACZ30B,MAAMhJ,OAAOlJ,IAAIic,QAAU/J,MAAMhJ,OAAOlJ,IArV9D,OAsVsB4nC,WAAWf,iBAAiB7iC,OAAOiY,OAIF,IAArC2rB,WAAWf,iBAAiBhjC,MAC5BimC,6BAA6BpjD,KAAKkhD,YAI1C,IAAK,MAAMA,cAAckC,6BACrBnB,uBAAuB3kC,OAAO4jC,YAGE,IAAhCe,uBAAuB9kC,MACvB,MAAK0kC,6BAA6BvkC,OAAOrb,UAIjD,MAAMi/C,WAAac,qBAAqBlB,aAAa19D,IAAI88D,SACrDgB,YAAcA,WAAWV,eAAsD,IAArCU,WAAWf,iBAAiBhjC,OAEtE+jC,WAAWT,kBACX0C,eAAiBjC,WAAWnB,QAIpC97D,OAAO+b,KAAKmjD,kBAGtB,QACE,IAAK,MAAMzD,WAAWgD,SAAShiE,SAC3Bg/D,UAEJgD,SAASlpC,QAGb,OAAOv1B,SAtIsH,GAyInH8+C,eAAkC9gC,SAAiBugB,QAAmB,0DAChF,MAAMw/B,qBAAuB,OAAKN,uBAAuBt+D,IAAI6e,UAC7D,GAAI+/C,qBAAsB,CACtB,IAAIsB,cAAe,EACnB,GAAIA,aACA,IAAK,MAAM/tB,SAASsqB,cAAcr9B,QAC9B,IAAKw/B,qBAAqBrB,gBAAgBrnC,IAAIic,OAAQ,CAClD+tB,cAAe,EACf,MAKZ,IAAKA,aACD,OAAO,KAGX,IAEI,MAAMC,UAAYzD,WAAWkC,qBAAqBjC,OAAQ,OAAKhoB,OAAQvV,OAAOlJ,IAhZ5E,UAgZ6Fl4B,EAAYohC,QAG3G,OAFA+gC,UAAU7pB,iBAEH6pB,UACT,MAAOxgE,OACL,OAAKg1C,OAAOyrB,mBAAmBC,eAAezjE,YAAYG,MAAO,mCAAoC,0BAA2B,IAAIw/D,SAI5I,OAAO,OA5ByE,I,oFC9WxF,MAAM+D,oBAANziE,cACW,KAAA4jB,GAAK3e,SAAAA,SAAAA,UAAmBwB,WACxB,KAAAg4B,WAAa,EACb,KAAAikC,SAA+C,KAC/C,KAAAntC,OAA2C,KAE3CktC,oBAAoBhkC,WAAoBikC,SAAuCntC,QAClFn1B,KAAKsiE,SAAWA,SAChBtiE,KAAKm1B,OAASA,OACdn1B,KAAKq+B,WAAaA,YAI1B,MAAMkkC,aAOS7D,aACP,OAAO1+D,KAAKwiE,QAEL9D,WAAOxuC,OACdlwB,KAAKwiE,QAAUtyC,MACflwB,KAAK+9B,SAAU,EAGnBn+B,YAAY8+D,QAbL,KAAA+D,qBAAuB,IAAI5mC,UAC3B,KAAA6mC,eAAiB,IAAI7mC,UACrB,KAAA8mC,cAAgB,IAAIh9D,IACpB,KAAAo4B,SAAU,EAWb/9B,KAAKwiE,QAAU9D,OAGZxgC,UACHl+B,KAAKyiE,qBAAqBtqC,QAC1Bn4B,KAAK0iE,eAAevqC,QACpBn4B,KAAK2iE,cAAcxqC,SAI3B,MAAMyqC,cAKFhjE,YAAY4jB,GAAWg2B,kBAA4BqpB,OAJ5C,KAAAr/C,GAAY3e,SAAAA,SAAAA,MACZ,KAAA20C,mBAAoB,EAIvBx5C,KAAKwjB,GAAKA,GACVxjB,KAAKw5C,kBAAoBA,kBACzBx5C,KAAK6iE,MAAQA,OAIf,MAAOC,gBAkBTljE,YAAY82C,OAA8BqsB,eAAwBC,kBAA2BC,aAAe,KAAG,eAfvG,KAAAC,eAAiB,IAAItF,MAErB,KAAAuF,OAASt+D,SAAAA,SAAAA,YAET,KAAAu+D,qBAAuBv+D,SAAAA,SAAAA,YACvB,KAAAw+D,kBAAoBx+D,SAAAA,SAAAA,YACpB,KAAAy+D,yBAA2Bz+D,SAAAA,SAAAA,YAE3B,KAAA47D,cAAgC,GAChC,KAAAhJ,SAAW5yD,SAAAA,SAAAA,UAOf7E,KAAK62C,QAAUH,OAEf,MAAM6sB,KAAON,aAAa5iE,QAAQ,OAAQ,IAAIiG,cAC9C,GAAIi9D,KAAKC,SAAS,KACdxjE,KAAKyjE,qBAAuB,IAAI7mC,IAAY,SACzC,CACH58B,KAAKyjE,qBAAuB,IAAI7mC,IAAY2mC,KAAKzyC,MAAM,MACvD,IAAK,MAAMojB,SAASwC,OAAOI,cAAcjD,OACrC7zC,KAAKyjE,qBAAqBznC,IAAIkY,OAItCl0C,KAAK0jE,qBAAuB,IAAI9G,WAC5B,GAAK,uBACL,kBACU,MAAK+G,6BAEfZ,eACAC,mBAIJhjE,KAAKygE,cAAc9hD,KAAK3e,KAAK62C,QAAQjG,qBAAqB9G,KAAQ9pC,KAAK4wC,oBAAoB9G,QAC3F9pC,KAAKygE,cAAc9hD,KAAK3e,KAAK62C,QAAQ/F,iBAAiBhH,KAAQ9pC,KAAK8wC,gBAAgBhH,QACnF9pC,KAAKygE,cAAc9hD,KAAK3e,KAAK62C,QAAQ9F,iBAAiBjH,KAAQ9pC,KAAK+wC,gBAAgBjH,QACnF9pC,KAAKygE,cAAc9hD,KACf3e,KAAK62C,QAAQ6pB,qBAAqB52B,MAC9B9pC,KAAK0gE,oBAAoB52B,SAKxB5L,UAAO,gEACV,OAAK0lC,aACX,IAAK,MAAMC,gBAAgB,OAAKpD,cAC5BoD,eAEJ,OAAKpD,cAAgB,KALL,GAYPmD,aAAU,0DACf,OAAK/sB,QAAQitB,mBACP,OAAKjtB,QAAQktB,+BAA+B,OAAKV,oBAG3D,OAAKA,kBAAkBlrC,QACvB,MAAM0oC,QAAUV,uBAAuBp+D,IAAI,OAAK80C,SAChD,IAAK,MAAM9wC,SAAS,OAAKo9D,OAAOl0C,UAC5B4xC,QAAQG,sBAAsB,OAAKvJ,SAAU1xD,MAAM,IACnDA,MAAM,GAAGm4B,UAEb,OAAKilC,OAAOhrC,QAEZ,IAAK,MAAM6rC,iBAAiB,OAAKV,yBAC7BU,cAAc,GAAGnB,MAAM3kC,UAE3B,OAAKolC,yBAAyBnrC,UAhBX,GAmBhB8rC,mBAAmBzgD,IACtB,GAAIxjB,KAAKmjE,OAAOlrC,IAAIzU,IAAK,CACrB,MAAMk7C,OAAS1+D,KAAKmjE,OAAOphE,IAAIyhB,IAC3Bk7C,SACA1+D,KAAKmjE,OAAOlnC,OAAOzY,IACnBk7C,OAAOxgC,WAGf,GAAIl+B,KAAKsjE,yBAAyBrrC,IAAIzU,IAAK,CACvC,MAAM0gD,GAAKlkE,KAAKsjE,yBAAyBvhE,IAAIyhB,IACzC0gD,IACAA,GAAGrB,MAAM3kC,UAEbl+B,KAAKsjE,yBAAyBrnC,OAAOzY,KAItC2gD,eAAe3gD,IAClB,OAAOxjB,KAAKmjE,OAAOlrC,IAAIzU,IAGdk+B,eAAwDphB,UAAwB9c,GAAW4gD,aAAc,GAAI,0DACtH,MAAMC,IAAMx/D,SAAAA,SAAAA,YACZw/D,IAAIroC,IAAIxY,IACR,MAAM8e,eAAiB,OAAK8+B,iBAAuB9gC,UAAW+jC,IAAKD,aACnE,OAAI9hC,SAASt+B,OAAS,EACXs+B,SAAS,GAEb,OAP+G,GAU7GgiC,iBAAoCC,cAAyBH,aAAc,GAAI,0DACxF,IAAK,MAAMI,mBAAmBD,cACrB,OAAKpB,OAAOlrC,IAAIusC,gBAAgBhhD,KACjC,OAAK2/C,OAAO/8D,IAAIo+D,gBAAgBhhD,GAAI,IAAI++C,aAAaiC,kBAI7D,GAAIJ,aAAeG,cAAcvgE,OAAS,EAAG,CACzC,MAAM6+B,OAAS,IAAIT,YACnB,IAAK,MAAMoiC,mBAAmBD,cAE1B1hC,OAAOP,SAAStG,IAAIwoC,gBAAgBhhD,IAExC,MAAM+jB,eAAiB,OAAKsP,QAAQ1P,yBAAyBtE,QAC7D,OAAKwgC,kBAAkBrnC,IAAIuL,aAdyD,GAkB/E65B,iBAA0D9gC,UAAwBzT,IAAiBu3C,aAAc,GAAI,0DAC9H,MAAM9hC,SAAW,IAAI37B,MACf03D,cAAgB,OAAK6E,eAAelF,UAC1C,IACI,MAAMyG,wBAA0B,IAAI7vB,YACpC,IAAK,MAAMV,SAAS,OAAKuvB,qBACrBgB,wBAAwBtjC,OAAOnF,IAAIkY,OAGvC,IAAK,MAAM1wB,MAAMqJ,IACb,GAAI,OAAKs2C,OAAOlrC,IAAIzU,IAAK,CACrB,MAAMkhD,YAAc,OAAKvB,OAAOphE,IAAIyhB,IACpC,GAAIkhD,YAAa,CACb,MAAMC,aAAeD,YAAYhG,OACjC,GAAIiG,aACAriC,SAAS3jB,KAAKgmD,kBACX,CACH,MAAMC,KAAO,IAAItkC,UACjBskC,KAAK/mC,SAAS6mC,YAAYhG,QAC1Bp8B,SAAS3jB,KAAKimD,aAItBH,wBAAwBlvB,MAAMvZ,IAAIxY,IAI1C,GAAIihD,wBAAwBlvB,MAAMzZ,KAAO,EAAG,CACxC,MAAM+kC,QAAUV,uBAAuBp+D,IAAI,OAAK80C,SAC1CguB,wBAA0BhE,QAAQO,iBAAuB,OAAK3J,SAAUn3B,UAAWmkC,yBAEzF,SADM,OAAKH,iBAAiBO,kBAAmBT,aACtB,MAArBS,kBACA,IAAK,MAAML,mBAAmBK,kBAC1BviC,SAAS3jB,KAAK6lD,kBAI5B,QACEnG,UAEJ,OAAO/7B,WAxCuH,GA2C3HwiC,uBACH,MAAMliE,OAAS,IAAI+D,MACnB,IAAK,MAAMo+D,gBAAgB/kE,KAAKmjE,OAAO9jE,SACnCuD,OAAO+b,KAAKomD,aAAarG,QAE7B,OAAO97D,OAQEoiE,4BAA4BxhD,GAAWyhD,GAAYb,YAAsB5qB,mBAA0B,0DAC5G,MAAM6qB,IAAMx/D,SAAAA,SAAAA,YAEZ,OADAw/D,IAAIroC,IAAIxY,UACK,OAAK0hD,8BAA8Bb,IAAKY,GAAIb,YAAa5qB,qBAHsC,GAWnG0rB,8BAA8Br4C,IAAiBo4C,GAAYb,YAAsB5qB,mBAA0B,0DACpH,MAAMqrB,kBAAoBhgE,SAAAA,SAAAA,YAC1B,IAAK,MAAM2e,MAAMqJ,KACe,IAAxB,OAAKs2C,OAAOlrC,IAAIzU,KAChBqhD,kBAAkB7oC,IAAIxY,IAI9B,MAAM8e,eAAiB,OAAK8+B,iBAAiBlqB,OAAQ2tB,kBAAmBT,aACxE,IAAK,MAAM1F,UAAUp8B,SAAU,CAC3B,GAAI,OAAKghC,yBAAyBrrC,IAAIymC,OAAOl7C,IAAK,CAC9C,MAAM0gD,GAAK,OAAKZ,yBAAyBvhE,IAAI28D,OAAOl7C,IAChD0gD,KACAA,GAAGrB,MAAM3kC,UACT,OAAKolC,yBAAyBrnC,OAAOyiC,OAAOl7C,KAIpD,MAAMq/C,MAAQ,IAAIh/B,OAAK,uBAAC,kBACd,OAAKshC,oBAAoBzG,OAAOl7C,QAE1Cq/C,MAAMz+B,OAAO6gC,IACb,OAAK3B,yBAAyBl9D,IAAIs4D,OAAOl7C,GAAI,IAAIo/C,cAAclE,OAAOl7C,GAAIg2B,kBAAmBqpB,WAtBmB,GA0B3GuC,gCAA6B,0DAEtC,MAAMC,kBAAoBC,UAAU,OAAKnC,QAAS7hC,GAAyC,IAAnCA,EAAE,GAAGmhC,qBAAqB3mC,OAG5EypC,iBAAmBD,UAAU,OAAKnC,QAAS7hC,GAAmC,IAA7BA,EAAE,GAAGohC,eAAe5mC,OAE3E,IAAK,MAAMipC,gBAAgBM,kBAAmB,CAC1C,IAAIG,SAAW,EACf,IAAuD,IAAnD,OAAKpC,qBAAqBnrC,IAAI8sC,aAAa,IAC3CA,aAAa,GAAGtC,qBAAqBphD,SAASigB,GAAOkkC,UAAYlkC,EAAEjD,aACnE,OAAK+kC,qBAAqBh9D,IAAI2+D,aAAa,GAAIS,cAC5C,CACH,IAAIC,SAAW,OAAKrC,qBAAqBrhE,IAAIgjE,aAAa,IACtDU,SACAA,UAAYD,SAEZC,SAAWD,SAEf,OAAKpC,qBAAqBh9D,IAAI2+D,aAAa,GAAIU,WAMvD,GAHA,OAAK/B,qBAAqBhG,UAGtB6H,iBAAiBvhE,OAAS,EAAG,CAC7B,MAAMmmC,MAAQ,IAAIyK,YAClB2wB,iBAAiBlkD,SAASigB,GAAM6I,MAAMoL,MAAMvZ,IAAIsF,EAAE,MAClD,MAAMu/B,QAAUV,uBAAuBp+D,IAAI,OAAK80C,SAC1C6uB,kBAAoB7E,QAAQO,iBAAiB,OAAK3J,SAAUvgB,OAAQ/M,OAC1E,IAAK,MAAMu0B,UAAU6G,iBACZG,YAAYC,MAAMrkC,GAAMA,EAAE9d,GAAGnd,aAAeq4D,OAAO,GAAGr4D,qBAEjD,OAAKyqC,gBAAgB,IAAI/G,iBAAsB20B,OAAO,GAAIA,OAAO,GAAGA,OAAO7qC,iBAjCvD,GAuC7B+xC,kBAAkBpiD,GAAW6a,WAAoBwnC,mBAAgDvD,UAAsC,4DACpH,IAAxB,QAAKa,OAAOlrC,IAAIzU,YACV,QAAKk+B,eAAexK,OAAQ1zB,KAGtC,MAAMkhD,YAAc,QAAKvB,OAAOphE,IAAIyhB,IACpC,GAAIkhD,YAAa,CACb,MAAMhuC,QAAU,IAAI2rC,oBAapB,GAZA3rC,QAAQ2H,WAAaA,WACjBikC,WACA5rC,QAAQ4rC,SAAWA,UAEnBuD,qBACAnvC,QAAQvB,OAAS0wC,oBAGrBnB,YAAYjC,qBAAqBzmC,IAAItF,SACjC4rC,iBACMA,SAASoC,YAAYhG,OAAQgG,YAAYhG,SAE/ChoC,QACA,OAAOA,QAAQlT,GAGvB,MAAM,IAAI1kB,MAAM,oCAxBgI,GA2BvIgnE,yBAAyBtiD,GAAWuiD,oBAA6C,4DAC9D,IAAxB,QAAK5C,OAAOlrC,IAAIzU,YACV,QAAKk+B,eAAexK,OAAQ1zB,KAGtC,MAAMkhD,YAAc,QAAKvB,OAAOphE,IAAIyhB,IACpC,IAAIkhD,YAIJ,MAAM,IAAI5lE,MAAM,kCAHZ4lE,YAAYhC,eAAe1mC,IAAI+pC,sBAPuD,GAavFC,mBAA4CtH,UAAoBv9B,QACnE,MAAM8kC,iBAAoB/xB,OACtB,IAAIhxC,oBAAAA,GAAqBgjE,MAEhBlmE,KAAKmmE,uBAAuBzH,QADpB,IAAMA,OAAOxqB,SACsBguB,YAC5CgE,IAAI1iE,KAAK0+D,WACFxnC,QAAQC,gBAK3B,OAAOiI,EAAAA,MAAAA,MAASzB,OAAOE,KAAK6S,OAAU+xB,iBAAiB/xB,UAG9CiyB,uBACTzH,OACA0H,KACAP,mBACAvD,UAAsC,2DAItC,GAFA5D,OAAOlhC,qBAAuB,EAC9B4oC,QACoC,IAAhC1H,OAAOlhC,oBACP,OAAO,IAAI5C,SAAiB,sEAAsEwrC,KAAK//D,cAAc,GAAO00B,QAEhI,MAAMwC,cAAgBmhC,OAAOnhC,cACvB8oC,eAAiB3H,OAAOlhC,oBACxBC,cAAgBihC,OAAOjhC,cAExB6kC,WACDA,SAAW,CAACJ,UAAoBoE,iBAC5B,GAAsB,SAAlB7oC,cAA0B,CAC1B,MAAM8oC,cAAgBD,cAActnC,aAAazB,eAC3CqB,SAAWsjC,UAAUljC,aAAazB,eAExC,OAAO,IAAI3C,SADY2rC,gBAAkB3nC,UACI7D,QAC1C,GAAsB,SAAlB0C,cAA0B,CACjC,MAAM8oC,cAAgBD,cAAchnC,aAAa/B,eAC3CqB,SAAWsjC,UAAU5iC,aAAa/B,eAClCipC,eAAiBD,cAAcpF,OAAOviC,UAC5C,OAAO,IAAIhE,SAAkB4rC,gBAAgBzrC,QAC1C,CACH,MAAMwrC,cAAgBD,cAAc/nC,SAAYhB,eAC1CqB,SAAWsjC,UAAU3jC,SAAYhB,eAGvC,OAAO,IAAI3C,SADY2rC,gBAAkB3nC,UACI7D,WAOzD,OAFgBolC,uBAAuBp+D,IAAI,QAAK80C,SACxCiqB,wBAAwB,QAAKrJ,SAAUiH,OAAQA,OAAOnhC,cAAemhC,OAAOlhC,qBAChFqoC,yBACa,QAAKD,kBACdlH,OAAOl7C,GACP6iD,gBACA,CAACnE,UAAWuE,YAAcZ,mBAAmB3D,UAAWA,UAAU3jC,SAAYhB,eAAgBkpC,UAAUloC,SAAYhB,iBACpH+kC,gBAKK,QAAKoE,4BAA4BhI,OAAOl7C,GAAI6iD,eAAgB/D,YA7CnC,GAgD7BqE,0BACTjI,OACA0H,KACAP,mBACAvD,UAAsC,2DAItC,GAFA5D,OAAOvmB,wBAA0B,EACjCiuB,QACuC,IAAnC1H,OAAOvmB,uBACP,OAAO,IAAIvd,SAAiB,yEAAyEwrC,KAAK//D,cAAc,GAAO00B,QAKnI,OAFgBolC,uBAAuBp+D,IAAI,QAAK80C,SACxCkqB,2BAA2B,QAAKtJ,SAAUiH,OAAQA,OAAOtmB,eAAgBsmB,OAAOvmB,wBACpF0tB,yBACa,QAAKD,kBAAkBlH,OAAOl7C,GAAIk7C,OAAOvmB,uBAAwB0tB,mBAA0DvD,gBAG/H,QAAKoE,4BAA4BhI,OAAOl7C,GAAIk7C,OAAOvmB,uBAAwBmqB,YAdlD,GAiBnCsE,kBAAkBpjD,IACrB,MAAMkhD,YAAc1kE,KAAKmjE,OAAOphE,IAAIyhB,IAChCkhD,aACAA,YAAYjC,qBAAqBtqC,QAI5B0uC,uBAAuBrjD,GAAW+F,UAAmBu9C,mBAA2C,4DAC7E,IAAxB,QAAK3D,OAAOlrC,IAAIzU,YACV,QAAKk+B,eAAexK,OAAQ1zB,KAEtC,MAAMkhD,YAAc,QAAKvB,OAAOphE,IAAIyhB,IACpC,IAAIkhD,YAQJ,MAAM,IAAI5lE,MAAM,kCARhB,CACI4lE,YAAY/B,cAAcv8D,IAAImjB,UAAWu9C,mBACzC,MAAMjkC,OAAS,IAAIT,YACnBS,OAAON,WAAWvG,IAAIzS,WACtB,MAAMge,eAAiB,QAAKsP,QAAQ1P,yBAAyBtE,QAC7D,QAAKwgC,kBAAkBrnC,IAAIuL,aAV0E,GAgBhGw/B,YAAYrI,OAAyBp8B,SAAgCyQ,aAAiC,2DAC1GzQ,WACDA,SAAW,IAAI1F,KAGf8hC,QACAp8B,SAAStG,IAAI0iC,QAGjB,IAAK,MAAMsI,iBAAiB1kC,SAAU,CAClC,MAAMyiC,aAAe,QAAK5B,OAAOphE,IAAIilE,cAAcxjD,IAC/CuhD,eACAA,aAAahnC,QAAUipC,cAAcjpC,SAI7C,aAAa,QAAK8Y,QAAQkwB,YAAYrI,OAAQp8B,SAAUyQ,eAhBuD,GAuBrG2zB,4BAA4BljD,GAAW6a,WAAoBikC,UAAsC,4DAC/E,IAAxB,QAAKa,OAAOlrC,IAAIzU,YACV,QAAKk+B,eAAexK,OAAQ1zB,KAGtC,IAAIyjD,eAAgB,EACpB,MAAMvC,YAAc,QAAKvB,OAAOphE,IAAIyhB,IACpC,IAAIkhD,YAKA,MAAM,IAAI5lE,MAAM,kCAGpB,OAPqF,IAA7E4lE,YAAYjC,qBAAqB5lC,KAAKyE,GAAMA,EAAEjD,aAAeA,eAC7D4oC,eAAgB,GAMpBA,oBACa,QAAKrB,kBAAkBpiD,GAAI6a,YAAY,IAAM,IAAIzD,UAAe,GAAMG,SAASunC,UAErF,KAlBgG,GA0BjG6C,oBAAoB3hD,IAAS,2DACvC,IACI,MAAM0gD,GAAK,QAAKZ,yBAAyBvhE,IAAIyhB,IAC7C,GAAI0gD,GAAI,CACJ,MAAMgD,GAAK,QAAK/D,OAAOphE,IAAIyhB,IACvB0jD,WACMA,GAAGxI,OAAOnlB,YAAY2qB,GAAG1qB,qBAGzC,MAAOp4C,OAT8B,GAY7BuiE,0BAAuB,2DACjC,MAAMwD,SAAW,IAAIxhE,IACfknB,IAAMhoB,SAAAA,SAAAA,UAA2B,QAAKu+D,qBAAqBn0C,WAGjE,GAFA,QAAKm0C,qBAAqBjrC,QAET,IAAbtL,IAAIiP,KAAR,CAIA,IAEI,MAAMqO,MAAQ,IAAIyK,YAClBzK,MAAMoL,MAAQ1wC,SAAAA,SAAAA,UAAmBgoB,IAAI/qB,QAErC,IAAK,MAAMoyC,SAAS,QAAKuvB,qBACrBt5B,MAAMhJ,OAAOnF,IAAIkY,OAErB,MAAM2sB,QAAUV,uBAAuBp+D,IAAI,QAAK80C,SAC1CvU,eAAiBu+B,QAAQO,iBAAiB,QAAK3J,SAAUvgB,OAAQ/M,OAGvE,IAAK,IAAIpZ,EAAI,EAAGA,EAAIuR,SAASt+B,SAAU+sB,EACnC,GAAI,QAAKoyC,OAAOlrC,IAAIqK,SAASvR,GAAGvN,IAAK,CACjC,MAAM4jD,cAAgB,QAAKjE,OAAOphE,IAAIugC,SAASvR,GAAGvN,IAClD,IAAK4jD,cACD,MAAM,IAAItoE,MAAM,yBAGpB,MAAMuoE,oBAAsBD,cAAcrpC,QACpC0oC,UAAYW,cAAc1I,OAG1BwD,UAAY5/B,SAASvR,GAC3Bq2C,cAAc1I,OAASwD,UAEvB,IAAK,MAAMxrC,WAAW0wC,cAAc3E,qBAAsB,CACtD,IAAK/rC,QAAQvB,OACT,SAGJ,MAAMmyC,iBAAmBz6C,IAAI9qB,IAAImgE,UAAU1+C,IAC3C,IAAK8jD,iBACD,MAAM,IAAIxoE,MAAM,4BAEpB,GAAgD,IAA3C43B,QAAQ2H,WAAaipC,kBAAyB,CAC/C,IAAIC,cAAe,EACf7wC,QAAQ4rC,WACRiF,aAAeF,6BAA+B3wC,QAAQ4rC,SAASJ,UAAWuE,aAE1Ec,eACiC,IAA7BJ,SAASlvC,IAAIvB,QAAQlT,KAErB2jD,SAAS/gE,IAAIswB,QAAQlT,GAAI,CAACkT,QAASwrC,UAAWuE,eAOxE,MAAOrlE,IAMT,IAAK,MAAO,CAAEomE,SAAUL,SACpB,IACI,MAAMzwC,QAAU8wC,MAAM,GACtB,IAAK9wC,UAAYA,QAAQvB,OACrB,MAAM,IAAIr2B,MAAM,qBAEd43B,QAAQvB,OAAOqyC,MAAM,GAAIA,MAAM,IACvC,MAAOpmE,QAxEoB,GA8E7Bs/D,oBAAoBt/D,GAAwB,iBAChD,OAAO,IAAIs5B,QAAO,6CAAO,UAAOC,SAC5B,KACyB,IAAjBv5B,EAAEowC,mBACI,QAAK4zB,iCAEjB,MAAOhkE,IACTu5B,aACH,wDAPiB,IAURmW,gBAAgB1vC,GAAwB,2DAClD,IACI,MAAM+hC,QAAU,IAAIvG,IAEpB,GAAI,QAAKumC,OAAOlrC,IAAI72B,EAAEoiB,IAAK,CACvB,MAAMikD,UAAY,QAAKtE,OAAOphE,IAAIX,EAAEoiB,IAChCikD,YACAtkC,QAAQnH,IAAIyrC,WACZ,QAAKtE,OAAOlnC,OAAO76B,EAAEoiB,KAI7B,IAAK,MAAM4jD,iBAAiBjkC,QACxB,IAAK,MAAMzM,WAAW0wC,cAAc1E,eAChC,UACUhsC,QAAQt1B,EAAEoiB,IAClB,MAAOpiB,KAKnB,MAAOA,OArByC,GA0B9CwvC,oBAAoBxvC,GACxB,IACI,GAAIpB,KAAKmjE,OAAOlrC,IAAI72B,EAAEoiB,IAAK,CACvB,MAAM4jD,cAAgBpnE,KAAKmjE,OAAOphE,IAAIX,EAAEoiB,IACxC,GAAI4jD,cAAe,CACf,IAAK,MAAMM,OAAON,cAAc3E,qBAC5B,GAAmC,IAA9BrhE,EAAE0yB,MAAQ4zC,IAAIrpC,YAAmB,CAIlC,GAHgB8hC,uBAAuBp+D,IAAI/B,KAAK62C,SACxCjG,oBAAoB5wC,KAAKy3D,SAAUr2D,IAEC,IAAxCpB,KAAKojE,qBAAqBnrC,IAAI72B,EAAEoiB,IAAe,CAC/CxjB,KAAKojE,qBAAqBh9D,IAAIhF,EAAEoiB,GAAIpiB,EAAE0yB,OACtC,MACG,CACH,IAAIqiB,GAAKn2C,KAAKojE,qBAAqBrhE,IAAIX,EAAEoiB,IACrC2yB,GACAA,IAAM/0C,EAAE0yB,MAERqiB,GAAK/0C,EAAE0yB,MAEX9zB,KAAKojE,qBAAqBh9D,IAAIhF,EAAEoiB,GAAI2yB,KAIhDn2C,KAAK0jE,qBAAqBhG,YAGpC,MAAOt8D,KAGC2vC,gBAAgB3vC,GAAwB,2DAClD,IACI,GAAIA,EAAEmC,MAAM46B,SAAS,iBACb,QAAKglC,OAAOlrC,IAAI72B,EAAEmC,MAAMwvD,cAAe,CACvC,MAAMqU,cAAgB,QAAKjE,OAAOphE,IAAIX,EAAEmC,MAAMwvD,cAC9C,GAAIqU,cACA,IAAK,MAAM1wC,WAAW0wC,cAAczE,cAChC,IACQjsC,QAAQ,KAAOt1B,EAAEmC,MAAMgmB,kBACjBmN,QAAQ,GAAGt1B,EAAEmC,QAEzB,MAAOnC,MAO3B,MAAOA,OAlByC,ICrrBpD,MAAOumE,mBAAmBvqC,wBAOnBwqC,iBACT,OAAO5nE,KAAKu+B,SAAwB,cAG3BspC,8BACT,OAAO7nE,KAAKu+B,SAAwB,2BAG3BupC,iBACT,OAAO9nE,KAAKu+B,SAAiB,cAGpBpU,gBACT,OAAOnqB,KAAKu+B,SAAe,aAGlBuK,wBACT,OAAO9oC,KAAKu+B,SAAiB,qBAO/B3+B,YAAYwoB,MACVvlB,QACA7C,KAAKwgC,WAAWpY,MAOXrlB,uBAAuB2zC,UCzC1B,MAAOqxB,gBAAbnoE,cACS,KAAA4jB,GAAY3e,SAAAA,SAAAA,MACZ,KAAAmjE,iBAAkB,EAClB,KAAAC,YAAqBpjE,SAAAA,SAAAA,MACrB,KAAA8kB,KAAO,ICKV,MAAOu+C,+BAA+BrsB,aAAY,SACtC,KAAAssB,8BAAgC,2BAA0B,UAC1D,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,iCAAmC,8BAA6B,UAChE,KAAAC,YAAc,SAAQ,UACtB,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,kDAAoD,+CAA8C,UAClG,KAAAC,kDAAoD,+CAA8C,UAClG,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,mBAAqB,gBAAe,WACpC,KAAA3S,mBAAqB,gBCRjC,MAAO4S,iCAAiC1rC,wBAE/B2rC,gBACP,OAAO/oE,KAAKo+B,iBAA0B,aAE/B2qC,cAAU74C,OACjBlwB,KAAK2+B,iBAA0B,YAAazO,OAGrC84C,cACP,OAAOhpE,KAAKo+B,iBAAyB,WAE9B4qC,YAAQ94C,OACflwB,KAAK2+B,iBAAyB,UAAWzO,OAGlC4L,WACP,OAAO97B,KAAKo+B,iBAAyB,QAE9BtC,SAAK5L,OACZlwB,KAAK2+B,iBAAyB,OAAQzO,OAG/B+4C,sBACP,OAAOjpE,KAAKo+B,iBAA0B,mBAE/B6qC,oBAAgB/4C,OACvBlwB,KAAK2+B,iBAA0B,kBAAmBzO,OAG3Cg5C,wBACP,OAAOlpE,KAAKo+B,iBAA0B,qBAE/B8qC,sBAAkBh5C,OACzBlwB,KAAK2+B,iBAA0B,oBAAqBzO,OAG7Ci5C,yBACP,OAAOnpE,KAAKo+B,iBAA0B,sBAE/B+qC,uBAAmBj5C,OAC1BlwB,KAAK2+B,iBAA0B,qBAAsBzO,OAG9Ck5C,kBACP,OAAOppE,KAAKo+B,iBAAyB,eAE9BgrC,gBAAYl5C,OACnBlwB,KAAK2+B,iBAAyB,cAAezO,OAGtCm5C,wBACP,OAAOrpE,KAAKo+B,iBAAyB,qBAE9BirC,sBAAkBn5C,OACzBlwB,KAAK2+B,iBAAyB,oBAAqBzO,OAG5Co5C,sBACP,OAAOtpE,KAAKo+B,iBAAyB,mBAE9BkrC,oBAAgBp5C,OACvBlwB,KAAK2+B,iBAAyB,kBAAmBzO,OAG9CuR,sBACHzhC,KAAK6+B,SAAkB,aAAa,GACpC7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAK6+B,SAAiB,OAAQ,GAC9B7+B,KAAK6+B,SAAkB,mBAAmB,GAC1C7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAkB,sBAAsB,GAC7C7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6+B,SAAiB,oBAAqB,IAC3C7+B,KAAK6+B,SAAiB,kBAAmB,KAI3C,MAAO0qC,oBAAoBnsC,wBAElBosC,WACP,OAAOxpE,KAAKs/B,aAAa,QAElBkqC,SAAKt5C,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnB1D,eACP,OAAOxsB,KAAKu+B,SAAiB,YAEtB/R,aAAS0D,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG/BuR,sBACHzhC,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,WAAY,IAIpC,MAAO4qC,kBAAkBrsC,wBAEhB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBpH,YACP,OAAO9oB,KAAKu+B,SAAiB,SAEtBzV,UAAMoH,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxBhG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9Bw5C,cACP,OAAO1pE,KAAK+/B,kBAAkB,WAEvB2pC,YAAQx5C,OACflwB,KAAK6/B,kBAAkB,UAAW3P,OAG3By5C,kBACP,OAAO3pE,KAAKu+B,SAAkB,eAEvBorC,gBAAYz5C,OACnBlwB,KAAK6+B,SAAkB,cAAe3O,OAG/B05C,4BACP,OAAO5pE,KAAKu+B,SAAkB,yBAEvBqrC,0BAAsB15C,OAC7BlwB,KAAK6+B,SAAkB,wBAAyB3O,OAG7CuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,QAAS,IAC/B7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6/B,kBAAkB,UAAW,IAAI/C,2CACtC98B,KAAK6+B,SAAkB,eAAe,GACtC7+B,KAAK6+B,SAAkB,yBAAyB,IAMlD,MAAOgrC,yBAAyB3yB,OAIvB4yB,+BACP,OAAO9pE,KAAKu+B,SAAiB2pC,uBAAuBC,8BAA+BtuB,sBAAAA,eAE5EiwB,6BAAyB55C,OAChClwB,KAAK6+B,SAAiBqpC,uBAAuBC,8BAA+Bj4C,OAIrE65C,yBACP,OAAO/pE,KAAKu+B,SAAiB2pC,uBAAuBE,wBAAyBvuB,sBAAAA,UAEtEkwB,uBAAmB75C,OAC1BlwB,KAAK6+B,SAAiBqpC,uBAAuBE,wBAAyBl4C,OAI/D85C,kCACP,OAAOhqE,KAAKu+B,SAAiB2pC,uBAAuBG,iCAAkCxuB,sBAAAA,UAE/EmwB,gCAA4B95C,OACnClwB,KAAK6+B,SAAiBqpC,uBAAuBG,iCAAkCn4C,OAIxE+5C,aACP,OAAOjqE,KAAKu+B,SAAiB2pC,uBAAuBI,aAE7C2B,WAAO/5C,OACdlwB,KAAK6+B,SAAiBqpC,uBAAuBI,YAAap4C,OAInDg6C,mBACP,OAAOlqE,KAAKu+B,SAAiB2pC,uBAAuBK,kBAAmB1uB,sBAAAA,UAEhEqwB,iBAAah6C,OACpBlwB,KAAK6+B,SAAiBqpC,uBAAuBK,kBAAmBr4C,OAIzDi6C,mDACP,OAAOnqE,KAAKu+B,SAAkB2pC,uBAAuBM,kDAAmD3uB,sBAAAA,eAEjGswB,iDAA6Cj6C,OACpDlwB,KAAK6+B,SAAkBqpC,uBAAuBM,kDAAmDt4C,OAI1Fk6C,mDACP,OAAOpqE,KAAKu+B,SAAkB2pC,uBAAuBO,kDAAmD5uB,sBAAAA,eAEjGuwB,iDAA6Cl6C,OACpDlwB,KAAK6+B,SAAkBqpC,uBAAuBO,kDAAmDv4C,OAI1F83C,sBACP,OAAOhoE,KAAKu+B,SAAkB2pC,uBAAuBQ,sBAI9C2B,4BACP,OAAOrqE,KAAKu+B,SAAkB2pC,uBAAuBS,2BAA4B9uB,sBAAAA,UAE1EwwB,0BAAsBn6C,OAC7BlwB,KAAK6+B,SAAkBqpC,uBAAuBS,2BAA4Bz4C,OAInEo6C,+BACP,OAAOtqE,KAAKu+B,SAAkB2pC,uBAAuBU,8BAA+B/uB,sBAAAA,UAE7EywB,6BAAyBp6C,OAChClwB,KAAK6+B,SAAkBqpC,uBAAuBU,8BAA+B14C,OAItEq6C,oBACP,OAAOvqE,KAAKu+B,SAAiB2pC,uBAAuBW,oBAI7CxO,oBACP,OAAOr6D,KAAKu+B,SAAiB2pC,uBAAuBhS,mBAAoBrc,sBAAAA,UAEjEwgB,kBAAcnqC,OACrBlwB,KAAK6+B,SAAiBqpC,uBAAuBhS,mBAAoBhmC,OAOrEtwB,YAAYi0B,YACRhxB,MAAMgxB,YAOG22C,+BAA+BC,UAAkB13B,aAA0B,yDACpF,MAQMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQ3iB,aAAa,YAAairC,WAE3B,MAAKpxB,+BAAwC,4BAA6B,OAAQ8I,QAASpP,aAXzE1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAA8B,wBACtD,OAAO,IAAIi5B,SAAiB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEjE,OAAO,IAAI83B,SAAiB,SAAUC,QAASK,QAAUA,OAAO35B,kBANY,GAe3EqpE,wBAAwBD,UAAkB/L,OAAe3rB,aAA0B,0DAC5F,MAQMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQ3iB,aAAa,YAAairC,WAClCtoB,QAAQ3iB,aAAa,SAAUk/B,QAExB,OAAKrlB,+BAAwC,qBAAsB,OAAQ8I,QAASpP,aAZlE1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAAc,QACtC,OAAO,IAAIi5B,SAAiB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEjE,OAAO,IAAI83B,SAAiB,SAAUC,QAASK,QAAUA,OAAO35B,kBANoB,GAgBnFspE,wBAAwBxgC,MAA2B4I,aAA+B,0DAC3F,OAAO,OAAK0F,qBAAqB,iBAAkB,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADD,GAIlF63B,4BAA4BzgC,MAA2B4I,aAA+B,0DAC/F,OAAO,OAAK0F,qBAAqB,sBAAuB,MAAM,EAAMtO,MAAO0P,sBAAAA,SAAqB9G,eADD,GAItF83B,4BAA4B1gC,MAA2B4I,aAA+B,0DAC/F,OAAO,OAAK0F,qBAAqB,sBAAuB,MAAM,EAAOtO,MAAO0P,sBAAAA,UAAsB9G,eADH,GAItF+3B,mBAAmB/3B,aAAiC,0DAC7D,OAAO,OAAKyF,4BAAmDixB,UAAW,aAAc,MAAM,GAAO,EAAM5vB,sBAAAA,SAAqB9G,eADnE,GAIpDg4B,sBAAsBh4B,aAAiC,0DAChE,OAAO,OAAKyF,4BAAuD+wB,YAAa,gBAAiB,QAAQ,GAAO,EAAM1vB,sBAAAA,cAA0B9G,eADhF,GAIvDi4B,+BAA+Bj4B,aAAiC,0DACzE,OAAO,OAAKyF,4BAAuD+wB,YAAa,yBAA0B,QAAQ,GAAM,EAAO1vB,sBAAAA,cAA0B9G,eADhF,GAIhEk4B,sBAAsB9gC,MAA2B4I,aAA+B,0DACzF,OAAO,OAAK0F,qBAAqB,gBAAiB,MAAM,EAAMtO,MAAO0P,sBAAAA,UAAsB9G,eADF,GAIhFm4B,2BAA2B/gC,MAA2B4I,aAA+B,2DAC9F,OAAO,QAAK0F,qBAAqB,qBAAsB,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAIrFo4B,iBAAiBxoE,QAAiByoE,gBAAyBr4B,aAA0B,2DAC9F,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQtjB,SAAS,UAAWl8B,SAC5Bw/C,QAAQtjB,SAAS,kBAAmBusC,iBAE7B,QAAK/xB,+BAA8C,cAAe,OAAQ8I,QAASpP,aAXjE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALgB,GAerFgqE,iCAAiCt4B,aAAiC,2DAC3E,aAAa,QAAKkG,qBAA+C6vB,yBAA0B,4BAA4B,EAAMjvB,sBAAAA,cAA0B9G,eAD5E,GAIlEu4B,mBAAmBnhC,MAA2B4I,aAA+B,2DACtF,OAAO,QAAK0F,qBAAqB,aAAc,MAAM,EAAOtO,MAAO0P,sBAAAA,WAAuB9G,eADJ,GAI7Ew4B,4BAA4BphC,MAA2B4I,aAA+B,2DAC/F,OAAO,QAAK0F,qBAAqB,sBAAuB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,IC9VjG,MAAOy4B,yBAAyBtD,uBAAsB,SAC1C,KAAAuD,gCAAkC,6BAA4B,UAC9D,KAAAC,4CAA8C,yCAAwC,UACtF,KAAAC,2BAA6B,wBAAuB,UACpD,KAAAC,sCAAwC,mCAAkC,UAC1E,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,8BAAgC,2BAA0B,UAC1D,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,6BAA+B,0BAAyB,UACxD,KAAAC,mCAAqC,gCAA+B,WACpE,KAAAC,0BAA4B,uBAAsB,WAClD,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,gCAAkC,6BAA4B,WAC9D,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,6BAA+B,0BAAyB,WACxD,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,+CAAiD,4CAA2C,WAC5F,KAAAC,mCAAqC,gCAA+B,WACpE,KAAAC,iCAAmC,8BAA6B,WAChE,KAAAC,yCAA2C,sCAAqC,WAChF,KAAAC,kCAAoC,+BAA8B,WAClE,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,kCAAoC,+BAA8B,WAClE,KAAAC,yCAA2C,sCAAqC,WAChF,KAAAC,4CAA8C,yCAAwC,WACtF,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,gCAAkC,6BAA4B,WAC9D,KAAAC,wCAA0C,qCAAoC,WAC9E,KAAAC,uCAAyC,oCAAmC,WAC5E,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,yBAA2B,sBAAqB,WAChD,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,mCAAqC,gCAA+B,WACpE,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,0BAA4B,uBAAsB,WAClD,KAAAC,yCAA2C,sCAAqC,WAChF,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,0BAA4B,uBAAsB,WAClD,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,kCAAoC,+BAA8B,WAClE,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,uBAAyB,oBC9CrC,MAAOC,sBAAsBvxC,wBAEpB5O,WACP,OAAOxuB,KAAKu+B,SAAiB,QAEtB/P,SAAK0B,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB+uB,WACP,OAAOj/C,KAAKs/B,aAAa,QAElB2f,SAAK/uB,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB1J,eACP,OAAOxmB,KAAKs/B,aAAa,YAElB9Y,aAAS0J,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvB0+C,kBACP,OAAO5uE,KAAKs/B,aAAa,eAElBsvC,gBAAY1+C,OACnBlwB,KAAKw/B,aAAa,cAAetP,OAG1BzC,cACP,OAAOztB,KAAKu+B,SAAiB,WAEtB9Q,YAAQyC,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1B2+C,mBACP,OAAO7uE,KAAKu+B,SAAkB,gBAEvBswC,iBAAa3+C,OACpBlwB,KAAK6+B,SAAkB,eAAgB3O,OAGpCuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAKw/B,aAAa,cAAe36B,SAAAA,SAAAA,OACjC7E,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAK6+B,SAAkB,gBAAgB,IAIzC,MAAOiwC,oBAAoB1xC,wBAElB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBA,YACP,OAAOlwB,KAAKu+B,SAAiB,SAEtBrO,UAAMA,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAG5BuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,QAAS,KAIjC,MAAOkwC,sBAAsB3xC,wBAEpB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjB8+C,cACP,OAAOhvE,KAAKu+B,SAAkB,WAEvBywC,YAAQ9+C,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG/BuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAkB,WAAW,IAIpC,MAAOowC,kBAAkB7xC,wBAEhB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBhG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAGlCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,cAAe,KAIvC,MAAOqwC,wBAAwB9xC,wBAEtB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBi/C,gBACP,OAAOnvE,KAAKu+B,SAAkB,aAEvB4wC,cAAUj/C,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAGjCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAkB,aAAa,IAMtC,MAAOuwC,mBAAmBvF,iBAIjBwF,iCACP,OAAOrvE,KAAKu+B,SAAkBitC,iBAAiBC,gCAAiC5xB,sBAAAA,eAEzEw1B,+BAA2Bn/C,OAClClwB,KAAK6+B,SAAkB2sC,iBAAiBC,gCAAiCv7C,OAIlEo/C,6CACP,OAAOtvE,KAAKu+B,SAAkBitC,iBAAiBE,4CAA6C7xB,sBAAAA,eAErFy1B,2CAAuCp/C,OAC9ClwB,KAAK6+B,SAAkB2sC,iBAAiBE,4CAA6Cx7C,OAI9Eq/C,4BACP,OAAOvvE,KAAKu+B,SAAkBitC,iBAAiBG,2BAA4B9xB,sBAAAA,UAEpE01B,0BAAsBr/C,OAC7BlwB,KAAK6+B,SAAkB2sC,iBAAiBG,2BAA4Bz7C,OAI7Ds/C,uCACP,OAAOxvE,KAAKu+B,SAAkBitC,iBAAiBI,sCAAuC/xB,sBAAAA,eAE/E21B,qCAAiCt/C,OACxClwB,KAAK6+B,SAAkB2sC,iBAAiBI,sCAAuC17C,OAIxEu/C,mBACP,OAAOzvE,KAAKs/B,aAAaksC,iBAAiBK,kBAAmBhyB,sBAAAA,eAEtD41B,iBAAav/C,OACpBlwB,KAAKw/B,aAAagsC,iBAAiBK,kBAAmB37C,OAI/Cw/C,+BACP,OAAO1vE,KAAKu+B,SAAiBitC,iBAAiBM,8BAA+BjyB,sBAAAA,eAEtE61B,6BAAyBx/C,OAChClwB,KAAK6+B,SAAiB2sC,iBAAiBM,8BAA+B57C,OAI/Dy/C,gBACP,OAAO3vE,KAAKu+B,SAAiBitC,iBAAiBO,eAAgBlyB,sBAAAA,UAEvD81B,cAAUz/C,OACjBlwB,KAAK6+B,SAAiB2sC,iBAAiBO,eAAgB77C,OAIhD0/C,8BACP,OAAO5vE,KAAKu+B,SAAkBitC,iBAAiBQ,6BAA8BnyB,sBAAAA,eAEtE+1B,4BAAwB1/C,OAC/BlwB,KAAK6+B,SAAkB2sC,iBAAiBQ,6BAA8B97C,OAI/D2/C,oCACP,OAAO7vE,KAAKu+B,SAAiBitC,iBAAiBS,mCAAoCpyB,sBAAAA,eAE3Eg2B,kCAA8B3/C,OACrClwB,KAAK6+B,SAAiB2sC,iBAAiBS,mCAAoC/7C,OAIpE4/C,2BACP,OAAO9vE,KAAKu+B,SAAkBitC,iBAAiBU,0BAA2BryB,sBAAAA,eAInEvrB,eACP,OAAOtuB,KAAKu+B,SAAkBitC,iBAAiBW,cAAetyB,sBAAAA,UAEvDvrB,aAAS4B,OAChBlwB,KAAK6+B,SAAkB2sC,iBAAiBW,cAAej8C,OAIhD6/C,wBACP,OAAO/vE,KAAKu+B,SAAkBitC,iBAAiBY,uBAAwBvyB,sBAAAA,eAIhEm2B,+BACP,OAAOhwE,KAAKu+B,SAAkBitC,iBAAiBa,8BAA+BxyB,sBAAAA,eAEvEm2B,6BAAyB9/C,OAChClwB,KAAK6+B,SAAkB2sC,iBAAiBa,8BAA+Bn8C,OAIhE+/C,iCACP,OAAOjwE,KAAKu+B,SAAkBitC,iBAAiBc,gCAAiCzyB,sBAAAA,eAEzEo2B,+BAA2B//C,OAClClwB,KAAK6+B,SAAkB2sC,iBAAiBc,gCAAiCp8C,OAIlEggD,gCACP,OAAOlwE,KAAKu+B,SAAkBitC,iBAAiBe,+BAAgC1yB,sBAAAA,eAExEq2B,8BAA0BhgD,OACjClwB,KAAK6+B,SAAkB2sC,iBAAiBe,+BAAgCr8C,OAIjEigD,8BACP,OAAOnwE,KAAKu+B,SAAiBitC,iBAAiBgB,6BAA8B3yB,sBAAAA,eAErEs2B,4BAAwBjgD,OAC/BlwB,KAAK6+B,SAAiB2sC,iBAAiBgB,6BAA8Bt8C,OAI9DkgD,eACP,OAAOpwE,KAAKu+B,SAAiBitC,iBAAiBiB,cAAe5yB,sBAAAA,UAEtDu2B,aAASlgD,OAChBlwB,KAAK6+B,SAAiB2sC,iBAAiBiB,cAAev8C,OAI/CmgD,gCACP,OAAOrwE,KAAKs/B,aAAaksC,iBAAiBkB,+BAAgC7yB,sBAAAA,eAEnEw2B,8BAA0BngD,OACjClwB,KAAKw/B,aAAagsC,iBAAiBkB,+BAAgCx8C,OAI5DogD,gDACP,OAAOtwE,KAAKu+B,SAAkBitC,iBAAiBmB,+CAAgD9yB,sBAAAA,eAExFy2B,8CAA0CpgD,OACjDlwB,KAAK6+B,SAAkB2sC,iBAAiBmB,+CAAgDz8C,OAIjFqgD,oCACP,OAAOvwE,KAAKs/B,aAAaksC,iBAAiBoB,mCAAoC/yB,sBAAAA,eAEvE02B,kCAA8BrgD,OACrClwB,KAAKw/B,aAAagsC,iBAAiBoB,mCAAoC18C,OAIhEsgD,kCACP,OAAOxwE,KAAKs/B,aAAaksC,iBAAiBqB,iCAAkChzB,sBAAAA,eAErE22B,gCAA4BtgD,OACnClwB,KAAKw/B,aAAagsC,iBAAiBqB,iCAAkC38C,OAI9DugD,0CACP,OAAOzwE,KAAKu+B,SAAiBitC,iBAAiBsB,yCAA0CjzB,sBAAAA,eAEjF42B,wCAAoCvgD,OAC3ClwB,KAAK6+B,SAAiB2sC,iBAAiBsB,yCAA0C58C,OAI1EwgD,mCACP,OAAO1wE,KAAKs/B,aAAaksC,iBAAiBuB,kCAAmClzB,sBAAAA,eAEtE62B,iCAA6BxgD,OACpClwB,KAAKw/B,aAAagsC,iBAAiBuB,kCAAmC78C,OAI/DygD,4BACP,OAAO3wE,KAAKs/B,aAAaksC,iBAAiBwB,2BAA4BnzB,sBAAAA,eAE/D82B,0BAAsBzgD,OAC7BlwB,KAAKw/B,aAAagsC,iBAAiBwB,2BAA4B98C,OAIxD0gD,mCACP,OAAO5wE,KAAKu+B,SAAkBitC,iBAAiByB,kCAAmCpzB,sBAAAA,eAE3E+2B,iCAA6B1gD,OACpClwB,KAAK6+B,SAAkB2sC,iBAAiByB,kCAAmC/8C,OAIpE2gD,0CACP,OAAO7wE,KAAKu+B,SAAiBitC,iBAAiB0B,yCAA0CrzB,sBAAAA,eAEjFg3B,wCAAoC3gD,OAC3ClwB,KAAK6+B,SAAiB2sC,iBAAiB0B,yCAA0Ch9C,OAI1E4gD,6CACP,OAAO9wE,KAAKu+B,SAAkBitC,iBAAiB2B,4CAA6CtzB,sBAAAA,eAErFi3B,2CAAuC5gD,OAC9ClwB,KAAK6+B,SAAkB2sC,iBAAiB2B,4CAA6Cj9C,OAI9E6gD,gCACP,OAAO/wE,KAAKs/B,aAAaksC,iBAAiB4B,+BAAgCvzB,sBAAAA,eAEnEk3B,8BAA0B7gD,OACjClwB,KAAKw/B,aAAagsC,iBAAiB4B,+BAAgCl9C,OAI5D8gD,iCACP,OAAOhxE,KAAKs/B,aAAaksC,iBAAiB6B,gCAAiCxzB,sBAAAA,eAEpEm3B,+BAA2B9gD,OAClClwB,KAAKw/B,aAAagsC,iBAAiB6B,gCAAiCn9C,OAI7D+gD,yCACP,OAAOjxE,KAAKu+B,SAAkBitC,iBAAiB8B,wCAAyCzzB,sBAAAA,eAEjFo3B,uCAAmC/gD,OAC1ClwB,KAAK6+B,SAAkB2sC,iBAAiB8B,wCAAyCp9C,OAI1EghD,wCACP,OAAOlxE,KAAKu+B,SAAiBitC,iBAAiB+B,uCAAwC1zB,sBAAAA,eAE/Eq3B,sCAAkChhD,OACzClwB,KAAK6+B,SAAiB2sC,iBAAiB+B,uCAAwCr9C,OAIxEihD,+BACP,OAAOnxE,KAAKs/B,aAAaksC,iBAAiBgC,8BAA+B3zB,sBAAAA,eAElEs3B,6BAAyBjhD,OAChClwB,KAAKw/B,aAAagsC,iBAAiBgC,8BAA+Bt9C,OAI3DkhD,0BACP,OAAOpxE,KAAKu+B,SAAiBitC,iBAAiBiC,yBAA0B5zB,sBAAAA,UAEjEu3B,wBAAoBlhD,OAC3BlwB,KAAK6+B,SAAiB2sC,iBAAiBiC,yBAA0Bv9C,OAI1DmhD,wBACP,OAAOrxE,KAAKu+B,SAAiBitC,iBAAiBkC,uBAAwB7zB,sBAAAA,eAE/Dw3B,sBAAkBnhD,OACzBlwB,KAAK6+B,SAAiB2sC,iBAAiBkC,uBAAwBx9C,OAIxDohD,oCACP,OAAOtxE,KAAKs/B,aAAaksC,iBAAiBmC,mCAAoC9zB,sBAAAA,eAEvEy3B,kCAA8BphD,OACrClwB,KAAKw/B,aAAagsC,iBAAiBmC,mCAAoCz9C,OAIhEqhD,yBACP,OAAOvxE,KAAKu+B,SAAkBitC,iBAAiBoC,wBAAyB/zB,sBAAAA,UAEjE03B,uBAAmBrhD,OAC1BlwB,KAAK6+B,SAAkB2sC,iBAAiBoC,wBAAyB19C,OAI1DshD,2BACP,OAAOxxE,KAAKu+B,SAAkBitC,iBAAiBqC,0BAA2Bh0B,sBAAAA,UAEnE23B,yBAAqBthD,OAC5BlwB,KAAK6+B,SAAkB2sC,iBAAiBqC,0BAA2B39C,OAI5DuhD,0CACP,OAAOzxE,KAAKu+B,SAAkBitC,iBAAiBsC,yCAA0Cj0B,sBAAAA,eAElF43B,wCAAoCvhD,OAC3ClwB,KAAK6+B,SAAkB2sC,iBAAiBsC,yCAA0C59C,OAI3E6d,eACP,OAAO/tC,KAAKu+B,SAAiBitC,iBAAiBuC,cAAel0B,sBAAAA,UAEtD9L,aAAS7d,OAChBlwB,KAAK6+B,SAAiB2sC,iBAAiBuC,cAAe79C,OAI/CwhD,yBACP,OAAO1xE,KAAKu+B,SAAiBitC,iBAAiBwC,wBAAyBn0B,sBAAAA,UAEhE63B,uBAAmBxhD,OAC1BlwB,KAAK6+B,SAAiB2sC,iBAAiBwC,wBAAyB99C,OAIzDyhD,2BACP,OAAO3xE,KAAKg/B,aAAawsC,iBAAiByC,0BAA2Bp0B,sBAAAA,UAI9D+3B,gCACP,OAAO5xE,KAAKu+B,SAAkBitC,iBAAiB0C,+BAAgCr0B,sBAAAA,eAIxEg4B,mCACP,OAAO7xE,KAAKu+B,SAAkBitC,iBAAiB2C,kCAAmCt0B,sBAAAA,eAE3Eg4B,iCAA6B3hD,OACpClwB,KAAK6+B,SAAkB2sC,iBAAiB2C,kCAAmCj+C,OAIpE4hD,uBACP,OAAO9xE,KAAKu+B,SAAkBitC,iBAAiB4C,sBAAuBv0B,sBAAAA,eAE/Di4B,qBAAiB5hD,OACxBlwB,KAAK6+B,SAAkB2sC,iBAAiB4C,sBAAuBl+C,OAIxD6hD,wBACP,OAAO/xE,KAAKu+B,SAAkBitC,iBAAiB6C,uBAAwBx0B,sBAAAA,eAEhEk4B,sBAAkB7hD,OACzBlwB,KAAK6+B,SAAkB2sC,iBAAiB6C,uBAAwBn+C,OAIzD8hD,uBACP,OAAOhyE,KAAKu+B,SAAiBitC,iBAAiB8C,sBAAuBz0B,sBAAAA,eAE9Dm4B,qBAAiB9hD,OACxBlwB,KAAK6+B,SAAiB2sC,iBAAiB8C,sBAAuBp+C,OAIvD+hD,kBACP,OAAOjyE,KAAKs/B,aAAaksC,iBAAiB+C,iBAAkB10B,sBAAAA,UAErDo4B,gBAAY/hD,OACnBlwB,KAAKw/B,aAAagsC,iBAAiB+C,iBAAkBr+C,OAI9CgiD,wBACP,OAAOlyE,KAAKu+B,SAAkBitC,iBAAiBgD,uBAAwB30B,sBAAAA,eAEhEq4B,sBAAkBhiD,OACzBlwB,KAAK6+B,SAAkB2sC,iBAAiBgD,uBAAwBt+C,OAIzDiiD,+BACP,OAAOnyE,KAAKu+B,SAAkBitC,iBAAiBiD,8BAA+B50B,sBAAAA,eAEvEs4B,6BAAyBjiD,OAChClwB,KAAK6+B,SAAkB2sC,iBAAiBiD,8BAA+Bv+C,OAIhEkiD,wBACP,OAAOpyE,KAAKu+B,SAAiBitC,iBAAiBkD,uBAAwB70B,sBAAAA,eAE/Du4B,sBAAkBliD,OACzBlwB,KAAK6+B,SAAiB2sC,iBAAiBkD,uBAAwBx+C,OAOnEtwB,cACIiD,MAAM2gC,YAAYmrB,OAOT0jB,0BAA0BloC,MAA2B4I,aAA+B,yDAC7F,OAAO,MAAK0F,qBAAqB,oBAAqB,MAAM,EAAMtO,MAAO0P,sBAAAA,iBAA6B9G,eADT,GAIpFu/B,kBAAkBnoC,MAA2B4I,aAA+B,0DACrF,OAAO,OAAK0F,qBAAqB,YAAa,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAI5Ew/B,oBAAoBpoC,MAA2B4I,aAA+B,0DACvF,OAAO,OAAK0F,qBAAqB,cAAe,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAI9Ey/B,sBAAsBroC,MAA2B4I,aAA+B,0DACzF,OAAO,OAAK0F,qBAAqB,gBAAiB,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAIhF0/B,wBAAwBnkD,SAAmBykB,aAA0B,0DAC9E,MAOMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQtjB,SAAS,WAAYvQ,UAEtB,OAAK+qB,+BAA8C,kBAAmB,OAAQ8I,QAASpP,aAVrE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALA,GAcrEqxE,eAAe9xD,SAAiBmyB,aAA0B,0DACnE,MAQMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQ3iB,aAAa,WAAY5e,UAE1B,OAAKy4B,+BAAwC,YAAa,OAAQ8I,QAASpP,aAXzD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAAgB,UACxC,OAAO,IAAIi5B,SAAiB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEjE,OAAO,IAAI83B,SAAiB,SAAUC,QAASK,QAAUA,OAAO35B,kBANL,GAe1DsxE,mBAAmB9lD,IAAkCkmB,aAA0B,0DACxF,MAcMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQtiB,kBAAkB,MAAOhT,KAE1B,OAAKwsB,+BAAwD,gBAAiB,OAAQ8I,QAASpP,aAjB7E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAAS,IAAI+D,MACblF,KAAOJ,SAASI,KAAoB,cAC1C,IAAK,MAAMsE,SAAStE,KAAM,CACtB,MAAMwoC,GAAK,IAAIilC,gBACfjlC,GAAGzJ,WAAWz6B,OACdnD,OAAO+b,KAAKsrB,IAEhB,OAAO,IAAIvP,SAAiC,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEjF,OAAO,IAAI83B,SAAiC,SAAUC,QAASK,QAAUA,OAAO35B,kBAZA,GAqB/EuxE,mBAAmB7/B,aAAiC,0DAC7D,OAAO,OAAKyF,4BAAmDy2B,UAAW,aAAc,MAAM,GAAM,EAAOp1B,sBAAAA,cAA0B9G,eADxE,GAIpD8/B,uBAAuB9/B,aAAiC,0DACjE,OAAO,OAAKyF,4BAA2Du2B,cAAe,iBAAkB,MAAM,GAAO,EAAMl1B,sBAAAA,SAAqB9G,eAD/E,GAIxD+/B,qBAAqB3oC,MAA2B4I,aAA+B,2DACxF,OAAO,QAAK0F,qBAAqB,eAAgB,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAI/EggC,uBAAuB5oC,MAA2B4I,aAA+B,2DAC1F,OAAO,QAAK0F,qBAAqB,iBAAkB,MAAM,EAAOtO,MAAO0P,sBAAAA,cAA0B9G,eADP,GAIjFigC,wBAAwBp0C,SAAkBq0C,SAAkBlgC,aAA0B,2DAC/F,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQtjB,SAAS,MAAOD,UACxBujB,QAAQtjB,SAAS,MAAOo0C,UAEjB,QAAK55B,+BAA8C,qBAAsB,OAAQ8I,QAASpP,aAXxE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALiB,GAetF6xE,qBAAqBngC,aAAiC,2DAC/D,OAAO,QAAKyF,4BAAuDs2B,YAAa,eAAgB,MAAM,GAAO,EAAMj1B,sBAAAA,cAA0B9G,eAD9E,GAItDogC,uBAAuBpgC,aAAiC,2DACjE,OAAO,QAAKyF,4BAA2Dm2B,cAAe,iBAAkB,QAAQ,GAAO,EAAM90B,sBAAAA,cAA0B9G,eADtF,ICzpBnE,MAAOqgC,8BAA8BlL,uBAAsB,SAC/C,KAAAmL,sBAAwB,mBAAkB,UAC1C,KAAAC,8BAAgC,2BAA0B,UAC1D,KAAAjF,uBAAyB,oBCFrC,MAAOkF,wBAAwB1J,iBAItB2J,uBACP,OAAOxzE,KAAKu+B,SAAiB60C,sBAAsBC,sBAAuBx5B,sBAAAA,UAEnE25B,qBAAiBtjD,OACxBlwB,KAAK6+B,SAAiBu0C,sBAAsBC,sBAAuBnjD,OAI5DujD,+BACP,OAAOzzE,KAAKu+B,SAAiB60C,sBAAsBE,8BAA+Bz5B,sBAAAA,UAE3E45B,6BAAyBvjD,OAChClwB,KAAK6+B,SAAiBu0C,sBAAsBE,8BAA+BpjD,OAIpE6hD,wBACP,OAAO/xE,KAAKu+B,SAAkB60C,sBAAsB/E,uBAAwBx0B,sBAAAA,eAErEk4B,sBAAkB7hD,OACzBlwB,KAAK6+B,SAAkBu0C,sBAAsB/E,uBAAwBn+C,OAOzEtwB,cACIiD,MAAM2gC,YAAYorB,YAOT6M,gBAAgBtxB,MAA2B4I,aAA+B,yDACnF,OAAO,MAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,GAI1E2gC,yBAAyBvpC,MAA2B4I,aAA+B,0DAC5F,OAAO,OAAK0F,qBAAqB,mBAAoB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,IChD9F,MAAO4gC,8BAA8B93B,aAAY,SACrC,KAAA+3B,0BAA4B,uBAAsB,UAClD,KAAAC,cAAgB,WAAU,UAC1B,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,gBAAkB,aCJ9B,MAAOC,wBAAwB98B,OAItB+8B,2BACP,OAAOj0E,KAAKu+B,SAAkBo1C,sBAAsBC,2BAI7C7oD,eACP,OAAO/qB,KAAKu+B,SAAiBo1C,sBAAsBE,cAAeh6B,sBAAAA,cAE3D9uB,aAASmF,OAChBlwB,KAAK6+B,SAAiB80C,sBAAsBE,cAAe3jD,OAIpDlF,gBACP,OAAOhrB,KAAKu+B,SAAiBo1C,sBAAsBG,eAAgBj6B,sBAAAA,cAE5D7uB,cAAUkF,OACjBlwB,KAAK6+B,SAAiB80C,sBAAsBG,eAAgB5jD,OAIrDgkD,iBACP,OAAOl0E,KAAKu+B,SAAiBo1C,sBAAsBI,iBAE5CG,eAAWhkD,OAClBlwB,KAAK6+B,SAAiB80C,sBAAsBI,gBAAiB7jD,OAOjEtwB,YAAYi0B,YACRhxB,MAAMgxB,aC/BR,MAAOsgD,2BAA2BR,sBAAqB,SAC3C,KAAAS,2BAA6B,wBAAuB,UACpD,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,+BAAiC,4BAA2B,UAC5D,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,mCAAqC,gCAA+B,UACpE,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,aAAe,UAAS,UACxB,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,aAAe,UAAS,WACxB,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,iCAAmC,8BAA6B,WAChE,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,aAAe,UClB3B,MAAOC,uBAAuBv4C,wBAErBw4C,iBACP,OAAO51E,KAAKs/B,aAAa,cAElBs2C,eAAW1lD,OAClBlwB,KAAKw/B,aAAa,aAActP,OAGzBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBhG,kBACP,OAAOlqB,KAAKu+B,SAAiB,eAEtBrU,gBAAYgG,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9B2lD,qBACP,OAAO71E,KAAKu+B,SAAkB,kBAEvBs3C,mBAAe3lD,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGlC4lD,oBACP,OAAO91E,KAAKu+B,SAAiB,iBAEtBu3C,kBAAc5lD,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhC6lD,6BACP,OAAO/1E,KAAKu+B,SAAiB,0BAEtBw3C,2BAAuB7lD,OAC9BlwB,KAAK6+B,SAAiB,yBAA0B3O,OAGzC8lD,yBACP,OAAOh2E,KAAKu+B,SAAiB,sBAEtBy3C,uBAAmB9lD,OAC1BlwB,KAAK6+B,SAAiB,qBAAsB3O,OAGzCuR,sBACHzhC,KAAKw/B,aAAa,aAAc36B,SAAAA,SAAAA,OAChC7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6+B,SAAkB,kBAAkB,GACzC7+B,KAAK6+B,SAAiB,gBAAiB,IACvC7+B,KAAK6+B,SAAiB,yBAA0B,IAChD7+B,KAAK6+B,SAAiB,qBAAsB,KAI9C,MAAOo3C,yBAAyB74C,wBAEvB84C,iBACP,OAAOl2E,KAAKu+B,SAAiB,cAEtB23C,eAAWhmD,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBimD,sBACP,OAAOn2E,KAAKu+B,SAAiB,mBAEtB43C,oBAAgBjmD,OACvBlwB,KAAK6+B,SAAiB,kBAAmB3O,OAGlCkmD,WACP,OAAOp2E,KAAKu+B,SAAiB,QAEtB63C,SAAKlmD,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBmmD,WACP,OAAOr2E,KAAKu+B,SAAiB,QAEtB83C,SAAKnmD,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACHzhC,KAAK6+B,SAAiB,aAAc,IACpC7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,kBAAmB,IACzC7+B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,OAAQ,KAMhC,MAAOy3C,qBAAqBtC,gBAInBuC,4BACP,OAAOv2E,KAAKu+B,SAAiB41C,mBAAmBC,4BAEzCmC,0BAAsBrmD,OAC7BlwB,KAAK6+B,SAAiBs1C,mBAAmBC,2BAA4BlkD,OAI9DsmD,2BACP,OAAOx2E,KAAKu+B,SAAiB41C,mBAAmBE,2BAEzCmC,yBAAqBtmD,OAC5BlwB,KAAK6+B,SAAiBs1C,mBAAmBE,0BAA2BnkD,OAI7DumD,gCACP,OAAOz2E,KAAKu+B,SAAiB41C,mBAAmBG,gCAIzCoC,mBACP,OAAO12E,KAAKu+B,SAAiB41C,mBAAmBI,mBAIzCoC,yBACP,OAAO32E,KAAKu+B,SAAiB41C,mBAAmBK,yBAIzCoC,oCACP,OAAO52E,KAAKu+B,SAAkB41C,mBAAmBM,oCAI1CoC,mBACP,OAAO72E,KAAKu+B,SAAkB41C,mBAAmBO,mBAI1CoC,cACP,OAAO92E,KAAKu+B,SAAkB41C,mBAAmBQ,cAI1CoC,mBACP,OAAO/2E,KAAKu+B,SAAiB41C,mBAAmBS,mBAIzCoC,cACP,OAAOh3E,KAAKs/B,aAAa60C,mBAAmBU,cAIrCoC,gBACP,OAAOj3E,KAAKu+B,SAAiB41C,mBAAmBW,gBAEzCmC,cAAU/mD,OACjBlwB,KAAK6+B,SAAiBs1C,mBAAmBW,eAAgB5kD,OAIlDgnD,qBACP,OAAOl3E,KAAKu+B,SAAiB41C,mBAAmBY,oBAAqBl7B,sBAAAA,UAI9Ds9B,uBACP,OAAOn3E,KAAK2/B,cAAsBw0C,mBAAmBa,sBAAuBn7B,sBAAAA,UAIrEu9B,wBACP,OAAOp3E,KAAKu+B,SAAiB41C,mBAAmBc,wBAIzCoC,kBACP,OAAOr3E,KAAKu+B,SAAiB41C,mBAAmBe,iBAAkBr7B,sBAAAA,UAE3Dw9B,gBAAYnnD,OACnBlwB,KAAK6+B,SAAiBs1C,mBAAmBe,iBAAkBhlD,OAIpDonD,oBACP,OAAOt3E,KAAKu+B,SAAiB41C,mBAAmBgB,oBAIzCoC,uBACP,OAAOv3E,KAAKu+B,SAAiB41C,mBAAmBiB,uBAIzCoC,6BACP,OAAOx3E,KAAKu+B,SAAiB41C,mBAAmBkB,6BAEzCmC,2BAAuBtnD,OAC9BlwB,KAAK6+B,SAAiBs1C,mBAAmBkB,4BAA6BnlD,OAI/DunD,oBACP,OAAOz3E,KAAKu+B,SAAiB41C,mBAAmBmB,mBAAoBz7B,sBAAAA,UAI7D69B,wBACP,OAAO13E,KAAKs/B,aAAa60C,mBAAmBoB,uBAAwB17B,sBAAAA,UAI7D89B,kCACP,OAAO33E,KAAKu+B,SAAiB41C,mBAAmBqB,iCAAkC37B,sBAAAA,UAI3E+9B,iBACP,OAAO53E,KAAKu+B,SAAiB41C,mBAAmBsB,iBAIzCoC,cACP,OAAO73E,KAAKu+B,SAAiB41C,mBAAmBuB,aAAc77B,sBAAAA,UAOlEj6C,cACIiD,MAAM2gC,YAAYmsB,SAOTmoB,eAAe3tC,MAA2B4I,aAA+B,yDAClF,OAAO,MAAK0F,qBAAqB,SAAU,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIzEglC,oBAAoB7nD,MAAe6iB,aAA0B,0DAStE,OAAO,OAAKsG,+BAA8C,sBAAwBnpB,MAAO,MAAO,KAAM6iB,aAR7E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAAuB,SAASC,QAASK,QAAUL,QAAQ/3B,WAEtE,OAAO,IAAI83B,SAAuB,SAASC,QAASK,QAAUA,OAAO35B,kBANP,GAY7D22E,eAAejlC,aAA0B,0DASlD,OAAO,OAAKsG,+BAA8C,SAAU,MAAO,KAAMtG,aARxD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAAuB,SAASC,QAASK,QAAUL,QAAQ/3B,WAEtE,OAAO,IAAI83B,SAAuB,SAASC,QAASK,QAAUA,OAAO35B,kBAN3B,GAYzC42E,cAAc/nD,MAAe6iB,aAA0B,0DAShE,OAAO,OAAKsG,+BAA8C,gBAAkBnpB,MAAO,MAAO,KAAM6iB,aARvE1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,GAAmB,CAC3C,MAAMxyB,OAASvB,SAASI,KACxB,OAAO,IAAIi5B,SAAuB,SAASC,QAASK,QAAUL,QAAQ/3B,WAEtE,OAAO,IAAI83B,SAAuB,SAASC,QAASK,QAAUA,OAAO35B,kBANb,GAYvD62E,0BAA0BnlC,aAAiC,0DACpE,OAAO,OAAKyF,4BAAiEy9B,iBAAkB,oBAAqB,cAAc,GAAM,EAAOp8B,sBAAAA,KAAiB9G,eAD5F,GAI3DolC,0BAA0BplC,aAAiC,0DACpE,OAAO,OAAKyF,4BAA6Dm9B,eAAgB,oBAAqB,MAAM,GAAM,EAAO97B,sBAAAA,KAAiB9G,eAD9E,GAI3DqlC,cAAcjuC,MAA2B4I,aAA+B,0DACjF,OAAO,OAAK0F,qBAAqB,QAAS,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,ICrTnF,MAAOslC,yBAAyBx8B,aAAY,SAChC,KAAAy8B,0BAA4B,uBAAsB,UAClD,KAAAC,2BAA6B,wBAAuB,UACpD,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,yBAA2B,sBAAqB,UAChD,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,YAAc,SAAQ,UACtB,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,4CAA8C,yCAAwC,WACtF,KAAAC,sCAAwC,mCAAkC,WAC1E,KAAAC,0CAA4C,uCAAsC,WAClF,KAAAC,qCAAuC,kCAAiC,WACxE,KAAAC,sCAAwC,mCAAkC,WAC1E,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,6BAA+B,0BAAyB,WACxD,KAAAC,gCAAkC,6BAA4B,WAC9D,KAAAC,mCAAqC,gCAA+B,WACpE,KAAAC,0BAA4B,uBAAsB,WAClD,KAAAC,UAAY,OAAM,WAClB,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAA5jB,iBAAmB,cCrB/B,MAAO6jB,2CAA2C58C,wBAEzC68C,yBACP,OAAOj6E,KAAKs/B,aAAa,sBAElB26C,uBAAmB/pD,OAC1BlwB,KAAKw/B,aAAa,qBAAsBtP,OAGjClJ,oBACP,OAAOhnB,KAAKs/B,aAAa,iBAElBtY,kBAAckJ,OACrBlwB,KAAKw/B,aAAa,gBAAiBtP,OAG5BgqD,cACP,OAAOl6E,KAAKu+B,SAAiB,WAEtB27C,YAAQhqD,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG9BuR,sBACHzhC,KAAKw/B,aAAa,qBAAsB36B,SAAAA,SAAAA,OACxC7E,KAAKw/B,aAAa,gBAAiB36B,SAAAA,SAAAA,OACnC7E,KAAK6+B,SAAiB,UAAW,KA4DnC,MAAOs7C,mBAAmBjjC,OAIjBkjC,2BACP,OAAOp6E,KAAKu+B,SAAkB85C,iBAAiBC,0BAA2Bz+B,sBAAAA,UAEnEugC,yBAAqBlqD,OAC5BlwB,KAAK6+B,SAAkBw5C,iBAAiBC,0BAA2BpoD,OAI5DmqD,4BACP,OAAOr6E,KAAKu+B,SAAiB85C,iBAAiBE,2BAA4B1+B,sBAAAA,eAEnEwgC,0BAAsBnqD,OAC7BlwB,KAAK6+B,SAAiBw5C,iBAAiBE,2BAA4BroD,OAI5DoqD,uBACP,OAAOt6E,KAAKu+B,SAAiB85C,iBAAiBG,sBAAuB3+B,sBAAAA,UAE9DygC,qBAAiBpqD,OACxBlwB,KAAK6+B,SAAiBw5C,iBAAiBG,sBAAuBtoD,OAIvDqqD,2BACP,OAAOv6E,KAAKs/B,aAAa+4C,iBAAiBI,0BAA2B5+B,sBAAAA,UAE9D0gC,yBAAqBrqD,OAC5BlwB,KAAKw/B,aAAa64C,iBAAiBI,0BAA2BvoD,OAIvDsqD,yBACP,OAAOx6E,KAAKu+B,SAAkB85C,iBAAiBK,wBAAyB7+B,sBAAAA,UAEjE2gC,uBAAmBtqD,OAC1BlwB,KAAK6+B,SAAkBw5C,iBAAiBK,wBAAyBxoD,OAI1DuqD,0BACP,OAAOz6E,KAAKu+B,SAAiB85C,iBAAiBM,yBAA0B9+B,sBAAAA,UAEjE4gC,wBAAoBvqD,OAC3BlwB,KAAK6+B,SAAiBw5C,iBAAiBM,yBAA0BzoD,OAI1DwqD,yBACP,OAAO16E,KAAKs/B,aAAa+4C,iBAAiBO,wBAAyB/+B,sBAAAA,YAI5D8gC,aACP,OAAO36E,KAAKu+B,SAAkB85C,iBAAiBQ,YAAah/B,sBAAAA,UAErD8gC,WAAOzqD,OACdlwB,KAAK6+B,SAAkBw5C,iBAAiBQ,YAAa3oD,OAI9C0qD,gCACP,OAAO56E,KAAKu+B,SAAkB85C,iBAAiBS,+BAAgCj/B,sBAAAA,UAExE+gC,8BAA0B1qD,OACjClwB,KAAK6+B,SAAkBw5C,iBAAiBS,+BAAgC5oD,OAIjE2qD,uBACP,OAAO76E,KAAKs/B,aAAa+4C,iBAAiBU,sBAAuBl/B,sBAAAA,YAI1DihC,sBACP,OAAO96E,KAAKs/B,aAAa+4C,iBAAiBW,qBAAsBn/B,sBAAAA,YAIzDkhC,6CACP,OAAO/6E,KAAKs/B,aAAa+4C,iBAAiBY,4CAA6Cp/B,sBAAAA,UAEhFkhC,2CAAuC7qD,OAC9ClwB,KAAKw/B,aAAa64C,iBAAiBY,4CAA6C/oD,OAIzE8qD,uCACP,OAAOh7E,KAAKu+B,SAAkB85C,iBAAiBa,sCAAuCr/B,sBAAAA,UAE/EmhC,qCAAiC9qD,OACxClwB,KAAK6+B,SAAkBw5C,iBAAiBa,sCAAuChpD,OAIxE+qD,2CACP,OAAOj7E,KAAKu+B,SAAkB85C,iBAAiBc,0CAA2Ct/B,sBAAAA,UAEnFohC,yCAAqC/qD,OAC5ClwB,KAAK6+B,SAAkBw5C,iBAAiBc,0CAA2CjpD,OAI5EgrD,sCACP,OAAOl7E,KAAKu+B,SAAiB85C,iBAAiBe,qCAAsCv/B,sBAAAA,UAE7EqhC,oCAAgChrD,OACvClwB,KAAK6+B,SAAiBw5C,iBAAiBe,qCAAsClpD,OAItEirD,uCACP,OAAOn7E,KAAKu+B,SAAkB85C,iBAAiBgB,sCAAuCx/B,sBAAAA,UAE/EshC,qCAAiCjrD,OACxClwB,KAAK6+B,SAAkBw5C,iBAAiBgB,sCAAuCnpD,OAIxEkrD,6BACP,OAAOp7E,KAAKs/B,aAAa+4C,iBAAiBiB,4BAA6Bz/B,sBAAAA,YAIhEwhC,8BACP,OAAOr7E,KAAKs/B,aAAa+4C,iBAAiBkB,6BAA8B1/B,sBAAAA,YAIjEyhC,iCACP,OAAOt7E,KAAKs/B,aAAa+4C,iBAAiBmB,gCAAiC3/B,sBAAAA,YAIpE0hC,oCACP,OAAOv7E,KAAKs/B,aAAa+4C,iBAAiBoB,mCAAoC5/B,sBAAAA,YAIvE2hC,2BACP,OAAOx7E,KAAKu+B,SAAkB85C,iBAAiBqB,2BAIxC+B,WACP,OAAOz7E,KAAKs/B,aAAa+4C,iBAAiBsB,WAEnC8B,SAAKvrD,OACZlwB,KAAKw/B,aAAa64C,iBAAiBsB,UAAWzpD,OAIvCwrD,wBACP,OAAO17E,KAAKu+B,SAAiB85C,iBAAiBuB,uBAAwB//B,sBAAAA,UAE/D6hC,sBAAkBxrD,OACzBlwB,KAAK6+B,SAAiBw5C,iBAAiBuB,uBAAwB1pD,OAIxDyrD,uBACP,OAAO37E,KAAKu+B,SAAiB85C,iBAAiBwB,sBAAuBhgC,sBAAAA,UAE9D8hC,qBAAiBzrD,OACxBlwB,KAAK6+B,SAAiBw5C,iBAAiBwB,sBAAuB3pD,OAIvD0rD,yBACP,OAAO57E,KAAKu+B,SAAkB85C,iBAAiByB,wBAAyBjgC,sBAAAA,iBAEjE+hC,uBAAmB1rD,OAC1BlwB,KAAK6+B,SAAkBw5C,iBAAiByB,wBAAyB5pD,OAI1D2rD,uBACP,OAAO77E,KAAKu+B,SAAkB85C,iBAAiB0B,uBAExC8B,qBAAiB3rD,OACxBlwB,KAAK6+B,SAAkBw5C,iBAAiB0B,sBAAuB7pD,OAIxDoqC,kBACP,OAAOt6D,KAAKs/B,aAAa+4C,iBAAiBliB,iBAAkBtc,sBAAAA,eAErDygB,gBAAYpqC,OACnBlwB,KAAKw/B,aAAa64C,iBAAiBliB,iBAAkBjmC,OAOzDtwB,cACIiD,MAAM2gC,YAAYqqB,OAOTiuB,qBAAqB3xC,MAA2B4I,aAA+B,yDACxF,OAAO,MAAK0F,qBAAqB,eAAgB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI/EgpC,eAAe7rD,MAAa6iB,aAA0B,0DAU/D,OAAO,OAAKsG,+BAAsC,YAAa,OAAQnpB,MAAO6iB,aATrD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASiC,SAAAA,SAAAA,MAAgBxD,SAASI,KAAS,GAAa6E,eAC9D,OAAO,IAAIo0B,SAAe,SAAUC,QAASK,QAAUL,QAAQ/3B,WAE/D,OAAO,IAAI83B,SAAe,SAAUC,QAASK,QAAUA,OAAO35B,kBANP,GAatD26E,8BAA8B7xC,MAA2B4I,aAA+B,0DACjG,OAAO,OAAK0F,qBAAqB,wBAAyB,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,GAIxFkpC,+BAA+B9xC,MAA2B4I,aAA+B,0DAClG,OAAO,OAAK0F,qBAAqB,yBAA0B,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,GAIzF0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,GAI1EmpC,4BAA4BnpC,aAAiC,0DACtE,OAAO,OAAKyF,4BAAqGwhC,mCAAoC,sBAAuB,iBAAiB,GAAO,EAAOngC,sBAAAA,iBAA6B9G,eADlK,ICtUxE,MAAOopC,2BAA2BxI,sBAAqB,SAC3C,KAAAyI,oBAAsB,iBAAgB,UACtC,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,gCAAkC,6BAA4B,UAC9D,KAAAC,uBAAyB,oBAAmB,UAC5C,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,iCAAmC,8BAA6B,WAChE,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,yBAA2B,sBAAqB,WAChD,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,aAAe,UAAS,WACxB,KAAAxQ,iBAAmB,cAAa,WAChC,KAAAyQ,UAAY,OAAM,WAClB,KAAAC,gCAAkC,6BAA4B,WAC9D,KAAAC,wBAA0B,qBCpDtC,MAAOC,iCAAiC/hD,wBAC5Bob,4BACdlY,UACAiY,WACAlG,UACAC,SACAC,iBACAlU,WACA0U,aAAiC,yDAEjC,GAAsB,MAAjB,MAAKrV,SAAqB,MAAM,IAAI5+B,MAAM,oBAC/C,MAAMi5C,QAAU,MAAKra,SAAS4a,YAC5BC,WACA,IAAItF,2BAAiC3S,UAAW,MAAK5C,SAAU6a,WAAYlG,UAAWC,SAAUC,kBAChGlU,YAEF,OAAK0U,mBAGGgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBATU,GAgBtB6F,qBACX3Y,UACAiY,WACAhG,iBACAlU,WACA0U,aAAiC,0DAEjC,GAAsB,MAAjB,OAAKrV,SAAqB,MAAM,IAAI5+B,MAAM,oBAC/C,MAAMi5C,QAAU,OAAKra,SAAS4a,YAC5BC,WACA,IAAIlB,iCAAkD/W,UAAW,OAAK5C,SAAU6a,WAAYhG,kBAC5FlU,YAEF,OAAK0U,mBAGGgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBATU,GAgBtB8F,sBACXX,WACApd,QACAkD,WACA0U,aAAiC,0DAEjC,GAAsB,MAAjB,OAAKrV,SAAqB,MAAM,IAAI5+B,MAAM,oBAC/C,MAAMi5C,QAAU,OAAKra,SAAS4a,YAC5BC,WACA,IAAIpB,sBAAyB,OAAKzZ,SAAU6a,WAAYpd,SACxDkD,YAEF,OAAK0U,mBAGGgF,QAAQxE,qBAAqBR,aAC5B,YAHMgF,QAAQ3E,kBATU,ICvC/B,MAAOgsC,uBAAuBhiD,wBAErBiiD,iBACP,OAAOr/E,KAAKs/B,aAAa,cAElB+/C,eAAWnvD,OAClBlwB,KAAKw/B,aAAa,aAActP,OAGzBovD,iBACP,OAAOt/E,KAAKo+B,iBAAyB,cAE9BkhD,eAAWpvD,OAClBlwB,KAAK2+B,iBAAyB,aAAczO,OAGrCqvD,eACP,OAAOv/E,KAAKo+B,iBAAyB,YAE9BmhD,aAASrvD,OAChBlwB,KAAK2+B,iBAAyB,WAAYzO,OAGnCsvD,UACP,OAAOx/E,KAAKo+B,iBAAyB,OAE9BohD,QAAItvD,OACXlwB,KAAK2+B,iBAAyB,MAAOzO,OAG9BuvD,iBACP,OAAOz/E,KAAKo+B,iBAAyB,cAE9BqhD,eAAWvvD,OAClBlwB,KAAK2+B,iBAAyB,aAAczO,OAGrCwvD,gBACP,OAAO1/E,KAAKo+B,iBAAyB,aAE9BshD,cAAUxvD,OACjBlwB,KAAK2+B,iBAAyB,YAAazO,OAGxCuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,aAAc36B,SAAAA,SAAAA,OAChC7E,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAK6+B,SAAiB,MAAO,GAC7B7+B,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,YAAa,IAIrC,MAAO8gD,wBAAwBviD,wBAEtB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjB0vD,kBACP,OAAO5/E,KAAKu+B,SAAiB,eAEtBqhD,gBAAY1vD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAGlCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,cAAe,KAIvC,MAAOghD,sBAAsBziD,wBAEpB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBmvD,iBACP,OAAOr/E,KAAKs/B,aAAa,cAElB+/C,eAAWnvD,OAClBlwB,KAAKw/B,aAAa,aAActP,OAGzB4vD,WACP,OAAO9/E,KAAKu+B,SAAiB,QAEtBuhD,SAAK5vD,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAKw/B,aAAa,aAAc36B,SAAAA,SAAAA,OAChC7E,KAAK6+B,SAAiB,OAAQ,KAIhC,MAAOkhD,4BAA4B3iD,wBAE1B4iD,8BACP,OAAOhgF,KAAKu+B,SAAkB,2BAEvByhD,4BAAwB9vD,OAC/BlwB,KAAK6+B,SAAkB,0BAA2B3O,OAG3C+vD,wBACP,OAAOjgF,KAAKu+B,SAAkB,qBAEvB0hD,sBAAkB/vD,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrCgwD,+BACP,OAAOlgF,KAAKu+B,SAAkB,4BAEvB2hD,6BAAyBhwD,OAChClwB,KAAK6+B,SAAkB,2BAA4B3O,OAG5CiwD,+BACP,OAAOngF,KAAKu+B,SAAkB,4BAEvB4hD,6BAAyBjwD,OAChClwB,KAAK6+B,SAAkB,2BAA4B3O,OAG5CkwD,gCACP,OAAOpgF,KAAKu+B,SAAkB,6BAEvB6hD,8BAA0BlwD,OACjClwB,KAAK6+B,SAAkB,4BAA6B3O,OAG7CmwD,wBACP,OAAOrgF,KAAKu+B,SAAkB,qBAEvB8hD,sBAAkBnwD,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrCowD,+BACP,OAAOtgF,KAAKu+B,SAAkB,4BAEvB+hD,6BAAyBpwD,OAChClwB,KAAK6+B,SAAkB,2BAA4B3O,OAG5CqwD,+BACP,OAAOvgF,KAAKu+B,SAAkB,4BAEvBgiD,6BAAyBrwD,OAChClwB,KAAK6+B,SAAkB,2BAA4B3O,OAG5CswD,wBACP,OAAOxgF,KAAKu+B,SAAiB,qBAEtBiiD,sBAAkBtwD,OACzBlwB,KAAK6+B,SAAiB,oBAAqB3O,OAGpCuwD,8BACP,OAAOzgF,KAAKu+B,SAAkB,2BAEvBkiD,4BAAwBvwD,OAC/BlwB,KAAK6+B,SAAkB,0BAA2B3O,OAG3CwwD,yBACP,OAAO1gF,KAAKu+B,SAAkB,sBAEvBmiD,uBAAmBxwD,OAC1BlwB,KAAK6+B,SAAkB,qBAAsB3O,OAGtCywD,sBACP,OAAO3gF,KAAKu+B,SAAiB,mBAEtBoiD,oBAAgBzwD,OACvBlwB,KAAK6+B,SAAiB,kBAAmB3O,OAGlC0wD,sBACP,OAAO5gF,KAAKu+B,SAAiB,mBAEtBqiD,oBAAgB1wD,OACvBlwB,KAAK6+B,SAAiB,kBAAmB3O,OAGlC2wD,0BACP,OAAO7gF,KAAKu+B,SAAiB,uBAEtBsiD,wBAAoB3wD,OAC3BlwB,KAAK6+B,SAAiB,sBAAuB3O,OAGtC4wD,kBACP,OAAO9gF,KAAKu+B,SAAiB,eAEtBuiD,gBAAY5wD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9B6wD,0BACP,OAAO/gF,KAAKu+B,SAAiB,uBAEtBwiD,wBAAoB7wD,OAC3BlwB,KAAK6+B,SAAiB,sBAAuB3O,OAGtC8wD,0BACP,OAAOhhF,KAAKu+B,SAAiB,uBAEtByiD,wBAAoB9wD,OAC3BlwB,KAAK6+B,SAAiB,sBAAuB3O,OAGtC+wD,iBACP,OAAOjhF,KAAKu+B,SAAiB,cAEtB0iD,eAAW/wD,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BgxD,kBACP,OAAOlhF,KAAKu+B,SAAiB,eAEtB2iD,gBAAYhxD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BixD,cACP,OAAOnhF,KAAKu+B,SAAiB,WAEtB4iD,YAAQjxD,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1BkxD,qBACP,OAAOphF,KAAKu+B,SAAiB,kBAEtB6iD,mBAAelxD,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjCmxD,kBACP,OAAOrhF,KAAKu+B,SAAiB,eAEtB8iD,gBAAYnxD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BoxD,wBACP,OAAOthF,KAAKu+B,SAAiB,qBAEtB+iD,sBAAkBpxD,OACzBlwB,KAAK6+B,SAAiB,oBAAqB3O,OAGpCqxD,iBACP,OAAOvhF,KAAKu+B,SAAiB,cAEtBgjD,eAAWrxD,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BsxD,iBACP,OAAOxhF,KAAKu+B,SAAiB,cAEtBijD,eAAWtxD,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7BuxD,kBACP,OAAOzhF,KAAKu+B,SAAiB,eAEtBkjD,gBAAYvxD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BwxD,kBACP,OAAO1hF,KAAKu+B,SAAiB,eAEtBmjD,gBAAYxxD,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9ByxD,+BACP,OAAO3hF,KAAKo+B,iBAAyB,4BAE9BujD,6BAAyBzxD,OAChClwB,KAAK2+B,iBAAyB,2BAA4BzO,OAGnD0xD,+BACP,OAAO5hF,KAAKo+B,iBAAyB,4BAE9BwjD,6BAAyB1xD,OAChClwB,KAAK2+B,iBAAyB,2BAA4BzO,OAGnD2xD,gCACP,OAAO7hF,KAAKo+B,iBAAyB,6BAE9ByjD,8BAA0B3xD,OACjClwB,KAAK2+B,iBAAyB,4BAA6BzO,OAGpD4xD,gCACP,OAAO9hF,KAAKo+B,iBAAyB,6BAE9B0jD,8BAA0B5xD,OACjClwB,KAAK2+B,iBAAyB,4BAA6BzO,OAGpD6xD,uCACP,OAAO/hF,KAAKo+B,iBAAyB,oCAE9B2jD,qCAAiC7xD,OACxClwB,KAAK2+B,iBAAyB,mCAAoCzO,OAG3D8xD,wCACP,OAAOhiF,KAAKo+B,iBAAyB,qCAE9B4jD,sCAAkC9xD,OACzClwB,KAAK2+B,iBAAyB,oCAAqCzO,OAG5D+xD,sCACP,OAAOjiF,KAAKo+B,iBAAyB,mCAE9B6jD,oCAAgC/xD,OACvClwB,KAAK2+B,iBAAyB,kCAAmCzO,OAG1DgyD,wCACP,OAAOliF,KAAKo+B,iBAAyB,qCAE9B8jD,sCAAkChyD,OACzClwB,KAAK2+B,iBAAyB,oCAAqCzO,OAG5DiyD,6BACP,OAAOniF,KAAKo+B,iBAAyB,0BAE9B+jD,2BAAuBjyD,OAC9BlwB,KAAK2+B,iBAAyB,yBAA0BzO,OAGjDkyD,6BACP,OAAOpiF,KAAKo+B,iBAAyB,0BAE9BgkD,2BAAuBlyD,OAC9BlwB,KAAK2+B,iBAAyB,yBAA0BzO,OAGjDmyD,mCACP,OAAOriF,KAAKo+B,iBAAyB,gCAE9BikD,iCAA6BnyD,OACpClwB,KAAK2+B,iBAAyB,+BAAgCzO,OAGvDoyD,mCACP,OAAOtiF,KAAKo+B,iBAAyB,gCAE9BkkD,iCAA6BpyD,OACpClwB,KAAK2+B,iBAAyB,+BAAgCzO,OAGvDqyD,iCACP,OAAOviF,KAAKo+B,iBAAyB,8BAE9BmkD,+BAA2BryD,OAClClwB,KAAK2+B,iBAAyB,6BAA8BzO,OAGrDsyD,iCACP,OAAOxiF,KAAKo+B,iBAAyB,8BAE9BokD,+BAA2BtyD,OAClClwB,KAAK2+B,iBAAyB,6BAA8BzO,OAGrDuyD,yBACP,OAAOziF,KAAKo+B,iBAAyB,sBAE9BqkD,uBAAmBvyD,OAC1BlwB,KAAK2+B,iBAAyB,qBAAsBzO,OAG7CwyD,yBACP,OAAO1iF,KAAKo+B,iBAAyB,sBAE9BskD,uBAAmBxyD,OAC1BlwB,KAAK2+B,iBAAyB,qBAAsBzO,OAG7CyyD,6BACP,OAAO3iF,KAAKo+B,iBAAyB,0BAE9BukD,2BAAuBzyD,OAC9BlwB,KAAK2+B,iBAAyB,yBAA0BzO,OAGjD0yD,6BACP,OAAO5iF,KAAKo+B,iBAAyB,0BAE9BwkD,2BAAuB1yD,OAC9BlwB,KAAK2+B,iBAAyB,yBAA0BzO,OAGjD2yD,8BACP,OAAO7iF,KAAKo+B,iBAAyB,2BAE9BykD,4BAAwB3yD,OAC/BlwB,KAAK2+B,iBAAyB,0BAA2BzO,OAGlD4yD,8BACP,OAAO9iF,KAAKo+B,iBAAyB,2BAE9B0kD,4BAAwB5yD,OAC/BlwB,KAAK2+B,iBAAyB,0BAA2BzO,OAGlD6yD,8BACP,OAAO/iF,KAAKo+B,iBAAyB,2BAE9B2kD,4BAAwB7yD,OAC/BlwB,KAAK2+B,iBAAyB,0BAA2BzO,OAGlD8yD,8BACP,OAAOhjF,KAAKo+B,iBAAyB,2BAE9B4kD,4BAAwB9yD,OAC/BlwB,KAAK2+B,iBAAyB,0BAA2BzO,OAGtDuR,sBACHzhC,KAAK6+B,SAAkB,2BAA2B,GAClD7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAkB,4BAA4B,GACnD7+B,KAAK6+B,SAAkB,4BAA4B,GACnD7+B,KAAK6+B,SAAkB,6BAA6B,GACpD7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAkB,4BAA4B,GACnD7+B,KAAK6+B,SAAkB,4BAA4B,GACnD7+B,KAAK6+B,SAAiB,oBAAqB,IAC3C7+B,KAAK6+B,SAAkB,2BAA2B,GAClD7+B,KAAK6+B,SAAkB,sBAAsB,GAC7C7+B,KAAK6+B,SAAiB,kBAAmB,GACzC7+B,KAAK6+B,SAAiB,kBAAmB,GACzC7+B,KAAK6+B,SAAiB,sBAAuB,GAC7C7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,sBAAuB,GAC7C7+B,KAAK6+B,SAAiB,sBAAuB,GAC7C7+B,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,oBAAqB,GAC3C7+B,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,2BAA4B,GAClD7+B,KAAK6+B,SAAiB,2BAA4B,GAClD7+B,KAAK6+B,SAAiB,4BAA6B,GACnD7+B,KAAK6+B,SAAiB,4BAA6B,GACnD7+B,KAAK6+B,SAAiB,mCAAoC,GAC1D7+B,KAAK6+B,SAAiB,oCAAqC,GAC3D7+B,KAAK6+B,SAAiB,kCAAmC,GACzD7+B,KAAK6+B,SAAiB,oCAAqC,GAC3D7+B,KAAK6+B,SAAiB,yBAA0B,GAChD7+B,KAAK6+B,SAAiB,yBAA0B,GAChD7+B,KAAK6+B,SAAiB,+BAAgC,GACtD7+B,KAAK6+B,SAAiB,+BAAgC,GACtD7+B,KAAK6+B,SAAiB,6BAA8B,GACpD7+B,KAAK6+B,SAAiB,6BAA8B,GACpD7+B,KAAK6+B,SAAiB,qBAAsB,GAC5C7+B,KAAK6+B,SAAiB,qBAAsB,GAC5C7+B,KAAK6+B,SAAiB,yBAA0B,GAChD7+B,KAAK6+B,SAAiB,yBAA0B,GAChD7+B,KAAK6+B,SAAiB,0BAA2B,GACjD7+B,KAAK6+B,SAAiB,0BAA2B,GACjD7+B,KAAK6+B,SAAiB,0BAA2B,GACjD7+B,KAAK6+B,SAAiB,0BAA2B,IA0CnD,MAAOokD,4BAA4B7lD,wBAE1B5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBgzD,uBACP,OAAOljF,KAAKo+B,iBAAyB,oBAE9B8kD,qBAAiBhzD,OACxBlwB,KAAK2+B,iBAAyB,mBAAoBzO,OAG3CizD,sBACP,OAAOnjF,KAAKo+B,iBAAyB,mBAE9B+kD,oBAAgBjzD,OACvBlwB,KAAK2+B,iBAAyB,kBAAmBzO,OAG1CkzD,gBACP,OAAOpjF,KAAKo+B,iBAAyB,aAE9BglD,cAAUlzD,OACjBlwB,KAAK2+B,iBAAyB,YAAazO,OAGpCmzD,eACP,OAAOrjF,KAAKo+B,iBAAyB,YAE9BilD,aAASnzD,OAChBlwB,KAAK2+B,iBAAyB,WAAYzO,OAGnCozD,qBACP,OAAOtjF,KAAKo+B,iBAAyB,kBAE9BklD,mBAAepzD,OACtBlwB,KAAK2+B,iBAAyB,iBAAkBzO,OAGzCqzD,yBACP,OAAOvjF,KAAKo+B,iBAAyB,sBAE9BmlD,uBAAmBrzD,OAC1BlwB,KAAK2+B,iBAAyB,qBAAsBzO,OAG7CszD,oBACP,OAAOxjF,KAAKo+B,iBAAyB,iBAE9BolD,kBAActzD,OACrBlwB,KAAK2+B,iBAAyB,gBAAiBzO,OAGxCuzD,wBACP,OAAOzjF,KAAKo+B,iBAAyB,qBAE9BqlD,sBAAkBvzD,OACzBlwB,KAAK2+B,iBAAyB,oBAAqBzO,OAG5CwzD,kBACP,OAAO1jF,KAAKo+B,iBAAyB,eAE9BslD,gBAAYxzD,OACnBlwB,KAAK2+B,iBAAyB,cAAezO,OAG1CuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAK6+B,SAAiB,mBAAoB,GAC1C7+B,KAAK6+B,SAAiB,kBAAmB,GACzC7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,qBAAsB,GAC5C7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAK6+B,SAAiB,oBAAqB,GAC3C7+B,KAAK6+B,SAAiB,cAAe,IAIvC,MAAO8kD,wBAAwBxE,yBAEtBE,iBACP,OAAOr/E,KAAKs/B,aAAa,cAElB+/C,eAAWnvD,OAClBlwB,KAAKw/B,aAAa,aAActP,OAGzBupC,cACP,OAAOz5D,KAAKo+B,iBAA0B,WAE/Bq7B,YAAQvpC,OACflwB,KAAK2+B,iBAA0B,UAAWzO,OAGnC0zD,yCACP,OAAO5jF,KAAKu+B,SAAiB,sCAEtBqlD,uCAAmC1zD,OAC1ClwB,KAAK6+B,SAAiB,qCAAsC3O,OAGrD2zD,uBACP,OAAO7jF,KAAKo+B,iBAA0B,oBAE/BylD,qBAAiB3zD,OACxBlwB,KAAK2+B,iBAA0B,mBAAoBzO,OAG5C4zD,wBACP,OAAO9jF,KAAKo+B,iBAA0B,qBAE/B0lD,sBAAkB5zD,OACzBlwB,KAAK2+B,iBAA0B,oBAAqBzO,OAG7C6zD,aACP,OAAO/jF,KAAKo+B,iBAA0B,UAE/B2lD,WAAO7zD,OACdlwB,KAAK2+B,iBAA0B,SAAUzO,OAGlC8zD,uBACP,OAAOhkF,KAAKo+B,iBAAyB,oBAE9B4lD,qBAAiB9zD,OACxBlwB,KAAK2+B,iBAAyB,mBAAoBzO,OAG3C+zD,qBACP,OAAOjkF,KAAKo+B,iBAAyB,kBAE9B6lD,mBAAe/zD,OACtBlwB,KAAK2+B,iBAAyB,iBAAkBzO,OAGzCg0D,2BACP,OAAOlkF,KAAKo+B,iBAAyB,wBAE9B8lD,yBAAqBh0D,OAC5BlwB,KAAK2+B,iBAAyB,uBAAwBzO,OAG/Ci0D,uBACP,OAAOnkF,KAAKo+B,iBAAyB,oBAE9B+lD,qBAAiBj0D,OACxBlwB,KAAK2+B,iBAAyB,mBAAoBzO,OAG3Ck0D,yBACP,OAAOpkF,KAAKu+B,SAAiB,sBAEtB6lD,uBAAmBl0D,OAC1BlwB,KAAK6+B,SAAiB,qBAAsB3O,OAGrCwzD,kBACP,OAAO1jF,KAAKo+B,iBAAyB,eAE9BslD,gBAAYxzD,OACnBlwB,KAAK2+B,iBAAyB,cAAezO,OAGpCm0D,cAActxC,aAAiC,yDACxD,OAAO,MAAKyF,4BAAuEyqC,oBAAqB,oBAAsB,MAAK5D,WAAa,SAAU,MAAM,GAAO,EAAM,KAAMtsC,eAD3H,GAKrDtR,sBACHzhC,KAAKw/B,aAAa,aAAc36B,SAAAA,SAAAA,OAChC7E,KAAK6+B,SAAkB,WAAW,GAClC7+B,KAAK6+B,SAAiB,qCAAsC,IAC5D7+B,KAAK6+B,SAAkB,oBAAoB,GAC3C7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAkB,UAAU,GACjC7+B,KAAK6+B,SAAiB,mBAAoB,GAC1C7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,uBAAwB,GAC9C7+B,KAAK6+B,SAAiB,mBAAoB,GAC1C7+B,KAAK6+B,SAAiB,qBAAsB,IAC5C7+B,KAAK6+B,SAAiB,cAAe,IAIvC,MAAOylD,iBAAiBlnD,wBAEf5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBq0D,mBACP,OAAOvkF,KAAKu+B,SAAiB,gBAEtBgmD,iBAAar0D,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAG/B9H,WACP,OAAOpoB,KAAKu+B,SAAiB,QAEtBnW,SAAK8H,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,eAAgB,IACtC7+B,KAAK6+B,SAAiB,OAAQ,KAIhC,MAAO2lD,eAAepnD,wBAEbqnD,QACP,OAAOzkF,KAAKu+B,SAAiB,KAEtBkmD,MAAEv0D,OACTlwB,KAAK6+B,SAAiB,IAAK3O,OAGpBoR,QACP,OAAOthC,KAAKu+B,SAAiB,KAEtB+C,MAAEpR,OACTlwB,KAAK6+B,SAAiB,IAAK3O,OAGxBuR,sBACHzhC,KAAK6+B,SAAiB,IAAK,GAC3B7+B,KAAK6+B,SAAiB,IAAK,IAI7B,MAAO6lD,0BAA0BtnD,wBAExBunD,qBACP,OAAO3kF,KAAKu+B,SAAiB,kBAEtBomD,mBAAez0D,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjC00D,mCACP,OAAO5kF,KAAKu+B,SAAkB,gCAEvBqmD,iCAA6B10D,OACpClwB,KAAK6+B,SAAkB,+BAAgC3O,OAGhD20D,aACP,OAAO7kF,KAAKqgC,eAAgCmkD,OAAQ,UAE7CK,WAAO30D,OACdlwB,KAAK0gC,eAAwB,SAAUxQ,OAGhC40D,mBACP,OAAO9kF,KAAK2/B,cAAsB,gBAE3BmlD,iBAAa50D,OACpBlwB,KAAKy/B,cAAsB,eAAgBvP,OAGxCuR,sBACHzhC,KAAK6+B,SAAiB,iBAAkB,IACxC7+B,KAAK6+B,SAAkB,gCAAgC,GACvD,MAAMkmD,UAAY,IAAIP,OACtBO,UAAUtjD,sBACVzhC,KAAK0gC,eAAe,SAAUqkD,WAC9B/kF,KAAKy/B,cAAsB,eAAgB,IAAI3C,4CAIjD,MAAOkoD,iBAAiB5nD,wBAEf6nD,wBACP,OAAOjlF,KAAKqgC,eAAsDqkD,kBAAmB,qBAE9EO,sBAAkB/0D,OACzBlwB,KAAK0gC,eAAmC,oBAAqBxQ,OAGtDg1D,eACP,OAAOllF,KAAKqgC,eAAoCikD,SAAU,YAEnDY,aAASh1D,OAChBlwB,KAAK0gC,eAA0B,WAAYxQ,OAGxCuR,sBACH,MAAM0jD,qBAAuB,IAAIT,kBACjCS,qBAAqB1jD,sBACrBzhC,KAAK0gC,eAAe,oBAAqBykD,sBACzC,MAAMC,YAAc,IAAId,SACxBc,YAAY3jD,sBACZzhC,KAAK0gC,eAAe,WAAY0kD,cAIlC,MAAOC,sBAAsBjoD,wBAEpBzP,aACP,OAAO3tB,KAAKs/B,aAAa,UAElB3R,WAAOuC,OACdlwB,KAAKw/B,aAAa,SAAUtP,OAGrB/F,gBACP,OAAOnqB,KAAKg/B,aAAa,aAElB7U,cAAU+F,OACjBlwB,KAAKm/B,aAAa,YAAajP,OAGxBo1D,gBACP,OAAOtlF,KAAKu+B,SAAiB,aAEtB+mD,cAAUp1D,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BzC,cACP,OAAOztB,KAAKs/B,aAAa,WAElB7R,YAAQyC,OACflwB,KAAKw/B,aAAa,UAAWtP,OAGtBq1D,kBACP,OAAOvlF,KAAKg/B,aAAa,eAElBumD,gBAAYr1D,OACnBlwB,KAAKm/B,aAAa,cAAejP,OAG9BuR,sBACHzhC,KAAKw/B,aAAa,SAAU36B,SAAAA,SAAAA,OAC5B7E,KAAKm/B,aAAa,YAAa,IAAIF,MACnCj/B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAKw/B,aAAa,UAAW36B,SAAAA,SAAAA,OAC7B7E,KAAKm/B,aAAa,cAAe,IAAIF,OA0EvC,MAAOumD,iBAAiBpoD,wBAEf5I,aACP,OAAOx0B,KAAKs/B,aAAa,UAElB9K,WAAOtE,OACdlwB,KAAKw/B,aAAa,SAAUtP,OAGrBu1D,gBACP,OAAOzlF,KAAKu+B,SAAiB,aAEtBknD,cAAUv1D,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5Bw1D,eACP,OAAO1lF,KAAKu+B,SAAiB,YAEtBmnD,aAASx1D,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3B6hD,wBACP,OAAO/xE,KAAKu+B,SAAkB,qBAEvBwzC,sBAAkB7hD,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGzCuR,sBACHzhC,KAAKw/B,aAAa,SAAU36B,SAAAA,SAAAA,OAC5B7E,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,WAAY,IAClC7+B,KAAK6+B,SAAkB,qBAAqB,IAI9C,MAAO8mD,0BAA0BvoD,wBAExB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrB01D,gBACP,OAAO5lF,KAAKu+B,SAAkB,aAEvBqnD,cAAU11D,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAGjCuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,IAC5B7+B,KAAK6+B,SAAkB,aAAa,IAItC,MAAOgnD,8BAA8BzoD,wBAE5B5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrB41D,WACP,OAAO9lF,KAAKu+B,SAAiB,QAEtBunD,SAAK51D,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAK6+B,SAAiB,OAAQ,KAkDhC,MAAOknD,kBAAkB3oD,wBAEhB4oD,gBACP,OAAOhmF,KAAKu+B,SAAkB,aAEvBynD,cAAU91D,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAG7B+1D,iBACP,OAAOjmF,KAAKu+B,SAAiB,cAEtB0nD,eAAW/1D,OAClBlwB,KAAK6+B,SAAiB,aAAc3O,OAG7Bu1D,gBACP,OAAOzlF,KAAKu+B,SAAiB,aAEtBknD,cAAUv1D,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5Bg2D,gBACP,OAAOlmF,KAAKg/B,aAAa,aAElBknD,cAAUh2D,OACjBlwB,KAAKm/B,aAAa,YAAajP,OAGxBgyB,cACP,OAAOliD,KAAKg/B,aAAa,WAElBkjB,YAAQhyB,OACflwB,KAAKm/B,aAAa,UAAWjP,OAG1BuR,sBACHzhC,KAAK6+B,SAAkB,aAAa,GACpC7+B,KAAK6+B,SAAiB,aAAc,GACpC7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAKm/B,aAAa,YAAa,IAAIF,MACnCj/B,KAAKm/B,aAAa,UAAW,IAAIF,OAInC,MAAOknD,gBAAgB/oD,wBAEd5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAK6+B,SAAiB,OAAQ,KAMhC,MAAOunD,qBAAqBpS,gBAInBqS,qBACP,OAAOrmF,KAAKu+B,SAAkB49C,mBAAmBC,qBAE1CiK,mBAAen2D,OACtBlwB,KAAK6+B,SAAkBs9C,mBAAmBC,oBAAqBlsD,OAIxDo2D,oBACP,OAAOtmF,KAAKs/B,aAAa68C,mBAAmBE,oBAIrCkK,qBACP,OAAOvmF,KAAKs/B,aAAa68C,mBAAmBG,qBAIrCkK,uBACP,OAAOxmF,KAAKu+B,SAAkB49C,mBAAmBI,uBAE1CiK,qBAAiBt2D,OACxBlwB,KAAK6+B,SAAkBs9C,mBAAmBI,sBAAuBrsD,OAI1Du2D,oBACP,OAAOzmF,KAAKu+B,SAAiB49C,mBAAmBK,oBAIzCkK,iCACP,OAAO1mF,KAAKu+B,SAAiB49C,mBAAmBM,iCAEzCiK,+BAA2Bx2D,OAClClwB,KAAK6+B,SAAiBs9C,mBAAmBM,gCAAiCvsD,OAInEy2D,wBACP,OAAO3mF,KAAKu+B,SAAkB49C,mBAAmBO,wBAE1CiK,sBAAkBz2D,OACzBlwB,KAAK6+B,SAAkBs9C,mBAAmBO,uBAAwBxsD,OAI3D02D,qBACP,OAAO5mF,KAAKu+B,SAAiB49C,mBAAmBQ,qBAEzCiK,mBAAe12D,OACtBlwB,KAAK6+B,SAAiBs9C,mBAAmBQ,oBAAqBzsD,OAIvD22D,yBACP,OAAO7mF,KAAKu+B,SAAiB49C,mBAAmBS,yBAIzCkK,4BACP,OAAO9mF,KAAKu+B,SAAiB49C,mBAAmBU,4BAIzCkK,uBACP,OAAO/mF,KAAKs/B,aAAa68C,mBAAmBW,uBAIrCkK,kCACP,OAAOhnF,KAAKu+B,SAAiB49C,mBAAmBY,kCAIzCkK,iBACP,OAAOjnF,KAAKu+B,SAAkB49C,mBAAmBa,iBAI1CkK,4BACP,OAAOlnF,KAAKu+B,SAAkB49C,mBAAmBc,4BAI1CkK,uBACP,OAAOnnF,KAAKu+B,SAAkB49C,mBAAmBe,uBAI1CkK,eACP,OAAOpnF,KAAKu+B,SAAkB49C,mBAAmBgB,eAI1CkK,qBACP,OAAOrnF,KAAKu+B,SAAkB49C,mBAAmBiB,qBAI1CkK,yBACP,OAAOtnF,KAAKu+B,SAAkB49C,mBAAmBkB,yBAI1CkK,uBACP,OAAOvnF,KAAKs/B,aAAa68C,mBAAmBmB,sBAAuBzjC,sBAAAA,cAI5D2tC,oBACP,OAAOxnF,KAAKs/B,aAAa68C,mBAAmBoB,mBAAoB1jC,sBAAAA,cAIzD4tC,sBACP,OAAOznF,KAAKu+B,SAAc49C,mBAAmBqB,sBAItCkK,gBACP,OAAO1nF,KAAKu+B,SAAiB49C,mBAAmBsB,eAAgB5jC,sBAAAA,cAEzD6tC,cAAUx3D,OACjBlwB,KAAK6+B,SAAiBs9C,mBAAmBsB,eAAgBvtD,OAIlDy3D,wBACP,OAAO3nF,KAAKu+B,SAAkB49C,mBAAmBuB,wBAE1CiK,sBAAkBz3D,OACzBlwB,KAAK6+B,SAAkBs9C,mBAAmBuB,uBAAwBxtD,OAI3D03D,yBACP,OAAO5nF,KAAKs/B,aAAa68C,mBAAmBwB,yBAIrCkK,6BACP,OAAO7nF,KAAKu+B,SAAiB49C,mBAAmByB,6BAEzCiK,2BAAuB33D,OAC9BlwB,KAAK6+B,SAAiBs9C,mBAAmByB,4BAA6B1tD,OAI/D43D,4BACP,OAAO9nF,KAAKu+B,SAAiB49C,mBAAmB0B,4BAEzCiK,0BAAsB53D,OAC7BlwB,KAAK6+B,SAAiBs9C,mBAAmB0B,2BAA4B3tD,OAI9D63D,iBACP,OAAO/nF,KAAKu+B,SAAiB49C,mBAAmB2B,iBAIzCkK,sBACP,OAAOhoF,KAAKu+B,SAAiB49C,mBAAmB4B,sBAIzCkK,oBACP,OAAOjoF,KAAKu+B,SAAiB49C,mBAAmB6B,oBAIzCkK,0BACP,OAAOloF,KAAKu+B,SAAiB49C,mBAAmB8B,0BAIzCkK,mBACP,OAAOnoF,KAAKu+B,SAAiB49C,mBAAmB+B,mBAIzCkK,mBACP,OAAOpoF,KAAKu+B,SAAiB49C,mBAAmBgC,mBAIzCkK,yBACP,OAAOroF,KAAKg/B,aAAam9C,mBAAmBiC,wBAAyBvkC,sBAAAA,cAI9DyuC,kBACP,OAAOtoF,KAAKu+B,SAAiB49C,mBAAmBkC,kBAIzCkK,sBACP,OAAOvoF,KAAKs/B,aAAa68C,mBAAmBmC,sBAIrCkK,wBACP,OAAOxoF,KAAKu+B,SAAiB49C,mBAAmBoC,wBAIzCkK,sBACP,OAAOzoF,KAAKu+B,SAAiB49C,mBAAmBqC,sBAIzCkK,qBACP,OAAO1oF,KAAKu+B,SAAiB49C,mBAAmBsC,oBAAqB5kC,sBAAAA,cAI9D8uC,yBACP,OAAO3oF,KAAKu+B,SAAkB49C,mBAAmBuC,yBAE1CiK,uBAAmBz4D,OAC1BlwB,KAAK6+B,SAAkBs9C,mBAAmBuC,wBAAyBxuD,OAI5D04D,sBACP,OAAO5oF,KAAKu+B,SAAiB49C,mBAAmBwC,sBAEzCiK,oBAAgB14D,OACvBlwB,KAAK6+B,SAAiBs9C,mBAAmBwC,qBAAsBzuD,OAIxD24D,eACP,OAAO7oF,KAAKs/B,aAAa68C,mBAAmByC,eAIrCkK,kBACP,OAAO9oF,KAAKu+B,SAAiB49C,mBAAmB0C,iBAAkBhlC,sBAAAA,cAI3DkvC,oBACP,OAAO/oF,KAAKu+B,SAAiB49C,mBAAmB2C,oBAEzCiK,kBAAc74D,OACrBlwB,KAAK6+B,SAAiBs9C,mBAAmB2C,mBAAoB5uD,OAItD84D,cACP,OAAOhpF,KAAKu+B,SAAiB49C,mBAAmB4C,cAIzC9M,kBACP,OAAOjyE,KAAKs/B,aAAa68C,mBAAmB5N,kBAIrC0a,WACP,OAAOjpF,KAAKs/B,aAAa68C,mBAAmB6C,WAIrCkK,iCACP,OAAOlpF,KAAKu+B,SAAkB49C,mBAAmB8C,iCAE1CiK,+BAA2Bh5D,OAClClwB,KAAK6+B,SAAkBs9C,mBAAmB8C,gCAAiC/uD,OAIpEi5D,yBACP,OAAOnpF,KAAKs/B,aAAa68C,mBAAmB+C,yBAOhDt/E,cACIiD,MAAM2gC,YAAYsqB,SAOTs7B,iBAAiBl/D,YAAqBC,UAAiBk/D,SAAmBt2C,aAA0B,0DAC7G,MAOMoP,QAAU,IAAI/kB,wBAKpB,OAJA+kB,QAAQtjB,SAAS,cAAe3U,aAChCi4B,QAAQhjB,aAAa,YAAahV,WAClCg4B,QAAQtjB,SAAS,WAAYwqD,UAEtB,OAAKhwC,+BAA8C,cAAe,OAAQ8I,QAASpP,aAZjE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL+B,GAgBpGioF,wBAAwBn/C,MAA2B4I,aAA+B,0DAC3F,OAAO,OAAK0F,qBAAqB,kBAAmB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIlFw2C,8BAA8Bp/C,MAA2B4I,aAA+B,0DACjG,OAAO,OAAK0F,qBAAqB,wBAAyB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIxFy2C,YAAYz2C,aAAiC,0DACtD,OAAO,OAAKyF,4BAA+C2tC,QAAS,MAAO,MAAM,GAAM,EAAMtsC,sBAAAA,KAAiB9G,eADxD,GAI7C02C,WAAWC,MAAaC,IAAWC,cAAuB72C,aAA0B,0DAC7F,MAOMoP,QAAU,IAAI/kB,wBAKpB,OAJA+kB,QAAQhjB,aAAa,QAASuqD,OAC9BvnC,QAAQhjB,aAAa,MAAOwqD,KAC5BxnC,QAAQtjB,SAAS,gBAAiB+qD,eAE3B,OAAKvwC,+BAA8C,QAAS,OAAQ8I,QAASpP,aAZ3D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALe,GAgBpFwoF,wBAAwB92C,aAAiC,0DAClE,aAAa,OAAKkG,qBAAgC8sC,UAAW,mBAAmB,EAAOlsC,sBAAAA,SAAqB9G,eAD1C,GAIzD+2C,6BAA6B/2C,aAA0B,0DAQhE,OAAO,OAAKsG,+BAA8C,0BAA2B,OAAQ,KAAMtG,aAP1E1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALd,GAWvD0oF,gBAAgB75D,MAAoB6iB,aAA0B,0DASvE,OAAO,OAAKsG,+BAA8C,aAAc,OAAQnpB,MAAO6iB,aAR9D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALP,GAY9D2oF,oBAAoBxmE,GAAWuvB,aAA0B,2DAClE,MAOMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQ3iB,aAAa,KAAMhc,IAEpB,QAAK61B,+BAA8C,iBAAkB,OAAQ8I,QAASpP,aAVpE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALZ,GAczD4oF,+BAA+Bl3C,aAAiC,2DACzE,OAAO,QAAKyF,4BAA2EqtC,sBAAuB,yBAA0B,MAAM,GAAO,EAAOhsC,sBAAAA,KAAiB9G,eADpG,GAIhEm3C,4BAA4Bn3C,aAAiC,2DACtE,OAAO,QAAKyF,4BAAmEmtC,kBAAmB,sBAAuB,MAAM,GAAM,EAAO9rC,sBAAAA,KAAiB9G,eADvF,GAI7Do3C,qCAAqCp3C,aAAiC,2DAC/E,OAAO,QAAKyF,4BAAiDgtC,SAAU,qBAAsB,MAAM,GAAM,EAAO3rC,sBAAAA,KAAiB9G,eADlD,GAItEq3C,wBAAwBl6D,MAA0B6iB,aAA0B,2DAgBrF,OAAO,QAAKsG,+BAAsD,qBAAsB,OAAQnpB,MAAO6iB,aAf9E1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAAS,IAAI+D,MACblF,KAAOJ,SAASI,KACtB,IAAK,MAAMsE,SAAStE,KAAM,CACtB,MAAMwoC,GAAK,IAAIo7C,cACfp7C,GAAGzJ,WAAWz6B,OACdnD,OAAO+b,KAAKsrB,IAEhB,OAAO,IAAIvP,SAA+B,SAAUC,QAASK,QAAUL,QAAQ/3B,WAE/E,OAAO,IAAI83B,SAA+B,SAAUC,QAASK,QAAUA,OAAO35B,kBAZD,GAmB5EgpF,cAAct3C,aAA0B,2DAQjD,OAAO,QAAKsG,+BAA8C,WAAY,OAAQ,KAAMtG,aAP3D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL7B,GAWxCipF,2BAA2Bv3C,aAAiC,2DACrE,aAAa,QAAKkG,qBAAkC7b,wBAAa,sBAAsB,EAAOyc,sBAAAA,KAAiB9G,eAD1C,GAI5Dw3C,aAAax3C,aAAiC,2DACvD,aAAa,QAAKkG,qBAA+B+rC,SAAU,QAAQ,EAAOnrC,sBAAAA,SAAqB9G,eADxC,GAI9Cy3C,wBAAwBrgD,MAA2B4I,aAA+B,2DAC3F,OAAO,QAAK0F,qBAAqB,kBAAmB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIlF03C,wBAAwB13C,aAAiC,2DAClE,OAAO,QAAKyF,4BAA+DmrC,gBAAiB,mBAAoB,cAAc,GAAO,EAAM9pC,sBAAAA,KAAiB9G,eAD1F,GAIzD23C,iBAAiB33C,aAAiC,2DAC3D,OAAO,QAAKyF,4BAA+C2tC,QAAS,WAAY,MAAM,GAAO,EAAMtsC,sBAAAA,KAAiB9G,eADzD,GAIlD43C,gBAAgB53C,aAAiC,2DAC1D,OAAO,QAAKyF,4BAA+C2tC,QAAS,UAAW,MAAM,GAAO,EAAMtsC,sBAAAA,KAAiB9G,eADzD,GAIjD63C,0BAA0B16D,MAAsB6iB,aAA0B,2DASnF,OAAO,QAAKsG,+BAA8C,uBAAwB,OAAQnpB,MAAO6iB,aARxE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALK,GAY1EwpF,wBAAwB93C,aAAiC,2DAClE,aAAa,QAAKkG,qBAA0C8mC,oBAAqB,mBAAmB,EAAOlmC,sBAAAA,KAAiB9G,eAD1D,GAIzD+3C,uBAAuB/3C,aAAiC,2DACjE,OAAO,QAAKyF,4BAA2DqnC,cAAe,iBAAkB,MAAM,GAAO,EAAMhmC,sBAAAA,KAAiB9G,eAD3E,GAIxDg4C,wBAAwBh4C,aAA0B,2DAQ3D,OAAO,QAAKsG,+BAA8C,qBAAsB,OAAQ,KAAMtG,aAPrE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALnB,GAWlD2pF,oBAAoBj4C,aAA0B,2DAQvD,OAAO,QAAKsG,+BAA8C,iBAAkB,OAAQ,KAAMtG,aAPjE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALvB,GAW9C4pF,uBAAuBl4C,aAA0B,2DAQ1D,OAAO,QAAKsG,+BAA8C,oBAAqB,OAAQ,KAAMtG,aAPpE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALpB,GAWjD6pF,mBAAmBn4C,aAA0B,2DAQtD,OAAO,QAAKsG,+BAA8C,gBAAiB,OAAQ,KAAMtG,aAPhE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALxB,GAW7C8pF,gBAAgBp4C,aAAiC,2DAC1D,OAAO,QAAKyF,4BAA+DmnC,gBAAiB,UAAW,MAAM,GAAM,EAAM9lC,sBAAAA,kBAA8B9G,eAD7F,GAIjDq4C,uBAAuBjhD,MAA2B4I,aAA+B,2DAC1F,OAAO,QAAK0F,qBAAqB,iBAAkB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIjFs4C,aAAa3B,MAAaC,IAAW52C,aAA0B,2DACxE,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQhjB,aAAa,QAASuqD,OAC9BvnC,QAAQhjB,aAAa,MAAOwqD,KAErB,QAAKtwC,+BAA8C,UAAW,OAAQ8I,QAASpP,aAX7D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALN,GAe/DiqF,wBAAwBv4C,aAAiC,2DAClE,OAAO,QAAKyF,4BAA6D4mC,eAAgB,kBAAmB,cAAc,GAAO,EAAMvlC,sBAAAA,KAAiB9G,eADtF,IC7qDpE,MAAOw4C,yBAAyB1vC,aAAY,SAChC,KAAA2vC,oBAAsB,iBAAgB,UACtC,KAAAC,8BAAgC,2BAA0B,UAC1D,KAAAC,8BAAgC,2BAA0B,UAC1D,KAAAC,yBAA2B,sBAAqB,UAChD,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,6BAA+B,0BAAyB,WACxD,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,sCAAwC,mCAAkC,WAC1E,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,WAAa,QAAO,WACpB,KAAAC,gCAAkC,6BAA4B,WAC9D,KAAAC,4CAA8C,yCAAwC,WACtF,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,8BAAgC,2BAA0B,WAC1D,KAAAC,kCAAoC,+BAA8B,WAClE,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,YAAc,SAAQ,WACtB,KAAAC,iBAAmB,cCoB/B,MAAOC,mBAAmB7vD,wBAEjB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBoE,cACP,OAAOt0B,KAAKu+B,SAAiB,WAEtBjK,YAAQpE,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG9BuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,IAC5B7+B,KAAK6+B,SAAiB,UAAW,KAInC,MAAOquD,mBAAmB9vD,wBAEjB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBi9D,iCACP,OAAOntF,KAAKu+B,SAAiB,8BAEtB4uD,+BAA2Bj9D,OAClClwB,KAAK6+B,SAAiB,6BAA8B3O,OAG7Ck9D,sBACP,OAAOptF,KAAKo+B,iBAAyB,mBAE9BgvD,oBAAgBl9D,OACvBlwB,KAAK2+B,iBAAyB,kBAAmBzO,OAG9CuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,6BAA8B,IACpD7+B,KAAK6+B,SAAiB,kBAAmB,IAqE3C,MAAOwuD,mBAAmBn2C,OAIjBo2C,qBACP,OAAOttF,KAAK2/B,cAAsB4rD,iBAAiBC,qBAE5C8B,mBAAep9D,OACtBlwB,KAAKy/B,cAAsB8rD,iBAAiBC,oBAAqBt7D,OAI1Dq9D,+BACP,OAAOvtF,KAAKu+B,SAAiBgtD,iBAAiBE,+BAEvC8B,6BAAyBr9D,OAChClwB,KAAK6+B,SAAiB0sD,iBAAiBE,8BAA+Bv7D,OAI/Ds9D,+BACP,OAAOxtF,KAAKu+B,SAAiBgtD,iBAAiBG,+BAEvC8B,6BAAyBt9D,OAChClwB,KAAK6+B,SAAiB0sD,iBAAiBG,8BAA+Bx7D,OAI/Du9D,0BACP,OAAOztF,KAAKu+B,SAAiBgtD,iBAAiBI,0BAEvC8B,wBAAoBv9D,OAC3BlwB,KAAK6+B,SAAiB0sD,iBAAiBI,yBAA0Bz7D,OAI1Dw9D,mBACP,OAAO1tF,KAAKu+B,SAAiBgtD,iBAAiBK,mBAEvC8B,iBAAax9D,OACpBlwB,KAAK6+B,SAAiB0sD,iBAAiBK,kBAAmB17D,OAInDy9D,qBACP,OAAO3tF,KAAKu+B,SAAiBgtD,iBAAiBM,qBAEvC8B,mBAAez9D,OACtBlwB,KAAK6+B,SAAiB0sD,iBAAiBM,oBAAqB37D,OAIrD09D,uBACP,OAAO5tF,KAAKu+B,SAAiBgtD,iBAAiBO,uBAEvC8B,qBAAiB19D,OACxBlwB,KAAK6+B,SAAiB0sD,iBAAiBO,sBAAuB57D,OAIvD29D,mBACP,OAAO7tF,KAAKu+B,SAAiBgtD,iBAAiBQ,mBAEvC8B,iBAAa39D,OACpBlwB,KAAK6+B,SAAiB0sD,iBAAiBQ,kBAAmB77D,OAInD49D,eACP,OAAO9tF,KAAKu+B,SAAkBgtD,iBAAiBS,eAExC8B,aAAS59D,OAChBlwB,KAAK6+B,SAAkB0sD,iBAAiBS,cAAe97D,OAIhD69D,4BACP,OAAO/tF,KAAKu+B,SAAkBgtD,iBAAiBU,4BAExC8B,0BAAsB79D,OAC7BlwB,KAAK6+B,SAAkB0sD,iBAAiBU,2BAA4B/7D,OAI7D89D,8BACP,OAAOhuF,KAAKu+B,SAAkBgtD,iBAAiBW,8BAExC8B,4BAAwB99D,OAC/BlwB,KAAK6+B,SAAkB0sD,iBAAiBW,6BAA8Bh8D,OAI/D+9D,gCACP,OAAOjuF,KAAKu+B,SAAkBgtD,iBAAiBY,gCAExC8B,8BAA0B/9D,OACjClwB,KAAK6+B,SAAkB0sD,iBAAiBY,+BAAgCj8D,OAIjEg+D,uCACP,OAAOluF,KAAKu+B,SAAkBgtD,iBAAiBa,uCAExC8B,qCAAiCh+D,OACxClwB,KAAK6+B,SAAkB0sD,iBAAiBa,sCAAuCl8D,OAIxEi+D,+BACP,OAAOnuF,KAAKu+B,SAAkBgtD,iBAAiBc,+BAExC8B,6BAAyBj+D,OAChClwB,KAAK6+B,SAAkB0sD,iBAAiBc,8BAA+Bn8D,OAIhE2E,YACP,OAAO70B,KAAKu+B,SAAiBgtD,iBAAiBe,YAEvCz3D,UAAM3E,OACblwB,KAAK6+B,SAAiB0sD,iBAAiBe,WAAYp8D,OAI5Ck+D,iCACP,OAAOpuF,KAAKu+B,SAAkBgtD,iBAAiBgB,iCAExC6B,+BAA2Bl+D,OAClClwB,KAAK6+B,SAAkB0sD,iBAAiBgB,gCAAiCr8D,OAIlEm+D,6CACP,OAAOruF,KAAKu+B,SAAiBgtD,iBAAiBiB,6CAEvC6B,2CAAuCn+D,OAC9ClwB,KAAK6+B,SAAiB0sD,iBAAiBiB,4CAA6Ct8D,OAI7Eo+D,6BACP,OAAOtuF,KAAKu+B,SAAkBgtD,iBAAiBkB,6BAExC6B,2BAAuBp+D,OAC9BlwB,KAAK6+B,SAAkB0sD,iBAAiBkB,4BAA6Bv8D,OAI9Dq+D,+BACP,OAAOvuF,KAAKu+B,SAAiBgtD,iBAAiBmB,+BAEvC6B,6BAAyBr+D,OAChClwB,KAAK6+B,SAAiB0sD,iBAAiBmB,8BAA+Bx8D,OAI/Ds+D,mCACP,OAAOxuF,KAAKu+B,SAAkBgtD,iBAAiBoB,mCAExC6B,iCAA6Bt+D,OACpClwB,KAAK6+B,SAAkB0sD,iBAAiBoB,kCAAmCz8D,OAIpEu+D,gCACP,OAAOzuF,KAAKu+B,SAAiBgtD,iBAAiBqB,gCAEvC6B,8BAA0Bv+D,OACjClwB,KAAK6+B,SAAiB0sD,iBAAiBqB,+BAAgC18D,OAIhEkpC,kBACP,OAAOp5D,KAAKs/B,aAAaisD,iBAAiBsB,kBAEnCzzB,gBAAYlpC,OACnBlwB,KAAKw/B,aAAa+rD,iBAAiBsB,iBAAkB38D,OAI9Cw+D,iBACP,OAAO1uF,KAAKs/B,aAAaisD,iBAAiBuB,iBAEnC4B,eAAWx+D,OAClBlwB,KAAKw/B,aAAa+rD,iBAAiBuB,gBAAiB58D,OAI7Cy+D,aACP,OAAO3uF,KAAKs/B,aAAaisD,iBAAiBwB,YAAalzC,sBAAAA,eAEhD80C,WAAOz+D,OACdlwB,KAAKw/B,aAAa+rD,iBAAiBwB,YAAa78D,OAIzC0+D,kBACP,OAAO5uF,KAAKu+B,SAAiBgtD,iBAAiByB,iBAAkBnzC,sBAAAA,UAEzD+0C,gBAAY1+D,OACnBlwB,KAAK6+B,SAAiB0sD,iBAAiByB,iBAAkB98D,OAO7DtwB,cACIiD,MAAM2gC,YAAY6qB,OAOTypB,eAAe3tC,MAA2B4I,aAA+B,yDAClF,OAAO,MAAK0F,qBAAqB,SAAU,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIzE87C,oBAAoB3+D,MAA4B6iB,aAA0B,0DASnF,OAAO,OAAKsG,+BAA8C,iBAAkB,OAAQnpB,MAAO6iB,aARlE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALK,GAY1EytF,0BAA0BC,OAAgBC,kBAA4Bj8C,aAA0B,0DACzG,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQtjB,SAAS,SAAUkwD,QAC3B5sC,QAAQtjB,SAAS,oBAAqBmwD,mBAE/B,OAAK31C,+BAA8C,uBAAwB,OAAQ8I,QAASpP,aAX1E1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL2B,GAehG4tF,2BAA2Bl8C,aAAiC,0DACrE,aAAa,OAAKkG,qBAAkC7b,wBAAa,kBAAkB,EAAOyc,sBAAAA,KAAiB9G,eADtC,GAI5Dm8C,oBAAoBn8C,aAA0B,0DAQvD,OAAO,OAAKsG,+BAA8C,iBAAkB,OAAQ,KAAMtG,aAPjE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALvB,GAW9C8tF,0BAA0BhlD,MAA2B4I,aAA+B,0DAC7F,OAAO,OAAK0F,qBAAqB,oBAAqB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIpFq8C,2BAA2BC,KAAct8C,aAA0B,0DAC5E,MAOMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQtjB,SAAS,OAAQwwD,MAElB,OAAKh2C,+BAA8C,wBAAyB,OAAQ8I,QAASpP,aAV3E1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALF,GAcnEiuF,oBAAoBv8C,aAAiC,0DAC9D,OAAO,OAAKyF,4BAAqD00C,WAAY,cAAe,MAAM,GAAO,EAAMrzC,sBAAAA,YAAwB9G,eADzE,GAIrDw8C,sBAAsB/rE,GAAYuvB,aAAiC,0DAE5E,aADM,OAAKiG,yBAAkDi0C,WAAY,cAAgBzpE,GAAI,UAAU,EAAOq2B,sBAAAA,KAAiB,MACxH,IAAIvkB,aAAaF,4BAAAA,MAFoD,GAKnEo6D,mBAAmBhsE,GAAYuvB,aAAiC,2DACzE,aAAa,QAAKkG,qBAAiCg0C,WAAY,cAAgBzpE,IAAI,EAAOq2B,sBAAAA,KAAiB9G,eADlC,GAIhE08C,mBAAmBjsE,GAAY0M,MAAoB6iB,aAAiC,2DAC7F,aAAa,QAAKiG,yBAAkDi0C,WAAY,cAAgBzpE,GAAI,QAAQ,EAAOq2B,sBAAAA,KAAiB3pB,SADvC,GAIpFw/D,iBAAiBx/D,MAAsB6iB,aAA0B,2DAS1E,OAAO,QAAKsG,+BAA8C,cAAe,OAAQnpB,MAAO6iB,aAR/D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALJ,GAYjEsuF,qBAAqB58C,aAA0B,2DAQxD,OAAO,QAAKsG,+BAA8C,kBAAmB,OAAQ,KAAMtG,aAPlE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALtB,IC1d1D,MAAOuuF,0BAA0B/zC,aAAY,SACjC,KAAAg0C,eAAiB,YAAW,UAC5B,KAAAC,YAAc,SAAQ,UACtB,KAAAC,cAAgB,WAAU,UAC1B,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,uBAAyB,oBAAmB,UAC5C,KAAAC,aAAe,UCJ3B,MAAOC,oBAAoBj5C,OAIlBk5C,gBACP,OAAOpwF,KAAKu+B,SAAiBqxD,kBAAkBC,gBAIxCQ,aACP,OAAOrwF,KAAKs/B,aAAaswD,kBAAkBE,YAAaj2C,sBAAAA,UAEjDw2C,WAAOngE,OACdlwB,KAAKw/B,aAAaowD,kBAAkBE,YAAa5/D,OAI1CogE,eACP,OAAOtwF,KAAKs/B,aAAaswD,kBAAkBG,cAAel2C,sBAAAA,aAEnDy2C,aAASpgE,OAChBlwB,KAAKw/B,aAAaowD,kBAAkBG,cAAe7/D,OAI5CqgE,iBACP,OAAOvwF,KAAKu+B,SAAiBqxD,kBAAkBI,gBAAiBn2C,sBAAAA,aAEzD02C,eAAWrgE,OAClBlwB,KAAK6+B,SAAiB+wD,kBAAkBI,gBAAiB9/D,OAIlDsgE,wBACP,OAAOxwF,KAAKu+B,SAAiBqxD,kBAAkBK,uBAAwBp2C,sBAAAA,UAEhE22C,sBAAkBtgE,OACzBlwB,KAAK6+B,SAAiB+wD,kBAAkBK,uBAAwB//D,OAIzDugE,cACP,OAAOzwF,KAAKu+B,SAAiBqxD,kBAAkBM,aAAcr2C,sBAAAA,UAEtD42C,YAAQvgE,OACflwB,KAAK6+B,SAAiB+wD,kBAAkBM,aAAchgE,OAO1DtwB,cACIiD,MAAM2gC,YAAY2sB,QAOTugC,4BAA4B39C,aAAiC,yDACtE,aAAa,MAAKkG,qBAAkC7b,wBAAa,kBAAkB,EAAOyc,sBAAAA,KAAiB9G,eADrC,IC5DxE,MAAO49C,yBAAyB90C,aAAY,SAChC,KAAA+0C,uBAAyB,oBAAmB,UAC5C,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,cAAgB,WCH5B,MAAOC,mBAAmBh6C,OAIjBi6C,wBACP,OAAOnxF,KAAKs/B,aAAaqxD,iBAAiBC,uBAAwB/2C,sBAAAA,UAE3Ds3C,sBAAkBjhE,OACzBlwB,KAAKw/B,aAAamxD,iBAAiBC,uBAAwB1gE,OAIpDkhE,kBACP,OAAOpxF,KAAKu+B,SAAiBoyD,iBAAiBE,iBAAkBh3C,sBAAAA,UAEzDu3C,gBAAYlhE,OACnBlwB,KAAK6+B,SAAiB8xD,iBAAiBE,iBAAkB3gE,OAIlDmhE,oBACP,OAAOrxF,KAAKu+B,SAAkBoyD,iBAAiBG,mBAAoBj3C,sBAAAA,UAE5Dw3C,kBAAcnhE,OACrBlwB,KAAK6+B,SAAkB8xD,iBAAiBG,mBAAoB5gE,OAIrDohE,kBACP,OAAOtxF,KAAKu+B,SAAiBoyD,iBAAiBI,iBAAkBl3C,sBAAAA,cAIzD03C,gBACP,OAAOvxF,KAAKu+B,SAAiBoyD,iBAAiBK,eAAgBn3C,sBAAAA,cAIvD23C,eACP,OAAOxxF,KAAKu+B,SAAiBoyD,iBAAiBM,cAAep3C,sBAAAA,MAEtD23C,aAASthE,OAChBlwB,KAAK6+B,SAAiB8xD,iBAAiBM,cAAe/gE,OAO1DtwB,cACIiD,MAAM2gC,YAAYsrB,OAOT2iC,aAAa1+C,aAA0B,yDAQhD,OAAO,MAAKsG,+BAA8C,UAAW,OAAQ,KAAMtG,aAP1D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL9B,GAWvCqwF,gBAAgBvnD,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,WAAuB9G,eADH,GAI1E4+C,gBAAgB5+C,aAA0B,0DAQnD,OAAO,OAAKsG,+BAA8C,aAAc,OAAQ,KAAMtG,aAP7D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL3B,GAW1Co6D,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,iBAA6B9G,eADT,IC1FrF,MAAO6+C,+BAA+B/1C,aAAY,SACtC,KAAAg2C,aAAe,UAAS,UACxB,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,UAAY,OAAM,UAClB,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,SAAW,MAAK,UAChB,KAAAC,oBAAsB,iBCNlC,MAAOC,yBAAyBl7C,OAIvBzpB,cACP,OAAOztB,KAAKu+B,SAAiBqzD,uBAAuBC,aAAch4C,sBAAAA,UAE3DpsB,YAAQyC,OACflwB,KAAK6+B,SAAiB+yD,uBAAuBC,aAAc3hE,OAIpDlG,gBACP,OAAOhqB,KAAKs/B,aAAasyD,uBAAuBE,eAAgBj4C,sBAAAA,UAEzD7vB,cAAUkG,OACjBlwB,KAAKw/B,aAAaoyD,uBAAuBE,eAAgB5hE,OAIlDm/D,WACP,OAAOrvF,KAAKs/B,aAAasyD,uBAAuBG,UAAWl4C,sBAAAA,UAIpDw4C,oBACP,OAAOryF,KAAKu+B,SAAiBqzD,uBAAuBI,mBAAoBn4C,sBAAAA,UAIjEy4C,oBACP,OAAOtyF,KAAKu+B,SAAiBqzD,uBAAuBK,mBAAoBp4C,sBAAAA,UAIjEvO,UACP,OAAOtrC,KAAKu+B,SAAiBqzD,uBAAuBM,SAAUr4C,sBAAAA,UAEvDvO,QAAIpb,OACXlwB,KAAK6+B,SAAiB+yD,uBAAuBM,SAAUhiE,OAIhDqiE,qBACP,OAAOvyF,KAAKu+B,SAAiBqzD,uBAAuBO,oBAAqBt4C,sBAAAA,UAElE04C,mBAAeriE,OACtBlwB,KAAK6+B,SAAiB+yD,uBAAuBO,oBAAqBjiE,OAOtEtwB,cACIiD,MAAM2gC,YAAY+sB,cCtDpB,MAAOiiC,gCAAgC32C,aAAY,SACvC,KAAAqW,WAAa,QAAO,UACpB,KAAAugC,WAAa,QCCzB,MAAOC,0BAA0Bx7C,OAIxB7sB,YACP,OAAOrqB,KAAKu+B,SAAiBi0D,wBAAwBtgC,WAAYrY,sBAAAA,UAE1DxvB,UAAM6F,OACblwB,KAAK6+B,SAAiB2zD,wBAAwBtgC,WAAYhiC,OAInD7B,YACP,OAAOruB,KAAKu+B,SAAiBi0D,wBAAwBC,WAAY54C,sBAAAA,UAE1DxrB,UAAM6B,OACblwB,KAAK6+B,SAAiB2zD,wBAAwBC,WAAYviE,OAO9DtwB,cACIiD,MAAM2gC,YAAYwsB,cAOT2iC,cAAclvF,OAAemvF,UAAoB7/C,aAA0B,yDACpF,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQ3iB,aAAa,SAAU/7B,QAC/B0+C,QAAQtjB,SAAS,YAAa+zD,WAEvB,MAAKv5C,+BAA8C,WAAY,OAAQ8I,QAASpP,aAX9D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALM,GAe3EwxF,gBAAgBpvF,OAAemvF,UAAoB7/C,aAA0B,0DACtF,MAOMoP,QAAU,IAAI/kB,wBAIpB,OAHA+kB,QAAQ3iB,aAAa,SAAU/7B,QAC/B0+C,QAAQtjB,SAAS,YAAa+zD,WAEvB,OAAKv5C,+BAA8C,aAAc,OAAQ8I,QAASpP,aAXhE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALQ,IChDxF,MAAOyxF,6BAA6Bj3C,aAAY,SACpC,KAAAk3C,kBAAoB,eAAc,UAClC,KAAAC,UAAY,OAAM,UAClB,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,kBAAoB,eCEhC,MAAOC,kBAAkB/1D,wBAEhBssD,YACP,OAAO1pF,KAAKg/B,aAAa,SAElB0qD,UAAMx5D,OACblwB,KAAKm/B,aAAa,QAASjP,OAGpBy5D,UACP,OAAO3pF,KAAKg/B,aAAa,OAElB2qD,QAAIz5D,OACXlwB,KAAKm/B,aAAa,MAAOjP,OAGtBuR,sBACHzhC,KAAKm/B,aAAa,QAAS,IAAIF,MAC/Bj/B,KAAKm/B,aAAa,MAAO,IAAIF,OAM/B,MAAOm0D,uBAAuBl8C,OAIrBm8C,mBACP,OAAOrzF,KAAKu+B,SAAiBu0D,qBAAqBC,mBAE3CM,iBAAanjE,OACpBlwB,KAAK6+B,SAAiBi0D,qBAAqBC,kBAAmB7iE,OAIvD9H,WACP,OAAOpoB,KAAKu+B,SAAiBu0D,qBAAqBE,WAE3C5qE,SAAK8H,OACZlwB,KAAK6+B,SAAiBi0D,qBAAqBE,UAAW9iE,OAI/CojE,yBACP,OAAOtzF,KAAKu+B,SAAkBu0D,qBAAqBG,yBAI5CM,mBACP,OAAOvzF,KAAKu+B,SAAiBu0D,qBAAqBI,mBAE3CK,iBAAarjE,OACpBlwB,KAAK6+B,SAAiBi0D,qBAAqBI,kBAAmBhjE,OAOlEtwB,cACIiD,MAAM2gC,YAAYirB,WAOT+kC,yBAAyBrpD,MAA2B4I,aAA+B,yDAC5F,OAAO,MAAK0F,qBAAqB,mBAAoB,MAAM,EAAMtO,MAAO0P,sBAAAA,iBAA6B9G,eADT,GAInF0gD,iBAAiBC,KAAY3gD,aAA0B,0DAChE,MAQMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQhjB,aAAa,OAAQu0D,MAEtB,OAAKr6C,+BAAwC,cAAe,OAAQ8I,QAASpP,aAX3D1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAASvB,SAASI,KAAkB,YAC1C,OAAO,IAAIi5B,SAAiB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAEjE,OAAO,IAAI83B,SAAiB,SAAUC,QAASK,QAAUA,OAAO35B,kBANR,GAevDsyF,6BAA6BD,KAAY3gD,aAA0B,0DAC5E,MAcMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQhjB,aAAa,OAAQu0D,MAEtB,OAAKr6C,+BAAkD,0BAA2B,OAAQ8I,QAASpP,aAjBjF1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAAS,IAAI+D,MACblF,KAAOJ,SAASI,KAAY,MAClC,IAAK,MAAMsE,SAAStE,KAAM,CACtB,MAAMwoC,GAAK,IAAIkpD,UACflpD,GAAGzJ,WAAWz6B,OACdnD,OAAO+b,KAAKsrB,IAEhB,OAAO,IAAIvP,SAA2B,SAAUC,QAASK,QAAUL,QAAQ/3B,WAE3E,OAAO,IAAI83B,SAA2B,SAAUC,QAASK,QAAUA,OAAO35B,kBAZN,IC5F9E,MAAOuyF,8BAA8B/3C,aAAY,SACrC,KAAAg4C,iBAAmB,cCE/B,MAAOC,wBAAwB58C,OAItB68C,kBACP,OAAO/zF,KAAKu+B,SAAkBq1D,sBAAsBC,kBAE7CE,gBAAY7jE,OACnBlwB,KAAK6+B,SAAkB+0D,sBAAsBC,iBAAkB3jE,OAOnEtwB,cACIiD,MAAM2gC,YAAY+qB,YAOTylC,uBAAuB7pD,MAA2B4I,aAA+B,yDAC1F,OAAO,MAAK0F,qBAAqB,iBAAkB,MAAM,EAAMtO,MAAO0P,sBAAAA,YAAwB9G,eADJ,GAIjFkhD,wBAAwB9pD,MAA2B4I,aAA+B,0DAC3F,OAAO,OAAK0F,qBAAqB,kBAAmB,MAAM,EAAMtO,MAAO0P,sBAAAA,YAAwB9G,eADJ,GAIlF0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,WAAuB9G,eADJ,GAI1EmhD,uBAAuB1wE,GAAWuvB,aAAiC,0DAC5E,OAAO,OAAKyF,4BAAmDixB,UAAW,kBAAoBjmD,GAAI,MAAM,GAAO,EAAMq2B,sBAAAA,YAAwB9G,eADjE,GAInEohD,cAAchqD,MAA2B4I,aAA+B,0DACjF,OAAO,OAAK0F,qBAAqB,QAAS,MAAM,EAAMtO,MAAO0P,sBAAAA,YAAwB9G,eADJ,IC9CnF,MAAOqhD,0BAA0Bv4C,aAAY,SACjC,KAAAw4C,gCAAkC,6BAA4B,UAC9D,KAAAC,gCAAkC,6BAA4B,UAC9D,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,yBAA2B,sBAAqB,UAChD,KAAAC,+BAAiC,4BAA2B,UAC5D,KAAAC,+BAAiC,4BCN7C,MAAOC,oBAAoB19C,OAIlB29C,iCACP,OAAO70F,KAAKu+B,SAAiB61D,kBAAkBC,gCAAiCx6C,sBAAAA,cAIzEi7C,iCACP,OAAO90F,KAAKu+B,SAAiB61D,kBAAkBE,gCAAiCz6C,sBAAAA,cAIzEk7C,gBACP,OAAO/0F,KAAKs/B,aAAa80D,kBAAkBG,eAAgB16C,sBAAAA,UAEpDk7C,cAAU7kE,OACjBlwB,KAAKw/B,aAAa40D,kBAAkBG,eAAgBrkE,OAI7C8kE,gBACP,OAAOh1F,KAAKs/B,aAAa80D,kBAAkBI,eAAgB36C,sBAAAA,UAEpDm7C,cAAU9kE,OACjBlwB,KAAKw/B,aAAa40D,kBAAkBI,eAAgBtkE,OAI7C+kE,0BACP,OAAOj1F,KAAKu+B,SAAiB61D,kBAAkBK,yBAA0B56C,sBAAAA,UAElEo7C,wBAAoB/kE,OAC3BlwB,KAAK6+B,SAAiBu1D,kBAAkBK,yBAA0BvkE,OAI3DglE,gCACP,OAAOl1F,KAAKu+B,SAAkB61D,kBAAkBM,+BAAgC76C,sBAAAA,UAEzEq7C,8BAA0BhlE,OACjClwB,KAAK6+B,SAAkBu1D,kBAAkBM,+BAAgCxkE,OAIlEilE,gCACP,OAAOn1F,KAAKu+B,SAAkB61D,kBAAkBO,+BAAgC96C,sBAAAA,UAEzEs7C,8BAA0BjlE,OACjClwB,KAAK6+B,SAAkBu1D,kBAAkBO,+BAAgCzkE,OAO7EtwB,cACIiD,MAAM2gC,YAAY4sB,SCvDpB,MAAOglC,4BAA4Bv5C,aAAY,SACnC,KAAAw5C,uBAAyB,oBAAmB,UAC5C,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,sBAAwB,mBAAkB,UAC1C,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,iBAAmB,cAAa,UAChC,KAAAxgB,mBAAqB,gBAAe,UACpC,KAAAygB,2BAA6B,wBAAuB,WACpD,KAAAnB,yBAA2B,sBAAqB,WAChD,KAAAoB,kBAAoB,eCPhC,MAAOC,qBAAqB14D,wBAEnBkzD,eACP,OAAOtwF,KAAKs/B,aAAa,YAElBgxD,aAASpgE,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvB6lE,qBACP,OAAO/1F,KAAKu+B,SAAiB,kBAEtBw3D,mBAAe7lE,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjC4mD,cACP,OAAO92E,KAAKu+B,SAAkB,WAEvBu4C,YAAQ5mD,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG/BuR,sBACHzhC,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAK6+B,SAAiB,iBAAkB,IACxC7+B,KAAK6+B,SAAkB,WAAW,IAMpC,MAAOm3D,sBAAsB9+C,OAIpB++C,wBACP,OAAOj2F,KAAKu+B,SAAiB62D,oBAAoBC,uBAAwBx7C,sBAAAA,UAElEo8C,sBAAkB/lE,OACzBlwB,KAAK6+B,SAAiBu2D,oBAAoBC,uBAAwBnlE,OAI3DgmE,sBACP,OAAOl2F,KAAKu+B,SAAiB62D,oBAAoBE,qBAAsBz7C,sBAAAA,UAEhEq8C,oBAAgBhmE,OACvBlwB,KAAK6+B,SAAiBu2D,oBAAoBE,qBAAsBplE,OAIzDimE,iBACP,OAAOn2F,KAAKu+B,SAAiB62D,oBAAoBG,gBAAiB17C,sBAAAA,UAE3Ds8C,eAAWjmE,OAClBlwB,KAAK6+B,SAAiBu2D,oBAAoBG,gBAAiBrlE,OAIpDkmE,uBACP,OAAOp2F,KAAKu+B,SAAiB62D,oBAAoBI,sBAAuB37C,sBAAAA,UAEjEu8C,qBAAiBlmE,OACxBlwB,KAAK6+B,SAAiBu2D,oBAAoBI,sBAAuBtlE,OAI1DmmE,uBACP,OAAOr2F,KAAKu+B,SAAkB62D,oBAAoBK,uBAI3Ca,kBACP,OAAOt2F,KAAKs/B,aAAa81D,oBAAoBM,kBAItCa,kBACP,OAAOv2F,KAAKs/B,aAAa81D,oBAAoBO,iBAAkB97C,sBAAAA,UAExD08C,gBAAYrmE,OACnBlwB,KAAKw/B,aAAa41D,oBAAoBO,iBAAkBzlE,OAIjDonD,oBACP,OAAOt3E,KAAKu+B,SAAiB62D,oBAAoBjgB,mBAAoBt7B,sBAAAA,UAE9Dy9B,kBAAcpnD,OACrBlwB,KAAK6+B,SAAiBu2D,oBAAoBjgB,mBAAoBjlD,OAIvDsmE,4BACP,OAAOx2F,KAAKs/B,aAAa81D,oBAAoBQ,2BAA4B/7C,sBAAAA,UAElE28C,0BAAsBtmE,OAC7BlwB,KAAKw/B,aAAa41D,oBAAoBQ,2BAA4B1lE,OAI3D+kE,0BACP,OAAOj1F,KAAKu+B,SAAiB62D,oBAAoBX,yBAA0B56C,sBAAAA,UAEpEo7C,wBAAoB/kE,OAC3BlwB,KAAK6+B,SAAiBu2D,oBAAoBX,yBAA0BvkE,OAI7DumE,mBACP,OAAOz2F,KAAKu+B,SAAkB62D,oBAAoBS,mBAOtDj2F,cACIiD,MAAM2gC,YAAY0sB,UAOTwmC,sBAAsB3jD,aAAiC,yDAChE,OAAO,MAAKyF,4BAAyDs9C,aAAc,gBAAiB,YAAY,GAAO,EAAMj8C,sBAAAA,SAAqB9G,eADlF,GAIvD4jD,eAAexsD,MAA2B4I,aAA+B,0DAClF,OAAO,OAAK0F,qBAAqB,SAAU,MAAM,EAAMtO,MAAO0P,sBAAAA,iBAA6B9G,eADT,GAIzE6jD,gBAAgBzsD,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,YAAwB9G,eADL,GAI1E8jD,oBAAoB1sD,MAA2B4I,aAA+B,0DACvF,OAAO,OAAK0F,qBAAqB,cAAe,MAAM,EAAOtO,MAAO0P,sBAAAA,WAAuB9G,eADJ,ICjJzF,MAAO+jD,0BAA0Bj7C,aAAY,SACjC,KAAAk7C,UAAY,OAAM,UAClB,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,cAAgB,WAAU,UAC1B,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,0BAA4B,uBCHxC,MAAOC,oBAAoBlgD,OAIlBlhB,WACP,OAAOh2B,KAAKu+B,SAAiBu4D,kBAAkBC,UAAWl9C,sBAAAA,UAEnD7jB,SAAK9F,OACZlwB,KAAK6+B,SAAiBi4D,kBAAkBC,UAAW7mE,OAI5CmnE,yBACP,OAAOr3F,KAAKu+B,SAAiBu4D,kBAAkBE,wBAAyBn9C,sBAAAA,UAEjEw9C,uBAAmBnnE,OAC1BlwB,KAAK6+B,SAAiBi4D,kBAAkBE,wBAAyB9mE,OAI1D3N,eACP,OAAOviB,KAAKu+B,SAAiBu4D,kBAAkBG,cAAep9C,sBAAAA,UAIvDy9C,sBACP,OAAOt3F,KAAKu+B,SAAiBu4D,kBAAkBI,qBAAsBr9C,sBAAAA,UAE9Dy9C,oBAAgBpnE,OACvBlwB,KAAK6+B,SAAiBi4D,kBAAkBI,qBAAsBhnE,OAIvDqnE,2BACP,OAAOv3F,KAAKu+B,SAAkBu4D,kBAAkBK,0BAA2Bt9C,sBAAAA,UAEpE09C,yBAAqBrnE,OAC5BlwB,KAAK6+B,SAAkBi4D,kBAAkBK,0BAA2BjnE,OAOxEtwB,cACIiD,MAAM2gC,YAAYurB,QAOTl4B,aAAakc,aAA0B,yDAQhD,OAAO,MAAKsG,+BAA8C,UAAW,OAAQ,KAAMtG,aAP1D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL9B,IClDlD,MAAOm2F,yBAAyB7jB,sBAAqB,SACzC,KAAA8jB,eAAiB,YAAW,UAC5B,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,yCAA2C,sCAAqC,UAChF,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,eAAiB,YAAW,UAC5B,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,WAAa,QAAO,WACpB,KAAAnqB,cAAgB,WAAU,WAC1B,KAAAoqB,qBAAuB,kBAAiB,WACxC,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,mCAAqC,gCAA+B,WACpE,KAAAC,4CAA8C,yCAAwC,WACtF,KAAAC,4BAA8B,yBAAwB,WACtD,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,cAAgB,WCnB5B,MAAOC,mBAAmB7kB,gBAIjB8kB,gBACP,OAAO94F,KAAKu+B,SAAkBi5D,iBAAiBC,gBAIxCsB,oBACP,OAAO/4F,KAAKs/B,aAAak4D,iBAAiBE,oBAEnCqB,kBAAc7oE,OACrBlwB,KAAKw/B,aAAag4D,iBAAiBE,mBAAoBxnE,OAIhD8oE,0CACP,OAAOh5F,KAAKu+B,SAAiBi5D,iBAAiBG,yCAA0C99C,sBAAAA,UAEjFm/C,wCAAoC9oE,OAC3ClwB,KAAK6+B,SAAiB24D,iBAAiBG,yCAA0CznE,OAI1E+oE,kBACP,OAAOj5F,KAAKs/B,aAAak4D,iBAAiBI,kBAEnCqB,gBAAY/oE,OACnBlwB,KAAKw/B,aAAag4D,iBAAiBI,iBAAkB1nE,OAI9CgpE,sBACP,OAAOl5F,KAAKu+B,SAAiBi5D,iBAAiBK,qBAAsBh+C,sBAAAA,UAE7Dq/C,oBAAgBhpE,OACvBlwB,KAAK6+B,SAAiB24D,iBAAiBK,qBAAsB3nE,OAItDipE,gBACP,OAAOn5F,KAAKu+B,SAAiBi5D,iBAAiBM,eAAgBj+C,sBAAAA,UAEvDs/C,cAAUjpE,OACjBlwB,KAAK6+B,SAAiB24D,iBAAiBM,eAAgB5nE,OAIhDkpE,yBACP,OAAOp5F,KAAKu+B,SAAkBi5D,iBAAiBO,yBAIxCsB,kBACP,OAAOr5F,KAAKu+B,SAAiBi5D,iBAAiBQ,kBAEvCqB,gBAAYnpE,OACnBlwB,KAAK6+B,SAAiB24D,iBAAiBQ,iBAAkB9nE,OAIlDq0D,mBACP,OAAOvkF,KAAKu+B,SAAiBi5D,iBAAiBS,kBAAmBp+C,sBAAAA,UAE1D0qC,iBAAar0D,OACpBlwB,KAAK6+B,SAAiB24D,iBAAiBS,kBAAmB/nE,OAInDopE,YACP,OAAOt5F,KAAKu+B,SAAiBi5D,iBAAiBU,WAAYr+C,sBAAAA,UAEnDy/C,UAAMppE,OACblwB,KAAK6+B,SAAiB24D,iBAAiBU,WAAYhoE,OAI5C6d,eACP,OAAO/tC,KAAKu+B,SAAiBi5D,iBAAiBzpB,eAEvChgC,aAAS7d,OAChBlwB,KAAK6+B,SAAiB24D,iBAAiBzpB,cAAe79C,OAI/CimD,sBACP,OAAOn2E,KAAKu+B,SAAiBi5D,iBAAiBW,qBAAsBt+C,sBAAAA,UAI7D0/C,sBACP,OAAOv5F,KAAKu+B,SAAiBi5D,iBAAiBY,qBAAsBv+C,sBAAAA,UAE7D0/C,oBAAgBrpE,OACvBlwB,KAAK6+B,SAAiB24D,iBAAiBY,qBAAsBloE,OAItDspE,wBACP,OAAOx5F,KAAKu+B,SAAiBi5D,iBAAiBa,wBAEvCmB,sBAAkBtpE,OACzBlwB,KAAK6+B,SAAiB24D,iBAAiBa,uBAAwBnoE,OAIxDupE,mBACP,OAAOz5F,KAAKu+B,SAAiBi5D,iBAAiBc,kBAAmBz+C,sBAAAA,UAE1D4/C,iBAAavpE,OACpBlwB,KAAK6+B,SAAiB24D,iBAAiBc,kBAAmBpoE,OAInDwpE,gCACP,OAAO15F,KAAKu+B,SAAkBi5D,iBAAiBe,gCAIxCoB,oCACP,OAAO35F,KAAKu+B,SAAkBi5D,iBAAiBgB,oCAExCmB,kCAA8BzpE,OACrClwB,KAAK6+B,SAAkB24D,iBAAiBgB,mCAAoCtoE,OAIrE0pE,6CACP,OAAO55F,KAAKu+B,SAAkBi5D,iBAAiBiB,6CAExCmB,2CAAuC1pE,OAC9ClwB,KAAK6+B,SAAkB24D,iBAAiBiB,4CAA6CvoE,OAI9E2pE,6BACP,OAAO75F,KAAKu+B,SAAkBi5D,iBAAiBkB,6BAExCmB,2BAAuB3pE,OAC9BlwB,KAAK6+B,SAAkB24D,iBAAiBkB,4BAA6BxoE,OAI9D4pE,eACP,OAAO95F,KAAKu+B,SAAiBi5D,iBAAiBmB,eAIvC7qD,eACP,OAAO9tC,KAAKu+B,SAAiBi5D,iBAAiBoB,eAEvC9qD,aAAS5d,OAChBlwB,KAAK6+B,SAAiB24D,iBAAiBoB,cAAe1oE,OAO1DtwB,YAAYi0B,YACRhxB,MAAMgxB,YAOG69D,gBAAgBvnD,MAA2B4I,aAA+B,yDACnF,OAAO,MAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,WAAuB9G,eADH,GAI1EgnD,cAAcv2E,GAAWuvB,aAA0B,0DAC5D,MAOMoP,QAAU,IAAI/kB,wBAGpB,OAFA+kB,QAAQ3iB,aAAa,KAAMhc,IAEpB,OAAK61B,+BAA8C,WAAY,OAAQ8I,QAASpP,aAV9D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALlB,GAcnD24F,YAAYjnD,aAA0B,0DAQ/C,OAAO,OAAKsG,+BAA8C,SAAU,OAAQ,KAAMtG,aAPzD1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL/B,GAWtC44F,wBAAwB9vD,MAA2B4I,aAA+B,0DAC3F,OAAO,OAAK0F,qBAAqB,kBAAmB,MAAM,EAAMtO,MAAO0P,sBAAAA,WAAuB9G,eADH,ICzM7F,MAAOmnD,kCAAkC1C,iBAAgB,SAC7C,KAAA2C,eAAiB,YAAW,UAC5B,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,4BAA8B,yBAAwB,UACtD,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,YAAc,SCR1B,MAAOC,4BAA4B/B,WAI1BgC,gBACP,OAAO76F,KAAKu+B,SAAkB27D,0BAA0BC,eAAgBtgD,sBAAAA,cAEjEghD,cAAU3qE,OACjBlwB,KAAK6+B,SAAkBq7D,0BAA0BC,eAAgBjqE,OAI1D4qE,qBACP,OAAO96F,KAAKu+B,SAAkB27D,0BAA0BE,oBAAqBvgD,sBAAAA,cAEtEihD,mBAAe5qE,OACtBlwB,KAAK6+B,SAAkBq7D,0BAA0BE,oBAAqBlqE,OAI/D6mC,mBACP,OAAO/2D,KAAKu+B,SAAiB27D,0BAA0BG,kBAAmBxgD,sBAAAA,UAInEkhD,6BACP,OAAO/6F,KAAKu+B,SAAkB27D,0BAA0BI,4BAA6BzgD,sBAAAA,UAE9EkhD,2BAAuB7qE,OAC9BlwB,KAAK6+B,SAAkBq7D,0BAA0BI,4BAA6BpqE,OAIvE8qE,kBACP,OAAOh7F,KAAKu+B,SAAiB27D,0BAA0BK,iBAAkB1gD,sBAAAA,UAElEmhD,gBAAY9qE,OACnBlwB,KAAK6+B,SAAiBq7D,0BAA0BK,iBAAkBrqE,OAI3D+qE,sBACP,OAAOj7F,KAAKu+B,SAAiB27D,0BAA0BM,qBAAsB3gD,sBAAAA,UAEtEohD,oBAAgB/qE,OACvBlwB,KAAK6+B,SAAiBq7D,0BAA0BM,qBAAsBtqE,OAI/DgrE,kBACP,OAAOl7F,KAAKu+B,SAAkB27D,0BAA0BO,iBAAkB5gD,sBAAAA,UAEnEqhD,gBAAYhrE,OACnBlwB,KAAK6+B,SAAkBq7D,0BAA0BO,iBAAkBvqE,OAI5DirE,iBACP,OAAOn7F,KAAKu+B,SAAiB27D,0BAA0BQ,gBAAiB7gD,sBAAAA,UAEjEshD,eAAWjrE,OAClBlwB,KAAK6+B,SAAiBq7D,0BAA0BQ,gBAAiBxqE,OAI1DkrE,aACP,OAAOp7F,KAAKu+B,SAAkB27D,0BAA0BS,YAAa9gD,sBAAAA,cAE9DuhD,WAAOlrE,OACdlwB,KAAK6+B,SAAkBq7D,0BAA0BS,YAAazqE,OAOlEtwB,cACIiD,MAAM2gC,YAAYksB,gBAOT2rC,uBAAuBlxD,MAA2B4I,aAA+B,yDAC1F,OAAO,MAAK0F,qBAAqB,iBAAkB,MAAM,EAAOtO,MAAO0P,sBAAAA,YAAwB9G,eADL,ICnF5F,MAAOuoD,kCAAkCz/C,aAAY,SACzC,KAAA0/C,gBAAkB,aAAY,UAC9B,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,2BAA6B,wBAAuB,UACpD,KAAA1K,iBAAmB,cAAa,UAChC,KAAAsJ,kBAAoB,eAAc,UAClC,KAAAqB,qBAAuB,kBAAiB,UACxC,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,aAAe,UAAS,WACxB,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,kBAAoB,eCgChC,MAAOC,4BAA4BhlD,OAI1BilD,iBACP,OAAOn8F,KAAKu+B,SAAiB+8D,0BAA0BC,gBAAiB1hD,sBAAAA,cAEjEsiD,eAAWjsE,OAClBlwB,KAAK6+B,SAAiBy8D,0BAA0BC,gBAAiBrrE,OAI1DksE,2BACP,OAAOp8F,KAAKs/B,aAAag8D,0BAA0BE,0BAA2B3hD,sBAAAA,UAEvEuiD,yBAAqBlsE,OAC5BlwB,KAAKw/B,aAAa87D,0BAA0BE,0BAA2BtrE,OAIhEmsE,4BACP,OAAOr8F,KAAKs/B,aAAag8D,0BAA0BG,2BAA4B5hD,sBAAAA,UAExEwiD,0BAAsBnsE,OAC7BlwB,KAAKw/B,aAAa87D,0BAA0BG,2BAA4BvrE,OAIjEohE,kBACP,OAAOtxF,KAAKu+B,SAAiB+8D,0BAA0BvK,iBAAkBl3C,sBAAAA,cAElEy3C,gBAAYphE,OACnBlwB,KAAK6+B,SAAiBy8D,0BAA0BvK,iBAAkB7gE,OAI3D6mC,mBACP,OAAO/2D,KAAKu+B,SAAiB+8D,0BAA0BjB,kBAAmBxgD,sBAAAA,UAInEyiD,sBACP,OAAOt8F,KAAKu+B,SAAiB+8D,0BAA0BI,qBAAsB7hD,sBAAAA,eAEtEyiD,oBAAgBpsE,OACvBlwB,KAAK6+B,SAAiBy8D,0BAA0BI,qBAAsBxrE,OAI/DqsE,kBACP,OAAOv8F,KAAKu+B,SAAkB+8D,0BAA0BK,kBAIjDa,mBACP,OAAOx8F,KAAKu+B,SAAkB+8D,0BAA0BM,mBAIjDa,oBACP,OAAOz8F,KAAKs/B,aAAag8D,0BAA0BO,mBAAoBhiD,sBAAAA,WAEhE4iD,kBAAcvsE,OACrBlwB,KAAKw/B,aAAa87D,0BAA0BO,mBAAoB3rE,OAIzDwsE,cACP,OAAO18F,KAAKu+B,SAAkB+8D,0BAA0BQ,cAIjDa,iBACP,OAAO38F,KAAKu+B,SAAkB+8D,0BAA0BS,iBAIjDa,mBACP,OAAO58F,KAAKu+B,SAAiB+8D,0BAA0BU,kBAAmBniD,sBAAAA,UAEnE+iD,iBAAa1sE,OACpBlwB,KAAK6+B,SAAiBy8D,0BAA0BU,kBAAmB9rE,OAI5D2sE,mBACP,OAAO78F,KAAKs/B,aAAag8D,0BAA0BW,kBAAmBpiD,sBAAAA,UAE/DgjD,iBAAa3sE,OACpBlwB,KAAKw/B,aAAa87D,0BAA0BW,kBAAmB/rE,OAOnEtwB,cACIiD,MAAM2gC,YAAYisB,gBAOTqtC,+BAA+B/pD,aAA0B,yDAQlE,OAAO,MAAKsG,+BAA8C,4BAA6B,OAAQ,KAAMtG,aAP5E1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALZ,GAWzDowF,aAAavhE,MAAiB6iB,aAA0B,0DASjE,OAAO,OAAKsG,+BAA8C,UAAW,OAAQnpB,MAAO6iB,aAR3D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALb,GAYxD07F,0BAA0BhqD,aAA0B,0DAQ7D,OAAO,OAAKsG,+BAA8C,uBAAwB,OAAQ,KAAMtG,aAPvE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALjB,GAWpDswF,gBAAgB5+C,aAA0B,0DAQnD,OAAO,OAAKsG,+BAA8C,aAAc,OAAQ,KAAMtG,aAP7D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL3B,GAW1C27F,eAAe7yD,MAA2B4I,aAA+B,0DAClF,OAAO,OAAK0F,qBAAqB,SAAU,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,GAIzE0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,iBAA6B9G,eADV,GAI1EkqD,oBAAoBp4D,MAAeq4D,UAAoB9L,YAAqBr+C,aAA0B,0DAC/G,MAOMoP,QAAU,IAAI/kB,wBAKpB,OAJA+kB,QAAQtjB,SAAS,QAASgG,OAC1Bsd,QAAQtjB,SAAS,YAAaq+D,WAC9B/6C,QAAQtjB,SAAS,cAAeuyD,aAEzB,OAAK/3C,+BAA8C,iBAAkB,OAAQ8I,QAASpP,aAZpE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALiC,GAgBtG87F,2BAA2BpqD,aAA0B,0DAQ9D,OAAO,OAAKsG,+BAA8C,wBAAyB,OAAQ,KAAMtG,aAPxE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALhB,GAWrD+7F,2BAA2BrqD,aAA0B,0DAQ9D,OAAO,OAAKsG,+BAA8C,wBAAyB,OAAQ,KAAMtG,aAPxE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALhB,ICvOhE,MAAOg8F,2BAA2BxhD,aAAY,SAClC,KAAAyhD,gBAAkB,aAAY,UAC9B,KAAAC,gBAAkB,aAAY,UAC9B,KAAAvB,kBAAoB,eAAc,UAClC,KAAAwB,cAAgB,WAAU,UAC1B,KAAAxe,UAAY,OCHxB,MAAOye,qBAAqBvmD,OAInBwmD,iBACP,OAAO19F,KAAKu+B,SAAiB8+D,mBAAmBC,iBAIzCK,iBACP,OAAO39F,KAAKu+B,SAAkB8+D,mBAAmBE,iBAE1CI,eAAWztE,OAClBlwB,KAAK6+B,SAAkBw+D,mBAAmBE,gBAAiBrtE,OAIpD0sE,mBACP,OAAO58F,KAAKu+B,SAAiB8+D,mBAAmBrB,mBAIzCvkC,eACP,OAAOz3D,KAAKu+B,SAAiB8+D,mBAAmBG,eAIzCvU,WACP,OAAOjpF,KAAKs/B,aAAa+9D,mBAAmBre,WAOhDp/E,cACIiD,MAAM2gC,YAAY0qB,SAOT0vC,oBAAoBzzD,MAA2B4I,aAA+B,yDACvF,OAAO,MAAK0F,qBAAqB,cAAe,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI9E0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,IC9CrF,MAAO8qD,2BAA2BhiD,aAAY,SAClC,KAAAiiD,kCAAoC,+BCIhD,MAAOC,oBAAoB3gE,wBAClB4gE,aACP,OAAOh+F,KAAKu+B,SAAiB,KAGtBy/D,WAAO9tE,OACdlwB,KAAK6+B,SAAiB,IAAK3O,OAEpB+tE,aACP,OAAOj+F,KAAKu+B,SAAiB,KAGtB0/D,WAAO/tE,OACdlwB,KAAK6+B,SAAiB,IAAK3O,OAGxBuR,sBACH5+B,MAAM4+B,uBAIR,MAAOy8D,mBAAmB9gE,wBACjB+gE,YACP,OAAOn+F,KAAKu+B,SAAiB,KAGtB4/D,UAAMjuE,OACblwB,KAAK6+B,SAAiB,IAAK3O,OAEpBkuE,YACP,OAAOp+F,KAAKu+B,SAAiB,KAGtB6/D,UAAMluE,OACblwB,KAAK6+B,SAAiB,IAAK3O,OAGxBuR,sBACH5+B,MAAM4+B,uBAMR,MAAO48D,qBAAqBnnD,OAInBonD,mCACP,OAAOt+F,KAAKs/B,aAAau+D,mBAAmBC,mCAErCQ,iCAA6BpuE,OACpClwB,KAAKw/B,aAAaq+D,mBAAmBC,kCAAmC5tE,OAO5EtwB,cACIiD,MAAM2gC,YAAYstB,gBAOTytC,cAAcxrD,aAAiC,yDACxD,aAAa,MAAKkG,qBAAiCilD,WAAY,SAAS,EAAMrkD,sBAAAA,KAAiB9G,eADvC,GAI/C0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,GAI1EyrD,eAAezrD,aAAiC,0DACzD,aAAa,OAAKkG,qBAAkC8kD,YAAa,UAAU,EAAMlkD,sBAAAA,KAAiB9G,eADzC,GAIhD0rD,uBAAuB1rD,aAAiC,0DACjE,aAAa,OAAKkG,qBAAiDwd,2BAA4B,kBAAkB,EAAO5c,sBAAAA,KAAiB9G,eADxE,ICvFnE,MAAO2rD,gCAAgC7iD,aAAY,SACvC,KAAA8iD,wBAA0B,qBAAoB,UAC9C,KAAAC,aAAe,UAAS,UACxB,KAAAC,8BAAgC,2BAA0B,UAC1D,KAAApqB,mCAAqC,gCAA+B,UACpE,KAAAqqB,yBAA2B,sBAAqB,UAChD,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,aAAe,UCP3B,MAAOC,0BAA0BloD,OAIxBmoD,yBACP,OAAOr/F,KAAKu+B,SAAiBmgE,wBAAwBC,wBAAyB9kD,sBAAAA,UAEvEwlD,uBAAmBnvE,OAC1BlwB,KAAK6+B,SAAiB6/D,wBAAwBC,wBAAyBzuE,OAIhEovE,cACP,OAAOt/F,KAAKu+B,SAAiBmgE,wBAAwBE,cAE9CU,YAAQpvE,OACflwB,KAAK6+B,SAAiB6/D,wBAAwBE,aAAc1uE,OAIrDqvE,+BACP,OAAOv/F,KAAKs/B,aAAao/D,wBAAwBG,8BAA+BhlD,sBAAAA,UAEzE0lD,6BAAyBrvE,OAChClwB,KAAKw/B,aAAak/D,wBAAwBG,8BAA+B3uE,OAIlE0mD,oCACP,OAAO52E,KAAKu+B,SAAkBmgE,wBAAwBjqB,mCAAoC56B,sBAAAA,UAInF2lD,0BACP,OAAOx/F,KAAKg/B,aAAa0/D,wBAAwBI,yBAA0BjlD,sBAAAA,UAIpE4lD,qBACP,OAAOz/F,KAAKs/B,aAAao/D,wBAAwBK,oBAAqBllD,sBAAAA,UAI/D6lD,iBACP,OAAO1/F,KAAKs/B,aAAao/D,wBAAwBM,gBAAiBnlD,sBAAAA,UAE3D6lD,eAAWxvE,OAClBlwB,KAAKw/B,aAAak/D,wBAAwBM,gBAAiB9uE,OAIpDyvE,kBACP,OAAO3/F,KAAKu+B,SAAiBmgE,wBAAwBO,iBAAkBplD,sBAAAA,aAIhE+lD,uBACP,OAAO5/F,KAAKu+B,SAAiBmgE,wBAAwBQ,sBAAuBrlD,sBAAAA,UAIrEztB,cACP,OAAOpsB,KAAKu+B,SAAiBmgE,wBAAwBS,aAActlD,sBAAAA,UAOvEj6C,cACIiD,MAAM2gC,YAAYoqB,cAOTiyC,iBAAiB11D,MAA2B4I,aAA+B,yDACpF,OAAO,MAAK0F,qBAAqB,WAAY,MAAM,EAAMtO,MAAO0P,sBAAAA,WAAuB9G,eADH,GAQ3E8P,iBAAiB3yB,MAAqB6iB,aAA0B,oHAEzE,OADA7iB,MAAM2O,SAAS,iBAAkB,OAAKrb,IAC/B,6CAAuB0M,MAAO6iB,eAFoC,ICrF3E,MAAO+sD,8BAA8BtI,iBAAgB,SACzC,KAAAuI,0BAA4B,uBAAsB,UAClD,KAAAC,+BAAiC,4BAA2B,UAC5D,KAAAzF,iBAAmB,cAAa,UAChC,KAAA0F,uBAAyB,oBAAmB,UAC5C,KAAAC,UAAY,OAAM,UAClB,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,yBAA2B,sBAAqB,UAChD,KAAAC,wBAA0B,qBAAoB,UAC9C,KAAAC,aAAe,UAAS,WACxB,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,0BAA4B,uBAAsB,WAClD,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,kBAAoB,eAAc,WAClC,KAAAC,qBAAuB,kBAAiB,WACxC,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,mBAAqB,gBAAe,WACpC,KAAAC,+BAAiC,4BAA2B,WAC5D,KAAAC,iCAAmC,8BAA6B,WAChE,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,6BAA+B,0BAAyB,WACxD,KAAAC,sBAAwB,mBAAkB,WAC1C,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,aAAe,UCxB3B,MAAOC,sBAAsBvkE,wBAEpBwkE,2BACP,OAAO5hG,KAAKu+B,SAAiB,wBAEtBqjE,yBAAqB1xE,OAC5BlwB,KAAK6+B,SAAiB,uBAAwB3O,OAGvC2xE,8BACP,OAAO7hG,KAAKu+B,SAAkB,2BAEvBsjE,4BAAwB3xE,OAC/BlwB,KAAK6+B,SAAkB,0BAA2B3O,OAG3C4xE,+BACP,OAAO9hG,KAAKu+B,SAAkB,4BAEvBujE,6BAAyB5xE,OAChClwB,KAAK6+B,SAAkB,2BAA4B3O,OAG5C6xE,oBACP,OAAO/hG,KAAKu+B,SAAkB,iBAEvBwjE,kBAAc7xE,OACrBlwB,KAAK6+B,SAAkB,gBAAiB3O,OAGjC8xE,gBACP,OAAOhiG,KAAKu+B,SAAiB,aAEtByjE,cAAU9xE,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5B+xE,wBACP,OAAOjiG,KAAKu+B,SAAiB,qBAEtB0jE,sBAAkB/xE,OACzBlwB,KAAK6+B,SAAiB,oBAAqB3O,OAGpCgyE,qBACP,OAAOliG,KAAKu+B,SAAkB,kBAEvB2jE,mBAAehyE,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGlCogE,eACP,OAAOtwF,KAAKs/B,aAAa,YAElBgxD,aAASpgE,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvBiyE,4BACP,OAAOniG,KAAKu+B,SAAiB,yBAEtB4jE,0BAAsBjyE,OAC7BlwB,KAAK6+B,SAAiB,wBAAyB3O,OAGxCkyE,8BACP,OAAOpiG,KAAKu+B,SAAkB,2BAEvB6jE,4BAAwBlyE,OAC/BlwB,KAAK6+B,SAAkB,0BAA2B3O,OAG3CmyE,mBACP,OAAOriG,KAAKu+B,SAAkB,gBAEvB8jE,iBAAanyE,OACpBlwB,KAAK6+B,SAAkB,eAAgB3O,OAGpCuR,sBACHzhC,KAAK6+B,SAAiB,uBAAwB,IAC9C7+B,KAAK6+B,SAAkB,2BAA2B,GAClD7+B,KAAK6+B,SAAkB,4BAA4B,GACnD7+B,KAAK6+B,SAAkB,iBAAiB,GACxC7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,oBAAqB,IAC3C7+B,KAAK6+B,SAAkB,kBAAkB,GACzC7+B,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAK6+B,SAAiB,wBAAyB,IAC/C7+B,KAAK6+B,SAAkB,2BAA2B,GAClD7+B,KAAK6+B,SAAkB,gBAAgB,IAIzC,MAAOyjE,mBAAmBllE,wBAEjBmlE,eACP,OAAOviG,KAAKu+B,SAAkB,YAEvBgkE,aAASryE,OAChBlwB,KAAK6+B,SAAkB,WAAY3O,OAG5B+xE,wBACP,OAAOjiG,KAAKu+B,SAAiB,qBAEtB0jE,sBAAkB/xE,OACzBlwB,KAAK6+B,SAAiB,oBAAqB3O,OAGpCnC,cACP,OAAO/tB,KAAK4gC,oBAAmD+gE,cAAe,WAEvE5zE,YAAQmC,OACflwB,KAAK2gC,oBAAoB,UAAWzQ,OAGjCuR,sBACHzhC,KAAK6+B,SAAkB,YAAY,GACnC7+B,KAAK6+B,SAAiB,oBAAqB,IAC3C7+B,KAAKy/B,cAA8B,UAAW,IAAI3C,4CAMpD,MAAO0lE,wBAAwB3J,WAItB+I,2BACP,OAAO5hG,KAAKu+B,SAAiBuhE,sBAAsBC,0BAA2BlmD,sBAAAA,UAEvE+nD,yBAAqB1xE,OAC5BlwB,KAAK6+B,SAAiBihE,sBAAsBC,0BAA2B7vE,OAIhEuyE,gCACP,OAAOziG,KAAKu+B,SAAiBuhE,sBAAsBE,+BAAgCnmD,sBAAAA,UAE5E4oD,8BAA0BvyE,OACjClwB,KAAK6+B,SAAiBihE,sBAAsBE,+BAAgC9vE,OAIrE8qE,kBACP,OAAOh7F,KAAKu+B,SAAiBuhE,sBAAsBvF,iBAAkB1gD,sBAAAA,UAE9DmhD,gBAAY9qE,OACnBlwB,KAAK6+B,SAAiBihE,sBAAsBvF,iBAAkBrqE,OAIvDwyE,wBACP,OAAO1iG,KAAKu+B,SAAiBuhE,sBAAsBG,uBAAwBpmD,sBAAAA,UAEpE6oD,sBAAkBxyE,OACzBlwB,KAAK6+B,SAAiBihE,sBAAsBG,uBAAwB/vE,OAI7DyyE,WACP,OAAO3iG,KAAKu+B,SAAkBuhE,sBAAsBI,UAAWrmD,sBAAAA,UAExD8oD,SAAKzyE,OACZlwB,KAAK6+B,SAAkBihE,sBAAsBI,UAAWhwE,OAIjD0yE,oBACP,OAAO5iG,KAAKu+B,SAAiBuhE,sBAAsBK,mBAAoBtmD,sBAAAA,UAEhE+oD,kBAAc1yE,OACrBlwB,KAAK6+B,SAAiBihE,sBAAsBK,mBAAoBjwE,OAIzD2yE,0BACP,OAAO7iG,KAAKu+B,SAAiBuhE,sBAAsBM,yBAA0BvmD,sBAAAA,UAEtEgpD,wBAAoB3yE,OAC3BlwB,KAAK6+B,SAAiBihE,sBAAsBM,yBAA0BlwE,OAI/D4yE,yBACP,OAAO9iG,KAAKu+B,SAAiBuhE,sBAAsBO,wBAAyBxmD,sBAAAA,UAErEipD,uBAAmB5yE,OAC1BlwB,KAAK6+B,SAAiBihE,sBAAsBO,wBAAyBnwE,OAI9D6yE,cACP,OAAO/iG,KAAKu+B,SAAiBuhE,sBAAsBQ,aAAczmD,sBAAAA,UAE1DkpD,YAAQ7yE,OACflwB,KAAK6+B,SAAiBihE,sBAAsBQ,aAAcpwE,OAInD8yE,sBACP,OAAOhjG,KAAKu+B,SAAiBuhE,sBAAsBS,qBAAsB1mD,sBAAAA,UAElEmpD,oBAAgB9yE,OACvBlwB,KAAK6+B,SAAiBihE,sBAAsBS,qBAAsBrwE,OAI3D+yE,eACP,OAAOjjG,KAAKu+B,SAAiBuhE,sBAAsBU,cAAe3mD,sBAAAA,UAE3DopD,aAAS/yE,OAChBlwB,KAAK6+B,SAAiBihE,sBAAsBU,cAAetwE,OAIpDgzE,uBACP,OAAOljG,KAAKu+B,SAAkBuhE,sBAAsBW,sBAAuB5mD,sBAAAA,UAIpEspD,yBACP,OAAOnjG,KAAKg/B,aAAa8gE,sBAAsBY,wBAAyB7mD,sBAAAA,UAIjEupD,2BACP,OAAOpjG,KAAKu+B,SAAiBuhE,sBAAsBa,0BAA2B9mD,sBAAAA,UAEvEupD,yBAAqBlzE,OAC5BlwB,KAAK6+B,SAAiBihE,sBAAsBa,0BAA2BzwE,OAIhEvM,uBACP,OAAO3jB,KAAKu+B,SAAiBuhE,sBAAsBc,sBAAuB/mD,sBAAAA,UAInEwpD,mBACP,OAAOrjG,KAAKu+B,SAAiBuhE,sBAAsBe,kBAAmBhnD,sBAAAA,UAE/DwpD,iBAAanzE,OACpBlwB,KAAK6+B,SAAiBihE,sBAAsBe,kBAAmB3wE,OAIxDozE,sBACP,OAAOtjG,KAAKu+B,SAAiBuhE,sBAAsBgB,qBAAsBjnD,sBAAAA,UAElEypD,oBAAgBpzE,OACvBlwB,KAAK6+B,SAAiBihE,sBAAsBgB,qBAAsB5wE,OAI3DqzE,uBACP,OAAOvjG,KAAKu+B,SAAkBuhE,sBAAsBiB,sBAAuBlnD,sBAAAA,UAEpE0pD,qBAAiBrzE,OACxBlwB,KAAK6+B,SAAkBihE,sBAAsBiB,sBAAuB7wE,OAI7DszE,iBACP,OAAOxjG,KAAKu+B,SAAiBuhE,sBAAsBkB,gBAAiBnnD,sBAAAA,UAE7D2pD,eAAWtzE,OAClBlwB,KAAK6+B,SAAiBihE,sBAAsBkB,gBAAiB9wE,OAItDuzE,oBACP,OAAOzjG,KAAKu+B,SAAkBuhE,sBAAsBmB,mBAAoBpnD,sBAAAA,UAIjE6pD,gCACP,OAAO1jG,KAAKu+B,SAAkBuhE,sBAAsBoB,+BAAgCrnD,sBAAAA,UAI7E8pD,kCACP,OAAO3jG,KAAKu+B,SAAkBuhE,sBAAsBqB,iCAAkCtnD,sBAAAA,UAI/E+pD,uBACP,OAAO5jG,KAAKu+B,SAAkBuhE,sBAAsBsB,sBAAuBvnD,sBAAAA,UAIpEgqD,8BACP,OAAO7jG,KAAKu+B,SAAkBuhE,sBAAsBuB,6BAA8BxnD,sBAAAA,UAI3EiqD,uBACP,OAAO9jG,KAAKu+B,SAAkBuhE,sBAAsBwB,sBAAuBznD,sBAAAA,UAIpEkqD,qBACP,OAAO/jG,KAAKu+B,SAAkBuhE,sBAAsByB,oBAAqB1nD,sBAAAA,UAIlEmqD,kBACP,OAAOhkG,KAAKu+B,SAAkBuhE,sBAAsB0B,iBAAkB3nD,sBAAAA,UAI/DoqD,4BACP,OAAOjkG,KAAKu+B,SAAkBuhE,sBAAsB2B,2BAA4B5nD,sBAAAA,UAEzEoqD,0BAAsB/zE,OAC7BlwB,KAAK6+B,SAAkBihE,sBAAsB2B,2BAA4BvxE,OAIlEg0E,cACP,OAAOlkG,KAAKu+B,SAAiBuhE,sBAAsB4B,aAAc7nD,sBAAAA,UAE1DqqD,YAAQh0E,OACflwB,KAAK6+B,SAAiBihE,sBAAsB4B,aAAcxxE,OAO9DtwB,cACIiD,MAAM2gC,YAAYqsB,YAOTs0C,gBAAgBh6D,MAA2B4I,aAA+B,yDACnF,OAAO,MAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI1EqxD,cAAcrxD,aAA0B,0DAQjD,OAAO,OAAKsG,+BAA8C,WAAY,OAAQ,KAAMtG,aAP3D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL7B,GAWxCgjG,UAAUtxD,aAA0B,0DAU7C,OAAO,OAAKsG,+BAA4C,OAAQ,OAAQ,KAAMtG,aATrD1xC,WACrB,GAAIA,SAASm0B,aAAeJ,4BAAAA,IAAqB/zB,SAASm0B,aAAeJ,4BAAAA,QAAwB,CAC7F,MAAMxyB,OAAS,IAAI0/F,WAEnB,OADA1/F,OAAO49B,WAAWn/B,SAASI,MACpB,IAAIi5B,SAAqB,SAAUC,QAASK,QAAUL,QAAQ/3B,WAErE,OAAO,IAAI83B,SAAqB,SAAUC,QAASK,QAAUA,OAAO35B,kBAP/B,GAapCijG,eAAevxD,aAA0B,0DAQlD,OAAO,OAAKsG,+BAA8C,YAAa,OAAQ,KAAMtG,aAP5D1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBAL5B,GAWzCkjG,uBAAuBxxD,aAAiC,0DACjE,aAAa,OAAKkG,qBAAkC7b,wBAAa,kBAAkB,EAAOyc,sBAAAA,KAAiB9G,eAD1C,ICnYnE,MAAOyxD,kCAAkC3oD,aAAY,SACzC,KAAA4oD,iBAAmB,cAAa,UAChC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,uBAAyB,oBCFrC,MAAOC,4BAA4B3tD,OAI1B4tD,kBACP,OAAO9kG,KAAKs/B,aAAaklE,0BAA0BC,kBAI5CM,sBACP,OAAO/kG,KAAKu+B,SAAiBimE,0BAA0BE,sBAIhDM,2BACP,OAAOhlG,KAAKu+B,SAAiBimE,0BAA0BG,2BAIhDM,wBACP,OAAOjlG,KAAKu+B,SAAiBimE,0BAA0BI,wBAO3DhlG,cACIiD,MAAM2gC,YAAYqtB,gBAOTszC,gBAAgBh6D,MAA2B4I,aAA+B,yDACnF,OAAO,MAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI1EmyD,4BAA4B/6D,MAA2B4I,aAA+B,0DAC/F,OAAO,OAAK0F,qBAAqB,sBAAuB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAItFoyD,oBAAoBh7D,MAA2B4I,aAA+B,0DACvF,OAAO,OAAK0F,qBAAqB,cAAe,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI9EqyD,gBAAgBj7D,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,ICjDrF,MAAOsyD,2BAA2BxpD,aAAY,SAClC,KAAAypD,eAAiB,YAAW,UAC5B,KAAAC,YAAc,SAAQ,UACtB,KAAAC,0BAA4B,uBAAsB,UAClD,KAAAC,YAAc,SAAQ,UACtB,KAAAC,eAAiB,YAAW,UAC5B,KAAA/E,0BAA4B,uBAAsB,UAClD,KAAAgF,sBAAwB,mBAAkB,UAC1C,KAAAC,mBAAqB,gBAAe,UACpC,KAAAC,YAAc,SAAQ,WACtB,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,yBAA2B,sBAAqB,WAChD,KAAAC,aAAe,UCV3B,MAAOC,oBAAoB9oE,wBAElB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBi2E,gCACP,OAAOnmG,KAAKu+B,SAAiB,6BAEtB4nE,8BAA0Bj2E,OACjClwB,KAAK6+B,SAAiB,4BAA6B3O,OAG5Ck2E,gBACP,OAAOpmG,KAAKo+B,iBAAyB,aAE9BgoE,cAAUl2E,OACjBlwB,KAAK2+B,iBAAyB,YAAazO,OAGpCm2E,cACP,OAAOrmG,KAAKo+B,iBAAyB,WAE9BioE,YAAQn2E,OACflwB,KAAK2+B,iBAAyB,UAAWzO,OAGlCo2E,mBACP,OAAOtmG,KAAKo+B,iBAAyB,gBAE9BkoE,iBAAap2E,OACpBlwB,KAAK2+B,iBAAyB,eAAgBzO,OAGvCq2E,uBACP,OAAOvmG,KAAKo+B,iBAAyB,oBAE9BmoE,qBAAiBr2E,OACxBlwB,KAAK2+B,iBAAyB,mBAAoBzO,OAG3Cs2E,kBACP,OAAOxmG,KAAKo+B,iBAAyB,eAE9BooE,gBAAYt2E,OACnBlwB,KAAK2+B,iBAAyB,cAAezO,OAGtCu2E,kBACP,OAAOzmG,KAAKo+B,iBAAyB,eAE9BqoE,gBAAYv2E,OACnBlwB,KAAK2+B,iBAAyB,cAAezO,OAGtCw2E,6BACP,OAAO1mG,KAAKo+B,iBAAyB,0BAE9BsoE,2BAAuBx2E,OAC9BlwB,KAAK2+B,iBAAyB,yBAA0BzO,OAGrDuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,4BAA6B,IACnD7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAK6+B,SAAiB,eAAgB,GACtC7+B,KAAK6+B,SAAiB,mBAAoB,GAC1C7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,yBAA0B,KAMlD,MAAO8nE,qBAAqBzvD,OAInB0vD,gBACP,OAAO5mG,KAAKu+B,SAAiB8mE,mBAAmBC,gBAEzCsB,cAAU12E,OACjBlwB,KAAK6+B,SAAiBwmE,mBAAmBC,eAAgBp1E,OAIlDvC,aACP,OAAO3tB,KAAKs/B,aAAa+lE,mBAAmBE,aAIrCsB,2BACP,OAAO7mG,KAAKu+B,SAAiB8mE,mBAAmBG,2BAEzCqB,yBAAqB32E,OAC5BlwB,KAAK6+B,SAAiBwmE,mBAAmBG,0BAA2Bt1E,OAI7D42E,aACP,OAAO9mG,KAAKs/B,aAAa+lE,mBAAmBI,aAErCqB,WAAO52E,OACdlwB,KAAKw/B,aAAa6lE,mBAAmBI,YAAav1E,OAI3C62E,gBACP,OAAO/mG,KAAKu+B,SAAkB8mE,mBAAmBK,gBAE1CqB,cAAU72E,OACjBlwB,KAAK6+B,SAAkBwmE,mBAAmBK,eAAgBx1E,OAInDkzE,2BACP,OAAOpjG,KAAKu+B,SAAiB8mE,mBAAmB1E,2BAEzCyC,yBAAqBlzE,OAC5BlwB,KAAK6+B,SAAiBwmE,mBAAmB1E,0BAA2BzwE,OAI7D82E,uBACP,OAAOhnG,KAAKu+B,SAAiB8mE,mBAAmBM,uBAEzCqB,qBAAiB92E,OACxBlwB,KAAK6+B,SAAiBwmE,mBAAmBM,sBAAuBz1E,OAIzD+2E,oBACP,OAAOjnG,KAAKu+B,SAAiB8mE,mBAAmBO,oBAEzCqB,kBAAc/2E,OACrBlwB,KAAK6+B,SAAiBwmE,mBAAmBO,mBAAoB11E,OAItDg3E,kBACP,OAAOlnG,KAAKu+B,SAAiB8mE,mBAAmBQ,aAEzCqB,gBAAYh3E,OACnBlwB,KAAK6+B,SAAiBwmE,mBAAmBQ,YAAa31E,OAI/Ci3E,iBACP,OAAOnnG,KAAKu+B,SAAiB8mE,mBAAmBS,iBAEzCqB,eAAWj3E,OAClBlwB,KAAK6+B,SAAiBwmE,mBAAmBS,gBAAiB51E,OAInDk3E,yBACP,OAAOpnG,KAAKu+B,SAAiB8mE,mBAAmBU,yBAEzCqB,uBAAmBl3E,OAC1BlwB,KAAK6+B,SAAiBwmE,mBAAmBU,wBAAyB71E,OAI3Dm3E,0BACP,OAAOrnG,KAAKu+B,SAAiB8mE,mBAAmBW,0BAEzCqB,wBAAoBn3E,OAC3BlwB,KAAK6+B,SAAiBwmE,mBAAmBW,yBAA0B91E,OAI5Do3E,cACP,OAAOtnG,KAAKu+B,SAAiB8mE,mBAAmBY,cAEzCqB,YAAQp3E,OACflwB,KAAK6+B,SAAiBwmE,mBAAmBY,aAAc/1E,OAO3DtwB,cACIiD,MAAM2gC,YAAYysB,SAOTs3C,qBAAqBx0D,aAAiC,yDAC/D,OAAO,MAAKyF,4BAAuD0tD,YAAa,eAAgB,MAAM,GAAM,EAAMrsD,sBAAAA,KAAiB9G,eADpE,ICrMjE,MAAOy0D,uBAAuBpqE,wBAErB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBu3E,eACP,OAAOznG,KAAKs/B,aAAa,YAElBmoE,aAASv3E,OAChBlwB,KAAKw/B,aAAa,WAAYtP,OAGvBw3E,YACP,OAAO1nG,KAAKo+B,iBAAyB,SAE9BspE,UAAMx3E,OACblwB,KAAK2+B,iBAAyB,QAASzO,OAGhCE,cACP,OAAOpwB,KAAKo+B,iBAAyB,WAE9BhO,YAAQF,OACflwB,KAAK2+B,iBAAyB,UAAWzO,OAGlCy3E,gBACP,OAAO3nG,KAAKo+B,iBAAyB,aAE9BupE,cAAUz3E,OACjBlwB,KAAK2+B,iBAAyB,YAAazO,OAGpC03E,oBACP,OAAO5nG,KAAKo+B,iBAAyB,iBAE9BwpE,kBAAc13E,OACrBlwB,KAAK2+B,iBAAyB,gBAAiBzO,OAGxC23E,sBACP,OAAO7nG,KAAKo+B,iBAAyB,mBAE9BypE,oBAAgB33E,OACvBlwB,KAAK2+B,iBAAyB,kBAAmBzO,OAG9CuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAK6+B,SAAiB,KAAM,GAC5B7+B,KAAKw/B,aAAa,WAAY36B,SAAAA,SAAAA,OAC9B7E,KAAK6+B,SAAiB,QAAS,GAC/B7+B,KAAK6+B,SAAiB,UAAW,IACjC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAK6+B,SAAiB,kBAAmB,IAM3C,MAAOipE,uBAAuB5wD,OAGhCt3C,cACIiD,MAAM2gC,YAAY8sB,WAOTy3C,wBAAwBh1D,aAAiC,yDAClE,OAAO,MAAKyF,4BAA6DgvD,eAAgB,UAAW,MAAM,GAAO,EAAM3tD,sBAAAA,KAAiB9G,eADtE,IC3EpE,MAAOi1D,oBAAoB5qE,wBAElBiZ,cACP,OAAOr2C,KAAKu+B,SAAiB,WAEtB8X,YAAQnmB,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1B+3E,kBACP,OAAOjoG,KAAK2/B,cAAsB,eAE3BsoE,gBAAY/3E,OACnBlwB,KAAKy/B,cAAsB,cAAevP,OAGnCvG,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBg4E,WACP,OAAOloG,KAAKu+B,SAAiB,QAEtB2pE,SAAKh4E,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBi4E,eACP,OAAOnoG,KAAK2/B,cAAsB,YAE3BwoE,aAASj4E,OAChBlwB,KAAKy/B,cAAsB,WAAYvP,OAGpCuR,sBACHzhC,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAKy/B,cAAsB,cAAe,IAAI3C,2CAC9C98B,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,OAAQ,GAC9B7+B,KAAKy/B,cAAsB,WAAY,IAAI3C,4CAI7C,MAAOsrE,0BAA0BhrE,wBAExBirE,cACP,OAAOroG,KAAKqgC,eAA0C2nE,YAAa,WAE5DK,YAAQn4E,OACflwB,KAAK0gC,eAA6B,UAAWxQ,OAGtCoS,eACP,OAAOtiC,KAAK+/B,kBAAkB,YAEvBuC,aAASpS,OAChBlwB,KAAK6/B,kBAAkB,WAAY3P,OAGhCuR,sBACH,MAAM6mE,WAAa,IAAIN,YACvBM,WAAW7mE,sBACXzhC,KAAK0gC,eAAe,UAAW4nE,YAC/BtoG,KAAK6/B,kBAAkB,WAAY,IAAI/C,4CAMzC,MAAOyrE,yBAAyBrxD,OAGlCt3C,cACIiD,MAAM2gC,YAAY8tB,aAOTk3C,gBAAgBz1D,aAAiC,yDAC1D,aAAa,MAAKkG,qBAAwCmvD,kBAAmB,WAAW,EAAMvuD,sBAAAA,KAAiB9G,eADrD,ICtF5D,MAAO01D,sCAAsCjR,iBAAgB,SACjD,KAAAkR,mBAAqB,gBCDjC,MAAOC,gCAAgC9P,WAI9B+P,oBACP,OAAO5oG,KAAKu+B,SAAiBkqE,8BAA8BC,oBAEpDE,kBAAc14E,OACrBlwB,KAAK6+B,SAAiB4pE,8BAA8BC,mBAAoBx4E,OAO5EtwB,cACIiD,MAAM2gC,YAAYkrB,OAOTm6C,cAAc1+D,MAA2B4I,aAA+B,yDACjF,OAAO,MAAK0F,qBAAqB,QAAS,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIxE+1D,kBAAkB3+D,MAA2B4I,aAA+B,0DACrF,OAAO,OAAK0F,qBAAqB,YAAa,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI5Eg2D,yBAAyB5+D,MAA2B4I,aAA+B,0DAC5F,OAAO,OAAK0F,qBAAqB,mBAAoB,MAAM,EAAOtO,MAAO0P,sBAAAA,YAAwB9G,eADL,IChC9F,MAAOi2D,gCAAgCntD,aAAY,SACvC,KAAAotD,qBAAuB,kBAAiB,UACxC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,YAAc,SAAQ,UACtB,KAAAC,uBAAyB,oBCHrC,MAAOC,0BAA0BpyD,OAIxBqyD,sBACP,OAAOvpG,KAAKu+B,SAAiByqE,wBAAwBC,qBAAsBpvD,sBAAAA,UAIpE2vD,sBACP,OAAOxpG,KAAKu+B,SAAiByqE,wBAAwBE,sBAI9CO,kBACP,OAAOzpG,KAAKu+B,SAAiByqE,wBAAwBG,iBAAkBtvD,sBAAAA,UAEhE4vD,gBAAYv5E,OACnBlwB,KAAK6+B,SAAiBmqE,wBAAwBG,iBAAkBj5E,OAIzD8U,aACP,OAAOhlC,KAAKs/B,aAAa0pE,wBAAwBI,YAAavvD,sBAAAA,UAIvD6vD,wBACP,OAAO1pG,KAAKu+B,SAAkByqE,wBAAwBK,uBAAwBxvD,sBAAAA,UAEvE6vD,sBAAkBx5E,OACzBlwB,KAAK6+B,SAAkBmqE,wBAAwBK,uBAAwBn5E,OAO3EtwB,cACIiD,MAAM2gC,YAAYiqB,cAOT02C,gBAAgBh6D,MAA2B4I,aAA+B,yDACnF,OAAO,MAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,IChDrF,MAAO42D,oCAAoC9tD,aAAY,SAC3C,KAAA+tD,yBAA2B,sBAAqB,UAChD,KAAAC,iBAAmB,cAAa,UAChC,KAAAC,aAAe,UAAS,UACxB,KAAAC,cAAgB,WAAU,UAC1B,KAAAC,cAAgB,WAAU,UAC1B,KAAAC,eAAiB,YCJ7B,MAAOC,8BAA8BhzD,OAI5BizD,0BACP,OAAOnqG,KAAKu+B,SAAiBorE,4BAA4BC,0BAIlDQ,kBACP,OAAOpqG,KAAKu+B,SAAkBorE,4BAA4BE,kBAEnDO,gBAAYl6E,OACnBlwB,KAAK6+B,SAAkB8qE,4BAA4BE,iBAAkB35E,OAI9DgyB,cACP,OAAOliD,KAAKg/B,aAAa2qE,4BAA4BG,cAE9C5nD,YAAQhyB,OACflwB,KAAKm/B,aAAawqE,4BAA4BG,aAAc55E,OAIrDm6E,eACP,OAAOrqG,KAAKu+B,SAAkBorE,4BAA4BI,eAEnDM,aAASn6E,OAChBlwB,KAAK6+B,SAAkB8qE,4BAA4BI,cAAe75E,OAI3Do6E,eACP,OAAOtqG,KAAKs/B,aAAaqqE,4BAA4BK,eAE9CM,aAASp6E,OAChBlwB,KAAKw/B,aAAamqE,4BAA4BK,cAAe95E,OAItDg2D,gBACP,OAAOlmF,KAAKg/B,aAAa2qE,4BAA4BM,gBAE9C/jB,cAAUh2D,OACjBlwB,KAAKm/B,aAAawqE,4BAA4BM,eAAgB/5E,OAOlEtwB,cACIiD,MAAM2gC,YAAYkqB,aAOT68C,0BAA0BpgE,MAA2B4I,aAA+B,yDAC7F,OAAO,MAAK0F,qBAAqB,oBAAqB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIpF+oC,qBAAqB3xC,MAA2B4I,aAA+B,0DACxF,OAAO,OAAK0F,qBAAqB,eAAgB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAI/Ey3D,oBAAoBrgE,MAA2B4I,aAA+B,0DACvF,OAAO,OAAK0F,qBAAqB,cAAe,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,ICpEzF,MAAO03D,+BAA+B5uD,aAAY,SACtC,KAAA08B,2BAA6B,wBAAuB,UACpD,KAAAmyB,kBAAoB,eAAc,UAClC,KAAAC,oBAAsB,iBAAgB,UACtC,KAAAC,2BAA6B,wBAAuB,UACpD,KAAAC,sCAAwC,mCAAkC,UAC1E,KAAAC,eAAiB,YAAW,UAC5B,KAAAviC,kBAAoB,eAAc,UAClC,KAAAwiC,oBAAsB,iBAAgB,UACtC,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAAC,oBAAsB,iBAAgB,WACtC,KAAAl/B,eAAiB,YAAW,WAC5B,KAAAm/B,gBAAkB,aAAY,WAC9B,KAAAC,2CAA6C,wCAAuC,WACpF,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,uBAAyB,oBAAmB,WAC5C,KAAAC,wBAA0B,qBAAoB,WAC9C,KAAA9+B,cAAgB,WAAU,WAC1B,KAAA++B,uBAAyB,oBAAmB,WAC5C,KAAAC,eAAiB,YAAW,WAC5B,KAAAC,0BAA4B,uBCfxC,MAAOC,0BAA0BvuE,wBAExB6hB,WACP,OAAOj/C,KAAKs/B,aAAa,QAElB2f,SAAK/uB,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnB9H,WACP,OAAOpoB,KAAKu+B,SAAiB,QAEtBnW,SAAK8H,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAG3BuR,sBACH5+B,MAAM4+B,sBACNzhC,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,OAAQ,KAMhC,MAAO+sE,yBAAyB10D,OAIvBmjC,4BACP,OAAOr6E,KAAKu+B,SAAiBksE,uBAAuBlyB,2BAA4B1+B,sBAAAA,UAEzEwgC,0BAAsBnqD,OAC7BlwB,KAAK6+B,SAAiB4rE,uBAAuBlyB,2BAA4BroD,OAIlEzQ,mBACP,OAAOzf,KAAKu+B,SAAiBksE,uBAAuBC,kBAAmB7wD,sBAAAA,UAEhEp6B,iBAAayQ,OACpBlwB,KAAK6+B,SAAiB4rE,uBAAuBC,kBAAmBx6E,OAIzD27E,qBACP,OAAO7rG,KAAKg/B,aAAayrE,uBAAuBE,oBAAqB9wD,sBAAAA,UAE9DgyD,mBAAe37E,OACtBlwB,KAAKm/B,aAAasrE,uBAAuBE,oBAAqBz6E,OAIvD47E,4BACP,OAAO9rG,KAAKu+B,SAAkBksE,uBAAuBG,2BAA4B/wD,sBAAAA,UAE1EiyD,0BAAsB57E,OAC7BlwB,KAAK6+B,SAAkB4rE,uBAAuBG,2BAA4B16E,OAInE67E,uCACP,OAAO/rG,KAAKu+B,SAAkBksE,uBAAuBI,sCAAuChxD,sBAAAA,UAErFkyD,qCAAiC77E,OACxClwB,KAAK6+B,SAAkB4rE,uBAAuBI,sCAAuC36E,OAI9E87E,gBACP,OAAOhsG,KAAKu+B,SAAkBksE,uBAAuBK,eAAgBjxD,sBAAAA,UAE9DmyD,cAAU97E,OACjBlwB,KAAK6+B,SAAkB4rE,uBAAuBK,eAAgB56E,OAIvDg6C,mBACP,OAAOlqE,KAAKu+B,SAAiBksE,uBAAuBliC,kBAAmB1uB,sBAAAA,eAEhEqwB,iBAAah6C,OACpBlwB,KAAK6+B,SAAiB4rE,uBAAuBliC,kBAAmBr4C,OAIzD+7E,qBACP,OAAOjsG,KAAKg/B,aAAayrE,uBAAuBM,oBAAqBlxD,sBAAAA,UAE9DoyD,mBAAe/7E,OACtBlwB,KAAKm/B,aAAasrE,uBAAuBM,oBAAqB76E,OAIvDg8E,yBACP,OAAOlsG,KAAKu+B,SAAiBksE,uBAAuBO,wBAAyBnxD,sBAAAA,UAEtEqyD,uBAAmBh8E,OAC1BlwB,KAAK6+B,SAAiB4rE,uBAAuBO,wBAAyB96E,OAI/Di8E,qBACP,OAAOnsG,KAAKu+B,SAAiBksE,uBAAuBQ,oBAAqBpxD,sBAAAA,UAElEsyD,mBAAej8E,OACtBlwB,KAAK6+B,SAAiB4rE,uBAAuBQ,oBAAqB/6E,OAI3Dy/C,gBACP,OAAO3vE,KAAKu+B,SAAiBksE,uBAAuB1+B,eAAgBlyB,sBAAAA,eAE7D81B,cAAUz/C,OACjBlwB,KAAK6+B,SAAiB4rE,uBAAuB1+B,eAAgB77C,OAItDk8E,iBACP,OAAOpsG,KAAKu+B,SAAkBksE,uBAAuBS,gBAAiBrxD,sBAAAA,eAI/DwyD,4CACP,OAAOrsG,KAAKu+B,SAAkBksE,uBAAuBU,2CAA4CtxD,sBAAAA,UAE1FwyD,0CAAsCn8E,OAC7ClwB,KAAK6+B,SAAkB4rE,uBAAuBU,2CAA4Cj7E,OAInFo8E,gBACP,OAAOtsG,KAAKu+B,SAAkBksE,uBAAuBW,gBAI9CmB,iBACP,OAAOvsG,KAAKg/B,aAAayrE,uBAAuBY,gBAAiBxxD,sBAAAA,cAI1D2yD,wBACP,OAAOxsG,KAAKo+B,iBAA0BqsE,uBAAuBa,uBAAwBzxD,sBAAAA,cAI9E4yD,yBACP,OAAOzsG,KAAKs/B,aAAamrE,uBAAuBc,wBAAyB1xD,sBAAAA,cAIlEu2B,eACP,OAAOpwE,KAAKu+B,SAAiBksE,uBAAuBh+B,cAAe5yB,sBAAAA,eAE5Du2B,aAASlgD,OAChBlwB,KAAK6+B,SAAiB4rE,uBAAuBh+B,cAAev8C,OAIrDw8E,wBACP,OAAO1sG,KAAKu+B,SAAiBksE,uBAAuBe,uBAAwB3xD,sBAAAA,eAErE6yD,sBAAkBx8E,OACzBlwB,KAAK6+B,SAAiB4rE,uBAAuBe,uBAAwBt7E,OAI9Dy8E,gBACP,OAAO3sG,KAAKs/B,aAAamrE,uBAAuBgB,eAAgB5xD,sBAAAA,eAIzD+yD,2BACP,OAAO5sG,KAAKu+B,SAAkBksE,uBAAuBiB,0BAA2B7xD,sBAAAA,UAEzE+yD,yBAAqB18E,OAC5BlwB,KAAK6+B,SAAkB4rE,uBAAuBiB,0BAA2Bx7E,OAO7EtwB,cACIiD,MAAM2gC,YAAYuqB,aAOTylC,yBAAyBrpD,MAA2B4I,aAA+B,yDAC5F,OAAO,MAAK0F,qBAAqB,mBAAoB,MAAM,EAAMtO,MAAO0P,sBAAAA,UAAsB9G,eADF,GAInF85D,yBAAyB1iE,MAA2B4I,aAA+B,0DAC5F,OAAO,OAAK0F,qBAAqB,mBAAoB,MAAM,EAAOtO,MAAO0P,sBAAAA,SAAqB9G,eADF,GAInF+5D,oBAAoB3iE,MAA2B4I,aAA+B,0DACvF,OAAO,OAAK0F,qBAAqB,cAAe,MAAM,EAAOtO,MAAO0P,sBAAAA,iBAA6B9G,eADV,GAI9Eg6D,yBAAyBh6D,aAA0B,0DAQ5D,OAAO,OAAKsG,+BAA8C,sBAAuB,OAAQ,KAAMtG,aAPtE1xC,UACjBA,SAASm0B,aAAeJ,4BAAAA,GACjB,IAAIsF,SAAuB,SAAUC,QAASK,QAAUL,QAAQt5B,aAEhE,IAAIq5B,SAAuB,SAAUC,QAASK,QAAUA,OAAO35B,iBALlB,GAWnD2rG,uBAAuB7iE,MAA2B4I,aAA+B,0DAC1F,OAAO,OAAK0F,qBAAqB,iBAAkB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAIjFk6D,qBAAkB,0DAE3B,aADM,OAAKj0D,yBAAgE2yD,kBAAmB,UAAW,UAAU,EAAO9xD,sBAAAA,cAA0B,MAC7I,IAAIvkB,aAAaF,4BAAAA,MAFG,GAKlB83E,gBAAgBn6D,aAAiC,0DAC1D,aAAa,OAAKkG,qBAAwC0yD,kBAAmB,WAAW,EAAO9xD,sBAAAA,cAA0B9G,eAD/D,GAIjDo6D,gBAAgBj9E,MAA2B6iB,aAAiC,0DACrF,aAAa,OAAKiG,yBAAgE2yD,kBAAmB,UAAW,QAAQ,EAAO9xD,sBAAAA,cAA0B3pB,SADpE,IC3OvF,MAAOk9E,oCAAoCvxD,aAAY,SAC3C,KAAA08B,2BAA6B,wBAAuB,UACpD,KAAAqyB,2BAA6B,wBAAuB,UACpD,KAAAC,sCAAwC,mCAAkC,UAC1E,KAAAtiC,kBAAoB,eAAc,UAClC,KAAA8kC,iDAAmD,8CAA6C,UAChG,KAAAC,oBAAsB,iBCJlC,MAAOC,8BAA8Br2D,OAI5BmjC,4BACP,OAAOr6E,KAAKu+B,SAAiB6uE,4BAA4B70B,4BAElD8B,0BAAsBnqD,OAC7BlwB,KAAK6+B,SAAiBuuE,4BAA4B70B,2BAA4BroD,OAIvE47E,4BACP,OAAO9rG,KAAKu+B,SAAkB6uE,4BAA4BxC,4BAEnDkB,0BAAsB57E,OAC7BlwB,KAAK6+B,SAAkBuuE,4BAA4BxC,2BAA4B16E,OAIxE67E,uCACP,OAAO/rG,KAAKu+B,SAAkB6uE,4BAA4BvC,uCAEnDkB,qCAAiC77E,OACxClwB,KAAK6+B,SAAkBuuE,4BAA4BvC,sCAAuC36E,OAInFg6C,mBACP,OAAOlqE,KAAKu+B,SAAiB6uE,4BAA4B7kC,mBAElD2B,iBAAah6C,OACpBlwB,KAAK6+B,SAAiBuuE,4BAA4B7kC,kBAAmBr4C,OAI9Ds9E,kDACP,OAAOxtG,KAAKu+B,SAAkB6uE,4BAA4BC,kDAEnDG,gDAA4Ct9E,OACnDlwB,KAAK6+B,SAAkBuuE,4BAA4BC,iDAAkDn9E,OAI9Fu9E,qBACP,OAAOztG,KAAKu+B,SAAkB6uE,4BAA4BE,qBAEnDG,mBAAev9E,OACtBlwB,KAAK6+B,SAAkBuuE,4BAA4BE,oBAAqBp9E,OAO5EtwB,cACIiD,MAAM2gC,YAAYwqB,kBAOTwlC,yBAAyBrpD,MAA2B4I,aAA+B,yDAC5F,OAAO,MAAK0F,qBAAqB,mBAAoB,MAAM,EAAMtO,MAAO0P,sBAAAA,KAAiB9G,eADG,GAInF0oB,gBAAgBtxB,MAA2B4I,aAA+B,0DACnF,OAAO,OAAK0F,qBAAqB,UAAW,MAAM,EAAOtO,MAAO0P,sBAAAA,KAAiB9G,eADE,ICrErF,MAAO26D,uBAIT9tG,YAAYmjD,YAHL,KAAAC,kBAAoBn+C,SAAAA,SAAAA,YAIvB7E,KAAKgjD,kBAAoBD,WACzB/iD,KAAK2tG,UAAY,IAAI1uE,KAGlB2uE,QACH5tG,KAAK2tG,UAAY,IAAI1uE,MAOvB,MAAO4uE,cAMTjuG,cALiB,KAAAkuG,gBAAkB,KAG3B,KAAAC,mBAAqBlpG,SAAAA,SAAAA,YAGzB7E,KAAKguG,cAAgBhgE,OAAO/W,WAAWj3B,KAAKm5B,QAASn5B,KAAK8tG,iBAC1D9tG,KAAKm5B,UAQFmqB,OAAQob,OAAe1b,mBAC1B,OAAOhjD,KAAKiuG,KAAKvvC,OAAQ1b,mBAStBC,OAAOyb,OAAe1b,mBACzB,GAAI0b,OAAOwvC,YAAcluG,KAAK+tG,mBAAmB91E,IAAIymC,QACjD,OAGJ,MAAMyvC,MAAQnuG,KAAK+tG,mBAAmBhsG,IAAI28D,QAC1C,OAAKyvC,OAILA,MAAMP,QACCO,MAAMnrD,wBALb,EAQG7qB,QACHn4B,KAAK+tG,mBAAmB51E,QAGpBgB,UACJ,MAAMi1E,UAAW,IAAInvE,MAAOovE,UAAYruG,KAAK8tG,gBACvCQ,YAAuB,GAE7B,IAAM,MAAM1tF,YAAY5gB,KAAK+tG,mBAAmBjsG,OAAQ,CACpD,MAAM2oE,UAAYzqE,KAAK+tG,mBAAmBhsG,IAAI6e,UAC1C6pD,WAEIA,UAAUkjC,UAAUU,UAAYD,UAChCE,YAAY3vF,KAAKiC,UAK7B0tF,YAAYjtF,SAAQb,MAAQxgB,KAAK+tG,mBAAmB9xE,OAAOzb,QAE3DxgB,KAAKguG,cAAgBhgE,OAAO/W,WAAWj3B,KAAKm5B,QAASn5B,KAAK8tG,iBAGtDG,KAAKvvC,OAAe1b,kBAA+BurD,gBAA0B,GACjF,IAAIC,OAASxuG,KAAK+tG,mBAAmB91E,IAAIymC,QAMzC,OALI8vC,QAAUD,iBACVvuG,KAAK+tG,mBAAmB9xE,OAAOyiC,QAC/B8vC,QAAS,IAGRA,SACDxuG,KAAK+tG,mBAAmB3nG,IAAIs4D,OAAQ,IAAIgvC,uBAAuB1qD,qBACxD,ICvFb,MAAOyrD,wBAAwB5yD,aAAY,SAC/B,KAAA6yD,oBAAsB,iBAAgB,UACtC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,SAAW,MAAK,UAChB,KAAAC,kBAAoB,eAAc,UAClC,KAAAC,qBAAuB,kBAAiB,UACxC,KAAAC,UAAY,OAAM,UAClB,KAAAC,gBAAkB,aAAY,UAC9B,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,aAAe,UAAS,WACxB,KAAAC,2BAA6B,wBAAuB,WACpD,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,cAAgB,WAAU,WAC1B,KAAAC,iBAAmB,cAAa,WAChC,KAAAC,gBAAkB,aAAY,WAC9B,KAAAC,YAAc,SAAQ,WACtB,KAAAphC,iBAAmB,cAAa,WAChC,KAAA4wB,aAAe,UClB3B,MAAOyQ,2BAA2BxyE,wBAEzB5Z,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrB2/E,gBACP,OAAO7vG,KAAKu+B,SAAkB,aAEvBsxE,cAAU3/E,OACjBlwB,KAAK6+B,SAAkB,YAAa3O,OAG7B4/E,gBACP,OAAO9vG,KAAK4gC,oBAA6DgvE,mBAAoB,aAEtFE,cAAU5/E,OACjBlwB,KAAK2gC,oBAAoB,YAAazQ,OAGnCuR,sBACHzhC,KAAK6+B,SAAiB,KAAM,IAC5B7+B,KAAK6+B,SAAkB,aAAa,GACpC7+B,KAAKy/B,cAAmC,YAAa,IAAI3C,4CAI3D,MAAOizE,+BAA+B3yE,wBAE7BkO,UACP,OAAOtrC,KAAKu+B,SAAiB,OAEtB+M,QAAIpb,OACXlwB,KAAK6+B,SAAiB,MAAO3O,OAGtB8/E,kBACP,OAAOhwG,KAAKu+B,SAAiB,eAEtByxE,gBAAY9/E,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9B+/E,wBACP,OAAOjwG,KAAKu+B,SAAkB,qBAEvB0xE,sBAAkB//E,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrCggF,sBACP,OAAOlwG,KAAKg/B,aAAa,mBAElBkxE,oBAAgBhgF,OACvBlwB,KAAKm/B,aAAa,kBAAmBjP,OAG9BigF,qBACP,OAAOnwG,KAAKu+B,SAAkB,kBAEvB4xE,mBAAejgF,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGtCuR,sBACHzhC,KAAK6+B,SAAiB,MAAO,IAC7B7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAKm/B,aAAa,kBAAmB,IAAIF,MACzCj/B,KAAK6+B,SAAkB,kBAAkB,IAI3C,MAAOuxE,uBAAuBhzE,wBAErBizE,uBACP,OAAOrwG,KAAKqgC,eAAgE0vE,uBAAwB,oBAE7FM,qBAAiBngF,OACxBlwB,KAAK0gC,eAAwC,mBAAoBxQ,OAG1DigF,qBACP,OAAOnwG,KAAKu+B,SAAkB,kBAEvB4xE,mBAAejgF,OACtBlwB,KAAK6+B,SAAkB,iBAAkB3O,OAGlC8/E,kBACP,OAAOhwG,KAAKu+B,SAAiB,eAEtByxE,gBAAY9/E,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BogF,oBACP,OAAOtwG,KAAKu+B,SAAiB,iBAEtB+xE,kBAAcpgF,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhCqgF,wBACP,OAAOvwG,KAAKu+B,SAAkB,qBAEvBgyE,sBAAkBrgF,OACzBlwB,KAAK6+B,SAAkB,oBAAqB3O,OAGrCob,UACP,OAAOtrC,KAAKu+B,SAAiB,OAEtB+M,QAAIpb,OACXlwB,KAAK6+B,SAAiB,MAAO3O,OAGtBsgF,aACP,OAAOxwG,KAAKu+B,SAAiB,UAEtBiyE,WAAOtgF,OACdlwB,KAAK6+B,SAAiB,SAAU3O,OAGzBugF,uBACP,OAAOzwG,KAAKu+B,SAAkB,oBAEvBkyE,qBAAiBvgF,OACxBlwB,KAAK6+B,SAAkB,mBAAoB3O,OAGpC84C,cACP,OAAOhpE,KAAKu+B,SAAiB,WAEtByqC,YAAQ94C,OACflwB,KAAK6+B,SAAiB,UAAW3O,OAG1B4/E,gBACP,OAAO9vG,KAAK4gC,oBAA6DgvE,mBAAoB,aAEtFE,cAAU5/E,OACjBlwB,KAAK2gC,oBAAoB,YAAazQ,OAG/BwgF,oBACP,OAAO1wG,KAAKu+B,SAAiB,iBAEtBmyE,kBAAcxgF,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhCygF,kBACP,OAAO3wG,KAAKu+B,SAAkB,eAEvBoyE,gBAAYzgF,OACnBlwB,KAAK6+B,SAAkB,cAAe3O,OAG/B1M,SACP,OAAOxjB,KAAKu+B,SAAiB,MAEtB/a,OAAG0M,OACVlwB,KAAK6+B,SAAiB,KAAM3O,OAGrBjG,YACP,OAAOjqB,KAAKu+B,SAAiB,SAEtBtU,UAAMiG,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxBge,YACP,OAAOluC,KAAKu+B,SAAiB,SAEtB2P,UAAMhe,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAG5BuR,sBACH,MAAMmvE,oBAAsB,IAAIb,uBAChCa,oBAAoBnvE,sBACpBzhC,KAAK0gC,eAAe,mBAAoBkwE,qBACxC5wG,KAAK6+B,SAAkB,kBAAkB,GACzC7+B,KAAK6+B,SAAiB,cAAe,IACrC7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAK6+B,SAAkB,qBAAqB,GAC5C7+B,KAAK6+B,SAAiB,MAAO,IAC7B7+B,KAAK6+B,SAAiB,SAAU,GAChC7+B,KAAK6+B,SAAkB,oBAAoB,GAC3C7+B,KAAK6+B,SAAiB,UAAW,GACjC7+B,KAAKy/B,cAAmC,YAAa,IAAI3C,2CACzD98B,KAAK6+B,SAAiB,gBAAiB,IACvC7+B,KAAK6+B,SAAkB,eAAe,GACtC7+B,KAAK6+B,SAAiB,KAAM,IAC5B7+B,KAAK6+B,SAAiB,QAAS,IAC/B7+B,KAAK6+B,SAAiB,QAAS,KAIjC,MAAOgyE,uCAAuCzzE,wBAErC5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjB4gF,aACP,OAAO9wG,KAAK4gC,oBAAqDwvE,eAAgB,UAE1EU,WAAO5gF,OACdlwB,KAAK2gC,oBAAoB,SAAUzQ,OAGhCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAKy/B,cAA+B,SAAU,IAAI3C,4CAIpD,MAAOi0E,mBAAmB3zE,wBAEjBtU,YACP,OAAO9oB,KAAKu+B,SAAiB,SAEtBzV,UAAMoH,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxB7F,YACP,OAAOrqB,KAAKu+B,SAAiB,SAEtBlU,UAAM6F,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxB8gF,cACP,OAAOhxG,KAAKu+B,SAAkB,WAEvByyE,YAAQ9gF,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG/BuR,sBACHzhC,KAAK6+B,SAAiB,QAAS,GAC/B7+B,KAAK6+B,SAAiB,QAAS,IAC/B7+B,KAAK6+B,SAAkB,WAAW,IAIpC,MAAOoyE,kBAAkB7zE,wBAEhB6hB,WACP,OAAOj/C,KAAKs/B,aAAa,QAElB2f,SAAK/uB,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnB9H,WACP,OAAOpoB,KAAKu+B,SAAiB,QAEtBnW,SAAK8H,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBm/D,WACP,OAAOrvF,KAAKq/B,qBAAqB,QAE1BgwD,SAAKn/D,OACZlwB,KAAKu/B,qBAAqB,OAAQrP,OAG3BnF,eACP,OAAO/qB,KAAKu+B,SAAiB,YAEtBxT,aAASmF,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BurD,WACP,OAAOz7E,KAAKq/B,qBAAqB,QAE1Bo8C,SAAKvrD,OACZlwB,KAAKu/B,qBAAqB,OAAQrP,OAG3BlF,gBACP,OAAOhrB,KAAKu+B,SAAiB,aAEtBvT,cAAUkF,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BghF,qBACP,OAAOlxG,KAAKu+B,SAAiB,kBAEtB2yE,mBAAehhF,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjCihF,oBACP,OAAOnxG,KAAKu+B,SAAiB,iBAEtB4yE,kBAAcjhF,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGhCkhF,eACP,OAAOpxG,KAAKu+B,SAAiB,YAEtB6yE,aAASlhF,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BmhF,cACP,OAAOrxG,KAAKu+B,SAAkB,WAEvB8yE,YAAQnhF,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG3BohF,kBACP,OAAOtxG,KAAKu+B,SAAiB,eAEtB+yE,gBAAYphF,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BqhF,qBACP,OAAOvxG,KAAKu+B,SAAiB,kBAEtBgzE,mBAAerhF,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjCshF,mBACP,OAAOxxG,KAAKu+B,SAAiB,gBAEtBizE,iBAAathF,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAG/BuhF,qBACP,OAAOzxG,KAAKu+B,SAAiB,kBAEtBkzE,mBAAevhF,OACtBlwB,KAAK6+B,SAAiB,iBAAkB3O,OAGjCwhF,eACP,OAAO1xG,KAAKu+B,SAAiB,YAEtBmzE,aAASxhF,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BlH,WACP,OAAOhpB,KAAKs/B,aAAa,QAElBtW,SAAKkH,OACZlwB,KAAKw/B,aAAa,OAAQtP,OAGnByhF,kBACP,OAAO3xG,KAAK4gC,oBAA6CmwE,WAAY,eAE9DY,gBAAYzhF,OACnBlwB,KAAK2gC,oBAAoB,cAAezQ,OAGrCuR,sBACHzhC,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,gBAAiB,GACvC7+B,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAK6+B,SAAkB,WAAW,GAClC7+B,KAAK6+B,SAAiB,cAAe,GACrC7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,eAAgB,GACtC7+B,KAAK6+B,SAAiB,iBAAkB,GACxC7+B,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAKw/B,aAAa,OAAQ36B,SAAAA,SAAAA,OAC1B7E,KAAKy/B,cAA2B,cAAe,IAAI3C,4CAIrD,MAAO80E,qBAAqBx0E,wBAEnB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBygF,kBACP,OAAO3wG,KAAKu+B,SAAkB,eAEvBoyE,gBAAYzgF,OACnBlwB,KAAK6+B,SAAkB,cAAe3O,OAG/BsgF,aACP,OAAOxwG,KAAKu+B,SAAiB,UAEtBiyE,WAAOtgF,OACdlwB,KAAK6+B,SAAiB,SAAU3O,OAG7BuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAkB,eAAe,GACtC7+B,KAAK6+B,SAAiB,SAAU,IAIlC,MAAOgzE,cAAcz0E,wBAEZkE,QACP,OAAOthC,KAAKu+B,SAAiB,KAEtB+C,MAAEpR,OACTlwB,KAAK6+B,SAAiB,IAAK3O,OAGpBu0D,QACP,OAAOzkF,KAAKu+B,SAAiB,KAEtBkmD,MAAEv0D,OACTlwB,KAAK6+B,SAAiB,IAAK3O,OAGxBuR,sBACHzhC,KAAK6+B,SAAiB,IAAK,GAC3B7+B,KAAK6+B,SAAiB,IAAK,IAI7B,MAAOizE,qBAAqB10E,wBAEnB20E,mBACP,OAAO/xG,KAAK4gC,oBAA6CoxE,WAAY,gBAE9DD,iBAAa7hF,OACpBlwB,KAAK2gC,oBAAoB,eAAgBzQ,OAGlC+hF,mBACP,OAAOjyG,KAAK4gC,oBAAmCixE,MAAO,gBAE/CI,iBAAa/hF,OACpBlwB,KAAK2gC,oBAAoB,eAAgBzQ,OAGlCsiB,cACP,OAAOxyC,KAAKu+B,SAAkB,WAEvBiU,YAAQtiB,OACflwB,KAAK6+B,SAAkB,UAAW3O,OAG/BuR,sBACHzhC,KAAKy/B,cAA2B,eAAgB,IAAI3C,2CACpD98B,KAAKy/B,cAAsB,eAAgB,IAAI3C,2CAC/C98B,KAAK6+B,SAAkB,WAAW,IAIpC,MAAOqzE,qBAAqB90E,wBAEnB5Z,SACP,OAAOxjB,KAAKs/B,aAAa,MAElB9b,OAAG0M,OACVlwB,KAAKw/B,aAAa,KAAMtP,OAGjBiiF,mBACP,OAAOnyG,KAAKu+B,SAAiB,gBAEtB4zE,iBAAajiF,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAG/BkiF,oBACP,OAAOpyG,KAAKu+B,SAAiB,iBAEtB6zE,kBAAcliF,OACrBlwB,KAAK6+B,SAAiB,gBAAiB3O,OAGpCuR,sBACHzhC,KAAKw/B,aAAa,KAAM36B,SAAAA,SAAAA,OACxB7E,KAAK6+B,SAAiB,eAAgB,IACtC7+B,KAAK6+B,SAAiB,gBAAiB,IAIzC,MAAOwzE,wBAAwBj1E,wBAEtBlR,kBACP,OAAOlsB,KAAKqgC,eAAwC2xE,WAAY,eAEzD9lF,gBAAYgE,OACnBlwB,KAAK0gC,eAA4B,cAAexQ,OAGzCjE,cACP,OAAOjsB,KAAKqgC,eAAwC2xE,WAAY,WAEzD/lF,YAAQiE,OACflwB,KAAK0gC,eAA4B,UAAWxQ,OAGzCuR,sBACH,MAAM6wE,eAAiB,IAAIN,WAC3BM,eAAe7wE,sBACfzhC,KAAK0gC,eAAe,cAAe4xE,gBACnC,MAAMC,WAAa,IAAIP,WACvBO,WAAW9wE,sBACXzhC,KAAK0gC,eAAe,UAAW6xE,aAIjC,MAAOP,mBAAmB50E,wBAEjBrS,eACP,OAAO/qB,KAAKu+B,SAAiB,YAEtBxT,aAASmF,OAChBlwB,KAAK6+B,SAAiB,WAAY3O,OAG3BlF,gBACP,OAAOhrB,KAAKu+B,SAAiB,aAEtBvT,cAAUkF,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAG5BpF,eACP,OAAO9qB,KAAKo+B,iBAAyB,YAE9BtT,aAASoF,OAChBlwB,KAAK2+B,iBAAyB,WAAYzO,OAGvCuR,sBACHzhC,KAAK6+B,SAAiB,WAAY,GAClC7+B,KAAK6+B,SAAiB,YAAa,GACnC7+B,KAAK6+B,SAAiB,WAAY,IAIpC,MAAO2zE,oBAAoBp1E,wBAElBzT,WACP,OAAO3pB,KAAKu+B,SAAiB,QAEtB5U,SAAKuG,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvBuiF,kBACP,OAAOzyG,KAAKu+B,SAAiB,eAEtBk0E,gBAAYviF,OACnBlwB,KAAK6+B,SAAiB,cAAe3O,OAG9BwiF,aACP,OAAO1yG,KAAKqgC,eAAwC2xE,WAAY,UAEzDU,WAAOxiF,OACdlwB,KAAK0gC,eAA4B,SAAUxQ,OAGpCpE,eACP,OAAO9rB,KAAKqgC,eAAkDgyE,gBAAiB,YAExEvmF,aAASoE,OAChBlwB,KAAK0gC,eAAiC,WAAYxQ,OAG/CuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,IAC9B7+B,KAAK6+B,SAAiB,cAAe,GACrC,MAAM8zE,UAAY,IAAIX,WACtBW,UAAUlxE,sBACVzhC,KAAK0gC,eAAe,SAAUiyE,WAC9B,MAAMC,YAAc,IAAIP,gBACxBO,YAAYnxE,sBACZzhC,KAAK0gC,eAAe,WAAYkyE,cAIlC,MAAOC,kBAAkBz1E,wBAEhB01E,WACP,OAAO9yG,KAAKu+B,SAAiB,QAEtBu0E,SAAK5iF,OACZlwB,KAAK6+B,SAAiB,OAAQ3O,OAGvB6iF,UACP,OAAO/yG,KAAKu+B,SAAiB,OAEtBw0E,QAAI7iF,OACXlwB,KAAK6+B,SAAiB,MAAO3O,OAGtB8iF,YACP,OAAOhzG,KAAKu+B,SAAiB,SAEtBy0E,UAAM9iF,OACblwB,KAAK6+B,SAAiB,QAAS3O,OAGxB+iF,aACP,OAAOjzG,KAAKu+B,SAAiB,UAEtB00E,WAAO/iF,OACdlwB,KAAK6+B,SAAiB,SAAU3O,OAG7BuR,sBACHzhC,KAAK6+B,SAAiB,OAAQ,GAC9B7+B,KAAK6+B,SAAiB,MAAO,GAC7B7+B,KAAK6+B,SAAiB,QAAS,GAC/B7+B,KAAK6+B,SAAiB,SAAU,IAMlC,MAAOq0E,kBAAkBh8D,OAIhBi8D,qBACP,OAAOnzG,KAAKs/B,aAAamvE,gBAAgBC,oBAAqB70D,sBAAAA,UAIvDu5D,sBACP,OAAOpzG,KAAKu+B,SAAiBkwE,gBAAgBE,qBAAsB90D,sBAAAA,UAE5Du5D,oBAAgBljF,OACvBlwB,KAAK6+B,SAAiB4vE,gBAAgBE,qBAAsBz+E,OAIrDmjF,iBACP,OAAOrzG,KAAKs/B,aAAamvE,gBAAgBG,gBAAiB/0D,sBAAAA,UAEnDw5D,eAAWnjF,OAClBlwB,KAAKw/B,aAAaivE,gBAAgBG,gBAAiB1+E,OAI5CojF,UACP,OAAOtzG,KAAKu+B,SAAiBkwE,gBAAgBI,SAAUh1D,sBAAAA,UAEhDy5D,QAAIpjF,OACXlwB,KAAK6+B,SAAiB4vE,gBAAgBI,SAAU3+E,OAIzCqjF,mBACP,OAAOvzG,KAAKu+B,SAAkBkwE,gBAAgBK,kBAAmBj1D,sBAAAA,UAE1D05D,iBAAarjF,OACpBlwB,KAAK6+B,SAAkB4vE,gBAAgBK,kBAAmB5+E,OAInDsjF,sBACP,OAAOxzG,KAAKu+B,SAAkBkwE,gBAAgBM,qBAAsBl1D,sBAAAA,UAE7D25D,oBAAgBtjF,OACvBlwB,KAAK6+B,SAAkB4vE,gBAAgBM,qBAAsB7+E,OAItDujF,WACP,OAAOzzG,KAAKu+B,SAAiBkwE,gBAAgBO,UAAWn1D,sBAAAA,UAEjD45D,SAAKvjF,OACZlwB,KAAK6+B,SAAiB4vE,gBAAgBO,UAAW9+E,OAI1CwjF,iBACP,OAAO1zG,KAAKu+B,SAAkBkwE,gBAAgBQ,iBAIvC0E,kBACP,OAAO3zG,KAAKu+B,SAAkBkwE,gBAAgBS,iBAAkBr1D,sBAAAA,UAEzD85D,gBAAYzjF,OACnBlwB,KAAK6+B,SAAkB4vE,gBAAgBS,iBAAkBh/E,OAIlD0jF,eACP,OAAO5zG,KAAKu+B,SAAkBkwE,gBAAgBU,cAAet1D,sBAAAA,UAEtD+5D,aAAS1jF,OAChBlwB,KAAK6+B,SAAkB4vE,gBAAgBU,cAAej/E,OAI/C+nC,cACP,OAAOj4D,KAAKu+B,SAAiBkwE,gBAAgBW,aAAcv1D,sBAAAA,UAEpDoe,YAAQ/nC,OACflwB,KAAK6+B,SAAiB4vE,gBAAgBW,aAAcl/E,OAI7C2jF,4BACP,OAAO7zG,KAAKu+B,SAAiBkwE,gBAAgBY,2BAA4Bx1D,sBAAAA,UAElEg6D,0BAAsB3jF,OAC7BlwB,KAAK6+B,SAAiB4vE,gBAAgBY,2BAA4Bn/E,OAI3DgoC,iBACP,OAAOl4D,KAAKu+B,SAAiBkwE,gBAAgBa,gBAAiBz1D,sBAAAA,UAEvDqe,eAAWhoC,OAClBlwB,KAAK6+B,SAAiB4vE,gBAAgBa,gBAAiBp/E,OAIhDhwB,iBACP,OAAOF,KAAKs/B,aAAamvE,gBAAgBc,gBAAiB11D,sBAAAA,UAEnD35C,eAAWgwB,OAClBlwB,KAAKw/B,aAAaivE,gBAAgBc,gBAAiBr/E,OAI5CkhF,eACP,OAAOpxG,KAAKu+B,SAAiBkwE,gBAAgBe,cAAe31D,sBAAAA,UAErDu3D,aAASlhF,OAChBlwB,KAAK6+B,SAAiB4vE,gBAAgBe,cAAet/E,OAI9CuiF,kBACP,OAAOzyG,KAAKu+B,SAAiBkwE,gBAAgBgB,iBAAkB51D,sBAAAA,UAExD44D,gBAAYviF,OACnBlwB,KAAK6+B,SAAiB4vE,gBAAgBgB,iBAAkBv/E,OAIjD4jF,iBACP,OAAO9zG,KAAK2/B,cAAsB8uE,gBAAgBiB,iBAI3CpuG,aACP,OAAOtB,KAAKu+B,SAAiBkwE,gBAAgBkB,YAAa91D,sBAAAA,eAInDo4B,kBACP,OAAOjyE,KAAKs/B,aAAamvE,gBAAgBlgC,iBAAkB10B,sBAAAA,UAIpDztB,cACP,OAAOpsB,KAAKs/B,aAAamvE,gBAAgBtP,aAActlD,sBAAAA,UAEhDztB,YAAQ8D,OACflwB,KAAKw/B,aAAaivE,gBAAgBtP,aAAcjvE,OAOpDtwB,cACIiD,MAAM2gC,YAAYutB,MAOTgjD,aAAahhE,aAAiC,yDACvD,aAAa,MAAKkG,qBAAgC45D,UAAW,QAAQ,EAAMh5D,sBAAAA,SAAqB9G,eADzC,GAI9CihE,oBAAoBjhE,aAAiC,0DAC9D,aAAa,OAAKkG,qBAAkCu5D,YAAa,eAAe,EAAM34D,sBAAAA,SAAqB9G,eAD7C,GAIrDkhE,kBAAkBlhE,aAAiC,0DAC5D,OAAO,OAAKyF,4BAAyD05D,aAAc,YAAa,MAAM,GAAO,EAAMr4D,sBAAAA,SAAqB9G,eAD5E,GAInDmhE,qBAAqBnhE,aAAiC,0DAC/D,aAAa,OAAKkG,qBAAmC64D,aAAc,gBAAgB,EAAOj4D,sBAAAA,SAAqB9G,eADhD,GAItDohE,eAAephE,aAAiC,0DACzD,OAAO,OAAKyF,4BAAyDo5D,aAAc,SAAU,IAAI,GAAM,EAAO/3D,sBAAAA,SAAqB9G,eAD1E,GAIhDqhE,mBAAmBrhE,aAAiC,0DAC7D,OAAO,OAAKyF,4BAAmDy4D,UAAW,aAAc,QAAQ,GAAO,EAAMp3D,sBAAAA,WAAuB9G,eADvE,GAIpDshE,mCAAmCthE,aAAiC,0DAC7E,OAAO,OAAKyF,4BAA6Fq4D,+BAAgC,6BAA8B,MAAM,GAAM,EAAOh3D,sBAAAA,SAAqB9G,eADlI,GAIpEuhE,wBAAwBvhE,aAAiC,0DAClE,OAAO,OAAKyF,4BAAuDg6D,YAAa,kBAAmB,MAAM,GAAM,EAAO34D,sBAAAA,SAAqB9G,eADzE,ICz0BpE,MAAOwhE,kBAAkBn3E,wBAUhBpT,gBACP,OAAOhqB,KAAKs/B,aAAa,aAElBtV,cAAUkG,OACjBlwB,KAAKw/B,aAAa,YAAatP,OAIxBskF,iBACP,OAAOx0G,KAAKqgC,eAAwC2xE,WAAY,cAEzDwC,eAAWtkF,OAClBlwB,KAAK0gC,eAA4B,aAAcxQ,OAIxC1G,mBACP,OAAOxpB,KAAKu+B,SAAiB,gBAEtB/U,iBAAa0G,OACpBlwB,KAAK6+B,SAAiB,eAAgB3O,OAI/B3G,gBACP,OAAOvpB,KAAKu+B,SAAiB,aAEtBhV,cAAU2G,OACjBlwB,KAAK6+B,SAAiB,YAAa3O,OAI5B6iC,mBACP,OAAO/yD,KAAKs/B,aAAa,gBAElByzB,iBAAa7iC,OACpBlwB,KAAKw/B,aAAa,eAAgBtP,OAI3BukF,uBACP,OAAOz0G,KAAKu+B,SAAiB,oBAEtBk2E,qBAAiBvkF,OACxBlwB,KAAK6+B,SAAiB,mBAAoB3O,OAInCwkF,uBACP,OAAO10G,KAAKu+B,SAAiB,oBAEtBm2E,qBAAiBxkF,OACxBlwB,KAAK6+B,SAAiB,mBAAoB3O,OAInC/F,gBACP,OAAOnqB,KAAKg/B,aAAa,aAElB7U,cAAU+F,OACjBlwB,KAAKm/B,aAAa,YAAajP,OAOnCtwB,cACIiD,QA3EI,KAAA8xG,kBAAiC,KAmFlCC,aAAgBz5E,SACnB,IACI,OAAOt4B,MAAM07B,SAAYpD,SAC3B,MAAO/5B,GACL,OAAO,MAIRqgC,sBACHzhC,KAAKw/B,aAAa,YAAa36B,SAAAA,SAAAA,OAC/B,MAAMgwG,cAAgB,IAAI7C,WAC1B6C,cAAcpzE,sBACdzhC,KAAK0gC,eAAe,aAAcm0E,eAClC70G,KAAK6+B,SAAiB,eAAgB,GACtC7+B,KAAK6+B,SAAiB,YAAa,IACnC7+B,KAAKw/B,aAAa,eAAgB36B,SAAAA,SAAAA,OAClC7E,KAAK6+B,SAAiB,mBAAoB,IAC1C7+B,KAAK6+B,SAAiB,mBAAoB,IAC1C7+B,KAAKm/B,aAAa,YAAa,IAAIF,OC7GrC,MAAOwE,WAAU,SACL,KAAAvkC,KAAO,OAAM,UACb,KAAA41G,WAAa,aAAY,UACzB,KAAAC,aAAe,eAAc,UAC7B,KAAAC,eAAiB,iBAAgB,UACjC,KAAAC,kBAAoB,oBAAmB,UACvC,KAAAC,qBAAuB,uBAAsB,UAC7C,KAAAC,wBAA0B,0BAAyB,UACnD,KAAAC,WAAa,aAAY,UACzB,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,4BAA8B,8BAA6B,WAC3D,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,mBAAqB,qBAAoB,WACzC,KAAAC,4BAA8B,8BAA6B,WAC3D,KAAAC,6BAA+B,+BAA8B,WAC7D,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,2BAA6B,6BAA4B,WACzD,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAh9C,YAAc,cAAa,WAC3B,KAAAi9C,cAAgB,gBAAe,WAC/B,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,kCAAoC,oCAAmC,WACvE,KAAAC,oCAAsC,sCAAqC,WAC3E,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,gCAAkC,kCAAiC,WACnE,KAAAC,gCAAkC,kCAAiC,WACnE,KAAAC,gCAAkC,kCAAiC,WACnE,KAAAC,kCAAoC,oCAAmC,WACvE,KAAAC,kCAAoC,oCAAmC,WACvE,KAAAC,oCAAsC,sCAAqC,WAC3E,KAAAC,WAAa,aAAY,WACzB,KAAAC,YAAc,cAAa,WAC3B,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,2BAA6B,6BAA4B,WACzD,KAAAC,oBAAsB,sBAAqB,WAC3C,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,gCAAkC,kCAAiC,WACnE,KAAAC,aAAe,eAAc,WAC7B,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,UAAY,YAAW,WACvB,KAAAC,WAAa,aAAY,WACzB,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,SAAW,WAAU,WACrB,KAAAC,UAAY,YAAW,WACvB,KAAAC,eAAiB,iBAAgB,WACjC,KAAA90D,SAAW,WAAU,WACrB,KAAA+0D,WAAa,aAAY,WACzB,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,2BAA6B,6BAA4B,WACzD,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,cAAgB,gBAAe,WAC/B,KAAAC,wBAA0B,0BAAyB,WACnD,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,yBAA2B,2BAA0B,WACrD,KAAAC,qBAAuB,uBAAsB,WAC7C,KAAAC,WAAa,aAAY,WACzB,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,iBAAmB,mBAAkB,WACrC,KAAAC,6BAA+B,+BAA8B,WAC7D,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,oCAAsC,sCAAqC,WAC3E,KAAAC,6CAA+C,+CAA8C,WAC7F,KAAAC,kDAAoD,oDAAmD,WACvG,KAAAC,+CAAiD,iDAAgD,WACjG,KAAAC,2CAA6C,6CAA4C,WACzF,KAAAC,mBAAqB,qBAAoB,WACzC,KAAAC,iCAAmC,mCAAkC,WACrE,KAAAC,iCAAmC,mCAAkC,WACrE,KAAAC,uBAAyB,yBAAwB,WACjD,KAAAC,gBAAkB,kBAAiB,WACnC,KAAAC,kBAAoB,oBAAmB,WACvC,KAAAC,eAAiB,iBAAgB,WACjC,KAAAC,sBAAwB,wBAAuB,WAC/C,KAAAC,4BAA8B,8BAA6B,WAC3D,KAAAC,6BAA+B,+BAA8B,WAC7D,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,aAAe,eAAc,YAC7B,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,aAAe,eAAc,YAC7B,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,SAAW,WAAU,YACrB,KAAAC,QAAU,UAAS,YACnB,KAAAC,OAAS,SAAQ,YACjB,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,WAAa,aAAY,YACzB,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAr5D,oBAAsB,sBAAqB,YAC3C,KAAAs5D,6BAA+B,+BAA8B,YAC7D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,UAAY,YAAW,YACvB,KAAAC,aAAe,eAAc,YAC7B,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,+BAAiC,iCAAgC,YACjE,KAAAC,uCAAyC,yCAAwC,YACjF,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,WAAa,aAAY,YACzB,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,YAAc,cAAa,YAC3B,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,YAAc,cAAa,YAC3B,KAAAC,WAAa,aAAY,YACzB,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,aAAe,eAAc,YAC7B,KAAAC,YAAc,cAAa,YAC3B,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,aAAe,eAAc,YAC7B,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,aAAe,eAAc,YAC7B,KAAAC,WAAa,aAAY,YACzB,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,UAAY,YAAW,YACvB,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,4CAA8C,8CAA6C,YAC3F,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,0CAA4C,4CAA2C,YACvF,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,SAAW,WAAU,YACrB,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,0CAA4C,4CAA2C,YACvF,KAAAC,yCAA2C,2CAA0C,YACrF,KAAAC,+BAAiC,iCAAgC,YACjE,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,+BAAiC,iCAAgC,YACjE,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,UAAY,YAAW,YACvB,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,IAAM,MAAK,YACX,KAAAlqH,QAAU,UAAS,YACnB,KAAAmqH,KAAO,OAAM,YACb,KAAAC,UAAY,YAAW,YACvB,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,SAAW,WAAU,YACrB,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,WAAa,aAAY,YACzB,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,UAAY,YAAW,YACvB,KAAAC,UAAY,YAAW,YACvB,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,SAAW,WAAU,YACrB,KAAAC,UAAY,YAAW,YACvB,KAAAC,UAAY,YAAW,YACvB,KAAAC,SAAW,WAAU,YACrB,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,2CAA6C,6CAA4C,YACzF,KAAAC,sCAAwC,wCAAuC,YAC/E,KAAAC,+CAAiD,iDAAgD,YACjG,KAAAC,4CAA8C,8CAA6C,YAC3F,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,oDAAsD,sDAAqD,YAC3G,KAAAC,mDAAqD,qDAAoD,YACzG,KAAAC,yCAA2C,2CAA0C,YACrF,KAAAC,0CAA4C,4CAA2C,YACvF,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,oDAAsD,sDAAqD,YAC3G,KAAAC,+CAAiD,iDAAgD,YACjG,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,YAAc,cAAa,YAC3B,KAAAC,WAAa,aAAY,YACzB,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,UAAY,YAAW,YACvB,KAAAC,SAAW,WAAU,YACrB,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,aAAe,eAAc,YAC7B,KAAAC,WAAa,aAAY,YACzB,KAAAC,UAAY,YAAW,YACvB,KAAAC,QAAU,UAAS,YACnB,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,SAAW,WAAU,YACrB,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,+BAAiC,iCAAgC,YACjE,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,sCAAwC,wCAAuC,YAC/E,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,WAAa,aAAY,YACzB,KAAAC,UAAY,YAAW,YACvB,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,YAAc,cAAa,YAC3B,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,WAAa,aAAY,YACzB,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,sCAAwC,wCAAuC,YAC/E,KAAAC,4CAA8C,8CAA6C,YAC3F,KAAAC,qCAAuC,uCAAsC,YAC7E,KAAAC,kDAAoD,oDAAmD,YACvG,KAAAC,yDAA2D,2DAA0D,YACrH,KAAAC,6CAA+C,+CAA8C,YAC7F,KAAAC,+CAAiD,iDAAgD,YACjG,KAAAC,uDAAyD,yDAAwD,YACjH,KAAAC,kDAAoD,oDAAmD,YACvG,KAAAC,wDAA0D,0DAAyD,YACnH,KAAAC,oDAAsD,sDAAqD,YAC3G,KAAAC,iDAAmD,mDAAkD,YACrG,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,gDAAkD,kDAAiD,YACnG,KAAAC,wCAA0C,0CAAyC,YACnF,KAAAC,+CAAiD,iDAAgD,YACjG,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,aAAe,eAAc,YAC7B,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,aAAe,eAAc,YAC7B,KAAAC,aAAe,eAAc,YAC7B,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,aAAe,eAAc,YAC7B,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,aAAe,eAAc,YAC7B,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,YAAc,cAAa,YAC3B,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,eAAiB,iBAAgB,YACjC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,oCAAsC,sCAAqC,YAC3E,KAAAC,qBAAuB,uBAAsB,YAC7C,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,sBAAwB,wBAAuB,YAC/C,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,kBAAoB,oBAAmB,YACvC,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,4BAA8B,8BAA6B,YAC3D,KAAAC,6BAA+B,+BAA8B,YAC7D,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,iCAAmC,mCAAkC,YACrE,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,aAAe,eAAc,YAC7B,KAAAC,aAAe,eAAc,YAC7B,KAAAC,oBAAsB,sBAAqB,YAC3C,KAAAC,aAAe,eAAc,YAC7B,KAAAC,cAAgB,gBAAe,YAC/B,KAAAC,mBAAqB,qBAAoB,YACzC,KAAAC,mCAAqC,qCAAoC,YACzE,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,sCAAwC,wCAAuC,YAC/E,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,uBAAyB,yBAAwB,YACjD,KAAAC,2BAA6B,6BAA4B,YACzD,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,kCAAoC,oCAAmC,YACvE,KAAAC,0BAA4B,4BAA2B,YACvD,KAAAC,yBAA2B,2BAA0B,YACrD,KAAAC,8BAAgC,gCAA+B,YAC/D,KAAAC,gCAAkC,kCAAiC,YACnE,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,iBAAmB,mBAAkB,YACrC,KAAAC,wBAA0B,0BAAyB,YACnD,KAAAC,gBAAkB,kBAAiB,YACnC,KAAAC,eAAiB,iBAAgB,YAExB,KAAAp9H,OAAS,CAC5BokC,WAAWvkC,KACXukC,WAAWqxE,WACXrxE,WAAWsxE,aACXtxE,WAAWuxE,eACXvxE,WAAWwxE,kBACXxxE,WAAWyxE,qBACXzxE,WAAW0xE,wBACX1xE,WAAW2xE,WACX3xE,WAAW4xE,wBACX5xE,WAAW6xE,4BACX7xE,WAAW8xE,eACX9xE,WAAW+xE,gBACX/xE,WAAWgyE,wBACXhyE,WAAWiyE,qBACXjyE,WAAWkyE,oBACXlyE,WAAWmyE,wBACXnyE,WAAWoyE,sBACXpyE,WAAWqyE,mBACXryE,WAAWsyE,4BACXtyE,WAAWuyE,6BACXvyE,WAAWwyE,yBACXxyE,WAAWyyE,2BACXzyE,WAAW0yE,uBACX1yE,WAAW01B,YACX11B,WAAW2yE,cACX3yE,WAAW4yE,iBACX5yE,WAAW6yE,gBACX7yE,WAAW8yE,iBACX9yE,WAAW+yE,kCACX/yE,WAAWgzE,oCACXhzE,WAAWizE,yBACXjzE,WAAWkzE,yBACXlzE,WAAWmzE,gCACXnzE,WAAWozE,gCACXpzE,WAAWqzE,gCACXrzE,WAAWszE,kCACXtzE,WAAWuzE,kCACXvzE,WAAWwzE,oCACXxzE,WAAWyzE,WACXzzE,WAAW0zE,YACX1zE,WAAW2zE,yBACX3zE,WAAW4zE,qBACX5zE,WAAW6zE,kBACX7zE,WAAW8zE,2BACX9zE,WAAW+zE,oBACX/zE,WAAWg0E,kBACXh0E,WAAWi0E,eACXj0E,WAAWk0E,gBACXl0E,WAAWm0E,iBACXn0E,WAAWo0E,kBACXp0E,WAAWq0E,gCACXr0E,WAAWs0E,aACXt0E,WAAWu0E,cACXv0E,WAAWw0E,gBACXx0E,WAAWy0E,uBACXz0E,WAAW00E,uBACX10E,WAAW20E,uBACX30E,WAAW40E,UACX50E,WAAW60E,WACX70E,WAAW80E,qBACX90E,WAAW+0E,yBACX/0E,WAAWg1E,sBACXh1E,WAAWi1E,SACXj1E,WAAWk1E,UACXl1E,WAAWm1E,eACXn1E,WAAWqgB,SACXrgB,WAAWo1E,WACXp1E,WAAWq1E,wBACXr1E,WAAWs1E,wBACXt1E,WAAWu1E,2BACXv1E,WAAWw1E,cACXx1E,WAAWy1E,cACXz1E,WAAW01E,wBACX11E,WAAW21E,uBACX31E,WAAW41E,qBACX51E,WAAW61E,yBACX71E,WAAW81E,qBACX91E,WAAW+1E,WACX/1E,WAAWg2E,kBACXh2E,WAAWi2E,iBACXj2E,WAAWk2E,iBACXl2E,WAAWm2E,6BACXn2E,WAAWo2E,sBACXp2E,WAAWq2E,oCACXr2E,WAAWs2E,6CACXt2E,WAAWu2E,kDACXv2E,WAAWw2E,+CACXx2E,WAAWy2E,2CACXz2E,WAAW02E,mBACX12E,WAAW22E,iCACX32E,WAAW42E,iCACX52E,WAAW62E,uBACX72E,WAAW82E,gBACX92E,WAAW+2E,kBACX/2E,WAAWg3E,eACXh3E,WAAWi3E,sBACXj3E,WAAWk3E,4BACXl3E,WAAWm3E,6BACXn3E,WAAWo3E,oBACXp3E,WAAWq3E,2BACXr3E,WAAWs3E,2BACXt3E,WAAWu3E,eACXv3E,WAAWw3E,eACXx3E,WAAWy3E,yBACXz3E,WAAW03E,yBACX13E,WAAW23E,iBACX33E,WAAW43E,sBACX53E,WAAW63E,oBACX73E,WAAW83E,qBACX93E,WAAW+3E,kBACX/3E,WAAWg4E,iBACXh4E,WAAWi4E,eACXj4E,WAAWk4E,mBACXl4E,WAAWm4E,qBACXn4E,WAAWo4E,qBACXp4E,WAAWq4E,eACXr4E,WAAWs4E,iBACXt4E,WAAWu4E,iBACXv4E,WAAWw4E,mBACXx4E,WAAWy4E,qBACXz4E,WAAW04E,gBACX14E,WAAW24E,gBACX34E,WAAW44E,gBACX54E,WAAW64E,iBACX74E,WAAW84E,aACX94E,WAAW+4E,eACX/4E,WAAWg5E,aACXh5E,WAAWi5E,2BACXj5E,WAAWk5E,SACXl5E,WAAWm5E,QACXn5E,WAAWo5E,OACXp5E,WAAWq5E,8BACXr5E,WAAWs5E,oBACXt5E,WAAWu5E,iBACXv5E,WAAWw5E,WACXx5E,WAAWy5E,kBACXz5E,WAAW05E,mBACX15E,WAAW25E,qBACX35E,WAAW45E,mBACX55E,WAAW65E,eACX75E,WAAW85E,oBACX95E,WAAW+5E,sBACX/5E,WAAWg6E,oBACXh6E,WAAWi6E,wBACXj6E,WAAWk6E,4BACXl6E,WAAW6gB,oBACX7gB,WAAWm6E,6BACXn6E,WAAWo6E,yBACXp6E,WAAWq6E,4BACXr6E,WAAWs6E,sBACXt6E,WAAWu6E,0BACXv6E,WAAWw6E,kCACXx6E,WAAWy6E,oCACXz6E,WAAW06E,0BACX16E,WAAW26E,2BACX36E,WAAW46E,8BACX56E,WAAW66E,iCACX76E,WAAW86E,2BACX96E,WAAW+6E,oCACX/6E,WAAWg7E,kCACXh7E,WAAWi7E,2BACXj7E,WAAWk7E,oBACXl7E,WAAWm7E,UACXn7E,WAAWo7E,aACXp7E,WAAWq7E,kBACXr7E,WAAWs7E,mBACXt7E,WAAWu7E,uBACXv7E,WAAWw7E,mBACXx7E,WAAWy7E,kBACXz7E,WAAW07E,kBACX17E,WAAW27E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","sources":["../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/LogSeverity.ts","./src/environments/environment.prod.ts","./src/app/modules/map/api/api.ts","./src/app/utilities/base-uri-getter.ts","./src/app/modules/shared/interfaces/plugins/public/plugin-services-public.interface.ts","../genetec-webapp-client/src/KnownPrivileges.ts","./src/app/modules/feature-flags/tokens.ts","./src/app/modules/feature-flags/feature-flags.module.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/AccessStatus.ts","./src/app/modules/shared/pipes/access-status-to-color/access-status-to-color.pipe.ts","./src/app/modules/shared/api/api.ts","./src/constants.ts","./src/app/modules/shared/services/commands/commands-usage/command-usage.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ApplicationType.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/Streamers/ConnectionState.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/RestArgs.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/HttpStatusCode.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/RestResponse.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/dispatching/DispatchError.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/events/PromiseSubscription.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/management/EventManagement.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/events/subscription.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/dispatching/DispatcherWrapper.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/dispatching/DispatcherBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/core/dispatching/PromiseDispatcherBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/promise-simple-events/PromiseSimpleEventDispatcher.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/simple-events/SimpleEventDispatcher.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/strongly-typed-events/signals/SignalDispatcher.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/Helpers.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/FieldValue.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/Linq.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/ObservableCollection.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/FieldObject.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/multiJsonParser.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/EventFilter.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/Timer.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/Streamers/Streamer.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/Streamers/StreamerBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Globals.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/RestConnection.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Args/LogonStateChangedArgs.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RestOperation.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationTrackerBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationFieldObjectTracker.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/FieldList.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/QueryHelper.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Queries/EntityQuery.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Queries/BaseQuery.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Queries/QueryFilter.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationGuidTracker.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationObjectTracker.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationSimpleFieldObjectTracker.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/RelationGuidTemplateTracker.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/RestObject.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ValidFlags.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Entity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/AccessPointType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/AccessPointRuleType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/CameraType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/DeviceType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ScheduleType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/StreamType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/AccessControlInterfaceType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ZoneType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ServerType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/LprUnitType.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/EntityTypes.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAlarmEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AlarmEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/RestTransactionResponse.ts","../../RestClient/genetec-securitycenter-restclient/src/Connection/RestTransaction.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ISystemConfigurationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/EntityManager.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/CustomEntityManager.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/SystemConfigurationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Transaction.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Parameters/UserTokenData.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/Debouncer.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/semaphore.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Operations/EntityCacheTaskMonitor.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Operations/EntityCacheTask.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/ActionBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Parameters/CurrentUserInfo.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IPrivilegedEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/PrivilegedEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IUserEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/UserEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IUserGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/UserGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ILocatableEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LocatableEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IServerEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/ServerEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAreaEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AreaEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ICameraEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/FieldObjectWithRelations.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/CameraEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/RoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAgentEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AgentEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IZoneEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/ZoneEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ITilePluginEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/TilePluginEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IThreatLevelEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/ThreatLevelEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IScheduleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/ScheduleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IPartitionEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/PartitionEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IRouteEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/RouteEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/INetworkEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/NetworkEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMacroEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/MacroEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/UnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IIntrusionUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Intrusion/IntrusionUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IIntrusionAreaEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Intrusion/IntrusionAreaEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Devices/DeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ICustomEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/CustomEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IApplicationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Application/ApplicationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IVideoUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/VideoUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ITransferGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/TransferGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IStreamEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/StreamEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/SequenceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/TileLayoutEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAccessControlUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/AccessControlUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/AccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAccessPointRuleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/AccessPointRuleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ICardholderEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/CardholderEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ICardholderGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/CardholderGroupEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/SecurityCache.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMapEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/MapEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/EventBase.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/EventTypes.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/RoutableEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AlarmEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AlarmTriggeredEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AlarmAcknowledgedEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AlarmInvestigatingEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/TimezoneEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AccessEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AccessUnknownCredentialEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/ApplicationEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CustomEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/LprReadEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/LprHitEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/UserEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/DiagnosticManager.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/MultiEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/ModifiedIncidentEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderAntipassbackEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderAntipassbackForgivenEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDoorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/DoorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ICredentialEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/CredentialEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderAccessEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CredentialStatusEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AccessPointCredentialStatusEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderIdentityValidationEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/IdentityValidationEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/CardholderAccessGrantConfirmationRequestedEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Event/AccessGrantConfirmationRequestedEvent.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/Guids.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/PluginRoleEntity.ts","../genetec-webapp-client/src/Model/WebAppRoleconfig.ts","../genetec-webapp-client/src/LicenseDetails.ts","../genetec-webapp-client/src/Globals.ts","../genetec-webapp-client/src/WebAppConnection.ts","../genetec-webapp-client/src/Rxjs/exhaust-map-with-trailing.ts","../genetec-webapp-client/src/RestWrappers/SecurityCenterVersion.ts","../genetec-webapp-client/src/RestWrappers/IEntityPropWrapper.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IElevatorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/ElevatorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IVisitorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/VisitorEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ILprUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LicensePlateRecognition/LprUnitEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IPatrollerEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LicensePlateRecognition/LprPatrollerEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IContentFileEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LicensePlateRecognition/ContentFileEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IHotlistEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LicensePlateRecognition/HotlistEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IUserTaskEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/UserTaskEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IFileEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/FileEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDoorTemplateEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/DoorTemplateEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAccessManagerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/AccessManagerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAreaAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/AreaAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDoorAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/DoorAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/AccessControl/DoorSideAccessPointEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMobileApplicationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Application/MobileApplicationEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IInputDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Devices/InputDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IIntrusionInputDevice.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Devices/IntrusionInputDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IOutputDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Devices/OutputDeviceEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ILicensePlateManagerRole.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/LicensePlateRecognition/LicensePlateManagerRole.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IArchiverAgentEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/ArchiverAgentEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IArchiverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/ArchiverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IAuxiliaryArchiverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/AuxiliaryArchiverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMediaRouterRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Video/MediaRouterRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IActiveDirectoryRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/ActiveDirectoryRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/AuthenticationRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/AdfsRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDirectoryFailOverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/DirectoryFailOverRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IFederationBaseRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/FederationBaseRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/HealthMonitoringRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/IncidentManagementRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMapManagerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/MapManagerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IMediaGatewayRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/MediaGatewayRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IOmnicastFederationRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/ISecurityCenterFederationRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/SecurityCenterFederationRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/OmnicastFederationRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/PointOfSaleRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IReverseTunnelClientRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/ReverseTunnelClientRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IReverseTunnelServerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/ReverseTunnelServerRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IPluginRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IWebClientRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/WebClientRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IZoneManagementRoleEntity.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Model/Roles/ZoneManagementRoleEntity.ts","../genetec-webapp-client/src/RestWrappers/EntityWrapper.ts","../genetec-webapp-client/src/RestWrappers/WrapperFactory.ts","../genetec-webapp-client/src/WebAppClient.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/SecurityCenterClient.ts","./src/app/utilities/common-helper.ts","./src/app/security-center/services/client/security-center-client.service.ts","./src/app/modules/shared/services/logger/logger.service.ts","./src/app/modules/shared/services/tracking.service.ts","./src/app/modules/shared/components/tracked/tracked.component.ts","./src/app/modules/shared/components/command-button/command-button.component.html","./src/app/modules/shared/components/command-button/command-button.component.ts","./src/app/modules/shared/interfaces/context-menu-item/menu-separator.ts","./src/app/modules/shared/utilities/constants.ts","./src/app/modules/shared/interfaces/plugins/public/context-types.ts","./src/app/modules/shared/utilities/subscription-collection.ts","./src/app/modules/shared/services/commands/commands-usage/commands-usage-context.ts","./src/app/modules/shared/services/commands/commands-usage/entity-commands-usage-context.ts","./src/app/modules/shared/services/commands/commands-usage/commands-usage.ts","./src/app/modules/shared/components/command-buttons/command-buttons.component.html","./src/app/modules/shared/components/command-buttons/command-buttons.component.ts","./src/app/modules/shared/services/idb/idb.service.ts","./src/app/modules/shared/services/resources/resources.service.ts","./src/app/modules/shared/components/custom-icon/custom-icon.component.html","./src/app/modules/shared/components/custom-icon/custom-icon.component.ts","./src/app/modules/shared/components/entity-browser/items/browser-item.ts","./src/app/modules/shared/components/entity-browser/entity-browser-keyboard-navigation.directive.ts","./src/app/modules/shared/interfaces/plugins/public/plugin-public.interface.ts","./src/app/modules/feature-flags/feature-flag.ts","./src/app/modules/access-control/feature-flags.ts","./src/app/modules/shared/interfaces/plugins/internal/pluginItem.ts","./src/app/modules/shared/controllers/plugins/plugins.controller.data.ts","./src/app/modules/shared/controllers/plugins/plugins.controller.ts","./src/app/modules/shared/services/advanced-settings/advanced-settings.service.ts","./src/app/modules/shared/services/plugin/plugin.service.ts","./src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface.ts","./src/app/modules/shared/interfaces/plugins/public/plugin-types.ts","./src/app/modules/shared/utilities/coerceBooleanProperty.ts","./src/app/modules/shared/utilities/content.serializer.ts","./src/app/modules/tiles/enumerations/tiles-constants.ts","./src/app/modules/shared/enumerations/drag-drop-types.ts","./src/app/modules/tiles/utilities/dragdrophelper.ts","./src/app/modules/shared/models/entity-type-data.ts","./src/app/modules/shared/services/icons.service.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/FieldObjectOverloads.ts","./src/app/modules/shared/models/hierarchical-field-object.ts","./src/app/modules/shared/models/model-object.ts","./src/app/modules/shared/entity-browser/Items/entity-browser-item-model.ts","./src/app/modules/general/entity-browser/items/area-browser-item-model.ts","./src/app/modules/shared/entity-browser/entity-browser-item.service.ts","./src/app/modules/shared/entity-browser/entity-browser-selection.ts","./src/app/modules/shared/utilities/natural-sort.ts","./src/app/modules/shared/entity-browser/interfaces/filters/page-info.ts","./src/app/modules/shared/models/hierarchical-data.ts","./src/app/modules/shared/models/field-filter.data.ts","./src/app/modules/shared/models/expander-filter-data.ts","./src/app/modules/shared/entity-browser/filters/custom-field-data.ts","./src/app/modules/shared/entity-browser/filters/entity-browser-filter.data.ts","./src/app/modules/shared/entity-browser/interfaces/entity-browser-result.ts","./src/app/modules/shared/controllers/entity-browser/entity-browser.controller.ts","./src/app/modules/shared/entity-browser/entity-type-set.ts","./src/app/modules/shared/models/field-filter-set.ts","./src/app/modules/shared/entity-browser/filters/entity-browser-filter.ts","./src/app/modules/shared/entity-browser/filters/hierarchical-entity-browser-filter.ts","./src/app/modules/shared/entity-browser/entity-browser.service.ts","./src/app/modules/shared/services/features/features.service.ts","./src/app/modules/shared/services/commands/commands-usage/commands-usage-manager.ts","./src/app/modules/shared/services/commands/entity-command-provider.ts","./src/app/modules/shared/services/commands/commands-usage/commands-usage-collection.ts","./src/app/modules/shared/services/commands/commands.service.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/RunningState.ts","./src/app/modules/shared/components/entity-browser/items/entity-browser-item.ts","./src/app/modules/shared/components/entity-browser/items/show-more-browser-item.ts","./src/app/modules/shared/components/entity-browser/entity-browser/entity-browser-items-source.ts","./src/app/modules/shared/components/entity-browser/entity-browser/entity-browser.component.html","./src/app/modules/shared/components/entity-browser/entity-browser/entity-browser.component.ts","./src/app/modules/shared/entity-browser/enumerations/shared-entity-browser-refresher-types.ts","./src/app/modules/shared/components/entity-browser/entity-browser-task/entity-browser-task.component.ts","./src/app/modules/shared/components/entity-browser/entity-browser-task/entity-browser-task.component.html","./src/app/modules/shared/utilities/StringFormat.ts","./src/app/modules/shared/directives/focus-popup-when-open.directive.ts","./src/app/modules/shared/components/entity-browser/entity-combo/entity-combo.component.html","./src/app/modules/shared/components/entity-browser/entity-combo/entity-combo.component.ts","./src/app/modules/shared/services/filters/filter.ts","./src/app/modules/shared/constants/numbers.ts","./src/app/store/decorators/method-emitter.decorator.ts","./src/app/store/immder-adapter/common/immutable-state-context.ts","./src/app/store/decorators/receiver.decorator.ts","./src/app/store/immder-adapter/decorators/immutable-context.decorator.ts","./src/app/store/decorators/selector.decorator.ts","./src/app/store/immder-adapter/decorators/immutable-selector.decorator.ts","./src/app/modules/shared/services/state/security-center-state.service.ts","./src/app/modules/shared/store/filters.state.ts","./src/app/modules/shared/store/filters.context.ts","./src/app/modules/shared/services/filters/filter-coordinator-service.ts","./src/app/modules/shared/components/filters/common-filters/filter-base.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-date/enums/date-filter-mode.enum.ts","./src/app/modules/shared/components/filters/common-filters/filter-date/enums/date-filter-period.enum.ts","./src/app/modules/shared/components/filters/filter-host/filter-host.component.html","./src/app/modules/shared/components/filters/filter-host/filter-host.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-date/filter-date.component.html","./src/app/modules/shared/components/filters/common-filters/filter-date/filter-date.component.ts","./src/app/modules/shared/utilities/dom-helper.ts","./src/app/modules/shared/components/filters/common-filters/filter-entity/filter-entity.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-entity/filter-entity.component.html","./src/app/modules/shared/components/filters/common-filters/filter-enum/filter-enum.component.html","./src/app/modules/shared/components/filters/common-filters/filter-enum/filter-enum.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-list/filter-list.component.html","./src/app/modules/shared/components/filters/common-filters/filter-list/filter-list.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-numeric-range/filter-numeric-range.component.html","./src/app/modules/shared/components/filters/common-filters/filter-numeric-range/filter-numeric-range.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-text-base.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-text/filter-text.component.html","./src/app/modules/shared/components/filters/common-filters/filter-text/filter-text.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-tree-view/enums/tree-view-filter-option-types.enum.ts","./src/app/modules/shared/components/filters/common-filters/filter-tree-view/filter-tree-view.model.ts","./src/app/modules/shared/components/filters/common-filters/filter-tree-view/filter-tree-view.component.html","./src/app/modules/shared/components/filters/common-filters/filter-tree-view/filter-tree-view.component.ts","./src/app/modules/shared/directives/click-action-on-space-enter.directive.ts","./src/app/modules/shared/components/filters/common-filters/hideable-filters-container/hideable-filters-container.component.html","./src/app/modules/shared/components/filters/common-filters/hideable-filters-container/hideable-filters-container.component.ts","./src/app/modules/shared/tokens/index.ts","./src/app/modules/shared/components/plugins/plugin-host.component.ts","./src/app/modules/shared/components/filters/filters.component.html","./src/app/modules/shared/components/filters/filters.component.ts","./src/app/modules/shared/components/generic-slider/generic-slider.component.html","./src/app/modules/shared/components/generic-slider/generic-slider.component.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/LogonResult.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Parameters/LogonInfo.ts","./src/app/modules/shared/interfaces/modules/public/module-public.interface.ts","./src/app/modules/shared/services/module/module.service.ts","./src/app/security-center/services/authentication/models/authentication-error.ts","./src/app/security-center/services/authentication/auth.service.ts","./src/app/modules/shared/components/tracked/tracked-gen-modal.component.ts","./src/app/modules/shared/components/tracked/connection-aware-modal.component.ts","./src/app/modules/shared/components/image-viewer-modal/image-viewer-modal.component.html","./src/app/modules/shared/components/image-viewer-modal/image-viewer-modal.component.ts","./src/app/modules/shared/services/search/search.service.ts","./src/app/modules/shared/enumerations/shared-commands.ts","./src/app/modules/shared/directives/appAutoFocus.directive.ts","./src/app/modules/shared/directives/appDebounce.directive.ts","./src/app/modules/shared/directives/stopKeydownPropagation.directive.ts","./src/app/modules/shared/components/main-search/main-search.component.ts","./src/app/modules/shared/components/main-search/main-search.component.html","./src/app/modules/shared/components/menu-item/menu-item.component.html","./src/app/modules/shared/components/menu-item/menu-item.component.ts","./src/app/modules/shared/components/plugins/multi-plugin-host/multi-plugin-host.component.html","./src/app/modules/shared/components/plugins/multi-plugin-host/multi-plugin-host.component.ts","./src/app/modules/shared/components/plugins/navigation-plugin-host/navigation-plugin-host.component.html","./src/app/modules/shared/components/plugins/navigation-plugin-host/navigation-plugin-host.component.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/SystemConfigurationManager.ts","./src/app/modules/shared/directives/focus-modal-when-open.directive.ts","./src/app/modules/shared/components/entity-browser/modal-entities-selector/modal-entities-selector.component.ts","./src/app/modules/shared/components/entity-browser/modal-entities-selector/modal-entities-selector.component.html","./src/app/modules/shared/components/share-entity-modal/share-entity-modal.component.html","./src/app/modules/shared/components/share-entity-modal/share-entity-modal.component.ts","./src/app/modules/shared/enumerations/option-types.ts","./src/app/modules/shared/enumerations/gen-alerts.ts","./src/app/modules/shared/services/user-settings/user-settings.state.ts","./src/app/modules/shared/services/user-settings/settings.ts","./src/app/modules/shared/services/user-settings/user-settings.service.ts","./src/app/modules/shared/services/language/language.service.ts","./src/app/modules/shared/services/time/time.service.ts","./src/app/modules/general/api/api.ts","./src/app/modules/shared/services/version/version.service.ts","./src/app/modules/shared/services/analytics/telemetryInitializers.ts","./src/app/modules/shared/services/analytics/analytics.service.ts","./src/app/modules/shared/controllers/content/content.controller.data.ts","./src/app/modules/shared/controllers/content/content.controller.ts","./src/app/modules/shared/services/content/content-provider.service.ts","./src/app/modules/shared/services/side-context-data/side-context-data.state.ts","./src/app/modules/shared/services/side-context-data/side-context-data.service.ts","./src/app/modules/shared/enumerations/shared-content-fields.ts","./src/app/modules/shared/services/navigation/navigation.service.ts","./src/app/modules/shared/services/content-overlay/content-overlay.service.ts","./src/app/modules/shared/components/plugins/plugins-stack.ts","./src/app/modules/shared/components/side-pane/sidepane-header/sidepane-header.component.ts","./src/app/modules/shared/components/side-pane/sidepane-header/sidepane-header.component.html","./src/app/modules/shared/directives/ng-let.directive.ts","./src/app/modules/shared/components/side-pane/side-pane.component.html","./src/app/modules/shared/components/side-pane/side-pane.component.ts","./src/app/modules/video/utilities/renderinghelper.ts","../genetec-webapp-marmot/src/Marmot/utils/TimeSpan.ts","../genetec-webapp-marmot/src/Marmot/utils/Utils.ts","../genetec-webapp-marmot/src/Marmot/utils/logger.ts","../genetec-webapp-marmot/src/Marmot/utils/liteEvents.ts","../genetec-webapp-marmot/src/Marmot/services/Token.ts","../genetec-webapp-marmot/src/Marmot/utils/Base64Decoder.ts","../genetec-webapp-marmot/src/Marmot/utils/PromiseCompletionSource.ts","../genetec-webapp-marmot/src/Marmot/utils/CancellationToken.ts","../genetec-webapp-marmot/src/Marmot/services/TokenRenewer.ts","../genetec-webapp-marmot/src/Marmot/services/TokenRetriever.ts","../genetec-webapp-marmot/src/Marmot/players/PlaySpeed.ts","../genetec-webapp-marmot/src/Marmot/services/UnregisteredHub.ts","../genetec-webapp-marmot/src/Marmot/services/eventHubDispatcher.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/AutoReconnectSocket.ts","../genetec-webapp-marmot/src/Marmot/utils/Deserializer.ts","../genetec-webapp-marmot/src/Marmot/utils/Serializer.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/WebSocketMessageHeader.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/CreateStream.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/DeleteStream.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/Ptz.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/UpdateStream.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/ErrorResponse.ts","../genetec-webapp-marmot/src/Marmot/utils/VideoWatermarkingConfig.ts","../genetec-webapp-marmot/src/Marmot/utils/Resolution.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/DefaultStreamUsage.ts","../genetec-webapp-marmot/src/Marmot/utils/Coords.ts","../genetec-webapp-marmot/src/Marmot/utils/PolarVec2.ts","../genetec-webapp-marmot/src/Marmot/utils/Degree.ts","../genetec-webapp-marmot/src/Marmot/utils/Radian.ts","../genetec-webapp-marmot/src/Marmot/utils/Vec2.ts","../genetec-webapp-marmot/src/Marmot/utils/NormalizedCoords.ts","../genetec-webapp-marmot/src/Marmot/dewarper/CameraPosition.ts","../genetec-webapp-marmot/src/Marmot/utils/Vec3.ts","../genetec-webapp-marmot/src/Marmot/utils/PolarVec3.ts","../genetec-webapp-marmot/src/Marmot/dewarper/Projection.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperSourceImageParameters.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/CreateStreamResponse.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/SuccessResponse.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/Api/UpdateStreamResponse.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/MessageParser.ts","../genetec-webapp-marmot/src/Marmot/services/InFlightQueries.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/WebSocketBuilder.ts","../genetec-webapp-marmot/src/Marmot/services/eventHub.ts","../genetec-webapp-marmot/src/Marmot/enums.ts","../genetec-webapp-marmot/src/Marmot/services/WebSocketTransportV2.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/SessionState.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/DesiredState.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/SupportedVideoFormats.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/UpdateStreamRequestBuilder.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/StatefulSession.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/SessionParameters.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/WsSessionV2.ts","../genetec-webapp-marmot/src/Marmot/services/mediaGatewayService.ts","../genetec-webapp-marmot/src/Marmot/gwp.ts","../genetec-webapp-marmot/src/Marmot/players/TileSizeProvider.ts","../genetec-webapp-marmot/src/Marmot/players/htmlElements.ts","../genetec-webapp-marmot/src/Marmot/events.ts","../genetec-webapp-marmot/src/Marmot/players/debugOverlay.ts","../genetec-webapp-marmot/src/Marmot/utils/BitRateComputer.ts","../genetec-webapp-marmot/src/Marmot/utils/RingBuffer.ts","../genetec-webapp-marmot/src/Marmot/utils/FrameRateComputer.ts","../genetec-webapp-marmot/src/Marmot/utils/StatisticProvider.ts","../genetec-webapp-marmot/src/Marmot/utils/TimeResolver.ts","../genetec-webapp-marmot/src/Marmot/eventManager.ts","../genetec-webapp-marmot/src/Marmot/players/mse/MseRenderer.ts","../genetec-webapp-marmot/src/Marmot/utils/PositionFinder.ts","../genetec-webapp-marmot/src/Marmot/utils/VideoWatermarkingOverlay.ts","../genetec-webapp-marmot/src/Marmot/utils/VideoWatermarkingRenderer.ts","../genetec-webapp-marmot/src/Marmot/utils/FitResolution.ts","../genetec-webapp-marmot/src/Marmot/utils/Guard.ts","../genetec-webapp-marmot/src/Marmot/utils/TopLeftCoords.ts","../genetec-webapp-marmot/src/Marmot/players/ZoomConfiguration.ts","../genetec-webapp-marmot/src/Marmot/players/jpeg/JpegRenderer.ts","../genetec-webapp-marmot/src/Marmot/players/mse/MseSourceBuffer.ts","../genetec-webapp-marmot/src/Marmot/utils/Config.ts","../genetec-webapp-marmot/src/Marmot/players/mse/MseMediaSource.ts","../genetec-webapp-marmot/src/Marmot/players/audio/SequenceInfo.ts","../genetec-webapp-marmot/src/Marmot/players/mse/BufferQueue.ts","../genetec-webapp-marmot/src/Marmot/utils/Timer.ts","../genetec-webapp-marmot/src/Marmot/players/mse/MseWatermarkOverlay.ts","../genetec-webapp-marmot/src/Marmot/players/mse/MseHtmlVideoElement.ts","../genetec-webapp-marmot/src/Marmot/players/audio/MseAudioElementWrapper.ts","../genetec-webapp-marmot/src/Marmot/ptzControl.ts","../genetec-webapp-marmot/src/Marmot/players/WebSocket/PtzRequestBuilder.ts","../genetec-webapp-marmot/src/Marmot/players/StreamUsageSelector.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/Uniform.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/Attribute.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/Buffer.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/GLUtils.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/Texture.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/CompiledProgram.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/ProgramLinker.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/Program.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/ShaderBuilder.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/VertexShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperVertexShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/WebGL2/FragmentShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperFragmentShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedPointSourceFinder.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpingPlane.ts","../genetec-webapp-marmot/src/Marmot/dewarper/ImageGeometry.ts","../genetec-webapp-marmot/src/Marmot/dewarper/ZoomFactor.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperController.ts","../genetec-webapp-marmot/src/Marmot/dewarper/ControllerUniforms.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperProgram.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperInterfaces.ts","../genetec-webapp-marmot/src/Marmot/utils/Color.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedArea/DewarpedAreaFragmentShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedArea/DewarpedAreaVertexShader.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedArea/DewarpedAreaProgram.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedArea/DewarpedArea.ts","../genetec-webapp-marmot/src/Marmot/players/VideoFrameSource.ts","../genetec-webapp-marmot/src/Marmot/dewarper/Preview/DewarperPreview.ts","../genetec-webapp-marmot/src/Marmot/utils/TopLeftPixelCoords.ts","../genetec-webapp-marmot/src/Marmot/utils/SafeResizeObserver.ts","../genetec-webapp-marmot/src/Marmot/utils/StyleObserver.ts","../genetec-webapp-marmot/src/Marmot/dewarper/CanvasWrapper.ts","../genetec-webapp-marmot/src/Marmot/utils/MouseWheelObserver.ts","../genetec-webapp-marmot/src/Marmot/dewarper/Preview/PreviewCanvas.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperCanvas.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpedArea/DewarpedAreaCanvas.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarpingParameters.ts","../genetec-webapp-marmot/src/Marmot/dewarper/Dewarper.ts","../genetec-webapp-marmot/src/Marmot/utils/FeatureFlag.ts","../genetec-webapp-marmot/src/Marmot/digitalZoomControl/DigitalZoomControl.ts","../genetec-webapp-marmot/src/Marmot/players/Tile.ts","../genetec-webapp-marmot/src/Marmot/utils/Rectangle.ts","../genetec-webapp-marmot/src/Marmot/digitalZoomControl/preview/DigitalZoomPreview.ts","../genetec-webapp-marmot/src/Marmot/digitalZoomControl/preview/PreviewCanvas.ts","../genetec-webapp-marmot/src/Marmot/digitalZoomControl/CanvasWrapper.ts","../genetec-webapp-marmot/src/Marmot/utils/RenderingCanvas.ts","../genetec-webapp-marmot/src/Marmot/utils/DragObserver.ts","../genetec-webapp-marmot/src/Marmot/dewarper/DewarperVwoOverlay.ts","../genetec-webapp-marmot/src/Marmot/players/webPlayer.ts","../genetec-webapp-marmot/src/Marmot/players/camera.ts","../genetec-webapp-marmot/src/Marmot/TimeLineRange.ts","../genetec-webapp-marmot/src/Marmot/timelineProvider.ts","../genetec-webapp-marmot/src/Marmot/Players.ts","../genetec-webapp-marmot/src/Marmot/PublicWebPlayer.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/iterable-extensions.ts","./src/app/modules/shared/controllers/timeline/timeline.controller.ts","./src/app/modules/video/services/timeline.service.ts","../genetec-webapp-marmot/src/Timeline/timelinePart.ts","../genetec-webapp-marmot/src/Timeline/timelinePartEvent.ts","./src/app/modules/shared/components/timeline/tooltipItem.ts","./src/app/modules/shared/directives/mousecapture/mousecapture.directive.ts","./src/app/modules/shared/directives/resized/resize.directive.ts","./src/app/modules/shared/components/timeline/timeline.component.html","./src/app/modules/shared/components/timeline/timeline.component.ts","./src/app/modules/shared/components/tree-items/tree-items.component.html","./src/app/modules/shared/components/tree-items/tree-items.component.ts","./src/app/modules/shared/components/widgets/entity-commands-widget-host/entity-commands-widget-host.component.html","./src/app/modules/shared/components/widgets/entity-commands-widget-host/entity-commands-widget-host.component.ts","./src/app/modules/shared/controllers/events/monitored-entity-event.ts","./src/app/modules/shared/operators/finalize-with-reason.ts","./src/app/modules/shared/subjects/finalize-callback-subject.ts","./src/app/modules/shared/services/events/event-type-data.ts","./src/app/modules/shared/utilities/event.helper.ts","./src/app/utilities/touch-event-handler.ts","./src/app/utilities/error-helpers.ts","./src/app/modules/shared/services/events/events-settings.service.ts","./src/app/modules/shared/services/events/events.service.ts","./src/app/modules/shared/services/events/observers/entity-event-observer.ts","./src/app/modules/shared/services/time/event-time.service.ts","./src/app/modules/shared/components/events/event-item/event-item.component.html","./src/app/modules/shared/components/events/event-item/event-item.component.ts","./src/app/modules/shared/components/widgets/latest-events-widget/latest-events-widget.component.html","./src/app/modules/shared/components/widgets/latest-events-widget/latest-events-widget.component.ts","./src/app/modules/shared/directives/captureEvents.directive.ts","./src/app/modules/shared/directives/debounceClick.directive.ts","./src/app/modules/shared/directives/hover-class/hover-class.directive.ts","./src/app/modules/shared/directives/menu-data-source/menu-data-source.directive.ts","./src/app/modules/shared/directives/resize-element/resize-element.directive.ts","./src/app/modules/shared/directives/resized/resize-width.directive.ts","./src/app/modules/shared/directives/stopClickPropagation.directive.ts","./src/app/modules/shared/services/fullscreen/fullscreen.service.ts","./src/app/modules/shared/services/tooltip/tooltip.service.ts","./src/app/modules/shared/directives/tooltip/tooltip.directive.ts","./src/app/modules/shared/directives/tree-data-source/tree-data-source.directive.ts","./src/app/modules/shared/pipes/argb.pipe.ts","./src/app/modules/shared/pipes/filter.pipe.ts","./src/app/modules/shared/pipes/safe.pipe.ts","./src/app/modules/shared/pipes/sort-by.pipe.ts","./src/app/modules/shared/pipes/string-format.pipe.ts","./src/app/modules/shared/pipes/string-to-icon.pipe.ts","./src/app/modules/shared/services/audio/audio.service.ts","./src/app/modules/shared/components/table/enumerations/known-cell-renderer-types.ts","./src/app/modules/shared/components/table/enumerations/table-cell-type.ts","./src/app/modules/shared/components/table/table.component.html","./src/app/modules/shared/components/table/table.component.ts","./src/app/modules/shared/services/events/feature-flags.ts","./src/app/modules/shared/services/watchlist/user-watchlist.service.ts","./src/app/modules/shared/enumerations/event-monitoring-content-types.ts","./src/app/modules/shared/enumerations/analytics-event-monitoring-context.ts","./src/app/modules/shared/enumerations/analytics-names.ts","./src/app/modules/shared/services/analytics/event-monitoring-logger.service.ts","./src/app/modules/shared/components/watchlist/editor/watchlist-editor/watchlist-editor.component.html","./src/app/modules/shared/components/watchlist/editor/watchlist-editor/watchlist-editor.component.ts","./src/app/modules/shared/pipes/group-by.pipe.ts","./src/app/modules/shared/services/watchlist/user-watchlist-request.service.ts","./src/app/modules/general/services/Events/cached-monitored-entity-event.ts","./src/app/modules/general/services/Events/events-monitoring.service.ts","./src/app/modules/shared/components/events/event-list/event-list.component.html","./src/app/modules/shared/components/events/event-list/event-list.component.ts","./src/app/modules/shared/components/watchlist/watchlist.component.html","./src/app/modules/shared/components/watchlist/watchlist.component.ts","./src/app/modules/shared/directives/gelato-invalidity-compat/gelato-invalidity-compat.directive.ts","./src/app/modules/shared/services/analytics/feature-flags.ts","./src/app/modules/shared/directives/form-control-error.directive.ts","./src/app/modules/shared/utilities/accessStatusTranslate.ts","./src/app/modules/shared/pipes/access-status-to-translated-string/access-status-to-translated-string.pipe.ts","./src/app/modules/shared/components/form-gen-combobox/form-gen-combobox.component.ts","./src/app/modules/shared/components/form-gen-combobox/form-gen-combobox.component.html","./src/app/modules/general/feature-flags.ts","./src/app/modules/shared/controllers/threat-levels/threat-levels-changed-event.ts","./src/app/modules/shared/services/threat-level/threat-level.service.ts","./src/app/modules/shared/enumerations/analytics-threat-levels-context.ts","./src/app/modules/shared/pipes/bold-string.pipe.ts","./src/app/modules/shared/components/threat-levels-modal/threat-level-confirmation-modal/threat-level-confirmation-modal.component.html","./src/app/modules/shared/components/threat-levels-modal/threat-level-confirmation-modal/threat-level-confirmation-modal.component.ts","./src/app/modules/shared/components/threat-levels-modal/threat-level-modal.component.html","./src/app/modules/shared/components/threat-levels-modal/threat-level-modal.component.ts","../genetec-webapp-client/src/KnownLicenses.ts","./src/app/modules/shared/components/threat-levels-tray/threat-levels-tray.component.html","./src/app/modules/shared/components/threat-levels-tray/threat-levels-tray.component.ts","./src/app/modules/shared/components/entity-state-item/entity-state-item.component.html","./src/app/modules/shared/components/entity-state-item/entity-state-item.component.ts","./src/app/modules/shared/pipes/luminance.pipe.ts","./src/app/modules/shared/pipes/time.pipe.ts","./src/app/modules/shared/portal-outlet/portal-outlet.component.html","./src/app/modules/shared/portal-outlet/portal-outlet.component.ts","./src/app/modules/shared/components/tooltip/app-tooltip.component.ts","./src/app/modules/shared/components/tooltip/app-tooltip.component.html","./src/app/modules/shared/directives/appDisableDefaultContextMenu.directive.ts","./src/app/modules/shared/services/web-sockets/web-socket.service.ts","./src/app/modules/shared/services/web-sockets/web-socket-serializer.service.ts","./src/app/modules/shared/services/web-sockets/web-socket-json-serializer.service.ts","./src/app/modules/shared/services/web-sockets/sc-client-web-socket.service.ts","./src/app/modules/shared/components/thumbnail/thumbnail.component.html","./src/app/modules/shared/components/thumbnail/thumbnail.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-search/filter-search.component.ts","./src/app/modules/shared/components/filters/common-filters/filter-search/filter-search.component.html","./src/app/modules/shared/directives/scroll-on-expand.directive.ts","./src/app/modules/shared/shared.module.ts","./src/app/modules/maps/components/map-controls/map-controls.component.html","./src/app/modules/maps/components/map-controls/map-controls.component.ts","./src/app/modules/maps/components/map-popup/map-popup.component.html","./src/app/modules/maps/components/map-popup/map-popup.component.ts","./src/app/modules/maps/services/maps-bottom-context-data/maps-bottom-context-data.state.ts","./src/app/modules/maps/services/maps-bottom-context-data/maps-bottom-context-data.service.ts","./src/app/modules/maps/components/maps-bottom-pane/maps-bottom-pane.component.ts","./src/app/modules/maps/components/maps-bottom-pane/maps-bottom-pane.component.html","./src/app/modules/general/components/options/components/insufficient-privileges/insufficient-privileges.component.ts","./src/app/modules/general/components/options/maps-options/maps-options.component.html","./src/app/modules/general/components/options/maps-options/maps-options.component.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/EntityTypeIds.ts","../../RestClient/genetec-securitycenter-restclient/src/Helpers/StreamDataView.ts","../genetec-webapp-client/src/Model/ListFieldObjectSerializer.ts","./src/app/modules/maps/controllers/map.controller.data.ts","../genetec-webapp-client/src/PushResponseReceiver.ts","./src/app/modules/maps/controllers/map.controller.ts","./src/app/modules/maps/data/maps-data.ts","./src/app/modules/maps/data/MapObjectEventBase.ts","./src/app/modules/maps/data/MapObjectAddOrUpdateEvent.ts","./src/app/modules/maps/data/MapObjectRemoveEvent.ts","./src/app/modules/maps/data/MapLayersRefreshEvent.ts","./src/app/modules/maps/data/MapObjectPositionUpdateEvent.ts","./src/app/modules/maps/services/map/map-event-provider/map-event-provider.ts","./src/app/modules/maps/services/map/map-provider/map-provider-types.ts","./src/app/modules/maps/services/map/map-provider/google-map-provider-loader.ts","./src/app/modules/maps/enumerations/map-commands.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/RoleGuids.ts","./src/app/modules/maps/services/map/map-provider/image-map-provider-loader.ts","./src/app/modules/maps/services/map/map-provider/fallback-georeferenced-map-provider-loader.ts","./src/app/modules/maps/services/map/map-provider/map-provider-loader.ts","./src/app/modules/maps/services/map/map-service.ts","./src/app/modules/maps/services/map/map.state.ts","./src/app/modules/maps/services/map/state-map-service.ts","./src/app/modules/maps/services/maps-side-context-data/maps-side-context-data.state.ts","./src/app/modules/maps/services/maps-side-context-data/maps-side-context-data.service.ts","./src/app/modules/maps/components/maps-side-pane/maps-side-pane.component.ts","./src/app/modules/maps/components/maps-side-pane/maps-side-pane.component.html","./src/app/modules/maps/services/map-popup.service.ts","./src/app/modules/shared/services/content/KnownContentContext.ts","../genetec-webapp-client/src/KnownFeatures.ts","./src/app/modules/feature-flags/feature-flags.state.ts","./src/app/modules/maps/components/maps-task/map-task-entry-params.ts","./src/app/modules/maps/components/maps-task/maps-search-input-item.ts","./src/app/modules/maps/components/maps-task/maps-task.component.html","./src/app/modules/maps/components/maps-task/maps-task.component.ts","./src/app/modules/maps/enumerations/maps-content-types.ts","./src/app/modules/maps/components/maps-widget/maps-widget.component.ts","./src/app/modules/maps/components/maps-widget/maps-widget.component.html","./src/app/modules/shared/services/commands/entity-command-context.ts","./src/app/modules/shared/services/commands/command-provider-base.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IEntityExtensions.ts","./src/app/modules/shared/services/commands/entity-command-provider-base.ts","./src/app/modules/maps/services/map/map-commands-provider.ts","./src/app/modules/maps/maps.module.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ActionTypes.ts","./src/app/modules/shared/services/actions/actions.service.ts","./src/app/modules/video/api/video-export-progress.event.ts","./src/app/modules/video/api/video-export-completed.event.ts","./src/app/modules/video/api/api.ts","./src/app/modules/video/services/video-export.service.ts","./src/app/modules/video/components/export-video-tray/export-video-tray.component.html","./src/app/modules/video/components/export-video-tray/export-video-tray.component.ts","./src/app/modules/general/components/show-message/show-message.component.ts","./src/app/modules/general/components/show-message/show-message.component.html","./src/app/modules/tiles/models/tile-boundary.ts","./src/app/modules/tiles/models/tile-item.ts","./src/app/modules/tiles/models/tile-pattern-definition.ts","./src/app/modules/tiles/models/tile-pattern-item.ts","./src/app/modules/tiles/state/tile-canvas.state.ts","./src/app/modules/tiles/state/tile-canvas-state.service.ts","./src/app/modules/tiles/components/tiles-task/services/tiles-task-event.service.ts","./src/app/modules/video/components/ptz-controls/services/ptz-popup.service.ts","./src/app/modules/tiles/services/carousel.service.ts","./src/app/modules/tiles/services/tile.service.ts","./src/app/modules/access-control/enumerations/access-control-content-types.ts","./src/app/modules/general/enumerations/zone-content-types.ts","./src/app/modules/video/enumerations/video-content-types.ts","./src/app/modules/general/components/options/tiles-options/tiles-options.component.html","./src/app/modules/general/components/options/tiles-options/tiles-options.component.ts","./src/app/modules/tiles/components/tile-state-header/tile-state-header.component.html","./src/app/modules/tiles/components/tile-state-header/tile-state-header.component.ts","./src/app/modules/tiles/components/tile-state-header/services/tile-state-header.service.ts","./src/app/modules/tiles/components/tiles/tile.component.html","./src/app/modules/tiles/components/tiles/tile.component.ts","./src/app/modules/tiles/components/tile-canvas/tile-canvas.component.html","./src/app/modules/tiles/components/tile-canvas/tile-canvas.component.ts","./src/app/modules/tiles/components/tiles-task/tiles-task.component.html","./src/app/modules/tiles/components/tiles-task/tiles-task.component.ts","./src/app/modules/general/services/mailbox.service.ts","./src/app/modules/general/actions/display-entities-actionhandler.ts","./src/app/modules/general/actions/play-sound-actionhandler.ts","./src/app/modules/general/actions/send-message-actionhandler.ts","./src/app/modules/general/components/about/about.component.html","./src/app/modules/general/components/about/about.component.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/UserManager.ts","./src/app/modules/general/components/actions-tray/actions-tray.component.html","./src/app/modules/general/components/actions-tray/actions-tray.component.ts","./src/app/modules/shared/models/gen-input.model.ts","./src/app/components/login/user-login.model.ts","./src/app/modules/shared/components/tracked/non-restricted-connection-aware-modal.component.ts","./src/app/modules/general/components/change-password/change-password.component.html","./src/app/modules/general/components/change-password/change-password.component.ts","./src/app/modules/general/components/change-password/notification/change-password-notification.component.html","./src/app/modules/general/components/change-password/notification/change-password-notification.component.ts","./src/app/modules/shared/services/context-menu/context-menu-item-switcher.service.ts","./src/app/modules/general/components/entity-state-overlay/entity-state-overlay.component.html","./src/app/modules/general/components/entity-state-overlay/entity-state-overlay.component.ts","./src/app/modules/shared/enumerations/filter-types.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-base.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-date.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-entity.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-enum.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-numeric-range.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-text.component.ts","./src/app/modules/general/components/filter-plugins/filter-plugin-tree-view.component.ts","./src/app/modules/general/components/mailbox-tray/mailbox-tray.component.html","./src/app/modules/general/components/mailbox-tray/mailbox-tray.component.ts","./src/app/modules/general/components/mobile-user/mobile-user-actions-widget/mobile-user-actions-widget.component.ts","./src/app/modules/general/components/mobile-user/mobile-user-actions-widget/mobile-user-actions-widget.component.html","../../RestClient/genetec-securitycenter-restclient/src/Client/Reports/ReportResult.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Reports/GeocodeReportResult.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Reports/GeocodeReport.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Reports/BaseReport.ts","./src/app/modules/general/components/mobile-user/mobile-user-widget/mobile-user-widget.component.html","./src/app/modules/general/components/mobile-user/mobile-user-widget/mobile-user-widget.component.ts","./src/app/modules/general/components/options/events-option/events-option-tree/events-option-tree.component.html","./src/app/modules/general/components/options/events-option/events-option-tree/events-option-tree.component.ts","./src/app/modules/general/components/options/events-option/services/events-option-tree.service.ts","./src/app/modules/general/components/options/events-option/events-option.component.html","./src/app/modules/general/components/options/events-option/events-option.component.ts","./src/app/modules/general/services/gamepad-event-listener.service.ts","./src/app/modules/general/services/joystick.service.ts","./src/app/modules/general/components/options/joystick-options/joystick-selection/joystick-selection.component.html","./src/app/modules/general/components/options/joystick-options/joystick-selection/joystick-selection.component.ts","./src/app/modules/general/components/options/joystick-options/joystick-options.component.html","./src/app/modules/general/components/options/joystick-options/joystick-options.component.ts","./src/app/modules/general/components/options/language-time-options/language-time-options.component.html","./src/app/modules/general/components/options/language-time-options/language-time-options.component.ts","./src/app/modules/general/components/options/video-options/video-options.component.html","./src/app/modules/general/components/options/video-options/video-options.component.ts","./src/app/modules/general/services/send-feedback.service.ts","./src/app/modules/shared/forms/deepUpdateValueAndValidity.ts","./src/app/modules/general/components/send-feedback/success-component/send-feedback-success.component.ts","./src/app/modules/general/components/send-feedback/success-component/send-feedback-success.component.html","./src/app/modules/general/components/send-feedback/send-feedback.component.ts","./src/app/modules/general/components/send-feedback/send-feedback.component.html","./src/app/modules/general/components/profile/profile.component.html","./src/app/modules/general/components/profile/profile.component.ts","./src/app/modules/general/components/properties-widget/properties-widget.component.html","./src/app/modules/general/components/properties-widget/properties-widget.component.ts","./src/app/modules/general/components/send-message/send-message.component.ts","./src/app/modules/general/components/send-message/send-message.component.html","./src/app/modules/shared/operators/filter-field-change.ts","./src/app/modules/shared/operators/not-null-or-undefined.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ZoneArmingState.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ZoneState.ts","./src/app/modules/general/components/zone/zone-widget-base.component.ts","./src/app/modules/general/components/zone/tile/zone-entity-state/zone-entity-state.component.html","./src/app/modules/general/components/zone/tile/zone-entity-state/zone-entity-state.component.ts","./src/app/modules/general/components/zone/zone-action/zone-action.component.ts","./src/app/modules/general/components/zone/zone-action/zone-action.component.html","./src/app/modules/general/components/zone/zone-event-widget/zone-event-widget.component.ts","./src/app/modules/general/components/zone/zone-event-widget/zone-event-widget.component.html","./src/app/modules/general/components/zone/zone-events-widget/zone-events-widget.component.ts","./src/app/modules/general/components/zone/zone-events-widget/zone-events-widget.component.html","./src/app/components/options/options.component.html","./src/app/components/options/options.component.ts","./src/app/modules/general/services/general-command-provider.ts","./src/app/modules/general/enumerations/general-commands.ts","./src/app/modules/general/services/zone-command-provider.ts","./src/app/modules/general/pipes/limit-to.pipe.ts","./src/app/modules/general/components/watchlist-tray/watchlist-tray.component.ts","./src/app/modules/general/components/watchlist-tray/watchlist-tray.component.html","./src/app/modules/shared/enumerations/side-pane-custom-headers.ts","./src/app/modules/general/components/sidepane/watchlist-sidepane-header/watchlist-sidepane-header.component.html","./src/app/modules/general/components/sidepane/watchlist-sidepane-header/watchlist-sidepane-header.component.ts","./src/app/modules/general/components/zone/tile/zone-state/zone-state.component.ts","./src/app/modules/general/components/zone/tile/zone-state/zone-state.component.html","./src/app/modules/general/components/filter-plugins/filter-plugin-search.component.ts","./src/app/modules/general/general.module.ts","./src/app/modules/access-control/api/api.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/ExpirationMode.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/PartitionManager.ts","./src/app/modules/shared/privilege/privilege.service.ts","./src/app/modules/access-control/interfaces/CardholderPrivileges.ts","./src/app/modules/access-control/services/cardholder-edit-service.ts","./src/app/modules/access-control/cardholder-edit-context.state.ts","./src/app/modules/access-control/components/access-control-task/access-control-task.component.ts","./src/app/modules/access-control/components/access-control-task/access-control-task.component.html","./src/app/modules/access-control/components/cardholder/cardholder-widget-base.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-state-widget-base.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-action-widget/cardholder-action-widget.component.html","./src/app/modules/access-control/components/cardholder/cardholder-action-widget/cardholder-action-widget.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-card/cardholder-card.component.html","./src/app/modules/access-control/components/cardholder/cardholder-card/cardholder-card.component.ts","./src/app/modules/access-control/enumerations/access-control-commands.ts","./src/app/modules/access-control/enumerations/activation-mode.ts","./src/app/modules/access-control/enumerations/expiration-mode.ts","./src/app/modules/access-control/enumerations/bypass-antipassback-rules.ts","./src/app/modules/shared/forms/form-helpers.ts","./src/app/modules/shared/forms/LabeledFormControl.ts","./src/app/utilities/date-validator.ts","./src/app/modules/access-control/components/cardholder/cardholder-helper.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/validators/index.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-edit-form-group.ts","./src/app/modules/access-control/components/cardholder/cardholder-delete-modal/cardholder-delete-modal.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-delete-modal/cardholder-delete-modal.component.html","./src/app/modules/access-control/enumerations/unsaved-changes-modal-actions.ts","./src/app/modules/access-control/components/cardholder/unsaved-changes-modal/unsaved-changes-modal.component.ts","./src/app/modules/access-control/components/cardholder/unsaved-changes-modal/unsaved-changes-modal.component.html","./src/app/modules/shared/services/file-reader/file-reader.service.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-editable-picture/cardholder-editable-picture.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-editable-picture/cardholder-editable-picture.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-identity-form/cardholder-identity-form.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-identity-form/cardholder-identity-form.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-status-form/cardholder-status-form.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-status-form/cardholder-status-form.component.ts","./src/app/modules/access-control/entity-browser/enumerations/entity-browser-refresher-types.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-access-rights-sub-form/cardholder-relations-sub-form.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-access-rights-sub-form/cardholder-relations-sub-form.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-access-rights-form/cardholder-access-rights-form.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-access-rights-form/cardholder-access-rights-form.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-advanced-form/cardholder-advanced-form.component.html","./src/app/modules/access-control/components/cardholder/cardholder-edit-form/cardholder-advanced-form/cardholder-advanced-form.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-details-pane/cardholder-details-pane.component.html","./src/app/modules/access-control/components/cardholder/cardholder-details-pane/cardholder-details-pane.component.ts","./src/app/modules/shared/utilities/date.helper.ts","./src/app/modules/access-control/components/cardholder/cardholder-info-widget/cardholder-info-widget.component.html","./src/app/modules/access-control/components/cardholder/cardholder-info-widget/cardholder-info-widget.component.ts","./src/app/modules/access-control/enumerations/content-fields.ts","./src/app/modules/access-control/components/cardholder/cardholder-picture-widget/cardholder-picture-widget.component.html","./src/app/modules/access-control/components/cardholder/cardholder-picture-widget/cardholder-picture-widget.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-preview-widget/cardholder-preview-widget.component.html","./src/app/modules/access-control/components/cardholder/cardholder-preview-widget/cardholder-preview-widget.component.ts","./src/app/modules/shared/utilities/serialization.helper.ts","./src/app/modules/access-control/components/cardholder/cardholder-card-view/cardholder-card-view.component.html","./src/app/modules/access-control/components/cardholder/cardholder-card-view/cardholder-card-view.component.ts","./src/app/modules/access-control/components/cardholder/cardholder-sub-task/cardholder-sub-task.component.html","./src/app/modules/access-control/components/cardholder/cardholder-sub-task/cardholder-sub-task.component.ts","./src/app/modules/access-control/components/credential/credential-widget-base.component.ts","./src/app/modules/access-control/components/credential/credential-action-widget/credential-action-widget.component.ts","./src/app/modules/access-control/components/credential/credential-action-widget/credential-action-widget.component.html","./src/app/modules/access-control/components/credential/credential-info-widget/credential-info-widget.component.html","./src/app/modules/access-control/components/credential/credential-info-widget/credential-info-widget.component.ts","./src/app/modules/access-control/components/credential/credential-preview-widget/credential-preview-widget.component.html","./src/app/modules/access-control/components/credential/credential-preview-widget/credential-preview-widget.component.ts","./src/app/modules/access-control/components/door-compact-info/door-compact-info.component.ts","./src/app/modules/access-control/components/door-compact-info/door-compact-info.component.html","./src/app/modules/access-control/components/door/door-widget-base.component.ts","./src/app/modules/access-control/components/door/door-actions-widget/door-actions-widget.component.html","./src/app/modules/access-control/components/door/door-actions-widget/door-actions-widget.component.ts","./src/app/modules/access-control/components/door/door-events-widget/door-events-widget.component.ts","./src/app/modules/access-control/components/door/door-events-widget/door-events-widget.component.html","./src/app/modules/access-control/components/door/door-preview-widget/door-preview-widget.component.html","./src/app/modules/access-control/components/door/door-preview-widget/door-preview-widget.component.ts","./src/app/modules/access-control/components/door/override-schedule-modal/enum/temporary-override-schedule-options.enum.ts","./src/app/modules/access-control/components/door/override-schedule-modal/enum/override-schedule-options.enum.ts","./src/app/modules/access-control/components/door/override-schedule-modal/override-schedule-modal.component.html","./src/app/modules/access-control/components/door/override-schedule-modal/override-schedule-modal.component.ts","./src/app/modules/shared/enumerations/device-states.ts","./src/app/modules/access-control/components/door/shunt-reader-modal/shunt-reader-modal.component.html","./src/app/modules/access-control/components/door/shunt-reader-modal/shunt-reader-modal.component.ts","./src/app/modules/access-control/components/maps/door-event-widget/door-event-widget.component.html","./src/app/modules/access-control/components/maps/door-event-widget/door-event-widget.component.ts","./src/app/modules/access-control/components/reader/reader-actions-widget/reader-actions-widget.component.ts","./src/app/modules/access-control/components/reader/reader-actions-widget/reader-actions-widget.component.html","./src/app/modules/access-control/components/tile/door-entity-state/door-entity-state.component.html","./src/app/modules/access-control/components/tile/door-entity-state/door-entity-state.component.ts","./src/app/modules/access-control/components/tile/door-state/door-state.component.ts","./src/app/modules/access-control/components/tile/door-state/door-state.component.html","./src/app/modules/access-control/services/cardholder-command-provider.ts","./src/app/modules/access-control/services/credential-command-provider.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Interface/IDoorSideAccessPointEntity.ts","./src/app/modules/access-control/enumerations/access-control-content-fields.ts","./src/app/modules/access-control/services/door-command-provider.ts","./src/app/modules/access-control/services/reader-command-provider.ts","./src/app/modules/access-control/access-control.module.ts","./src/app/modules/alarms/enumerations/alarm-content-types.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/AlarmStates.ts","./src/app/modules/alarms/controllers/events/RefreshAlarmsEvent.ts","./src/app/modules/alarms/controllers/alarm-instance.ts","./src/app/modules/alarms/controllers/alarms.controller.ts","./src/app/modules/alarms/services/alarms.service.ts","./src/app/modules/alarms/components/alarms-tray/alarms-tray.component.html","./src/app/modules/alarms/components/alarms-tray/alarms-tray.component.ts","./src/app/modules/shared/services/context-menu/context-menu.factory.ts","./src/app/modules/alarms/components/alarms-context-widget/alarms-context-widget.component.html","./src/app/modules/alarms/components/alarms-context-widget/alarms-context-widget.component.ts","./src/app/modules/alarms/components/maps/alarm-event-compact-widget/alarm-event-compact-widget.component.ts","./src/app/modules/alarms/components/maps/alarm-event-compact-widget/alarm-event-compact-widget.component.html","./src/app/modules/alarms/components/maps/alarm-event-expand-widget/alarm-event-expand-widget.component.ts","./src/app/modules/alarms/components/maps/alarm-event-expand-widget/alarm-event-expand-widget.component.html","./src/app/modules/alarms/enumerations/alarm-content-fields.ts","./src/app/modules/alarms/components/alarm-instance-widget-base.component.ts","./src/app/modules/alarms/components/widgets/alarm-actions-widget/alarm-actions-widget.component.html","./src/app/modules/alarms/components/widgets/alarm-actions-widget/alarm-actions-widget.component.ts","./src/app/modules/alarms/components/widgets/alarm-instance-info-widget/alarm-instance-info-widget.component.ts","./src/app/modules/alarms/components/widgets/alarm-instance-info-widget/alarm-instance-info-widget.component.html","./src/app/modules/alarms/enumerations/alarm-commands.ts","./src/app/modules/alarms/services/alarm-command-provider.ts","./src/app/modules/alarms/alarms.module.ts","./src/app/modules/clearance/enumerations/option-types.ts","./src/app/modules/clearance/enumerations/clearance-features.ts","./src/app/modules/clearance/components/options/clearance-options.component.ts","./src/app/modules/clearance/components/options/clearance-options.component.html","./src/app/modules/clearance/api/api.ts","./src/app/modules/clearance/clearance.module.ts","./src/app/modules/correlation/api/api.ts","./src/app/modules/correlation/enumerations/correlation.features.ts","./src/app/modules/correlation/services/ingestion.service.ts","./src/app/modules/correlation/components/ingest-data-modal/data-ingestion-modal.component.html","./src/app/modules/correlation/components/ingest-data-modal/data-ingestion-modal.component.ts","./src/app/modules/correlation/enumerations/correlation-content-types.ts","./src/app/modules/correlation/components/datum/correlation-datum-map-widget/correlation-datum-map-widget.component.ts","./src/app/modules/correlation/components/datum/correlation-datum-map-widget/correlation-datum-map-widget.component.html","./src/app/modules/correlation/services/correlation.service.ts","./src/app/modules/correlation/feature-flags.ts","./src/app/modules/correlation/components/datum/datum-sidepane-widget/correlation-datum-sidepane-widget.component.html","./src/app/modules/correlation/components/datum/datum-sidepane-widget/correlation-datum-sidepane-widget.component.ts","./src/app/modules/correlation/components/parameters-modal/correlation-search-parameter.ts","./src/app/modules/correlation/components/general/one-or-many-combobox/one-or-many-combobox-combobox.component.html","./src/app/modules/correlation/components/general/one-or-many-combobox/one-or-many-combobox-combobox.component.ts","./src/app/modules/correlation/components/parameters-modal/correlation-parameters-modal.component.html","./src/app/modules/correlation/components/parameters-modal/correlation-parameters-modal.component.ts","./src/app/modules/correlation/components/filters/data-types/filter-data-types.model.ts","./src/app/modules/correlation/components/filters/data-types/filter-data-types.component.ts","./src/app/modules/correlation/components/filters/data-types/filter-data-types.component.html","./src/app/modules/correlation/enumerations/commands.ts","./src/app/modules/correlation/services/ingestion-command-provider.ts","./src/app/modules/correlation/components/datum/mobile-state-sidepane-widget/mobile-sidepane-state-widget.component.ts","./src/app/modules/correlation/components/datum/mobile-state-sidepane-widget/mobile-sidepane-state-widget.component.html","./src/app/modules/correlation/components/datum/mobile-details-sidepane-widget/mobile-details-sidepane-widget.component.html","./src/app/modules/correlation/components/datum/mobile-details-sidepane-widget/mobile-details-sidepane-widget.component.ts","./src/app/modules/correlation/enumerations/sort-order.ts","./src/app/modules/correlation/enumerations/view-mode.ts","./src/app/modules/correlation/enumerations/analytics-investigate-context.ts","./src/app/modules/correlation/components/investigate/services/investigate-side-context-data.state.ts","./src/app/modules/correlation/components/investigate/services/investigate-side-context-data.service.ts","./src/app/modules/correlation/components/investigate/services/investigate-data.state.ts","./src/app/modules/correlation/components/investigate/services/investigate-data.context.ts","./src/app/modules/correlation/components/investigate/services/row-actions.service.ts","./src/app/modules/correlation/components/investigate/results/investigate-results-container.component.html","./src/app/modules/correlation/components/investigate/results/investigate-results-container.component.ts","./src/app/modules/correlation/enumerations/common-columns.ts","./src/app/modules/shared/utilities/sort.helper.ts","./src/app/modules/correlation/components/general/select-investigate-columns/select-investigate-columns.component.html","./src/app/modules/correlation/components/general/select-investigate-columns/select-investigate-columns.component.ts","./src/app/modules/correlation/components/investigate/filters/investigate-filter-base.component.ts","./src/app/modules/correlation/components/general/image-name-toggle-button/image-name-toggle-button.component.html","./src/app/modules/correlation/components/general/image-name-toggle-button/image-name-toggle-button.component.ts","./src/app/modules/correlation/components/investigate/filters/what/what-filter.component.html","./src/app/modules/correlation/components/investigate/filters/what/what-filter.component.ts","./src/app/modules/correlation/components/investigate/services/investigate-filter-data.enumerations.ts","./src/app/modules/correlation/components/investigate/services/investigate-data.interfaces.ts","./src/app/modules/correlation/components/investigate/filters/when/when-filter.component.html","./src/app/modules/correlation/components/investigate/filters/when/when-filter.component.ts","./src/app/modules/correlation/components/investigate/filters/where/where-filter.component.ts","./src/app/modules/correlation/components/investigate/filters/where/where-filter.component.html","./src/app/modules/correlation/components/investigate/sidepane/investigate-side-pane.component.ts","./src/app/modules/correlation/components/investigate/sidepane/investigate-side-pane.component.html","./src/app/modules/correlation/components/investigate/task/investigate-task.component.html","./src/app/modules/correlation/components/investigate/task/investigate-task.component.ts","./src/app/modules/correlation/components/investigate/timeline/event-timeline.component.ts","./src/app/modules/correlation/components/investigate/timeline/event-timeline.component.html","./src/app/modules/correlation/components/general/breadcrumbs/breadcrumbs.component.html","./src/app/modules/correlation/components/general/breadcrumbs/breadcrumbs.component.ts","./src/app/modules/correlation/components/dashboard/aggregation-widget-settings-modal/aggregation-widget-settings-modal.component.html","./src/app/modules/correlation/components/dashboard/aggregation-widget-settings-modal/aggregation-widget-settings-modal.component.ts","./src/app/modules/correlation/components/dashboard/aggregation-widget/aggregation-widget.component.ts","./src/app/modules/correlation/components/dashboard/aggregation-widget/aggregation-widget.component.html","./src/app/modules/correlation/enumerations/filter-types.ts","./src/app/modules/correlation/components/filters/data-types/filter-plugin-data-types.component.ts","./src/app/modules/correlation/correlation.module.ts","./src/app/modules/mission-control/utils/guid-utils.ts","./src/app/modules/mission-control/models/incident-location.ts","./src/app/modules/mission-control/models/events/incident-event.ts","./src/app/modules/mission-control/models/errors/mc-client-error.ts","./src/app/modules/mission-control/models/service-state.ts","./src/app/modules/mission-control/utils/rxjs-utils.ts","./src/app/modules/mission-control/state-guids.ts","./src/app/modules/mission-control/models/events/mc-module-health-event.ts","./src/app/modules/mission-control/models/errors/mc-client-sse-error.ts","./src/app/modules/mission-control/services/events/mc-event-receiver.service.ts","./src/app/modules/mission-control/models/state.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Managers/RoleManager.ts","./src/app/modules/mission-control/models/web-api-response.ts","./src/app/modules/mission-control/models/errors/mc-client-response-error.ts","./src/app/modules/mission-control/models/errors/mc-client-not-connected-error.ts","./src/app/modules/mission-control/services/mc-client.service.ts","./src/app/modules/mission-control/services/state/state.service.ts","./src/app/modules/mission-control/models/comment.ts","./src/app/modules/mission-control/models/mc-incident.ts","./src/app/modules/mission-control/models/possible-state-transition-list.ts","./src/app/modules/mission-control/models/list-result.ts","./src/app/modules/mission-control/models/option.ts","./src/app/modules/mission-control/models/step.ts","./src/app/modules/mission-control/services/incident/incident-api.service.ts","./src/app/modules/mission-control/services/incident/incident-handler.ts","./src/app/modules/mission-control/models/incident-filter.ts","./src/app/modules/mission-control/models/incident-sorting.ts","./src/app/modules/mission-control/services/incident/incident-pipeline-parameter.ts","./src/app/modules/mission-control/services/incident/incident.service.ts","./src/app/modules/mission-control/models/procedure-step-action-type.ts","./src/app/modules/mission-control/services/incident-location/incident-location.service.ts","./src/app/modules/mission-control/utils/batch-entities-observable.ts","./src/app/modules/mission-control/services/mc-user.service.ts","./src/app/modules/mission-control/models/priority.ts","./src/app/modules/mission-control/services/priority/priority.service.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/Resources.ts","./src/app/modules/mission-control/services/activity-event/activity-event.service.ts","./src/app/modules/shared/utilities/eventTypes.helper.ts","./src/app/modules/shared/utilities/resources.helper.ts","./src/app/modules/mission-control/mission-control-content-types.ts","./src/app/modules/mission-control/controllers/linked-incident.controller.ts","./src/app/modules/mission-control/services/linked-incident/linked-incident.service.ts","./src/app/modules/mission-control/content-fields.ts","./src/app/modules/mission-control/mc-privileges.ts","./src/app/modules/mission-control/models/commands/command.ts","./src/app/modules/mission-control/models/commands/link-incident-command.ts","./src/app/modules/mission-control/services/mc-notification.service.ts","./src/app/modules/mission-control/services/incident/incident-command.service.ts","./src/app/modules/mission-control/models/commands/unlink-incident-command.ts","./src/app/modules/mission-control/models/procedure.ts","./src/app/modules/mission-control/services/procedures/procedure.service.ts","./src/app/modules/mission-control/services/events/incident-event.service.ts","./src/app/modules/mission-control/services/incident/incident-selection.service.ts","./src/app/modules/mission-control/components/linked-incident-filter/linked-incident-filter.component.ts","./src/app/modules/mission-control/components/linked-incident-filter/linked-incident-filter.component.html","./src/app/modules/mission-control/services/icons/icon.service.ts","./src/app/modules/mission-control/components/incident-icon/incident-icon.component.html","./src/app/modules/mission-control/components/incident-icon/incident-icon.component.ts","./src/app/modules/mission-control/pipes/location-name/location-name.pipe.ts","./src/app/modules/mission-control/pipes/timezone-conversion.pipe.ts","./src/app/modules/mission-control/pipes/state-name.pipe.ts","./src/app/modules/mission-control/components/incident-card/incident-card.component.html","./src/app/modules/mission-control/components/incident-card/incident-card.component.ts","./src/app/modules/mission-control/pipes/priority-name.pipe.ts","./src/app/modules/mission-control/components/linked-incident-widget/linked-incident-widget.component.html","./src/app/modules/mission-control/components/linked-incident-widget/linked-incident-widget.component.ts","./src/app/modules/mission-control/models/commands/add-comment-command.ts","./src/app/modules/mission-control/validators/incident-comment-validator.ts","./src/app/modules/mission-control/components/incident-comment/incident-comment.component.html","./src/app/modules/mission-control/components/incident-comment/incident-comment.component.ts","./src/app/modules/mission-control/components/quick-action-widget/quick-action-widget.component.html","./src/app/modules/mission-control/components/quick-action-widget/quick-action-widget.component.ts","./src/app/modules/mission-control/models/category.ts","./src/app/modules/mission-control/services/category/category-api.service.ts","./src/app/modules/mission-control/models/incident-type.ts","./src/app/modules/mission-control/services/incident-type.service.ts","./src/app/modules/mission-control/models/commands/change-description-command.ts","./src/app/modules/mission-control/models/commands/change-external-id-command.ts","./src/app/modules/mission-control/models/commands/change-priority-command.ts","./src/app/modules/mission-control/pipes/source-ids.pipe.ts","./src/app/modules/mission-control/pipes/local-area-ids.pipe.ts","./src/app/modules/mission-control/pipes/user-name.pipe.ts","./src/app/modules/mission-control/components/overview-widget/overview-widget.component.html","./src/app/modules/mission-control/components/overview-widget/overview-widget.component.ts","./src/app/modules/mission-control/services/mc-setting/mc-setting.service.ts","./src/app/modules/mission-control/components/incident-recipient/incident-recipient-modal.component.ts","./src/app/modules/mission-control/components/incident-recipient/incident-recipient-modal.component.html","./src/app/modules/mission-control/components/filters/filter-owner/filter-owner-mode.ts","./src/app/modules/mission-control/components/filters/filter-owner/filter-owner.component.ts","./src/app/modules/mission-control/components/filters/filter-owner/filter-owner.component.html","./src/app/modules/mission-control/entity-location.ts","./src/app/modules/mission-control/components/incident-filter/incident-filter.component.html","./src/app/modules/mission-control/components/incident-filter/incident-filter.component.ts","./src/app/modules/mission-control/mc-feature.ts","./src/app/modules/mission-control/mc-modal-ids.ts","./src/app/modules/mission-control/models/commands/change-state-command.ts","./src/app/modules/mission-control/models/commands/forward-command.ts","./src/app/modules/mission-control/models/commands/release-ownership-command.ts","./src/app/modules/mission-control/models/commands/take-ownership-command.ts","./src/app/modules/mission-control/models/commands/transfer-command.ts","./src/app/modules/mission-control/services/incident-actions/incident-actions.service.ts","./src/app/modules/mission-control/mission-control-context-ids.ts","./src/app/modules/mission-control/services/incident-map-selector/incident-map-selector.service.ts","./src/app/modules/mission-control/utils/list-utils.ts","./src/app/modules/mission-control/models/commands/trigger-incident-command.ts","./src/app/modules/mission-control/components/trigger-incident-modal/trigger-incident-modal.component.html","./src/app/modules/mission-control/components/trigger-incident-modal/trigger-incident-modal.component.ts","./src/app/modules/mission-control/pipes/location-icon.pipe.ts","./src/app/modules/mission-control/components/incidents-list/incidents-list.component.html","./src/app/modules/mission-control/components/incidents-list/incidents-list.component.ts","./src/app/modules/mission-control/mc-content-names.ts","./src/app/modules/mission-control/services/action/mc-action.service.ts","./src/app/modules/mission-control/components/incidents-tray/incidents-tray.component.ts","./src/app/modules/mission-control/components/incidents-tray/incidents-tray.component.html","./src/app/modules/mission-control/services/incident-command-provider.ts","./src/app/modules/mission-control/services/incident-count/incident-count.service.ts","./src/app/modules/mission-control/components/incident-notification/incident-notification.component.ts","./src/app/modules/mission-control/components/incident-notification/incident-notification.component.html","./src/app/modules/mission-control/models/commands/answer-procedure-command.ts","./src/app/modules/mission-control/utils/timespan.ts","./src/app/modules/mission-control/dsop-constants.ts","./src/app/modules/mission-control/components/procedure-widget/procedure-widget.component.html","./src/app/modules/mission-control/components/procedure-widget/procedure-widget.component.ts","./src/app/modules/mission-control/components/activity-widget/activity-widget.component.html","./src/app/modules/mission-control/components/activity-widget/activity-widget.component.ts","./src/app/modules/mission-control/side-pane-custom-headers.ts","./src/app/modules/mission-control/components/incident-sidepane-header/incident-sidepane-header.component.ts","./src/app/modules/mission-control/components/incident-sidepane-header/incident-sidepane-header.component.html","./src/app/modules/mission-control/mission-control.module.ts","./src/app/modules/lpr/api/api.ts","./src/app/modules/lpr/enumerations/lpr-content-fields.ts","./src/app/modules/lpr/enumerations/lpr-content-types.ts","./src/app/modules/lpr/components/widgets/plate-read-widget/read-general-information/read-general-information.component.html","./src/app/modules/lpr/components/widgets/plate-read-widget/read-general-information/read-general-information.component.ts","./src/app/modules/lpr/components/widgets/plate-read-widget/plate-read-widget.component.html","./src/app/modules/lpr/components/widgets/plate-read-widget/plate-read-widget.component.ts","./src/app/modules/lpr/components/widgets/read-location-widget/read-location-widget.component.html","./src/app/modules/lpr/components/widgets/read-location-widget/read-location-widget.component.ts","./src/app/modules/lpr/components/widgets/hit-event-widget/hit-event-widget.component.html","./src/app/modules/lpr/components/widgets/hit-event-widget/hit-event-widget.component.ts","./src/app/modules/lpr/lpr.module.ts","./src/app/modules/shared/services/content/content-services-provider.service.ts","./src/app/modules/tiles/tiles.module.ts","./src/app/modules/video/components/bookmark/bookmark.component.ts","./src/app/modules/video/components/bookmark/bookmark.component.html","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/RecordingStates.ts","./src/app/modules/video/components/camera/camera-base.component.ts","./src/app/modules/video/components/camera/tile/camera-entity-state/camera-entity-state.component.ts","./src/app/modules/video/components/camera/tile/camera-entity-state/camera-entity-state.component.html","./src/app/modules/video/components/camera/widgets/camera-actions-widget/camera-actions-widget.component.ts","./src/app/modules/video/components/camera/widgets/camera-actions-widget/camera-actions-widget.component.html","./src/app/modules/video/components/camera/widgets/camera-events-widget/camera-events-widget.component.ts","./src/app/modules/video/components/camera/widgets/camera-events-widget/camera-events-widget.component.html","./src/app/modules/shared/validators/twenty-four-hours-validator.ts","./src/app/modules/video/components/export-video/validators/time-range-validator.ts","./src/app/modules/video/components/export-video/export-video.component.html","./src/app/modules/video/components/export-video/export-video.component.ts","./src/app/modules/video/components/export-video-authorization/export-video-authorization.component.html","./src/app/modules/video/components/export-video-authorization/export-video-authorization.component.ts","./src/app/modules/video/components/goto-time/goto-time.component.ts","./src/app/modules/video/components/goto-time/goto-time.component.html","./src/app/modules/video/components/maps/camera-event-widget/camera-event-widget.component.ts","./src/app/modules/video/components/maps/camera-event-widget/camera-event-widget.component.html","./src/app/modules/video/components/ptz-controls/lcd-panel/lcd-panel.component.ts","./src/app/modules/video/components/ptz-controls/lcd-panel/lcd-panel.component.html","./src/app/modules/video/components/ptz-controls/services/ptz-privileges.ts","./src/app/modules/shared/components/hideable/hideable.component.ts","./src/app/modules/video/components/ptz-controls/supported-commands.ts","./src/app/modules/video/components/ptz-controls/services/ptz-controls.service.ts","./src/app/modules/video/components/ptz-controls/ptz-controls.component.html","./src/app/modules/video/components/ptz-controls/ptz-controls.component.ts","./src/app/modules/video/components/ptz-controls/ptz-controls-plugin/ptz-controls-plugin.component.ts","./src/app/modules/video/components/ptz-controls/ptz-controls-plugin/ptz-controls-plugin.component.html","./src/app/modules/video/utilities/camerahelper.ts","../../RestClient/genetec-securitycenter-restclient/src/Client/Enumerations/CameraFeatureCapabilties.ts","../genetec-webapp-marmot/src/ivideoplayer.ts","../genetec-webapp-marmot/src/export.ts","../genetec-webapp-marmot/src/webapp-transport.ts","../genetec-webapp-marmot/src/ptzThrottlingService.ts","../genetec-webapp-marmot/src/videoplayer.ts","./src/app/modules/video/services/video-diagnostic-service.ts","./src/app/modules/video/components/video-player/video-player.component.html","./src/app/modules/video/components/video-player/video-player.component.ts","./src/app/modules/video/components/video-controls/buttons/enum/buttons.enum.ts","./src/app/modules/video/pipes/video-speed.pipe.ts","./src/app/modules/video/components/video-controls/video-controls.component.html","./src/app/modules/video/components/video-controls/video-controls.component.ts","./src/app/modules/video/services/camera-command-provider.ts","./src/app/modules/video/components/expand-widget/expand-widget.component.html","./src/app/modules/video/components/expand-widget/expand-widget.component.ts","./src/app/modules/video/video.module.ts","./src/app/modules/shared/services/notifications/NotificationsChangedEvent.ts","./src/app/modules/shared/services/notifications/notifications.service.ts","./src/app/modules/shared/services/updates/UpgradeStartedEvent.ts","./src/app/modules/shared/services/updates/updater.service.ts","./src/app/components/nav-bar/services/nav-bar.service.ts","./src/app/components/nav-bar/nav-bar.component.html","./src/app/components/nav-bar/nav-bar.component.ts","./src/app/components/side-pane/side-pane.component.ts","./src/app/components/side-pane/side-pane.component.html","./src/app/modules/general/components/change-password/notification/change-password-notification.service.ts","./src/app/components/login/login.component.html","./src/app/components/login/login.component.ts","./src/app/components/loading-screen/loading-screen.component.html","./src/app/components/loading-screen/loading-screen.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/components/nav-bar/task-plugin/task-plugin.component.ts","./src/app/components/nav-bar/task-plugin/task-plugin.component.html","./src/app/components/save-task/save-task.component.html","./src/app/components/save-task/save-task.component.ts","./src/app/security-center/services/authentication/auth-guard.service.ts","./src/app/routing/app-routing.module.ts","./src/app/security-center/services/authentication/auth-interceptor.service.ts","./src/app/utilities/extensions/array.extensions.ts","./src/app/utilities/extensions/moment.extensions.ts","./src/app/utilities/extensions/promise.extensions.ts","./src/app/utilities/extensions/global.extensions.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@genetec/gelato/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["// Autogenerated: v2/help/enumerations/ApiLogSeverity?codegen=ts&showresources=False on 2020-07-23 3:40:06 PM\n\nexport class LogSeverity {\n public static All = 'All';\n public static Debug = 'Debug';\n public static Error = 'Error';\n public static Fatal = 'Fatal';\n public static Full = 'Full';\n public static Information = 'Information';\n public static None = 'None';\n public static Performance = 'Performance';\n public static Warning = 'Warning';\n\n public static readonly values = [\n LogSeverity.All,\n LogSeverity.Debug,\n LogSeverity.Error,\n LogSeverity.Fatal,\n LogSeverity.Full,\n LogSeverity.Information,\n LogSeverity.None,\n LogSeverity.Performance,\n LogSeverity.Warning\n ];\n}\n","import { LogSeverity } from 'RestClient/Client/Enumerations/LogSeverity';\n\nexport const environment = {\n production: true,\n logSeverities: [LogSeverity.Warning, LogSeverity.Error],\n};\n\nexport const getBaseUrl = (): string => {\n return document.getElementsByTagName('base')[0].href;\n};\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IMapsProviderClient {\n /**\n * @param providerId (optional) \n * @return Success\n */\n getProviderKey(providerId?: IGuid | undefined): Observable;\n}\n\n@Injectable()\nexport class MapsProviderClient implements IMapsProviderClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @param providerId (optional) \n * @return Success\n */\n getProviderKey(providerId?: IGuid | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/MapsProvider/ProviderKey?\";\n if (providerId === null)\n throw new Error(\"The parameter 'providerId' cannot be null.\");\n else if (providerId !== undefined)\n url_ += \"providerId=\" + encodeURIComponent(\"\" + providerId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetProviderKey(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetProviderKey(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProviderKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","export const GetBaseUriForCodeGen = (): string | null => {\n const tags = document.getElementsByTagName('base');\n if (tags?.length > 0) {\n const uri = tags[0].href;\n if (uri) {\n if (uri.endsWith('/')) {\n return uri.substr(0, uri.length - 1);\n }\n return uri;\n }\n }\n return null;\n};\n","import { InjectionToken } from '@angular/core';\nimport { GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { FeatureFlag } from '@modules/feature-flags/feature-flag';\nimport { UserSettingsService } from '@modules/shared/services/user-settings/user-settings.service';\nimport { Observable } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FeaturesService } from '../../../services/features/features.service';\nimport { ContentGroup, PluginCommand, PluginContext } from './plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n// #region services injection names\n\n/**\n * Token used to inject the content services provider in your plugin. Used to share services between related plugins.\n */\nexport const CONTENT_SERVICES_PROVIDER = new InjectionToken('Content service provider');\n\n/**\n * Token used this to inject the keyboad shortcut service in your plugin to intercept keyboard commands and to get the commands usage, aka commands\n * available for the given content and data.\n *\n * TODO: Technical Debt Bug 59148: WebApp - Review use of InternalCommandsService.\n * The type of this token is the interface, but throughout the app, we use InternalCommandsService as type of the injected service, which is cheating and may cause bugs in the future.\n */\nexport const COMMANDS_SERVICE = new InjectionToken('Commands service');\n\n/**\n * Token used to inject the side context service in your plugin (if your plugin needs to interact with it).\n * Use this to interact with the shell's side pane content.\n */\nexport const SIDE_CONTEXT_SERVICE = new InjectionToken('Side Ccontext service');\n\n/**\n * Token used to inject the user settings service in your plugin (if your plugin needs to interact with it).\n * Use this to get and set user settings service (localStorage or not).\n */\nexport const USER_SETTINGS_SERVICE = new InjectionToken('User settings service');\n\n/**\n * Token used to inject the modal service in your plugin (if your plugin needs to interact with it).\n */\nexport const MODAL_SERVICE = new InjectionToken('Modal service');\n\n/**\n * Token used to inject the features service in your plugin (if your plugin needs to interact with it).\n */\nexport const FEATURES_SERVICE = new InjectionToken('Features service');\n\n/**\n * Token used to inject the maps bottom context in your plugin (if your plugin needs to interact with it).\n */\nexport const MAPS_BOTTOM_CONTEXT_SERVICE = new InjectionToken('Maps bottom context service');\n\nexport const mapsServiceId: IGuid = SafeGuid.parse('153D5191-13CE-4FD6-AE9E-42802A306378');\n\n// #endregion\n\nexport interface PublicMapService {\n select(id: string, mapId?: IGuid): void;\n updateContextualData(content: ContentGroup): void;\n clearContextualData(contentId: IGuid): void;\n}\n\n// #region Content services support\n\n/**\n * Service used to put a content in a state that is listened by a place holder component\n */\nexport interface ContentService extends PluginContext {\n currentContent$: Observable;\n\n currentContent: ContentGroup | null;\n\n contentCount: number;\n\n /**\n * undefined content means the content isn't reachable/available while null content means there's no content ever\n */\n setMainContent(content: ContentGroup | undefined | null): void;\n\n clearMainContent(): void;\n\n pushContent(content?: ContentGroup): void;\n\n popContent(content?: ContentGroup): void;\n}\n\n/**\n * Basic extension service that can be used to\n */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ExtensionService {}\n\n/**\n * This service is used to be able to add service bound to a content\n */\nexport interface ContentExtensionServicesProvider {\n /**\n * retrieves a service\n */\n getService(contentId: IGuid): T | undefined;\n\n /**\n * injects a service\n */\n setService(contentId: IGuid, contentService: T): void;\n\n /**\n * removes an injected service\n */\n removeService(contentId: IGuid): boolean;\n}\n\n// #endregion\n\n// #region Options extension\n\n/**\n * interface to get settings and set settings for a whole section\n */\nexport interface SettingsService {\n /**\n * All the saved settings\n */\n onSettingsChanged$: Observable;\n\n /**\n * The changes in the settings has been canceled.\n */\n onCancel$: Observable;\n\n /**\n * set a setting (only to use in the options component itself)\n */\n set(settingSectionId: IGuid, settingId: string, value: any, refreshOnApply?: boolean): void;\n\n /**\n * get a setting\n */\n get(settingSectionId: IGuid, settingId: string): T | undefined;\n\n /**\n * get a setting content visibility\n */\n getOptionAvailability(settingSectionId: IGuid): boolean | undefined;\n}\n\n// #endregion\n\n// #region Filters extension\n\n/**\n * interface to set filters\n */\nexport interface FiltersService {\n /**\n * set a filter\n */\n set(filter: Filter): void;\n\n /**\n * reset all filters\n */\n reset(): void;\n}\n\n/**\n * specifies what a filter should contain in order to save its state in the store via the FiltersService\n */\nexport interface Filter {\n pluginId: IGuid;\n filterId: string;\n value: any;\n type: IGuid;\n}\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface MapContext {\n mapId: IGuid;\n geoLocalised: boolean;\n location: GeoCoordinate | Coordinate;\n}\n\nexport interface GeoCoordinate {\n latitude: number;\n longitude: number;\n altitude?: number;\n}\n\n// #endregion\n\n// #region Commands\n\nexport interface CommandDisplay {\n /**\n * icon of the command\n */\n icon?: MeltedIcon;\n /**\n * name of the command (method here to always have right language)\n */\n name: () => string;\n /**\n * tooltip of the command (method here to always have right language)\n */\n tooltip?: () => string;\n isAllowed?: () => boolean;\n}\n\nexport interface CommandContext {\n type: IGuid;\n data: any;\n target?: Element;\n}\n\nexport interface ExecuteCommandData {\n commandContext?: CommandContext;\n event?: Event;\n isHandled?: boolean;\n}\n\n/**\n * Handler of the command (execution)\n */\nexport type ExecuteCommandHandler = (executeCommandData: ExecuteCommandData) => void;\n\n/**\n * can execute of the command ( can execution)\n */\nexport type CanExecuteCommandHandler = (commandContext?: CommandContext) => Promise | boolean;\n\n/**\n * is command available handler\n */\nexport type IsCommandAvailableHandler = (commandContext?: CommandContext) => Promise | boolean;\n\n/**\n * handler to get the name and icon of the command if it can be diffrent from the default one\n */\nexport type GetCommandDisplayHandler = (commandContext?: CommandContext) => Promise | CommandDisplay | undefined;\n\nexport interface CommandProvider {\n readonly priority: number;\n readonly requiredFeatures: Set;\n getAvailableCommandIdsAsync(commandContext: CommandContext): Promise;\n}\n\n// eslint-disable max-classes-per-file\nexport class CommandEntry {\n public targetData?: CommandContext;\n public target?: Element;\n\n public get key(): string | undefined {\n return this.keyValue;\n }\n\n public get executeHandler(): ExecuteCommandHandler | undefined {\n return this.handlerValue;\n }\n\n public get canExecuteHandler(): CanExecuteCommandHandler | undefined {\n return this.canExecuteHandlerValue;\n }\n\n public get isAvailableHandler(): IsCommandAvailableHandler | undefined {\n return this.isAvailableHandlerValue;\n }\n\n public get getDisplayHandler(): GetCommandDisplayHandler | undefined {\n return this.getDisplayHandlerValue;\n }\n\n private keyValue?: string;\n\n constructor(\n public commandId: IGuid,\n private handlerValue: ExecuteCommandHandler,\n private isAvailableHandlerValue?: IsCommandAvailableHandler,\n private canExecuteHandlerValue?: CanExecuteCommandHandler,\n private getDisplayHandlerValue?: GetCommandDisplayHandler\n ) {}\n}\n\n/**\n * Use this to map a command to a receiver of the command (execution code)\n */\n// eslint-disable max-classes-per-file\nexport class CommandBindings {\n /**\n * map the entries with their command id\n */\n private commandIds = new Map();\n\n /**\n * map the entries with their command keys\n */\n private commandKeys = new Map();\n\n public addCommand(commandInfo: {\n commandId: IGuid;\n executeCommandHandler: ExecuteCommandHandler;\n isCommandAvailableHandler?: IsCommandAvailableHandler;\n canExecuteCommandHandler?: CanExecuteCommandHandler;\n getCommandDisplayHandler?: GetCommandDisplayHandler;\n }): void {\n const entry = new CommandEntry(\n commandInfo.commandId,\n commandInfo.executeCommandHandler,\n commandInfo.isCommandAvailableHandler,\n commandInfo.canExecuteCommandHandler,\n commandInfo.getCommandDisplayHandler\n );\n this.commandIds.set(commandInfo.commandId.toString().toLowerCase(), entry);\n }\n\n public assignKey(commandId: IGuid, key: string): void {\n /**\n * TODO: Ensure the key is not used somehwere else\n */\n const entry = this.getCommand(commandId);\n if (entry) {\n /**\n * this is a private field so cast as any\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (entry as any).keyValue = key;\n\n /**\n * add an entry in the Map to find it faster\n */\n this.commandKeys.set(key, entry);\n }\n }\n\n public getCommand(commandId: IGuid): CommandEntry | undefined {\n return this.commandIds.get(commandId.toString().toLowerCase());\n }\n\n public getCommandFromKey(key: string): CommandEntry | undefined {\n return this.commandKeys.get(key);\n }\n\n public getCommands(): CommandEntry[] {\n const result: CommandEntry[] = Array.from(this.commandIds.values());\n return result;\n }\n}\n\nexport interface PluginComponentCommandHandler {\n getCommandBindings(): CommandBindings;\n}\n\n/**\n * options passed to the subscribe\n */\nexport interface CommandSubscriptionOptions {\n /**\n * used to customize the priority of commands to be executed (mostly used for keyboard shortcuts)\n * This way, if two different views are listening to the same global key-event,\n * the 'winning' event-handler becomes the one with the higher priority; it no longer depends on the coincidental structure of the component tree.\n */\n priority: number;\n}\n\n/**\n * use this to unsubscribe, an object of this type is received after subscribing to command(s)\n */\nexport interface CommandsSubscription {\n unsubscribe(): void;\n}\n\nexport interface CommandRequirements {\n supportedContentTypes?: Set;\n requiredPrivileges?: Set;\n requiredFeatures?: Set;\n enabledFeatureFlags?: Set;\n}\n\nexport interface EntityCommandRequirements extends CommandRequirements {\n isFederated?: boolean;\n supportedEntityTypes?: Set;\n}\n\n/**\n * Service to register for a command\n */\nexport interface CommandsService {\n /**\n * determine the currently active element for commands having a target (like tiles)\n */\n activeTarget: Element | undefined;\n\n /**\n * subscribe to a command by specifying the receiver of the command (execution of the command)\n */\n subscribe(bindings: CommandBindings, options: CommandSubscriptionOptions): CommandsSubscription;\n\n /**\n * register the list of commands\n */\n registerCommands(commands: PluginCommand[]): void;\n\n /**\n * appends requirements for a known command\n */\n appendRequirements(commandId: IGuid, requirements: CommandRequirements | EntityCommandRequirements): void;\n\n /**\n * Registers a command to a keyboard shortcut\n * Note: no need to register the command if you fill up the availableCommands property of the pluginComponent\n */\n registerCommandShortcut(commandId: IGuid, shortcut: string): void;\n\n /**\n * registers a context command provider, those providers will be called to get supported commands given a context\n */\n registerCommandProvider(provider: CommandProvider): void;\n\n /**\n * execute the specified command\n */\n executeCommand(commandId: IGuid, commandContext?: CommandContext, event?: Event, targetElement?: Element): void;\n\n /**\n * checks if the specified command can be executed\n */\n canExecuteCommandAsync(commandId: IGuid, commandContext?: CommandContext): Promise;\n\n /**\n * gets the name and icon of the command that fits the specified arguments\n */\n getCommandDisplayAsync(commandId: IGuid, commandContext?: CommandContext): Promise;\n\n /**\n * execute the specified command forcefully (without executing the can execute handler because it was premptively done)\n */\n forceExecuteCommand(commandId: IGuid, commandContext?: CommandContext, event?: Event, targetElement?: Element): void;\n\n /**\n * gets the command having the specified id\n */\n getCommandAsync(commandId: IGuid, executable?: boolean, commandContext?: CommandContext): Promise;\n\n /**\n * gets the specified commands\n */\n getCommandsAsync(commandIds: IGuid[], executable?: boolean, commandContext?: CommandContext): Promise;\n\n /**\n * gets the available commands for the given context\n */\n getAvailableCommandsAsync(contextArgs: CommandContext): Promise;\n\n /**\n * Hides the current context menu\n */\n hideCurrentContextMenu(): void;\n}\n","import { SafeGuid } from 'safeguid';\n\nexport const KnownPrivileges = Object.freeze({\n runConfigToolPrivilege: SafeGuid.parse('1b03c89e-0b02-4d68-b281-ef5a4f76146c'),\n runSecurityDeskPrivilege: SafeGuid.parse('5c9348a7-faa7-4aa1-b8a9-d0761a7be118'),\n sdkLogonPrivilege: SafeGuid.parse('7ab29b46-f363-4cad-9e05-1bcb9b65d49c'),\n webClientConnectionPrivilege: SafeGuid.parse('a21a5c23-d214-420d-a3d9-b146f2b4e589'),\n federationLogonPrivilege: SafeGuid.parse('5603c2ff-8ae6-41ad-9381-1d73f65150c0'),\n globalCardholderSynchronizerLogonPrivilege: SafeGuid.parse('a3b53d78-d8ec-4e96-a416-686adb6f7a08'),\n mobileClientLogonPrivilege: SafeGuid.parse('99d21656-4500-4044-b715-6737f65796b2'),\n patrollerLogonPrivilege: SafeGuid.parse('d15f80ae-3c83-47a1-ba82-8d3d83638bf6'),\n patrollerAccessReadsHitsPrivilege: SafeGuid.parse('9439076d-2ba1-4cea-9053-5f843483ce8c'),\n viewSchedulesPrivilege: SafeGuid.parse('2c144bd7-62c4-4b34-86e4-94065d9ab2c6'),\n modifySchedulesPrivilege: SafeGuid.parse('f58e60a8-96ab-461e-86c3-81fac184d186'),\n addSchedulesPrivilege: SafeGuid.parse('55744566-9300-4290-adde-27f7cdf79b73'),\n deleteSchedulesPrivilege: SafeGuid.parse('6958b88f-a415-4584-b372-79effd8360a8'),\n viewAccessControlUnitsPrivilege: SafeGuid.parse('061254aa-420f-4b93-834a-a5fe78ccb803'),\n accessControlUnitFirmwareUpgradePrivilege: SafeGuid.parse('1E1363B5-EE7D-4160-9BB4-289568D921F8'),\n modifyAccessControlUnitsPrivilege: SafeGuid.parse('d82d8205-27ea-43b4-883e-078c5f96c0df'),\n addAccessControlUnitsPrivilege: SafeGuid.parse('81658baa-eb21-4eb8-b8ff-0703fb636053'),\n deleteAccessControlUnitsPrivilege: SafeGuid.parse('d80b69a6-22e3-44bb-84da-483184075330'),\n resetAccessControlUnitsPrivilege: SafeGuid.parse('4ad98314-bbc8-4e34-add3-3e161ecf2f7c'),\n viewPatrollersPrivilege: SafeGuid.parse('c578093d-278f-4ddd-b1fd-b951176b301f'),\n modifyPatrollersPrivilege: SafeGuid.parse('55e8ecb2-38d8-4266-8bee-6985735f4435'),\n deletePatrollersPrivilege: SafeGuid.parse('62a7121a-045d-45da-a4bd-a8454c51bae0'),\n viewLprUnitsPrivilege: SafeGuid.parse('45d906c7-c003-415f-9817-1364ead1911e'),\n modifyLprUnitsPrivilege: SafeGuid.parse('6e845236-b4fb-4985-916f-add9576fef95'),\n addLprUnitsPrivilege: SafeGuid.parse('074901e5-6f0c-45ce-a4b1-40659f7b662e'),\n deleteLprUnitsPrivilege: SafeGuid.parse('bea73aba-85b0-479c-abaa-c5dadb7ccd89'),\n resetLprUnitsPrivilege: SafeGuid.parse('4eb74ff3-358b-4d3f-81a8-5f0db66e8191'),\n triggerReadLprUnitsPrivilege: SafeGuid.parse('90aab494-7a91-48b8-903e-0407ef365b4a'),\n viewPlatelistEntriesPrivilege: SafeGuid.parse('2dbd02c0-b1a8-11e2-9e96-0800200c9a66'),\n modifyPlatelistEntriesPrivilege: SafeGuid.parse('42da6fd0-b1a8-11e2-9e96-0800200c9a66'),\n deletePlatelistEntriesPrivilege: SafeGuid.parse('6a678f10-b1a8-11e2-9e96-0800200c9a66'),\n addPlatelistEntriesPrivilege: SafeGuid.parse('ae37ad50-b1a9-11e2-9e96-0800200c9a66'),\n viewCardholdersPrivilege: SafeGuid.parse('db9d9c99-f571-4202-b768-d5585b6e1614'),\n modifyCardholdersPrivilege: SafeGuid.parse('af0902fb-34ba-427a-b246-52b5643b3d4d'),\n addCardholdersPrivilege: SafeGuid.parse('2cb1308f-1e15-4a5d-897f-876004020366'),\n deleteCardholdersPrivilege: SafeGuid.parse('b50a0b91-eddd-4c60-8725-744c304210b5'),\n viewCardholderGroupsPrivilege: SafeGuid.parse('b4ce6ce5-a190-48e4-b5bc-0b37a0716133'),\n changeCardholderOptionsPrivilege: SafeGuid.parse('dbc4ac46-af54-416c-8494-a4393899f5b0'),\n modifyCardholderGroupsPrivilege: SafeGuid.parse('7e6d62f7-abeb-4a41-b42e-1c7f2942c42e'),\n addCardholderGroupsPrivilege: SafeGuid.parse('760a7174-939f-425a-aeb1-993597d746d7'),\n deleteCardholderGroupsPrivilege: SafeGuid.parse('28f168c1-e170-4f65-9e7d-b379aeeb9209'),\n modifyCardholderGroupCustomFieldsPrivilege: SafeGuid.parse('c3942c62-c474-4683-a424-f05b136a38ae'),\n viewCredentialsPrivilege: SafeGuid.parse('7209fb2d-1943-4ce5-b8ec-24c22c68f60d'),\n modifyCredentialsPrivilege: SafeGuid.parse('6cc7d53b-3087-47a7-af91-5db1cbfcd812'),\n addCredentialsPrivilege: SafeGuid.parse('38de2e34-3746-4922-9e10-db87407393da'),\n deleteCredentialsPrivilege: SafeGuid.parse('3dc50349-a0aa-41dc-8bee-6eb2645fb5b8'),\n modifyCredentialInformationPrivilege: SafeGuid.parse('e0ef3539-8ed3-4bd2-9768-dac7bf87d985'),\n viewAccessRulesPrivilege: SafeGuid.parse('dcf2d1d1-5c2a-4fec-abb2-2b0a16c9b165'),\n modifyAccessRulesPrivilege: SafeGuid.parse('30b467a6-696a-4753-bfee-078561c1e2ff'),\n addAccessRulesPrivilege: SafeGuid.parse('c05f27d3-708e-412d-a2c3-e95374860227'),\n deleteAccessRulesPrivilege: SafeGuid.parse('b2609562-e0fb-4cd2-9f96-909f42f141d6'),\n viewAlarmsPrivilege: SafeGuid.parse('0cfe2198-ce16-48af-8f0b-fc029330e8e0'),\n modifyAlarmsPrivilege: SafeGuid.parse('b0f6025f-a29a-43c7-bfc8-6c6f77a2b70a'),\n addAlarmsPrivilege: SafeGuid.parse('068c4d28-fa2c-4900-a815-a0d5e7cec431'),\n deleteAlarmsPrivilege: SafeGuid.parse('a1bfe350-3a63-41dc-84d5-e4b0e1954852'),\n viewMonitorGroupsPrivilege: SafeGuid.parse('58314ca5-1eb4-4707-b2f9-ba9b1a591f60'),\n modifyMonitorGroupsPrivilege: SafeGuid.parse('706d38cd-120d-431d-9bc3-64d6a3ee1e9b'),\n addMonitorGroupsPrivilege: SafeGuid.parse('368a50d1-2d60-4110-984d-61cc4b3bd2cd'),\n deleteMonitorGroupsPrivilege: SafeGuid.parse('19536631-4287-4781-8517-4d32c04d9cb2'),\n viewCamerasPrivilege: SafeGuid.parse('7902233c-5e84-4de1-ae6e-7803ddf42384'),\n modifyCamerasPrivilege: SafeGuid.parse('529a30e2-802c-4a6f-9a89-f1eacccd8bfb'),\n addCamerasPrivilege: SafeGuid.parse('35914b9d-215c-4d60-bda1-69eb2f8c3ee7'),\n removeCamerasPrivilege: SafeGuid.parse('f877f653-4a5a-481b-b19c-3a474b570d93'),\n viewAnalogMonitorsPrivilege: SafeGuid.parse('1402c8e5-4240-4fe1-ac60-2f39f5dca0d2'),\n modifyAnalogMonitorsPrivilege: SafeGuid.parse('2260887a-7915-4b19-aaa8-30eaa519cfe9'),\n addAnalogMonitorsPrivilege: SafeGuid.parse('36aded3f-ffce-411d-8f26-5deb233baaae'),\n removeAnalogMonitorsPrivilege: SafeGuid.parse('96624b6c-4c1a-459d-832f-880053a3a752'),\n viewOutputBehaviorsPrivilege: SafeGuid.parse('2e01687e-8049-4ca5-9c17-947a8da71abe'),\n modifyOutputBehaviorsPrivilege: SafeGuid.parse('cc3d4209-4ef4-4310-9ac6-371985a49ed9'),\n addOutputBehaviorsPrivilege: SafeGuid.parse('0b5e1bca-6146-414b-b99d-19bcc39fe588'),\n deleteOutputBehaviorsPrivilege: SafeGuid.parse('2ce859b1-0ebb-4524-8419-26e3c20a045d'),\n viewDoorsPrivilege: SafeGuid.parse('c546db4d-ef5e-4ad1-a727-7690a19af891'),\n modifyDoorsPrivilege: SafeGuid.parse('7d5fbfa3-5b0d-4e1d-b80c-6ef089902793'),\n addDoorsPrivilege: SafeGuid.parse('bc963fd6-dcf3-45a6-bacd-be0c3552c552'),\n deleteDoorsPrivilege: SafeGuid.parse('b4aacc63-062a-4820-b3ed-9b048073d35b'),\n viewAreasPrivilege: SafeGuid.parse('6095e91e-25bb-430d-a9db-16fe6af51bdc'),\n modifyAreasPrivilege: SafeGuid.parse('d4586106-f2fb-4b29-8f03-4efeafc36e5f'),\n addAreasPrivilege: SafeGuid.parse('5156ab27-869d-4455-9fa8-caa853abcf13'),\n deleteAreasPrivilege: SafeGuid.parse('46e9fa16-7679-4755-9778-e8d61473fe46'),\n viewElevatorsPrivilege: SafeGuid.parse('133c66ce-afb6-44ef-ada7-eefc76406370'),\n modifyElevatorsPrivilege: SafeGuid.parse('8f830ceb-6452-451e-b2a0-a82425892b63'),\n addElevatorsPrivilege: SafeGuid.parse('4fdb33c9-0f1b-41fc-b01c-c833e78cd2d5'),\n deleteElevatorsPrivilege: SafeGuid.parse('93a63331-b30e-4da6-9b2b-3b4f8448a820'),\n viewZonesPrivilege: SafeGuid.parse('0e8e9e32-feab-45ee-8805-c51e627d67bb'),\n modifyZonesPrivilege: SafeGuid.parse('88051d44-ffd1-4dcd-a0d5-a613202e2470'),\n addZonesPrivilege: SafeGuid.parse('9738ba2a-e011-4b18-bee6-06c2929659c6'),\n deleteZonesPrivilege: SafeGuid.parse('95ffc35a-9def-48a0-99dd-b35835aff65c'),\n viewAssetsPrivilege: SafeGuid.parse('3d96d4e8-e2b7-4d0e-8e8e-653cf91777b5'),\n modifyAssetsPrivilege: SafeGuid.parse('02a4ce8c-bb1d-465d-b533-8e989725eddf'),\n addAssetsPrivilege: SafeGuid.parse('023f5365-971f-4ac2-8512-80b841b8b523'),\n deleteAssetsPrivilege: SafeGuid.parse('22937789-fafa-451e-8d02-bb4dd1dce8fd'),\n viewScheduledTasksPrivilege: SafeGuid.parse('9f63265d-e419-4e00-b0e5-a11308513b01'),\n modifyScheduledTasksPrivilege: SafeGuid.parse('67878339-bc75-47c4-ad5a-75163c4e1cc9'),\n addScheduledTasksPrivilege: SafeGuid.parse('09a919ac-2e6b-4828-937a-25c74102eb6f'),\n deleteScheduledTasksPrivilege: SafeGuid.parse('57a3e65a-3eac-4c67-83f7-272b492f1e34'),\n viewMacroPrivilege: SafeGuid.parse('80073FCA-31E8-499B-BE88-E2DC9884EBEC'),\n deleteMacroPrivilege: SafeGuid.parse('6BE427B3-63DF-4BEC-BE8F-4C3D54BEDA13'),\n viewMapsPrivilege: SafeGuid.parse('f645d890-21a4-4bb8-82ff-1c58e2cd4a94'),\n modifyMapsPrivilege: SafeGuid.parse('1eca9a86-5cfb-4cb1-8088-4ae5bb1ac8da'),\n addTilePluginsPrivilege: SafeGuid.parse('3bbdfcfd-bcfd-4ce5-9438-9bc0f3777840'),\n deleteTilePluginsPrivilege: SafeGuid.parse('a4eba300-e848-4e94-9bf1-ea1118ce704b'),\n viewBadgeTemplatesPrivilege: SafeGuid.parse('eeb68039-a326-4942-914d-86695839f66a'),\n modifyBadgeTemplatesPrivilege: SafeGuid.parse('2353e6de-28a3-4e7f-9ebe-9f363a234147'),\n addBadgeTemplatesPrivilege: SafeGuid.parse('64d81a2f-d488-49e0-82fd-b3cdcccbd51f'),\n deleteBadgeTemplatesPrivilege: SafeGuid.parse('a7ac056d-ee0e-46ad-9f28-1324c2f34990'),\n viewUserTasksPrivilege: SafeGuid.parse('a1df9a01-0366-4ced-bd8c-23fe2346d47b'),\n modifyUserTasksPrivilege: SafeGuid.parse('75e6e5d6-3c4f-4f99-951d-5ac2bf712254'),\n addPublicTasksPrivilege: SafeGuid.parse('36d52030-82b5-45e0-8d68-508f8f606d32'),\n deletePublicTasksPrivilege: SafeGuid.parse('f16e162a-496d-4a2d-89ee-512b406151c4'),\n managePrivateTasksPrivilege: SafeGuid.parse('db60a94a-157e-4e16-b766-f0f6617b6106'),\n viewLprRulesPrivilege: SafeGuid.parse('4c94becf-928b-4882-af43-26135c0f70e8'),\n modifyLprRulesPrivilege: SafeGuid.parse('25f576c9-a8c6-4662-8473-481d62e31d8d'),\n addLprRulesPrivilege: SafeGuid.parse('900bf477-cf76-4195-872b-3442be255b00'),\n deleteLprRulesPrivilege: SafeGuid.parse('ef5dc4f4-b37a-40aa-bc0e-2e4667eac9b7'),\n viewCashRegistersPrivilege: SafeGuid.parse('6e13c216-842a-4404-9f2a-eb4af9e66302'),\n modifyCashRegistersPrivilege: SafeGuid.parse('a748a4c4-9c4c-41e9-89e6-1654ec9a3b3c'),\n viewParkingZonesPrivilege: SafeGuid.parse('90EE64F0-B58A-43FF-97C4-C8D4B5D319DA'),\n modifyParkingZonesPrivilege: SafeGuid.parse('C400F81E-6DAC-4C29-AA28-3B394A645FB7'),\n addParkingZonesPrivilege: SafeGuid.parse('F2845732-6A0B-4B40-B663-EBB76CCDE345'),\n deleteParkingZonesPrivilege: SafeGuid.parse('B98E5CA0-2953-4707-ADE5-C77956D16823'),\n viewParkingZoneRulesPrivilege: SafeGuid.parse('765E576E-28E9-4CDC-BD46-87B172166FA0'),\n modifyParkingZoneRulesPrivilege: SafeGuid.parse('7A9401C5-B324-4ECE-97BB-12EF2C25CFE5'),\n addParkingZoneRulesPrivilege: SafeGuid.parse('06678D9E-45A0-4A87-9D1A-EBA377C55FC3'),\n deleteParkingZoneRulesPrivilege: SafeGuid.parse('6336F269-DA0B-4D9B-8E01-31FC59E14D53'),\n viewVisitorsPrivilege: SafeGuid.parse('75be2d69-ed8b-411c-9cad-74bc623b65d2'),\n modifyVisitorsPrivilege: SafeGuid.parse('206d057c-da4d-41d7-8090-a90b1bc340d3'),\n viewIntrusionUnitsPrivilege: SafeGuid.parse('eb7ea22e-5354-434d-bb21-1788a673df8f'),\n modifyIntrusionUnitsPrivilege: SafeGuid.parse('af87c076-1fc8-4e83-a1aa-230cd3b443f6'),\n resetIntrusionUnitsPrivilege: SafeGuid.parse('e0781bad-bf71-4b3c-8f66-1c237b98e82c'),\n intrusionUnitFirmwareUpgradePrivilege: SafeGuid.parse('e26597c7-079f-4a39-94c6-43325a359a45'),\n addIntrusionDetectionUnitsPrivilege: SafeGuid.parse('425aa8b3-d8ce-4b08-a7f1-6fd5f34b13b3'),\n deleteIntrusionDetectionUnitsPrivilege: SafeGuid.parse('2ca82e1a-3636-4e2e-b7ac-ca76e188e4e3'),\n viewIntrusionAreasPrivilege: SafeGuid.parse('29bc30eb-34d0-45d5-a00f-82384a89f8b3'),\n modifyIntrusionAreasPrivilege: SafeGuid.parse('a62806d8-b763-47ff-8de3-44153aa37b5a'),\n addIntrusionDetectionAreasPrivilege: SafeGuid.parse('87c80cef-a817-4a52-9fa6-fb25c2c67ccc'),\n deleteIntrusionDetectionAreasPrivilege: SafeGuid.parse('933cb83d-f10d-40c5-a866-297654bdebff'),\n modifyCameraSequencePrivilege: SafeGuid.parse('5651fd52-bfe0-4f8b-9d09-995af6e993de'),\n addCameraSequencesPrivilege: SafeGuid.parse('be80714a-1577-4450-a396-1b92d4ac6779'),\n deleteCameraSequencesPrivilege: SafeGuid.parse('74242111-4b2b-411a-8379-addb03863aa3'),\n viewVideoUnitsPrivilege: SafeGuid.parse('66e541a1-4235-4b69-b42a-d380a3e53a00'),\n videoUnitFirmwareUpgradePrivilege: SafeGuid.parse('a0d971b8-43c6-46ab-bb87-b89b7fedce92'),\n modifyVideoUnitsPrivilege: SafeGuid.parse('1f4ca9c1-edba-42cf-815f-5f0d67a616fb'),\n addVideoUnitsPrivilege: SafeGuid.parse('511683a9-927f-497e-a55a-02f47856dcf7'),\n deleteVideoUnitsPrivilege: SafeGuid.parse('ba25487b-556c-486b-8474-acce15be7268'),\n resetVideoUnitsPrivilege: SafeGuid.parse('adfa60d7-ca0b-443a-adf6-44c2d5c57ca0'),\n reconnectVideoUnitsPrivilege: SafeGuid.parse('e8fb098e-2d60-4024-be9d-9cfc57fc6348'),\n addCashRegistersPrivilege: SafeGuid.parse('29c56041-1d1f-4a99-beeb-0b83b1f89b8d'),\n deleteCashRegistersPrivilege: SafeGuid.parse('68621ff5-0144-475a-baaa-6be8b27258f9'),\n incidentsReportPrivilege: SafeGuid.parse('aa8d65c3-23b5-4922-af48-978478b031ea'),\n activityTrailsReportPrivilege: SafeGuid.parse('d295c62b-031f-4022-b829-5baf2ee29a6a'),\n auditTrailsReportPrivilege: SafeGuid.parse('91cec224-f624-43e0-8a96-c3edeed49906'),\n timeAttendanceReportPrivilege: SafeGuid.parse('29ff9fe0-76f1-4379-8dbc-a61c5615db5a'),\n cardholderActivityReportPrivilege: SafeGuid.parse('565b1d24-6d68-4866-a32e-a9d3834c215e'),\n doorActivityReportPrivilege: SafeGuid.parse('6fb20d7c-4153-4d96-80db-53b6322ccfc9'),\n areaActivityReportPrivilege: SafeGuid.parse('7062d6c4-2a6e-45bd-a457-ef2658acb299'),\n elevatorActivityReportPrivilege: SafeGuid.parse('a24a523a-ff83-4d83-9cff-a9cde38a4247'),\n areaPresenceReportPrivilege: SafeGuid.parse('ad479241-e91a-4ec7-994b-a8b4720f88d9'),\n intrusionAreaActivityReportPrivilege: SafeGuid.parse('ab07b90e-c866-418d-b8a5-33632d9925c6'),\n intrusionUnitActivityReportPrivilege: SafeGuid.parse('8b297c18-3bff-44bd-9b01-14caf51dbdf3'),\n credentialActivityReportPrivilege: SafeGuid.parse('ef9822d8-c7e6-465e-bb3d-d5f730bebd71'),\n credentialRequestHistoryReportPrivilege: SafeGuid.parse('fa60a172-33e1-433e-aaff-cdbe0355706d'),\n visitorActivityReportPrivilege: SafeGuid.parse('483f3bf3-76cc-43b1-b0f8-0afa84df8560'),\n assetActivityReportPrivilege: SafeGuid.parse('85fe2ea0-79d2-47d9-b115-8dd138232964'),\n assetInventoryReportPrivilege: SafeGuid.parse('c13cd251-e948-4ef8-9297-cf372b89ed1b'),\n unitActivityReportPrivilege: SafeGuid.parse('86f3aee4-f211-4d79-a518-015bd76c12c9'),\n zoneActivityReportPrivilege: SafeGuid.parse('be5a78be-42a5-43e1-8e83-ee96f4354af7'),\n hitsReportPrivilege: SafeGuid.parse('b046c1a8-2bea-4bb1-8502-b24b324815b2'),\n plateReadsReportPrivilege: SafeGuid.parse('9bf029f4-5402-45be-b283-9fc5cd5da7cb'),\n readHitsPerLprZoneReportPrivilege: SafeGuid.parse('6214650b-ec4a-44ba-880d-b062516f71a2'),\n readHitsPerDayReportPrivilege: SafeGuid.parse('494213e6-29c3-40b3-8ad2-7f06f238ba37'),\n readsGroupingReportPrivilege: SafeGuid.parse('ef66d716-3274-4911-8d49-3000401dbb72'),\n hitsGroupingReportPrivilege: SafeGuid.parse('e8f4ab25-1862-4ab3-b7f3-deaf4dcec699'),\n hitsPerTypeReportPrivilege: SafeGuid.parse('4a7300cc-4b9b-41b3-afc4-6d5775c001a7'),\n hitsPerAgeReportPrivilege: SafeGuid.parse('c07c1654-1f6e-4177-bdaa-6f01100fa4e1'),\n lprZoneOccupationReportPrivilege: SafeGuid.parse('f16a4577-9c4b-48c0-a303-eceae4454edf'),\n loginPerPatrollerReportPrivilege: SafeGuid.parse('ca036ede-0384-4005-85f1-3e80a8e4e73f'),\n dailyUsagePerPatrollerReportPrivilege: SafeGuid.parse('f4536854-85bb-4c7f-a3da-cd2ab5928907'),\n parkingZoneActivitiesReportPrivilege: SafeGuid.parse('2673BE4A-7A50-4BC9-9CFC-9587E1C915D5'),\n parkingSessionsReportPrivilege: SafeGuid.parse('FDD35074-4638-4676-BDC6-BC25892C1DE3'),\n videoArchiveReportPrivilege: SafeGuid.parse('48d9e227-bf6b-43dc-9d87-a979eff584d3'),\n videoBookmarkReportPrivilege: SafeGuid.parse('8507bc2c-eee9-45f1-a4c6-ad57ce96aa28'),\n videoMotionSearchReportPrivilege: SafeGuid.parse('342fd39a-c51e-4035-9a66-56c520a0524a'),\n forensicSearchReportPrivilege: SafeGuid.parse('1959de48-e6cb-4101-92e7-4138629c0805'),\n cameraActivityReportPrivilege: SafeGuid.parse('7c2d3803-46b0-4e75-ae9c-9f1b0d4525ac'),\n cameraConfigurationReportPrivilege: SafeGuid.parse('e758e10e-4e43-485e-a58d-94d7f580e848'),\n archiverEventsReportPrivilege: SafeGuid.parse('ed0c2693-d659-42c9-b8b9-86e3b5a26b98'),\n videoFilesReportPrivilege: SafeGuid.parse('a3893b07-bf15-4a74-b6a2-f4638e54b690'),\n pointOfSaleReportPrivilege: SafeGuid.parse('d5d3180b-fba4-4dc0-9b0a-25034ad29431'),\n iOConfigurationReportPrivilege: SafeGuid.parse('954ce185-0804-4c49-9f8a-115db58c9425'),\n visitorReportPrivilege: SafeGuid.parse('808cf8a9-6a61-4c3c-b896-661fe54e455d'),\n accessReportPrivilege: SafeGuid.parse('ca874005-80bd-431d-a876-6ecc1347787c'),\n enhancedAccessReportPrivilege: SafeGuid.parse('414e1b3b-bd80-43cb-ac94-382d5c550a51'),\n healthReportPrivilege: SafeGuid.parse('801f604f-adf9-4c7e-8be4-9c3ab616181e'),\n accessControlHealthHistoryPrivilege: SafeGuid.parse('37fbb79f-f3b0-4428-8a3a-8dda32a47b25'),\n accessTroubleshooterReportPrivilege: SafeGuid.parse('4c13baf8-cbdc-41a7-8ad4-55aa362670ac'),\n accessRulesConfigurationReportPrivilege: SafeGuid.parse('e9c20842-0c57-4ee5-956c-fae167c6442e'),\n cardholdersConfigurationReportPrivilege: SafeGuid.parse('631856a9-cb26-4961-a287-19dd930699d3'),\n credentialsConfigurationReportPrivilege: SafeGuid.parse('76221cc8-61f7-46b0-9b05-65570700121f'),\n unitsConfigurationReportPrivilege: SafeGuid.parse('60fc8dd2-db70-49d1-963d-f27db38ea724'),\n alarmReportPrivilege: SafeGuid.parse('d72f6995-548c-4c38-a4fa-0fddd2a7674d'),\n correlationReportPrivilege: SafeGuid.parse('905C2049-CA05-4A91-AD7C-2AF373999102'),\n cardholderCreatorPrivilege: SafeGuid.parse('dc0c0983-c737-4aa7-ba1e-798c4010c4e5'),\n credentialManagementPrivilege: SafeGuid.parse('e06ecf58-bfce-42c6-890a-c4761158bd20'),\n peopleCountingPrivilege: SafeGuid.parse('65534082-58a9-49db-911e-25d959171b69'),\n surveillancePrivilege: SafeGuid.parse('e6206b60-23e8-4466-8493-1418f088e7a9'),\n changeCardholderStatusPrivilege: SafeGuid.parse('d7e0e682-f7d0-4a14-8014-c8f77d02c429'),\n modifyCardholderNamePrivilege: SafeGuid.parse('4ea35b1b-f92f-4577-a56d-cc2cf0bca985'),\n modifyCardholderCustomFieldsPrivilege: SafeGuid.parse('6420fd0b-a9c3-40fe-8626-09d3e032710c'),\n modifyCardholderPicturePrivilege: SafeGuid.parse('a7bb370f-431b-4137-9000-b1bf9b1cf09e'),\n changeCredentialStatusPrivilege: SafeGuid.parse('14634e51-f8a0-4a46-b60a-e2fbc8f6cebc'),\n modifyCredentialNamePrivilege: SafeGuid.parse('7aa63f35-93c4-49f0-ba0f-86720c81259a'),\n modifyCredentialAssociationToCardholderPrivilege: SafeGuid.parse('915093f3-63aa-4778-958f-c03de46de8d2'),\n modifyCredentialCustomFieldsPrivilege: SafeGuid.parse('18873b3f-74c0-45bc-ba04-613020c52a7a'),\n printBadgesPrivilege: SafeGuid.parse('a74c018d-a184-4833-a0a0-dd2d716254f3'),\n checkInVisitorsPrivilege: SafeGuid.parse('d85b4380-16ee-4cef-ac41-a1795216c397'),\n checkOutVisitorsPrivilege: SafeGuid.parse('a9920d27-cae1-401d-b000-42cbf123f632'),\n modifyVisitorsCustomFieldsPrivilege: SafeGuid.parse('c277723c-5109-4a1c-a172-f78a4460dce0'),\n modifyVisitorPicturePrivilege: SafeGuid.parse('b2df9787-6678-41ac-b4cf-d28012c4686d'),\n saveAndPrintSnapshotsPrivilege: SafeGuid.parse('09f6cec5-c339-4248-b675-3ef52fd5883a'),\n useAudioPrivilege: SafeGuid.parse('18a3a89c-5c63-462f-8853-2f4c5fb00078'),\n setPtzPatternPrivilege: SafeGuid.parse('0bb88e83-1ade-4d26-a891-fadff836c1c6'),\n usePtzAuxiliariesPrivilege: SafeGuid.parse('fe698f1c-f6ef-4965-814d-486140b9579e'),\n setPtzAuxiliariesPrivilege: SafeGuid.parse('4a6535ec-2879-4999-afb6-c4adc8216e78'),\n snoozeAlarmsPrivilege: SafeGuid.parse('ef45f8eb-0ee2-49a1-87b6-08c1c034fca9'),\n forwardAlarmsPrivilege: SafeGuid.parse('6cef2b0f-aed4-4f83-9144-4f58d60e720b'),\n forceAckAlarmPrivilege: SafeGuid.parse('E0AC9C66-2561-4D6D-95AB-40118CD5CD5A'),\n inventoryReportPrivilege: SafeGuid.parse('e949531f-58ae-432d-b7f5-48b9defa2a62'),\n incidentReportMCPrivilege: SafeGuid.parse('b9f4ed40-d6b0-4088-9a3e-2cbca0690ae6'),\n incidentBaseReportMCPrivilege: SafeGuid.parse('3A0B09A4-2486-497C-AF57-26D7445045A7'),\n incidentProfilesReportMCPrivilege: SafeGuid.parse('5E1BAC29-40B4-49DD-8074-449DD2929EE9'),\n logicalViewTaskPrivilege: SafeGuid.parse('83468c8f-4453-4ead-ada8-50878dd03d32'),\n mapDesignerTaskPrivilege: SafeGuid.parse('80d89b24-5d2f-45fb-a54a-49b2b3102e02'),\n mapMonitoringTaskPrivilege: SafeGuid.parse('17574dde-92d5-430b-b4ab-24b50b48d063'),\n mapEditLayersPrivilege: SafeGuid.parse('17876748-50C9-4F36-97F0-F0862D38967E'),\n systemTaskPrivilege: SafeGuid.parse('4110908d-d55a-4af4-85d5-9404fe449a9a'),\n systemStatusTaskPrivilege: SafeGuid.parse('25bc8760-d4b9-4e8c-b127-ad7a407f179b'),\n videoManagementTaskPrivilege: SafeGuid.parse('b9956702-71f4-4085-a57b-5b0833286552'),\n accessControlTaskPrivilege: SafeGuid.parse('585a4682-6c5a-4eed-b1c8-eec4dce4bb7b'),\n intrusionDetectionTaskPrivilege: SafeGuid.parse('4c17b488-3c76-463b-bf89-e4faa317f115'),\n remoteSecurityDeskTaskPrivilege: SafeGuid.parse('9de5a91b-df80-4fcb-9395-c6c9ae27f3cf'),\n lprTaskPrivilege: SafeGuid.parse('3e366ef8-2a77-4873-8215-306ba312fb16'),\n pluginTaskPrivilege: SafeGuid.parse('413c53d7-fdb5-43ba-aee7-17ab5f69705e'),\n incidentMonitoringTaskPrivilege: SafeGuid.parse('5bd2cd08-6084-4aa2-8fb0-ca0a8f6d1030'),\n incidentConfigurationTaskPrivilege: SafeGuid.parse('FDF1988A-F8BB-437A-82B2-798C261986F7'),\n generalSettingsCustomFieldsPrivilege: SafeGuid.parse('3A454E27-4952-480F-9712-9ED8351B882A'),\n generalSettingsEventsPrivilege: SafeGuid.parse('4AAE9E60-D959-48D3-A728-11727A20A333'),\n generalSettingsActionsPrivilege: SafeGuid.parse('49FAC58F-F8F5-4232-9812-74C8FDBCA001'),\n generalSettingsLogicalIdPrivilege: SafeGuid.parse('7F3B935F-3E50-4722-B78B-06E1746406CC'),\n generalSettingsPasswordSettingsPrivilege: SafeGuid.parse('988127A3-3B05-40AA-B62C-DB80D1587FA8'),\n generalSettingsActivityTrailsPrivilege: SafeGuid.parse('2EAFBADC-ED8B-4D5A-AF18-4E800060D760'),\n generalSettingsAudioPrivilege: SafeGuid.parse('DD28CB8D-837B-4540-B203-9775FEDD9EA8'),\n generalSettingsIncidentCategoriesPrivilege: SafeGuid.parse('8077AA4B-2085-48B6-9AEC-B3B88288EF7A'),\n generalSettingsFeaturesPrivilege: SafeGuid.parse('AD8C5C4C-8AD2-4E8F-923A-1D46B44B17E8'),\n allowAlarmManagementPrivilege: SafeGuid.parse('c1514a8e-a820-4d4b-a51f-e5c5802ca58b'),\n explicitlyUnlockDoorPrivilege: SafeGuid.parse('6c5daa2a-f973-4f02-91bd-629e01423d00'),\n allowVisitorManagementPrivilege: SafeGuid.parse('a71e8cb5-af6b-481f-b285-72afa1865f93'),\n patrollerPlaybackPrivilege: SafeGuid.parse('3b88ce52-50cd-4a7c-88e8-ee4a7e2bd73a'),\n allowVideoPrivilege: SafeGuid.parse('b1e51df7-a180-4cde-90c7-6f925b819838'),\n allowPlaybackVideoPrivilege: SafeGuid.parse('6ab50ae5-c1b0-4c68-b95d-f5d31b1f6911'),\n removePrivacyProtectionPrivilege: SafeGuid.parse('7E137A7F-5E6B-40B2-BABF-003FF65BAC94'),\n recordManuallyPrivilege: SafeGuid.parse('a3ef1ed7-b755-4774-b23c-b6ef3cb2b9fc'),\n protectVideoFilePrivilege: SafeGuid.parse('8990e485-4be1-4f82-a750-e166865df8c7'),\n unprotectVideoFilePrivilege: SafeGuid.parse('5485d763-95bc-4853-94ef-d3853b3cdc4d'),\n addBookmarkPrivilege: SafeGuid.parse('47fab8f5-db1a-4754-aa89-4da5d01c10ff'),\n editBookmarkPrivilege: SafeGuid.parse('e1903181-5e04-4d52-bc6e-8212d11cf161'),\n deleteBookmarkPrivilege: SafeGuid.parse('ef693a66-be97-4b1e-bd45-bcc893639925'),\n exportVideoPrivilege: SafeGuid.parse('5fcb1e19-d873-4b4d-939b-7cb4c301edd6'),\n singleUserExportPrivilege: SafeGuid.parse('a9eb3e1a-77a6-4199-a774-0df23af3aa22'),\n changeFocusAndIrisPrivilege: SafeGuid.parse('acaa8270-2deb-4654-860f-c027acfed80d'),\n basicPtzOperationsPrivilege: SafeGuid.parse('b04cddbe-b774-4735-ac7d-32c1adbabd2b'),\n lockPtzPrivilege: SafeGuid.parse('7a046bc2-07b4-41bb-834e-3ad7865112da'),\n togglePtzMenuPrivilege: SafeGuid.parse('496ec32f-acf3-4e56-bd70-ef89d14e398e'),\n usePtzPresetsPrivilege: SafeGuid.parse('22750895-0efa-421f-aac3-0935ebebe3a2'),\n editPtzPresetPrivilege: SafeGuid.parse('f0cc7c1a-c96c-4f0a-90cc-c96cb6014b4c'),\n usePtzPatternsPrivilege: SafeGuid.parse('1bcbe02e-0520-4b7c-87d5-726f2ad5b0f5'),\n acknowledgeAlarmsPrivilege: SafeGuid.parse('44a227bb-7bda-4719-9969-7703f0056241'),\n changeOwnPasswordPrivilege: SafeGuid.parse('4c1d911f-b123-44fb-8a37-487b8532fc14'),\n triggerAlarmPrivilege: SafeGuid.parse('0f106d44-3718-4562-bc02-d8ccfcc53ed4'),\n viewAdvancedCredentialInformationPrivilege: SafeGuid.parse('0a920d11-5a74-4733-8398-e4188ef565cd'),\n executeMacrosPrivilege: SafeGuid.parse('ca2a41e8-1d56-4172-95a8-261fb897c988'),\n cameraMaintenanceModePrivilege: SafeGuid.parse('f5d2d163-aebc-4dd2-bffd-ef8c8b068ad2'),\n createIncidentsPrivilege: SafeGuid.parse('416b7e52-9bf5-470e-8cad-c633e4e7b0ad'),\n modifyIncidentsPrivilege: SafeGuid.parse('7ef737f9-44e3-47bc-a54a-8fa0121cefca'),\n deleteIncidentsPrivilege: SafeGuid.parse('6F10E487-5356-4FFA-8E1E-F169841A63AD'),\n autoUnlockOverridePrivilege: SafeGuid.parse('89488826-4ffd-4110-8c6e-e1eaa9f7d95d'),\n viewWebPagesPrivilege: SafeGuid.parse('bc1dc983-3dd1-4667-bf8d-50531d7c6bd7'),\n viewLiveCovertHitsPrivilege: SafeGuid.parse('d879c53a-a0be-46f7-8935-2902bb3fa518'),\n sendEmailPrivilege: SafeGuid.parse('8dfc13cb-8d25-4fda-afb7-bbc15b2c08cd'),\n forgiveAntipassbackViolationPrivilege: SafeGuid.parse('bd805edb-ce8c-42dc-8f26-0d736f582ea6'),\n sendMessagePrivilege: SafeGuid.parse('119df527-c009-4d5d-a1d0-eecfb01db92b'),\n sendUserTaskPrivilege: SafeGuid.parse('30ac1903-c55b-419c-be4c-dd7c431dada1'),\n playSoundPrivilege: SafeGuid.parse('0eeebcdb-aa10-4f4a-856a-925c91e1bf2e'),\n triggerOutputPrivilege: SafeGuid.parse('1e86af99-963d-410e-9307-8a04fd3222af'),\n printAndExportReportsPrivilege: SafeGuid.parse('c86bc49c-1ab8-4bf5-bb17-556a19253232'),\n removeResultsFromReportPrivilege: SafeGuid.parse('e1fb4be7-a1dd-40e4-b5da-96bf5253d3d4'),\n protectReadsHitsPrivilege: SafeGuid.parse('d66f9401-ee23-4de3-8415-20cb636c1375'),\n deleteLprHitPrivilege: SafeGuid.parse('63f17925-6b55-4fbb-82ed-fc6e80e80084'),\n triggerPastReadMatchingPrivilege: SafeGuid.parse('f0e72fd6-124e-4fe5-bc2e-824969b559ac'),\n reconcileInventoriesPrivilege: SafeGuid.parse('a34a1926-32bf-4d9b-a778-5a1e73813b54'),\n parkingZoneInventoryResetPrivilege: SafeGuid.parse('08069FFE-2977-4C9D-8A29-7EAA25BB6DFE'),\n parkingZoneSetOccupancyPrivilege: SafeGuid.parse('DC5C522F-6951-4E84-BDF0-B1F8C068440C'),\n updateInlotViolationsPrivilege: SafeGuid.parse('F283C0B8-D21C-40BF-9B5A-50E55BE7F518'),\n hotlistAndPermitEditorPrivilege: SafeGuid.parse('73adbba6-59bf-42ff-8ce8-7cff9e0841d4'),\n modifyDeleteInventoryReadsPrivilege: SafeGuid.parse('d51cc6dc-f31a-467a-ae6b-da343b401cb5'),\n editReadsPrivilege: SafeGuid.parse('5ea6e83d-0602-4ad6-b295-2e9478d2c612'),\n armDisarmIntrusionAreaPrivilege: SafeGuid.parse('112b1b66-418d-400f-add4-932ec7d3d67c'),\n triggerIntrusionAlarmPrivilege: SafeGuid.parse('d9ae66a3-ea94-408c-9434-c61db6088433'),\n silenceIntrusionAlarmPrivilege: SafeGuid.parse('5ab0955f-19f9-404f-9215-9d5e0dedb3fd'),\n ackIntrusionAlarmPrivilege: SafeGuid.parse('81b04e90-6797-466f-a267-ce08c7959f97'),\n armDisarmZonesPrivilege: SafeGuid.parse('2caee185-8227-4791-afe9-6f3bd989aa4b'),\n useSpecificCommandsPrivilege: SafeGuid.parse('6a74c0be-4288-11df-ab45-02ae55d89593'),\n overrideLockPtzPrivilege: SafeGuid.parse('63d02de9-ff9e-49ac-aad8-88262b5f951d'),\n changeWorkspacePrivilege: SafeGuid.parse('77064f62-5ecc-4916-b6a1-b67849cf3421'),\n startStopGuardtourPrivilege: SafeGuid.parse('dfd24407-8b4c-4768-8141-f8c69a3453bf'),\n changeSecurityDeskOptionsPrivilege: SafeGuid.parse('708c535c-60b2-4922-993d-937565032435'),\n changeTileContextPrivilege: SafeGuid.parse('15595806-92d1-4cda-97b2-a423550862d7'),\n changeTilePatternPrivilege: SafeGuid.parse('c5d3f637-e9f0-4be6-a102-7945fdae4872'),\n editTilePatternPrivilege: SafeGuid.parse('a52ac7f8-01b7-4fea-b05f-5da61d886791'),\n changeClientViewsPrivilege: SafeGuid.parse('72233940-ce2e-4508-96e7-b9a3604947a4'),\n cameraAnalyticsPrivilege: SafeGuid.parse('82b535c0-61d6-4586-8a62-7609aa6431bd'),\n digitalZoomPrivilege: SafeGuid.parse('b93970a3-18d1-4888-8daf-a812ccb3fe06'),\n displayVideoOverlaysPrivilege: SafeGuid.parse('3c043110-84f9-4513-a453-a27c9c52f7fa'),\n overrideVideoQualityPrivilege: SafeGuid.parse('390a8e0c-498d-45ab-8b24-67f1c7dd7627'),\n viewCameraSequencePrivilege: SafeGuid.parse('a30b505b-17d1-4cd8-980e-e6a7aed779d2'),\n startStopSequencePrivilege: SafeGuid.parse('28adb76e-2a90-4359-a373-e4e5667c76d4'),\n unitDiscoveryToolPrivilege: SafeGuid.parse('681c55ce-a869-419d-804a-1fdd53ec93f8'),\n selectManufacturersPrivilege: SafeGuid.parse('27ab8cbe-947f-4057-a3f5-c33c50a74438'),\n addUnitManuallyPrivilege: SafeGuid.parse('cab9216d-746a-4062-9be9-470a6ee41353'),\n moveUnitToolPrivilege: SafeGuid.parse('e7da184b-db32-4bd8-a39d-92c494754531'),\n silenceSoundBuzzerPrivilege: SafeGuid.parse('a79df101-9fa7-4bae-9470-b2a06b4b6c91'),\n maintenanceModePrivilege: SafeGuid.parse('95355180-a73a-4059-9e77-b129a2d37051'),\n emailReportPrivilege: SafeGuid.parse('aae95954-c0f0-4e1a-8fad-d2e2f18888cc'),\n displayEntityInSecurityDeskPrivilege: SafeGuid.parse('99d38ce8-0bc6-4e07-8cd4-1817c547c3f9'),\n convertExportedFilesPrivilege: SafeGuid.parse('278408e7-7dfa-44d9-a767-239c1063c46b'),\n resetPeopleCountPrivilege: SafeGuid.parse('44a30977-dbfd-4542-b634-69adb96bc3fe'),\n createMobileCredentialPrivilege: SafeGuid.parse('6e49046f-d854-451f-b901-b9c40f0db99a'),\n convertSharedEntitiesToLocalPrivilege: SafeGuid.parse('7a484aa5-085f-47d5-aa6a-e768d440d12e'),\n blockUnblockVideoPrivilege: SafeGuid.parse('910f2677-dc77-4904-8fd9-abfe2e2f99a1'),\n setThreatLevelPrivilege: SafeGuid.parse('08d9fcba-ecad-4b75-b7e3-9acb8b27ba4b'),\n removeEncryptionPrivilege: SafeGuid.parse('038408e7-4dfa-44d9-a767-239d1063c46b'),\n viewStreamStatisticsPrivilege: SafeGuid.parse('E8BB6484-F28C-4918-A4CB-9C18ACB93D0C'),\n viewStreamStatusPrivilege: SafeGuid.parse('3DD59613-3D8A-4953-AC58-139135FA9229'),\n viewRolePropertiesPrivilege: SafeGuid.parse('686731a2-12b5-479c-84f1-a8f627be09e5'),\n editRolePropertiesPrivilege: SafeGuid.parse('97dac763-eac5-4377-a73e-b7ea95215751'),\n createNewRolePrivilege: SafeGuid.parse('4717b48d-c37a-447a-a00a-2f00afb76b57'),\n deleteRolePrivilege: SafeGuid.parse('5aa44376-5ceb-4fde-936e-df1570312607'),\n viewUserPropertiesPrivilege: SafeGuid.parse('87f5ed6b-b67a-4a19-acab-d20c1962fd02'),\n editUserPropertiesPrivilege: SafeGuid.parse('3e421c07-625b-4fd8-9fcf-4a40304fbebd'),\n createNewUserPrivilege: SafeGuid.parse('d58d7e1a-e834-4d74-80d9-744c0adedfc7'),\n deleteUserPrivilege: SafeGuid.parse('b47c8146-b2f6-4f68-a20a-d7f22ee382d7'),\n viewUserGroupPropertiesPrivilege: SafeGuid.parse('024D7AB4-F392-4E40-B50F-AA8672188728'),\n editUserGroupPropertiesPrivilege: SafeGuid.parse('512516AC-8596-414B-83D6-2D20DFB2D651'),\n createNewUserGroupPrivilege: SafeGuid.parse('610720D7-6D97-4DDF-8014-5779030E375D'),\n deleteUserGroupPrivilege: SafeGuid.parse('D41261D2-49B5-479B-9C5B-5D1C17CB4A0B'),\n viewServerPropertiesPrivilege: SafeGuid.parse('b0464ce7-7fef-4ca1-bcd5-8bac6701e289'),\n editServerPrivilege: SafeGuid.parse('624cbf59-d991-45d8-963b-90455899ea92'),\n deleteServerPrivilege: SafeGuid.parse('a975e160-c7ea-4ef3-8cda-ced929a55de3'),\n viewNetworkPropertiesPrivilege: SafeGuid.parse('23e4c655-51ea-4bf4-9ab7-99e08e250765'),\n editNetworkPrivilege: SafeGuid.parse('e3624337-9536-45e0-8eaa-104a36254eea'),\n viewPartitionPropertiesPrivilege: SafeGuid.parse('6468f715-fa99-476e-a9f7-2e34ad4b01c4'),\n editPartitionPropertiesPrivilege: SafeGuid.parse('580f7a96-7eb7-46df-ae53-e43a9e6bfdee'),\n createNewPartitionPrivilege: SafeGuid.parse('6fead15d-dcf2-4a98-8fbd-7f65054843cf'),\n deletePartitionPrivilege: SafeGuid.parse('06dfbf4b-4577-47be-946a-ad8bc39be2ae'),\n hitsMultiRegionPrivilege: SafeGuid.parse('c12c52fc-c40a-4a93-a1c2-2e4796971e85'),\n readsMultiregionPrivilege: SafeGuid.parse('569744f6-2197-41c6-a051-e847ba3e34fb'),\n viewTileLayoutsPrivilege: SafeGuid.parse('d7b40f19-5e11-4a85-b4b6-e6807d38baee'),\n modifyTileLayoutsPrivilege: SafeGuid.parse('031dc559-2052-4230-9912-dfd1daceac31'),\n addTileLayoutsPrivilege: SafeGuid.parse('531ddb00-e9ab-4908-853e-95f59f46251b'),\n deleteTileLayoutsPrivilege: SafeGuid.parse('fa6f726f-797d-4986-ba1f-39f2b4d81e54'),\n editAlarmContextPrivilege: SafeGuid.parse('D13B9064-2A09-4E97-87A0-1509EAACB823'),\n viewChartsPrivilege: SafeGuid.parse('F37213A1-0114-4A8D-BD58-CB30BD100EC5'),\n accessCameraStreamingInfoPrivilege: SafeGuid.parse('cff2dc59-ea63-4c19-af54-748a4ae546e7'),\n overrideElevatorAccessSchedulePrivilege: SafeGuid.parse('190C9B94-61F0-428F-8AF3-203C534FCC78'),\n viewMobileUsersOnMapPrivilege: SafeGuid.parse('ED662EA4-57E3-4DF5-BBB2-6E9FC5FBBF93'),\n setCardholderSecurityClearancePrivilege: SafeGuid.parse('17d60dba-4417-4305-a532-1ab6089e817c'),\n});\n","import { InjectionToken } from '@angular/core';\nimport { DetailedFeatureFlagGroup } from './feature-flag';\n\nexport const KnownFeatureFlagsToken = new InjectionToken('Known Feature Flags');\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DetailedFeatureFlagGroup } from './feature-flag';\nimport { KnownFeatureFlagsToken } from './tokens';\n/**\n * This module is used merely to register feature flags by adding them to an injection token, KnownFeatureFlagsToken.\n */\n@NgModule()\nexport class FeatureFlagsModule {\n static forRoot(...featureFlagGroups: DetailedFeatureFlagGroup[]): ModuleWithProviders {\n const providers = [];\n if (featureFlagGroups?.length) {\n providers.push({\n provide: KnownFeatureFlagsToken,\n useValue: featureFlagGroups,\n multi: true,\n });\n }\n return {\n ngModule: FeatureFlagsModule,\n providers,\n };\n }\n}\n","// Autogenerated: v2/help/enumerations/ApiAccessStatus?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class AccessStatus {\n public static Active = 'Active';\n public static Inactive = 'Inactive';\n public static Lost = 'Lost';\n public static Stolen = 'Stolen';\n public static Expired = 'Expired';\n public static Requested = 'Requested';\n\n public static readonly values = [\n AccessStatus.Active,\n AccessStatus.Inactive,\n AccessStatus.Lost,\n AccessStatus.Stolen,\n AccessStatus.Expired,\n AccessStatus.Requested\n ];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { TextFlavor } from '@genetec/gelato';\n\n@Pipe({ name: 'accessStatusToColor' })\nexport class AccessStatusToColorPipe implements PipeTransform {\n public transform(accessStatus: AccessStatus): TextFlavor {\n switch (accessStatus) {\n case AccessStatus.Active:\n // green\n return TextFlavor.Success;\n case AccessStatus.Inactive:\n case AccessStatus.Requested:\n // white\n return TextFlavor.Normal;\n case AccessStatus.Expired:\n case AccessStatus.Lost:\n case AccessStatus.Stolen:\n // red\n return TextFlavor.Error;\n default:\n return TextFlavor.Normal;\n }\n }\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IActivityTrailClient {\n /**\n * Adds a Forgive Antipassback Violation entry to the activity trail\n * @return Success\n */\n forgiveAntipassbackViolation(body: ForgiveAntipassbackViolation): Observable;\n /**\n * Adds a Save snapshot entry to the activity trail\n * @return Success\n */\n saveSnapshot(body: SaveSnapshotInfo): Observable;\n}\n\n@Injectable()\nexport class ActivityTrailClient implements IActivityTrailClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Adds a Forgive Antipassback Violation entry to the activity trail\n * @return Success\n */\n forgiveAntipassbackViolation(body: ForgiveAntipassbackViolation): Observable {\n let url_ = this.baseUrl + \"/Api/ActivityTrail/ForgiveAntipassbackViolation\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processForgiveAntipassbackViolation(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processForgiveAntipassbackViolation(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processForgiveAntipassbackViolation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Adds a Save snapshot entry to the activity trail\n * @return Success\n */\n saveSnapshot(body: SaveSnapshotInfo): Observable {\n let url_ = this.baseUrl + \"/Api/ActivityTrail/SaveSnapshot\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSaveSnapshot(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSaveSnapshot(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSaveSnapshot(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IEventsClient {\n /**\n * Gets the cache lifetime of events\n * @return Success\n */\n getCacheLifetimeMilliseconds(): Observable;\n /**\n * Retrieve the list of all the available event definitions\n * @return Success\n */\n events(): Observable;\n /**\n * Retrieve the list of latest events for the specified entity\n * @return Success\n */\n latestEvents(entityId: IGuid, maxResults: number): Observable;\n /**\n * Retrieve the entity types supported by the event repositories\n * @return Success\n */\n supportedEntityTypes(): Observable;\n /**\n * Starts monitoring live events for the provided entity\n * @return Success\n */\n startMonitoringEvents(entityIds: IGuid[]): Observable;\n /**\n * Starts monitoring live events for the provided entity\n * @return Success\n */\n stopMonitoringEvents(entityIds: IGuid[]): Observable;\n}\n\n@Injectable()\nexport class EventsClient implements IEventsClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Gets the cache lifetime of events\n * @return Success\n */\n getCacheLifetimeMilliseconds(): Observable {\n let url_ = this.baseUrl + \"/Api/Events/GetCacheLifetimeMilliseconds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetCacheLifetimeMilliseconds(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetCacheLifetimeMilliseconds(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCacheLifetimeMilliseconds(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the list of all the available event definitions\n * @return Success\n */\n events(): Observable {\n let url_ = this.baseUrl + \"/Api/Events/Events\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processEvents(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processEvents(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processEvents(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(EventDefinition.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the list of latest events for the specified entity\n * @return Success\n */\n latestEvents(entityId: IGuid, maxResults: number): Observable {\n let url_ = this.baseUrl + \"/Api/Events/LatestEvents?\";\n if (entityId === undefined || entityId === null)\n throw new Error(\"The parameter 'entityId' must be defined and cannot be null.\");\n else\n url_ += \"entityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (maxResults === undefined || maxResults === null)\n throw new Error(\"The parameter 'maxResults' must be defined and cannot be null.\");\n else\n url_ += \"maxResults=\" + encodeURIComponent(\"\" + maxResults) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processLatestEvents(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processLatestEvents(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLatestEvents(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(EventEntry.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the entity types supported by the event repositories\n * @return Success\n */\n supportedEntityTypes(): Observable {\n let url_ = this.baseUrl + \"/Api/Events/SupportedEntityTypes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSupportedEntityTypes(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSupportedEntityTypes(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSupportedEntityTypes(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(EntityTypeResult.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Starts monitoring live events for the provided entity\n * @return Success\n */\n startMonitoringEvents(entityIds: IGuid[]): Observable {\n let url_ = this.baseUrl + \"/Api/Events/StartMonitoringEvents?\";\n if (entityIds === undefined || entityIds === null)\n throw new Error(\"The parameter 'entityIds' must be defined and cannot be null.\");\n else\n entityIds && entityIds.forEach(item => { url_ += \"entityIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processStartMonitoringEvents(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processStartMonitoringEvents(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processStartMonitoringEvents(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Starts monitoring live events for the provided entity\n * @return Success\n */\n stopMonitoringEvents(entityIds: IGuid[]): Observable {\n let url_ = this.baseUrl + \"/Api/Events/StopMonitoringEvents?\";\n if (entityIds === undefined || entityIds === null)\n throw new Error(\"The parameter 'entityIds' must be defined and cannot be null.\");\n else\n entityIds && entityIds.forEach(item => { url_ += \"entityIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processStopMonitoringEvents(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processStopMonitoringEvents(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processStopMonitoringEvents(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IFeaturesClient {\n /**\n * Retrieve the available global features for the UI\n * @return Success\n */\n getAvailableFeatures(): Observable;\n}\n\n@Injectable()\nexport class FeaturesClient implements IFeaturesClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Retrieve the available global features for the UI\n * @return Success\n */\n getAvailableFeatures(): Observable {\n let url_ = this.baseUrl + \"/Api/Features/AvailableFeatures\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetAvailableFeatures(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetAvailableFeatures(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAvailableFeatures(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(_guidConverters.toGuid(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IFilterClient {\n /**\n * @param body (optional) \n * @return Success\n */\n getFilterContent(body?: FilterContext | undefined): Observable;\n}\n\n@Injectable()\nexport class FilterClient implements IFilterClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getFilterContent(body?: FilterContext | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Filter/FilterContent\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetFilterContent(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetFilterContent(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetFilterContent(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FilterContent.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ILanguageClient {\n /**\n * Retrieve the list of available languages from the resources\n * @return Success\n */\n getAvailableLanguages(): Observable;\n /**\n * Extract all the string entries used in the WebApplication front end from the Javascript files\n * @param language (optional) Language to use\n * @return Success\n */\n getAllWebClientStrings(language?: string | undefined): Observable;\n /**\n * Retrieve the copyrights information from the resources\n * @param language (optional) Language to use\n * @return Success\n */\n getCopyrights(language?: string | undefined): Observable;\n /**\n * @param body (optional) \n * @return Success\n */\n getStrings(body?: StringsQuery | undefined): Observable;\n}\n\n@Injectable()\nexport class LanguageClient implements ILanguageClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Retrieve the list of available languages from the resources\n * @return Success\n */\n getAvailableLanguages(): Observable {\n let url_ = this.baseUrl + \"/Api/Language/AvailableLanguages\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetAvailableLanguages(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetAvailableLanguages(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAvailableLanguages(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(Language.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Extract all the string entries used in the WebApplication front end from the Javascript files\n * @param language (optional) Language to use\n * @return Success\n */\n getAllWebClientStrings(language?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Language/AllWebClientStrings?\";\n if (language === null)\n throw new Error(\"The parameter 'language' cannot be null.\");\n else if (language !== undefined)\n url_ += \"language=\" + encodeURIComponent(\"\" + language) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetAllWebClientStrings(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetAllWebClientStrings(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAllWebClientStrings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringEntries.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the copyrights information from the resources\n * @param language (optional) Language to use\n * @return Success\n */\n getCopyrights(language?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Language/Copyrights?\";\n if (language === null)\n throw new Error(\"The parameter 'language' cannot be null.\");\n else if (language !== undefined)\n url_ += \"language=\" + encodeURIComponent(\"\" + language) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetCopyrights(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetCopyrights(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCopyrights(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CopyrightInfo.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getStrings(body?: StringsQuery | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Language/QueryStrings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetStrings(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetStrings(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStrings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringEntries.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface INotificationsClient {\n /**\n * @return Success\n */\n getNotifications(body: NotificationsFilter): Observable;\n}\n\n@Injectable()\nexport class NotificationsClient implements INotificationsClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n getNotifications(body: NotificationsFilter): Observable {\n let url_ = this.baseUrl + \"/Api/Notifications/Notifications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetNotifications(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetNotifications(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNotifications(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(NotificationItem.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IOptionsClient {\n /**\n * @return Success\n */\n getOptions(): Observable;\n /**\n * @return Success\n */\n setOptions(id: IGuid, body: any): Observable;\n}\n\n@Injectable()\nexport class OptionsClient implements IOptionsClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n getOptions(): Observable {\n let url_ = this.baseUrl + \"/Api/Options/Options\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetOptions(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetOptions(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(OptionSection.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n setOptions(id: IGuid, body: any): Observable {\n let url_ = this.baseUrl + \"/Api/Options/Options/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSetOptions(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSetOptions(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSetOptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IPasswordStrengthClient {\n /**\n * Returns the score associated to the password strength\n * @param body (optional) \n * @return Success\n */\n passwordStrength(body?: PasswordStrengthRequest | undefined): Observable;\n}\n\n@Injectable()\nexport class PasswordStrengthClient implements IPasswordStrengthClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Returns the score associated to the password strength\n * @param body (optional) \n * @return Success\n */\n passwordStrength(body?: PasswordStrengthRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/PasswordStrength/PasswordStrength\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPasswordStrength(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPasswordStrength(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPasswordStrength(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IResourcesClient {\n /**\n * Retrieve the resources with the specified ids from the file cache\n * @param body Custom iconquery\n * @return Success\n */\n getCustomIcon(body: CustomIconQueryEntry[]): Observable<{ [key: string]: string; }>;\n /**\n * Retrieve the resources with the specified ids from the file cache\n * @param body File cache query\n * @return Success\n */\n getFileCache(body: FileCacheQueryEntry[]): Observable<{ [key: string]: string; }>;\n /**\n * Retrieve a new AES symmetric encryption key for the logged user\n * @return Success\n */\n getEncryptionKey(): Observable;\n /**\n * Retrieve the resources with the specified ids\n * @param body Resources query\n * @return Success\n */\n getResources(body: string[]): Observable<{ [key: string]: string; }>;\n}\n\n@Injectable()\nexport class ResourcesClient implements IResourcesClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Retrieve the resources with the specified ids from the file cache\n * @param body Custom iconquery\n * @return Success\n */\n getCustomIcon(body: CustomIconQueryEntry[]): Observable<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/Api/Resources/CustomIcon\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetCustomIcon(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetCustomIcon(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable<{ [key: string]: string; }>;\n }\n } else\n return _observableThrow(response_) as any as Observable<{ [key: string]: string; }>;\n }));\n }\n\n protected processGetCustomIcon(response: HttpResponseBase): Observable<{ [key: string]: string; }> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData200) {\n result200 = {} as any;\n for (let key in resultData200) {\n if (resultData200.hasOwnProperty(key))\n (result200)![key] = resultData200[key] !== undefined ? resultData200[key] : null;\n }\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData400)) {\n result400 = [] as any;\n for (let item of resultData400)\n result400!.push(item);\n }\n else { \n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<{ [key: string]: string; }>(null as any);\n }\n\n /**\n * Retrieve the resources with the specified ids from the file cache\n * @param body File cache query\n * @return Success\n */\n getFileCache(body: FileCacheQueryEntry[]): Observable<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/Api/Resources/FileCache\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetFileCache(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetFileCache(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable<{ [key: string]: string; }>;\n }\n } else\n return _observableThrow(response_) as any as Observable<{ [key: string]: string; }>;\n }));\n }\n\n protected processGetFileCache(response: HttpResponseBase): Observable<{ [key: string]: string; }> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData200) {\n result200 = {} as any;\n for (let key in resultData200) {\n if (resultData200.hasOwnProperty(key))\n (result200)![key] = resultData200[key] !== undefined ? resultData200[key] : null;\n }\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData400)) {\n result400 = [] as any;\n for (let item of resultData400)\n result400!.push(item);\n }\n else { \n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<{ [key: string]: string; }>(null as any);\n }\n\n /**\n * Retrieve a new AES symmetric encryption key for the logged user\n * @return Success\n */\n getEncryptionKey(): Observable {\n let url_ = this.baseUrl + \"/Api/Resources/EncryptionKey\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetEncryptionKey(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetEncryptionKey(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetEncryptionKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = EncryptionKey.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the resources with the specified ids\n * @param body Resources query\n * @return Success\n */\n getResources(body: string[]): Observable<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/Api/Resources/Resources\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetResources(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetResources(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable<{ [key: string]: string; }>;\n }\n } else\n return _observableThrow(response_) as any as Observable<{ [key: string]: string; }>;\n }));\n }\n\n protected processGetResources(response: HttpResponseBase): Observable<{ [key: string]: string; }> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData200) {\n result200 = {} as any;\n for (let key in resultData200) {\n if (resultData200.hasOwnProperty(key))\n (result200)![key] = resultData200[key] !== undefined ? resultData200[key] : null;\n }\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData400)) {\n result400 = [] as any;\n for (let item of resultData400)\n result400!.push(item);\n }\n else { \n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<{ [key: string]: string; }>(null as any);\n }\n}\n\nexport interface ISearchClient {\n /**\n * Execute the search and retrieve the search results\n * @param body The search context query\n * @return Success\n */\n getSearchResults(body: SearchContext): Observable;\n}\n\n@Injectable()\nexport class SearchClient implements ISearchClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Execute the search and retrieve the search results\n * @param body The search context query\n * @return Success\n */\n getSearchResults(body: SearchContext): Observable {\n let url_ = this.baseUrl + \"/Api/Search/SearchResults\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetSearchResults(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetSearchResults(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSearchResults(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(SearchResult.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ISessionClient {\n /**\n * Get session events\n * @return Success\n */\n getEvents(): Observable;\n /**\n * Fetches the necessary info to display the login page.\n Mainly used to retrieve the Open Id providers\n * @param redirectUri (optional) URL that the client used to access the Web App,\n will be stored for potential SSO logon that need to redirect to that exact URL\n * @return Success\n */\n getLoginInfo(redirectUri?: string | undefined): Observable;\n /**\n * Initiate the Open Id login workflow.\n * @param providerId id of the provider to connect to\n * @param redirectUri (optional) Client URL to redirect to (the public one that the users see in their browsers)\n */\n challengeAuthentication(providerId: string, redirectUri?: string | undefined): Observable;\n /**\n * Logoff\n * @return Success\n */\n logoff(): Observable;\n /**\n * Open Id logoff\n * @param redirectUri (optional) \n */\n signoutOpenid(redirectUri?: string | undefined): Observable;\n /**\n * Check if the client making the call is authenticated with Open Id\n * @return Success\n */\n getIsAuthenticatedWithOpenId(): Observable;\n}\n\n@Injectable()\nexport class SessionClient implements ISessionClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Get session events\n * @return Success\n */\n getEvents(): Observable {\n let url_ = this.baseUrl + \"/Api/Session/Events\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetEvents(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetEvents(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetEvents(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(item);\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Fetches the necessary info to display the login page.\n Mainly used to retrieve the Open Id providers\n * @param redirectUri (optional) URL that the client used to access the Web App,\n will be stored for potential SSO logon that need to redirect to that exact URL\n * @return Success\n */\n getLoginInfo(redirectUri?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Session/LoginInfo?\";\n if (redirectUri === null)\n throw new Error(\"The parameter 'redirectUri' cannot be null.\");\n else if (redirectUri !== undefined)\n url_ += \"redirectUri=\" + encodeURIComponent(\"\" + redirectUri) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetLoginInfo(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetLoginInfo(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetLoginInfo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = LoginInfo.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Initiate the Open Id login workflow.\n * @param providerId id of the provider to connect to\n * @param redirectUri (optional) Client URL to redirect to (the public one that the users see in their browsers)\n */\n challengeAuthentication(providerId: string, redirectUri?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Session/ChallengeAuthentication?\";\n if (providerId === undefined || providerId === null)\n throw new Error(\"The parameter 'providerId' must be defined and cannot be null.\");\n else\n url_ += \"providerId=\" + encodeURIComponent(\"\" + providerId) + \"&\";\n if (redirectUri === null)\n throw new Error(\"The parameter 'redirectUri' cannot be null.\");\n else if (redirectUri !== undefined)\n url_ += \"redirectUri=\" + encodeURIComponent(\"\" + redirectUri) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processChallengeAuthentication(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processChallengeAuthentication(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processChallengeAuthentication(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 302) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Redirect\", status, _responseText, _headers);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Logoff\n * @return Success\n */\n logoff(): Observable {\n let url_ = this.baseUrl + \"/Api/Session/Logoff\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processLogoff(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processLogoff(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLogoff(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Open Id logoff\n * @param redirectUri (optional) \n */\n signoutOpenid(redirectUri?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Session/SignoutOpenid?\";\n if (redirectUri === null)\n throw new Error(\"The parameter 'redirectUri' cannot be null.\");\n else if (redirectUri !== undefined)\n url_ += \"redirectUri=\" + encodeURIComponent(\"\" + redirectUri) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSignoutOpenid(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSignoutOpenid(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSignoutOpenid(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 302) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Redirect\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Check if the client making the call is authenticated with Open Id\n * @return Success\n */\n getIsAuthenticatedWithOpenId(): Observable {\n let url_ = this.baseUrl + \"/Api/Session/IsAuthenticatedWithOpenId\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetIsAuthenticatedWithOpenId(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetIsAuthenticatedWithOpenId(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetIsAuthenticatedWithOpenId(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ITasksClient {\n /**\n * Gets all tasks matching the search criteria.\n As tasks are hierarchical, only the direct children are returned.\n * @param parentPath (optional) \n * @return Success\n */\n retrieve(visibility: TaskVisibility, parentPath?: string | undefined): Observable;\n /**\n * Saves a task\n * @param body (optional) Attributes of the task to save\n * @return Accepted\n */\n save(body?: SaveRequest | undefined): Observable;\n /**\n * Anticipates the outcome of a save operation on a task.\n Indicates if a task can be saved, and if so, if the task will overwrite an existing one or create a new one.\n * @return Success\n */\n evaluateSave(fullPath: string, taskSubtype: IGuid, taskType: IGuid, visibility: TaskVisibility): Observable;\n}\n\n@Injectable()\nexport class TasksClient implements ITasksClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Gets all tasks matching the search criteria.\n As tasks are hierarchical, only the direct children are returned.\n * @param parentPath (optional) \n * @return Success\n */\n retrieve(visibility: TaskVisibility, parentPath?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Tasks/Tasks?\";\n if (visibility === undefined || visibility === null)\n throw new Error(\"The parameter 'visibility' must be defined and cannot be null.\");\n else\n url_ += \"Visibility=\" + encodeURIComponent(\"\" + visibility) + \"&\";\n if (parentPath === null)\n throw new Error(\"The parameter 'parentPath' cannot be null.\");\n else if (parentPath !== undefined)\n url_ += \"ParentPath=\" + encodeURIComponent(\"\" + parentPath) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processRetrieve(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processRetrieve(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRetrieve(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RetrieveResponse.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Saves a task\n * @param body (optional) Attributes of the task to save\n * @return Accepted\n */\n save(body?: SaveRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Tasks/Save\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSave(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSave(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSave(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 202) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Anticipates the outcome of a save operation on a task.\n Indicates if a task can be saved, and if so, if the task will overwrite an existing one or create a new one.\n * @return Success\n */\n evaluateSave(fullPath: string, taskSubtype: IGuid, taskType: IGuid, visibility: TaskVisibility): Observable {\n let url_ = this.baseUrl + \"/Api/Tasks/EvaluateSave?\";\n if (fullPath === undefined || fullPath === null)\n throw new Error(\"The parameter 'fullPath' must be defined and cannot be null.\");\n else\n url_ += \"FullPath=\" + encodeURIComponent(\"\" + fullPath) + \"&\";\n if (taskSubtype === undefined || taskSubtype === null)\n throw new Error(\"The parameter 'taskSubtype' must be defined and cannot be null.\");\n else\n url_ += \"TaskSubtype=\" + encodeURIComponent(\"\" + taskSubtype) + \"&\";\n if (taskType === undefined || taskType === null)\n throw new Error(\"The parameter 'taskType' must be defined and cannot be null.\");\n else\n url_ += \"TaskType=\" + encodeURIComponent(\"\" + taskType) + \"&\";\n if (visibility === undefined || visibility === null)\n throw new Error(\"The parameter 'visibility' must be defined and cannot be null.\");\n else\n url_ += \"Visibility=\" + encodeURIComponent(\"\" + visibility) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processEvaluateSave(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processEvaluateSave(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processEvaluateSave(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = EvaluateSaveResponse.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IThreatLevelClient {\n /**\n * @return Success\n */\n threatLevels(): Observable;\n /**\n * @return Success\n */\n setThreatLevel(threatLevelId: IGuid): Observable;\n}\n\n@Injectable()\nexport class ThreatLevelClient implements IThreatLevelClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n threatLevels(): Observable {\n let url_ = this.baseUrl + \"/Api/ThreatLevel/ThreatLevels\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processThreatLevels(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processThreatLevels(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processThreatLevels(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ThreatLevelInfo.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n setThreatLevel(threatLevelId: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/ThreatLevel/SetThreatLevel?\";\n if (threatLevelId === undefined || threatLevelId === null)\n throw new Error(\"The parameter 'threatLevelId' must be defined and cannot be null.\");\n else\n url_ += \"threatLevelId=\" + encodeURIComponent(\"\" + threatLevelId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSetThreatLevel(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSetThreatLevel(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSetThreatLevel(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ITimezonesClient {\n /**\n * Retrieve the timezone having the specified id\n * @param id Timezone's identifier\n * @return Success\n */\n getTimezone(id: string): Observable;\n /**\n * Extract all the available timezones\n * @return Success\n */\n getTimezones(): Observable;\n /**\n * Retrieve the current system's timezone\n * @return Success\n */\n getSystemTimezone(): Observable;\n}\n\n@Injectable()\nexport class TimezonesClient implements ITimezonesClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Retrieve the timezone having the specified id\n * @param id Timezone's identifier\n * @return Success\n */\n getTimezone(id: string): Observable {\n let url_ = this.baseUrl + \"/Api/Timezones/Timezone?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined and cannot be null.\");\n else\n url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetTimezone(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetTimezone(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTimezone(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ITimezoneInfo.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Extract all the available timezones\n * @return Success\n */\n getTimezones(): Observable {\n let url_ = this.baseUrl + \"/Api/Timezones/Timezones\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetTimezones(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetTimezones(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTimezones(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ITimezoneInfo.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the current system's timezone\n * @return Success\n */\n getSystemTimezone(): Observable {\n let url_ = this.baseUrl + \"/Api/Timezones/SystemTimezone\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetSystemTimezone(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetSystemTimezone(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSystemTimezone(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ITimezoneInfo.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IUserWatchlistClient {\n /**\n * @return Success\n */\n getUserWatchlist(): Observable;\n /**\n * @return Success\n */\n setUserWatchlist(body: Watchlist): Observable;\n}\n\n@Injectable()\nexport class UserWatchlistClient implements IUserWatchlistClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n getUserWatchlist(): Observable {\n let url_ = this.baseUrl + \"/Api/UserWatchlist/UserWatchlist\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetUserWatchlist(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetUserWatchlist(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUserWatchlist(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = Watchlist.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n setUserWatchlist(body: Watchlist): Observable {\n let url_ = this.baseUrl + \"/Api/UserWatchlist/UserWatchlist\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSetUserWatchlist(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSetUserWatchlist(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSetUserWatchlist(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IVersionClient {\n /**\n * Extract all the version information\n * @return Success\n */\n getVersionInfo(): Observable;\n}\n\n@Injectable()\nexport class VersionClient implements IVersionClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Extract all the version information\n * @return Success\n */\n getVersionInfo(): Observable {\n let url_ = this.baseUrl + \"/Api/Version/VersionInfo\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetVersionInfo(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetVersionInfo(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVersionInfo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VersionInfo.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class CopyrightInfo implements ICopyrightInfo {\n copyrights?: string | null;\n\n constructor(data?: ICopyrightInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.copyrights = _data[\"copyrights\"] !== undefined ? _data[\"copyrights\"] : null;\n }\n }\n\n static fromJS(data: any): CopyrightInfo {\n data = typeof data === 'object' ? data : {};\n let result = new CopyrightInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"copyrights\"] = this.copyrights !== undefined ? this.copyrights : null;\n return data;\n }\n\n clone(): CopyrightInfo {\n const json = this.toJSON();\n let result = new CopyrightInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICopyrightInfo {\n copyrights?: string | null;\n}\n\nexport class CustomIconQueryEntry implements ICustomIconQueryEntry {\n entityId!: IGuid;\n state?: CustomIconState;\n\n constructor(data?: ICustomIconQueryEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.entityId = _guidImplementation.from(_data[\"entityId\"]) !== undefined ? _guidImplementation.from(_data[\"entityId\"]) : null;\n this.state = _data[\"state\"] !== undefined ? _data[\"state\"] : null;\n }\n }\n\n static fromJS(data: any): CustomIconQueryEntry {\n data = typeof data === 'object' ? data : {};\n let result = new CustomIconQueryEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"entityId\"] = this.entityId?.toString() !== undefined ? this.entityId?.toString() : null;\n data[\"state\"] = this.state !== undefined ? this.state : null;\n return data;\n }\n\n clone(): CustomIconQueryEntry {\n const json = this.toJSON();\n let result = new CustomIconQueryEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICustomIconQueryEntry {\n entityId: IGuid;\n state?: CustomIconState;\n}\n\nexport enum CustomIconState {\n Normal = \"Normal\",\n Active = \"Active\",\n All = \"All\",\n}\n\nexport class EncryptionKey implements IEncryptionKey {\n key!: string;\n type!: string;\n\n constructor(data?: IEncryptionKey) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.key = _data[\"key\"] !== undefined ? _data[\"key\"] : null;\n this.type = _data[\"type\"] !== undefined ? _data[\"type\"] : null;\n }\n }\n\n static fromJS(data: any): EncryptionKey {\n data = typeof data === 'object' ? data : {};\n let result = new EncryptionKey();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"key\"] = this.key !== undefined ? this.key : null;\n data[\"type\"] = this.type !== undefined ? this.type : null;\n return data;\n }\n\n clone(): EncryptionKey {\n const json = this.toJSON();\n let result = new EncryptionKey();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEncryptionKey {\n key: string;\n type: string;\n}\n\nexport class EntityTypeResult implements IEntityTypeResult {\n type!: string;\n subType?: string | null;\n\n constructor(data?: IEntityTypeResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.type = _data[\"type\"] !== undefined ? _data[\"type\"] : null;\n this.subType = _data[\"subType\"] !== undefined ? _data[\"subType\"] : null;\n }\n }\n\n static fromJS(data: any): EntityTypeResult {\n data = typeof data === 'object' ? data : {};\n let result = new EntityTypeResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type !== undefined ? this.type : null;\n data[\"subType\"] = this.subType !== undefined ? this.subType : null;\n return data;\n }\n\n clone(): EntityTypeResult {\n const json = this.toJSON();\n let result = new EntityTypeResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEntityTypeResult {\n type: string;\n subType?: string | null;\n}\n\nexport enum EvaluateSaveOutcome {\n CannotBeSaved = \"CannotBeSaved\",\n WouldOverwrite = \"WouldOverwrite\",\n WouldCreate = \"WouldCreate\",\n}\n\nexport class EvaluateSaveRequest implements IEvaluateSaveRequest {\n fullPath!: string;\n taskSubtype!: IGuid;\n taskType!: IGuid;\n visibility!: TaskVisibility;\n\n protected _discriminator: string;\n\n constructor(data?: IEvaluateSaveRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"Genetec.WebApp.Core.Module.Models.Tasks.EvaluateSaveRequest, Genetec.WebApp.Core.Module\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.fullPath = _data[\"fullPath\"] !== undefined ? _data[\"fullPath\"] : null;\n this.taskSubtype = _guidImplementation.from(_data[\"taskSubtype\"]) !== undefined ? _guidImplementation.from(_data[\"taskSubtype\"]) : null;\n this.taskType = _guidImplementation.from(_data[\"taskType\"]) !== undefined ? _guidImplementation.from(_data[\"taskType\"]) : null;\n this.visibility = _data[\"visibility\"] !== undefined ? _data[\"visibility\"] : null;\n }\n }\n\n static fromJS(data: any): EvaluateSaveRequest {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Core.Module.Models.Tasks.SaveRequest, Genetec.WebApp.Core.Module\") {\n let result = new SaveRequest();\n result.init(data);\n return result;\n }\n let result = new EvaluateSaveRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"fullPath\"] = this.fullPath !== undefined ? this.fullPath : null;\n data[\"taskSubtype\"] = this.taskSubtype?.toString() !== undefined ? this.taskSubtype?.toString() : null;\n data[\"taskType\"] = this.taskType?.toString() !== undefined ? this.taskType?.toString() : null;\n data[\"visibility\"] = this.visibility !== undefined ? this.visibility : null;\n return data;\n }\n\n clone(): EvaluateSaveRequest {\n const json = this.toJSON();\n let result = new EvaluateSaveRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEvaluateSaveRequest {\n fullPath: string;\n taskSubtype: IGuid;\n taskType: IGuid;\n visibility: TaskVisibility;\n}\n\nexport class EvaluateSaveResponse implements IEvaluateSaveResponse {\n evaluateSaveOutcome!: EvaluateSaveOutcome;\n\n constructor(data?: IEvaluateSaveResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.evaluateSaveOutcome = _data[\"evaluateSaveOutcome\"] !== undefined ? _data[\"evaluateSaveOutcome\"] : null;\n }\n }\n\n static fromJS(data: any): EvaluateSaveResponse {\n data = typeof data === 'object' ? data : {};\n let result = new EvaluateSaveResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"evaluateSaveOutcome\"] = this.evaluateSaveOutcome !== undefined ? this.evaluateSaveOutcome : null;\n return data;\n }\n\n clone(): EvaluateSaveResponse {\n const json = this.toJSON();\n let result = new EvaluateSaveResponse();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEvaluateSaveResponse {\n evaluateSaveOutcome: EvaluateSaveOutcome;\n}\n\nexport class EventDefinition implements IEventDefinition {\n eventType!: string;\n eventSubType!: number;\n correlationType!: IGuid;\n icon!: string;\n name!: string;\n rawName!: string;\n category!: string;\n listenByDefault!: boolean;\n listenable!: boolean;\n\n constructor(data?: IEventDefinition) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.eventType = _data[\"eventType\"] !== undefined ? _data[\"eventType\"] : null;\n this.eventSubType = _data[\"eventSubType\"] !== undefined ? _data[\"eventSubType\"] : null;\n this.correlationType = _guidImplementation.from(_data[\"correlationType\"]) !== undefined ? _guidImplementation.from(_data[\"correlationType\"]) : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.rawName = _data[\"rawName\"] !== undefined ? _data[\"rawName\"] : null;\n this.category = _data[\"category\"] !== undefined ? _data[\"category\"] : null;\n this.listenByDefault = _data[\"listenByDefault\"] !== undefined ? _data[\"listenByDefault\"] : null;\n this.listenable = _data[\"listenable\"] !== undefined ? _data[\"listenable\"] : null;\n }\n }\n\n static fromJS(data: any): EventDefinition {\n data = typeof data === 'object' ? data : {};\n let result = new EventDefinition();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"eventType\"] = this.eventType !== undefined ? this.eventType : null;\n data[\"eventSubType\"] = this.eventSubType !== undefined ? this.eventSubType : null;\n data[\"correlationType\"] = this.correlationType?.toString() !== undefined ? this.correlationType?.toString() : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"rawName\"] = this.rawName !== undefined ? this.rawName : null;\n data[\"category\"] = this.category !== undefined ? this.category : null;\n data[\"listenByDefault\"] = this.listenByDefault !== undefined ? this.listenByDefault : null;\n data[\"listenable\"] = this.listenable !== undefined ? this.listenable : null;\n return data;\n }\n\n clone(): EventDefinition {\n const json = this.toJSON();\n let result = new EventDefinition();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEventDefinition {\n eventType: string;\n eventSubType: number;\n correlationType: IGuid;\n icon: string;\n name: string;\n rawName: string;\n category: string;\n listenByDefault: boolean;\n listenable: boolean;\n}\n\nexport class EventEntry implements IEventEntry {\n id!: IGuid;\n contextId!: IGuid;\n title!: string;\n description!: string;\n timestamp!: string;\n timezone!: string;\n icon!: string;\n color!: string;\n\n constructor(data?: IEventEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.contextId = _guidImplementation.from(_data[\"contextId\"]) !== undefined ? _guidImplementation.from(_data[\"contextId\"]) : null;\n this.title = _data[\"title\"] !== undefined ? _data[\"title\"] : null;\n this.description = _data[\"description\"] !== undefined ? _data[\"description\"] : null;\n this.timestamp = _data[\"timestamp\"] !== undefined ? _data[\"timestamp\"] : null;\n this.timezone = _data[\"timezone\"] !== undefined ? _data[\"timezone\"] : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.color = _data[\"color\"] !== undefined ? _data[\"color\"] : null;\n }\n }\n\n static fromJS(data: any): EventEntry {\n data = typeof data === 'object' ? data : {};\n let result = new EventEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"contextId\"] = this.contextId?.toString() !== undefined ? this.contextId?.toString() : null;\n data[\"title\"] = this.title !== undefined ? this.title : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n data[\"timestamp\"] = this.timestamp !== undefined ? this.timestamp : null;\n data[\"timezone\"] = this.timezone !== undefined ? this.timezone : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"color\"] = this.color !== undefined ? this.color : null;\n return data;\n }\n\n clone(): EventEntry {\n const json = this.toJSON();\n let result = new EventEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEventEntry {\n id: IGuid;\n contextId: IGuid;\n title: string;\n description: string;\n timestamp: string;\n timezone: string;\n icon: string;\n color: string;\n}\n\nexport class FileCacheQueryEntry implements IFileCacheQueryEntry {\n entityId!: IGuid;\n fileCacheId?: IGuid | null;\n\n constructor(data?: IFileCacheQueryEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.entityId = _guidImplementation.from(_data[\"entityId\"]) !== undefined ? _guidImplementation.from(_data[\"entityId\"]) : null;\n this.fileCacheId = _guidImplementation.from(_data[\"fileCacheId\"]) !== undefined ? _guidImplementation.from(_data[\"fileCacheId\"]) : null;\n }\n }\n\n static fromJS(data: any): FileCacheQueryEntry {\n data = typeof data === 'object' ? data : {};\n let result = new FileCacheQueryEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"entityId\"] = this.entityId?.toString() !== undefined ? this.entityId?.toString() : null;\n data[\"fileCacheId\"] = this.fileCacheId?.toString() !== undefined ? this.fileCacheId?.toString() : null;\n return data;\n }\n\n clone(): FileCacheQueryEntry {\n const json = this.toJSON();\n let result = new FileCacheQueryEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFileCacheQueryEntry {\n entityId: IGuid;\n fileCacheId?: IGuid | null;\n}\n\nexport class FilterContent implements IFilterContent {\n typeSpecificFields!: any[];\n\n constructor(data?: IFilterContent) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.typeSpecificFields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"typeSpecificFields\"])) {\n this.typeSpecificFields = [] as any;\n for (let item of _data[\"typeSpecificFields\"])\n this.typeSpecificFields!.push(item);\n }\n else { \n this.typeSpecificFields = null;\n }\n }\n }\n\n static fromJS(data: any): FilterContent {\n data = typeof data === 'object' ? data : {};\n let result = new FilterContent();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.typeSpecificFields)) {\n data[\"typeSpecificFields\"] = [];\n for (let item of this.typeSpecificFields)\n data[\"typeSpecificFields\"].push(item);\n }\n return data;\n }\n\n clone(): FilterContent {\n const json = this.toJSON();\n let result = new FilterContent();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFilterContent {\n typeSpecificFields: any[];\n}\n\nexport class FilterContext implements IFilterContext {\n filterProviderId!: IGuid;\n typeSpecificFields!: any;\n\n constructor(data?: IFilterContext) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.filterProviderId = _guidImplementation.from(_data[\"filterProviderId\"]) !== undefined ? _guidImplementation.from(_data[\"filterProviderId\"]) : null;\n this.typeSpecificFields = _data[\"typeSpecificFields\"] !== undefined ? _data[\"typeSpecificFields\"] : null;\n }\n }\n\n static fromJS(data: any): FilterContext {\n data = typeof data === 'object' ? data : {};\n let result = new FilterContext();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"filterProviderId\"] = this.filterProviderId?.toString() !== undefined ? this.filterProviderId?.toString() : null;\n data[\"typeSpecificFields\"] = this.typeSpecificFields !== undefined ? this.typeSpecificFields : null;\n return data;\n }\n\n clone(): FilterContext {\n const json = this.toJSON();\n let result = new FilterContext();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFilterContext {\n filterProviderId: IGuid;\n typeSpecificFields: any;\n}\n\nexport class ForgiveAntipassbackViolation implements IForgiveAntipassbackViolation {\n cardholderToForgive?: IGuid;\n\n constructor(data?: IForgiveAntipassbackViolation) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.cardholderToForgive = _guidImplementation.from(_data[\"cardholderToForgive\"]) !== undefined ? _guidImplementation.from(_data[\"cardholderToForgive\"]) : null;\n }\n }\n\n static fromJS(data: any): ForgiveAntipassbackViolation {\n data = typeof data === 'object' ? data : {};\n let result = new ForgiveAntipassbackViolation();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"cardholderToForgive\"] = this.cardholderToForgive?.toString() !== undefined ? this.cardholderToForgive?.toString() : null;\n return data;\n }\n\n clone(): ForgiveAntipassbackViolation {\n const json = this.toJSON();\n let result = new ForgiveAntipassbackViolation();\n result.init(json);\n return result;\n }\n}\n\nexport interface IForgiveAntipassbackViolation {\n cardholderToForgive?: IGuid;\n}\n\nexport class GeoCoordinate implements IGeoCoordinate {\n altitude?: number | null;\n latitude!: number;\n longitude!: number;\n\n constructor(data?: IGeoCoordinate) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.altitude = 0;\n this.latitude = 0;\n this.longitude = 0;\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.altitude = _data[\"altitude\"] !== undefined ? _data[\"altitude\"] : 0;\n this.latitude = _data[\"latitude\"] !== undefined ? _data[\"latitude\"] : 0;\n this.longitude = _data[\"longitude\"] !== undefined ? _data[\"longitude\"] : 0;\n }\n }\n\n static fromJS(data: any): GeoCoordinate {\n data = typeof data === 'object' ? data : {};\n let result = new GeoCoordinate();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"altitude\"] = this.altitude !== undefined ? this.altitude : null;\n data[\"latitude\"] = this.latitude !== undefined ? this.latitude : null;\n data[\"longitude\"] = this.longitude !== undefined ? this.longitude : null;\n return data;\n }\n\n clone(): GeoCoordinate {\n const json = this.toJSON();\n let result = new GeoCoordinate();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoCoordinate {\n altitude?: number | null;\n latitude: number;\n longitude: number;\n}\n\nexport class SearchContext implements ISearchContext {\n text!: string;\n\n protected _discriminator: string;\n\n constructor(data?: ISearchContext) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"SearchContext\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.text = _data[\"text\"] !== undefined ? _data[\"text\"] : null;\n }\n }\n\n static fromJS(data: any): SearchContext {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Search.GlobalSearchContext, Genetec.WebApp.Module.Common\") {\n let result = new GlobalSearchContext();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Search.MapSearchContext, Genetec.WebApp.Module.Common\") {\n let result = new MapSearchContext();\n result.init(data);\n return result;\n }\n let result = new SearchContext();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"text\"] = this.text !== undefined ? this.text : null;\n return data;\n }\n\n clone(): SearchContext {\n const json = this.toJSON();\n let result = new SearchContext();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchContext {\n text: string;\n}\n\nexport class GlobalSearchContext extends SearchContext implements IGlobalSearchContext {\n\n constructor(data?: IGlobalSearchContext) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Search.GlobalSearchContext, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): GlobalSearchContext {\n data = typeof data === 'object' ? data : {};\n let result = new GlobalSearchContext();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): GlobalSearchContext {\n const json = this.toJSON();\n let result = new GlobalSearchContext();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGlobalSearchContext extends ISearchContext {\n}\n\nexport class ITimezoneAbbreviations implements IITimezoneAbbreviations {\n readonly standard?: string | null;\n readonly daylight?: string | null;\n\n constructor(data?: IITimezoneAbbreviations) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).standard = _data[\"standard\"] !== undefined ? _data[\"standard\"] : null;\n (this).daylight = _data[\"daylight\"] !== undefined ? _data[\"daylight\"] : null;\n }\n }\n\n static fromJS(data: any): ITimezoneAbbreviations {\n data = typeof data === 'object' ? data : {};\n let result = new ITimezoneAbbreviations();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"standard\"] = this.standard !== undefined ? this.standard : null;\n data[\"daylight\"] = this.daylight !== undefined ? this.daylight : null;\n return data;\n }\n\n clone(): ITimezoneAbbreviations {\n const json = this.toJSON();\n let result = new ITimezoneAbbreviations();\n result.init(json);\n return result;\n }\n}\n\nexport interface IITimezoneAbbreviations {\n standard?: string | null;\n daylight?: string | null;\n}\n\nexport class ITimezoneInfo implements IITimezoneInfo {\n readonly id?: string | null;\n readonly iana?: string | null;\n readonly displayName?: string | null;\n abbreviations?: ITimezoneAbbreviations;\n\n constructor(data?: IITimezoneInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).id = _data[\"id\"] !== undefined ? _data[\"id\"] : null;\n (this).iana = _data[\"iana\"] !== undefined ? _data[\"iana\"] : null;\n (this).displayName = _data[\"displayName\"] !== undefined ? _data[\"displayName\"] : null;\n this.abbreviations = _data[\"abbreviations\"] ? ITimezoneAbbreviations.fromJS(_data[\"abbreviations\"]) : null;\n }\n }\n\n static fromJS(data: any): ITimezoneInfo {\n data = typeof data === 'object' ? data : {};\n let result = new ITimezoneInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id !== undefined ? this.id : null;\n data[\"iana\"] = this.iana !== undefined ? this.iana : null;\n data[\"displayName\"] = this.displayName !== undefined ? this.displayName : null;\n data[\"abbreviations\"] = this.abbreviations ? this.abbreviations.toJSON() : null;\n return data;\n }\n\n clone(): ITimezoneInfo {\n const json = this.toJSON();\n let result = new ITimezoneInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface IITimezoneInfo {\n id?: string | null;\n iana?: string | null;\n displayName?: string | null;\n abbreviations?: ITimezoneAbbreviations;\n}\n\nexport class Language implements ILanguage {\n id?: string | null;\n name?: string | null;\n\n constructor(data?: ILanguage) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"] !== undefined ? _data[\"id\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n }\n }\n\n static fromJS(data: any): Language {\n data = typeof data === 'object' ? data : {};\n let result = new Language();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id !== undefined ? this.id : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n return data;\n }\n\n clone(): Language {\n const json = this.toJSON();\n let result = new Language();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILanguage {\n id?: string | null;\n name?: string | null;\n}\n\nexport class LoginInfo implements ILoginInfo {\n readonly openIdProviders?: OpenIdProvider[] | null;\n\n constructor(data?: ILoginInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"openIdProviders\"])) {\n (this).openIdProviders = [] as any;\n for (let item of _data[\"openIdProviders\"])\n (this).openIdProviders!.push(OpenIdProvider.fromJS(item));\n }\n else { \n (this).openIdProviders = null;\n }\n }\n }\n\n static fromJS(data: any): LoginInfo {\n data = typeof data === 'object' ? data : {};\n let result = new LoginInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.openIdProviders)) {\n data[\"openIdProviders\"] = [];\n for (let item of this.openIdProviders)\n data[\"openIdProviders\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): LoginInfo {\n const json = this.toJSON();\n let result = new LoginInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILoginInfo {\n openIdProviders?: OpenIdProvider[] | null;\n}\n\nexport class MapSearchContext extends SearchContext implements IMapSearchContext {\n mapId?: IGuid;\n viewArea?: MapViewArea;\n activeLayers?: IGuid[] | null;\n\n constructor(data?: IMapSearchContext) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Search.MapSearchContext, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.mapId = _guidImplementation.from(_data[\"mapId\"]) !== undefined ? _guidImplementation.from(_data[\"mapId\"]) : null;\n this.viewArea = _data[\"viewArea\"] ? MapViewArea.fromJS(_data[\"viewArea\"]) : null;\n if (Array.isArray(_data[\"activeLayers\"])) {\n this.activeLayers = [] as any;\n for (let item of _data[\"activeLayers\"])\n this.activeLayers!.push(_guidConverters.toGuid(item));\n }\n else { \n this.activeLayers = null;\n }\n }\n }\n\n static fromJS(data: any): MapSearchContext {\n data = typeof data === 'object' ? data : {};\n let result = new MapSearchContext();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"mapId\"] = this.mapId?.toString() !== undefined ? this.mapId?.toString() : null;\n data[\"viewArea\"] = this.viewArea ? this.viewArea.toJSON() : null;\n if (Array.isArray(this.activeLayers)) {\n data[\"activeLayers\"] = [];\n for (let item of this.activeLayers)\n data[\"activeLayers\"].push(item);\n }\n super.toJSON(data);\n return data;\n }\n\n clone(): MapSearchContext {\n const json = this.toJSON();\n let result = new MapSearchContext();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMapSearchContext extends ISearchContext {\n mapId?: IGuid;\n viewArea?: MapViewArea;\n activeLayers?: IGuid[] | null;\n}\n\nexport class MapViewArea implements IMapViewArea {\n topLeft!: GeoCoordinate;\n bottomRight!: GeoCoordinate;\n\n constructor(data?: IMapViewArea) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.topLeft = new GeoCoordinate();\n this.bottomRight = new GeoCoordinate();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.topLeft = _data[\"topLeft\"] ? GeoCoordinate.fromJS(_data[\"topLeft\"]) : new GeoCoordinate();\n this.bottomRight = _data[\"bottomRight\"] ? GeoCoordinate.fromJS(_data[\"bottomRight\"]) : new GeoCoordinate();\n }\n }\n\n static fromJS(data: any): MapViewArea {\n data = typeof data === 'object' ? data : {};\n let result = new MapViewArea();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"topLeft\"] = this.topLeft ? this.topLeft.toJSON() : null;\n data[\"bottomRight\"] = this.bottomRight ? this.bottomRight.toJSON() : null;\n return data;\n }\n\n clone(): MapViewArea {\n const json = this.toJSON();\n let result = new MapViewArea();\n result.init(json);\n return result;\n }\n}\n\nexport interface IMapViewArea {\n topLeft: GeoCoordinate;\n bottomRight: GeoCoordinate;\n}\n\nexport class ModuleLoadData implements IModuleLoadData {\n name?: string | null;\n version?: string | null;\n buildVersion?: string | null;\n\n constructor(data?: IModuleLoadData) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.version = _data[\"version\"] !== undefined ? _data[\"version\"] : null;\n this.buildVersion = _data[\"buildVersion\"] !== undefined ? _data[\"buildVersion\"] : null;\n }\n }\n\n static fromJS(data: any): ModuleLoadData {\n data = typeof data === 'object' ? data : {};\n let result = new ModuleLoadData();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"version\"] = this.version !== undefined ? this.version : null;\n data[\"buildVersion\"] = this.buildVersion !== undefined ? this.buildVersion : null;\n return data;\n }\n\n clone(): ModuleLoadData {\n const json = this.toJSON();\n let result = new ModuleLoadData();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModuleLoadData {\n name?: string | null;\n version?: string | null;\n buildVersion?: string | null;\n}\n\nexport class NotificationItem implements INotificationItem {\n id!: IGuid;\n canDismiss?: boolean;\n isGlobal?: boolean;\n priority?: number;\n title!: string;\n details?: string | null;\n navigation?: string | null;\n type?: NotificationType;\n\n constructor(data?: INotificationItem) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.canDismiss = _data[\"canDismiss\"] !== undefined ? _data[\"canDismiss\"] : null;\n this.isGlobal = _data[\"isGlobal\"] !== undefined ? _data[\"isGlobal\"] : null;\n this.priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n this.title = _data[\"title\"] !== undefined ? _data[\"title\"] : null;\n this.details = _data[\"details\"] !== undefined ? _data[\"details\"] : null;\n this.navigation = _data[\"navigation\"] !== undefined ? _data[\"navigation\"] : null;\n this.type = _data[\"type\"] !== undefined ? _data[\"type\"] : null;\n }\n }\n\n static fromJS(data: any): NotificationItem {\n data = typeof data === 'object' ? data : {};\n let result = new NotificationItem();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"canDismiss\"] = this.canDismiss !== undefined ? this.canDismiss : null;\n data[\"isGlobal\"] = this.isGlobal !== undefined ? this.isGlobal : null;\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n data[\"title\"] = this.title !== undefined ? this.title : null;\n data[\"details\"] = this.details !== undefined ? this.details : null;\n data[\"navigation\"] = this.navigation !== undefined ? this.navigation : null;\n data[\"type\"] = this.type !== undefined ? this.type : null;\n return data;\n }\n\n clone(): NotificationItem {\n const json = this.toJSON();\n let result = new NotificationItem();\n result.init(json);\n return result;\n }\n}\n\nexport interface INotificationItem {\n id: IGuid;\n canDismiss?: boolean;\n isGlobal?: boolean;\n priority?: number;\n title: string;\n details?: string | null;\n navigation?: string | null;\n type?: NotificationType;\n}\n\nexport enum NotificationType {\n Information = \"Information\",\n Warning = \"Warning\",\n Error = \"Error\",\n Update = \"Update\",\n}\n\nexport class NotificationsFilter implements INotificationsFilter {\n /** Gets or Sets the list of notifications to retrieve */\n ids?: IGuid[] | null;\n /** Gets or Sets a flag indicating if only global notifications should be returned */\n globalsOnly?: boolean;\n\n constructor(data?: INotificationsFilter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"ids\"])) {\n this.ids = [] as any;\n for (let item of _data[\"ids\"])\n this.ids!.push(_guidConverters.toGuid(item));\n }\n else { \n this.ids = null;\n }\n this.globalsOnly = _data[\"globalsOnly\"] !== undefined ? _data[\"globalsOnly\"] : null;\n }\n }\n\n static fromJS(data: any): NotificationsFilter {\n data = typeof data === 'object' ? data : {};\n let result = new NotificationsFilter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.ids)) {\n data[\"ids\"] = [];\n for (let item of this.ids)\n data[\"ids\"].push(item);\n }\n data[\"globalsOnly\"] = this.globalsOnly !== undefined ? this.globalsOnly : null;\n return data;\n }\n\n clone(): NotificationsFilter {\n const json = this.toJSON();\n let result = new NotificationsFilter();\n result.init(json);\n return result;\n }\n}\n\nexport interface INotificationsFilter {\n /** Gets or Sets the list of notifications to retrieve */\n ids?: IGuid[] | null;\n /** Gets or Sets a flag indicating if only global notifications should be returned */\n globalsOnly?: boolean;\n}\n\nexport class OpenIdProvider implements IOpenIdProvider {\n id?: string | null;\n displayName?: string | null;\n logo?: string | null;\n challengeUri?: string | null;\n\n constructor(data?: IOpenIdProvider) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"] !== undefined ? _data[\"id\"] : null;\n this.displayName = _data[\"displayName\"] !== undefined ? _data[\"displayName\"] : null;\n this.logo = _data[\"logo\"] !== undefined ? _data[\"logo\"] : null;\n this.challengeUri = _data[\"challengeUri\"] !== undefined ? _data[\"challengeUri\"] : null;\n }\n }\n\n static fromJS(data: any): OpenIdProvider {\n data = typeof data === 'object' ? data : {};\n let result = new OpenIdProvider();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id !== undefined ? this.id : null;\n data[\"displayName\"] = this.displayName !== undefined ? this.displayName : null;\n data[\"logo\"] = this.logo !== undefined ? this.logo : null;\n data[\"challengeUri\"] = this.challengeUri !== undefined ? this.challengeUri : null;\n return data;\n }\n\n clone(): OpenIdProvider {\n const json = this.toJSON();\n let result = new OpenIdProvider();\n result.init(json);\n return result;\n }\n}\n\nexport interface IOpenIdProvider {\n id?: string | null;\n displayName?: string | null;\n logo?: string | null;\n challengeUri?: string | null;\n}\n\nexport class OptionSection implements IOptionSection {\n id!: IGuid;\n localOnly!: boolean;\n isAvailable!: boolean;\n settings!: any;\n\n constructor(data?: IOptionSection) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.localOnly = _data[\"localOnly\"] !== undefined ? _data[\"localOnly\"] : null;\n this.isAvailable = _data[\"isAvailable\"] !== undefined ? _data[\"isAvailable\"] : null;\n this.settings = _data[\"settings\"] !== undefined ? _data[\"settings\"] : null;\n }\n }\n\n static fromJS(data: any): OptionSection {\n data = typeof data === 'object' ? data : {};\n let result = new OptionSection();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"localOnly\"] = this.localOnly !== undefined ? this.localOnly : null;\n data[\"isAvailable\"] = this.isAvailable !== undefined ? this.isAvailable : null;\n data[\"settings\"] = this.settings !== undefined ? this.settings : null;\n return data;\n }\n\n clone(): OptionSection {\n const json = this.toJSON();\n let result = new OptionSection();\n result.init(json);\n return result;\n }\n}\n\nexport interface IOptionSection {\n id: IGuid;\n localOnly: boolean;\n isAvailable: boolean;\n settings: any;\n}\n\nexport class PasswordStrengthRequest implements IPasswordStrengthRequest {\n newPassword?: string | null;\n\n constructor(data?: IPasswordStrengthRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.newPassword = _data[\"newPassword\"] !== undefined ? _data[\"newPassword\"] : null;\n }\n }\n\n static fromJS(data: any): PasswordStrengthRequest {\n data = typeof data === 'object' ? data : {};\n let result = new PasswordStrengthRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"newPassword\"] = this.newPassword !== undefined ? this.newPassword : null;\n return data;\n }\n\n clone(): PasswordStrengthRequest {\n const json = this.toJSON();\n let result = new PasswordStrengthRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPasswordStrengthRequest {\n newPassword?: string | null;\n}\n\nexport class RetrieveResponse implements IRetrieveResponse {\n treeViewItems?: TreeViewItem[] | null;\n\n constructor(data?: IRetrieveResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"treeViewItems\"])) {\n this.treeViewItems = [] as any;\n for (let item of _data[\"treeViewItems\"])\n this.treeViewItems!.push(TreeViewItem.fromJS(item));\n }\n else { \n this.treeViewItems = null;\n }\n }\n }\n\n static fromJS(data: any): RetrieveResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RetrieveResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.treeViewItems)) {\n data[\"treeViewItems\"] = [];\n for (let item of this.treeViewItems)\n data[\"treeViewItems\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): RetrieveResponse {\n const json = this.toJSON();\n let result = new RetrieveResponse();\n result.init(json);\n return result;\n }\n}\n\nexport interface IRetrieveResponse {\n treeViewItems?: TreeViewItem[] | null;\n}\n\nexport class SaveRequest extends EvaluateSaveRequest implements ISaveRequest {\n /** Target partition to use in case we are creating a new public task. */\n partitionId?: IGuid | null;\n /** Payload of the task */\n context!: string;\n\n constructor(data?: ISaveRequest) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Core.Module.Models.Tasks.SaveRequest, Genetec.WebApp.Core.Module\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.partitionId = _guidImplementation.from(_data[\"partitionId\"]) !== undefined ? _guidImplementation.from(_data[\"partitionId\"]) : null;\n this.context = _data[\"context\"] !== undefined ? _data[\"context\"] : null;\n }\n }\n\n static fromJS(data: any): SaveRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SaveRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"partitionId\"] = this.partitionId?.toString() !== undefined ? this.partitionId?.toString() : null;\n data[\"context\"] = this.context !== undefined ? this.context : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): SaveRequest {\n const json = this.toJSON();\n let result = new SaveRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISaveRequest extends IEvaluateSaveRequest {\n /** Target partition to use in case we are creating a new public task. */\n partitionId?: IGuid | null;\n /** Payload of the task */\n context: string;\n}\n\nexport class SaveSnapshotInfo implements ISaveSnapshotInfo {\n camera?: IGuid;\n videoFrameDateTime?: string | null;\n fileName?: string | null;\n fileType?: string | null;\n\n constructor(data?: ISaveSnapshotInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.camera = _guidImplementation.from(_data[\"camera\"]) !== undefined ? _guidImplementation.from(_data[\"camera\"]) : null;\n this.videoFrameDateTime = _data[\"videoFrameDateTime\"] !== undefined ? _data[\"videoFrameDateTime\"] : null;\n this.fileName = _data[\"fileName\"] !== undefined ? _data[\"fileName\"] : null;\n this.fileType = _data[\"fileType\"] !== undefined ? _data[\"fileType\"] : null;\n }\n }\n\n static fromJS(data: any): SaveSnapshotInfo {\n data = typeof data === 'object' ? data : {};\n let result = new SaveSnapshotInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"camera\"] = this.camera?.toString() !== undefined ? this.camera?.toString() : null;\n data[\"videoFrameDateTime\"] = this.videoFrameDateTime !== undefined ? this.videoFrameDateTime : null;\n data[\"fileName\"] = this.fileName !== undefined ? this.fileName : null;\n data[\"fileType\"] = this.fileType !== undefined ? this.fileType : null;\n return data;\n }\n\n clone(): SaveSnapshotInfo {\n const json = this.toJSON();\n let result = new SaveSnapshotInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISaveSnapshotInfo {\n camera?: IGuid;\n videoFrameDateTime?: string | null;\n fileName?: string | null;\n fileType?: string | null;\n}\n\nexport class SearchResult implements ISearchResult {\n groupName?: string | null;\n hasMore!: boolean;\n total!: number;\n results!: SearchResultItem[];\n\n constructor(data?: ISearchResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.results = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.groupName = _data[\"groupName\"] !== undefined ? _data[\"groupName\"] : null;\n this.hasMore = _data[\"hasMore\"] !== undefined ? _data[\"hasMore\"] : null;\n this.total = _data[\"total\"] !== undefined ? _data[\"total\"] : null;\n if (Array.isArray(_data[\"results\"])) {\n this.results = [] as any;\n for (let item of _data[\"results\"])\n this.results!.push(SearchResultItem.fromJS(item));\n }\n else { \n this.results = null;\n }\n }\n }\n\n static fromJS(data: any): SearchResult {\n data = typeof data === 'object' ? data : {};\n let result = new SearchResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"groupName\"] = this.groupName !== undefined ? this.groupName : null;\n data[\"hasMore\"] = this.hasMore !== undefined ? this.hasMore : null;\n data[\"total\"] = this.total !== undefined ? this.total : null;\n if (Array.isArray(this.results)) {\n data[\"results\"] = [];\n for (let item of this.results)\n data[\"results\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): SearchResult {\n const json = this.toJSON();\n let result = new SearchResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchResult {\n groupName?: string | null;\n hasMore: boolean;\n total: number;\n results: SearchResultItem[];\n}\n\nexport class SearchResultItem implements ISearchResultItem {\n id!: IGuid;\n icon?: string | null;\n navigation?: string | null;\n priority!: number;\n title!: string;\n\n constructor(data?: ISearchResultItem) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.navigation = _data[\"navigation\"] !== undefined ? _data[\"navigation\"] : null;\n this.priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n this.title = _data[\"title\"] !== undefined ? _data[\"title\"] : null;\n }\n }\n\n static fromJS(data: any): SearchResultItem {\n data = typeof data === 'object' ? data : {};\n let result = new SearchResultItem();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"navigation\"] = this.navigation !== undefined ? this.navigation : null;\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n data[\"title\"] = this.title !== undefined ? this.title : null;\n return data;\n }\n\n clone(): SearchResultItem {\n const json = this.toJSON();\n let result = new SearchResultItem();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchResultItem {\n id: IGuid;\n icon?: string | null;\n navigation?: string | null;\n priority: number;\n title: string;\n}\n\nexport class StringEntries implements IStringEntries {\n language?: string | null;\n values?: { [key: string]: string; } | null;\n\n constructor(data?: IStringEntries) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.language = _data[\"language\"] !== undefined ? _data[\"language\"] : null;\n if (_data[\"values\"]) {\n this.values = {} as any;\n for (let key in _data[\"values\"]) {\n if (_data[\"values\"].hasOwnProperty(key))\n (this.values)![key] = _data[\"values\"][key] !== undefined ? _data[\"values\"][key] : null;\n }\n }\n else {\n this.values = null;\n }\n }\n }\n\n static fromJS(data: any): StringEntries {\n data = typeof data === 'object' ? data : {};\n let result = new StringEntries();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"language\"] = this.language !== undefined ? this.language : null;\n if (this.values) {\n data[\"values\"] = {};\n for (let key in this.values) {\n if (this.values.hasOwnProperty(key))\n (data[\"values\"])[key] = this.values[key] !== undefined ? this.values[key] : null;\n }\n }\n return data;\n }\n\n clone(): StringEntries {\n const json = this.toJSON();\n let result = new StringEntries();\n result.init(json);\n return result;\n }\n}\n\nexport interface IStringEntries {\n language?: string | null;\n values?: { [key: string]: string; } | null;\n}\n\nexport class StringsQuery implements IStringsQuery {\n language?: string | null;\n keys?: string[] | null;\n\n constructor(data?: IStringsQuery) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.language = _data[\"language\"] !== undefined ? _data[\"language\"] : null;\n if (Array.isArray(_data[\"keys\"])) {\n this.keys = [] as any;\n for (let item of _data[\"keys\"])\n this.keys!.push(item);\n }\n else { \n this.keys = null;\n }\n }\n }\n\n static fromJS(data: any): StringsQuery {\n data = typeof data === 'object' ? data : {};\n let result = new StringsQuery();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"language\"] = this.language !== undefined ? this.language : null;\n if (Array.isArray(this.keys)) {\n data[\"keys\"] = [];\n for (let item of this.keys)\n data[\"keys\"].push(item);\n }\n return data;\n }\n\n clone(): StringsQuery {\n const json = this.toJSON();\n let result = new StringsQuery();\n result.init(json);\n return result;\n }\n}\n\nexport interface IStringsQuery {\n language?: string | null;\n keys?: string[] | null;\n}\n\nexport enum TaskVisibility {\n Public = \"Public\",\n Private = \"Private\",\n}\n\nexport class ThreatLevelInfo implements IThreatLevelInfo {\n id!: IGuid;\n level!: number;\n color!: string;\n name!: string;\n isActive!: boolean;\n\n constructor(data?: IThreatLevelInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.level = _data[\"level\"] !== undefined ? _data[\"level\"] : null;\n this.color = _data[\"color\"] !== undefined ? _data[\"color\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.isActive = _data[\"isActive\"] !== undefined ? _data[\"isActive\"] : null;\n }\n }\n\n static fromJS(data: any): ThreatLevelInfo {\n data = typeof data === 'object' ? data : {};\n let result = new ThreatLevelInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"level\"] = this.level !== undefined ? this.level : null;\n data[\"color\"] = this.color !== undefined ? this.color : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"isActive\"] = this.isActive !== undefined ? this.isActive : null;\n return data;\n }\n\n clone(): ThreatLevelInfo {\n const json = this.toJSON();\n let result = new ThreatLevelInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThreatLevelInfo {\n id: IGuid;\n level: number;\n color: string;\n name: string;\n isActive: boolean;\n}\n\nexport class TreeViewItem implements ITreeViewItem {\n id?: IGuid;\n isFolder?: boolean;\n name?: string | null;\n path?: string | null;\n\n constructor(data?: ITreeViewItem) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.isFolder = _data[\"isFolder\"] !== undefined ? _data[\"isFolder\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.path = _data[\"path\"] !== undefined ? _data[\"path\"] : null;\n }\n }\n\n static fromJS(data: any): TreeViewItem {\n data = typeof data === 'object' ? data : {};\n let result = new TreeViewItem();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"isFolder\"] = this.isFolder !== undefined ? this.isFolder : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"path\"] = this.path !== undefined ? this.path : null;\n return data;\n }\n\n clone(): TreeViewItem {\n const json = this.toJSON();\n let result = new TreeViewItem();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITreeViewItem {\n id?: IGuid;\n isFolder?: boolean;\n name?: string | null;\n path?: string | null;\n}\n\nexport class VersionInfo implements IVersionInfo {\n /** Gets the application version */\n appVersion!: string;\n /** Gets the build version */\n buildVersion!: string;\n /** Gets the REST version used */\n restVersion!: string;\n /** Gets the Security Center version */\n securityCenterVersion!: string;\n /** Gets the Security Center exact version */\n securityCenterExactVersion!: string;\n /** Gets the name of the Securty Center's server name */\n securityCenterServerName?: string | null;\n /** Gets the name of the current server */\n serverName?: string | null;\n /** Gets the release date i.e. the day that the library has been built */\n releaseDate!: string;\n /** Gets the information about the loaded modules */\n modulesLoadData!: ModuleLoadData[];\n\n constructor(data?: IVersionInfo) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.modulesLoadData = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.appVersion = _data[\"appVersion\"] !== undefined ? _data[\"appVersion\"] : null;\n this.buildVersion = _data[\"buildVersion\"] !== undefined ? _data[\"buildVersion\"] : null;\n this.restVersion = _data[\"restVersion\"] !== undefined ? _data[\"restVersion\"] : null;\n this.securityCenterVersion = _data[\"securityCenterVersion\"] !== undefined ? _data[\"securityCenterVersion\"] : null;\n this.securityCenterExactVersion = _data[\"securityCenterExactVersion\"] !== undefined ? _data[\"securityCenterExactVersion\"] : null;\n this.securityCenterServerName = _data[\"securityCenterServerName\"] !== undefined ? _data[\"securityCenterServerName\"] : null;\n this.serverName = _data[\"serverName\"] !== undefined ? _data[\"serverName\"] : null;\n this.releaseDate = _data[\"releaseDate\"] !== undefined ? _data[\"releaseDate\"] : null;\n if (Array.isArray(_data[\"modulesLoadData\"])) {\n this.modulesLoadData = [] as any;\n for (let item of _data[\"modulesLoadData\"])\n this.modulesLoadData!.push(ModuleLoadData.fromJS(item));\n }\n else { \n this.modulesLoadData = null;\n }\n }\n }\n\n static fromJS(data: any): VersionInfo {\n data = typeof data === 'object' ? data : {};\n let result = new VersionInfo();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"appVersion\"] = this.appVersion !== undefined ? this.appVersion : null;\n data[\"buildVersion\"] = this.buildVersion !== undefined ? this.buildVersion : null;\n data[\"restVersion\"] = this.restVersion !== undefined ? this.restVersion : null;\n data[\"securityCenterVersion\"] = this.securityCenterVersion !== undefined ? this.securityCenterVersion : null;\n data[\"securityCenterExactVersion\"] = this.securityCenterExactVersion !== undefined ? this.securityCenterExactVersion : null;\n data[\"securityCenterServerName\"] = this.securityCenterServerName !== undefined ? this.securityCenterServerName : null;\n data[\"serverName\"] = this.serverName !== undefined ? this.serverName : null;\n data[\"releaseDate\"] = this.releaseDate !== undefined ? this.releaseDate : null;\n if (Array.isArray(this.modulesLoadData)) {\n data[\"modulesLoadData\"] = [];\n for (let item of this.modulesLoadData)\n data[\"modulesLoadData\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): VersionInfo {\n const json = this.toJSON();\n let result = new VersionInfo();\n result.init(json);\n return result;\n }\n}\n\nexport interface IVersionInfo {\n /** Gets the application version */\n appVersion: string;\n /** Gets the build version */\n buildVersion: string;\n /** Gets the REST version used */\n restVersion: string;\n /** Gets the Security Center version */\n securityCenterVersion: string;\n /** Gets the Security Center exact version */\n securityCenterExactVersion: string;\n /** Gets the name of the Securty Center's server name */\n securityCenterServerName?: string | null;\n /** Gets the name of the current server */\n serverName?: string | null;\n /** Gets the release date i.e. the day that the library has been built */\n releaseDate: string;\n /** Gets the information about the loaded modules */\n modulesLoadData: ModuleLoadData[];\n}\n\nexport class Watchlist implements IWatchlist {\n entries!: WatchlistEntry[];\n\n constructor(data?: IWatchlist) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.entries = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"entries\"])) {\n this.entries = [] as any;\n for (let item of _data[\"entries\"])\n this.entries!.push(WatchlistEntry.fromJS(item));\n }\n else { \n this.entries = null;\n }\n }\n }\n\n static fromJS(data: any): Watchlist {\n data = typeof data === 'object' ? data : {};\n let result = new Watchlist();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.entries)) {\n data[\"entries\"] = [];\n for (let item of this.entries)\n data[\"entries\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): Watchlist {\n const json = this.toJSON();\n let result = new Watchlist();\n result.init(json);\n return result;\n }\n}\n\nexport interface IWatchlist {\n entries: WatchlistEntry[];\n}\n\nexport class WatchlistEntry implements IWatchlistEntry {\n entityId!: IGuid;\n priority!: WatchlistPriority;\n\n constructor(data?: IWatchlistEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.entityId = _guidImplementation.from(_data[\"entityId\"]) !== undefined ? _guidImplementation.from(_data[\"entityId\"]) : null;\n this.priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n }\n }\n\n static fromJS(data: any): WatchlistEntry {\n data = typeof data === 'object' ? data : {};\n let result = new WatchlistEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"entityId\"] = this.entityId?.toString() !== undefined ? this.entityId?.toString() : null;\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n return data;\n }\n\n clone(): WatchlistEntry {\n const json = this.toJSON();\n let result = new WatchlistEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IWatchlistEntry {\n entityId: IGuid;\n priority: WatchlistPriority;\n}\n\nexport enum WatchlistPriority {\n Normal = 0,\n Flagged = 1,\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class Constants {\n static readonly baseUrlIdentifier = 'BASE_URL';\n\n static readonly pluginsBaseUrl = 'assets/plugins/';\n static readonly pluginTaskIdentifier = 'pluginId';\n static readonly subTaskIdentifier = 'subTaskId';\n\n static readonly altText = 'Alt';\n static readonly ctrlText = 'Ctrl';\n static readonly shiftText = 'Shift';\n\n static readonly accessToken = 'access_token';\n static readonly isWebAppTokenSet = 'WebApp.IsTokenSet';\n}\n","import { MeltedIcon } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { Constants } from '@src/constants';\nimport { IGuid } from 'safeguid';\nimport { PluginCommand } from '../../../interfaces/plugins/public/plugin-public.interface';\nimport { CommandContext } from '../../../interfaces/plugins/public/plugin-services-public.interface';\n\nexport class CommandUsage {\n public icon: MeltedIcon;\n public id: IGuid;\n public name: () => string;\n public tooltip: () => string;\n public color: () => string;\n public isAllowed?: () => boolean;\n\n public get canExecute(): boolean {\n return this.canExecuteInternal;\n }\n\n public set canExecute(value: boolean) {\n if (value && !this.canExecuteInternal) {\n this.contextMenuRefreshRequired = true;\n }\n this.canExecuteInternal = value;\n }\n\n private canExecuteInternal = false;\n private contextMenuRefreshRequired = false;\n\n constructor(\n public readonly command: PluginCommand,\n public readonly commandContext: CommandContext,\n public readonly execute: () => void,\n public readonly targetElement?: Element\n ) {\n this.id = command.id;\n this.icon = command.icon ?? MeltedIcon.None;\n this.name = command.name;\n this.tooltip = command.tooltip ? command.tooltip : () => '';\n this.color = command.color ? command.color : () => '';\n }\n\n public createMenuItem(): ContextMenuItem {\n // build the kyboard shortcut's text\n let secondaryText = '';\n if (this.command.keyBinding) {\n const parts = this.command.keyBinding.split('.');\n for (let i = 0; i < parts.length; ++i) {\n // try to convert modifiers\n const text = parts[i].toLocaleLowerCase();\n let modifier = '';\n switch (text) {\n case 'alt':\n {\n modifier = Constants.altText;\n }\n break;\n\n case 'ctrl':\n case 'control':\n {\n modifier = Constants.ctrlText;\n }\n break;\n\n case 'shift':\n {\n modifier = Constants.shiftText;\n }\n break;\n }\n\n if (modifier) {\n secondaryText += modifier;\n } else if (text.length === 1) {\n // single key are always upper case\n secondaryText += text.toUpperCase();\n } else {\n secondaryText += parts[i];\n }\n\n if (i < parts.length - 1) {\n secondaryText += '+';\n }\n }\n }\n\n return {\n id: this.id.toString(),\n text: this.name(),\n icon: this.icon,\n iconColor: this.color(),\n secondaryText,\n actionItem: {\n execute: () => this.execute(),\n isAllowed: this.isAllowed ?? (() => this.canExecute),\n },\n isHidden: (item: ContextMenuItem) => {\n if (this.contextMenuRefreshRequired) {\n item.text = this.name();\n item.icon = this.icon;\n this.contextMenuRefreshRequired = false;\n }\n return !this.canExecute;\n },\n };\n }\n}\n","// Autogenerated: v2/help/enumerations/ApiApplicationType?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class ApplicationType {\n public static Datastore = 'Datastore';\n public static Test = 'Test';\n public static ConfigTool = 'ConfigTool';\n public static Controller = 'Controller';\n public static SecurityDesk = 'SecurityDesk';\n public static AdminTool = 'AdminTool';\n public static WDTray = 'WDTray';\n public static WDService = 'WDService';\n public static SDK = 'SDK';\n public static AccessDatastoreMacroManager = 'AccessDatastoreMacroManager';\n public static DirectoryPlugin = 'DirectoryPlugin';\n public static UnitSimulator = 'UnitSimulator';\n public static RoleController = 'RoleController';\n public static IntegrationService = 'IntegrationService';\n public static WebClient = 'WebClient';\n public static Federation = 'Federation';\n public static RoamingFederation = 'RoamingFederation';\n public static SecurityDeskSimulator = 'SecurityDeskSimulator';\n public static UnitEmulator = 'UnitEmulator';\n public static Patroller = 'Patroller';\n public static ServerManager = 'ServerManager';\n public static RoleModule = 'RoleModule';\n public static MigrationTool = 'MigrationTool';\n public static MobileServer = 'MobileServer';\n public static MobileServerSlave = 'MobileServerSlave';\n public static ImportTool = 'ImportTool';\n public static PatrollerConfigTool = 'PatrollerConfigTool';\n public static MobileClient = 'MobileClient';\n public static AuthenticationService = 'AuthenticationService';\n public static RoleAgent = 'RoleAgent';\n public static GcsRemote = 'GcsRemote';\n public static DirectoryCache = 'DirectoryCache';\n public static UnKnown = 'UnKnown';\n\n public static readonly values = [\n ApplicationType.Datastore,\n ApplicationType.Test,\n ApplicationType.ConfigTool,\n ApplicationType.Controller,\n ApplicationType.SecurityDesk,\n ApplicationType.AdminTool,\n ApplicationType.WDTray,\n ApplicationType.WDService,\n ApplicationType.SDK,\n ApplicationType.AccessDatastoreMacroManager,\n ApplicationType.DirectoryPlugin,\n ApplicationType.UnitSimulator,\n ApplicationType.RoleController,\n ApplicationType.IntegrationService,\n ApplicationType.WebClient,\n ApplicationType.Federation,\n ApplicationType.RoamingFederation,\n ApplicationType.SecurityDeskSimulator,\n ApplicationType.UnitEmulator,\n ApplicationType.Patroller,\n ApplicationType.ServerManager,\n ApplicationType.RoleModule,\n ApplicationType.MigrationTool,\n ApplicationType.MobileServer,\n ApplicationType.MobileServerSlave,\n ApplicationType.ImportTool,\n ApplicationType.PatrollerConfigTool,\n ApplicationType.MobileClient,\n ApplicationType.AuthenticationService,\n ApplicationType.RoleAgent,\n ApplicationType.GcsRemote,\n ApplicationType.DirectoryCache,\n ApplicationType.UnKnown\n ];\n}\n","export enum ConnectionState {\n Connecting = 0,\n Connected = 1,\n Reconnecting = 2,\n Disconnected = 3,\n}\n","import { ConnectionState } from './Streamers/ConnectionState';\nimport { FieldObject } from '../Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IEventBase } from '../Client/Interface/IEventBase';\nimport { IFieldObject } from '../Client/Interface/IFieldObject';\n\nexport class StateChangeArg {\n public state: ConnectionState = ConnectionState.Disconnected;\n}\n\nexport class EntityInvalidatedArg {\n public id: IGuid = SafeGuid.EMPTY;\n public entityType = '';\n public flags = 0;\n}\n\nexport class EntityRemovedArg {\n public id: IGuid = SafeGuid.EMPTY;\n public entityType = '';\n constructor(id?: IGuid, entityType?: string) {\n if (id) {\n this.id = id;\n }\n if (entityType) {\n this.entityType = entityType;\n }\n }\n}\n\nexport class EntityAddedArg {\n public id: IGuid = SafeGuid.EMPTY;\n public entityType = '';\n}\n\nexport class EventReceivedArg {\n public event: IEventBase;\n constructor(evt: IEventBase) {\n this.event = evt;\n }\n}\n\nexport class QueryReceivedArg {\n public query: any;\n}\n\nexport class UnknownRequestReceivedArg {\n constructor(public msgType: string, public payload: IFieldObject) {}\n}\n\nexport class RequestReceivedArg {\n public id = '';\n public request: IFieldObject;\n public userId = '';\n public applicationId = '';\n constructor(id: string, request: IFieldObject, userId: string, applicationId: string) {\n this.id = id;\n this.request = request;\n this.userId = userId;\n this.applicationId = applicationId;\n }\n}\n\nexport class DisconnectRequestArgs {\n constructor(public tryToReconnect = true) {}\n}\n\nexport class ConsoleCommandRequestReceivedArg {\n public id = '';\n public group = '';\n public method = '';\n public param1 = '';\n public param2 = '';\n public param3 = '';\n constructor(id: string, group: string, method: string, param1: string, param2: string, param3: string) {\n this.id = id;\n this.group = group;\n this.method = method;\n this.param1 = param1;\n this.param2 = param2;\n this.param3 = param3;\n }\n}\n\nexport class ActionReceivedArg {\n public action: FieldObject;\n constructor(e: FieldObject) {\n this.action = e;\n }\n}\n","'use strict';\n\n/**\n * Hypertext Transfer Protocol (HTTP) response status codes.\n * @see {@link https://en.wikipedia.org/wiki/List_of_HTTP_status_codes}\n */\nenum HttpStatusCode {\n /**\n * The server has received the request headers and the client should proceed to send the request body\n * (in the case of a request for which a body needs to be sent; for example, a POST request).\n * Sending a large request body to a server after a request has been rejected for inappropriate headers would be inefficient.\n * To have a server check the request's headers, a client must send Expect: 100-continue as a header in its initial request\n * and receive a 100 Continue status code in response before sending the body. The response 417 Expectation Failed indicates the request should not be continued.\n */\n CONTINUE = 100,\n\n /**\n * The requester has asked the server to switch protocols and the server has agreed to do so.\n */\n SWITCHING_PROTOCOLS = 101,\n\n /**\n * A WebDAV request may contain many sub-requests involving file operations, requiring a long time to complete the request.\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n * This prevents the client from timing out and assuming the request was lost.\n */\n PROCESSING = 102,\n\n /**\n * Standard response for successful HTTP requests.\n * The actual response will depend on the request method used.\n * In a GET request, the response will contain an entity corresponding to the requested resource.\n * In a POST request, the response will contain an entity describing or containing the result of the action.\n */\n OK = 200,\n\n /**\n * The request has been fulfilled, resulting in the creation of a new resource.\n */\n CREATED = 201,\n\n /**\n * The request has been accepted for processing, but the processing has not been completed.\n * The request might or might not be eventually acted upon, and may be disallowed when processing occurs.\n */\n ACCEPTED = 202,\n\n /**\n * SINCE HTTP/1.1\n * The server is a transforming proxy that received a 200 OK from its origin,\n * but is returning a modified version of the origin's response.\n */\n NON_AUTHORITATIVE_INFORMATION = 203,\n\n /**\n * The server successfully processed the request and is not returning any content.\n */\n NO_CONTENT = 204,\n\n /**\n * The server successfully processed the request, but is not returning any content.\n * Unlike a 204 response, this response requires that the requester reset the document view.\n */\n RESET_CONTENT = 205,\n\n /**\n * The server is delivering only part of the resource (byte serving) due to a range header sent by the client.\n * The range header is used by HTTP clients to enable resuming of interrupted downloads,\n * or split a download into multiple simultaneous streams.\n */\n PARTIAL_CONTENT = 206,\n\n /**\n * The message body that follows is an XML message and can contain a number of separate response codes,\n * depending on how many sub-requests were made.\n */\n MULTI_STATUS = 207,\n\n /**\n * The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response,\n * and are not being included again.\n */\n ALREADY_REPORTED = 208,\n\n /**\n * The server has fulfilled a request for the resource,\n * and the response is a representation of the result of one or more instance-manipulations applied to the current instance.\n */\n IM_USED = 226,\n\n /**\n * Indicates multiple options for the resource from which the client may choose (via agent-driven content negotiation).\n * For example, this code could be used to present multiple video format options,\n * to list files with different filename extensions, or to suggest word-sense disambiguation.\n */\n MULTIPLE_CHOICES = 300,\n\n /**\n * This and all future requests should be directed to the given URI.\n */\n MOVED_PERMANENTLY = 301,\n\n /**\n * This is an example of industry practice contradicting the standard.\n * The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect\n * (the original describing phrase was \"Moved Temporarily\"), but popular browsers implemented 302\n * with the functionality of a 303 See Other. Therefore, HTTP/1.1 added status codes 303 and 307\n * to distinguish between the two behaviours. However, some Web applications and frameworks\n * use the 302 status code as if it were the 303.\n */\n FOUND = 302,\n\n /**\n * SINCE HTTP/1.1\n * The response to the request can be found under another URI using a GET method.\n * When received in response to a POST (or PUT/DELETE), the client should presume that\n * the server has received the data and should issue a redirect with a separate GET message.\n */\n SEE_OTHER = 303,\n\n /**\n * Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.\n * In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.\n */\n NOT_MODIFIED = 304,\n\n /**\n * SINCE HTTP/1.1\n * The requested resource is available only through a proxy, the address for which is provided in the response.\n * Many HTTP clients (such as Mozilla and Internet Explorer) do not correctly handle responses with this status code, primarily for security reasons.\n */\n USE_PROXY = 305,\n\n /**\n * No longer used. Originally meant \"Subsequent requests should use the specified proxy.\"\n */\n SWITCH_PROXY = 306,\n\n /**\n * SINCE HTTP/1.1\n * In this case, the request should be repeated with another URI; however, future requests should still use the original URI.\n * In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request.\n * For example, a POST request should be repeated using another POST request.\n */\n TEMPORARY_REDIRECT = 307,\n\n /**\n * The request and all future requests should be repeated using another URI.\n * 307 and 308 parallel the behaviors of 302 and 301, but do not allow the HTTP method to change.\n * So, for example, submitting a form to a permanently redirected resource may continue smoothly.\n */\n PERMANENT_REDIRECT = 308,\n\n /**\n * The server cannot or will not process the request due to an apparent client error\n * (e.g., malformed request syntax, too large size, invalid request message framing, or deceptive request routing).\n */\n BAD_REQUEST = 400,\n\n /**\n * Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet\n * been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the\n * requested resource. See Basic access authentication and Digest access authentication. 401 semantically means\n * \"unauthenticated\",i.e. the user does not have the necessary credentials.\n */\n UNAUTHORIZED = 401,\n\n /**\n * Reserved for future use. The original intention was that this code might be used as part of some form of digital\n * cash or micro payment scheme, but that has not happened, and this code is not usually used.\n * Google Developers API uses this status if a particular developer has exceeded the daily limit on requests.\n */\n PAYMENT_REQUIRED = 402,\n\n /**\n * The request was valid, but the server is refusing action.\n * The user might not have the necessary permissions for a resource.\n */\n FORBIDDEN = 403,\n\n /**\n * The requested resource could not be found but may be available in the future.\n * Subsequent requests by the client are permissible.\n */\n NOT_FOUND = 404,\n\n /**\n * A request method is not supported for the requested resource;\n * for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.\n */\n METHOD_NOT_ALLOWED = 405,\n\n /**\n * The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.\n */\n NOT_ACCEPTABLE = 406,\n\n /**\n * The client must first authenticate itself with the proxy.\n */\n PROXY_AUTHENTICATION_REQUIRED = 407,\n\n /**\n * The server timed out waiting for the request.\n * According to HTTP specifications:\n * \"The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time.\"\n */\n REQUEST_TIMEOUT = 408,\n\n /**\n * Indicates that the request could not be processed because of conflict in the request,\n * such as an edit conflict between multiple simultaneous updates.\n */\n CONFLICT = 409,\n\n /**\n * Indicates that the resource requested is no longer available and will not be available again.\n * This should be used when a resource has been intentionally removed and the resource should be purged.\n * Upon receiving a 410 status code, the client should not request the resource in the future.\n * Clients such as search engines should remove the resource from their indices.\n * Most use cases do not require clients and search engines to purge the resource, and a \"404 Not Found\" may be used instead.\n */\n GONE = 410,\n\n /**\n * The request did not specify the length of its content, which is required by the requested resource.\n */\n LENGTH_REQUIRED = 411,\n\n /**\n * The server does not meet one of the preconditions that the requester put on the request.\n */\n PRECONDITION_FAILED = 412,\n\n /**\n * The request is larger than the server is willing or able to process. Previously called \"Request Entity Too Large\".\n */\n PAYLOAD_TOO_LARGE = 413,\n\n /**\n * The URI provided was too long for the server to process. Often the result of too much data being encoded as a query-string of a GET request,\n * in which case it should be converted to a POST request.\n * Called \"Request-URI Too Long\" previously.\n */\n URI_TOO_LONG = 414,\n\n /**\n * The request entity has a media type which the server or resource does not support.\n * For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.\n */\n UNSUPPORTED_MEDIA_TYPE = 415,\n\n /**\n * The client has asked for a portion of the file (byte serving), but the server cannot supply that portion.\n * For example, if the client asked for a part of the file that lies beyond the end of the file.\n * Called \"Requested Range Not Satisfiable\" previously.\n */\n RANGE_NOT_SATISFIABLE = 416,\n\n /**\n * The server cannot meet the requirements of the Expect request-header field.\n */\n EXPECTATION_FAILED = 417,\n\n /**\n * This code was defined in 1998 as one of the traditional IETF April Fools' jokes, in RFC 2324, Hyper Text Coffee Pot Control Protocol,\n * and is not expected to be implemented by actual HTTP servers. The RFC specifies this code should be returned by\n * teapots requested to brew coffee. This HTTP status is used as an Easter egg in some websites, including Google.com.\n */\n I_AM_A_TEAPOT = 418,\n\n /**\n * The request was directed at a server that is not able to produce a response (for example because a connection reuse).\n */\n MISDIRECTED_REQUEST = 421,\n\n /**\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n UNPROCESSABLE_ENTITY = 422,\n\n /**\n * The resource that is being accessed is locked.\n */\n LOCKED = 423,\n\n /**\n * The request failed due to failure of a previous request (e.g., a PROPPATCH).\n */\n FAILED_DEPENDENCY = 424,\n\n /**\n * The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.\n */\n UPGRADE_REQUIRED = 426,\n\n /**\n * The origin server requires the request to be conditional.\n * Intended to prevent \"the 'lost update' problem, where a client\n * GETs a resource's state, modifies it, and PUTs it back to the server,\n * when meanwhile a third party has modified the state on the server, leading to a conflict.\"\n */\n PRECONDITION_REQUIRED = 428,\n\n /**\n * The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.\n */\n TOO_MANY_REQUESTS = 429,\n\n /**\n * The server is unwilling to process the request because either an individual header field,\n * or all the header fields collectively, are too large.\n */\n REQUEST_HEADER_FIELDS_TOO_LARGE = 431,\n\n /**\n * A server operator has received a legal demand to deny access to a resource or to a set of resources\n * that includes the requested resource. The code 451 was chosen as a reference to the novel Fahrenheit 451.\n */\n UNAVAILABLE_FOR_LEGAL_REASONS = 451,\n\n /**\n * A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.\n */\n INTERNAL_SERVER_ERROR = 500,\n\n /**\n * The server either does not recognize the request method, or it lacks the ability to fulfill the request.\n * Usually this implies future availability (e.g., a new feature of a web-service API).\n */\n NOT_IMPLEMENTED = 501,\n\n /**\n * The server was acting as a gateway or proxy and received an invalid response from the upstream server.\n */\n BAD_GATEWAY = 502,\n\n /**\n * The server is currently unavailable (because it is overloaded or down for maintenance).\n * Generally, this is a temporary state.\n */\n SERVICE_UNAVAILABLE = 503,\n\n /**\n * The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\n */\n GATEWAY_TIMEOUT = 504,\n\n /**\n * The server does not support the HTTP protocol version used in the request\n */\n HTTP_VERSION_NOT_SUPPORTED = 505,\n\n /**\n * Transparent content negotiation for the request results in a circular reference.\n */\n VARIANT_ALSO_NEGOTIATES = 506,\n\n /**\n * The server is unable to store the representation needed to complete the request.\n */\n INSUFFICIENT_STORAGE = 507,\n\n /**\n * The server detected an infinite loop while processing the request.\n */\n LOOP_DETECTED = 508,\n\n /**\n * Further extensions to the request are required for the server to fulfill it.\n */\n NOT_EXTENDED = 510,\n\n /**\n * The client needs to authenticate to gain network access.\n * Intended for use by intercepting proxies used to control access to the network (e.g., \"captive portals\" used\n * to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).\n */\n NETWORK_AUTHENTICATION_REQUIRED = 511,\n}\n\nexport default HttpStatusCode;\n","import { TransactionResult } from './RestTransactionResponse';\nimport HttpStatusCode from '../Client/Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\n\nexport class RestResponseError extends Error {\n constructor(message: string, public response: RestResponse) {\n super(message);\n }\n}\nexport class RestResponse implements IRestResponse {\n protected _body: any | null = null;\n protected _statusCode = 0;\n protected _cancelled = false;\n protected _logonResult = '';\n protected _passwordConstraints: object | null = null;\n protected _error = '';\n\n public get body(): any | null {\n return this._body;\n }\n\n public get statusCode(): number {\n return this._statusCode;\n }\n\n public set statusCode(value: number) {\n this._statusCode = value;\n }\n\n public get cancelled(): boolean {\n return this._cancelled;\n }\n\n public get logonResult(): string {\n return this._logonResult;\n }\n\n public get passwordConstraints(): object | null {\n return this._passwordConstraints;\n }\n \n public headers: Map;\n\n constructor(code?: number, body?: any | null, responseInfo?: { response?: Response | null, responseType?: 'arraybuffer' | 'blob' | 'formdata' | 'json' | 'text'} | null, cancelled?: boolean | null) {\n if (code) {\n this._statusCode = code;\n }\n if (body) {\n try {\n // default json\n if(!responseInfo?.response || !responseInfo.responseType || responseInfo.responseType === 'text') {\n this._body = JSON.parse(body);\n } else {\n this._body = body;\n }\n } catch (e) {\n this._body = body;\n }\n }\n if (cancelled) {\n this._cancelled = cancelled;\n }\n this.headers = new Map();\n if (responseInfo?.response?.headers) {\n responseInfo.response.headers.forEach((value, key) => {\n this.headers.set(key, value);\n });\n }\n this.parseLoginResponseBody();\n }\n\n public parseTransactionResult(response: TransactionResult) {\n this._statusCode = response.statusCode;\n this._cancelled = false;\n this._body = response.result;\n this.parseLoginResponseBody();\n }\n\n public toString(): string {\n return JSON.stringify(this);\n }\n\n // For testing purpose only\n public shouldSucceed(): void {\n if (this._statusCode === HttpStatusCode.OK || this._statusCode === HttpStatusCode.CREATED) {\n return;\n }\n throw new Error('Response was ' + this._statusCode);\n }\n\n public shouldFail(code?: number): void {\n if (!code) {\n if (this._statusCode === HttpStatusCode.OK || this._statusCode === HttpStatusCode.CREATED) {\n throw new Error('Response was ' + this._statusCode);\n }\n } else {\n if (this._statusCode !== code) {\n throw new Error('Response was ' + this._statusCode);\n }\n }\n return;\n }\n\n private parseLoginResponseBody(): void {\n if (\n this._body &&\n (this._statusCode === HttpStatusCode.UNAUTHORIZED || this._statusCode === HttpStatusCode.FORBIDDEN)\n ) {\n try {\n this._logonResult = this._body['LogonResult'];\n this._passwordConstraints = this._body['PasswordConstraints'];\n } catch (e) {}\n }\n }\n \n public static FromJson(str : string) : RestResponse | null {\n try {\n return JSON.parse(str) as RestResponse;\n } catch (error) {\n return null;\n }\n }\n}\n","/**\n * Indicates an error with dispatching.\n * \n * @export\n * @class DispatchError\n * @extends {Error}\n */\nexport class DispatchError extends Error \n{\n constructor(message: string){\n super(message);\n }\n}","import { ISubscription } from \"./ISubscription\";\n\nexport class PromiseSubscription implements ISubscription {\n /**\n * Indicates if the subscription has been executed before.\n */\n public isExecuted = false;\n\n /**\n * Creates an instance of Subscription.\n *\n * @param {TEventHandler} handler The handler for the subscription.\n * @param {boolean} isOnce Indicates if the handler should only be executed once.\n */\n constructor(\n public handler: TEventHandler,\n public isOnce: boolean\n ) {}\n\n /**\n * Executes the handler.\n *\n * @param {boolean} executeAsync True if the even should be executed async.\n * @param {*} scope The scope the scope of the event.\n * @param {IArguments} args The arguments for the event.\n */\n public async execute(\n executeAsync: boolean,\n scope: any,\n args: IArguments\n ): Promise {\n\n if (!this.isOnce || !this.isExecuted) {\n this.isExecuted = true;\n\n //TODO: do we need to cast to any -- seems yuck\n var fn: any = this.handler;\n\n if (executeAsync) {\n setTimeout(() => {\n fn.apply(scope, args);\n }, 1);\n\n return;\n }\n\n let result = fn.apply(scope, args) as Promise;\n await result;\n }\n }\n}\n","import { IEventManagement } from \"./IEventManagement\";\n\n/**\n * Allows the user to interact with the event.\n *\n * @class EventManagement\n * @implements {IEventManagement}\n */\nexport class EventManagement implements IEventManagement {\n public propagationStopped = false;\n\n constructor(public unsub: () => void) {}\n\n public stopPropagation() {\n this.propagationStopped = true;\n }\n}\n","import { ISubscription } from \"./ISubscription\";\n\n/**\n * Stores a handler. Manages execution meta data.\n * @class Subscription\n * @template TEventHandler\n */\nexport class Subscription implements ISubscription {\n /**\n * Indicates if the subscription has been executed before.\n */\n public isExecuted = false;\n\n /**\n * Creates an instance of Subscription.\n *\n * @param {TEventHandler} handler The handler for the subscription.\n * @param {boolean} isOnce Indicates if the handler should only be executed once.\n */\n constructor(public handler: TEventHandler, public isOnce: boolean) { }\n\n /**\n * Executes the handler.\n *\n * @param {boolean} executeAsync True if the even should be executed async.\n * @param {*} scope The scope the scope of the event.\n * @param {IArguments} args The arguments for the event.\n */\n public execute(executeAsync: boolean, scope: any, args: IArguments) {\n if (!this.isOnce || !this.isExecuted) {\n this.isExecuted = true;\n\n var fn: any = this.handler;\n\n if (executeAsync) {\n setTimeout(() => {\n fn.apply(scope, args);\n }, 1);\n } else {\n fn.apply(scope, args);\n }\n }\n }\n}\n","import { ISubscribable } from \"../events/ISubscribable\";\n\n/**\n * Hides the implementation of the event dispatcher. Will expose methods that\n * are relevent to the event.\n */\nexport class DispatcherWrapper implements ISubscribable {\n private _subscribe: (fn: THandler) => () => void;\n private _unsubscribe: (fn: THandler) => void;\n private _one: (fn: THandler) => () => void;\n private _has: (fn: THandler) => boolean;\n private _clear: () => void;\n private _count: () => number;\n\n /**\n * Creates a new EventDispatcherWrapper instance.\n * @param dispatcher The dispatcher.\n */\n constructor(dispatcher: ISubscribable) {\n this._subscribe = (fn: THandler) => dispatcher.subscribe(fn);\n this._unsubscribe = (fn: THandler) => dispatcher.unsubscribe(fn);\n this._one = (fn: THandler) => dispatcher.one(fn);\n this._has = (fn: THandler) => dispatcher.has(fn);\n this._clear = () => dispatcher.clear();\n this._count = () => dispatcher.count;\n }\n\n /**\n * Returns the number of subscriptions.\n *\n * @readonly\n * @type {number}\n * @memberOf DispatcherWrapper\n */\n get count(): number {\n return this._count();\n }\n\n /**\n * Subscribe to the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n * @returns A function that unsubscribes the event handler from the event.\n */\n public subscribe(fn: THandler): () => void {\n return this._subscribe(fn);\n }\n\n /**\n * Subscribe to the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n * @returns A function that unsubscribes the event handler from the event.\n */\n public sub(fn: THandler): () => void {\n return this.subscribe(fn);\n }\n\n /**\n * Unsubscribe from the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n */\n public unsubscribe(fn: THandler): void {\n this._unsubscribe(fn);\n }\n\n /**\n * Unsubscribe from the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n */\n public unsub(fn: THandler): void {\n this.unsubscribe(fn);\n }\n\n /**\n * Subscribe once to the event with the specified name.\n * @param fn The event handler that is called when the event is dispatched.\n */\n public one(fn: THandler): () => void {\n return this._one(fn);\n }\n\n /**\n * Checks it the event has a subscription for the specified handler.\n * @param fn The event handler.\n */\n public has(fn: THandler): boolean {\n return this._has(fn);\n }\n\n /**\n * Clears all the subscriptions.\n */\n public clear(): void {\n this._clear();\n }\n}\n","import { IPropagationStatus } from \"./IPropagationStatus\";\nimport { ISubscription } from \"../events/ISubscription\";\nimport { ISubscribable } from \"../events/ISubscribable\";\nimport { Subscription } from \"../events/subscription\";\nimport { EventManagement } from \"../management/EventManagement\";\nimport { DispatcherWrapper } from \"./DispatcherWrapper\";\n\n/**\n * Base class for implementation of the dispatcher. It facilitates the subscribe\n * and unsubscribe methods based on generic handlers. The TEventType specifies\n * the type of event that should be exposed. Use the asEvent to expose the\n * dispatcher as event.\n */\nexport abstract class DispatcherBase\n implements ISubscribable {\n private _wrap = new DispatcherWrapper(this);\n protected _subscriptions = new Array>();\n\n /**\n * Returns the number of subscriptions.\n *\n * @readonly\n *\n * @memberOf DispatcherBase\n */\n public get count() {\n return this._subscriptions.length;\n }\n\n /**\n * Subscribe to the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n * @returns A function that unsubscribes the event handler from the event.\n */\n public subscribe(fn: TEventHandler): () => void {\n if (fn) {\n this._subscriptions.push(this.createSubscription(fn, false));\n }\n return () => {\n this.unsubscribe(fn);\n };\n }\n\n /**\n * Subscribe to the event dispatcher.\n * @param fn The event handler that is called when the event is dispatched.\n * @returns A function that unsubscribes the event handler from the event.\n */\n public sub(fn: TEventHandler): () => void {\n return this.subscribe(fn);\n }\n\n /**\n * Subscribe once to the event with the specified name.\n * @param fn The event handler that is called when the event is dispatched.\n * @returns A function that unsubscribes the event handler from the event.\n */\n public one(fn: TEventHandler): () => void {\n if (fn) {\n this._subscriptions.push(this.createSubscription(fn, true));\n }\n return () => {\n this.unsubscribe(fn);\n };\n }\n\n /**\n * Checks it the event has a subscription for the specified handler.\n * @param fn The event handler.\n */\n public has(fn: TEventHandler): boolean {\n if (!fn) return false;\n return this._subscriptions.some((sub) => sub.handler == fn);\n }\n\n /**\n * Unsubscribes the handler from the dispatcher.\n * @param fn The event handler.\n */\n public unsubscribe(fn: TEventHandler): void {\n if (!fn) return;\n\n for (let i = 0; i < this._subscriptions.length; i++) {\n if (this._subscriptions[i].handler == fn) {\n this._subscriptions.splice(i, 1);\n break;\n }\n }\n }\n\n /**\n * Unsubscribes the handler from the dispatcher.\n * @param fn The event handler.\n */\n public unsub(fn: TEventHandler): void {\n this.unsubscribe(fn);\n }\n\n /**\n * Generic dispatch will dispatch the handlers with the given arguments.\n *\n * @protected\n * @param {boolean} executeAsync `True` if the even should be executed async.\n * @param {*} scrop The scope of the event. The scope becomes the `this` for handler.\n * @param {IArguments} args The arguments for the event.\n * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n *\n * @memberOf DispatcherBase\n */\n protected _dispatch(\n executeAsync: boolean,\n scope: any,\n args: IArguments\n ): IPropagationStatus | null {\n //execute on a copy because of bug #9\n for (let sub of [...this._subscriptions]) {\n let ev = new EventManagement(() => this.unsub(sub.handler));\n let nargs: any = Array.prototype.slice.call(args);\n nargs.push(ev);\n\n let s = sub as Subscription;\n s.execute(executeAsync, scope, nargs as IArguments);\n\n //cleanup subs that are no longer needed\n this.cleanup(sub);\n\n if (!executeAsync && ev.propagationStopped) {\n return { propagationStopped: true };\n }\n }\n\n if (executeAsync) {\n return null;\n }\n\n return { propagationStopped: false };\n }\n\n protected createSubscription(\n handler: TEventHandler,\n isOnce: boolean\n ): ISubscription {\n return new Subscription(handler, isOnce);\n }\n\n /**\n * Cleans up subs that ran and should run only once.\n */\n protected cleanup(sub: ISubscription) {\n if (sub.isOnce && sub.isExecuted) {\n let i = this._subscriptions.indexOf(sub);\n if (i > -1) {\n this._subscriptions.splice(i, 1);\n }\n }\n }\n\n /**\n * Creates an event from the dispatcher. Will return the dispatcher\n * in a wrapper. This will prevent exposure of any dispatcher methods.\n */\n public asEvent(): ISubscribable {\n return this._wrap;\n }\n\n /**\n * Clears all the subscriptions.\n */\n public clear(): void {\n this._subscriptions.splice(0, this._subscriptions.length);\n }\n}\n","import { ISubscription } from \"../events/ISubscription\";\nimport { PromiseSubscription } from \"../events/PromiseSubscription\";\nimport { EventManagement } from \"../management/EventManagement\";\nimport { DispatcherBase } from \"./DispatcherBase\";\nimport { DispatchError } from \"./DispatchError\";\nimport { IPropagationStatus } from \"./IPropagationStatus\";\n\nexport abstract class PromiseDispatcherBase extends DispatcherBase {\n constructor() {\n super();\n }\n\n protected _dispatch(\n executeAsync: boolean,\n scope: any,\n args: IArguments\n ): IPropagationStatus | null {\n throw new DispatchError(\n \"_dispatch not supported. Use _dispatchAsPromise.\"\n );\n }\n\n protected createSubscription(\n handler: TEventHandler,\n isOnce: boolean\n ): ISubscription {\n return new PromiseSubscription(handler, isOnce);\n }\n\n /**\n * Generic dispatch will dispatch the handlers with the given arguments.\n *\n * @protected\n * @param {boolean} executeAsync `True` if the even should be executed async.\n * @param {*} scrop The scope of the event. The scope becomes the `this` for handler.\n * @param {IArguments} args The arguments for the event.\n * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n *\n * @memberOf DispatcherBase\n */\n protected async _dispatchAsPromise(\n executeAsync: boolean,\n scope: any,\n args: IArguments\n ): Promise {\n //execute on a copy because of bug #9\n for (let sub of [...this._subscriptions]) {\n\n let ev = new EventManagement(() => this.unsub(sub.handler));\n let nargs: any = Array.prototype.slice.call(args);\n nargs.push(ev);\n\n let ps = sub as PromiseSubscription;\n await ps.execute(executeAsync, scope, nargs as IArguments);\n\n //cleanup subs that are no longer needed\n this.cleanup(sub);\n\n if (!executeAsync && ev.propagationStopped) {\n return { propagationStopped: true };\n }\n }\n\n if (executeAsync) {\n return null;\n }\n\n return { propagationStopped: false };\n }\n}\n","import { IPromiseSimpleEventHandler } from \"./IPromiseSimpleEventHandler\";\nimport { IPromiseSimpleEvent } from \"./IPromiseSimpleEvent\";\nimport { DispatchError } from \"../core/dispatching/DispatchError\";\nimport { IPropagationStatus } from \"../core/dispatching/IPropagationStatus\";\nimport { PromiseDispatcherBase } from \"../core/dispatching/PromiseDispatcherBase\";\n\n/**\n * The dispatcher handles the storage of subsciptions and facilitates\n * subscription, unsubscription and dispatching of a simple event\n * \n * @export\n * @class PromiseSimpleEventDispatcher\n * @extends {PromiseDispatcherBase>}\n * @implements {IPromiseSimpleEvent}\n * @template TArgs \n */\nexport class PromiseSimpleEventDispatcher\n extends PromiseDispatcherBase>\n implements IPromiseSimpleEvent {\n /**\n * Creates a new SimpleEventDispatcher instance.\n */\n constructor() {\n super();\n }\n\n /**\n * Dispatches the event.\n * @param args The arguments object.\n * @returns {IPropagationStatus} The status of the dispatch.\n * @memberOf PromiseSimpleEventDispatcher\n */\n async dispatch(args: TArgs): Promise {\n const result = await this._dispatchAsPromise(false, this, arguments);\n if (result == null) {\n throw new DispatchError(\"Got `null` back from dispatch.\");\n }\n\n return result;\n }\n\n /**\n * Dispatches the event without waiting for it to complete.\n * @param args The argument object.\n * @memberOf PromiseSimpleEventDispatcher\n */\n public dispatchAsync(args: TArgs): void {\n this._dispatchAsPromise(true, this, arguments);\n }\n\n /**\n * Creates an event from the dispatcher. Will return the dispatcher\n * in a wrapper. This will prevent exposure of any dispatcher methods.\n */\n public asEvent(): IPromiseSimpleEvent {\n return super.asEvent();\n }\n}\n","import { ISimpleEventHandler } from \"./ISimpleEventHandler\";\nimport { ISimpleEvent } from \"./ISimpleEvent\";\nimport { DispatcherBase } from \"../core/dispatching/DispatcherBase\";\nimport { DispatchError } from \"../core/dispatching/DispatchError\";\nimport { IPropagationStatus } from \"../core/dispatching/IPropagationStatus\";\n\n/**\n * The dispatcher handles the storage of subsciptions and facilitates\n * subscription, unsubscription and dispatching of a simple event\n *\n * @export\n * @class SimpleEventDispatcher\n * @extends {DispatcherBase>}\n * @implements {ISimpleEvent}\n * @template TArgs\n */\nexport class SimpleEventDispatcher\n extends DispatcherBase>\n implements ISimpleEvent {\n /**\n * Creates an instance of SimpleEventDispatcher.\n *\n * @memberOf SimpleEventDispatcher\n */\n constructor() {\n super();\n }\n\n /**\n * Dispatches the event.\n *\n * @param {TArgs} args The arguments object.\n * @returns {IPropagationStatus} The status of the event.\n *\n * @memberOf SimpleEventDispatcher\n */\n dispatch(args: TArgs): IPropagationStatus {\n const result = this._dispatch(false, this, arguments);\n if (result == null) {\n throw new DispatchError(\"Got `null` back from dispatch.\");\n }\n return result;\n }\n\n /**\n * Dispatches the event without waiting for the result.\n *\n * @param {TArgs} args The arguments object.\n *\n * @memberOf SimpleEventDispatcher\n */\n dispatchAsync(args: TArgs): void {\n this._dispatch(true, this, arguments);\n }\n\n /**\n * Creates an event from the dispatcher. Will return the dispatcher\n * in a wrapper. This will prevent exposure of any dispatcher methods.\n * \n * @returns {ISimpleEvent} The event.\n * \n * @memberOf SimpleEventDispatcher\n */\n public asEvent(): ISimpleEvent {\n return super.asEvent();\n }\n}\n","import { DispatcherBase } from \"../core/dispatching/DispatcherBase\";\nimport { DispatchError } from \"../core/dispatching/DispatchError\";\nimport { IPropagationStatus } from \"../core/dispatching/IPropagationStatus\";\nimport { ISignal } from \"./ISignal\";\nimport { ISignalHandler } from \"./ISignalHandler\";\n\n/**\n * The dispatcher handles the storage of subsciptions and facilitates\n * subscription, unsubscription and dispatching of a signal event.\n *\n * @export\n * @class SignalDispatcher\n * @extends {DispatcherBase}\n * @implements {ISignal}\n */\nexport class SignalDispatcher\n extends DispatcherBase\n implements ISignal {\n\n /**\n * Creates an instance of SignalDispatcher.\n * \n * @memberOf SignalDispatcher\n */\n constructor() {\n super();\n }\n\n /**\n * Dispatches the signal.\n * \n * @returns {IPropagationStatus} The status of the signal.\n * \n * @memberOf SignalDispatcher\n */\n public dispatch(): IPropagationStatus {\n const result = this._dispatch(false, this, arguments);\n if (result == null) {\n throw new DispatchError(\"Got `null` back from dispatch.\");\n }\n return result;\n }\n\n\n /**\n * Dispatches the signal without waiting for the result.\n * \n * @memberOf SignalDispatcher\n */\n public dispatchAsync(): void {\n this._dispatch(true, this, arguments);\n }\n\n /**\n * Creates an event from the dispatcher. Will return the dispatcher\n * in a wrapper. This will prevent exposure of any dispatcher methods.\n * \n * @returns {ISignal} The signal.\n * \n * @memberOf SignalDispatcher\n */\n public asEvent(): ISignal {\n return super.asEvent();\n }\n}\n","import { PromiseSimpleEventDispatcher } from './strongly-typed-events/promise-simple-events/PromiseSimpleEventDispatcher';\nimport { SimpleEventDispatcher } from './strongly-typed-events/simple-events/SimpleEventDispatcher';\nimport { SignalDispatcher } from './strongly-typed-events/signals/SignalDispatcher';\nimport { EventDispatcher as StronglyTypedEventDispatcher } from './strongly-typed-events/events/EventDispatcher';\nimport { PromiseSignalDispatcher } from './strongly-typed-events/primise-signal/PromiseSignalDispatcher';\nimport { PromiseEventDispatcher } from './strongly-typed-events/promise-events/PromiseEventDispatcher';\n\nexport type Handler = (args: TArgs) => void;\nexport type AsyncHandler = (args: TArgs) => Promise;\nexport type Signal = () => void;\n\nexport class SenderEventDispatcher extends StronglyTypedEventDispatcher {}\n\nexport class AsyncSenderEventDispatcher extends PromiseEventDispatcher {}\n\nexport class EventDispatcher extends SimpleEventDispatcher {}\n\nexport class AsyncEventDispatcher extends PromiseSimpleEventDispatcher {}\n\nexport class SignalEventDispatcher extends SignalDispatcher {}\n\nexport class AsyncSignalEventDispatcher extends PromiseSignalDispatcher {}\n\nexport class CancellationToken {\n public isCancellationRequested: boolean;\n public timeout: number;\n private _cancelDispatcher = new SignalEventDispatcher();\n\n constructor(timeout = -1) {\n this.isCancellationRequested = false;\n this.timeout = timeout;\n if (timeout !== -1) {\n setTimeout((e: any) => {\n this.isCancellationRequested = true;\n this._cancelDispatcher.dispatch();\n }, timeout);\n }\n }\n\n public cancelToken() {\n this.isCancellationRequested = true;\n this._cancelDispatcher.dispatch();\n }\n\n public onCancel(handler: Signal): () => void {\n return this._cancelDispatcher.subscribe(handler);\n }\n}\n\nexport function sleepAsync(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function isNullOrEmpty(value: string) {\n return value === null || value.length === 0;\n}\n\nexport class Deferred {\n public promise: Promise;\n public resolve: any;\n public reject: any;\n\n constructor(autoCompleteData?: any, success?: boolean) {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n if (autoCompleteData !== undefined) {\n if (success === undefined || success === true) {\n resolve(autoCompleteData);\n } else {\n reject(autoCompleteData);\n }\n }\n });\n }\n\n public reset() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","export class FieldValue {\n // #region Fields\n\n private _object: any = null;\n private _value: any;\n private _fieldId: string;\n\n // #endregion\n\n // #region Constructor, Dispose\n\n constructor(fieldId: string, value: any) {\n this._fieldId = fieldId;\n this._value = value;\n this._object = null;\n }\n\n // #endregion\n\n // #region Properties\n\n public dirty = false;\n private outputFunc: () => object = () => this._value;\n\n // #endregion\n\n // #region Methods\n\n public get value(): any {\n return this.outputFunc();\n }\n\n public get object(): any {\n return this._object;\n }\n\n public get fieldId(): string {\n return this._fieldId;\n }\n\n public get isExtracted(): boolean {\n return this._object !== null;\n }\n\n public setValue(value: any) {\n this._value = value;\n this.outputFunc = () => this._value;\n this._object = null;\n this.dirty = true;\n }\n\n public setObject(value: any, outputFunc: () => any): void {\n this._object = value;\n this._value = null;\n this.outputFunc = outputFunc;\n this.dirty = true;\n }\n\n // #endregion\n}\n","type predicate = (arg: T) => boolean;\n\nexport class FilterSet {\n private _array = new Array();\n public [Symbol.toStringTag] = \"FilterSet\";\n public get size(): number {\n return this._array.length;\n }\n\n constructor() {\n }\n\n public add(value: T): this {\n this._array.push(value);\n return this;\n }\n\n clear(): void {\n this._array.length = 0;\n }\n\n delete(value: T): boolean {\n const i = this._array.indexOf(value);\n if (i >= 0) {\n // JDT - We should use splice()\n delete this._array[i];\n return true;\n }\n return false;\n }\n\n forEach(callbackfn: (value: T) => void): void {\n for ( let i = 0 ; i < this._array.length; ++i ) {\n callbackfn(this._array[i]);\n }\n }\n\n *[Symbol.iterator]() {\n for (const i of this._array) {\n yield i;\n }\n }\n\n has(value: T): boolean {\n const i = this._array.indexOf(value);\n if (i >= 0) {\n return true;\n }\n return false;\n }\n\n values() {\n return this._array;\n }\n\n public first(pred?: predicate): T {\n for (const elem of this._array) {\n if (pred) {\n if (pred(elem)) {\n return elem;\n }\n } else {\n return elem;\n }\n }\n throw new Error(\"Can't find element\");\n }\n\n public firstOrDefault(pred?: predicate): T | null {\n for (const elem of this._array) {\n if (pred) {\n if (pred(elem)) {\n return elem;\n }\n } else {\n return elem;\n }\n }\n return null;\n }\n\n public where(pred: predicate): Set {\n const result = new Set();\n for (const value of this._array) {\n if (pred(value)) {\n result.add(value);\n }\n }\n return result;\n }\n\n public any(pred: predicate): boolean {\n for (const elem of this._array) {\n if (pred(elem)) {\n return true;\n }\n }\n return false;\n }\n}\n\nexport class FilterMap extends Map {\n constructor() {\n super();\n }\n\n public where(pred: predicate): Set<[U, V]> {\n const result = new Set<[U, V]>();\n for (const [key, value] of this) {\n if (pred(value)) {\n result.add([key, value]);\n }\n }\n return result;\n }\n}\n","import { FilterSet } from './Linq';\n\nexport class ObservableCollection extends FilterSet {\n private onAdded?: (element: T) => void;\n private onRemoved?: (element: T) => void;\n private onCleared?: () => void;\n\n public suspend = false;\n\n constructor(onAdded?: (element: T) => void, onRemoved?: (element: T) => void, onCleared?: () => void) {\n super();\n this.onAdded = onAdded;\n this.onRemoved = onRemoved;\n this.onCleared = onCleared;\n }\n\n public static From(array: T[]): ObservableCollection {\n const result = new ObservableCollection();\n for (const item of array) {\n result.add(item);\n }\n return result;\n }\n\n public add(value: T): this {\n const result = super.add(value);\n if ( (this.suspend === false) && (this.onAdded !== undefined) ) {\n this.onAdded(value);\n }\n return result;\n }\n\n public clear(): void {\n super.clear();\n if ( (this.suspend === false) && (this.onCleared !== undefined) ) {\n this.onCleared();\n }\n return;\n }\n\n public delete(value: T): boolean {\n const result = super.delete(value);\n if ( (this.suspend === false) && (this.onRemoved !== undefined) ) {\n this.onRemoved(value);\n }\n return result;\n }\n}\n","import { FieldValue } from './FieldValue';\nimport { IFieldObject } from '../Client/Interface/IFieldObject';\nimport { ObservableCollection } from './ObservableCollection';\nimport { EventDispatcher, Handler } from './Helpers';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class FieldObject implements IFieldObject {\n // #region Constants\n // #endregion\n\n // #region Fields\n\n protected _fields = new Map();\n private _propertyChangedDispatcher = new EventDispatcher();\n\n // #endregion\n\n // #region Properties\n\n public lastFieldName = '';\n public lastFieldValidFlags = 0;\n public lastFieldType = '';\n\n public roParent: IRestObject | null = null;\n\n public static buildFrom(typeConstructor: new () => T, otherFieldObject: IFieldObject): T {\n const result = new typeConstructor();\n result.loadFrom(otherFieldObject);\n return result;\n }\n\n public get AllFieldsKey(): IterableIterator {\n return this._fields.keys();\n }\n\n public get isDirty(): boolean {\n for (const [key, value] of this._fields) {\n if (value.dirty === true) {\n return true;\n }\n }\n return false;\n }\n\n public set isDirty(dirty: boolean) {\n for (const [key, value] of this._fields) {\n value.dirty = dirty;\n }\n }\n\n public get allFields(): ReadonlyMap {\n return this._fields;\n }\n\n // #endregion\n\n // #region Events\n\n public onPropertyChanged(handler: Handler) {\n return this._propertyChangedDispatcher.subscribe(handler);\n }\n\n // #endregion\n\n // #region Constructor, Dispose\n\n public dispose() {\n this._fields.clear();\n }\n\n // #endregion\n\n // #region Methods\n\n public hasField(fieldId: string): boolean {\n return this._fields.has(fieldId.toLowerCase());\n }\n\n // #region Field\n\n public getNullableField(fieldId: string, validFlags?: number): T | null {\n fieldId = fieldId.toLowerCase();\n if (this.isNullableFieldNull(fieldId)) {\n return null;\n }\n return this.getField(fieldId, validFlags);\n }\n\n public getField(fieldId: string, validFlags?: number): T {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'primitive';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n return container.value as T;\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public getFieldOrDefault(fieldId: string, defaultValue?: T, validFlags?: number): T | undefined {\n if (this.hasField(fieldId)) {\n return this.getField(fieldId, validFlags);\n } else if (defaultValue) {\n return defaultValue;\n }\n }\n\n public setNullableField(fieldId: string, newValue: T | null): void {\n if (newValue === null) {\n this._fields.delete(fieldId);\n } else {\n this.setField(fieldId, newValue);\n }\n }\n\n public setField(fieldId: string, newValue: T): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(newValue);\n }\n } else {\n const container = new FieldValue(fieldId, newValue);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n // #endregion\n\n // #region FieldDate\n\n public getNullableFieldDate(fieldId: string, validFlags?: number): Date | null {\n fieldId = fieldId.toLowerCase();\n if (this.isNullableFieldNull(fieldId)) {\n return null;\n }\n return this.getFieldDate(fieldId, validFlags);\n }\n\n public getFieldDate(fieldId: string, validFlags?: number): Date {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Date';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n return new Date(container.value);\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public setNullableFieldDate(fieldId: string, newValue: Date | null): void {\n if (newValue === null) {\n this._fields.delete(fieldId);\n } else {\n this.setFieldDate(fieldId, newValue);\n }\n }\n\n public setFieldDate(fieldId: string, newValue: Date): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(newValue.toISOString());\n }\n } else {\n const container = new FieldValue(fieldId, newValue.toISOString());\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n // #endregion\n\n // #region FieldGuid\n\n public getNullableFieldGuid(fieldId: string, validFlags?: number): IGuid | null {\n fieldId = fieldId.toLowerCase();\n if (this.isNullableFieldNull(fieldId)) {\n return null;\n }\n return this.getFieldGuid(fieldId, validFlags);\n }\n\n public getFieldGuid(fieldId: string, validFlags?: number): IGuid {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Guid';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.value === null) {\n return SafeGuid.EMPTY;\n }\n return SafeGuid.parse(container.value.toLowerCase());\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public setNullableFieldGuid(fieldId: string, newValue: IGuid | null): void {\n if (newValue === null) {\n this._fields.delete(fieldId);\n } else {\n this.setFieldGuid(fieldId, newValue);\n }\n }\n\n public setFieldGuid(fieldId: string, newValue: IGuid): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(newValue.toString());\n }\n } else {\n const container = new FieldValue(fieldId, newValue.toString().toLowerCase());\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n // #endregion\n\n // #region FieldArray\n\n public setFieldArray(fieldId: string, newValue: ObservableCollection): void {\n // Key must be case insensitive\n const dataArray = new Array();\n for (const elem of newValue) {\n dataArray.push(elem);\n }\n\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(dataArray);\n }\n } else {\n const container = new FieldValue(fieldId, dataArray);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n public getFieldArray(fieldId: string, validFlags?: number): ObservableCollection {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Array';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const result = new ObservableCollection(\n (e: T) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n (e: T) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n () => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n );\n result.suspend = true;\n for (const item of container.value) {\n result.add(item);\n }\n result.suspend = false;\n container.setObject(result, () => {\n const currentValue = new Array();\n for (const item of result) {\n currentValue.push(item);\n }\n return currentValue;\n });\n return result;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n // #endregion FieldArray\n\n // #region FieldArrayGuid\n\n public setFieldArrayGuid(fieldId: string, newValue: ObservableCollection): void {\n // Key must be case insensitive\n const stringArray = new Array();\n for (const elem of newValue) {\n stringArray.push(elem.toString());\n }\n\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(stringArray);\n }\n } else {\n const container = new FieldValue(fieldId, stringArray);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n public getFieldArrayGuid(fieldId: string, validFlags?: number): ObservableCollection {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Array';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const result = new ObservableCollection(\n (e: IGuid) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n (e: IGuid) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n () => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n );\n result.suspend = true;\n for (const item of container.value) {\n result.add(SafeGuid.parse(item.toString().toLowerCase()));\n }\n result.suspend = false;\n container.setObject(result, () => {\n const currentValue = new Array();\n for (const item of result) {\n currentValue.push(item.toString());\n }\n return currentValue;\n });\n return result;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n // #endregion FieldArrayGuid\n\n // #region FieldDictionary\n\n public getFieldDictionary(fieldId: string, validFlags?: number, keyType?: string): Map {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Map';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const result = new Map();\n if (container.value !== null) {\n for (const key of Object.keys(container.value)) {\n if (keyType === 'number') {\n result.set(Number(key) as unknown as TKey, container.value[key]);\n } else {\n // string, guid\n result.set(key as unknown as TKey, container.value[key]);\n }\n }\n }\n\n container.setObject(result, () => {\n const jsonObject: any = {};\n result.forEach((value, key) => {\n jsonObject[key] = value;\n });\n return jsonObject;\n });\n\n return result;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public setFieldDictionary(fieldId: string, newValue: Map): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n\n const jsonObject: any = {};\n newValue.forEach((value, key) => {\n jsonObject[key] = value;\n });\n\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(jsonObject);\n }\n } else {\n const container = new FieldValue(fieldId, jsonObject);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n // #endregion\n\n // #region FieldObject\n\n public getFieldObject(classType: new () => TImpl, fieldId: string, validFlags?: number): T {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'FieldObject';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const newFo = new classType();\n newFo.loadFields(container.value);\n container.setObject(newFo, () => newFo.toJson());\n return newFo as unknown as T;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public setFieldObject(fieldId: string, newValue: T): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(newValue.toJson());\n }\n } else {\n const container = new FieldValue(fieldId, newValue.toJson());\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n // #endregion\n\n // #region FieldObjectArray\n\n public setFieldObjectArray(fieldId: string, newValue: ObservableCollection): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n\n const currentValue = new Array();\n for (const item of newValue) {\n currentValue.push(item.toJson());\n }\n\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(currentValue);\n }\n } else {\n const container = new FieldValue(fieldId, currentValue);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n public getFieldObjectArray(classType: new () => TImpl, fieldId: string, validFlags?: number): ObservableCollection {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Array';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const result = new ObservableCollection(\n (e: T) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n (e: T) => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n () => {\n container.dirty = true;\n this._propertyChangedDispatcher.dispatch(this);\n },\n );\n result.suspend = true;\n for (const item of container.value) {\n const newFo = new classType();\n newFo.loadFields(item);\n result.add(newFo as unknown as T);\n }\n result.suspend = false;\n container.setObject(result, () => {\n const currentValue = new Array();\n for (const item of result) {\n currentValue.push(item.toJson());\n }\n return currentValue;\n });\n return result;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n // #endregion\n\n // #region FieldObjectDictionary\n\n public getFieldObjectDictionary(\n classType: new () => TValueImpl,\n fieldId: string,\n validFlags?: number,\n keyType?: string,\n ): Map {\n if (validFlags) {\n this.lastFieldName = fieldId;\n this.lastFieldValidFlags = validFlags;\n this.lastFieldType = 'Map';\n }\n fieldId = fieldId.toLowerCase();\n if (this._fields.has(fieldId) === false) {\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n const container = this._fields.get(fieldId);\n if (container) {\n if (container.isExtracted === false) {\n const result = new Map();\n if (container.value !== null) {\n for (const key of Object.keys(container.value)) {\n const newFo = new classType();\n newFo.loadFields(container.value[key]);\n if (keyType === 'number') {\n result.set(Number(key) as unknown as TKey, newFo as unknown as TValue);\n } else {\n // string, guid\n result.set(key as unknown as TKey, newFo as unknown as TValue);\n }\n }\n }\n\n container.setObject(result, () => {\n const jsonObject: any = {};\n result.forEach((value, key) => {\n jsonObject[key] = value;\n });\n return jsonObject;\n });\n\n return result;\n } else {\n return container.object;\n }\n }\n throw new Error('field ' + fieldId + ' not downloaded');\n }\n\n public setFieldObjectDictionary(fieldId: string, newValue: Map): void {\n // Key must be case insensitive\n fieldId = fieldId.toLowerCase();\n\n const jsonObject: any = {};\n newValue.forEach((value, key) => {\n jsonObject[key] = value.toJson();\n });\n\n if (this._fields.has(fieldId)) {\n const current = this._fields.get(fieldId);\n if (current) {\n current.setValue(jsonObject);\n }\n } else {\n const container = new FieldValue(fieldId, jsonObject);\n this._fields.set(fieldId, container);\n }\n this._propertyChangedDispatcher.dispatch(this);\n }\n\n //#endregion\n\n // #region Base\n\n public loadFields(config?: { [k: string]: any }): void {\n if (config) {\n this._fields = new Map();\n for (const key of Object.keys(config)) {\n // Key must be case insensitive\n const value = config[key];\n this._fields.set(key.toLowerCase(), new FieldValue(key, value));\n }\n }\n this.fieldLoaded();\n }\n\n public loadFrom(source: IFieldObject): void {\n this._fields.clear();\n for (const [key, value] of source.allFields) {\n const container = new FieldValue(key, value.value);\n this._fields.set(key, container);\n }\n this.fieldLoaded();\n }\n\n public loadFieldsFrom(source: IFieldObject, fields?: Set): void {\n const fieldsCopy = fields ? new Set(Array.from(fields).map((x) => x.toLowerCase())) : undefined;\n for (const [key, value] of source.allFields) {\n if (!fieldsCopy || fieldsCopy.has(key)) {\n const container = new FieldValue(key, value.value);\n this._fields.set(key, container);\n }\n }\n this.fieldLoaded();\n }\n\n protected fieldLoaded(): void {}\n\n public fromJson(json: string) {\n const fields = JSON.parse(json);\n this.loadFields(fields);\n }\n\n public toJson(): object {\n const result: { [k: string]: any } = {};\n for (const [key, value] of this._fields) {\n result[key] = value.value;\n }\n return result;\n }\n\n public toQueryString(): string {\n const json = JSON.stringify(this.toJson());\n const result = 'jparam=' + json;\n return result;\n }\n\n public toString(): string {\n return JSON.stringify(this.toJson());\n }\n\n public initializeAllFields(): void {}\n\n // #endregion\n\n // #endregion\n\n private isNullableFieldNull(fieldId: string): boolean {\n if (!this._fields.has(fieldId)) {\n return true;\n }\n\n const container = this._fields.get(fieldId);\n return !container || container.value === null;\n }\n}\n","export class MultiJsonParser {\n private braceCount = 0;\n private inString = false;\n private escaped = false;\n private buffer = '';\n\n public onObject = (e: object) => {};\n\n public reset() {\n this.braceCount = 0;\n this.inString = false;\n this.escaped = false;\n this.buffer = '';\n }\n\n public parse(S: string) {\n let i;\n let pos = 0;\n for (i = 0; i < S.length; i++) {\n const c = S[i];\n if (this.inString) {\n if (this.escaped) {\n this.escaped = false;\n } else {\n if (c === '\\\\') {\n this.escaped = true;\n } else if (c === '\"') {\n this.inString = false;\n }\n }\n } else {\n if (c === '{') {\n this.braceCount++;\n } else if (c === '}') {\n this.braceCount--;\n if (this.braceCount === 0) {\n this.buffer += S.substring(pos, i + 1);\n this.onObject(JSON.parse(this.buffer));\n this.buffer = '';\n pos = i + 1;\n }\n } else if (c === '\"') {\n this.inString = true;\n }\n }\n }\n this.buffer += S.substring(pos);\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport class EventFilter {\n public expandInfo = true;\n public entities: Set;\n public eventTypes: Set;\n public entityTypes: Set;\n public customEventTypeIds: Set;\n\n constructor() {\n this.entities = SafeGuid.createSet();\n this.eventTypes = new Set();\n this.entityTypes = new Set();\n this.customEventTypeIds = new Set();\n }\n\n public static buildAsync(sources: IterableIterator): EventFilter {\n const newFilter = new EventFilter();\n for (const value of sources) {\n newFilter.merge(value);\n }\n return newFilter;\n }\n\n public clone(): EventFilter {\n const filter = new EventFilter();\n for (const value of this.entities) {\n filter.entities.add(value);\n }\n\n for (const value of this.entityTypes) {\n filter.entityTypes.add(value);\n }\n\n for (const value of this.eventTypes) {\n filter.eventTypes.add(value);\n }\n\n for (const value of this.customEventTypeIds) {\n filter.customEventTypeIds.add(value);\n }\n\n filter.expandInfo = this.expandInfo;\n return filter;\n }\n\n public compareTo(newFilter: EventFilter): CompareResult {\n const result = new CompareResult();\n\n ///////////////////////////////////////////////////////////////\n // Entitites\n for (const id of newFilter.entities) {\n if (this.entities.has(id) === false) {\n result.addedFilter.entities.add(id);\n result.added = true;\n }\n }\n\n for (const id of this.entities) {\n if (newFilter.entities.has(id) === false) {\n result.removedFilter.entities.add(id);\n result.removed = true;\n }\n }\n\n //////////////////////////////////////////////////////////////\n // Events\n for (const evt of newFilter.eventTypes) {\n if (this.eventTypes.has(evt) === false) {\n result.addedFilter.eventTypes.add(evt);\n result.added = true;\n }\n }\n\n for (const evt of this.eventTypes) {\n if (newFilter.eventTypes.has(evt) === false) {\n result.removedFilter.eventTypes.add(evt);\n result.removed = true;\n }\n }\n\n //////////////////////////////////////////////////////////////\n // CustomEvents\n for (const evt of newFilter.customEventTypeIds) {\n if (this.customEventTypeIds.has(evt) === false) {\n result.addedFilter.customEventTypeIds.add(evt);\n result.added = true;\n }\n }\n\n for (const evt of this.customEventTypeIds) {\n if (newFilter.customEventTypeIds.has(evt) === false) {\n result.removedFilter.customEventTypeIds.add(evt);\n result.removed = true;\n }\n }\n\n //////////////////////////////////////////////////////////////\n // EntityTypes\n for (const eType of newFilter.entityTypes) {\n if (this.entityTypes.has(eType) === false) {\n result.addedFilter.entityTypes.add(eType);\n result.added = true;\n }\n }\n\n for (const eType of this.entityTypes) {\n if (newFilter.entityTypes.has(eType) === false) {\n result.removedFilter.entityTypes.add(eType);\n result.removed = true;\n }\n }\n\n return result;\n }\n\n public merge(newFitler: EventFilter): boolean {\n let modified = false;\n\n for (const id of newFitler.entities) {\n if (this.entities.has(id) === false) {\n this.entities.add(id);\n modified = true;\n }\n }\n\n for (const evt of newFitler.eventTypes) {\n if (this.eventTypes.has(evt) === false) {\n this.eventTypes.add(evt);\n modified = true;\n }\n }\n\n for (const evt of newFitler.customEventTypeIds) {\n if (this.customEventTypeIds.has(evt) === false) {\n this.customEventTypeIds.add(evt);\n modified = true;\n }\n }\n\n for (const eType of newFitler.entityTypes) {\n if (this.entityTypes.has(eType) === false) {\n this.entityTypes.add(eType);\n modified = true;\n }\n }\n\n // can only set merge to true... never merge back to false;\n if (this.expandInfo === false && newFitler.expandInfo === true) {\n this.expandInfo = true;\n modified = true;\n }\n\n return modified;\n }\n\n public toJson(): string {\n const obj = {\n Entities: new Array(),\n EntityTypes: new Array(),\n EventTypes: new Array(),\n CustomEventTypeIds: new Array(),\n ExpandInfo: this.expandInfo,\n };\n for (const value of this.entities) {\n obj.Entities.push({ key: value.toString(), Value: 'All' });\n }\n for (const value of this.eventTypes) {\n obj.EventTypes.push(value);\n }\n for (const value of this.customEventTypeIds) {\n obj.CustomEventTypeIds.push(value);\n }\n for (const value of this.entityTypes) {\n obj.EntityTypes.push(value);\n }\n return JSON.stringify(obj);\n }\n}\n\nclass CompareResult {\n public addedFilter: EventFilter;\n public removedFilter: EventFilter;\n public added: boolean;\n public removed: boolean;\n\n constructor() {\n this.addedFilter = new EventFilter();\n this.removedFilter = new EventFilter();\n this.added = false;\n this.removed = false;\n }\n}\n","export class Timer {\n private _callback: (...args: any[]) => void;\n private _previousId: any = null;\n private _period = -1;\n\n constructor(callback: (...args: any[]) => void) {\n this._callback = callback;\n }\n\n public change(timeout: number) {\n if (this._previousId) {\n clearTimeout(this._previousId);\n this._previousId = null;\n }\n if (timeout !== -1) {\n this._previousId = setTimeout(() => {\n this._callback();\n }, timeout);\n }\n }\n\n public period(period: number) {\n this._period = period;\n if (this._previousId) {\n clearTimeout(this._previousId);\n this._previousId = null;\n }\n if (this._period !== -1) {\n this._previousId = setTimeout(() => {\n this._callback();\n this._previousId = null;\n this.period(this._period);\n }, this._period);\n }\n }\n\n public dispose() {\n if (this._previousId) {\n clearTimeout(this._previousId);\n this._previousId = null;\n }\n }\n}\n","import { RestConnection } from '../RestConnection';\nimport { ConnectionState } from './ConnectionState';\nimport * as Helpers from '../../Helpers/Helpers';\nimport { RestResponse } from '../RestResponse';\nimport HttpStatusCode from '../../Client/Enumerations/HttpStatusCode';\nimport { StreamerBase } from './StreamerBase';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EventSourcePolyfill } from 'ng-event-source';\nimport { IFieldObject } from '../../Client/Interface/IFieldObject';\n\nexport class Streamer extends StreamerBase {\n // #region Fields\n\n private _evtSource: EventSourcePolyfill | null = null;\n private _ws: WebSocket | null = null;\n\n // #endregion\n\n // #region Properties\n\n // #endregion\n\n // #region Constructor, Destructor, Dispose\n\n constructor(parent: RestConnection) {\n super(parent);\n }\n\n // #endregion\n\n // #region Override methods\n\n public async startStreamerAsync(cancelToken?: Helpers.CancellationToken | null): Promise {\n this._streamerStarted = true;\n if (this._startStreamerToken != null) {\n this._startStreamerToken.cancelToken();\n this._startStreamerToken = null;\n }\n if (cancelToken != null) {\n this._startStreamerToken = cancelToken;\n }\n await this.onStateChangedAsync(ConnectionState.Connecting);\n\n let response: RestResponse;\n this._parent.isWebSocket = false;\n if (this._parent.enableWebSocket === true) {\n // Connect with WebSocket\n response = await this.startWebSocket();\n if (response.statusCode === HttpStatusCode.OK) {\n this._parent.isWebSocket = true;\n return response;\n }\n }\n if (this._parent.enableSSE === true) {\n // Connect with SSE\n return await this.startSSE();\n } else {\n return new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR);\n }\n }\n\n public writeMessageToWebSocket(message: string) {\n if (this._parent.isWebSocket && this._ws) {\n this._ws.send(message);\n }\n }\n\n protected async stopStreamerInternalImplAsync() {\n try {\n await this.invokeOnStreamerAsync('Disconnect');\n } catch (e) {\n // ignore error... we might be already disconnected\n }\n\n if (this._evtSource) {\n this._evtSource.close();\n this._evtSource = null;\n }\n if (this._ws) {\n this._ws.close();\n this._ws = null;\n }\n if (this._startStreamerToken != null) {\n this._startStreamerToken.cancelToken();\n this._startStreamerToken = null;\n }\n }\n\n // #endregion\n\n // #region Private methods\n\n private async startSSE(): Promise {\n const url = 'v2/EntitiesStream?sse=true';\n let restUrl = '';\n if (this._parent.restServerUrl.endsWith('/') === false) {\n restUrl = this._parent.restServerUrl + '/' + url;\n } else {\n restUrl = this._parent.restServerUrl + url;\n }\n\n this._streamerConnectionId = '';\n const that = this;\n\n const headers: any = {};\n headers.headers = {};\n headers.headers.Authorization = that._parent.authorizationHeader;\n for (const [key, value] of that._parent.additionalHeaders) {\n headers.headers[key] = value;\n }\n\n return new Promise(function (resolve, reject) {\n that._evtSource = new EventSourcePolyfill(restUrl, headers);\n that._evtSource.onopen = async function () {};\n\n that._evtSource.onerror = async (e: any) => {\n // reject(new RestResponse(HttpStatusCode.BAD_REQUEST, \"\", null, false));\n await that.onStateChangedAsync(ConnectionState.Disconnected);\n };\n\n that._evtSource.onmessage = async (result) => {\n const data = JSON.parse(result.data);\n const fo = new FieldObject();\n fo.loadFields(data);\n if (that.parseResponseAsync(fo)) {\n // Got the connection id\n try {\n // Execute 1 call to make sure the proxy has initialized properly (ValidateCredential issue...)\n const logonResult = await that.verifyConnectionAsync();\n const statusCode = logonResult.getField('LoginResult');\n const reason = logonResult.getFieldObject(FieldObject, 'FailedReason');\n await that._streamerSessionIdReceivedDispatcher.dispatch(that._streamerConnectionId);\n // check for cancellation\n if (that._startStreamerToken?.isCancellationRequested === true) {\n if (that._ws) {\n that._ws.close();\n that._ws = null;\n }\n reject(new RestResponse(HttpStatusCode.NO_CONTENT, '', null, true));\n } else {\n if (statusCode !== HttpStatusCode.OK) {\n if (that._evtSource) {\n that._evtSource.close();\n that._evtSource = null;\n }\n reject(new RestResponse(HttpStatusCode.UNAUTHORIZED, reason.toString(), null, false));\n } else {\n await that.onStateChangedAsync(ConnectionState.Connected);\n resolve(new RestResponse(HttpStatusCode.OK, null, null, false));\n }\n }\n } catch (e) {\n if (that._evtSource) {\n that._evtSource.close();\n that._evtSource = null;\n }\n reject(new RestResponse(HttpStatusCode.UNAUTHORIZED, null, null, false));\n }\n }\n };\n });\n }\n\n private async startWebSocket(): Promise {\n const url = 'v2/EntitiesStream?websocket=true';\n let restUrl = '';\n if (this._parent.restServerUrl.endsWith('/') === false) {\n restUrl = this._parent.restServerUrl + '/' + url;\n } else {\n restUrl = this._parent.restServerUrl + url;\n }\n\n restUrl = restUrl.replace('http', 'ws');\n\n this._streamerConnectionId = '';\n const headers: any = {};\n headers.Authorization = this._parent.authorizationHeader;\n for (const [key, value] of this._parent.additionalHeaders) {\n headers[key] = value;\n }\n const headerString = JSON.stringify(headers);\n restUrl = restUrl + '&headers=' + headerString;\n\n const that = this;\n return new Promise(function (resolve, reject) {\n that._ws = new WebSocket(restUrl);\n if (that._ws) {\n that._ws.onmessage = async function (event) {\n const data = JSON.parse(event.data);\n const fo = new FieldObject();\n fo.loadFields(data);\n if (that.parseResponseAsync(fo)) {\n // Got the connection id\n try {\n // Execute 1 call to make sure the proxy has initialized properly (ValidateCredential issue...)\n const logonResult = await that.verifyConnectionAsync();\n const statusCode = logonResult.getField('LoginResult');\n const reason = logonResult.getFieldObject(FieldObject, 'FailedReason');\n await that._streamerSessionIdReceivedDispatcher.dispatch(that._streamerConnectionId);\n\n // check for cancellation\n if (that._startStreamerToken?.isCancellationRequested === true) {\n if (that._ws) {\n that._ws.close();\n that._ws = null;\n }\n reject(new RestResponse(HttpStatusCode.NO_CONTENT, '', null, true));\n } else {\n if (statusCode !== HttpStatusCode.OK) {\n if (that._ws) {\n that._ws.close();\n that._ws = null;\n }\n reject(new RestResponse(HttpStatusCode.UNAUTHORIZED, reason.toString(), null, false));\n } else {\n await that.onStateChangedAsync(ConnectionState.Connected);\n resolve(new RestResponse(HttpStatusCode.OK, null, null, false));\n }\n }\n } catch (e) {\n if (that._ws) {\n that._ws.close();\n that._ws = null;\n }\n reject(new RestResponse(HttpStatusCode.UNAUTHORIZED, null, null, false));\n }\n }\n };\n\n that._ws.onclose = async function (event) {\n await that.onStateChangedAsync(ConnectionState.Disconnected);\n };\n\n that._ws.onerror = async function (event) {\n if (that.streamerConnectionState === ConnectionState.Reconnecting) {\n reject(new RestResponse(HttpStatusCode.NOT_FOUND, '', null, false));\n } else {\n await that.onStateChangedAsync(ConnectionState.Disconnected);\n resolve(new RestResponse(HttpStatusCode.UNAUTHORIZED, '', null, false));\n }\n };\n }\n });\n }\n\n // #endregion\n}\n","import { RestConnection } from '../RestConnection';\nimport { EventFilter } from '../EventFilter';\nimport { ConnectionState } from './ConnectionState';\nimport * as Helpers from '../../Helpers/Helpers';\nimport * as Args from '../RestArgs';\nimport { CancellationToken } from '../../Helpers/Helpers';\nimport { RestResponse } from '../RestResponse';\nimport HttpStatusCode from '../../Client/Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { Timer } from '../../Helpers/Timer';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IFieldObject } from '../../Client/Interface/IFieldObject';\n\nexport abstract class StreamerBase {\n // #region Const, Enums\n\n protected maxStreamerCallDelay = 60000;\n // Increase this value if you debug the application. \n protected waitForRestDelay = 10000;\n\n // #endregion\n\n // #region Fields\n\n protected _parent: RestConnection;\n protected _currentStreamerFilter: EventFilter | null = null;\n protected _requestedStreamerFilters = SafeGuid.createMap();\n protected _streamerStarted = false;\n protected _currentRetryAttempt = 0;\n public _streamerStateChangedDispatcher = new Helpers.EventDispatcher();\n public _streamerEntityInvalidatedDispatcher = new Helpers.EventDispatcher();\n public _streamerEntityAddedDispatcher = new Helpers.EventDispatcher();\n public _streamerEntityRemovedDispatcher = new Helpers.EventDispatcher();\n public _streamerEventDispatcher = new Helpers.EventDispatcher();\n public _streamerActionDispatcher = new Helpers.EventDispatcher();\n public _streamerQueryDispatcher = new Helpers.EventDispatcher();\n public _streamerRequestDispatcher = new Helpers.EventDispatcher();\n public _streamerDisconnectRequestDispatcher = new Helpers.EventDispatcher();\n public _streamerConsoleCommandRequestReceivedDispatcher = new Helpers.EventDispatcher();\n public _unknownRequestDispatcher = new Helpers.EventDispatcher();\n public _streamerSessionIdReceivedDispatcher = new Helpers.AsyncEventDispatcher();\n protected _startStreamerToken: Helpers.CancellationToken | null = null;\n protected _restSessionId = '';\n protected _restartStreamer: Timer;\n protected _connectionRetryTimer: Timer;\n protected _streamerConnectionId = '';\n\n // #endregion\n\n // #region Properties\n\n public streamerConnectionState: ConnectionState = ConnectionState.Disconnected;\n\n public get streamerConnectionId(): string {\n return this._streamerConnectionId;\n }\n\n public get streamerStarted(): boolean {\n return this._streamerStarted;\n }\n\n public authorizationHeader = '';\n\n public retryDelay = 15000;\n public retryCount = -1; // -1 stands for infinity\n // private int RestTimeout => (int)Math.Max(RetryCount * RetryDelay.TotalMilliseconds * 2, 10000);\n\n public get restSessionId(): string {\n return this._restSessionId;\n }\n\n protected get restTimeout(): number {\n let delay = this.retryCount * this.retryDelay * 2;\n if (delay < 10000) {\n delay = 10000;\n }\n return delay;\n }\n\n // #endregion\n\n // #region Constructor, Destructor, Dispose\n\n constructor(parent: RestConnection) {\n this._parent = parent;\n this._restartStreamer = new Timer(async () => {\n await this.onRestartStreamer();\n });\n this._connectionRetryTimer = new Timer(async () => {\n await this.onConnectionRetryDelayExpired();\n });\n }\n\n public async disposeAsync() {\n if (this._streamerStarted) {\n await this.stopStreamerAsync();\n }\n\n this._streamerStateChangedDispatcher.clear();\n this._streamerEntityInvalidatedDispatcher.clear();\n this._streamerEntityAddedDispatcher.clear();\n this._streamerEntityRemovedDispatcher.clear();\n this._streamerEventDispatcher.clear();\n this._streamerActionDispatcher.clear();\n this._streamerQueryDispatcher.clear();\n this._streamerRequestDispatcher.clear();\n this._streamerConsoleCommandRequestReceivedDispatcher.clear();\n this._streamerSessionIdReceivedDispatcher.clear();\n this._streamerDisconnectRequestDispatcher.clear();\n this._unknownRequestDispatcher.clear();\n\n this._restartStreamer.dispose();\n this._connectionRetryTimer.dispose();\n }\n\n // #endregion\n\n // #region Public methods\n\n public abstract startStreamerAsync(cancelToken?: Helpers.CancellationToken | null): Promise;\n\n public async stopStreamerAsync(): Promise {\n return await this.stopStreamerInternalAsync(true);\n }\n\n public clearCurrentFilter(): void {\n this._currentStreamerFilter = null;\n }\n\n public async setStreamerFilterAsync(filter: EventFilter) {\n const newId = SafeGuid.newGuid();\n this._currentStreamerFilter = filter;\n this._requestedStreamerFilters.clear();\n this._requestedStreamerFilters.set(newId, filter);\n const filterJson = this._currentStreamerFilter.toJson();\n return await this.invokeOnStreamerAsync('SetFilter', filterJson);\n }\n\n public async addToStreamerFilterAsync(filter: EventFilter): Promise {\n if (this._currentStreamerFilter == null) {\n this._currentStreamerFilter = new EventFilter();\n }\n\n const newId = SafeGuid.newGuid();\n this._requestedStreamerFilters.set(newId, filter);\n\n if (this._currentStreamerFilter.merge(filter) === true) {\n await this.invokeOnStreamerAsync('AddToFilter', filter.toJson());\n return newId;\n } else {\n // already there... no need to call REST\n return new Promise(function (resolve, reject) {\n resolve(newId);\n });\n }\n }\n\n public async removeFromStreamerFilterAsync(filterIds: Set) {\n const currentFilter = this._currentStreamerFilter;\n if (currentFilter == null) {\n return;\n }\n\n for (const filterId of filterIds) {\n if (this._requestedStreamerFilters.has(filterId)) {\n this._requestedStreamerFilters.delete(filterId);\n }\n }\n\n const newFilter = await EventFilter.buildAsync(this._requestedStreamerFilters.values());\n const compareResult = currentFilter.compareTo(newFilter);\n this._currentStreamerFilter = newFilter;\n if (this._streamerStarted === true) {\n if (compareResult.added && compareResult.addedFilter != null) {\n await this.invokeOnStreamerAsync('AddToFilter', compareResult.addedFilter.toJson());\n }\n if (compareResult.removed && compareResult.removedFilter != null) {\n await this.invokeOnStreamerAsync('RemoveFromFilter', compareResult.removedFilter.toJson());\n }\n }\n }\n\n public async sendRequestResponseAsync(id: string, response: string) {\n return await this.invokeOnStreamerAsync('SendRequestResponse', id, response);\n }\n\n public async increaseDelayRequestResponseAsync(id: string, timeout: number) {\n return await this.invokeOnStreamerAsync('IncreaseDelayRequestResponse', id, timeout);\n }\n\n public async setReportFilterAsync(customReportIds: Set) {\n const filter = new FieldObject();\n filter.setField('CustomReports', customReportIds);\n return await this.invokeOnStreamerAsync('SetReportFilter', filter);\n }\n\n public async sendQueryResultAsync(result: FieldObject) {\n return await this.invokeOnStreamerAsync('SendQueryResult', result);\n }\n\n public async sendQueryCompletedAsync(result: FieldObject) {\n return await this.invokeOnStreamerAsync('SendQueryCompleted', result);\n }\n\n public async addConsoleDebugCommandAsync(group: string, method: string, param1: string, param2: string, param3: string) {\n return await this.invokeOnStreamerAsync('AddConsoleDebugCommand', group, method, param1, param2, param3);\n }\n\n public async getApplicationIdAsync(): Promise {\n const result = await this.getInvokeOnStreamerAsync('GetApplicationId');\n return result;\n }\n\n public async verifyConnectionAsync(): Promise {\n const logonResult = await this.getObjectInvokeOnStreamerAsync(FieldObject, 'VerifyConnection');\n if (logonResult.hasField('SessionId')) {\n this._restSessionId = logonResult.getField('SessionId');\n }\n return logonResult;\n }\n\n protected parseResponseAsync(response: FieldObject): boolean {\n const msgType = response.getField('MsgType').toLowerCase();\n const payload = response.getFieldObject(FieldObject, 'Payload');\n switch (msgType) {\n case 'actionreceived':\n {\n this.entity_ActionReceived(payload.toString());\n }\n break;\n\n case 'connectionid':\n {\n this._streamerConnectionId = payload.getField('id');\n return true; // true == connection id received\n }\n break;\n\n case 'entityinvalidated':\n {\n const id = payload.getFieldGuid('Id');\n const entityType = payload.getField('EntityType');\n const validflags = payload.getField('Validflags');\n this.entity_Invalidated(id, entityType, validflags);\n }\n break;\n\n case 'entityremoved':\n {\n const id = payload.getFieldGuid('Id');\n const entityType = payload.getField('EntityType');\n this.entity_Removed(id, entityType);\n }\n break;\n\n case 'entityadded':\n {\n const id = payload.getFieldGuid('Id');\n const entityType = payload.getField('EntityType');\n this.entity_Added(id, entityType);\n }\n break;\n\n case 'eventreceived':\n {\n this.entity_EventReceived(payload.toString());\n }\n break;\n\n case 'queryreceived':\n {\n this.report_QueryReceived(payload.toString());\n }\n break;\n\n case 'requestreceived':\n {\n const id = payload.getField('Id');\n const request = payload.getFieldObject(FieldObject, 'Request');\n const sourceUser = payload.getField('SourceUser');\n const sourceApplication = payload.getField('SourceApplication');\n this.request_Received(id, request, sourceUser, sourceApplication);\n }\n break;\n\n case 'consolecommandrequestreceived':\n {\n const id = payload.getField('Id');\n const groupName = payload.getField('GroupName');\n const methodName = payload.getField('MethodName');\n const param1 = payload.getField('Param1');\n const param2 = payload.getField('Param2');\n const param3 = payload.getField('Param3');\n this.request_ConsoleCommandReceived(id, groupName, methodName, param1, param2, param3);\n }\n break;\n\n case 'disconnectrequest':\n {\n const tryToReconnect = payload.getField('TryReconnect');\n this.request_DisconnectReceived(tryToReconnect);\n }\n break;\n\n case 'idle':\n break;\n\n default:\n {\n this.unknownRequestReceived(msgType, payload);\n }\n break;\n }\n return false; // false == this isn't the connection id message\n }\n\n public async getObjectInvokeOnStreamerAsync(classType: new () => T, method: string, ...args: (string | object | number)[]): Promise {\n const payload = new FieldObject();\n payload.setField('Method', method);\n payload.setField('Params', args);\n const response = await this._parent.executeRequestAsync('POST', 'v2/EntitiesStream/' + this._streamerConnectionId + '/invoke', payload.toString());\n if (response.statusCode !== HttpStatusCode.OK) {\n throw new Error('InvokeOnStreamerAsync failed with ' + response.statusCode);\n }\n const newFO = new classType();\n newFO.loadFields(response.body);\n return newFO;\n }\n\n public async getInvokeOnStreamerAsync(method: string, ...args: (string | object | number)[]): Promise {\n if (this._streamerConnectionId === null || this._streamerConnectionId.length === 0) {\n throw new Error('Not connected');\n }\n\n const payload = new FieldObject();\n payload.setField('Method', method);\n payload.setField('Params', args);\n const response = await this._parent.executeRequestAsync('POST', 'v2/EntitiesStream/' + this._streamerConnectionId + '/invoke', payload.toString());\n if (response.statusCode !== HttpStatusCode.OK) {\n throw new Error('InvokeOnStreamerAsync failed with ' + response.statusCode);\n }\n const result = response.body as T;\n return result;\n }\n\n public async invokeOnStreamerAsync(method: string, ...args: (string | object | number)[]): Promise {\n if (this._streamerConnectionId === null || this._streamerConnectionId.length === 0) {\n throw new Error('Not connected');\n }\n\n const payload = new FieldObject();\n payload.setField('Method', method);\n payload.setField('Params', args);\n const response = await this._parent.executeRequestAsync('POST', 'v2/EntitiesStream/' + this._streamerConnectionId + '/invoke', payload.toString());\n if (response.statusCode !== HttpStatusCode.OK) {\n throw new Error('InvokeOnStreamerAsync failed with ' + response.statusCode);\n }\n return;\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected async onStateChangedAsync(newState: ConnectionState) {\n try {\n let sendState = true;\n\n if (this._streamerStarted === false) {\n return; // ignore\n }\n switch (newState) {\n case ConnectionState.Connected: {\n this._restartStreamer.change(-1);\n this._currentRetryAttempt = 0;\n if (this._currentStreamerFilter) {\n await this.setStreamerFilterAsync(this._currentStreamerFilter);\n }\n break;\n }\n\n case ConnectionState.Disconnected: {\n // never send state disconnected if we have retries\n sendState = this.retryCount === 0;\n if ((this.retryCount > 0 || this.retryCount === -1) && this._currentRetryAttempt === 0) {\n await this.scheduleReconnectionAsync();\n }\n break;\n }\n\n case ConnectionState.Connecting: {\n if (this.streamerStarted && this._currentRetryAttempt > 0) {\n this._restartStreamer.change(this.restTimeout);\n newState = ConnectionState.Reconnecting;\n }\n break;\n }\n\n case ConnectionState.Reconnecting: {\n this._restartStreamer.change(this.restTimeout);\n break;\n }\n }\n\n if (sendState) {\n this.fireConnectionChange(newState);\n }\n } catch (e) {\n // not much we can do\n await this.disposeAsync();\n }\n }\n\n protected fireConnectionChange(state: number) {\n if (this.streamerConnectionState !== state) {\n this.streamerConnectionState = state;\n const arg = new Args.StateChangeArg();\n arg.state = state;\n this._streamerStateChangedDispatcher.dispatch(arg);\n }\n }\n\n protected entity_Removed(id: IGuid, entityType: string): void {\n const arg = new Args.EntityRemovedArg();\n arg.id = id;\n arg.entityType = entityType;\n this._streamerEntityRemovedDispatcher.dispatch(arg);\n }\n\n protected entity_Added(id: IGuid, entityType: string): void {\n const arg = new Args.EntityAddedArg();\n arg.id = id;\n arg.entityType = entityType;\n this._streamerEntityAddedDispatcher.dispatch(arg);\n }\n\n protected entity_Invalidated(id: IGuid, entityType: string, flags: number) {\n const arg = new Args.EntityInvalidatedArg();\n arg.id = id;\n arg.entityType = entityType;\n arg.flags = flags;\n this._streamerEntityInvalidatedDispatcher.dispatch(arg);\n }\n\n public entity_ActionReceived(apiAction: string) {\n const fo = new FieldObject();\n fo.loadFields(JSON.parse(apiAction));\n this._streamerActionDispatcher.dispatch(fo);\n }\n\n public entity_EventReceived(apiEvent: string) {\n const fo = new FieldObject();\n fo.loadFields(JSON.parse(apiEvent));\n this._streamerEventDispatcher.dispatch(fo);\n }\n\n protected report_QueryReceived(query: string) {\n const arg = new Args.QueryReceivedArg();\n arg.query = JSON.parse(query);\n this._streamerQueryDispatcher.dispatch(arg);\n }\n\n protected unknownRequestReceived(msgType: string, payload: IFieldObject) {\n const args = new Args.UnknownRequestReceivedArg(msgType, payload);\n this._unknownRequestDispatcher.dispatch(args);\n }\n\n protected request_Received(id: string, request: IFieldObject, user: string, application: string) {\n const arg = new Args.RequestReceivedArg(id, request, user, application);\n this._streamerRequestDispatcher.dispatch(arg);\n }\n\n protected request_DisconnectReceived(tryToReconnect: boolean) {\n const arg = new Args.DisconnectRequestArgs(tryToReconnect);\n this._streamerDisconnectRequestDispatcher.dispatch(arg);\n }\n\n protected request_ConsoleCommandReceived(id: string, group: string, method: string, param1: string, param2: string, param3: string) {\n const args = new Args.ConsoleCommandRequestReceivedArg(id, group, method, param1, param2, param3);\n this._streamerConsoleCommandRequestReceivedDispatcher.dispatch(args);\n }\n\n protected async onConnectionRetryDelayExpired() {\n let failed = false;\n\n try {\n this._connectionRetryTimer.change(-1);\n const tokenSource = new CancellationToken(this.waitForRestDelay);\n const response = await this.startStreamerAsync(tokenSource);\n failed = response.statusCode !== HttpStatusCode.OK;\n } catch (e) {\n failed = true;\n }\n if (failed === true) {\n if (!(await this.scheduleReconnectionAsync())) {\n this.fireConnectionChange(ConnectionState.Disconnected);\n }\n }\n }\n\n // #endregion\n\n // #region Private methods\n\n private async onRestartStreamer() {\n if (this.streamerConnectionState !== ConnectionState.Connected) {\n // still not connect... abandon\n await this.stopStreamerAsync();\n }\n }\n\n protected async stopStreamerInternalAsync(fireEvent: boolean) {\n if (this._streamerStarted === true) {\n this._streamerStarted = false;\n await this.stopStreamerInternalImplAsync();\n if (fireEvent && this.streamerConnectionState !== ConnectionState.Disconnected) {\n this.fireConnectionChange(ConnectionState.Disconnected);\n } else {\n this.streamerConnectionState = ConnectionState.Disconnected;\n }\n }\n return;\n }\n\n protected abstract stopStreamerInternalImplAsync(): Promise;\n\n // #region Resiliency check methods\n\n protected async scheduleReconnectionAsync(): Promise {\n if (this.streamerStarted && (this._currentRetryAttempt < this.retryCount || this.retryCount === -1)) {\n this._currentRetryAttempt++;\n try {\n await this.stopStreamerInternalAsync(false);\n } catch (e) {}\n\n try {\n this._connectionRetryTimer.change(this.retryDelay);\n } catch {}\n return true;\n }\n return false;\n }\n\n public async pauseConnectionAsync(): Promise {\n await this.stopStreamerInternalAsync(false);\n this.fireConnectionChange(ConnectionState.Reconnecting);\n }\n\n /*\n protected async Task EnsureRestConnectionValidAsync()\n {\n // no signal R, retry attempts are based on signal R connectivity for now...\n if (!StreamerStarted)\n {\n return;\n }\n \n int retryCount = 0;\n bool allowedToContinue = false;\n \n do\n {\n if (StreamerStarted && StreamerConnectionState == ConnectionState.Connected)\n {\n allowedToContinue = true;\n }\n else if (StreamerStarted && retryCount < RetryCount)\n {\n await Task.Delay(RetryDelay).ConfigureAwait(false);\n retryCount++;\n }\n else\n {\n throw new RestResponseException(new RestResponse(WebExceptionStatus.ConnectionClosed));\n }\n \n } while (!allowedToContinue && retryCount <= RetryCount);\n }\n \n */\n\n // #endregion\n\n // #endregion\n}\n","export class Globals {\n public static authorizationHeader = 'Authorization';\n public static newAuthorizationHeader = 'NewAuthorization';\n public static allowImpersonateHeader = 'AllowImpersonate';\n public static impersonateServiceCredentialHeader = 'ImpersonateServiceCredential';\n public static impersonateAppHeader = 'ImpersonateApp';\n public static publicKeyHeader = 'PublicKey';\n public static dedicatedSessionIdHeader = 'DedicatedSessionId';\n public static sessionTimeoutHeader = 'SessionTimeout';\n public static restAppNameHeader = 'RestAppName';\n public static xHttpMethodOverrideHeader = 'X-HTTP-Method-Override';\n}\n","import { RestResponse } from './RestResponse';\nimport * as Args from './RestArgs';\nimport * as Helpers from '../Helpers/Helpers';\nimport { EventFilter } from './EventFilter';\nimport HttpStatusCode from '../Client/Enumerations/HttpStatusCode';\nimport { FieldObject } from '../Helpers/FieldObject';\nimport { MultiJsonParser } from '../Helpers/multiJsonParser';\nimport { StreamerBase } from './Streamers/StreamerBase';\nimport { Streamer } from './Streamers/Streamer';\nimport { Globals } from '../Globals';\nimport { IGuid } from 'safeguid';\n\nexport class RestConnection {\n // #region Fields\n protected _maxUriLength = 2000;\n protected _restStreamer!: StreamerBase;\n protected _restServerUrl = '';\n protected _restConnectionTestUrl: string;\n protected _additionalHeaders = new Map();\n protected _authorizationHeader = '';\n protected _retryCount = 0;\n protected _retryDelay = 0;\n\n // #endregion\n\n // #region Properties\n\n public get restServerUrl(): string {\n return this._restServerUrl;\n }\n\n public get additionalHeaders(): Map {\n return this._additionalHeaders;\n }\n\n public get appName(): string {\n const result = this._additionalHeaders.get('RestAppName');\n if (result) {\n return result;\n } else {\n return 'Default';\n }\n }\n\n public set appName(value: string) {\n this.addAdditionalHeader('RestAppName', value);\n }\n\n public allowImpersonate = false;\n\n public get authorizationHeader(): string {\n return this._authorizationHeader;\n }\n\n public set authorizationHeader(value: string) {\n this._authorizationHeader = value;\n this._restStreamer.authorizationHeader = value;\n }\n\n public entitiesStreamHubName: string;\n\n public get streamerConnectionId(): string {\n return this._restStreamer.streamerConnectionId;\n }\n\n public get retryCount(): number {\n return this._retryCount;\n }\n\n public set retryCount(value: number) {\n this._retryCount = value;\n this._restStreamer.retryCount = value;\n }\n\n public get retryDelay(): number {\n return this._retryDelay;\n }\n\n public set retryDelay(value: number) {\n this._retryCount = value;\n this._restStreamer.retryDelay = value;\n }\n\n public get streamer(): StreamerBase {\n return this._restStreamer;\n }\n\n public isWebSocket = false;\n public enableWebSocket = true;\n public enableSSE = true;\n public windowsAuthentificationEnabled = false;\n\n // #endregion\n\n // #region Constructor\n\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Constructor\n constructor(enableWebSocket?: boolean, enableSSE?: boolean) {\n this.appName = 'Unknown';\n this.entitiesStreamHubName = 'EntitiesStreamHub';\n this._restConnectionTestUrl = '/v2/help';\n if (enableWebSocket != undefined) {\n this.enableWebSocket = enableWebSocket;\n }\n if (enableSSE != undefined) {\n this.enableSSE = enableSSE;\n }\n this.buildStreamer();\n }\n\n // #endregion\n\n // #region static methods\n\n public static buildBasicAuthorizationHeader(username: string | null, password: string | null): string {\n if (password == null) {\n password = '';\n }\n return 'Basic ' + window.btoa(username + ':' + password);\n }\n\n public static buildTokenAuthorizationHeader(token: string): string {\n return 'Token ' + token;\n }\n\n public static normalizeValue(input: string): string {\n if (input !== null) {\n return input.replace(/[^a-zA-Z0-9._-]/, '');\n }\n return 'Unknown';\n }\n\n // #endregion\n\n // #region Public methods\n\n public buildStreamer(): void {\n this._restStreamer = new Streamer(this);\n }\n\n public async disposeAsync() {\n await this._restStreamer.disposeAsync();\n return;\n }\n\n public setupConnection(url: string, username: string | null, password: string | null, authorizationToken: string | null) {\n this._restServerUrl = url;\n if (!username === false) {\n this.authorizationHeader = RestConnection.buildBasicAuthorizationHeader(username, password);\n } else {\n if (authorizationToken) {\n this.authorizationHeader = authorizationToken;\n }\n }\n }\n\n public async executeRequestWithResponseTypeAsync(\n method: string,\n url: string,\n body: string | null,\n responseType: 'arraybuffer' | 'blob' | 'formdata' | 'json' | 'text',\n cancelToken?: Helpers.CancellationToken | null,\n ) {\n return await this.internalExecuteRequestAsync(method, url, body, cancelToken, responseType);\n }\n\n public async executeRequestAsync(method: string, url: string, body: string | null, cancelToken?: Helpers.CancellationToken | null) {\n return await this.internalExecuteRequestAsync(method, url, body, cancelToken);\n }\n\n private internalExecuteRequestAsync(\n method: string,\n url: string,\n body: string | null,\n cancelToken?: Helpers.CancellationToken | null,\n responseType?: 'arraybuffer' | 'blob' | 'formdata' | 'json' | 'text',\n ) {\n let cancelTokenSubscription: (() => void) | undefined;\n return new Promise(async (resolve, reject) => {\n try {\n let restUrl = '';\n if (url.startsWith('/') === true) {\n url = url.substring(1);\n }\n if (this.restServerUrl.endsWith('/') === false) {\n restUrl = this.restServerUrl + '/' + url;\n } else {\n restUrl = this.restServerUrl + url;\n }\n\n const requestHeaders: HeadersInit = new Headers();\n if (method.toUpperCase() === 'GET' && restUrl.length > this._maxUriLength) {\n // query too long... transform it\n method = 'POST';\n const splitUrl = restUrl.split('?');\n restUrl = splitUrl[0];\n const fo = new FieldObject();\n fo.setField('Query', splitUrl[1]);\n body = fo.toString();\n requestHeaders.append('X-HTTP-Method-Override', 'GET');\n }\n\n if (this.allowImpersonate === true) {\n requestHeaders.set('AllowImpersonate', 'Impersonate');\n }\n\n requestHeaders.set('Content-Type', 'application/json');\n if (!this.windowsAuthentificationEnabled && this.authorizationHeader.length > 0) {\n requestHeaders.set('Authorization', this.authorizationHeader);\n }\n for (const [key, value] of this._additionalHeaders) {\n requestHeaders.set(key, value);\n }\n\n if (method.toUpperCase() !== 'GET' && body === null) {\n body = '{}';\n }\n\n const requestInit: RequestInit = {\n method: method,\n headers: requestHeaders,\n body: body,\n };\n if (cancelToken) {\n const controller = new AbortController();\n if (cancelToken.timeout !== -1) {\n setTimeout(() => controller.abort(), cancelToken.timeout);\n }\n cancelTokenSubscription = cancelToken.onCancel(() => controller.abort());\n requestInit.signal = controller.signal;\n }\n\n let restResponse: RestResponse;\n const fetchResponse = await fetch(restUrl, requestInit);\n if (fetchResponse?.body === null) {\n restResponse = new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR);\n resolve(restResponse);\n return;\n }\n\n if (fetchResponse.status === HttpStatusCode.REQUEST_TIMEOUT) {\n const response = new RestResponse(HttpStatusCode.REQUEST_TIMEOUT, null, null, true);\n reject(response);\n return;\n }\n\n let responseBody: any | null = null;\n if (responseType) {\n switch (responseType) {\n case 'arraybuffer': {\n responseBody = await fetchResponse.arrayBuffer();\n break;\n }\n case 'blob': {\n responseBody = await fetchResponse.blob();\n break;\n }\n case 'formdata': {\n responseBody = await fetchResponse.formData();\n break;\n }\n case 'json': {\n responseBody = await fetchResponse.json();\n break;\n }\n }\n }\n\n // Default is json\n if (!responseBody) {\n responseBody = await fetchResponse.text();\n }\n const response = new RestResponse(fetchResponse.status, responseBody, { response: fetchResponse, responseType }, false);\n resolve(response);\n } catch (e) {\n reject(e);\n } finally {\n cancelTokenSubscription?.();\n }\n });\n }\n\n public async getStreamedJsonAsync(\n url: string,\n verb: string,\n body: string | null,\n callback: (e: object) => void,\n cancelToken?: Helpers.CancellationToken | null,\n ): Promise {\n const multiParser = new MultiJsonParser();\n multiParser.onObject = (json: object) => {\n callback(json);\n };\n\n let cancelTokenSubscription: (() => void) | undefined;\n return new Promise(async (resolve, reject) => {\n try {\n let restUrl = '';\n if (url.startsWith('/') === true) {\n url = url.substring(1);\n }\n if (this.restServerUrl.endsWith('/') === false) {\n restUrl = this.restServerUrl + '/' + url;\n } else {\n restUrl = this.restServerUrl + url;\n }\n\n const requestHeaders: HeadersInit = new Headers();\n if (!this.windowsAuthentificationEnabled && this.authorizationHeader.length > 0) {\n requestHeaders.set('Authorization', this.authorizationHeader);\n }\n requestHeaders.set('Content-Type', 'application/octet-stream');\n requestHeaders.set('EnableStreamResponse', 'true');\n for (const [key, value] of this._additionalHeaders) {\n requestHeaders.set(key, value);\n }\n\n if (verb.toUpperCase() !== 'GET' && body === null) {\n body = '{}';\n }\n\n const requestInit: RequestInit = {\n method: verb,\n headers: requestHeaders,\n body: body,\n };\n\n if (cancelToken) {\n const controller = new AbortController();\n if (cancelToken.timeout !== -1) {\n setTimeout(() => controller.abort(), cancelToken.timeout);\n }\n cancelTokenSubscription = cancelToken.onCancel(() => controller.abort());\n requestInit.signal = controller.signal;\n }\n\n let restResponse: RestResponse;\n const fetchResponse = await fetch(restUrl, requestInit);\n if (fetchResponse.body === null) {\n restResponse = new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR);\n resolve(restResponse);\n return;\n }\n if (fetchResponse.status === HttpStatusCode.REQUEST_TIMEOUT) {\n const response = new RestResponse(HttpStatusCode.REQUEST_TIMEOUT, null, null, true);\n reject(response);\n return;\n }\n\n const reader = fetchResponse.body?.getReader();\n while (true) {\n const result = await reader.read();\n if (result.done) {\n restResponse = new RestResponse(fetchResponse.status);\n resolve(restResponse);\n return;\n }\n const text = new TextDecoder('utf-8').decode(result.value);\n multiParser.parse(text);\n }\n } catch (e) {\n reject(e);\n } finally {\n cancelTokenSubscription?.();\n }\n });\n }\n\n public async waitForRestReadyAsync(cancelToken?: Helpers.CancellationToken | null) {\n const that = this;\n return new Promise(async function (resolve, reject) {\n while (!cancelToken || cancelToken.isCancellationRequested === false) {\n try {\n const response = await that.executeRequestAsync('GET', that._restConnectionTestUrl, null, cancelToken);\n switch (response.statusCode) {\n case HttpStatusCode.OK: {\n resolve(response);\n return;\n }\n\n case HttpStatusCode.FORBIDDEN:\n case HttpStatusCode.UNAUTHORIZED: {\n resolve(response);\n return;\n }\n\n default: {\n await Helpers.sleepAsync(5000);\n break;\n }\n }\n } catch (e) {\n await Helpers.sleepAsync(5000);\n }\n }\n resolve(new RestResponse(HttpStatusCode.REQUEST_TIMEOUT, null, null, true));\n });\n }\n\n public addAdditionalHeader(headerKey: string, headerValue: string, normalize = true) {\n const value = normalize === true ? RestConnection.normalizeValue(headerValue) : headerValue;\n this._additionalHeaders.set(headerKey, value);\n }\n\n public setImpersonatedApp(serviceCredential: string, app: string) {\n this.addAdditionalHeader(Globals.impersonateServiceCredentialHeader, serviceCredential, false);\n this.addAdditionalHeader(Globals.impersonateAppHeader, app, false);\n }\n\n public async startStreamerAsync(cancelToken?: Helpers.CancellationToken | null) {\n return await this._restStreamer.startStreamerAsync(cancelToken);\n }\n\n public async stopStreamerAsync() {\n return await this._restStreamer.stopStreamerAsync();\n }\n\n public clearCurrentFitler(): void {\n this._restStreamer.clearCurrentFilter();\n }\n\n public async setStreamerFilterAsync(filter: EventFilter) {\n await this._restStreamer.setStreamerFilterAsync(filter);\n }\n\n public async addToStreamerFilterAsync(filter: EventFilter): Promise {\n return await this._restStreamer.addToStreamerFilterAsync(filter);\n }\n\n public async removeFromStreamerFilterAsync(filterIds: Set) {\n return await this._restStreamer.removeFromStreamerFilterAsync(filterIds);\n }\n\n public async sendRequestResponseAsync(id: string, response: string) {\n return await this._restStreamer.sendRequestResponseAsync(id, response);\n }\n\n public async increaseDelayRequestResponseAsync(id: string, timeout: number) {\n return await this._restStreamer.increaseDelayRequestResponseAsync(id, timeout);\n }\n\n public async setReportFilterAsync(customReportIds: Set) {\n return await this._restStreamer.setReportFilterAsync(customReportIds);\n }\n\n public async sendQueryResultAsync(result: FieldObject) {\n return await this._restStreamer.sendQueryResultAsync(result);\n }\n\n public async sendQueryCompletedAsync(result: FieldObject) {\n return await this._restStreamer.sendQueryCompletedAsync(result);\n }\n\n public async addConsoleDebugCommandAsync(group: string, method: string, param1: string, param2: string, param3: string) {\n return await this._restStreamer.addConsoleDebugCommandAsync(group, method, param1, param2, param3);\n }\n\n public async pauseConnectionAsync(): Promise {\n return this._restStreamer.pauseConnectionAsync();\n }\n\n public async getApplicationIdAsync() {\n const result = await this._restStreamer.getApplicationIdAsync();\n return result;\n }\n\n // #endregion\n\n // #region Event handling methods\n\n public onConnectionStateChanged(handler: Helpers.Handler) {\n return this._restStreamer._streamerStateChangedDispatcher.subscribe(handler);\n }\n\n public onEntityInvalidated(handler: Helpers.Handler) {\n return this._restStreamer._streamerEntityInvalidatedDispatcher.subscribe(handler);\n }\n\n public onEntityAdded(handler: Helpers.Handler) {\n return this._restStreamer._streamerEntityAddedDispatcher.subscribe(handler);\n }\n\n public onEntityRemoved(handler: Helpers.Handler) {\n return this._restStreamer._streamerEntityRemovedDispatcher.subscribe(handler);\n }\n\n public onEventReceived(handler: Helpers.Handler) {\n return this._restStreamer._streamerEventDispatcher.subscribe(handler);\n }\n\n public onActionReceived(handler: Helpers.Handler) {\n return this._restStreamer._streamerActionDispatcher.subscribe(handler);\n }\n\n public onQueryReceived(handler: Helpers.Handler) {\n return this._restStreamer._streamerQueryDispatcher.subscribe(handler);\n }\n\n public onRequestReceived(handler: Helpers.Handler) {\n return this._restStreamer._streamerRequestDispatcher.subscribe(handler);\n }\n\n public onDisconnectRequestReceived(handler: Helpers.AsyncHandler) {\n return this._restStreamer._streamerDisconnectRequestDispatcher.subscribe(handler);\n }\n\n public onConsoleCommandRequestReceived(handler: Helpers.Handler) {\n return this._restStreamer._streamerConsoleCommandRequestReceivedDispatcher.subscribe(handler);\n }\n\n public onSessionIdReceived(handler: Helpers.AsyncHandler) {\n return this._restStreamer._streamerSessionIdReceivedDispatcher.subscribe(handler);\n }\n\n // #endregion\n\n // #region Private methods\n\n // #endregion\n}\n","export enum LogonState {\n LoggedOn,\n LoggedOff,\n ReloggingOn,\n ReloggedOn,\n}\n\nexport class LogonStateChangedArgs {\n public state: LogonState;\n\n constructor(state: LogonState) {\n this.state = state;\n }\n\n public loggedOn(): boolean {\n return this.state === LogonState.LoggedOn || this.state === LogonState.ReloggedOn;\n }\n}\n","import { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class RestOperation {\n public verb = 'GET';\n public body: object | null = null;\n protected _uri = '';\n\n public get uri(): string {\n return this._uri;\n }\n\n public set uri(value: string) {\n this._uri = value;\n }\n\n public toString(): string {\n return JSON.stringify({ verb: this.verb, uri: this.verb, body: this.body });\n }\n}\n\nexport class RestRelationOperation extends RestOperation {\n public restObject: IRestObject | null = null;\n\n public get uri(): string {\n if (!this.restObject) {\n throw new Error('restObject is null');\n }\n return this.restObject.baseUri + '/' + this._uri;\n }\n\n public set uri(value: string) {\n this._uri = value;\n }\n}\n","import { RestOperation, RestRelationOperation } from './RestOperation';\nimport { FilterSet } from './Linq';\nimport { IRestTransaction } from '../Client/Interface/IRestTransaction';\nimport { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class RelationTrackerBase {\n //#region Fields\n\n private _pendingOperations: FilterSet;\n\n protected _parent: IRestObject;\n protected _relation: string;\n protected _elementId: string;\n protected _readOnly: boolean;\n protected _allowValueUpdate: boolean;\n\n //#endregion\n\n //#region Properties\n\n public get pendingOperations(): FilterSet {\n return this._pendingOperations;\n }\n\n public get relation(): string {\n return this._relation;\n }\n\n public isValid = true;\n\n //#endregion\n\n //#region constructor\n\n constructor(parent: IRestObject, relation: string, elementId: string | null, readOnly: boolean, allowValueUpdate: boolean) {\n this._pendingOperations = new FilterSet();\n this._parent = parent;\n this._relation = relation;\n if (elementId) {\n this._elementId = elementId;\n } else {\n this._elementId = '';\n }\n this._readOnly = readOnly;\n this._allowValueUpdate = allowValueUpdate;\n }\n\n //#endregion\n\n //#region methods\n\n public addRelationOperation(relation: string, verb: string, body: object | null) {\n if (this.isValid === false) {\n throw new Error('After a entity update, relations need to be refreshed');\n }\n\n const operation = new RestRelationOperation();\n operation.restObject = this._parent;\n operation.uri = relation;\n operation.verb = verb;\n operation.body = body;\n this._pendingOperations.add(operation);\n }\n\n public addPendingOperation(transaction: IRestTransaction) {\n if (this.isValid === false) {\n throw new Error('After a entity update, relations need to be refreshed');\n }\n\n for (const operation of this._pendingOperations) {\n transaction.addTransactionOperation(operation.uri, operation.verb, operation.body);\n }\n return;\n }\n\n //#region\n}\n","import { FieldObject } from './FieldObject';\nimport { CancellationToken } from './Helpers';\nimport { ObservableCollection } from './ObservableCollection';\nimport { RelationTrackerBase } from './RelationTrackerBase';\nimport { ITransaction } from '../Client/Interface/ITransaction';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\nimport { IFieldObject } from '../Client/Interface/IFieldObject';\nimport { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class RelationFieldObjectTracker extends RelationTrackerBase {\n //#region Fields\n\n protected _members: ObservableCollection | null = null;\n private _classType: any;\n\n //#endregion\n\n //#region Properties\n\n //#endregion\n\n //#region constructor\n\n constructor(classType: new () => T, parent: IRestObject, relation: string, elementId: string, readOnly: boolean, allowValueUpdate: boolean) {\n super(parent, relation, elementId, readOnly, allowValueUpdate);\n this._classType = classType;\n }\n\n //#endregion\n\n //#region methods\n\n public async getValueAsync(): Promise> {\n if (this._members == null) {\n this._members = new ObservableCollection(\n (e: U) => {\n this.onAdded(e);\n },\n (e: U) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n this._members.suspend = true;\n if (this._parent.canExecuteRelations === true) {\n const response = await this._parent.executeRequestAsync('GET', this.relation, null, new CancellationToken());\n this.parseResponse(response);\n }\n this._members.suspend = false;\n }\n return this._members;\n }\n\n public async pushTransactionAsync(transaction: ITransaction): Promise {\n if (this._parent.canExecuteRelations === false) {\n this._members = new ObservableCollection(\n (e: U) => {\n this.onAdded(e);\n },\n (e: U) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n }\n\n if (this._members != null) {\n // no need for transaction since we already got the data\n // add empty entry simply to return the data\n transaction.addTransactionOperation>('', '', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n if (this._members != null) {\n resolve(this._members);\n return;\n }\n reject('not supposed to be here!');\n return;\n });\n });\n return;\n } else {\n this._members = new ObservableCollection(\n (e: U) => {\n this.onAdded(e);\n },\n (e: U) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n }\n\n const uri = this._parent.baseUri + '/' + this.relation;\n transaction.addTransactionOperation>(uri, 'GET', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n if (!this._members) {\n throw new Error('Member null');\n }\n try {\n if (response.body) {\n this._members.suspend = true;\n this.parseResponse(response);\n this._members.suspend = false;\n }\n resolve(this._members);\n } catch (e) {\n reject(e);\n }\n });\n });\n return;\n }\n\n private parseResponse(response: IRestResponse) {\n if (response.body) {\n if (!this._members) {\n throw new Error('_members not initialize!');\n }\n\n for (const item of response.body) {\n const newFo = new this._classType() as T;\n newFo.roParent = this._parent;\n newFo.loadFields(item);\n this._members.add(newFo as unknown as U);\n newFo.onPropertyChanged((fieldObject) => {\n const id = fieldObject.getField(this._elementId);\n let op = this._relation + '/' + id;\n op = op.toLowerCase();\n const found = this.pendingOperations.firstOrDefault((x) => x.verb.toLowerCase() === 'put' && x.uri.toLowerCase().endsWith(op));\n if (found) {\n found.body = fieldObject;\n }\n this.addRelationOperation(op, 'PUT', fieldObject);\n });\n }\n }\n }\n\n public onAdded(element: U): void {\n if (this._readOnly === true) {\n throw new Error('the collection is read only');\n }\n this.addRelationOperation(this._relation, 'POST', element);\n }\n\n public onRemoved(element: U): void {\n const id = element.getField(this._elementId);\n this.addRelationOperation(this._relation + '/' + id, 'DELETE', null);\n }\n\n public onCleared(): void {\n this.addRelationOperation(this._relation, 'DELETE', null);\n }\n\n // TODO replace!\n\n //#region\n}\n","export class FieldList {\n // #region Fields\n\n private _fields = new Set();\n private _defaultFields = new Set(['id', 'name', 'entitytype']);\n\n // #endregion\n\n // #region Properties\n\n public get Fields(): IterableIterator {\n return this._fields.values();\n }\n\n // #endregion\n\n // #region Constructor\n\n constructor(...fields: string[]) {\n if (fields === undefined || fields.length === 0) {\n this._fields.add('*');\n } else {\n this.addField(...fields);\n }\n }\n\n // #endregion\n\n // #region Methods\n\n public addField(...fields: string[]) {\n for (const arg of fields) {\n const fieldName = arg.toLowerCase().trim();\n if (fieldName.length > 0 && this._fields.has(fieldName) === false) {\n this._fields.add(fieldName);\n }\n }\n\n if (this._fields.has('*')) {\n return;\n }\n\n // make sure there's the minimum\n for (const field of this._defaultFields) {\n if (!this._fields.has(field)) {\n this._fields.add(field);\n }\n }\n }\n\n public toString(): string {\n let result = '';\n for (const field of this._fields) {\n if (result.length > 0) {\n result = result + ',' + field;\n } else {\n result = result + field;\n }\n }\n return result;\n }\n\n // #endregion\n}\n","export class QueryHelper {\n public buildElemList(query: string, fieldName: string, list: Set): string {\n if (list.size > 0) {\n if (query.endsWith('?') === false) {\n query = query + '&' + fieldName + '=';\n } else {\n query = query + fieldName + '=';\n }\n\n let index = 0;\n\n for (const elem of list) {\n if (index > 0) {\n query = query + ',' + elem;\n } else {\n query = query + elem;\n }\n index++;\n }\n }\n return query;\n }\n\n public BuildElemDictionary(query: string, fieldName: string, map: Map): string {\n if (map.size > 0) {\n if (query.endsWith('?') === false) {\n query = query + '&' + fieldName + '=';\n } else {\n query = query + fieldName + '=';\n }\n\n const obj: any = {};\n for (let entry of map) {\n if ( typeof entry[1] === \"object\" ) {\n // right now consider it is an array\n obj[entry[0]] = Array.from(entry[1]);\n } else {\n obj[entry[0]] = entry[1];\n }\n };\n\n const json = JSON.stringify(obj);\n query = query + json;\n }\n return query;\n }\n\n public buildElem(query: string, fieldName: string, value: any) {\n if (query.length > 0 && value !== undefined) {\n var aDate = value as Date;\n var strValue = \"\";\n if ( ( aDate ) && ( aDate.toISOString !== undefined ) ){\n strValue = aDate.toISOString();\n strValue = strValue.replace(\"Z\", \"0000Z\"); // missing precision in js vs c#... $^^$%?#??!?!?\n } else {\n strValue = value.toString();\n }\n if (query.endsWith('?') === false) {\n query = query + '&' + fieldName + '=' + strValue;\n } else {\n query = query + fieldName + '=' + strValue;\n }\n }\n return query;\n }\n\n public buildFieldObjectList(query: string, fieldName: string, list: Set) {\n if (list.size > 0) {\n if (query.endsWith('?') === false) {\n query = query + '&' + fieldName + '=';\n } else {\n query = query + fieldName + '=';\n }\n\n const array: string[] = [];\n for (const elem of list) {\n array.push(elem.toString());\n }\n\n query += JSON.stringify(array);\n }\n return query;\n }\n}\n","// Autogenerated: v2/help/Classes/ApiEntityPageQuery?codegen=ts&InterfaceOnly=False&workflow=False on 2022-12-21 2:23:57 PM\nimport { FieldList } from '../../Helpers/FieldList';\nimport { BaseQuery } from './BaseQuery';\nimport { IGuid, GuidSet } from 'safeguid';\nimport { IEntityQuery } from '../Interface/IEntityQuery';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class EntityQuery extends BaseQuery implements IEntityQuery {\n // #region REST Properties\n\n public customEntityTypes = new GuidSet();\n public customFieldValues: string | undefined;\n public displayHiddenFromUI: boolean | undefined;\n public entityOwnerTypes = new GuidSet();\n public entitySubTypes = new Map>();\n public entityTypes = new Set();\n public excludedGuids = new GuidSet();\n public federatedState: string | undefined; // ApiStateMode\n public fields = new Set();\n public guids = new GuidSet();\n public includedGuids = new GuidSet();\n public logicalId: number | undefined;\n public name: string | undefined;\n public nameOrder: string | undefined; // ApiSortingOption\n public page: number | undefined;\n public pageSize: number | undefined;\n public role: IGuid | undefined;\n public roleTypeIds = new GuidSet();\n public runningStates = new Set();\n public validFlags: string | undefined; // ApiValidFlags\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor(baseQuery?: string) {\n super(baseQuery);\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public buildQuery(): string {\n this.prepareQuery();\n let query = super.buildQuery();\n query = this._queryHelper.buildElem(query, 'ValidFlags', this.validFlags);\n query = this._queryHelper.buildElemList(query, 'Fields', this.fields);\n query = this._queryHelper.buildElem(query, 'Name', this.name);\n query = this._queryHelper.buildElem(query, 'NameOrder', this.nameOrder);\n query = this._queryHelper.buildElemList(query, 'Guids', this.guids);\n query = this._queryHelper.buildElemList(query, 'EntityTypes', this.entityTypes);\n query = this._queryHelper.BuildElemDictionary(query, 'EntitySubTypes', this.entitySubTypes);\n query = this._queryHelper.buildElemList(query, 'RoleTypeIds', this.roleTypeIds);\n query = this._queryHelper.buildElemList(query, 'CustomEntityTypes', this.customEntityTypes);\n query = this._queryHelper.buildElem(query, 'Page', this.page);\n query = this._queryHelper.buildElem(query, 'PageSize', this.pageSize);\n query = this._queryHelper.buildElem(query, 'LogicalId', this.logicalId);\n query = this._queryHelper.buildElem(query, 'DisplayHiddenFromUI', this.displayHiddenFromUI);\n query = this._queryHelper.buildElem(query, 'FederatedState', this.federatedState);\n query = this._queryHelper.buildElem(query, 'Role', this.role);\n query = this._queryHelper.buildElem(query, 'CustomFieldValues', this.customFieldValues);\n query = this._queryHelper.buildElemList(query, 'RunningStates', this.runningStates);\n query = this._queryHelper.buildElemList(query, 'ExcludedGuids', this.excludedGuids);\n query = this._queryHelper.buildElemList(query, 'IncludedGuids', this.includedGuids);\n query = this._queryHelper.buildElemList(query, 'EntityOwnerTypes', this.entityOwnerTypes);\n return query;\n }\n\n // #endregion Methods\n\n // #region Custom Methods\n\n public prepareQuery(): void {\n // to make sure the default field are set properlly\n const fl = new FieldList(...this.fields);\n this.fields = new Set(fl.Fields);\n return;\n }\n\n // #endregion Custom Methods\n\n}\n\n","import { QueryHelper } from '../../Helpers/QueryHelper';\nimport { FieldList } from '../../Helpers/FieldList';\n\nexport class BaseQuery {\n private _baseQuery: string;\n protected _queryHelper = new QueryHelper();\n\n constructor(baseQuery?: string) {\n if (!baseQuery) {\n this._baseQuery = 'v2/Entities';\n } else {\n this._baseQuery = baseQuery;\n }\n }\n\n public buildQuery(): string {\n const query = this._baseQuery + '?';\n return query;\n }\n\n public prepareQuery(): void {}\n}\n","import { EntityQuery } from './EntityQuery';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\n\nexport class QueryFilter extends EntityQuery implements IQueryFilter {\n constructor(...columns: string[]) {\n super();\n for (const f of columns) {\n // start monitoring that entity\n this.fields.add(f);\n }\n }\n\n public toString(): string {\n let query = super.buildQuery();\n query = query.substring(query.indexOf('?')).replace('?', '');\n return query;\n }\n}\n","import { QueryFilter } from '../Client/Queries/QueryFilter';\nimport { ObservableCollection } from './ObservableCollection';\nimport { RelationTrackerBase } from './RelationTrackerBase';\nimport { FieldList } from './FieldList';\nimport { CancellationToken } from './Helpers';\nimport { FieldObject } from './FieldObject';\nimport { IQueryFilter } from '../Client/Interface/IQueryFilter';\nimport { ITransaction } from '../Client/Interface/ITransaction';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\nimport { IEntity } from '../Client/Interface/IEntity';\nimport { ISecurityCenterClient } from '../Client/Interface/ISecurityCenterClient';\nimport { IRestObject } from '../Client/Interface/IRestObject';\nimport { Entity } from '../Client/Model/Entity';\n\nexport class RelationGuidTracker extends RelationTrackerBase {\n //#region Fields\n\n protected _members: ObservableCollection | null = null;\n private _relationAndFilter: string;\n protected _query: IQueryFilter | null = null;\n protected _client: ISecurityCenterClient;\n\n //#endregion\n\n //#region Properties\n\n public get relationAndFilter(): string {\n return this._relationAndFilter;\n }\n\n //#endregion\n\n //#region constructor\n\n constructor(client: ISecurityCenterClient, parent: IRestObject, relation: string, itemKey: string, readOnly: boolean, query?: IQueryFilter | null) {\n super(parent, relation, itemKey, readOnly, false);\n this._client = client;\n if (query) {\n this._query = query;\n } else {\n this._query = new QueryFilter();\n }\n\n if (!this._query.fields) {\n if (client.defaultFields != null) {\n this._query.fields = new Set(client.defaultFields.Fields);\n } else {\n // new entity not pushed to directory yet\n const defField = new FieldList();\n this._query.fields = new Set(defField.Fields);\n }\n }\n\n if (this._relation.indexOf('?') === -1) {\n this._relationAndFilter = this._relation + '?' + this._query.toString();\n } else {\n this._relationAndFilter = this._relation + '&' + this._query.toString();\n }\n }\n\n //#endregion\n\n //#region methods\n\n public async getValueAsync(): Promise> {\n if (this._members == null) {\n this._members = new ObservableCollection(\n (e: IEntity) => {\n this.onAdded(e);\n },\n (e: IEntity) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n this._members.suspend = true;\n if (this._parent.canExecuteRelations === true) {\n const response = await this._parent.executeRequestAsync('GET', this._relationAndFilter, null, new CancellationToken());\n if (response.body) {\n for (const item of response.body) {\n const scEntity = this.createEntityModel(item);\n if (scEntity) {\n this._members.add(scEntity);\n }\n }\n }\n }\n this._members.suspend = false;\n }\n return this._members;\n }\n\n public async pushTransactionAsync(transaction: ITransaction): Promise {\n if (this._parent.canExecuteRelations === false) {\n this._members = new ObservableCollection(\n (e: IEntity) => {\n this.onAdded(e);\n },\n (e: IEntity) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n }\n\n if (this._members != null) {\n // no need for transaction since we already got the data\n // add empty entry simply to return the data\n transaction.addTransactionOperation>('', '', null, () => {\n return new Promise((resolve, reject) => {\n if (this._members != null) {\n resolve(this._members);\n return;\n }\n reject('not supposed to be here!');\n return;\n });\n });\n return;\n } else {\n this._members = new ObservableCollection(\n (e: IEntity) => {\n this.onAdded(e);\n },\n (e: IEntity) => {\n this.onRemoved(e);\n },\n () => {\n this.onCleared();\n },\n );\n }\n\n const uri = this._parent.baseUri + '/' + this.relationAndFilter;\n transaction.addTransactionOperation>(uri, 'GET', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n if (!this._members) {\n throw new Error('Member null');\n }\n try {\n if (response.body) {\n this._members.suspend = true;\n for (const item of response.body) {\n const scEntity = this.createEntityModel(item);\n if (scEntity) {\n this._members.add(scEntity);\n }\n }\n this._members.suspend = false;\n }\n resolve(this._members);\n } catch (e) {\n reject(e);\n }\n });\n });\n return;\n }\n\n public createEntityModel(config: object): IEntity | null {\n return this._client.createEntityModel(Entity, config);\n }\n\n public onAdded(element: IEntity): void {\n if (this._readOnly === true) {\n throw new Error('the collection is read only');\n }\n const body = new FieldObject();\n body.setField(this._elementId, element.id);\n this.addRelationOperation(this._relation, 'POST', body);\n }\n\n public onRemoved(element: IEntity): void {\n this.addRelationOperation(this._relation + '/' + element.id, 'DELETE', null);\n }\n\n public onCleared(): void {\n this.addRelationOperation(this._relation, 'DELETE', null);\n }\n\n //#region\n}\n","import { CancellationToken } from './Helpers';\nimport { RelationTrackerBase } from './RelationTrackerBase';\nimport { ITransaction } from '../Client/Interface/ITransaction';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\nimport { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class RelationObjectTracker extends RelationTrackerBase {\n //#region Fields\n\n protected _data: T | null = null;\n protected _loaded = false;\n private _fieldId = '';\n\n //#endregion\n\n //#region Properties\n\n //#endregion\n\n //#region constructor\n\n constructor(parent: IRestObject, relation: string, elementId: string) {\n super(parent, relation, null, true, false);\n this._fieldId = elementId;\n }\n\n //#endregion\n\n //#region methods\n\n public async getValueAsync(): Promise {\n if (this._loaded === false) {\n if (this._parent.canExecuteRelations === true) {\n const response = await this._parent.executeRequestAsync('GET', this._relation, null, new CancellationToken());\n this.parseResponse(response);\n } else {\n this._data = null;\n }\n }\n return this._data;\n }\n\n public async pushTransactionAsync(transaction: ITransaction): Promise {\n if (this._parent.canExecuteRelations === false) {\n this._data = null;\n this._loaded = true;\n }\n\n if (this._loaded === true) {\n // no need for transaction since we already got the data\n // add empty entry simply to return the data\n transaction.addTransactionOperation('', '', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n resolve(this._data);\n });\n });\n return;\n }\n\n const uri = this._parent.baseUri + '/' + this.relation;\n transaction.addTransactionOperation(uri, 'GET', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n try {\n if (response.body) {\n this.parseResponse(response);\n }\n resolve(this._data);\n } catch (e) {\n reject(e);\n }\n });\n });\n return;\n }\n\n private parseResponse(response: IRestResponse) {\n if (response.body) {\n this._data = response.body[this._fieldId];\n }\n this._loaded = true;\n }\n //#region\n}\n","import { FieldObject } from './FieldObject';\nimport { RelationTrackerBase } from './RelationTrackerBase';\nimport { ITransaction } from '../Client/Interface/ITransaction';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\nimport { IFieldObject } from '../Client/Interface/IFieldObject';\nimport { IRestObject } from '../Client/Interface/IRestObject';\n\nexport class RelationSimpleFieldObjectTracker extends RelationTrackerBase {\n //#region Fields\n\n private _classType: any;\n private _data: T | null = null;\n private _updateSupported = false;\n\n //#endregion\n\n //#region Properties\n\n //#endregion\n\n //#region constructor\n\n constructor(classType: new () => T, parent: IRestObject, relation: string, updateSupported: boolean) {\n super(parent, relation, null, true, false);\n this._classType = classType;\n this._updateSupported = updateSupported;\n }\n\n //#endregion\n\n //#region methods\n\n public async getValueAsync(): Promise {\n if (this._data == null) {\n if (this._parent.canExecuteRelations === true) {\n const response = await this._parent.executeRequestAsync('GET', this.relation, null);\n if (response.body) {\n this._data = new this._classType() as T;\n this._data.roParent = this._parent;\n this._data.loadFields(response.body);\n this.detectChanges();\n }\n }\n }\n return this._data;\n }\n\n public async pushTransactionAsync(transaction: ITransaction): Promise {\n if (this._parent.canExecuteRelations === false) {\n this._data = new this._classType() as T;\n }\n\n if (this._data != null) {\n // no need for transaction since we already got the data\n // add empty entry simply to return the data\n transaction.addTransactionOperation('', '', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n resolve(this._data);\n return;\n });\n });\n return;\n }\n\n const uri = this._parent.baseUri + '/' + this.relation;\n\n transaction.addTransactionOperation(uri, 'GET', null, (response: IRestResponse) => {\n return new Promise((resolve, reject) => {\n try {\n if (response.body) {\n this._data = new this._classType() as T;\n this._data.roParent = this._parent;\n this._data.loadFields(response.body);\n this.detectChanges();\n }\n resolve(this._data);\n } catch (e) {\n reject(e);\n }\n });\n });\n return;\n }\n\n public addOperation(verb: string, value: U | null): U | null {\n this.addRelationOperation(this._relation, verb, value == null ? null : value);\n if (verb === 'POST' && value !== null) {\n if (this._data != null) {\n // todo release\n }\n this._data = new this._classType() as T;\n this._data.roParent = this._parent;\n this._data.loadFrom(value);\n this.detectChanges();\n return this._data as unknown as U;\n }\n return value;\n }\n\n private detectChanges(): void {\n if (this._data === null) {\n return;\n }\n this._data.onPropertyChanged((fieldObject) => {\n if (this._updateSupported === false) {\n throw new Error('Relation is readonly');\n }\n if (this._data === null) {\n return;\n }\n const found = this.pendingOperations.firstOrDefault((x) => x.verb === 'PUT');\n if (found !== null) {\n found.body = this._data;\n } else {\n this.addRelationOperation(this._relation, 'PUT', this._data);\n }\n });\n }\n\n //#region\n}\n","import { RestObject } from '../Client/Model/RestObject';\nimport { ISecurityCenterClient } from '../Client/Interface/ISecurityCenterClient';\nimport { RelationGuidTracker } from './RelationGuidTracker';\nimport { IQueryFilter } from '../Client/Interface/IQueryFilter';\nimport { IEntity } from '../Client/Interface/IEntity';\n\nexport class RelationGuidTemplateTracker extends RelationGuidTracker {\n //#region Fields\n\n private _classType: any;\n\n //#endregion\n\n //#region Properties\n\n //#endregion\n\n //#region constructor\n\n constructor(classType: new () => T, client: ISecurityCenterClient, parent: RestObject, relation: string, itemKey: string, readOnly: boolean, query?: IQueryFilter | null) {\n super(client, parent, relation, itemKey, readOnly, query);\n this._classType = classType;\n }\n\n //#endregion\n\n //#region methods\n\n public createEntityModel(config: object): IEntity | null {\n return this._client.createEntityModel(this._classType, config);\n }\n\n //#region\n}\n","import { RestResponse } from '../../Connection/RestResponse';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport * as Helpers from '../../Helpers/Helpers';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { RelationFieldObjectTracker } from '../../Helpers/RelationFieldObjectTracker';\nimport { RelationGuidTracker } from '../../Helpers/RelationGuidTracker';\nimport { RelationObjectTracker } from '../../Helpers/RelationObjectTracker';\nimport { RelationSimpleFieldObjectTracker } from '../../Helpers/RelationSimpleFieldObjectTracker';\nimport { RelationTrackerBase } from '../../Helpers/RelationTrackerBase';\nimport { Transaction } from '../Transaction';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { IEntity } from '../Interface/IEntity';\nimport { IRestTransaction } from '../Interface/IRestTransaction';\nimport { IRestObject } from '../Interface/IRestObject';\nimport { IFieldObject } from '../Interface/IFieldObject';\nimport { ISecurityCenterClient } from '../Interface/ISecurityCenterClient';\nimport { RelationGuidTemplateTracker } from '../../Helpers/RelationGuidTemplateTracker';\n\nexport class RestObject extends FieldObject implements IRestObject {\n // #region Fields\n public baseUri: string;\n public lastRelationValidFlags = 0;\n public lastRelationId = '';\n\n protected _canGet = true;\n\n private _client: ISecurityCenterClient | null = null;\n private _relations: Map;\n\n // #endregion\n\n // #region Properties\n\n public get relations(): ReadonlyMap {\n return this._relations;\n }\n\n public get client(): ISecurityCenterClient | null {\n return this._client;\n }\n\n public get isDirty(): boolean {\n return super.isDirty;\n }\n\n public set isDirty(dirty: boolean) {\n super.isDirty = dirty;\n if (dirty === false) {\n const updatedRelations = new Set();\n for (const [key, tracker] of this._relations) {\n if (tracker.pendingOperations.size > 0) {\n updatedRelations.add(key);\n tracker.isValid = false;\n }\n }\n for (const toDelete of updatedRelations) {\n this._relations.delete(toDelete);\n }\n }\n }\n\n public get canExecuteRelations(): boolean {\n return true;\n }\n\n public get canGet(): boolean {\n return this._canGet;\n }\n\n // #endregion\n\n // #region Constructor\n\n constructor(baseUri: string) {\n super();\n this._relations = new Map();\n this.baseUri = baseUri;\n }\n\n // #endregion\n\n // #region Public methods\n\n public clearRelations(): void {\n this._relations.clear();\n }\n\n public getRelation(relationId: string, tracker: T, validFlags?: number | null) {\n this.lastRelationId = relationId;\n if (validFlags) {\n this.lastRelationValidFlags = validFlags;\n }\n if (this._relations.has(relationId) === false) {\n this._relations.set(relationId, tracker);\n return tracker;\n }\n return this._relations.get(relationId);\n }\n\n protected async getFieldObjectRelationAsync(\n classType: new () => T,\n relationId: string,\n elementId: string,\n readOnly: boolean,\n allowValueUpdate: boolean,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise | null> {\n const tracker = this.getRelation(\n relationId,\n new RelationFieldObjectTracker(classType, this, relationId, elementId, readOnly, allowValueUpdate),\n validFlags,\n ) as RelationFieldObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n protected async getGuidRelationAsync(\n relationId: string,\n itemKey: string,\n readOnly: boolean,\n query?: IQueryFilter | null,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise | null> {\n if (!this.client) {\n throw new Error('client not set');\n }\n\n const tracker = new RelationGuidTracker(this.client, this, relationId, itemKey, readOnly, query);\n const newTracker = this.getRelation(tracker.relationAndFilter, tracker, validFlags) as RelationGuidTracker;\n\n // Special case because of RelationAndFilter\n if (!transaction) {\n return await newTracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n protected async getGuidTemplateRelationAsync(\n classType: new () => T,\n relationId: string,\n itemKey: string,\n readOnly: boolean,\n query?: IQueryFilter | null,\n validFlags?: number | null,\n transaction?: Transaction | null,\n ): Promise | null> {\n if (!this.client) {\n throw new Error('client not set');\n }\n\n // Special case because of RelationAndFilter\n const tracker = new RelationGuidTemplateTracker(classType, this.client, this, relationId, itemKey, readOnly, query);\n const newtracker = this.getRelation(tracker.relationAndFilter, tracker, validFlags) as RelationGuidTemplateTracker;\n\n if (!transaction) {\n return await newtracker.getValueAsync();\n } else {\n await newtracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n public resetRelation(relationId: string) {\n this._relations.delete(relationId);\n }\n\n protected async updateDataRelationAsync(relationId: string, verb: string, body: object | null, transaction?: ITransaction | null): Promise {\n const result = await this.executeRequestTransactionAsync2(relationId, verb, body, transaction);\n if (result && (result.statusCode === HttpStatusCode.OK || result.statusCode === HttpStatusCode.CREATED)) {\n this.resetRelation(relationId);\n }\n if (!result) {\n throw new Error('executeRequestTransactionAsync failed');\n }\n return result;\n }\n\n protected async updateDataRelation2Async(\n classType: new () => T,\n relationId: string,\n verb: string,\n updateSupported: boolean,\n validFlags: number | null,\n body: U | null,\n ): Promise {\n const tracker = this.getRelation(\n relationId,\n new RelationSimpleFieldObjectTracker(classType, this, relationId, updateSupported),\n validFlags,\n ) as RelationSimpleFieldObjectTracker;\n return tracker.addOperation(verb, body);\n }\n\n public async getDataRelationAsync(\n classType: new () => T,\n relationId: string,\n updateSupported: boolean,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise {\n const tracker = this.getRelation(\n relationId,\n new RelationSimpleFieldObjectTracker(classType, this, relationId, updateSupported),\n validFlags,\n ) as RelationSimpleFieldObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n public async getDataRelation2Async(relationId: string, fieldId: string, validFlags?: number | null, transaction?: ITransaction | null): Promise {\n const tracker = this.getRelation(relationId, new RelationObjectTracker(this, relationId, fieldId), validFlags) as RelationObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n public async executeRequestAsync(verb: string, uri: string, body: string | any, token?: Helpers.CancellationToken): Promise {\n const newUri = this.baseUri + '/' + uri;\n if (!this._client) {\n throw new Error('client not defined');\n }\n return await this._client.rest.executeRequestAsync(verb, newUri, body, token);\n }\n\n public async executeRequestWithResponseTypeAsync(\n verb: string,\n uri: string,\n body: string | any,\n responseType: 'arraybuffer' | 'blob' | 'formdata' | 'json' | 'text',\n token?: Helpers.CancellationToken,\n ): Promise {\n const newUri = this.baseUri + '/' + uri;\n if (!this._client) {\n throw new Error('client not defined');\n }\n return await this._client.rest.executeRequestWithResponseTypeAsync(verb, newUri, body, responseType, token);\n }\n\n // Transaction support\n public async executeRequestTransactionAsync(\n operation: string,\n verb: string,\n body: object | null,\n transaction?: ITransaction,\n responseHandler?: (response: IRestResponse) => Promise,\n token?: Helpers.CancellationToken,\n ): Promise {\n if (!transaction) {\n const response = await this.executeRequestAsync(verb, operation, body != null ? body.toString() : null, token);\n if (!responseHandler) {\n throw new Error('responseHandler cannot be null');\n }\n return await responseHandler(response);\n } else {\n transaction.addTransactionOperation(this.baseUri + '/' + operation, verb, body, responseHandler);\n return null;\n }\n }\n\n public async executeRequestTransactionAsync2(\n operation: string,\n verb: string,\n body: object | null,\n transaction?: ITransaction | null,\n token?: Helpers.CancellationToken,\n ): Promise {\n if (!transaction) {\n return await this.executeRequestAsync(verb, operation, body != null ? body.toString() : null, token);\n } else {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) {\n resolve(response);\n });\n } else {\n return new Promise(function (resolve, reject) {\n reject(response);\n });\n }\n };\n transaction.addTransactionOperation(this.baseUri + '/' + operation, verb, body, responseHandler);\n return null;\n }\n }\n\n public async reloadAsync(clearRelationOnly = false): Promise {\n this._relations.clear();\n }\n\n // #endregion\n\n // #region Internal methods\n\n public getUpdateBody(): object | null {\n let count = 0;\n const body = new FieldObject();\n for (const [key, field] of this.allFields) {\n if (field.dirty === true) {\n body.setField(field.fieldId, field.value);\n count++;\n }\n }\n if (count === 0) {\n return null;\n }\n return body;\n }\n\n public getCreateBody(): object | null {\n let count = 0;\n const body = new FieldObject();\n for (const [key, field] of this.allFields) {\n body.setField(field.fieldId, field.value);\n count++;\n }\n if (count === 0) {\n return null;\n }\n return body;\n }\n\n public addPendingOperation(transaction: IRestTransaction) {\n for (const [key, tracker] of this._relations) {\n tracker.addPendingOperation(transaction);\n }\n return;\n }\n\n public load(rest: ISecurityCenterClient, config?: object): void {\n this._client = rest;\n this.loadFields(config);\n }\n\n // #endregion\n\n // #region Protected methods\n\n public loadFrom(source: IRestObject) {\n this._client = source.client;\n this._relations.clear();\n for (const [key, relation] of source.relations) {\n this._relations.set(key, relation);\n }\n super.loadFrom(source);\n }\n\n public loadRelationsFrom(source: IRestObject, relations: Set): void {\n for (const [key, relation] of source.relations) {\n if (relations.has(key)) {\n this._relations.set(key, relation);\n }\n }\n }\n\n public loadFieldsFrom(source: IRestObject, fields?: Set): void {\n this._client = source.client;\n\n super.loadFieldsFrom(source, fields);\n }\n\n // #endregion\n}\n","// Autogenerated: v2/help/enumerations/ApiValidFlags?codegen=ts on 2020-07-23 3:40:07 PM\n\nexport class ValidFlags {\n public static None = 0x0;\n public static Base = 0x1;\n public static Specific = 0x2;\n public static Membership = 0x4;\n public static MemberOf = 0x8;\n public static EntityDependency = 0x10;\n public static RunningStatus = 0x20;\n public static Event2action = 0x40;\n public static Membership2 = 0x80;\n public static MemberOf2 = 0x100;\n public static PartitionOf = 0x200;\n public static EntityStatus = 0x400;\n public static AreaPeopleCount = 0x800;\n public static Membership3 = 0x1000;\n public static MemberOf3 = 0x2000;\n public static EntityDependency2 = 0x4000;\n public static EntityCustomfield = 0x8000;\n public static Behavior = 0x10000;\n public static EntityExtra = 0x20000;\n public static SpecificExtra = 0x40000;\n public static EntityMembership = 0x80000;\n public static EntityMemberOf = 0x100000;\n public static StealthData = 0x200000;\n public static EntityDependency3 = 0x400000;\n public static EntityStatus2 = 0x800000;\n public static EntityStatus3 = 0x1000000;\n public static Membership4 = 0x2000000;\n public static SyncStatus = 0x4000000;\n public static EntityInfo = 0x8000000;\n public static InformationProviders = 0x10000000;\n public static MemberOf4 = 0x20000000;\n public static MemberOfMap = 0x40000000;\n public static All = 0xFFFFFFFF;\n}\n","// Autogenerated: v2/help/Entities/ApiEntity?codegen=ts&InterfaceOnly=True&workflow=False on 2022-07-12 11:51:55 AM\nimport { IGuid } from 'safeguid';\nimport { ITransaction } from './ITransaction';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IRestResponse } from './IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { IRestObject } from './IRestObject';\nimport { SecurityCache } from '../Model/SecurityCache';\n\n// #region Fields\n\nexport class EntityFields {\n public static canDiagnoseField = 'CanDiagnose';\n public static creationTimeField = 'CreationTime';\n public static customIconIdField = 'CustomIconId';\n public static defaultPartitionField = 'DefaultPartition';\n public static descriptionField = 'Description';\n public static entityTypeField = 'EntityType';\n public static federationLogicalParentField = 'FederationLogicalParent';\n public static hiddenFromUIField = 'HiddenFromUI';\n public static idField = 'Id';\n public static isCopyConfigSupportedField = 'IsCopyConfigSupported';\n public static isDeletableField = 'IsDeletable';\n public static isFederatedField = 'IsFederated';\n public static isImportedFromExternalSystemField = 'IsImportedFromExternalSystem';\n public static isLogicalEntityField = 'IsLogicalEntity';\n public static isOwnedByPluginField = 'IsOwnedByPlugin';\n public static isReadOnlyField = 'IsReadOnly';\n public static isSynchronizedFromPluginField = 'IsSynchronizedFromPlugin';\n public static isSynchronizingField = 'IsSynchronizing';\n public static isVirtualChildField = 'IsVirtualChild';\n public static localNameField = 'LocalName';\n public static logicalIdField = 'LogicalId';\n public static maintenanceField = 'Maintenance';\n public static maintenanceEndTimeField = 'MaintenanceEndTime';\n public static maintenanceReasonField = 'MaintenanceReason';\n public static maxNameLengthField = 'MaxNameLength';\n public static nameField = 'Name';\n public static nameDependsOnOtherEntityField = 'NameDependsOnOtherEntity';\n public static networkParentField = 'NetworkParent';\n public static originalDirectoryField = 'OriginalDirectory';\n public static originalIdField = 'OriginalId';\n public static originalNameField = 'OriginalName';\n public static ownerMasterApplicationField = 'OwnerMasterApplication';\n public static ownerMasterRoleField = 'OwnerMasterRole';\n public static ownerMasterRoleTypeField = 'OwnerMasterRoleType';\n public static ownerMasterRoleTypeIdField = 'OwnerMasterRoleTypeId';\n public static runningStateField = 'RunningState';\n public static sharedField = 'Shared';\n public static sharedOverrideField = 'SharedOverride';\n public static supportsMembershipField = 'SupportsMembership';\n public static synchronisedField = 'Synchronised';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IHealthEvent extends IFieldObject {\n healthEventType: string;\n timestamp: Date;\n description: string;\n timezone: string;\n observerGuid: IGuid;\n observerSourceType: string;\n observerServerName: string;\n}\n\nexport interface IEntityNode extends IFieldObject {\n id: IGuid;\n name: string;\n entityType: string;\n areas: ObservableCollection;\n}\n\nexport interface IFileCacheItem extends IFieldObject {\n data: string;\n context: string;\n localFilePath: string;\n relatedEntityGuid: IGuid;\n fileGuid: IGuid;\n fileLength: number;\n lastAccessTimeUtc: Date;\n extension: string;\n}\n\nexport interface IDiagnostic extends IFieldObject {\n result: string;\n message: string;\n details: string;\n}\n\nexport interface ICustomIcon extends IFieldObject {\n guid: IGuid;\n dataSmall: string;\n dataLarge: string;\n}\n\nexport interface ICustomField extends IFieldObject {\n id: IGuid;\n name: string;\n value: string;\n}\n\n// #endregion Inner classes\n\nexport interface IEntity extends IRestObject {\n // #region REST Properties\n\n readonly canDiagnose: boolean;\n\n readonly creationTime: Date;\n\n readonly customIconId: IGuid;\n\n\n description: string;\n\n entityType: string;\n\n readonly federationLogicalParent: IGuid;\n\n hiddenFromUI: boolean;\n\n readonly id: IGuid;\n\n readonly isCopyConfigSupported: boolean;\n\n readonly isDeletable: boolean;\n\n readonly isFederated: boolean;\n\n readonly isImportedFromExternalSystem: boolean;\n\n readonly isLogicalEntity: boolean;\n\n readonly isOwnedByPlugin: boolean;\n\n readonly isReadOnly: boolean;\n\n readonly isSynchronizedFromPlugin: boolean;\n\n isSynchronizing: boolean;\n\n readonly isVirtualChild: boolean;\n\n readonly localName: string;\n\n logicalId: number | null;\n\n maintenance: boolean;\n\n readonly maintenanceEndTime: Date;\n\n readonly maintenanceReason: string;\n\n readonly maxNameLength: number;\n\n name: string;\n\n readonly nameDependsOnOtherEntity: boolean;\n\n readonly networkParent: IGuid;\n\n originalDirectory: string;\n\n originalId: IGuid;\n\n originalName: string;\n\n ownerMasterApplication: IGuid;\n\n ownerMasterRole: IGuid;\n\n readonly ownerMasterRoleType: string;\n\n readonly ownerMasterRoleTypeId: IGuid;\n\n runningState: string;\n\n shared: boolean;\n\n readonly sharedOverride: boolean;\n\n readonly supportsMembership: boolean;\n\n readonly synchronised: boolean;\n\n // #endregion REST Properties\n\n // #region Properties\n\n securityCache: SecurityCache | undefined;\n\n // #endregion Properties\n\n // #region REST Methods\n\n getAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCopyConfigDataTemplateAsync(transaction?: ITransaction | null): Promise;\n getCustomFieldValuesAsync(transaction?: ITransaction | null): Promise | null>;\n getCustomIconAsync(transaction?: ITransaction | null): Promise;\n getCustomIconsAsync(transaction?: ITransaction | null): Promise | null>;\n getDiagnosticsAsync(transaction?: ITransaction | null): Promise | null>;\n enableMaintenanceAsync(endTime: Date, reason: string, transaction?: ITransaction): Promise;\n getEntityPrivilegesAsync(transaction?: ITransaction): Promise | null>;\n deleteFilesCacheAsync(id: IGuid, transaction?: ITransaction | null): Promise;\n getFilesCacheAsync(id: IGuid, transaction?: ITransaction | null): Promise;\n addFilesCacheAsync(id: IGuid, value: IFileCacheItem, transaction?: ITransaction | null): Promise;\n getInformationProvidersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getLinkedMapsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getPartitionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRecursiveParentAreaAsync(transaction?: ITransaction | null): Promise | null>;\n sendHealthEventsAsync(value: Array, transaction?: ITransaction): Promise;\n sendRequestAsync(value: IFieldObject, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n // #region Custom Methods\n\n hasPrivilegesAsync(privileges: Set, transaction?: ITransaction): Promise;\n\n isOfType(classType: new () => T): this is T;\n\n // #endregion Custom Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiEntity?codegen=ts&InterfaceOnly=False&workflow=False on 2022-02-24 3:03:15 PM\nimport { RestObject } from './RestObject';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntityNode, IFileCacheItem, IDiagnostic, ICustomIcon, ICustomField, IEntity, EntityFields, IHealthEvent } from '../Interface/IEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IFieldObject } from '../Interface/IFieldObject';\nimport { RestResponse } from '../../Connection/RestResponse';\nimport { SecurityCache } from './SecurityCache';\n\n// #region Inner classes\n\nexport class HealthEvent extends FieldObject implements IHealthEvent {\n // HealthEventType\n public get healthEventType(): string {\n return this.getField('HealthEventType');\n }\n public set healthEventType(value: string) {\n this.setField('HealthEventType', value);\n }\n // Timestamp\n public get timestamp(): Date {\n return this.getFieldDate('Timestamp');\n }\n public set timestamp(value: Date) {\n this.setFieldDate('Timestamp', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Timezone\n public get timezone(): string {\n return this.getField('Timezone');\n }\n public set timezone(value: string) {\n this.setField('Timezone', value);\n }\n // ObserverGuid\n public get observerGuid(): IGuid {\n return this.getFieldGuid('ObserverGuid');\n }\n public set observerGuid(value: IGuid) {\n this.setFieldGuid('ObserverGuid', value);\n }\n // ObserverSourceType\n public get observerSourceType(): string {\n return this.getField('ObserverSourceType');\n }\n public set observerSourceType(value: string) {\n this.setField('ObserverSourceType', value);\n }\n // ObserverServerName\n public get observerServerName(): string {\n return this.getField('ObserverServerName');\n }\n public set observerServerName(value: string) {\n this.setField('ObserverServerName', value);\n }\n\n public initializeAllFields(): void {\n this.setField('HealthEventType', '');\n this.setFieldDate('Timestamp', new Date());\n this.setField('Description', '');\n this.setField('Timezone', '');\n this.setFieldGuid('ObserverGuid', SafeGuid.EMPTY);\n this.setField('ObserverSourceType', '');\n this.setField('ObserverServerName', '');\n }\n}\n\nexport class EntityNode extends FieldObject implements IEntityNode {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // EntityType\n public get entityType(): string {\n return this.getField('EntityType');\n }\n public set entityType(value: string) {\n this.setField('EntityType', value);\n }\n // Areas\n public get areas(): ObservableCollection {\n return this.getFieldObjectArray(EntityNode, 'Areas');\n }\n public set areas(value: ObservableCollection) {\n this.setFieldObjectArray('Areas', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setField('EntityType', '');\n this.setFieldArray('Areas', new ObservableCollection());\n }\n}\n\nexport class FileCacheItem extends FieldObject implements IFileCacheItem {\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n // Context\n public get context(): string {\n return this.getField('Context');\n }\n public set context(value: string) {\n this.setField('Context', value);\n }\n // LocalFilePath\n public get localFilePath(): string {\n return this.getField('LocalFilePath');\n }\n public set localFilePath(value: string) {\n this.setField('LocalFilePath', value);\n }\n // RelatedEntityGuid\n public get relatedEntityGuid(): IGuid {\n return this.getFieldGuid('RelatedEntityGuid');\n }\n public set relatedEntityGuid(value: IGuid) {\n this.setFieldGuid('RelatedEntityGuid', value);\n }\n // FileGuid\n public get fileGuid(): IGuid {\n return this.getFieldGuid('FileGuid');\n }\n public set fileGuid(value: IGuid) {\n this.setFieldGuid('FileGuid', value);\n }\n // FileLength\n public get fileLength(): number {\n return this.getField('FileLength');\n }\n public set fileLength(value: number) {\n this.setField('FileLength', value);\n }\n // LastAccessTimeUtc\n public get lastAccessTimeUtc(): Date {\n return this.getFieldDate('LastAccessTimeUtc');\n }\n public set lastAccessTimeUtc(value: Date) {\n this.setFieldDate('LastAccessTimeUtc', value);\n }\n // Extension\n public get extension(): string {\n return this.getField('Extension');\n }\n public set extension(value: string) {\n this.setField('Extension', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Data', '');\n this.setField('Context', '');\n this.setField('LocalFilePath', '');\n this.setFieldGuid('RelatedEntityGuid', SafeGuid.EMPTY);\n this.setFieldGuid('FileGuid', SafeGuid.EMPTY);\n this.setField('FileLength', 0);\n this.setFieldDate('LastAccessTimeUtc', new Date());\n this.setField('Extension', '');\n }\n}\n\nexport class Diagnostic extends FieldObject implements IDiagnostic {\n // Result\n public get result(): string {\n return this.getField('Result');\n }\n public set result(value: string) {\n this.setField('Result', value);\n }\n // Message\n public get message(): string {\n return this.getField('Message');\n }\n public set message(value: string) {\n this.setField('Message', value);\n }\n // Details\n public get details(): string {\n return this.getField('Details');\n }\n public set details(value: string) {\n this.setField('Details', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Result', '');\n this.setField('Message', '');\n this.setField('Details', '');\n }\n}\n\nexport class CustomIcon extends FieldObject implements ICustomIcon {\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // DataSmall\n public get dataSmall(): string {\n return this.getField('DataSmall');\n }\n public set dataSmall(value: string) {\n this.setField('DataSmall', value);\n }\n // DataLarge\n public get dataLarge(): string {\n return this.getField('DataLarge');\n }\n public set dataLarge(value: string) {\n this.setField('DataLarge', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('DataSmall', '');\n this.setField('DataLarge', '');\n }\n}\n\nexport class CustomField extends FieldObject implements ICustomField {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setField('Value', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class Entity extends RestObject implements IEntity {\n // #region REST Properties\n\n // CanDiagnose\n public get canDiagnose(): boolean {\n return this.getField(EntityFields.canDiagnoseField);\n }\n\n // CreationTime\n public get creationTime(): Date {\n return this.getFieldDate(EntityFields.creationTimeField);\n }\n\n // CustomIconId\n public get customIconId(): IGuid {\n return this.getFieldGuid(EntityFields.customIconIdField, ValidFlags.EntityExtra);\n }\n\n // DefaultPartition\n public set defaultPartition(value: IGuid) {\n this.setFieldGuid(EntityFields.defaultPartitionField, value);\n }\n\n // Description\n public get description(): string {\n return this.getField(EntityFields.descriptionField, ValidFlags.EntityExtra);\n }\n public set description(value: string) {\n this.setField(EntityFields.descriptionField, value);\n }\n\n // EntityType\n public get entityType(): string {\n return this.getField(EntityFields.entityTypeField);\n }\n public set entityType(value: string) {\n this.setField(EntityFields.entityTypeField, value);\n }\n\n // FederationLogicalParent\n public get federationLogicalParent(): IGuid {\n return this.getFieldGuid(EntityFields.federationLogicalParentField);\n }\n\n // HiddenFromUI\n public get hiddenFromUI(): boolean {\n return this.getField(EntityFields.hiddenFromUIField);\n }\n public set hiddenFromUI(value: boolean) {\n this.setField(EntityFields.hiddenFromUIField, value);\n }\n\n // Id\n public get id(): IGuid {\n return this.getFieldGuid(EntityFields.idField);\n }\n\n // IsCopyConfigSupported\n public get isCopyConfigSupported(): boolean {\n return this.getField(EntityFields.isCopyConfigSupportedField);\n }\n\n // IsDeletable\n public get isDeletable(): boolean {\n return this.getField(EntityFields.isDeletableField);\n }\n\n // IsFederated\n public get isFederated(): boolean {\n return this.getField(EntityFields.isFederatedField);\n }\n\n // IsImportedFromExternalSystem\n public get isImportedFromExternalSystem(): boolean {\n return this.getField(EntityFields.isImportedFromExternalSystemField, ValidFlags.EntityExtra);\n }\n\n // IsLogicalEntity\n public get isLogicalEntity(): boolean {\n return this.getField(EntityFields.isLogicalEntityField);\n }\n\n // IsOwnedByPlugin\n public get isOwnedByPlugin(): boolean {\n return this.getField(EntityFields.isOwnedByPluginField, ValidFlags.EntityExtra);\n }\n\n // IsReadOnly\n public get isReadOnly(): boolean {\n return this.getField(EntityFields.isReadOnlyField, ValidFlags.EntityExtra);\n }\n\n // IsSynchronizedFromPlugin\n public get isSynchronizedFromPlugin(): boolean {\n return this.getField(EntityFields.isSynchronizedFromPluginField, ValidFlags.EntityExtra);\n }\n\n // IsSynchronizing\n public get isSynchronizing(): boolean {\n return this.getField(EntityFields.isSynchronizingField, ValidFlags.SyncStatus);\n }\n public set isSynchronizing(value: boolean) {\n this.setField(EntityFields.isSynchronizingField, value);\n }\n\n // IsVirtualChild\n public get isVirtualChild(): boolean {\n return this.getField(EntityFields.isVirtualChildField, ValidFlags.EntityExtra);\n }\n\n // LocalName\n public get localName(): string {\n return this.getField(EntityFields.localNameField);\n }\n\n // LogicalId\n public get logicalId(): number | null {\n return this.getNullableField(EntityFields.logicalIdField, ValidFlags.EntityExtra);\n }\n public set logicalId(value: number | null) {\n this.setNullableField(EntityFields.logicalIdField, value);\n }\n\n // Maintenance\n public get maintenance(): boolean {\n return this.getField(EntityFields.maintenanceField, ValidFlags.Base);\n }\n public set maintenance(value: boolean) {\n this.setField(EntityFields.maintenanceField, value);\n }\n\n // MaintenanceEndTime\n public get maintenanceEndTime(): Date {\n return this.getFieldDate(EntityFields.maintenanceEndTimeField);\n }\n\n // MaintenanceReason\n public get maintenanceReason(): string {\n return this.getField(EntityFields.maintenanceReasonField);\n }\n\n // MaxNameLength\n public get maxNameLength(): number {\n return this.getField(EntityFields.maxNameLengthField);\n }\n\n // Name\n public get name(): string {\n return this.getField(EntityFields.nameField, ValidFlags.EntityExtra);\n }\n public set name(value: string) {\n this.setField(EntityFields.nameField, value);\n }\n\n // NameDependsOnOtherEntity\n public get nameDependsOnOtherEntity(): boolean {\n return this.getField(EntityFields.nameDependsOnOtherEntityField, ValidFlags.EntityExtra);\n }\n\n // NetworkParent\n public get networkParent(): IGuid {\n return this.getFieldGuid(EntityFields.networkParentField);\n }\n\n // OriginalDirectory\n public get originalDirectory(): string {\n return this.getField(EntityFields.originalDirectoryField);\n }\n public set originalDirectory(value: string) {\n this.setField(EntityFields.originalDirectoryField, value);\n }\n\n // OriginalId\n public get originalId(): IGuid {\n return this.getFieldGuid(EntityFields.originalIdField);\n }\n public set originalId(value: IGuid) {\n this.setFieldGuid(EntityFields.originalIdField, value);\n }\n\n // OriginalName\n public get originalName(): string {\n return this.getField(EntityFields.originalNameField);\n }\n public set originalName(value: string) {\n this.setField(EntityFields.originalNameField, value);\n }\n\n // OwnerMasterApplication\n public get ownerMasterApplication(): IGuid {\n return this.getFieldGuid(EntityFields.ownerMasterApplicationField);\n }\n public set ownerMasterApplication(value: IGuid) {\n this.setFieldGuid(EntityFields.ownerMasterApplicationField, value);\n }\n\n // OwnerMasterRole\n public get ownerMasterRole(): IGuid {\n return this.getFieldGuid(EntityFields.ownerMasterRoleField);\n }\n public set ownerMasterRole(value: IGuid) {\n this.setFieldGuid(EntityFields.ownerMasterRoleField, value);\n }\n\n // OwnerMasterRoleType\n public get ownerMasterRoleType(): string {\n return this.getField(EntityFields.ownerMasterRoleTypeField);\n }\n\n // OwnerMasterRoleTypeId\n public get ownerMasterRoleTypeId(): IGuid {\n return this.getFieldGuid(EntityFields.ownerMasterRoleTypeIdField);\n }\n\n // RunningState\n public get runningState(): string {\n return this.getField(EntityFields.runningStateField, ValidFlags.RunningStatus);\n }\n public set runningState(value: string) {\n this.setField(EntityFields.runningStateField, value);\n }\n\n // Shared\n public get shared(): boolean {\n return this.getField(EntityFields.sharedField);\n }\n public set shared(value: boolean) {\n this.setField(EntityFields.sharedField, value);\n }\n\n // SharedOverride\n public get sharedOverride(): boolean {\n return this.getField(EntityFields.sharedOverrideField);\n }\n\n // SupportsMembership\n public get supportsMembership(): boolean {\n return this.getField(EntityFields.supportsMembershipField, ValidFlags.EntityExtra);\n }\n\n // Synchronised\n public get synchronised(): boolean {\n return this.getField(EntityFields.synchronisedField);\n }\n\n // #endregion REST Properties\n\n // #region Properties\n\n public get canExecuteRelations(): boolean {\n // only once the entity has an Id ( no Id => local creation before the commit )\n return this.hasField('Id');\n }\n\n // #endregion Properties\n\n // #region Constructor\n\n constructor(entityType?: string) {\n super('v2/Entities');\n if (entityType !== undefined) {\n this.entityType = entityType;\n }\n }\n\n public loadFrom(source: IEntity) {\n this.securityCache = source.securityCache;\n super.loadFrom(source);\n }\n\n public loadFieldsFrom(source: IEntity, fields?: Set): void {\n this.securityCache = source.securityCache;\n super.loadFieldsFrom(source, fields);\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n protected fieldLoaded(): void {\n if (this.hasField('Id')) {\n const id = this.getField('Id');\n if (id.length > 0) {\n this.baseUri = 'v2/Entities/' + id;\n }\n }\n }\n\n /// \n /// Reload the entity\n /// if ( clearRelationOnly == false )\n /// All the entity fields are redownloaded\n /// all the relations are clear and will be redownloaded on the next 'get'\n /// if ( clearRelationOnly == true )\n /// The fields are NOT redownloaded\n /// all the relations are clear and will be redownloaded on the next 'get'\n /// \n /// \n /// \n public async reloadAsync(clearRelationOnly = false) {\n if (this.client == null) { throw new Error('client is null'); }\n\n // Reload the entity with the current loaded fields only\n if (clearRelationOnly === false) {\n const newLoaded = await this.client.getEntityAsync(Entity, this.id, null, null, '*');\n if (!newLoaded) { throw new Error('reloadAsync failed'); }\n this.loadFrom(newLoaded);\n }\n this.clearRelations();\n }\n\n // #endregion Methods\n\n // #region REST Methods\n\n public async getAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Areas', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getCopyConfigDataTemplateAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'CopyConfig', false, ValidFlags.None, transaction);\n }\n\n public async getCustomFieldValuesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomField, 'CustomFieldValues', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n public async getCustomIconAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CustomIcon, 'CustomIcon', true, ValidFlags.None, transaction);\n }\n\n public async getCustomIconsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomIcon, 'CustomIcons', 'Guid', false, false, ValidFlags.None, transaction);\n }\n\n public async getDiagnosticsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Diagnostic, 'Diagnostics', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async enableMaintenanceAsync(endTime: Date, reason: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldDate('endTime', endTime);\n inParam.setField('reason', reason);\n\n return this.executeRequestTransactionAsync('EnableMaintenance', 'PUT', inParam, transaction, responseHandler);\n }\n\n public async getEntityPrivilegesAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('EntityPrivileges', 'GET', null, transaction, responseHandler);\n }\n\n public async deleteFilesCacheAsync(id: IGuid, transaction?: ITransaction | null): Promise {\n await this.updateDataRelation2Async(FileCacheItem, 'FilesCache/' + id, 'DELETE', true, ValidFlags.None, null);\n return new RestResponse(HttpStatusCode.OK);\n }\n\n public async getFilesCacheAsync(id: IGuid, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FileCacheItem, 'FilesCache/' + id, true, ValidFlags.None, transaction);\n }\n\n public async addFilesCacheAsync(id: IGuid, value: IFileCacheItem, transaction?: ITransaction | null): Promise {\n return await this.updateDataRelation2Async(FileCacheItem, 'FilesCache/' + id, 'POST', true, ValidFlags.None, value);\n }\n\n public async getInformationProvidersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('InformationProviders', 'Id', true, query, ValidFlags.InformationProviders, transaction);\n }\n\n public async getLinkedMapsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('LinkedMaps', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getPartitionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Partitions', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getRecursiveParentAreaAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(EntityNode, 'RecursiveParentAreas', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async sendHealthEventsAsync(value: Array, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('SendHealthEvents', 'POST', value, transaction, responseHandler);\n }\n\n public async sendRequestAsync(value: IFieldObject, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body as string;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('SendRequest', 'POST', value, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n // #region Custom Methods\n\n // tslint:disable-next-line: member-ordering\n public securityCache: SecurityCache | undefined;\n\n public async hasPrivilegesAsync(privileges: Set, transaction?: ITransaction): Promise {\n if (!this.securityCache) {\n return false;\n }\n\n const entityId = this.id;\n\n let grantedPrivileges: Set | undefined;\n grantedPrivileges = this.securityCache.tryGet(entityId, privileges);\n if (grantedPrivileges) {\n const hasPrivileges = setEvery(privileges, (item) => {\n if (grantedPrivileges) {\n return grantedPrivileges.has(item);\n }\n return false;\n });\n if (transaction == null) {\n return hasPrivileges;\n } else {\n transaction.addTransactionOperation('entityPrivileges', 'GET', null, (response: IRestResponse) => {\n return new Promise(function (resolve, reject) {\n resolve(hasPrivileges);\n });\n });\n }\n return false;\n }\n\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n const body = response.body as IterableIterator;\n\n grantedPrivileges = SafeGuid.createSet();\n for (const guidString of body) {\n const privilegeGuid = SafeGuid.tryParse(guidString);\n if (privilegeGuid.success) {\n grantedPrivileges.add(privilegeGuid.value);\n }\n }\n if (this.securityCache) {\n this.securityCache.insert(entityId, grantedPrivileges);\n }\n\n const hasPrivileges = setEvery(privileges, (item) => {\n if (grantedPrivileges) {\n return grantedPrivileges.has(item);\n }\n return false;\n });\n return new Promise(function (resolve, reject) {\n resolve(hasPrivileges);\n });\n } else {\n return new Promise(function (resolve, reject) {\n reject(response);\n });\n }\n };\n\n return this.executeRequestTransactionAsync('entityPrivileges', 'GET', null, transaction, responseHandler);\n }\n\n public isOfType(classType: new () => T): this is T {\n return this instanceof classType;\n }\n\n // #endregion Custom Methods\n\n}\n\n","// Autogenerated: v2/help/enumerations/ApiAccessPointType?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class AccessPointType {\n public static None = 'None';\n public static CardReader = 'CardReader';\n public static Rex = 'Rex';\n public static DoorSensor = 'DoorSensor';\n public static AreaDirection = 'AreaDirection';\n public static PullStation = 'PullStation';\n public static DoorLock = 'DoorLock';\n public static Zone = 'Zone';\n public static Floor = 'Floor';\n public static Buzzer = 'Buzzer';\n public static FloorInput = 'FloorInput';\n public static FloorOutput = 'FloorOutput';\n public static EntrySensor = 'EntrySensor';\n public static PlateReader = 'PlateReader';\n public static IntrusionAreaArming = 'IntrusionAreaArming';\n public static IntrusionAreaDirection = 'IntrusionAreaDirection';\n public static LockSensor = 'LockSensor';\n public static OperatorConfirmation = 'OperatorConfirmation';\n\n public static readonly values = [\n AccessPointType.None,\n AccessPointType.CardReader,\n AccessPointType.Rex,\n AccessPointType.DoorSensor,\n AccessPointType.AreaDirection,\n AccessPointType.PullStation,\n AccessPointType.DoorLock,\n AccessPointType.Zone,\n AccessPointType.Floor,\n AccessPointType.Buzzer,\n AccessPointType.FloorInput,\n AccessPointType.FloorOutput,\n AccessPointType.EntrySensor,\n AccessPointType.PlateReader,\n AccessPointType.IntrusionAreaArming,\n AccessPointType.IntrusionAreaDirection,\n AccessPointType.LockSensor,\n AccessPointType.OperatorConfirmation\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiAccessPointRuleType?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class AccessPointRuleType {\n public static Permanent = 'Permanent';\n public static Temporary = 'Temporary';\n\n public static readonly values = [\n AccessPointRuleType.Permanent,\n AccessPointRuleType.Temporary\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiCameraTypes?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class CameraTypes {\n public static None = 'None';\n public static PTZCamera = 'PTZCamera';\n public static VirtualCamera = 'VirtualCamera';\n public static PTZVirtualCamera = 'PTZVirtualCamera';\n public static Sequence = 'Sequence';\n public static GhostCamera = 'GhostCamera';\n public static PanoramicCamera = 'PanoramicCamera';\n public static WearableCamera = 'WearableCamera';\n\n public static readonly values = [\n CameraTypes.None,\n CameraTypes.PTZCamera,\n CameraTypes.VirtualCamera,\n CameraTypes.PTZVirtualCamera,\n CameraTypes.Sequence,\n CameraTypes.GhostCamera,\n CameraTypes.PanoramicCamera,\n CameraTypes.WearableCamera\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiDeviceType?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class DeviceType {\n public static None = 'None';\n public static AlarmPanelInput = 'AlarmPanelInput';\n public static AlarmPanelOutput = 'AlarmPanelOutput';\n public static AnalogMonitor = 'AnalogMonitor';\n public static AudioDecoder = 'AudioDecoder';\n public static AudioEncoder = 'AudioEncoder';\n public static Input = 'Input';\n public static Lpr = 'Lpr';\n public static Output = 'Output';\n public static Reader = 'Reader';\n public static Serial = 'Serial';\n public static VideoEncoder = 'VideoEncoder';\n public static VideoUnitInput = 'VideoUnitInput';\n public static VideoUnitOutput = 'VideoUnitOutput';\n\n public static readonly values = [\n DeviceType.None,\n DeviceType.AlarmPanelInput,\n DeviceType.AlarmPanelOutput,\n DeviceType.AnalogMonitor,\n DeviceType.AudioDecoder,\n DeviceType.AudioEncoder,\n DeviceType.Input,\n DeviceType.Lpr,\n DeviceType.Output,\n DeviceType.Reader,\n DeviceType.Serial,\n DeviceType.VideoEncoder,\n DeviceType.VideoUnitInput,\n DeviceType.VideoUnitOutput\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiScheduleType?codegen=ts&showresources=False on 2020-07-23 3:40:07 PM\n\nexport class ScheduleType {\n public static None = 'None';\n public static Range = 'Range';\n public static RangeAndTwilight = 'RangeAndTwilight';\n\n public static readonly values = [\n ScheduleType.None,\n ScheduleType.Range,\n ScheduleType.RangeAndTwilight\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiStreamType?codegen=ts&showresources=False on 2020-07-23 3:40:07 PM\n\nexport class StreamType {\n public static Unknown = 'Unknown';\n public static Video = 'Video';\n public static Audio = 'Audio';\n public static Serial = 'Serial';\n public static MetaData = 'MetaData';\n public static PrivacyProtection = 'PrivacyProtection';\n\n public static readonly values = [\n StreamType.Unknown,\n StreamType.Video,\n StreamType.Audio,\n StreamType.Serial,\n StreamType.MetaData,\n StreamType.PrivacyProtection\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiAccessControlInterfaceType?codegen=ts&showresources=False on 2022-12-21 2:23:40 PM\n\nexport class AccessControlInterfaceType {\n public static None = 'None';\n public static V100 = 'V100';\n public static V200 = 'V200';\n public static V300 = 'V300';\n public static MR50 = 'MR50';\n public static MR52 = 'MR52';\n public static MR16IN = 'MR16IN';\n public static MR16OUT = 'MR16OUT';\n public static MRDT = 'MRDT';\n public static M52RP = 'M52RP';\n public static M52SRP = 'M52SRP';\n public static M520In = 'M520In';\n public static M516Do = 'M516Do';\n public static M516Dor = 'M516Dor';\n public static M58RP = 'M58RP';\n public static M582K = 'M582K';\n public static MR51e = 'MR51e';\n public static EP1502 = 'EP1502';\n public static EP1501 = 'EP1501';\n public static STidW33 = 'STidW33';\n public static STidUSB = 'STidUSB';\n public static DDSTPL2 = 'DDSTPL2';\n public static DDSTPL4 = 'DDSTPL4';\n public static KeriNXTWithEntraguard = 'KeriNXTWithEntraguard';\n public static KeriNXT = 'KeriNXT';\n public static Sim = 'Sim';\n public static CorbinRusswin = 'CorbinRusswin';\n public static Persona = 'Persona';\n public static Sargent = 'Sargent';\n public static Tyco = 'Tyco';\n public static AAother = 'AAother';\n public static Aperio = 'Aperio';\n public static Sallis = 'Sallis';\n public static A1001 = 'A1001';\n public static Unknown = 'Unknown';\n public static EP1501WithExpansion = 'EP1501WithExpansion';\n public static EP2500 = 'EP2500';\n public static M5IC = 'M5IC';\n public static EP4502 = 'EP4502';\n public static PW6K1IC = 'PW6K1IC';\n public static PW6K1R2 = 'PW6K1R2';\n public static PW6K1IN = 'PW6K1IN';\n public static PW6K1OUT = 'PW6K1OUT';\n public static PIM400 = 'PIM400';\n public static AD400 = 'AD400';\n public static AD300 = 'AD300';\n public static PW5K1R1 = 'PW5K1R1';\n public static PW5K1R2 = 'PW5K1R2';\n public static PW5K1IN = 'PW5K1IN';\n public static PW5K1OUT = 'PW5K1OUT';\n public static MSICS = 'MSICS';\n public static MSACS = 'MSACS';\n public static MSI8S = 'MSI8S';\n public static MSR8S = 'MSR8S';\n public static AutoVu = 'AutoVu';\n public static GatewayNode = 'GatewayNode';\n public static SmartHandle = 'SmartHandle';\n public static PadLock = 'PadLock';\n public static Cylinder = 'Cylinder';\n public static External = 'External';\n public static SmartHandleWithInputs = 'SmartHandleWithInputs';\n public static CylinderWithInputs = 'CylinderWithInputs';\n public static NDEPIM400 = 'NDEPIM400';\n public static NDEAD400 = 'NDEAD400';\n public static OSDP = 'OSDP';\n public static SynergisIX = 'SynergisIX';\n public static A1601 = 'A1601';\n public static LP1501 = 'LP1501';\n public static LP1501WithExpansion = 'LP1501WithExpansion';\n public static LP1502 = 'LP1502';\n public static LP2500 = 'LP2500';\n public static LP4502 = 'LP4502';\n public static MR62e = 'MR62e';\n public static SynergisIX_Controller = 'SynergisIX_Controller';\n public static SynergisIX_InputExpander = 'SynergisIX_InputExpander';\n public static SynergisIX_OutputExpander = 'SynergisIX_OutputExpander';\n public static SynergisIX_ReaderExpander = 'SynergisIX_ReaderExpander';\n public static SynergisIX_AnalogExpander = 'SynergisIX_AnalogExpander';\n public static SynergisIX_Keypad = 'SynergisIX_Keypad';\n public static SynergisIX_Controller_CTRL_DIN = 'SynergisIX_Controller_CTRL_DIN';\n public static SynergisIX_Controller_CTRL_DIN_1D = 'SynergisIX_Controller_CTRL_DIN_1D';\n public static SynergisIX_ReaderExpander_RDM2_DIN = 'SynergisIX_ReaderExpander_RDM2_DIN';\n public static PRO32IC = 'PRO32IC';\n public static PRO32R2 = 'PRO32R2';\n public static PRO32IN = 'PRO32IN';\n public static PRO32OUT = 'PRO32OUT';\n public static PRO22R1 = 'PRO22R1';\n public static SchlageIP = 'SchlageIP';\n public static WiQGateway = 'WiQGateway';\n public static WiQLock = 'WiQLock';\n public static PW7K1IC = 'PW7K1IC';\n public static PRO42IC = 'PRO42IC';\n public static PW7K1R1 = 'PW7K1R1';\n public static PW7K1R2 = 'PW7K1R2';\n public static PW7K1IN = 'PW7K1IN';\n public static PW7K1OUT = 'PW7K1OUT';\n public static PRO42R1 = 'PRO42R1';\n public static PRO42R2 = 'PRO42R2';\n public static PRO42IN = 'PRO42IN';\n public static PRO42OUT = 'PRO42OUT';\n\n public static readonly values = [\n AccessControlInterfaceType.None,\n AccessControlInterfaceType.V100,\n AccessControlInterfaceType.V200,\n AccessControlInterfaceType.V300,\n AccessControlInterfaceType.MR50,\n AccessControlInterfaceType.MR52,\n AccessControlInterfaceType.MR16IN,\n AccessControlInterfaceType.MR16OUT,\n AccessControlInterfaceType.MRDT,\n AccessControlInterfaceType.M52RP,\n AccessControlInterfaceType.M52SRP,\n AccessControlInterfaceType.M520In,\n AccessControlInterfaceType.M516Do,\n AccessControlInterfaceType.M516Dor,\n AccessControlInterfaceType.M58RP,\n AccessControlInterfaceType.M582K,\n AccessControlInterfaceType.MR51e,\n AccessControlInterfaceType.EP1502,\n AccessControlInterfaceType.EP1501,\n AccessControlInterfaceType.STidW33,\n AccessControlInterfaceType.STidUSB,\n AccessControlInterfaceType.DDSTPL2,\n AccessControlInterfaceType.DDSTPL4,\n AccessControlInterfaceType.KeriNXTWithEntraguard,\n AccessControlInterfaceType.KeriNXT,\n AccessControlInterfaceType.Sim,\n AccessControlInterfaceType.CorbinRusswin,\n AccessControlInterfaceType.Persona,\n AccessControlInterfaceType.Sargent,\n AccessControlInterfaceType.Tyco,\n AccessControlInterfaceType.AAother,\n AccessControlInterfaceType.Aperio,\n AccessControlInterfaceType.Sallis,\n AccessControlInterfaceType.A1001,\n AccessControlInterfaceType.Unknown,\n AccessControlInterfaceType.EP1501WithExpansion,\n AccessControlInterfaceType.EP2500,\n AccessControlInterfaceType.M5IC,\n AccessControlInterfaceType.EP4502,\n AccessControlInterfaceType.PW6K1IC,\n AccessControlInterfaceType.PW6K1R2,\n AccessControlInterfaceType.PW6K1IN,\n AccessControlInterfaceType.PW6K1OUT,\n AccessControlInterfaceType.PIM400,\n AccessControlInterfaceType.AD400,\n AccessControlInterfaceType.AD300,\n AccessControlInterfaceType.PW5K1R1,\n AccessControlInterfaceType.PW5K1R2,\n AccessControlInterfaceType.PW5K1IN,\n AccessControlInterfaceType.PW5K1OUT,\n AccessControlInterfaceType.MSICS,\n AccessControlInterfaceType.MSACS,\n AccessControlInterfaceType.MSI8S,\n AccessControlInterfaceType.MSR8S,\n AccessControlInterfaceType.AutoVu,\n AccessControlInterfaceType.GatewayNode,\n AccessControlInterfaceType.SmartHandle,\n AccessControlInterfaceType.PadLock,\n AccessControlInterfaceType.Cylinder,\n AccessControlInterfaceType.External,\n AccessControlInterfaceType.SmartHandleWithInputs,\n AccessControlInterfaceType.CylinderWithInputs,\n AccessControlInterfaceType.NDEPIM400,\n AccessControlInterfaceType.NDEAD400,\n AccessControlInterfaceType.OSDP,\n AccessControlInterfaceType.SynergisIX,\n AccessControlInterfaceType.A1601,\n AccessControlInterfaceType.LP1501,\n AccessControlInterfaceType.LP1501WithExpansion,\n AccessControlInterfaceType.LP1502,\n AccessControlInterfaceType.LP2500,\n AccessControlInterfaceType.LP4502,\n AccessControlInterfaceType.MR62e,\n AccessControlInterfaceType.SynergisIX_Controller,\n AccessControlInterfaceType.SynergisIX_InputExpander,\n AccessControlInterfaceType.SynergisIX_OutputExpander,\n AccessControlInterfaceType.SynergisIX_ReaderExpander,\n AccessControlInterfaceType.SynergisIX_AnalogExpander,\n AccessControlInterfaceType.SynergisIX_Keypad,\n AccessControlInterfaceType.SynergisIX_Controller_CTRL_DIN,\n AccessControlInterfaceType.SynergisIX_Controller_CTRL_DIN_1D,\n AccessControlInterfaceType.SynergisIX_ReaderExpander_RDM2_DIN,\n AccessControlInterfaceType.PRO32IC,\n AccessControlInterfaceType.PRO32R2,\n AccessControlInterfaceType.PRO32IN,\n AccessControlInterfaceType.PRO32OUT,\n AccessControlInterfaceType.PRO22R1,\n AccessControlInterfaceType.SchlageIP,\n AccessControlInterfaceType.WiQGateway,\n AccessControlInterfaceType.WiQLock,\n AccessControlInterfaceType.PW7K1IC,\n AccessControlInterfaceType.PRO42IC,\n AccessControlInterfaceType.PW7K1R1,\n AccessControlInterfaceType.PW7K1R2,\n AccessControlInterfaceType.PW7K1IN,\n AccessControlInterfaceType.PW7K1OUT,\n AccessControlInterfaceType.PRO42R1,\n AccessControlInterfaceType.PRO42R2,\n AccessControlInterfaceType.PRO42IN,\n AccessControlInterfaceType.PRO42OUT\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiZoneType?codegen=ts&showresources=False on 2020-07-23 3:40:08 PM\n\nexport class ZoneType {\n public static Hardware = 'Hardware';\n public static Software = 'Software';\n public static IO = 'IO';\n\n public static readonly values = [\n ZoneType.Hardware,\n ZoneType.Software,\n ZoneType.IO\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiServerType?codegen=ts&showresources=False on 2020-07-23 3:40:07 PM\n\nexport class ServerType {\n public static Extension = 'Extension';\n public static Main = 'Main';\n\n public static readonly values = [\n ServerType.Extension,\n ServerType.Main\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiLprUnitType?codegen=ts&showresources=False on 2020-07-23 3:40:06 PM\n\nexport class LprUnitType {\n public static None = 'None';\n public static Mobile = 'Mobile';\n public static Fixed = 'Fixed';\n\n public static readonly values = [\n LprUnitType.None,\n LprUnitType.Mobile,\n LprUnitType.Fixed\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiEntityTypes?codegen=ts&showresources=False on 2022-07-05 4:50:08 PM\nimport { AccessPointType } from \"./AccessPointType\";\nimport { AccessPointRuleType } from \"./AccessPointRuleType\";\nimport { CameraTypes } from \"./CameraType\";\nimport { DeviceType } from \"./DeviceType\";\nimport { ScheduleType } from \"./ScheduleType\";\nimport { StreamType } from \"./StreamType\";\nimport { AccessControlInterfaceType } from \"./AccessControlInterfaceType\";\nimport { ZoneType } from \"./ZoneType\";\nimport { ServerType } from \"./ServerType\";\nimport { LprUnitType } from \"./LprUnitType\";\nimport { ApplicationType } from \"./ApplicationType\";\n\nexport class EntityTypes {\n public static None = 'None';\n public static AccessPoints = 'AccessPoints';\n public static AccessRules = 'AccessRules';\n public static Alarms = 'Alarms';\n public static Applications = 'Applications';\n public static Areas = 'Areas';\n public static Cameras = 'Cameras';\n public static Cardholders = 'Cardholders';\n public static CardholderGroups = 'CardholderGroups';\n public static Credentials = 'Credentials';\n public static Devices = 'Devices';\n public static Doors = 'Doors';\n public static Elevators = 'Elevators';\n public static Roles = 'Roles';\n public static OutputBehaviors = 'OutputBehaviors';\n public static Partitions = 'Partitions';\n public static SystemConfigurations = 'SystemConfigurations';\n public static Schedules = 'Schedules';\n public static Units = 'Units';\n public static Users = 'Users';\n public static UserGroups = 'UserGroups';\n public static Visitors = 'Visitors';\n public static Zones = 'Zones';\n public static Macros = 'Macros';\n public static CashRegisters = 'CashRegisters';\n public static LprUnits = 'LprUnits';\n public static Patrollers = 'Patrollers';\n public static Permits = 'Permits';\n public static Hotlists = 'Hotlists';\n public static OvertimeRules = 'OvertimeRules';\n public static PermitRules = 'PermitRules';\n public static SharedPermitRules = 'SharedPermitRules';\n public static UserTasks = 'UserTasks';\n public static IntrusionAreas = 'IntrusionAreas';\n public static IntrusionUnits = 'IntrusionUnits';\n public static Servers = 'Servers';\n public static Assets = 'Assets';\n public static VideoUnits = 'VideoUnits';\n public static Files = 'Files';\n public static Monitors = 'Monitors';\n public static ThreatLevels = 'ThreatLevels';\n public static Streams = 'Streams';\n public static Networks = 'Networks';\n public static Agents = 'Agents';\n public static Routes = 'Routes';\n public static Badges = 'Badges';\n public static Sequences = 'Sequences';\n public static TilePlugins = 'TilePlugins';\n public static MlpiRules = 'MlpiRules';\n public static ScheduledTasks = 'ScheduledTasks';\n public static AnalogMonitors = 'AnalogMonitors';\n public static AnalogMonitorGroups = 'AnalogMonitorGroups';\n public static InterfaceModules = 'InterfaceModules';\n public static TransferGroups = 'TransferGroups';\n public static CustomEntities = 'CustomEntities';\n public static Maps = 'Maps';\n public static Keyboards = 'Keyboards';\n public static ArchivedStreams = 'ArchivedStreams';\n public static HardwareUnits = 'HardwareUnits';\n public static ParkingZones = 'ParkingZones';\n public static ParkingRules = 'ParkingRules';\n public static FusionStreams = 'FusionStreams';\n public static TileLayouts = 'TileLayouts';\n public static DoorTemplates = 'DoorTemplates';\n public static InterfaceModuleDeviceDefinitions = 'InterfaceModuleDeviceDefinitions';\n public static Contact = 'Contact';\n public static Workstation = 'Workstation';\n public static Endpoint = 'Endpoint';\n\n public static readonly values = [\n EntityTypes.None,\n EntityTypes.AccessPoints,\n EntityTypes.AccessRules,\n EntityTypes.Alarms,\n EntityTypes.Applications,\n EntityTypes.Areas,\n EntityTypes.Cameras,\n EntityTypes.Cardholders,\n EntityTypes.CardholderGroups,\n EntityTypes.Credentials,\n EntityTypes.Devices,\n EntityTypes.Doors,\n EntityTypes.Elevators,\n EntityTypes.Roles,\n EntityTypes.OutputBehaviors,\n EntityTypes.Partitions,\n EntityTypes.SystemConfigurations,\n EntityTypes.Schedules,\n EntityTypes.Units,\n EntityTypes.Users,\n EntityTypes.UserGroups,\n EntityTypes.Visitors,\n EntityTypes.Zones,\n EntityTypes.Macros,\n EntityTypes.CashRegisters,\n EntityTypes.LprUnits,\n EntityTypes.Patrollers,\n EntityTypes.Permits,\n EntityTypes.Hotlists,\n EntityTypes.OvertimeRules,\n EntityTypes.PermitRules,\n EntityTypes.SharedPermitRules,\n EntityTypes.UserTasks,\n EntityTypes.IntrusionAreas,\n EntityTypes.IntrusionUnits,\n EntityTypes.Servers,\n EntityTypes.Assets,\n EntityTypes.VideoUnits,\n EntityTypes.Files,\n EntityTypes.Monitors,\n EntityTypes.ThreatLevels,\n EntityTypes.Streams,\n EntityTypes.Networks,\n EntityTypes.Agents,\n EntityTypes.Routes,\n EntityTypes.Badges,\n EntityTypes.Sequences,\n EntityTypes.TilePlugins,\n EntityTypes.MlpiRules,\n EntityTypes.ScheduledTasks,\n EntityTypes.AnalogMonitors,\n EntityTypes.AnalogMonitorGroups,\n EntityTypes.InterfaceModules,\n EntityTypes.TransferGroups,\n EntityTypes.CustomEntities,\n EntityTypes.Maps,\n EntityTypes.Keyboards,\n EntityTypes.ArchivedStreams,\n EntityTypes.HardwareUnits,\n EntityTypes.ParkingZones,\n EntityTypes.ParkingRules,\n EntityTypes.FusionStreams,\n EntityTypes.TileLayouts,\n EntityTypes.DoorTemplates,\n EntityTypes.InterfaceModuleDeviceDefinitions,\n EntityTypes.Contact,\n EntityTypes.Workstation,\n EntityTypes.Endpoint\n ];\n\n public static getSubTypes(entityType: string): Array {\n switch (entityType) {\n case EntityTypes.AccessPoints: {\n return AccessPointType.values;\n }\n case EntityTypes.AccessRules: {\n return AccessPointRuleType.values;\n }\n case EntityTypes.Applications: {\n return ApplicationType.values;\n }\n case EntityTypes.Cameras: {\n return CameraTypes.values;\n }\n case EntityTypes.Devices: {\n return DeviceType.values;\n }\n case EntityTypes.Schedules: {\n return ScheduleType.values;\n }\n case EntityTypes.Zones: {\n return ZoneType.values;\n }\n case EntityTypes.LprUnits: {\n return LprUnitType.values;\n }\n case EntityTypes.Servers: {\n return ServerType.values;\n }\n case EntityTypes.Streams: {\n return StreamType.values;\n }\n case EntityTypes.InterfaceModules: {\n return AccessControlInterfaceType.values;\n }\n }\n return new Array();\n }\n}\n","// Autogenerated: v2/help/Entities/ApiAlarm?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class AlarmEntityFields extends EntityFields {\n public static alarmRecordingTimeField = 'AlarmRecordingTime';\n public static alarmVideoModeField = 'AlarmVideoMode';\n public static audioFileField = 'AudioFile';\n public static autoAckAfterField = 'AutoAckAfter';\n public static canBeInvestigatedField = 'CanBeInvestigated';\n public static colorField = 'Color';\n public static createIncidentField = 'CreateIncident';\n public static distributionModeField = 'DistributionMode';\n public static dwellTimeField = 'DwellTime';\n public static enableProcedureField = 'EnableProcedure';\n public static playbackPreTriggerTimeField = 'PlaybackPreTriggerTime';\n public static previewDefaultPositionField = 'PreviewDefaultPosition';\n public static previewSourceVideoModeField = 'PreviewSourceVideoMode';\n public static priorityField = 'Priority';\n public static procedureField = 'Procedure';\n public static protectVideoPeriodField = 'ProtectVideoPeriod';\n public static rearmThresholdField = 'RearmThreshold';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ITriggerInfo extends IFieldObject {\n sourceEntity: IGuid | null;\n latitude: number | null;\n longitude: number | null;\n attachedEntities: ObservableCollection;\n context: string;\n forwardedRecipients: ObservableCollection;\n priority: number | null;\n urls: ObservableCollection;\n}\n\nexport interface IRecipient extends IFieldObject {\n id: IGuid;\n propagationLevel: number;\n}\n\n// #endregion Inner classes\n\nexport interface IAlarmEntity extends IEntity {\n // #region REST Properties\n\n alarmRecordingTime: number;\n\n alarmVideoMode: string;\n\n audioFile: IGuid;\n\n autoAckAfter: number;\n\n canBeInvestigated: boolean;\n\n color: string;\n\n createIncident: boolean;\n\n distributionMode: string;\n\n dwellTime: number;\n\n enableProcedure: boolean;\n\n playbackPreTriggerTime: number;\n\n previewDefaultPosition: string;\n\n previewSourceVideoMode: string;\n\n priority: number;\n\n procedure: string;\n\n protectVideoPeriod: number;\n\n rearmThreshold: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAttachedEntitiesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n forceAckAsync(transaction?: ITransaction): Promise;\n getRecipientsAsync(transaction?: ITransaction | null): Promise | null>;\n getSchedulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n triggerAsync(value: ITriggerInfo | null, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAlarm?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:20 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { Entity } from './Entity';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { ITriggerInfo, IRecipient, IAlarmEntity, AlarmEntityFields } from '../Interface/IAlarmEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class TriggerInfo extends FieldObject implements ITriggerInfo {\n // SourceEntity\n public get sourceEntity(): IGuid | null {\n return this.getNullableFieldGuid('SourceEntity');\n }\n public set sourceEntity(value: IGuid | null) {\n this.setNullableFieldGuid('SourceEntity', value);\n }\n // Latitude\n public get latitude(): number | null {\n return this.getNullableField('Latitude');\n }\n public set latitude(value: number | null) {\n this.setNullableField('Latitude', value);\n }\n // Longitude\n public get longitude(): number | null {\n return this.getNullableField('Longitude');\n }\n public set longitude(value: number | null) {\n this.setNullableField('Longitude', value);\n }\n // AttachedEntities\n public get attachedEntities(): ObservableCollection {\n return this.getFieldArrayGuid('AttachedEntities');\n }\n public set attachedEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('AttachedEntities', value);\n }\n // Context\n public get context(): string {\n return this.getField('Context');\n }\n public set context(value: string) {\n this.setField('Context', value);\n }\n // ForwardedRecipients\n public get forwardedRecipients(): ObservableCollection {\n return this.getFieldArrayGuid('ForwardedRecipients');\n }\n public set forwardedRecipients(value: ObservableCollection) {\n this.setFieldArrayGuid('ForwardedRecipients', value);\n }\n // Priority\n public get priority(): number | null {\n return this.getNullableField('Priority');\n }\n public set priority(value: number | null) {\n this.setNullableField('Priority', value);\n }\n // Urls\n public get urls(): ObservableCollection {\n return this.getFieldArray('Urls');\n }\n public set urls(value: ObservableCollection) {\n this.setFieldArray('Urls', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('SourceEntity', SafeGuid.EMPTY);\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setFieldArrayGuid('AttachedEntities', new ObservableCollection());\n this.setField('Context', '');\n this.setFieldArrayGuid('ForwardedRecipients', new ObservableCollection());\n this.setField('Priority', 0);\n this.setFieldArray('Urls', new ObservableCollection());\n }\n}\n\nexport class Recipient extends FieldObject implements IRecipient {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // PropagationLevel\n public get propagationLevel(): number {\n return this.getField('PropagationLevel');\n }\n public set propagationLevel(value: number) {\n this.setField('PropagationLevel', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('PropagationLevel', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class AlarmEntity extends Entity implements IAlarmEntity {\n // #region REST Properties\n\n // AlarmRecordingTime\n public get alarmRecordingTime(): number {\n return this.getField(AlarmEntityFields.alarmRecordingTimeField, ValidFlags.Specific);\n }\n public set alarmRecordingTime(value: number) {\n this.setField(AlarmEntityFields.alarmRecordingTimeField, value);\n }\n\n // AlarmVideoMode\n public get alarmVideoMode(): string {\n return this.getField(AlarmEntityFields.alarmVideoModeField, ValidFlags.Specific);\n }\n public set alarmVideoMode(value: string) {\n this.setField(AlarmEntityFields.alarmVideoModeField, value);\n }\n\n // AudioFile\n public get audioFile(): IGuid {\n return this.getFieldGuid(AlarmEntityFields.audioFileField, ValidFlags.Specific);\n }\n public set audioFile(value: IGuid) {\n this.setFieldGuid(AlarmEntityFields.audioFileField, value);\n }\n\n // AutoAckAfter\n public get autoAckAfter(): number {\n return this.getField(AlarmEntityFields.autoAckAfterField, ValidFlags.Specific);\n }\n public set autoAckAfter(value: number) {\n this.setField(AlarmEntityFields.autoAckAfterField, value);\n }\n\n // CanBeInvestigated\n public get canBeInvestigated(): boolean {\n return this.getField(AlarmEntityFields.canBeInvestigatedField, ValidFlags.Specific);\n }\n public set canBeInvestigated(value: boolean) {\n this.setField(AlarmEntityFields.canBeInvestigatedField, value);\n }\n\n // Color\n public get color(): string {\n return this.getField(AlarmEntityFields.colorField, ValidFlags.Specific);\n }\n public set color(value: string) {\n this.setField(AlarmEntityFields.colorField, value);\n }\n\n // CreateIncident\n public get createIncident(): boolean {\n return this.getField(AlarmEntityFields.createIncidentField, ValidFlags.Specific);\n }\n public set createIncident(value: boolean) {\n this.setField(AlarmEntityFields.createIncidentField, value);\n }\n\n // DistributionMode\n public get distributionMode(): string {\n return this.getField(AlarmEntityFields.distributionModeField, ValidFlags.Specific);\n }\n public set distributionMode(value: string) {\n this.setField(AlarmEntityFields.distributionModeField, value);\n }\n\n // DwellTime\n public get dwellTime(): number {\n return this.getField(AlarmEntityFields.dwellTimeField, ValidFlags.Specific);\n }\n public set dwellTime(value: number) {\n this.setField(AlarmEntityFields.dwellTimeField, value);\n }\n\n // EnableProcedure\n public get enableProcedure(): boolean {\n return this.getField(AlarmEntityFields.enableProcedureField, ValidFlags.Specific);\n }\n public set enableProcedure(value: boolean) {\n this.setField(AlarmEntityFields.enableProcedureField, value);\n }\n\n // PlaybackPreTriggerTime\n public get playbackPreTriggerTime(): number {\n return this.getField(AlarmEntityFields.playbackPreTriggerTimeField, ValidFlags.Specific);\n }\n public set playbackPreTriggerTime(value: number) {\n this.setField(AlarmEntityFields.playbackPreTriggerTimeField, value);\n }\n\n // PreviewDefaultPosition\n public get previewDefaultPosition(): string {\n return this.getField(AlarmEntityFields.previewDefaultPositionField, ValidFlags.Specific);\n }\n public set previewDefaultPosition(value: string) {\n this.setField(AlarmEntityFields.previewDefaultPositionField, value);\n }\n\n // PreviewSourceVideoMode\n public get previewSourceVideoMode(): string {\n return this.getField(AlarmEntityFields.previewSourceVideoModeField, ValidFlags.Specific);\n }\n public set previewSourceVideoMode(value: string) {\n this.setField(AlarmEntityFields.previewSourceVideoModeField, value);\n }\n\n // Priority\n public get priority(): number {\n return this.getField(AlarmEntityFields.priorityField, ValidFlags.Specific);\n }\n public set priority(value: number) {\n this.setField(AlarmEntityFields.priorityField, value);\n }\n\n // Procedure\n public get procedure(): string {\n return this.getField(AlarmEntityFields.procedureField, ValidFlags.Specific);\n }\n public set procedure(value: string) {\n this.setField(AlarmEntityFields.procedureField, value);\n }\n\n // ProtectVideoPeriod\n public get protectVideoPeriod(): number {\n return this.getField(AlarmEntityFields.protectVideoPeriodField, ValidFlags.Specific);\n }\n public set protectVideoPeriod(value: number) {\n this.setField(AlarmEntityFields.protectVideoPeriodField, value);\n }\n\n // RearmThreshold\n public get rearmThreshold(): number {\n return this.getField(AlarmEntityFields.rearmThresholdField, ValidFlags.Specific);\n }\n public set rearmThreshold(value: number) {\n this.setField(AlarmEntityFields.rearmThresholdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Alarms);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAttachedEntitiesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AttachedEntities', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async forceAckAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('ForceAck', 'POST', null, transaction, responseHandler);\n }\n\n public async getRecipientsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Recipient, 'Recipients', 'Id', false, true, ValidFlags.Membership, transaction);\n }\n\n public async getSchedulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Schedules', 'Id', false, query, ValidFlags.Membership2, transaction);\n }\n\n public async triggerAsync(value: ITriggerInfo | null, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['Id'] as number;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n if ( value == null ) {\n value = new TriggerInfo();\n }\n\n return this.executeRequestTransactionAsync('Trigger', 'POST', value, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","import { RestResponse } from './RestResponse';\nimport HttpStatusCode from '../Client/Enumerations/HttpStatusCode';\nimport { ITransactionResult, IRestTransactionResponse } from '../Client/Interface/IRestTransactionResponse';\n\nexport class TransactionResult implements ITransactionResult {\n public index = 0;\n public context: any;\n public verb = '';\n public uri = '';\n public statusCode = HttpStatusCode.INTERNAL_SERVER_ERROR;\n public result: { [k: string]: any } | null = null;\n}\n\nexport class RestTransactionResponse extends RestResponse implements IRestTransactionResponse {\n public transactionResult = new Array();\n\n constructor(code?: number) {\n super(code);\n }\n\n public parseResponse(response: RestResponse) {\n this._statusCode = response.statusCode;\n if (this.statusCode === HttpStatusCode.OK && response.body) {\n let i = 0;\n for (const result of response.body) {\n // the result comes in the same order as they were requested\n this.transactionResult[i].statusCode = result.StatusCode;\n this.transactionResult[i].result = result.Result;\n ++i;\n }\n } else {\n this._body = response.body;\n }\n }\n}\n","import { RestConnection } from './RestConnection';\nimport { RestTransactionResponse, TransactionResult } from './RestTransactionResponse';\nimport * as Helpers from '../Helpers/Helpers';\nimport { RestOperation } from '../Helpers/RestOperation';\nimport { FieldObject } from '../Helpers/FieldObject';\nimport HttpStatusCode from '../Client/Enumerations/HttpStatusCode';\n\nexport class RestTransaction {\n //#region Fields\n\n private _rest: RestConnection;\n private _transaction = new Set();\n private _response = new RestTransactionResponse();\n\n //#endregion\n\n //#region Properties\n\n public get count(): number {\n return this._transaction.size;\n }\n\n //#endregion\n\n //#region constructor\n\n constructor(conn: RestConnection) {\n this._rest = conn;\n }\n\n //#endregion\n\n //#region methods\n\n public addTransactionOperation(uri: string, verb: string, body: object | null, context?: object) {\n const operation = new RestOperation();\n operation.verb = verb;\n operation.uri = this._rest.restServerUrl + '/' + uri;\n\n if (verb != null && body == null && verb.toLowerCase() !== 'get') {\n operation.body = new FieldObject();\n } else {\n operation.body = body;\n }\n this._transaction.add(operation);\n\n const result = new TransactionResult();\n result.index = this._transaction.size;\n result.context = context;\n result.verb = verb;\n result.uri = uri;\n this._response.transactionResult.push(result);\n\n return this._transaction.size;\n }\n\n public async executeTransactionAsync(token?: Helpers.CancellationToken): Promise {\n if (this._transaction.size === 0) {\n return new RestTransactionResponse(HttpStatusCode.OK);\n }\n\n if (this._transaction.size === 1) {\n // Detransaction the transaction!\n const zeSingleTransaction = this._transaction.keys().next().value;\n let uri = zeSingleTransaction.uri;\n uri = uri.replace(this._rest.restServerUrl + '/', '');\n let body: string | null = null;\n if (zeSingleTransaction.body != null) {\n if ( zeSingleTransaction.body instanceof FieldObject) {\n body = zeSingleTransaction.body.toString();\n } else {\n body = JSON.stringify(zeSingleTransaction.body);\n }\n }\n const restResponse = await this._rest.executeRequestAsync(zeSingleTransaction.verb, uri, body, token);\n\n this._response.statusCode = restResponse.statusCode;\n if (this._response.statusCode === HttpStatusCode.CREATED) {\n this._response.statusCode = HttpStatusCode.OK;\n }\n const firstTransResult = this._response.transactionResult[0];\n firstTransResult.statusCode = restResponse.statusCode;\n if (restResponse.body) {\n firstTransResult.result = restResponse.body;\n }\n } else {\n const body = new Array();\n for (const item of this._transaction) {\n const subBody: { [k: string]: any } = {};\n subBody.uri = item.uri;\n subBody.verb = item.verb;\n if (item.body) {\n subBody.body = item.body.toString();\n }\n body.push(subBody);\n }\n const restResponse = await this._rest.executeRequestAsync(\n 'POST',\n 'v2/Entities/Transactions',\n JSON.stringify(body),\n token,\n );\n this._response.parseResponse(restResponse);\n }\n return this._response;\n }\n\n //#region\n}\n","// Autogenerated: v2/help/Entities/ApiSystemConfiguration?codegen=ts&InterfaceOnly=True&workflow=False on 2022-07-06 9:10:36 AM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ICustomEntityTypeDescriptor } from './ICustomEntityManager';\n\n// #region Fields\n\nexport class SystemConfigurationEntityFields extends EntityFields {\n public static enhancedPtzOnAllNewUnitField = 'EnhancedPtzOnAllNewUnit';\n public static isFirstRunField = 'IsFirstRun';\n public static maxImageFileSizeInKBField = 'MaxImageFileSizeInKB';\n public static passwordExpiryNotificationPeriodField = 'PasswordExpiryNotificationPeriod';\n public static passwordMinCharacterField = 'PasswordMinCharacter';\n public static passwordMinLowerCharacterField = 'PasswordMinLowerCharacter';\n public static passwordMinNumericalCharacterField = 'PasswordMinNumericalCharacter';\n public static passwordMinSpecialCharacterField = 'PasswordMinSpecialCharacter';\n public static passwordMinUpperCharacterField = 'PasswordMinUpperCharacter';\n public static securityLevelField = 'SecurityLevel';\n public static threatLevelField = 'ThreatLevel';\n public static totalActiveThreatLevelCountField = 'TotalActiveThreatLevelCount';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IActivityTrailParameter extends IFieldObject {\n value: string;\n keepCurrentFormat: boolean;\n}\n\nexport interface INewActivityTrail extends IFieldObject {\n templateId: number;\n activityType: IGuid;\n initiator: IGuid;\n impactedEntity: IGuid;\n machineName: string;\n appType: string;\n parameters: ObservableCollection;\n appVersion: string;\n}\n\nexport interface IMapServer extends IFieldObject {\n name: string;\n serverUrl: string;\n username: string;\n uniqueId: IGuid;\n password: string;\n useAuthentication: boolean;\n}\n\nexport interface IMapProvider extends IFieldObject {\n name: string;\n type: IGuid;\n licenseKey: string;\n supportLicense: boolean;\n invertCoordinates: boolean;\n isCustom: boolean;\n isDefault: boolean;\n maxZoom: number;\n projection: string;\n providerId: IGuid;\n urlAddress: string;\n urlFormat: string;\n useAuthentication: boolean;\n username: string;\n password: string;\n mapServers: ObservableCollection;\n mappingType: string;\n}\n\nexport interface ILicenseUsage extends IFieldObject {\n id: string;\n description: string;\n type: string;\n value: string;\n current: number;\n max: number;\n active: boolean;\n}\n\nexport interface IEventMetadata extends IFieldObject {\n color: string;\n eventType: string;\n eventSubType: number;\n}\n\nexport interface ICustomFieldConfig extends IFieldObject {\n entityType: string;\n name: string;\n defaultValue: string;\n groupName: string;\n groupPriority: number;\n id: IGuid;\n mandatory: boolean;\n unique: boolean;\n showInReports: boolean;\n valueType: string;\n owner: IGuid;\n isReadOnly: boolean;\n customDataTypes: number;\n}\n\nexport interface ICustomEvent extends IFieldObject {\n id: number;\n name: string;\n role: IGuid;\n roleSubType: IGuid;\n supportedEntityType: string;\n}\n\nexport interface ICustomFieldTypeDescriptor extends IFieldObject {\n id: number | null;\n name: string;\n description: string;\n dataType: string;\n values: ObservableCollection;\n}\n\nexport interface IActivityTrailConfig extends IFieldObject {\n id: IGuid;\n enabled: boolean;\n descriptionId: number;\n description: string;\n}\n\n// #endregion Inner classes\n\nexport interface ISystemConfigurationEntity extends IEntity {\n // #region REST Properties\n\n enhancedPtzOnAllNewUnit: boolean;\n\n isFirstRun: boolean;\n\n maxImageFileSizeInKB: number;\n\n passwordExpiryNotificationPeriod: number;\n\n passwordMinCharacter: number;\n\n passwordMinLowerCharacter: number;\n\n passwordMinNumericalCharacter: number;\n\n passwordMinSpecialCharacter: number;\n\n passwordMinUpperCharacter: number;\n\n securityLevel: number;\n\n threatLevel: IGuid;\n\n readonly totalActiveThreatLevelCount: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getActivityTrailsAsync(transaction?: ITransaction | null): Promise | null>;\n getCustomDataTypesAsync(transaction?: ITransaction | null): Promise | null>;\n getCustomEntityTypeDescriptorsAsync(transaction?: ITransaction | null): Promise | null>;\n getCustomEventsAsync(transaction?: ITransaction | null): Promise | null>;\n getCustomFieldConfigAsync(transaction?: ITransaction | null): Promise | null>;\n getDefaultSystemMapAsync(transaction?: ITransaction|null): Promise;\n getEventsMetadataAsync(transaction?: ITransaction | null): Promise | null>;\n frozenSessionTestAsync(transaction?: ITransaction): Promise;\n isPrivilegeLicenseSupportedAsync(id: IGuid, transaction?: ITransaction): Promise;\n getLicenseDetailsAsync(transaction?: ITransaction | null): Promise;\n getLicenseUsageAsync(transaction?: ITransaction | null): Promise | null>;\n getLprAcceptReasonsAsync(transaction?: ITransaction): Promise | null>;\n getLprAnnotationFieldsDefinitionsAsync(transaction?: ITransaction): Promise | null>;\n getLprHotlistRejectReasonsAsync(transaction?: ITransaction): Promise | null>;\n getLprOvertimetRejectReasonsAsync(transaction?: ITransaction): Promise | null>;\n getLprPermitRejectReasonsAsync(transaction?: ITransaction): Promise | null>;\n getMapProvidersAsync(transaction?: ITransaction | null): Promise | null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRootPartitionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n sendActivityTrailsAsync(value: INewActivityTrail, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","import { RestObject } from '../Model/RestObject';\nimport { IEntityManager } from '../Interface/IEntityManager';\n\nexport class EntityManager extends RestObject implements IEntityManager {\n // #region Constructor\n\n constructor(uri: string) {\n super(uri);\n } // #endregion Constructor\n}\n","// Autogenerated: v2/help/Entities/ApiCustomEntity?codegen=ts&InterfaceOnly=False&workflow=True on 2021-08-30 10:12:19 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EntityManager } from './EntityManager';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IFieldObject } from '../Interface/IFieldObject';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ICustomEntitiesManager, ICustomEntityTypeAccessPrivilege, ICustomEntityTypeDescriptor } from '../Interface/ICustomEntityManager';\n\n// #region Inner classes\n\nexport class CustomEntityTypeAccessPrivilege extends FieldObject implements ICustomEntityTypeAccessPrivilege {\n // Add\n public get add(): IGuid {\n return this.getFieldGuid('Add');\n }\n public set add(value: IGuid) {\n this.setFieldGuid('Add', value);\n }\n // Delete\n public get delete(): IGuid {\n return this.getFieldGuid('Delete');\n }\n public set delete(value: IGuid) {\n this.setFieldGuid('Delete', value);\n }\n // Modify\n public get modify(): IGuid {\n return this.getFieldGuid('Modify');\n }\n public set modify(value: IGuid) {\n this.setFieldGuid('Modify', value);\n }\n // View\n public get view(): IGuid {\n return this.getFieldGuid('View');\n }\n public set view(value: IGuid) {\n this.setFieldGuid('View', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Add', SafeGuid.EMPTY);\n this.setFieldGuid('Delete', SafeGuid.EMPTY);\n this.setFieldGuid('Modify', SafeGuid.EMPTY);\n this.setFieldGuid('View', SafeGuid.EMPTY);\n }\n}\n\nexport class CustomEntityTypeDescriptor extends FieldObject implements ICustomEntityTypeDescriptor {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Icon\n public get icon(): IGuid {\n return this.getFieldGuid('Icon');\n }\n public set icon(value: IGuid) {\n this.setFieldGuid('Icon', value);\n }\n // SmallIcon\n public get smallIcon(): IGuid {\n return this.getFieldGuid('SmallIcon');\n }\n public set smallIcon(value: IGuid) {\n this.setFieldGuid('SmallIcon', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Version\n public get version(): string {\n return this.getField('Version');\n }\n public set version(value: string) {\n this.setField('Version', value);\n }\n // SupportedEvents\n public get supportedEvents(): ObservableCollection {\n return this.getFieldArray('SupportedEvents');\n }\n public set supportedEvents(value: ObservableCollection) {\n this.setFieldArray('SupportedEvents', value);\n }\n // SupportedCustomEvents\n public get supportedCustomEvents(): ObservableCollection {\n return this.getFieldArray('SupportedCustomEvents');\n }\n public set supportedCustomEvents(value: ObservableCollection) {\n this.setFieldArray('SupportedCustomEvents', value);\n }\n // ChildEntityTypesSupported\n public get childEntityTypesSupported(): ObservableCollection {\n return this.getFieldArray('ChildEntityTypesSupported');\n }\n public set childEntityTypesSupported(value: ObservableCollection) {\n this.setFieldArray('ChildEntityTypesSupported', value);\n }\n // ChildCustomEntityTypesSupported\n public get childCustomEntityTypesSupported(): ObservableCollection {\n return this.getFieldArrayGuid('ChildCustomEntityTypesSupported');\n }\n public set childCustomEntityTypesSupported(value: ObservableCollection) {\n this.setFieldArrayGuid('ChildCustomEntityTypesSupported', value);\n }\n // Capabilities\n public get capabilities(): ObservableCollection {\n return this.getFieldArray('Capabilities');\n }\n public set capabilities(value: ObservableCollection) {\n this.setFieldArray('Capabilities', value);\n }\n // AccessPrivileges\n public get accessPrivileges(): ICustomEntityTypeAccessPrivilege {\n return this.getFieldObject(CustomEntityTypeAccessPrivilege, 'AccessPrivileges');\n }\n public set accessPrivileges(value: ICustomEntityTypeAccessPrivilege) {\n this.setFieldObject('AccessPrivileges', value);\n }\n // Properties\n public get properties(): IFieldObject {\n return this.getFieldObject(FieldObject, 'Properties');\n }\n public set properties(value: IFieldObject) {\n this.setFieldObject('Properties', value);\n }\n // SingleInstance\n public get singleInstance(): boolean {\n return this.getField('SingleInstance');\n }\n public set singleInstance(value: boolean) {\n this.setField('SingleInstance', value);\n }\n // IconImage\n public get iconImage(): string {\n return this.getField('IconImage');\n }\n public set iconImage(value: string) {\n this.setField('IconImage', value);\n }\n // SmallIconImage\n public get smallIconImage(): string {\n return this.getField('SmallIconImage');\n }\n public set smallIconImage(value: string) {\n this.setField('SmallIconImage', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setFieldGuid('Icon', SafeGuid.EMPTY);\n this.setFieldGuid('SmallIcon', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setField('Version', '');\n this.setFieldArray('SupportedEvents', new ObservableCollection());\n this.setFieldArray('SupportedCustomEvents', new ObservableCollection());\n this.setFieldArray('ChildEntityTypesSupported', new ObservableCollection());\n this.setFieldArrayGuid('ChildCustomEntityTypesSupported', new ObservableCollection());\n this.setFieldArray('Capabilities', new ObservableCollection());\n const objAccessPrivileges = new CustomEntityTypeAccessPrivilege();\n objAccessPrivileges.initializeAllFields();\n this.setFieldObject('AccessPrivileges', objAccessPrivileges);\n const objProperties = new FieldObject();\n objProperties.initializeAllFields();\n this.setFieldObject('Properties', objProperties);\n this.setField('SingleInstance', false);\n this.setField('IconImage', '');\n this.setField('SmallIconImage', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class CustomEntitiesManager extends EntityManager implements ICustomEntitiesManager {\n // #region Constructor\n\n constructor() {\n super('v2/entities/CustomEntities');\n }\n\n // #endregion Constructor\n\n public async getTypeDescriptorsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomEntityTypeDescriptor, 'typedescriptors', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSystemConfiguration?codegen=ts&InterfaceOnly=False&workflow=False on 2022-12-21 2:23:55 PM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IFieldObject } from '../Interface/IFieldObject';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport {\n IActivityTrailConfig,\n IActivityTrailParameter,\n ICustomEvent,\n ICustomFieldConfig,\n ICustomFieldTypeDescriptor,\n IEventMetadata,\n ILicenseUsage,\n IMapProvider,\n IMapServer,\n INewActivityTrail,\n ISystemConfigurationEntity,\n SystemConfigurationEntityFields,\n} from '../Interface/ISystemConfigurationEntity';\nimport { ICustomEntityTypeDescriptor } from '../Interface/ICustomEntityManager';\nimport { CustomEntityTypeDescriptor } from '../Managers/CustomEntityManager';\n\n// #region Inner classes\n\nexport class ActivityTrailParameter extends FieldObject implements IActivityTrailParameter {\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n // KeepCurrentFormat\n public get keepCurrentFormat(): boolean {\n return this.getField('KeepCurrentFormat');\n }\n public set keepCurrentFormat(value: boolean) {\n this.setField('KeepCurrentFormat', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Value', '');\n this.setField('KeepCurrentFormat', false);\n }\n}\n\nexport class NewActivityTrail extends FieldObject implements INewActivityTrail {\n // TemplateId\n public get templateId(): number {\n return this.getField('TemplateId');\n }\n public set templateId(value: number) {\n this.setField('TemplateId', value);\n }\n // ActivityType\n public get activityType(): IGuid {\n return this.getFieldGuid('ActivityType');\n }\n public set activityType(value: IGuid) {\n this.setFieldGuid('ActivityType', value);\n }\n // Initiator\n public get initiator(): IGuid {\n return this.getFieldGuid('Initiator');\n }\n public set initiator(value: IGuid) {\n this.setFieldGuid('Initiator', value);\n }\n // ImpactedEntity\n public get impactedEntity(): IGuid {\n return this.getFieldGuid('ImpactedEntity');\n }\n public set impactedEntity(value: IGuid) {\n this.setFieldGuid('ImpactedEntity', value);\n }\n // MachineName\n public get machineName(): string {\n return this.getField('MachineName');\n }\n public set machineName(value: string) {\n this.setField('MachineName', value);\n }\n // AppType\n public get appType(): string {\n return this.getField('AppType');\n }\n public set appType(value: string) {\n this.setField('AppType', value);\n }\n // Parameters\n public get parameters(): ObservableCollection {\n return this.getFieldObjectArray(ActivityTrailParameter, 'Parameters');\n }\n public set parameters(value: ObservableCollection) {\n this.setFieldObjectArray('Parameters', value);\n }\n // AppVersion\n public get appVersion(): string {\n return this.getField('AppVersion');\n }\n public set appVersion(value: string) {\n this.setField('AppVersion', value);\n }\n\n public initializeAllFields(): void {\n this.setField('TemplateId', 0);\n this.setFieldGuid('ActivityType', SafeGuid.EMPTY);\n this.setFieldGuid('Initiator', SafeGuid.EMPTY);\n this.setFieldGuid('ImpactedEntity', SafeGuid.EMPTY);\n this.setField('MachineName', '');\n this.setField('AppType', '');\n this.setFieldArray('Parameters', new ObservableCollection());\n this.setField('AppVersion', '');\n }\n}\n\nexport class MapServer extends FieldObject implements IMapServer {\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // ServerUrl\n public get serverUrl(): string {\n return this.getField('ServerUrl');\n }\n public set serverUrl(value: string) {\n this.setField('ServerUrl', value);\n }\n // Username\n public get username(): string {\n return this.getField('Username');\n }\n public set username(value: string) {\n this.setField('Username', value);\n }\n // UniqueId\n public get uniqueId(): IGuid {\n return this.getFieldGuid('UniqueId');\n }\n public set uniqueId(value: IGuid) {\n this.setFieldGuid('UniqueId', value);\n }\n // Password\n public get password(): string {\n return this.getField('Password');\n }\n public set password(value: string) {\n this.setField('Password', value);\n }\n // UseAuthentication\n public get useAuthentication(): boolean {\n return this.getField('UseAuthentication');\n }\n public set useAuthentication(value: boolean) {\n this.setField('UseAuthentication', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Name', '');\n this.setField('ServerUrl', '');\n this.setField('Username', '');\n this.setFieldGuid('UniqueId', SafeGuid.EMPTY);\n this.setField('Password', '');\n this.setField('UseAuthentication', false);\n }\n}\n\nexport class MapProvider extends FieldObject implements IMapProvider {\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Type\n public get type(): IGuid {\n return this.getFieldGuid('Type');\n }\n public set type(value: IGuid) {\n this.setFieldGuid('Type', value);\n }\n // LicenseKey\n public get licenseKey(): string {\n return this.getField('LicenseKey');\n }\n public set licenseKey(value: string) {\n this.setField('LicenseKey', value);\n }\n // SupportLicense\n public get supportLicense(): boolean {\n return this.getField('SupportLicense');\n }\n public set supportLicense(value: boolean) {\n this.setField('SupportLicense', value);\n }\n // InvertCoordinates\n public get invertCoordinates(): boolean {\n return this.getField('InvertCoordinates');\n }\n public set invertCoordinates(value: boolean) {\n this.setField('InvertCoordinates', value);\n }\n // IsCustom\n public get isCustom(): boolean {\n return this.getField('IsCustom');\n }\n public set isCustom(value: boolean) {\n this.setField('IsCustom', value);\n }\n // IsDefault\n public get isDefault(): boolean {\n return this.getField('IsDefault');\n }\n public set isDefault(value: boolean) {\n this.setField('IsDefault', value);\n }\n // MaxZoom\n public get maxZoom(): number {\n return this.getField('MaxZoom');\n }\n public set maxZoom(value: number) {\n this.setField('MaxZoom', value);\n }\n // Projection\n public get projection(): string {\n return this.getField('Projection');\n }\n public set projection(value: string) {\n this.setField('Projection', value);\n }\n // ProviderId\n public get providerId(): IGuid {\n return this.getFieldGuid('ProviderId');\n }\n public set providerId(value: IGuid) {\n this.setFieldGuid('ProviderId', value);\n }\n // UrlAddress\n public get urlAddress(): string {\n return this.getField('UrlAddress');\n }\n public set urlAddress(value: string) {\n this.setField('UrlAddress', value);\n }\n // UrlFormat\n public get urlFormat(): string {\n return this.getField('UrlFormat');\n }\n public set urlFormat(value: string) {\n this.setField('UrlFormat', value);\n }\n // UseAuthentication\n public get useAuthentication(): boolean {\n return this.getField('UseAuthentication');\n }\n public set useAuthentication(value: boolean) {\n this.setField('UseAuthentication', value);\n }\n // Username\n public get username(): string {\n return this.getField('Username');\n }\n public set username(value: string) {\n this.setField('Username', value);\n }\n // Password\n public get password(): string {\n return this.getField('Password');\n }\n public set password(value: string) {\n this.setField('Password', value);\n }\n // MapServers\n public get mapServers(): ObservableCollection {\n return this.getFieldObjectArray(MapServer, 'MapServers');\n }\n public set mapServers(value: ObservableCollection) {\n this.setFieldObjectArray('MapServers', value);\n }\n // MappingType\n public get mappingType(): string {\n return this.getField('MappingType');\n }\n public set mappingType(value: string) {\n this.setField('MappingType', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Name', '');\n this.setFieldGuid('Type', SafeGuid.EMPTY);\n this.setField('LicenseKey', '');\n this.setField('SupportLicense', false);\n this.setField('InvertCoordinates', false);\n this.setField('IsCustom', false);\n this.setField('IsDefault', false);\n this.setField('MaxZoom', 0);\n this.setField('Projection', '');\n this.setFieldGuid('ProviderId', SafeGuid.EMPTY);\n this.setField('UrlAddress', '');\n this.setField('UrlFormat', '');\n this.setField('UseAuthentication', false);\n this.setField('Username', '');\n this.setField('Password', '');\n this.setFieldArray('MapServers', new ObservableCollection());\n this.setField('MappingType', '');\n }\n}\n\nexport class LicenseUsage extends FieldObject implements ILicenseUsage {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Type\n public get type(): string {\n return this.getField('Type');\n }\n public set type(value: string) {\n this.setField('Type', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n // Current\n public get current(): number {\n return this.getField('Current');\n }\n public set current(value: number) {\n this.setField('Current', value);\n }\n // Max\n public get max(): number {\n return this.getField('Max');\n }\n public set max(value: number) {\n this.setField('Max', value);\n }\n // Active\n public get active(): boolean {\n return this.getField('Active');\n }\n public set active(value: boolean) {\n this.setField('Active', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('Description', '');\n this.setField('Type', '');\n this.setField('Value', '');\n this.setField('Current', 0);\n this.setField('Max', 0);\n this.setField('Active', false);\n }\n}\n\nexport class EventMetadata extends FieldObject implements IEventMetadata {\n // Color\n public get color(): string {\n return this.getField('Color');\n }\n public set color(value: string) {\n this.setField('Color', value);\n }\n // EventType\n public get eventType(): string {\n return this.getField('EventType');\n }\n public set eventType(value: string) {\n this.setField('EventType', value);\n }\n // EventSubType\n public get eventSubType(): number {\n return this.getField('EventSubType');\n }\n public set eventSubType(value: number) {\n this.setField('EventSubType', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Color', '');\n this.setField('EventType', '');\n this.setField('EventSubType', 0);\n }\n}\n\nexport class CustomFieldConfig extends FieldObject implements ICustomFieldConfig {\n // EntityType\n public get entityType(): string {\n return this.getField('EntityType');\n }\n public set entityType(value: string) {\n this.setField('EntityType', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // DefaultValue\n public get defaultValue(): string {\n return this.getField('DefaultValue');\n }\n public set defaultValue(value: string) {\n this.setField('DefaultValue', value);\n }\n // GroupName\n public get groupName(): string {\n return this.getField('GroupName');\n }\n public set groupName(value: string) {\n this.setField('GroupName', value);\n }\n // GroupPriority\n public get groupPriority(): number {\n return this.getField('GroupPriority');\n }\n public set groupPriority(value: number) {\n this.setField('GroupPriority', value);\n }\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Mandatory\n public get mandatory(): boolean {\n return this.getField('Mandatory');\n }\n public set mandatory(value: boolean) {\n this.setField('Mandatory', value);\n }\n // Unique\n public get unique(): boolean {\n return this.getField('Unique');\n }\n public set unique(value: boolean) {\n this.setField('Unique', value);\n }\n // ShowInReports\n public get showInReports(): boolean {\n return this.getField('ShowInReports');\n }\n public set showInReports(value: boolean) {\n this.setField('ShowInReports', value);\n }\n // ValueType\n public get valueType(): string {\n return this.getField('ValueType');\n }\n public set valueType(value: string) {\n this.setField('ValueType', value);\n }\n // Owner\n public get owner(): IGuid {\n return this.getFieldGuid('Owner');\n }\n public set owner(value: IGuid) {\n this.setFieldGuid('Owner', value);\n }\n // IsReadOnly\n public get isReadOnly(): boolean {\n return this.getField('IsReadOnly');\n }\n public set isReadOnly(value: boolean) {\n this.setField('IsReadOnly', value);\n }\n // CustomDataTypes\n public get customDataTypes(): number {\n return this.getField('CustomDataTypes');\n }\n public set customDataTypes(value: number) {\n this.setField('CustomDataTypes', value);\n }\n\n public initializeAllFields(): void {\n this.setField('EntityType', '');\n this.setField('Name', '');\n this.setField('DefaultValue', '');\n this.setField('GroupName', '');\n this.setField('GroupPriority', 0);\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Mandatory', false);\n this.setField('Unique', false);\n this.setField('ShowInReports', false);\n this.setField('ValueType', '');\n this.setFieldGuid('Owner', SafeGuid.EMPTY);\n this.setField('IsReadOnly', false);\n this.setField('CustomDataTypes', 0);\n }\n}\n\nexport class CustomEvent extends FieldObject implements ICustomEvent {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Role\n public get role(): IGuid {\n return this.getFieldGuid('Role');\n }\n public set role(value: IGuid) {\n this.setFieldGuid('Role', value);\n }\n // RoleSubType\n public get roleSubType(): IGuid {\n return this.getFieldGuid('RoleSubType');\n }\n public set roleSubType(value: IGuid) {\n this.setFieldGuid('RoleSubType', value);\n }\n // SupportedEntityType\n public get supportedEntityType(): string {\n return this.getField('SupportedEntityType');\n }\n public set supportedEntityType(value: string) {\n this.setField('SupportedEntityType', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', 0);\n this.setField('Name', '');\n this.setFieldGuid('Role', SafeGuid.EMPTY);\n this.setFieldGuid('RoleSubType', SafeGuid.EMPTY);\n this.setField('SupportedEntityType', '');\n }\n}\n\nexport class CustomFieldTypeDescriptor extends FieldObject implements ICustomFieldTypeDescriptor {\n // Id\n public get id(): number | null {\n return this.getNullableField('Id');\n }\n public set id(value: number | null) {\n this.setNullableField('Id', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // DataType\n public get dataType(): string {\n return this.getField('DataType');\n }\n public set dataType(value: string) {\n this.setField('DataType', value);\n }\n // Values\n public get values(): ObservableCollection {\n return this.getFieldArray('Values');\n }\n public set values(value: ObservableCollection) {\n this.setFieldArray('Values', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', 0);\n this.setField('Name', '');\n this.setField('Description', '');\n this.setField('DataType', '');\n this.setFieldArray('Values', new ObservableCollection());\n }\n}\n\nexport class ActivityTrailConfig extends FieldObject implements IActivityTrailConfig {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Enabled\n public get enabled(): boolean {\n return this.getField('Enabled');\n }\n public set enabled(value: boolean) {\n this.setField('Enabled', value);\n }\n // DescriptionId\n public get descriptionId(): number {\n return this.getField('DescriptionId');\n }\n public set descriptionId(value: number) {\n this.setField('DescriptionId', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Enabled', false);\n this.setField('DescriptionId', 0);\n this.setField('Description', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class SystemConfigurationEntity extends Entity implements ISystemConfigurationEntity {\n // #region REST Properties\n\n // EnhancedPtzOnAllNewUnit\n public get enhancedPtzOnAllNewUnit(): boolean {\n return this.getField(SystemConfigurationEntityFields.enhancedPtzOnAllNewUnitField);\n }\n public set enhancedPtzOnAllNewUnit(value: boolean) {\n this.setField(SystemConfigurationEntityFields.enhancedPtzOnAllNewUnitField, value);\n }\n\n // IsFirstRun\n public get isFirstRun(): boolean {\n return this.getField(SystemConfigurationEntityFields.isFirstRunField);\n }\n public set isFirstRun(value: boolean) {\n this.setField(SystemConfigurationEntityFields.isFirstRunField, value);\n }\n\n // MaxImageFileSizeInKB\n public get maxImageFileSizeInKB(): number {\n return this.getField(SystemConfigurationEntityFields.maxImageFileSizeInKBField, ValidFlags.Specific);\n }\n public set maxImageFileSizeInKB(value: number) {\n this.setField(SystemConfigurationEntityFields.maxImageFileSizeInKBField, value);\n }\n\n // PasswordExpiryNotificationPeriod\n public get passwordExpiryNotificationPeriod(): number {\n return this.getField(SystemConfigurationEntityFields.passwordExpiryNotificationPeriodField, ValidFlags.Specific);\n }\n public set passwordExpiryNotificationPeriod(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordExpiryNotificationPeriodField, value);\n }\n\n // PasswordMinCharacter\n public get passwordMinCharacter(): number {\n return this.getField(SystemConfigurationEntityFields.passwordMinCharacterField, ValidFlags.Specific);\n }\n public set passwordMinCharacter(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordMinCharacterField, value);\n }\n\n // PasswordMinLowerCharacter\n public get passwordMinLowerCharacter(): number {\n return this.getField(SystemConfigurationEntityFields.passwordMinLowerCharacterField, ValidFlags.Specific);\n }\n public set passwordMinLowerCharacter(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordMinLowerCharacterField, value);\n }\n\n // PasswordMinNumericalCharacter\n public get passwordMinNumericalCharacter(): number {\n return this.getField(SystemConfigurationEntityFields.passwordMinNumericalCharacterField, ValidFlags.Specific);\n }\n public set passwordMinNumericalCharacter(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordMinNumericalCharacterField, value);\n }\n\n // PasswordMinSpecialCharacter\n public get passwordMinSpecialCharacter(): number {\n return this.getField(SystemConfigurationEntityFields.passwordMinSpecialCharacterField, ValidFlags.Specific);\n }\n public set passwordMinSpecialCharacter(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordMinSpecialCharacterField, value);\n }\n\n // PasswordMinUpperCharacter\n public get passwordMinUpperCharacter(): number {\n return this.getField(SystemConfigurationEntityFields.passwordMinUpperCharacterField, ValidFlags.Specific);\n }\n public set passwordMinUpperCharacter(value: number) {\n this.setField(SystemConfigurationEntityFields.passwordMinUpperCharacterField, value);\n }\n\n // SecurityLevel\n public get securityLevel(): number {\n return this.getField(SystemConfigurationEntityFields.securityLevelField, ValidFlags.Specific);\n }\n public set securityLevel(value: number) {\n this.setField(SystemConfigurationEntityFields.securityLevelField, value);\n }\n\n // ThreatLevel\n public get threatLevel(): IGuid {\n return this.getFieldGuid(SystemConfigurationEntityFields.threatLevelField, ValidFlags.EntityStatus2);\n }\n public set threatLevel(value: IGuid) {\n this.setFieldGuid(SystemConfigurationEntityFields.threatLevelField, value);\n }\n\n // TotalActiveThreatLevelCount\n public get totalActiveThreatLevelCount(): number {\n return this.getField(SystemConfigurationEntityFields.totalActiveThreatLevelCountField, ValidFlags.EntityStatus2);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.SystemConfigurations);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getActivityTrailsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(ActivityTrailConfig, 'ActivityTrails', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n public async getCustomDataTypesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(\n CustomFieldTypeDescriptor,\n 'CustomDataTypes',\n 'Id',\n false,\n true,\n ValidFlags.Specific,\n transaction,\n );\n }\n\n public async getCustomEntityTypeDescriptorsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(\n CustomEntityTypeDescriptor,\n 'CustomEntityTypeDescriptors',\n 'Id',\n false,\n true,\n ValidFlags.MemberOf4,\n transaction,\n );\n }\n\n public async getCustomEventsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomEvent, 'CustomEvents', 'Id', false, false, ValidFlags.EntityDependency2, transaction);\n }\n\n public async getCustomFieldConfigAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomFieldConfig, 'CustomFields', 'Id', false, true, ValidFlags.Membership3, transaction);\n }\n\n public async getDefaultSystemMapAsync(transaction?: ITransaction | null): Promise {\n const result = await this.getDataRelation2Async('DefaultSystemMap', 'id', ValidFlags.None, transaction);\n if (result) {\n return SafeGuid.parse(result.toLowerCase());\n }\n return SafeGuid.EMPTY;\n }\n\n public async getEventsMetadataAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(EventMetadata, 'EventsMetadata', 'Id', true, false, ValidFlags.MemberOf3, transaction);\n }\n\n public async frozenSessionTestAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) {\n resolve(response);\n });\n } else {\n return new Promise(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync('FrozenSessionTest', 'POST', null, transaction, responseHandler);\n }\n\n public async isPrivilegeLicenseSupportedAsync(id: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['Supported'] as boolean;\n return new Promise(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise(function (resolve, reject) {\n reject(response);\n });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('id', id);\n\n return this.executeRequestTransactionAsync('IsPrivilegeLicenseSupported', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getLicenseDetailsAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'LicenseDetails', false, ValidFlags.None, transaction);\n }\n\n public async getLicenseUsageAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(LicenseUsage, 'LicenseUsage', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async getLprAcceptReasonsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise>(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync>('LprAcceptReasons', 'GET', null, transaction, responseHandler);\n }\n\n public async getLprAnnotationFieldsDefinitionsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise>(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync>('LprAnnotationFieldsDefinitions', 'GET', null, transaction, responseHandler);\n }\n\n public async getLprHotlistRejectReasonsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise>(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync>('LprHotlistRejectReasons', 'GET', null, transaction, responseHandler);\n }\n\n public async getLprOvertimetRejectReasonsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise>(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync>('LprOvertimeRejectReasons', 'GET', null, transaction, responseHandler);\n }\n\n public async getLprPermitRejectReasonsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function (resolve, reject) {\n resolve(result);\n });\n } else {\n return new Promise>(function (resolve, reject) {\n reject(response);\n });\n }\n };\n return this.executeRequestTransactionAsync>('LprPermitRejectReasons', 'GET', null, transaction, responseHandler);\n }\n\n public async getMapProvidersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(MapProvider, 'MapProviders', 'Id', true, false, ValidFlags.MemberOf4, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter | null, transaction?: ITransaction | null): Promise | null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.EntityMembership, transaction);\n }\n\n public async getRootPartitionsAsync(query?: IQueryFilter | null, transaction?: ITransaction | null): Promise | null> {\n return this.getGuidRelationAsync('RootPartitions', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async sendActivityTrailsAsync(value: INewActivityTrail, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) {\n resolve(response);\n });\n } else {\n return new Promise(function (resolve, reject) {\n reject(response);\n });\n }\n };\n\n return this.executeRequestTransactionAsync('SendActivityTrails', 'POST', value, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n}\n","import { RestTransaction } from '../Connection/RestTransaction';\nimport { RestTransactionResponse } from '../Connection/RestTransactionResponse';\nimport { RestResponse } from '../Connection/RestResponse';\nimport { SecurityCenterClient } from './SecurityCenterClient';\nimport { CancellationToken } from '../Helpers/Helpers';\nimport HttpStatusCode from './Enumerations/HttpStatusCode';\nimport { ITransaction, ITransactionContext } from \"./Interface/ITransaction\";\nimport { ITransactionResult } from \"./Interface/IRestTransactionResponse\";\nimport { IRestTransaction } from \"./Interface/IRestTransaction\";\n\nexport class TransactionContext implements ITransactionContext {\n public uri = '';\n public verb = '';\n public body: object | null = null;\n public handled = false;\n public transactionRequired = false;\n\n public responseHandler: ((response: RestResponse) => Promise) | null = null;\n public callback: ((response: T) => Promise) | null = null;\n\n public async handleResponse(result: ITransactionResult) {\n if (this.responseHandler != null) {\n const rr = new RestResponse();\n rr.parseTransactionResult(result);\n const res = await this.responseHandler(rr);\n if (this.callback != null) {\n await this.callback(await res);\n }\n }\n }\n}\n\nexport class Transaction implements ITransaction {\n private _transaction: RestTransaction | null = null;\n private _lastContext: ITransactionContext | null = null;\n\n // #region Properties\n\n public get restTransaction(): IRestTransaction | null {\n return this._transaction;\n }\n\n // #endregion\n\n // #region Constructor, Dispose\n\n constructor(client: SecurityCenterClient) {\n this._transaction = new RestTransaction(client.rest);\n }\n\n public dispose(): void {\n this._transaction = null;\n }\n\n // #endregion\n\n // #region Public methods\n\n public async queueAsync(operations: Promise, action?: (response: T) => Promise) {\n if (!this._lastContext) {\n throw new Error(\"This operation doesn't support transaction queueing\");\n }\n\n const ctx = this._lastContext as TransactionContext;\n if (ctx) {\n if (ctx.transactionRequired === false && action && ctx.responseHandler) {\n // no transaction, do it right now\n const response = new RestResponse();\n response.statusCode = HttpStatusCode.OK;\n await action(await ctx.responseHandler(response));\n } else {\n if (action) {\n ctx.callback = action;\n } else {\n ctx.callback = null;\n }\n }\n } else {\n throw new Error('Invalid transaction context');\n }\n this._lastContext = null;\n return;\n }\n\n public async executeAsync(token?: CancellationToken): Promise {\n if (this._transaction == null) {\n throw new Error('Transaction is null');\n }\n\n const response = await this._transaction.executeTransactionAsync(token);\n if (response.statusCode === HttpStatusCode.OK) {\n for (const transactionResult of response.transactionResult) {\n // the result comes in the same order as they were requested\n const ctx = transactionResult.context as ITransactionContext;\n if (ctx != null) {\n await ctx.handleResponse(transactionResult);\n }\n }\n } else {\n // The transaction failed totally... at least call any registered handlers with the \"big\" error\n for (const transactionResult of response.transactionResult) {\n const ctx = transactionResult.context as ITransactionContext;\n if (ctx != null) {\n transactionResult.statusCode = response.statusCode;\n if (response.body) {\n transactionResult.result = response.body;\n }\n await ctx.handleResponse(transactionResult);\n }\n }\n }\n return response;\n }\n\n // #endregion\n\n // #region Internal methods\n\n public addTransactionOperation(\n uri: string,\n verb: string,\n body: object | null,\n responseHandler?: (response: RestResponse) => Promise,\n ) {\n if (this._transaction == null) {\n throw new Error('Transaction is null');\n }\n\n const ctx = new TransactionContext();\n if (responseHandler) {\n ctx.responseHandler = responseHandler;\n }\n\n if (verb) {\n ctx.transactionRequired = true;\n this._transaction.addTransactionOperation(uri, verb, body, ctx);\n } else {\n // no need for transaction... can execute the callback right away\n ctx.transactionRequired = false;\n }\n this._lastContext = ctx;\n }\n // #endregion\n}\n","export class UserTokenData {\n public token = '';\n public validUntil: Date = new Date();\n public millisecondsValid = 0;\n\n public getAuthentificationHeader(): string {\n if ( (this.token.startsWith('LocalToken') === false) && (this.token.startsWith('LocalToken') === false) ) {\n return 'Token ' + this.token;\n }\n return this.token;\n }\n}\n","import { Timer } from './Timer';\n\nexport class Debouncer {\n private _timer: Timer;\n private _maxTimer: Timer;\n private _action: any;\n private _timeout = 0;\n private _maxTimeout = 0;\n private _suspended = false; // while we are execution the action, prevent reentrance\n private _discardOnAction = false; // true == drop the trigger that were made durin the action, else == retrigger on resume\n private _triggeredWhileSuspended = false; // action was requested during the action execution\n private _triggerCount = 0;\n private _isAsync = false;\n\n constructor(discardOnAction: boolean, action: any, timeout: number, maxTimeout: number) {\n this._action = action;\n this._timeout = timeout;\n this._maxTimeout = maxTimeout;\n this._timer = new Timer(() => {\n this.timerCallback();\n });\n this._maxTimer = new Timer(() => {\n this.timerCallback();\n });\n this._discardOnAction = discardOnAction;\n this._isAsync = action.constructor.name === \"AsyncFunction\";\n }\n\n public trigger(): void {\n if (this._triggerCount === 0) {\n this._maxTimer.change(this._maxTimeout);\n }\n this._triggerCount++;\n if (this._suspended === false) {\n this._timer.change(this._timeout);\n } else {\n this._triggeredWhileSuspended = true;\n }\n }\n\n private async timerCallback(): Promise {\n if (this._action == null) {\n return; // disposed\n }\n\n this.suspend();\n try {\n if ( this._isAsync === false ) {\n this._action();\n } else {\n await this._action();\n }\n \n } catch (e) {\n // Console.WriteLine($\"Timer_callback {ex}\");\n }\n this.resume();\n }\n\n public suspend(): void {\n this._suspended = true;\n this._timer.change(-1);\n this._maxTimer.change(-1);\n this._triggerCount = 0;\n }\n\n public resume(): void {\n this._suspended = false;\n if (this._triggeredWhileSuspended && this._discardOnAction === false) {\n this._triggeredWhileSuspended = false;\n this.trigger();\n }\n }\n\n public dispose(): void {\n this.suspend();\n }\n}\n","export class Semaphore {\n private tasks: (() => void)[] = [];\n count: number;\n\n constructor(count: number) {\n this.count = count;\n }\n\n private sched() {\n if (this.count > 0 && this.tasks.length > 0) {\n this.count--;\n let next = this.tasks.shift();\n if (next === undefined) {\n throw \"Unexpected undefined value in tasks list\";\n }\n next();\n }\n }\n\n public acquire() {\n return new Promise<() => void>((res, rej) => {\n const task = () => {\n let released = false;\n res(() => {\n if (!released) {\n released = true;\n this.count++;\n this.sched();\n }\n });\n };\n\n this.tasks.push(task);\n if(this.count > 0) {\n this.sched();\n } \n // This is probably safer then the previous if but it's slower\n // setTimeout(this.sched.bind(this), 0);\n });\n }\n\n public use(f: () => Promise) {\n return this.acquire()\n .then(release => {\n return f()\n .then((res) => {\n release();\n return res;\n })\n .catch((err) => {\n release();\n throw err;\n });\n });\n }\n}\n\nexport class Mutex extends Semaphore {\n constructor() {\n super(1);\n }\n}","import { IGuid, SafeGuid } from 'safeguid';\nimport { EntityInvalidatedArg } from '../../Connection/RestArgs';\nimport { Mutex } from '../../Helpers/semaphore';\nimport { LogonStateChangedArgs } from '../Args/LogonStateChangedArgs';\nimport { LogSeverity } from '../Enumerations/LogSeverity';\nimport { EntityFields, IEntity } from '../Interface/IEntity';\nimport { ISecurityCenterClient } from '../Interface/ISecurityCenterClient';\nimport { Entity } from '../Model/Entity';\nimport { EntityQuery } from '../Queries/EntityQuery';\nimport { SecurityCenterClient } from '../SecurityCenterClient';\n\nconst allFields = '*';\n\nconst padFields = (fields1: Iterable, fields2: Iterable): Set => {\n const paddedFields = new Set(fields1);\n for (const field of fields2) {\n paddedFields.add(field);\n }\n return paddedFields;\n};\n\nconst cleanupFields = (fields: Set): Set => {\n if (fields.has(allFields)) {\n return new Set(allFields);\n }\n return fields;\n};\n\nconst copyEntity = (entity: IEntity, client: ISecurityCenterClient, fields?: Set): IEntity => {\n const classType = entity.constructor as new () => IEntity;\n const copy = client.createEntityModel(classType, { [EntityFields.entityTypeField]: entity.entityType }) as IEntity;\n if (fields) {\n copy.loadFieldsFrom(entity, fields);\n } else {\n copy.loadFrom(entity);\n }\n return copy;\n};\n\nclass MonitoreEntityCacheEntry {\n public readonly fieldsToDownload = new Set();\n public readonly relationsToClear = new Set();\n public readonly validFlagFields = new Map>();\n public readonly validFlagRelations = new Map>();\n public monitoredValidFlags = 0;\n public isInvalidated = false;\n\n constructor(public readonly cacheId: IGuid, public entity: IEntity) {}\n\n public clearInvalidate(): void {\n this.isInvalidated = false;\n for (const relation of this.relationsToClear) {\n this.entity.resetRelation(relation);\n }\n this.relationsToClear.clear();\n this.fieldsToDownload.clear();\n }\n}\n\nclass MonitoredEntityEntry {\n private readonly _monitoredFields = new Set();\n private readonly fieldsCaches = new Map>();\n public readonly cacheEntries = SafeGuid.createMap();\n\n public get monitoredFields(): Set {\n return cleanupFields(this._monitoredFields);\n }\n\n constructor(public readonly entity: IEntity) {}\n\n public addMonitoredField(cacheId: IGuid, entity: IEntity, field: string, validFlag: number): void {\n field = field.toLowerCase();\n const fieldCaches = this.fieldsCaches.get(field);\n if (fieldCaches) {\n fieldCaches.add(cacheId);\n } else {\n this.fieldsCaches.set(field, SafeGuid.createSet([cacheId]));\n }\n this._monitoredFields.add(field);\n\n let cacheEntry = this.cacheEntries.get(cacheId);\n if (!cacheEntry) {\n cacheEntry = new MonitoreEntityCacheEntry(cacheId, entity);\n this.cacheEntries.set(cacheId, cacheEntry);\n }\n\n let cacheEntryValidFlagFields = cacheEntry.validFlagFields.get(validFlag);\n if (!cacheEntryValidFlagFields) {\n cacheEntryValidFlagFields = new Set();\n cacheEntry.validFlagFields.set(validFlag, cacheEntryValidFlagFields);\n }\n cacheEntryValidFlagFields.add(field);\n cacheEntry.monitoredValidFlags |= validFlag;\n }\n\n public addMonitoredRelation(cacheId: IGuid, entity: IEntity, relation: string, validFlag: number): void {\n let cacheEntry = this.cacheEntries.get(cacheId);\n if (!cacheEntry) {\n cacheEntry = new MonitoreEntityCacheEntry(cacheId, entity);\n this.cacheEntries.set(cacheId, cacheEntry);\n }\n\n let cacheEntryValidFlagRelations = cacheEntry.validFlagRelations.get(validFlag);\n if (!cacheEntryValidFlagRelations) {\n cacheEntryValidFlagRelations = new Set();\n cacheEntry.validFlagRelations.set(validFlag, cacheEntryValidFlagRelations);\n }\n cacheEntryValidFlagRelations.add(relation);\n cacheEntry.monitoredValidFlags |= validFlag;\n }\n\n public removeCache(cacheId: IGuid): void {\n this.cacheEntries.delete(cacheId);\n\n const fieldsToRemove: string[] = [];\n for (const [field, fieldCaches] of this.fieldsCaches) {\n fieldCaches.delete(cacheId);\n if (fieldCaches.size === 0) {\n fieldsToRemove.push(field);\n }\n }\n\n for (const field of fieldsToRemove) {\n this.fieldsCaches.delete(field);\n this._monitoredFields.delete(field);\n }\n }\n}\n\nexport class EntityCacheTaskMonitor {\n private static monitors = new Map();\n\n private monitoredEntityEntries = SafeGuid.createMap();\n private entityCacheTasks = SafeGuid.createMap>();\n private getEntityMutexes = SafeGuid.createMap();\n private entityInvalidateCacheEntries = SafeGuid.createMap>();\n private subscriptions: (() => void)[] = [];\n\n constructor(private client: SecurityCenterClient) {\n this.subscriptions.push(client.onLogonStateChanged((arg) => this.onLogonStateChanged(arg)));\n }\n\n private onLogonStateChanged(arg: LogonStateChangedArgs): void {\n if (!arg.loggedOn()) {\n this.monitoredEntityEntries.clear();\n this.entityCacheTasks.clear();\n this.entityInvalidateCacheEntries.clear();\n this.getEntityMutexes.clear();\n }\n }\n\n public onEntityInvalidated(cacheId: IGuid, arg: EntityInvalidatedArg): void {\n const monitoredEntityEntry = this.monitoredEntityEntries.get(arg.id);\n if (monitoredEntityEntry) {\n const cacheEntry = monitoredEntityEntry.cacheEntries.get(cacheId);\n if (cacheEntry && (cacheEntry.monitoredValidFlags & arg.flags) === arg.flags) {\n cacheEntry.isInvalidated = true;\n const fields = cacheEntry.validFlagFields.get(arg.flags);\n if (fields) {\n for (const field of fields) {\n cacheEntry.fieldsToDownload.add(field);\n }\n }\n\n const relationsToClear = cacheEntry.validFlagRelations.get(arg.flags);\n if (relationsToClear) {\n for (const relation of relationsToClear) {\n cacheEntry.relationsToClear.add(relation);\n }\n }\n\n let invalidateCacheEntries = this.entityInvalidateCacheEntries.get(arg.id);\n if (!invalidateCacheEntries) {\n invalidateCacheEntries = new Set();\n this.entityInvalidateCacheEntries.set(arg.id, invalidateCacheEntries);\n }\n invalidateCacheEntries.add(cacheEntry);\n }\n }\n }\n\n public static get(client: SecurityCenterClient): EntityCacheTaskMonitor {\n let monitor = this.monitors.get(client);\n if (monitor) {\n return monitor;\n }\n\n monitor = new EntityCacheTaskMonitor(client);\n this.monitors.set(client, monitor);\n return monitor;\n }\n\n public addMonitoredEntityField(cacheId: IGuid, entity: IEntity, field: string, validFlag: number): void {\n let cacheEntry = this.monitoredEntityEntries.get(entity.id);\n if (!cacheEntry) {\n cacheEntry = new MonitoredEntityEntry(copyEntity(entity, this.client));\n this.monitoredEntityEntries.set(entity.id, cacheEntry);\n }\n cacheEntry.addMonitoredField(cacheId, entity, field, validFlag);\n\n const entityCacheTasks = this.entityCacheTasks.get(entity.id);\n if (entityCacheTasks) {\n entityCacheTasks.add(cacheId);\n } else {\n this.entityCacheTasks.set(entity.id, SafeGuid.createSet([cacheId]));\n }\n }\n\n public addMonitoredEntityRelation(cacheId: IGuid, entity: IEntity, relation: string, validFlag: number): void {\n let cacheEntry = this.monitoredEntityEntries.get(entity.id);\n if (!cacheEntry) {\n cacheEntry = new MonitoredEntityEntry(copyEntity(entity, this.client));\n this.monitoredEntityEntries.set(entity.id, cacheEntry);\n }\n cacheEntry.addMonitoredRelation(cacheId, entity, relation, validFlag);\n\n const entityCacheTasks = this.entityCacheTasks.get(entity.id);\n if (entityCacheTasks) {\n entityCacheTasks.add(cacheId);\n } else {\n this.entityCacheTasks.set(entity.id, SafeGuid.createSet([cacheId]));\n }\n }\n\n public removeMonitoredEntity(cacheId: IGuid, entityId: IGuid): void {\n const entityCacheTasks = this.entityCacheTasks.get(entityId);\n if (entityCacheTasks) {\n entityCacheTasks.delete(cacheId);\n if (entityCacheTasks.size === 0) {\n this.monitoredEntityEntries.delete(entityId);\n this.getEntityMutexes.delete(entityId);\n this.entityInvalidateCacheEntries.delete(entityId);\n\n if (this.monitoredEntityEntries.size === 0) {\n for (const unsubscribe of this.subscriptions) {\n unsubscribe();\n }\n EntityCacheTaskMonitor.monitors.delete(this.client);\n }\n } else {\n const cacheEntry = this.monitoredEntityEntries.get(entityId);\n if (cacheEntry) {\n cacheEntry.removeCache(cacheId);\n }\n const invalidateCacheEntries = this.entityInvalidateCacheEntries.get(entityId);\n if (invalidateCacheEntries) {\n const monitoredEntityCacheEntryToDelete = setFind(invalidateCacheEntries, (x) => x.cacheId.equals(cacheId));\n if (monitoredEntityCacheEntryToDelete) {\n invalidateCacheEntries.delete(monitoredEntityCacheEntryToDelete);\n }\n }\n }\n }\n }\n\n public async getEntitiesAsync(cacheId: IGuid, classType: new () => U, query: EntityQuery): Promise> {\n const releases = SafeGuid.createMap<() => void>();\n for (const entityId of query.guids) {\n if (this.monitoredEntityEntries.has(entityId)) {\n let mutex = this.getEntityMutexes.get(entityId);\n if (!mutex) {\n mutex = new Mutex();\n this.getEntityMutexes.set(entityId, mutex);\n }\n releases.set(entityId, await mutex.acquire());\n }\n }\n\n const result: U[] = [];\n try {\n const entityIdsToDownload = SafeGuid.createSet();\n const entityFieldsToRefresh = SafeGuid.createMap>();\n for (const entityId of query.guids) {\n const monitoredEntityEntry = this.monitoredEntityEntries.get(entityId);\n if (monitoredEntityEntry) {\n const cacheEntry = monitoredEntityEntry.cacheEntries.get(cacheId);\n if (cacheEntry && cacheEntry.isInvalidated && cacheEntry.fieldsToDownload.size === 0) {\n // Entry was just invalidated and is fully updated, return it\n cacheEntry.clearInvalidate();\n result.push(cacheEntry.entity as unknown as U);\n const release = releases.get(entityId);\n if (release) {\n release();\n releases.delete(entityId);\n }\n continue;\n }\n }\n\n const invalidateCacheEntries = this.entityInvalidateCacheEntries.get(entityId);\n const entity = await this.getEntityAsync(entityId, query.fields);\n if (entity && !invalidateCacheEntries) {\n // Entity exists in cache and all the required fields are monitored and up to date, return it\n result.push(entity);\n const release = releases.get(entityId);\n if (release) {\n release();\n releases.delete(entityId);\n }\n } else {\n entityIdsToDownload.add(entityId);\n if (invalidateCacheEntries) {\n // Entity was invalidated, check which fields must be downloaded to update it\n const fieldsToDownload = new Set();\n entityFieldsToRefresh.set(entityId, fieldsToDownload);\n for (const cacheEntry of invalidateCacheEntries) {\n for (const field of cacheEntry.fieldsToDownload) {\n fieldsToDownload.add(field);\n }\n }\n }\n }\n }\n\n if (entityIdsToDownload.size > 0) {\n query.guids = SafeGuid.createSet(entityIdsToDownload.keys());\n\n // If refreshing cache of a single entity, make sure to download invalidated fields as well\n if (entityIdsToDownload.size === 1) {\n const invalidateFields = entityFieldsToRefresh.get(Array.from(entityIdsToDownload)[0]);\n if (invalidateFields) {\n query.fields = cleanupFields(padFields(query.fields, invalidateFields));\n }\n }\n\n const entities = await this.client.getEntitiesAsync(classType, query, null, null);\n for (const entity of entities) {\n let entityToReturn = entity;\n const entityId = entity.id;\n\n const monitoredEntityEntry = this.monitoredEntityEntries.get(entityId);\n if (monitoredEntityEntry) {\n // Update shared cache entity with new fields\n if (query.fields.has(allFields)) {\n monitoredEntityEntry.entity.loadFieldsFrom(entity);\n } else {\n monitoredEntityEntry.entity.loadFieldsFrom(entity, query.fields);\n }\n\n const invalidateCacheEntries = this.entityInvalidateCacheEntries.get(entityId);\n if (invalidateCacheEntries) {\n const invalideCacheEntriesToRemove: MonitoreEntityCacheEntry[] = [];\n for (const cacheEntry of invalidateCacheEntries) {\n const fieldsToDownload = new Set(cacheEntry.fieldsToDownload);\n\n // Create new entity, load fields and relations from current one in cache, then update with downladed fields and replace the one in cache\n const newCacheEntity = copyEntity(cacheEntry.entity, this.client);\n newCacheEntity.loadFieldsFrom(entity, fieldsToDownload);\n cacheEntry.entity = newCacheEntity;\n\n // Clean up downloaded fields for entry\n for (const field of fieldsToDownload) {\n if (query.fields.has(field) || query.fields.has(allFields)) {\n cacheEntry.fieldsToDownload.delete(field);\n }\n }\n\n if (cacheEntry.fieldsToDownload.size === 0) {\n invalideCacheEntriesToRemove.push(cacheEntry);\n }\n }\n\n for (const cacheEntry of invalideCacheEntriesToRemove) {\n invalidateCacheEntries.delete(cacheEntry);\n }\n\n if (invalidateCacheEntries.size === 0) {\n this.entityInvalidateCacheEntries.delete(entityId);\n }\n }\n\n const cacheEntry = monitoredEntityEntry.cacheEntries.get(cacheId);\n if (cacheEntry && cacheEntry.isInvalidated && cacheEntry.fieldsToDownload.size === 0) {\n // Entry was just invalided and is fully updated, return it\n cacheEntry.clearInvalidate();\n entityToReturn = cacheEntry.entity as unknown as U;\n }\n }\n\n result.push(entityToReturn);\n }\n }\n } finally {\n for (const release of releases.values()) {\n release();\n }\n releases.clear();\n }\n\n return result;\n }\n\n private async getEntityAsync(entityId: IGuid, fields: Set): Promise {\n const monitoredEntityEntry = this.monitoredEntityEntries.get(entityId);\n if (monitoredEntityEntry) {\n let isEntryValid = true;\n if (isEntryValid) {\n for (const field of cleanupFields(fields)) {\n if (!monitoredEntityEntry.monitoredFields.has(field)) {\n isEntryValid = false;\n break;\n }\n }\n }\n\n if (!isEntryValid) {\n return null;\n }\n\n try {\n // Entity exists in cache and all the required fields are monitored and up to date, create copy and return it\n const newEntity = copyEntity(monitoredEntityEntry.entity, this.client, fields.has(allFields) ? undefined : fields);\n newEntity.clearRelations();\n\n return newEntity as unknown as U;\n } catch (error) {\n this.client.diagnosticManager?.sendTraceAsync(LogSeverity.Error, 'EntityCacheTaskMonitor.getEntity', 'Failed to create entity', '').catch();\n }\n }\n\n return null;\n }\n}\n","import { SecurityCenterClient } from '../SecurityCenterClient';\nimport { Deferred } from '../../Helpers/Helpers';\nimport { Debouncer } from '../../Helpers/Debouncer';\nimport { Timer } from '../../Helpers/Timer';\nimport { EntityQuery } from '../Queries/EntityQuery';\nimport { LogonStateChangedArgs } from '../Args/LogonStateChangedArgs';\nimport { FilterSet } from '../../Helpers/Linq';\nimport * as Args from '../../Connection/RestArgs';\nimport { EventFilter } from '../../Connection/EventFilter';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport {\n modificationHandlerComparer,\n modificationHandlerAction,\n modificationHandlerDelete,\n modificationHandlerEvent,\n IEntityCacheTask,\n modificationHandlerField,\n} from '../Interface/IEntityCacheTask';\nimport { IEntity } from '../Interface/IEntity';\nimport { Mutex } from '../../Helpers/semaphore';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { EntityCacheTaskMonitor } from './EntityCacheTaskMonitor';\nimport { Entity } from '../Model/Entity';\nimport { merge, Observable } from 'rxjs';\n\nclass ModificationHandler {\n public id = SafeGuid.newGuid().toString();\n public validFlags = 0;\n public comparer: modificationHandlerComparer | null = null;\n public action: modificationHandlerAction | null = null;\n\n public ModificationHandler(validFlags: number, comparer: modificationHandlerComparer, action: modificationHandlerAction) {\n this.comparer = comparer;\n this.action = action;\n this.validFlags = validFlags;\n }\n}\n\nclass CachedEntity {\n private _entity: IEntity;\n public modificationHandlers = new FilterSet();\n public deleteHandlers = new FilterSet();\n public eventHandlers = new Map();\n public isDirty = false;\n\n public get entity() {\n return this._entity;\n }\n public set entity(value: IEntity) {\n this._entity = value;\n this.isDirty = false;\n }\n\n constructor(entity: IEntity) {\n this._entity = entity;\n }\n\n public dispose(): void {\n this.modificationHandlers.clear();\n this.deleteHandlers.clear();\n this.eventHandlers.clear();\n }\n}\n\nclass RefreshEntity {\n public id: IGuid = SafeGuid.EMPTY;\n public clearRelationOnly = false;\n public timer: Timer;\n\n constructor(id: IGuid, clearRelationOnly: boolean, timer: Timer) {\n this.id = id;\n this.clearRelationOnly = clearRelationOnly;\n this.timer = timer;\n }\n}\n\nexport class EntityCacheTask implements IEntityCacheTask {\n //#region fields\n\n private getEntityMutex = new Mutex();\n private _client: SecurityCenterClient;\n private _cache = SafeGuid.createMap();\n private _debouncerInvalidate: Debouncer;\n private _invalidatedEntities = SafeGuid.createMap();\n private _registeredFilter = SafeGuid.createSet();\n private _clearRelationDictionary = SafeGuid.createMap();\n private _defaultDownloadMask: Set;\n private subscriptions: (() => void)[] = [];\n private uniqueId = SafeGuid.newGuid();\n\n // #endregion\n\n //#region constructor\n\n constructor(client: SecurityCenterClient, debouncePeriod: number, debouncePeriodMax: number, downloadMask = '*') {\n this._client = client;\n\n const mask = downloadMask.replace(/\\s+/g, '').toLowerCase(); // Remove whitespaces\n if (mask.includes('*')) {\n this._defaultDownloadMask = new Set('*');\n } else {\n this._defaultDownloadMask = new Set(mask.split(','));\n for (const field of client.defaultFields.Fields) {\n this._defaultDownloadMask.add(field);\n }\n }\n\n this._debouncerInvalidate = new Debouncer(\n false,\n async () => {\n await this.performCacheUpdateAsync();\n },\n debouncePeriod,\n debouncePeriodMax,\n );\n\n // Register to Streamer\n this.subscriptions.push(this._client.onEntityInvalidated((arg) => this.onEntityInvalidated(arg)));\n this.subscriptions.push(this._client.onEntityRemoved((arg) => this.onEntityRemoved(arg)));\n this.subscriptions.push(this._client.onEventReceived((arg) => this.onEventReceived(arg)));\n this.subscriptions.push(\n this._client.onLogonStateChanged((arg) => {\n this.onLogonStateChanged(arg);\n }),\n );\n }\n\n public async dispose() {\n await this.resetAsync();\n for (const subscription of this.subscriptions) {\n subscription();\n }\n this.subscriptions = [];\n }\n\n // #endregion\n\n // #region Public methods\n\n public async resetAsync() {\n if (this._client.isLoggedOn) {\n await this._client.removeFromStreamerFiltersAsync(this._registeredFilter);\n }\n\n this._registeredFilter.clear();\n const monitor = EntityCacheTaskMonitor.get(this._client);\n for (const entry of this._cache.entries()) {\n monitor.removeMonitoredEntity(this.uniqueId, entry[0]);\n entry[1].dispose();\n }\n this._cache.clear();\n\n for (const refreshEntity of this._clearRelationDictionary) {\n refreshEntity[1].timer.dispose();\n }\n this._clearRelationDictionary.clear();\n }\n\n public removeCachedEntity(id: IGuid): void {\n if (this._cache.has(id)) {\n const entity = this._cache.get(id);\n if (entity) {\n this._cache.delete(id);\n entity.dispose();\n }\n }\n if (this._clearRelationDictionary.has(id)) {\n const re = this._clearRelationDictionary.get(id);\n if (re) {\n re.timer.dispose();\n }\n this._clearRelationDictionary.delete(id);\n }\n }\n\n public containsEntity(id: IGuid): boolean {\n return this._cache.has(id);\n }\n\n public async getEntityAsync(classType: new () => T, id: IGuid, addToFilter = true): Promise {\n const lst = SafeGuid.createSet();\n lst.add(id);\n const entities = await this.getEntitiesAsync(classType, lst, addToFilter);\n if (entities.length > 0) {\n return entities[0] as unknown as U;\n }\n return null;\n }\n\n public async addEntitiesAsync(entitiesToAdd: Array, addToFilter = true) {\n for (const nonCachedEntity of entitiesToAdd) {\n if (!this._cache.has(nonCachedEntity.id)) {\n this._cache.set(nonCachedEntity.id, new CachedEntity(nonCachedEntity));\n }\n }\n\n if (addToFilter && entitiesToAdd.length > 0) {\n const filter = new EventFilter();\n for (const nonCachedEntity of entitiesToAdd) {\n // start monitoring that entity\n filter.entities.add(nonCachedEntity.id);\n }\n const filterId = await this._client.addToStreamerFilterAsync(filter);\n this._registeredFilter.add(filterId);\n }\n }\n\n public async getEntitiesAsync(classType: new () => T, ids: Set, addToFilter = true): Promise> {\n const entities = new Array();\n const release = await this.getEntityMutex.acquire();\n try {\n const nonCachedEntityIdsQuery = new EntityQuery();\n for (const field of this._defaultDownloadMask) {\n nonCachedEntityIdsQuery.fields.add(field);\n }\n\n for (const id of ids) {\n if (this._cache.has(id)) {\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n const castedEntity = cacheEntity.entity as T;\n if (castedEntity) {\n entities.push(castedEntity as unknown as U);\n } else {\n const newT = new classType();\n newT.loadFrom(cacheEntity.entity);\n entities.push(newT as unknown as U);\n }\n }\n } else {\n nonCachedEntityIdsQuery.guids.add(id);\n }\n }\n\n if (nonCachedEntityIdsQuery.guids.size > 0) {\n const monitor = EntityCacheTaskMonitor.get(this._client);\n const nonCachedEntities = await monitor.getEntitiesAsync(this.uniqueId, classType, nonCachedEntityIdsQuery);\n await this.addEntitiesAsync(nonCachedEntities, addToFilter);\n if (nonCachedEntities != null) {\n for (const nonCachedEntity of nonCachedEntities) {\n entities.push(nonCachedEntity);\n }\n }\n }\n } finally {\n release();\n }\n return entities;\n }\n\n public getAllCachedEntities(): Array {\n const result = new Array();\n for (const cachedEntity of this._cache.values()) {\n result.push(cachedEntity.entity);\n }\n return result;\n }\n\n /// \n /// After every \"timespan\" the entity in the cache are forced to rehresh ( full or relations only ).\n /// Should only be used on entity for \"readonly\" ( aka modifying a relation will have random result since they are\n /// going to be reseted in the background )\n /// \n public async setEntityCacheLifetimeAsync(id: IGuid, ts: number, addToFilter: boolean, clearRelationOnly: boolean) {\n const lst = SafeGuid.createSet();\n lst.add(id);\n return await this.setEntitiesCacheLifetimeAsync(lst, ts, addToFilter, clearRelationOnly);\n }\n\n /// \n /// After every \"timespan\" the entities in the cache are forced to rehresh ( full or relations only ).\n /// Should only be used on entity for \"readonly\" ( aka modifying a relation will have random result since they are\n /// going to be reseted in the background )\n /// \n public async setEntitiesCacheLifetimeAsync(ids: Set, ts: number, addToFilter: boolean, clearRelationOnly: boolean) {\n const nonCachedEntities = SafeGuid.createSet();\n for (const id of ids) {\n if (this._cache.has(id) === false) {\n nonCachedEntities.add(id);\n }\n }\n\n const entities = await this.getEntitiesAsync(Entity, nonCachedEntities, addToFilter); // force a cache update\n for (const entity of entities) {\n if (this._clearRelationDictionary.has(entity.id)) {\n const re = this._clearRelationDictionary.get(entity.id);\n if (re) {\n re.timer.dispose();\n this._clearRelationDictionary.delete(entity.id);\n }\n }\n\n const timer = new Timer(async () => {\n await this.clearRelationsAsync(entity.id);\n });\n timer.period(ts);\n this._clearRelationDictionary.set(entity.id, new RefreshEntity(entity.id, clearRelationOnly, timer));\n }\n }\n\n public async reEvaluateCachedEntitiesAsync(): Promise {\n // First find all the cached entities that has a \"detector\" configured, and force and invalidate on them\n const entitiesToRefresh = mapFilter(this._cache, (x) => x[1].modificationHandlers.size !== 0);\n\n // Verify if entity were deleted\n const entitiesToVerify = mapFilter(this._cache, (x) => x[1].deleteHandlers.size !== 0);\n\n for (const cachedEntity of entitiesToRefresh) {\n let allFlags = 0;\n if (this._invalidatedEntities.has(cachedEntity[0]) === false) {\n cachedEntity[1].modificationHandlers.forEach((x) => (allFlags |= x.validFlags));\n this._invalidatedEntities.set(cachedEntity[0], allFlags);\n } else {\n let newFlags = this._invalidatedEntities.get(cachedEntity[0]);\n if (newFlags) {\n newFlags |= allFlags;\n } else {\n newFlags = allFlags;\n }\n this._invalidatedEntities.set(cachedEntity[0], newFlags);\n }\n }\n this._debouncerInvalidate.trigger();\n\n // Deleted entities\n if (entitiesToVerify.length > 0) {\n const query = new EntityQuery();\n entitiesToVerify.forEach((x) => query.guids.add(x[0]));\n const monitor = EntityCacheTaskMonitor.get(this._client);\n const queryResult = await monitor.getEntitiesAsync(this.uniqueId, Entity, query);\n for (const entity of entitiesToVerify) {\n if (!queryResult.find((x) => x.id.toString() === entity[0].toString())) {\n // oups, it's deleted!\n await this.onEntityRemoved(new Args.EntityRemovedArg(entity[0], entity[1].entity.entityType));\n }\n }\n }\n }\n\n public async detectChangeAsync(id: IGuid, validFlags: number, toBeCalledOnModify?: modificationHandlerAction, comparer?: modificationHandlerComparer): Promise {\n if (this._cache.has(id) === false) {\n await this.getEntityAsync(Entity, id); // force a cache update\n }\n\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n const handler = new ModificationHandler();\n handler.validFlags = validFlags;\n if (comparer) {\n handler.comparer = comparer;\n }\n if (toBeCalledOnModify) {\n handler.action = toBeCalledOnModify;\n }\n\n cacheEntity.modificationHandlers.add(handler);\n if (comparer) {\n await comparer(cacheEntity.entity, cacheEntity.entity);\n }\n if (handler) {\n return handler.id;\n }\n }\n throw new Error('Entity cache element not found');\n }\n\n public async detectEntityRemovedAsync(id: IGuid, toBeCalledOnDelete: modificationHandlerDelete) {\n if (this._cache.has(id) === false) {\n await this.getEntityAsync(Entity, id); // force a cache update\n }\n\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n cacheEntity.deleteHandlers.add(toBeCalledOnDelete);\n return;\n }\n throw new Error('Entity cache element not found');\n }\n\n public detectEntityChange(entity: TEntity, ...fields: (keyof TEntity)[]): Observable {\n const createObservable = (field: keyof TEntity) =>\n new Observable((obs) => {\n const expr = () => entity[field];\n void this.detectFieldChangeAsync(entity, expr, (newEntity) => {\n obs.next(newEntity as TEntity);\n return Promise.resolve();\n });\n });\n\n // Each time one of the fields change, it will emit the new entity (with all the monitored fields updated).\n return merge(...fields.map((field) => createObservable(field)));\n }\n\n public async detectFieldChangeAsync(\n entity: IEntity,\n expr: (...args: any[]) => void,\n toBeCalledOnModify?: modificationHandlerField,\n comparer?: modificationHandlerComparer,\n ): Promise {\n entity.lastFieldValidFlags = -1;\n expr();\n if (entity.lastFieldValidFlags === -1) {\n return new Deferred(`Cannot detect field change because no ValidFlag is configured \\r\\n ${expr.toString()}`, false).promise;\n }\n const lastFieldName = entity.lastFieldName;\n const lastValidFlags = entity.lastFieldValidFlags;\n const lastFieldType = entity.lastFieldType;\n\n if (!comparer) {\n comparer = (newEntity: IEntity, orignalEntity: IEntity) => {\n if (lastFieldType === 'Date') {\n const originalValue = orignalEntity.getFieldDate(lastFieldName);\n const newValue = newEntity.getFieldDate(lastFieldName);\n const comparedReturn = originalValue === newValue;\n return new Deferred(comparedReturn).promise;\n } else if (lastFieldType === 'Guid') {\n const originalValue = orignalEntity.getFieldGuid(lastFieldName);\n const newValue = newEntity.getFieldGuid(lastFieldName);\n const comparedReturn = originalValue.equals(newValue);\n return new Deferred(comparedReturn).promise;\n } else {\n const originalValue = orignalEntity.getField(lastFieldName);\n const newValue = newEntity.getField(lastFieldName);\n // tslint:disable-next-line: strict-comparisons\n const comparedReturn = originalValue === newValue;\n return new Deferred(comparedReturn).promise;\n }\n };\n }\n\n const monitor = EntityCacheTaskMonitor.get(this._client);\n monitor.addMonitoredEntityField(this.uniqueId, entity, entity.lastFieldName, entity.lastFieldValidFlags);\n if (toBeCalledOnModify) {\n return await this.detectChangeAsync(\n entity.id,\n lastValidFlags,\n (newEntity, oldEntity) => toBeCalledOnModify(newEntity, newEntity.getField(lastFieldName), oldEntity.getField(lastFieldName)),\n comparer,\n );\n }\n\n // Doesn't need a callback, just make sure we are sniffing this invalidate\n return await this.setupInvalidateSnifferAsync(entity.id, lastValidFlags, comparer);\n }\n\n public async detectRelationChangeAsync(\n entity: IEntity,\n expr: (...args: any[]) => void,\n toBeCalledOnModify?: modificationHandlerAction,\n comparer?: modificationHandlerComparer,\n ): Promise {\n entity.lastRelationValidFlags = -1;\n expr();\n if (entity.lastRelationValidFlags === -1) {\n return new Deferred(`Cannot detect relation change because no ValidFlag is configured \\r\\n ${expr.toString()}`, false).promise;\n }\n\n const monitor = EntityCacheTaskMonitor.get(this._client);\n monitor.addMonitoredEntityRelation(this.uniqueId, entity, entity.lastRelationId, entity.lastRelationValidFlags);\n if (toBeCalledOnModify) {\n return await this.detectChangeAsync(entity.id, entity.lastRelationValidFlags, toBeCalledOnModify as modificationHandlerAction, comparer);\n }\n // Doesn't need a callback, just make sure we are sniffing this invalidate\n return await this.setupInvalidateSnifferAsync(entity.id, entity.lastRelationValidFlags, comparer);\n }\n\n public clearAllDetection(id: IGuid) {\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n cacheEntity.modificationHandlers.clear();\n }\n }\n\n public async detectEntityEventAsync(id: IGuid, eventType: string, toBeCalledOnEvent: modificationHandlerEvent) {\n if (this._cache.has(id) === false) {\n await this.getEntityAsync(Entity, id); // force a cache update\n }\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n cacheEntity.eventHandlers.set(eventType, toBeCalledOnEvent);\n const filter = new EventFilter();\n filter.eventTypes.add(eventType);\n const filterId = await this._client.addToStreamerFilterAsync(filter);\n this._registeredFilter.add(filterId);\n return;\n }\n throw new Error('Entity cache element not found');\n }\n\n public async updateAsync(entity?: IEntity | null, entities?: Set | null, transaction?: ITransaction | null): Promise {\n if (!entities) {\n entities = new Set();\n }\n\n if (entity) {\n entities.add(entity);\n }\n\n for (const updatedEntity of entities) {\n const cachedEntity = this._cache.get(updatedEntity.id);\n if (cachedEntity) {\n cachedEntity.isDirty = updatedEntity.isDirty;\n }\n }\n\n return await this._client.updateAsync(entity, entities, transaction);\n }\n\n // #endregion\n\n // #region Private method\n\n private async setupInvalidateSnifferAsync(id: IGuid, validFlags: number, comparer?: modificationHandlerComparer): Promise {\n if (this._cache.has(id) === false) {\n await this.getEntityAsync(Entity, id); // force a cache update\n }\n\n let setupDetector = false;\n const cacheEntity = this._cache.get(id);\n if (cacheEntity) {\n if (cacheEntity.modificationHandlers.any((x) => x.validFlags === validFlags) === false) {\n setupDetector = true;\n }\n } else {\n throw new Error('Entity cache element not found');\n }\n\n if (setupDetector) {\n return await this.detectChangeAsync(id, validFlags, () => new Deferred(true).promise, comparer);\n } else {\n return '';\n }\n }\n\n // #endregion\n\n // #region callbacks\n\n private async clearRelationsAsync(id: IGuid) {\n try {\n const re = this._clearRelationDictionary.get(id);\n if (re) {\n const ce = this._cache.get(id);\n if (ce) {\n await ce.entity.reloadAsync(re.clearRelationOnly);\n }\n }\n } catch (e) {}\n }\n\n private async performCacheUpdateAsync(): Promise {\n const toNotify = new Map();\n const ids = SafeGuid.createMap(this._invalidatedEntities.entries());\n this._invalidatedEntities.clear();\n\n if (ids.size === 0) {\n return;\n }\n\n try {\n // Download new one\n const query = new EntityQuery();\n query.guids = SafeGuid.createSet(ids.keys());\n\n for (const field of this._defaultDownloadMask) {\n query.fields.add(field);\n }\n const monitor = EntityCacheTaskMonitor.get(this._client);\n const entities = await monitor.getEntitiesAsync(this.uniqueId, Entity, query);\n\n // use the comparer\n for (let i = 0; i < entities.length; ++i) {\n if (this._cache.has(entities[i].id)) {\n const cachedElement = this._cache.get(entities[i].id);\n if (!cachedElement) {\n throw new Error('cachedElement is null');\n }\n // Copy old entity info\n const isCachedEntityDirty = cachedElement.isDirty;\n const oldEntity = cachedElement.entity;\n\n // update it in the cache dict\n const newEntity = entities[i];\n cachedElement.entity = newEntity;\n\n for (const handler of cachedElement.modificationHandlers) {\n if (!handler.action) {\n continue;\n }\n\n const invalidatedFlags = ids.get(newEntity.id);\n if (!invalidatedFlags) {\n throw new Error('invalidatedFlags is null');\n }\n if ((handler.validFlags & invalidatedFlags) !== 0) {\n let needToNotify = true;\n if (handler.comparer) {\n needToNotify = isCachedEntityDirty || !(await handler.comparer(newEntity, oldEntity));\n }\n if (needToNotify) {\n if (toNotify.has(handler.id) === false) {\n // prevent same handler being called multiple time\n toNotify.set(handler.id, [handler, newEntity, oldEntity]);\n }\n }\n }\n }\n }\n }\n } catch (e) {\n // Console.WriteLine(ex.ToString());\n } finally {\n }\n\n // Fire the notification\n for (const [, tuple] of toNotify) {\n try {\n const handler = tuple[0];\n if (!handler || !handler.action) {\n throw new Error('null tuple!');\n }\n await handler.action(tuple[1], tuple[2]);\n } catch (e) {\n // the cache doesn't care if your task failed!\n }\n }\n }\n\n private onLogonStateChanged(e: LogonStateChangedArgs): Promise {\n return new Promise(async (resolve) => {\n try {\n if (e.loggedOn() === true) {\n await this.reEvaluateCachedEntitiesAsync();\n }\n } catch (e) {}\n resolve(); // no matter, just complete it\n });\n }\n\n private async onEntityRemoved(e: Args.EntityRemovedArg) {\n try {\n const removed = new Set();\n\n if (this._cache.has(e.id)) {\n const foundElem = this._cache.get(e.id);\n if (foundElem) {\n removed.add(foundElem);\n this._cache.delete(e.id);\n }\n }\n\n for (const cachedElement of removed) {\n for (const handler of cachedElement.deleteHandlers) {\n try {\n await handler(e.id);\n } catch (e) {\n // ignore and continue\n }\n }\n }\n } catch (e) {\n // _client?.DiagnosticManager?.SendTraceAsync(LogSeverity.Warning, nameof(EntityCacheTask), \"OnEntityRemoved\", ex).FireAndForget();\n }\n }\n\n private onEntityInvalidated(e: Args.EntityInvalidatedArg) {\n try {\n if (this._cache.has(e.id)) {\n const cachedElement = this._cache.get(e.id);\n if (cachedElement) {\n for (const ele of cachedElement.modificationHandlers) {\n if ((e.flags & ele.validFlags) !== 0) {\n const monitor = EntityCacheTaskMonitor.get(this._client);\n monitor.onEntityInvalidated(this.uniqueId, e);\n\n if (this._invalidatedEntities.has(e.id) === false) {\n this._invalidatedEntities.set(e.id, e.flags);\n break;\n } else {\n let fl = this._invalidatedEntities.get(e.id);\n if (fl) {\n fl |= e.flags;\n } else {\n fl = e.flags;\n }\n this._invalidatedEntities.set(e.id, fl);\n }\n }\n }\n this._debouncerInvalidate.trigger();\n }\n }\n } catch (e) {}\n }\n\n private async onEventReceived(e: Args.EventReceivedArg) {\n try {\n if (e.event.hasField('sourceEntity')) {\n if (this._cache.has(e.event.sourceEntity)) {\n const cachedElement = this._cache.get(e.event.sourceEntity);\n if (cachedElement) {\n for (const handler of cachedElement.eventHandlers) {\n try {\n if (handler[0] === e.event.eventType) {\n await handler[1](e.event);\n }\n } catch (e) {\n // ignore and continue\n }\n }\n }\n }\n }\n } catch (e) {\n // _client?.DiagnosticManager?.SendTraceAsync(LogSeverity.Warning, nameof(EntityCacheTask), \"OnEntityRemoved\", ex).FireAndForget();\n }\n }\n\n // #endregion\n}\n","import { SecurityCenterClient } from '../SecurityCenterClient';\nimport { FieldObject } from '../../Helpers/FieldObject';\n\nexport class ActionBase extends FieldObject {\n // #region Fields\n\n // #endregion\n\n // #region Properties\n\n public get recipients(): Array {\n return this.getField>('Recipients');\n }\n\n public get destinationApplications(): Array {\n return this.getField>('DestinationApplications');\n }\n\n public get actionType(): string {\n return this.getField('ActionType');\n }\n\n public get timestamp(): Date {\n return this.getField('Timestamp');\n }\n\n public get sourceApplication(): string {\n return this.getField('SourceApplication');\n }\n\n // #endregion\n\n // #region Constructor\n\n constructor(data: FieldObject) {\n super();\n this.loadFields(data);\n }\n\n // #endregion\n\n // region Public methods\n\n public static registerActions(client: SecurityCenterClient): void {\n // client.RegisterActionType(ActionTypes.SendMessage, typeof(SendMessageAction));\n // client.RegisterActionType(ActionTypes.DisplayEntity, typeof(DisplayEntityAction));\n }\n\n // #endregion\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport class CurrentUserInfo {\n public id: IGuid = SafeGuid.EMPTY;\n public isAdministrator = false;\n public directoryId: IGuid = SafeGuid.EMPTY;\n public name = '';\n}\n","// Autogenerated: v2/help/Entities/ApiPrivilegedEntity?codegen=ts&InterfaceOnly=True&workflow=False on 2022-02-24 3:03:12 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class PrivilegedEntityFields extends EntityFields {\n public static archiveViewingLimitationField = 'ArchiveViewingLimitation';\n public static autoLogOffDurationField = 'AutoLogOffDuration';\n public static autoLogOffDurationInMinutesField = 'AutoLogOffDurationInMinutes';\n public static domainField = 'Domain';\n public static emailAddressField = 'EmailAddress';\n public static inheritArchiveViewingLimitationFromUserGroupField = 'InheritArchiveViewingLimitationFromUserGroup';\n public static inheritUserBurningConfigurationFromUserGroupField = 'InheritUserBurningConfigurationFromUserGroup';\n public static isAdministratorField = 'IsAdministrator';\n public static isAutoLogOffInheritedField = 'IsAutoLogOffInherited';\n public static isSecurityLevelInheritedField = 'IsSecurityLevelInherited';\n public static qualifiedNameField = 'QualifiedName';\n public static securityLevelField = 'SecurityLevel';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IUserBurningConfiguration extends IFieldObject {\n isEnabled: boolean | null;\n opacity: number | null;\n size: number | null;\n includeUsername: boolean | null;\n includeCameraName: boolean | null;\n includeWorkstation: boolean | null;\n overlayType: string | null;\n mosaicOrientation: string | null;\n overlayPosition: string | null;\n}\n\nexport interface IPtzPriority extends IFieldObject {\n task: IGuid;\n priority: number;\n}\n\nexport interface IPrivilege extends IFieldObject {\n id: IGuid;\n state: string;\n description: string;\n parents: ObservableCollection;\n setChildren: boolean;\n setParentsIfNecessary: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface IPrivilegedEntity extends IEntity {\n // #region REST Properties\n\n archiveViewingLimitation: number;\n\n autoLogOffDuration: number;\n\n autoLogOffDurationInMinutes: number;\n\n domain: string;\n\n emailAddress: string;\n\n inheritArchiveViewingLimitationFromUserGroup: boolean;\n\n inheritUserBurningConfigurationFromUserGroup: boolean;\n\n readonly isAdministrator: boolean;\n\n isAutoLogOffInherited: boolean;\n\n isSecurityLevelInherited: boolean;\n\n readonly qualifiedName: string;\n\n securityLevel: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n isLicenseSupportPrivilegeAsync(privilege: IGuid, transaction?: ITransaction): Promise;\n isPrivilegeGrantedAsync(privilege: IGuid, entity: IGuid, transaction?: ITransaction): Promise;\n getPartitionAdminsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getPartitionExceptionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getPartitionUserAccessAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getPrivilegesAsync(transaction?: ITransaction | null): Promise | null>;\n getPtzPrioritiesAsync(transaction?: ITransaction | null): Promise | null>;\n getPtzPrioritiesRecursiveAsync(transaction?: ITransaction | null): Promise | null>;\n getRelatedAlarmsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRemoteControllableAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n sendMessageAsync(message: string, timeoutDuration: number, transaction?: ITransaction): Promise;\n getUserBurningConfigurationAsync(transaction?: ITransaction | null): Promise;\n getUsergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getUsergroupsRecursiveAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPrivilegedEntity?codegen=ts&InterfaceOnly=False&workflow=False on 2022-02-24 3:03:15 PM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { Entity } from './Entity';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { IUserBurningConfiguration, IPrivilege, IPrivilegedEntity, PrivilegedEntityFields, IPtzPriority } from '../Interface/IPrivilegedEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class UserBurningConfiguration extends FieldObject implements IUserBurningConfiguration {\n // IsEnabled\n public get isEnabled(): boolean | null {\n return this.getNullableField('IsEnabled');\n }\n public set isEnabled(value: boolean | null) {\n this.setNullableField('IsEnabled', value);\n }\n // Opacity\n public get opacity(): number | null {\n return this.getNullableField('Opacity');\n }\n public set opacity(value: number | null) {\n this.setNullableField('Opacity', value);\n }\n // Size\n public get size(): number | null {\n return this.getNullableField('Size');\n }\n public set size(value: number | null) {\n this.setNullableField('Size', value);\n }\n // IncludeUsername\n public get includeUsername(): boolean | null {\n return this.getNullableField('IncludeUsername');\n }\n public set includeUsername(value: boolean | null) {\n this.setNullableField('IncludeUsername', value);\n }\n // IncludeCameraName\n public get includeCameraName(): boolean | null {\n return this.getNullableField('IncludeCameraName');\n }\n public set includeCameraName(value: boolean | null) {\n this.setNullableField('IncludeCameraName', value);\n }\n // IncludeWorkstation\n public get includeWorkstation(): boolean | null {\n return this.getNullableField('IncludeWorkstation');\n }\n public set includeWorkstation(value: boolean | null) {\n this.setNullableField('IncludeWorkstation', value);\n }\n // OverlayType\n public get overlayType(): string | null {\n return this.getNullableField('OverlayType');\n }\n public set overlayType(value: string | null) {\n this.setNullableField('OverlayType', value);\n }\n // MosaicOrientation\n public get mosaicOrientation(): string | null {\n return this.getNullableField('MosaicOrientation');\n }\n public set mosaicOrientation(value: string | null) {\n this.setNullableField('MosaicOrientation', value);\n }\n // OverlayPosition\n public get overlayPosition(): string | null {\n return this.getNullableField('OverlayPosition');\n }\n public set overlayPosition(value: string | null) {\n this.setNullableField('OverlayPosition', value);\n }\n\n public initializeAllFields(): void {\n this.setField('IsEnabled', false);\n this.setField('Opacity', 0);\n this.setField('Size', 0);\n this.setField('IncludeUsername', false);\n this.setField('IncludeCameraName', false);\n this.setField('IncludeWorkstation', false);\n this.setField('OverlayType', '');\n this.setField('MosaicOrientation', '');\n this.setField('OverlayPosition', '');\n }\n}\n\nexport class PtzPriority extends FieldObject implements IPtzPriority {\n // Task\n public get task(): IGuid {\n return this.getFieldGuid('Task');\n }\n public set task(value: IGuid) {\n this.setFieldGuid('Task', value);\n }\n // Priority\n public get priority(): number {\n return this.getField('Priority');\n }\n public set priority(value: number) {\n this.setField('Priority', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Task', SafeGuid.EMPTY);\n this.setField('Priority', 0);\n }\n}\n\nexport class Privilege extends FieldObject implements IPrivilege {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // State\n public get state(): string {\n return this.getField('State');\n }\n public set state(value: string) {\n this.setField('State', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Parents\n public get parents(): ObservableCollection {\n return this.getFieldArrayGuid('Parents');\n }\n public set parents(value: ObservableCollection) {\n this.setFieldArrayGuid('Parents', value);\n }\n // SetChildren\n public get setChildren(): boolean {\n return this.getField('SetChildren');\n }\n public set setChildren(value: boolean) {\n this.setField('SetChildren', value);\n }\n // SetParentsIfNecessary\n public get setParentsIfNecessary(): boolean {\n return this.getField('SetParentsIfNecessary');\n }\n public set setParentsIfNecessary(value: boolean) {\n this.setField('SetParentsIfNecessary', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('State', '');\n this.setField('Description', '');\n this.setFieldArrayGuid('Parents', new ObservableCollection());\n this.setField('SetChildren', false);\n this.setField('SetParentsIfNecessary', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class PrivilegedEntity extends Entity implements IPrivilegedEntity {\n // #region REST Properties\n\n // ArchiveViewingLimitation\n public get archiveViewingLimitation(): number {\n return this.getField(PrivilegedEntityFields.archiveViewingLimitationField, ValidFlags.SpecificExtra);\n }\n public set archiveViewingLimitation(value: number) {\n this.setField(PrivilegedEntityFields.archiveViewingLimitationField, value);\n }\n\n // AutoLogOffDuration\n public get autoLogOffDuration(): number {\n return this.getField(PrivilegedEntityFields.autoLogOffDurationField, ValidFlags.Specific);\n }\n public set autoLogOffDuration(value: number) {\n this.setField(PrivilegedEntityFields.autoLogOffDurationField, value);\n }\n\n // AutoLogOffDurationInMinutes\n public get autoLogOffDurationInMinutes(): number {\n return this.getField(PrivilegedEntityFields.autoLogOffDurationInMinutesField, ValidFlags.Specific);\n }\n public set autoLogOffDurationInMinutes(value: number) {\n this.setField(PrivilegedEntityFields.autoLogOffDurationInMinutesField, value);\n }\n\n // Domain\n public get domain(): string {\n return this.getField(PrivilegedEntityFields.domainField);\n }\n public set domain(value: string) {\n this.setField(PrivilegedEntityFields.domainField, value);\n }\n\n // EmailAddress\n public get emailAddress(): string {\n return this.getField(PrivilegedEntityFields.emailAddressField, ValidFlags.Specific);\n }\n public set emailAddress(value: string) {\n this.setField(PrivilegedEntityFields.emailAddressField, value);\n }\n\n // InheritArchiveViewingLimitationFromUserGroup\n public get inheritArchiveViewingLimitationFromUserGroup(): boolean {\n return this.getField(PrivilegedEntityFields.inheritArchiveViewingLimitationFromUserGroupField, ValidFlags.SpecificExtra);\n }\n public set inheritArchiveViewingLimitationFromUserGroup(value: boolean) {\n this.setField(PrivilegedEntityFields.inheritArchiveViewingLimitationFromUserGroupField, value);\n }\n\n // InheritUserBurningConfigurationFromUserGroup\n public get inheritUserBurningConfigurationFromUserGroup(): boolean {\n return this.getField(PrivilegedEntityFields.inheritUserBurningConfigurationFromUserGroupField, ValidFlags.SpecificExtra);\n }\n public set inheritUserBurningConfigurationFromUserGroup(value: boolean) {\n this.setField(PrivilegedEntityFields.inheritUserBurningConfigurationFromUserGroupField, value);\n }\n\n // IsAdministrator\n public get isAdministrator(): boolean {\n return this.getField(PrivilegedEntityFields.isAdministratorField);\n }\n\n // IsAutoLogOffInherited\n public get isAutoLogOffInherited(): boolean {\n return this.getField(PrivilegedEntityFields.isAutoLogOffInheritedField, ValidFlags.Specific);\n }\n public set isAutoLogOffInherited(value: boolean) {\n this.setField(PrivilegedEntityFields.isAutoLogOffInheritedField, value);\n }\n\n // IsSecurityLevelInherited\n public get isSecurityLevelInherited(): boolean {\n return this.getField(PrivilegedEntityFields.isSecurityLevelInheritedField, ValidFlags.Specific);\n }\n public set isSecurityLevelInherited(value: boolean) {\n this.setField(PrivilegedEntityFields.isSecurityLevelInheritedField, value);\n }\n\n // QualifiedName\n public get qualifiedName(): string {\n return this.getField(PrivilegedEntityFields.qualifiedNameField);\n }\n\n // SecurityLevel\n public get securityLevel(): number {\n return this.getField(PrivilegedEntityFields.securityLevelField, ValidFlags.Specific);\n }\n public set securityLevel(value: number) {\n this.setField(PrivilegedEntityFields.securityLevelField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor(entityType: string) {\n super(entityType);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async isLicenseSupportPrivilegeAsync(privilege: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['licenseSupportPrivilege'] as boolean;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('privilege', privilege);\n\n return this.executeRequestTransactionAsync('IsLicenseSupportPrivilege', 'POST', inParam, transaction, responseHandler);\n }\n\n public async isPrivilegeGrantedAsync(privilege: IGuid, entity: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['granted'] as boolean;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('privilege', privilege);\n inParam.setFieldGuid('entity', entity);\n\n return this.executeRequestTransactionAsync('IsPrivilegeGranted', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getPartitionAdminsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('PartitionAdmin', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async getPartitionExceptionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('PartitionExceptions', 'Id', true, query, ValidFlags.Specific, transaction);\n }\n\n public async getPartitionUserAccessAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('PartitionUserAccess', 'Id', false, query, ValidFlags.MemberOf2, transaction);\n }\n\n public async getPrivilegesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Privilege, 'Privileges', 'Id', false, true, ValidFlags.Specific, transaction);\n }\n\n public async getPtzPrioritiesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PtzPriority, 'PtzPriorities', 'Task', false, true, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getPtzPrioritiesRecursiveAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PtzPriority, 'PtzPrioritiesRecursive', 'Task', true, false, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getRelatedAlarmsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('RelatedAlarms', 'Id', true, query, ValidFlags.MemberOf3, transaction);\n }\n\n public async getRemoteControllableAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('RemoteControllable', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async sendMessageAsync(message: string, timeoutDuration: number, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('message', message);\n inParam.setField('timeoutDuration', timeoutDuration);\n\n return this.executeRequestTransactionAsync('SendMessage', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getUserBurningConfigurationAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(UserBurningConfiguration, 'UserBurningConfiguration', true, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getUsergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Usergroups', 'Id', false, query, ValidFlags.Membership, transaction);\n }\n\n public async getUsergroupsRecursiveAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('UsergroupsRecursive', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUser?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IPrivilegedEntity, PrivilegedEntityFields } from './IPrivilegedEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class UserEntityFields extends PrivilegedEntityFields {\n public static appendMapToIncidentContentField = 'AppendMapToIncidentContent';\n public static areIncidentMonitoringTasksSynchronizedField = 'AreIncidentMonitoringTasksSynchronized';\n public static autoLogOffIsActivatedField = 'AutoLogOffIsActivated';\n public static automaticallyChangeIncidentStateField = 'AutomaticallyChangeIncidentState';\n public static defaultMapIdField = 'DefaultMapId';\n public static defaultMeasurementSystemField = 'DefaultMeasurementSystem';\n public static firstNameField = 'FirstName';\n public static hideAreaViewForIncidentField = 'HideAreaViewForIncident';\n public static incidentContentSpecificScreenField = 'IncidentContentSpecificScreen';\n public static includeAuditMetadataField = 'IncludeAuditMetadata';\n public static isActiveField = 'IsActive';\n public static isDomainDisplayedField = 'IsDomainDisplayed';\n public static isOptionsAlreadyImportedField = 'IsOptionsAlreadyImported';\n public static isPrivateTasksSortedByTypeField = 'IsPrivateTasksSortedByType';\n public static isPublicTasksSortedByTypeField = 'IsPublicTasksSortedByType';\n public static lastMobileApplicationIdField = 'LastMobileApplicationId';\n public static lastNameField = 'LastName';\n public static lastSelectedBadgeTemplateField = 'LastSelectedBadgeTemplate';\n public static lastSelectedBypassAntipassbackRulesOptionField = 'LastSelectedBypassAntipassbackRulesOption';\n public static lastSelectedCameraForSnapshotField = 'LastSelectedCameraForSnapshot';\n public static lastSelectedCardholderGroupField = 'LastSelectedCardholderGroup';\n public static lastSelectedCredentialConfigurationField = 'LastSelectedCredentialConfiguration';\n public static lastSelectedCredentialFormatField = 'LastSelectedCredentialFormat';\n public static lastSelectedPartitionField = 'LastSelectedPartition';\n public static lastSelectedSaveAsPublicTaskField = 'LastSelectedSaveAsPublicTask';\n public static lastSelectedTemporaryCardExpirationField = 'LastSelectedTemporaryCardExpiration';\n public static lastSelectedUseExtendedGrantTimeOptionField = 'LastSelectedUseExtendedGrantTimeOption';\n public static lastSelectedVisitorEscortField = 'LastSelectedVisitorEscort';\n public static lastSelectedVisitorEscort2Field = 'LastSelectedVisitorEscort2';\n public static lastSelectedVisitorEscortMandatoryField = 'LastSelectedVisitorEscortMandatory';\n public static lastSelectedVisitorExpirationTimeField = 'LastSelectedVisitorExpirationTime';\n public static lastSelectedVisitorGroupField = 'LastSelectedVisitorGroup';\n public static maxConcurrentLogonsField = 'MaxConcurrentLogons';\n public static measurementSystemField = 'MeasurementSystem';\n public static minumumIncidentPriorityInTrayField = 'MinumumIncidentPriorityInTray';\n public static needChangePasswordField = 'NeedChangePassword';\n public static obfuscateEntityNamesField = 'ObfuscateEntityNames';\n public static openIncidentContentInSpecificScreenField = 'OpenIncidentContentInSpecificScreen';\n public static passwordField = 'Password';\n public static passwordExpirationField = 'PasswordExpiration';\n public static passwordLastModifiedField = 'PasswordLastModified';\n public static queryUsingDeviceTimeZonesField = 'QueryUsingDeviceTimeZones';\n public static showAllIncidentsOnDefaultMapField = 'ShowAllIncidentsOnDefaultMap';\n public static showMapAssistantField = 'ShowMapAssistant';\n public static skipPtzEvaluationField = 'SkipPtzEvaluation';\n public static specificTimezoneField = 'SpecificTimezone';\n public static thumbnailIdField = 'ThumbnailId';\n public static useDeviceTimezoneField = 'UseDeviceTimezone';\n public static useTimezoneAbbreviationsField = 'UseTimezoneAbbreviations';\n public static webClientLanguageField = 'WebClientLanguage';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IWebClientTask extends IFieldObject {\n path: string;\n guid: IGuid;\n name: string;\n taskType: IGuid;\n taskSubType: IGuid;\n context: string;\n isSystemTask: boolean;\n}\n\nexport interface IUserSetting extends IFieldObject {\n id: IGuid;\n value: string;\n}\n\nexport interface ILogOnSchedule extends IFieldObject {\n id: IGuid;\n allowed: boolean;\n}\n\nexport interface IHotAction extends IFieldObject {\n id: IGuid;\n description: string;\n}\n\nexport interface IHasAccessResult extends IFieldObject {\n id: IGuid;\n hasAccess: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface IUserEntity extends IPrivilegedEntity {\n // #region REST Properties\n\n appendMapToIncidentContent: boolean;\n\n areIncidentMonitoringTasksSynchronized: boolean;\n\n autoLogOffIsActivated: boolean;\n\n automaticallyChangeIncidentState: boolean;\n\n defaultMapId: IGuid;\n\n defaultMeasurementSystem: string;\n\n firstName: string;\n\n hideAreaViewForIncident: boolean;\n\n incidentContentSpecificScreen: number;\n\n readonly includeAuditMetadata: boolean;\n\n isActive: boolean;\n\n readonly isDomainDisplayed: boolean;\n\n isOptionsAlreadyImported: boolean;\n\n isPrivateTasksSortedByType: boolean;\n\n isPublicTasksSortedByType: boolean;\n\n lastMobileApplicationId: string;\n\n lastName: string;\n\n lastSelectedBadgeTemplate: IGuid;\n\n lastSelectedBypassAntipassbackRulesOption: boolean;\n\n lastSelectedCameraForSnapshot: IGuid;\n\n lastSelectedCardholderGroup: IGuid;\n\n lastSelectedCredentialConfiguration: number;\n\n lastSelectedCredentialFormat: IGuid;\n\n lastSelectedPartition: IGuid;\n\n lastSelectedSaveAsPublicTask: boolean;\n\n lastSelectedTemporaryCardExpiration: number;\n\n lastSelectedUseExtendedGrantTimeOption: boolean;\n\n lastSelectedVisitorEscort: IGuid;\n\n lastSelectedVisitorEscort2: IGuid;\n\n lastSelectedVisitorEscortMandatory: boolean;\n\n lastSelectedVisitorExpirationTime: number;\n\n lastSelectedVisitorGroup: IGuid;\n\n maxConcurrentLogons: number;\n\n measurementSystem: string;\n\n minumumIncidentPriorityInTray: IGuid;\n\n needChangePassword: boolean;\n\n obfuscateEntityNames: boolean;\n\n openIncidentContentInSpecificScreen: boolean;\n\n password: string;\n\n passwordExpiration: number;\n\n readonly passwordLastModified: Date;\n\n readonly queryUsingDeviceTimeZones: boolean;\n\n showAllIncidentsOnDefaultMap: boolean;\n\n showMapAssistant: boolean;\n\n skipPtzEvaluation: boolean;\n\n specificTimezone: string;\n\n thumbnailId: IGuid;\n\n useDeviceTimezone: boolean;\n\n useTimezoneAbbreviations: boolean;\n\n webClientLanguage: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getApplicationLoggedAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getFavoritesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getFavoritesCTAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getFavoritesMapsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n addForceUserStatusAsync(isActive: boolean, transaction?: ITransaction): Promise;\n hasAccessAsync(entityId: IGuid, transaction?: ITransaction): Promise;\n hasAccessListAsync(ids: ObservableCollection, transaction?: ITransaction): Promise | null>;\n getHotActionsAsync(transaction?: ITransaction | null): Promise | null>;\n getLogonSchedulesAsync(transaction?: ITransaction | null): Promise | null>;\n getRecentlyUsedAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRecentlyUsedCTAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n safeUpdatePasswordAsync(newValue: string, oldValue: string, transaction?: ITransaction): Promise;\n getUserSettingsAsync(transaction?: ITransaction | null): Promise | null>;\n getWebClientTasksAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUser?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:21 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { PrivilegedEntity } from './PrivilegedEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { IUserEntity, IWebClientTask, IUserSetting, ILogOnSchedule, IHotAction, IHasAccessResult, UserEntityFields } from '../Interface/IUserEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\n\n// #region Inner classes\n\nexport class WebClientTask extends FieldObject implements IWebClientTask {\n // Path\n public get path(): string {\n return this.getField('Path');\n }\n public set path(value: string) {\n this.setField('Path', value);\n }\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // TaskType\n public get taskType(): IGuid {\n return this.getFieldGuid('TaskType');\n }\n public set taskType(value: IGuid) {\n this.setFieldGuid('TaskType', value);\n }\n // TaskSubType\n public get taskSubType(): IGuid {\n return this.getFieldGuid('TaskSubType');\n }\n public set taskSubType(value: IGuid) {\n this.setFieldGuid('TaskSubType', value);\n }\n // Context\n public get context(): string {\n return this.getField('Context');\n }\n public set context(value: string) {\n this.setField('Context', value);\n }\n // IsSystemTask\n public get isSystemTask(): boolean {\n return this.getField('IsSystemTask');\n }\n public set isSystemTask(value: boolean) {\n this.setField('IsSystemTask', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Path', '');\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setFieldGuid('TaskType', SafeGuid.EMPTY);\n this.setFieldGuid('TaskSubType', SafeGuid.EMPTY);\n this.setField('Context', '');\n this.setField('IsSystemTask', false);\n }\n}\n\nexport class UserSetting extends FieldObject implements IUserSetting {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Value', '');\n }\n}\n\nexport class LogOnSchedule extends FieldObject implements ILogOnSchedule {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Allowed\n public get allowed(): boolean {\n return this.getField('Allowed');\n }\n public set allowed(value: boolean) {\n this.setField('Allowed', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Allowed', false);\n }\n}\n\nexport class HotAction extends FieldObject implements IHotAction {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Description', '');\n }\n}\n\nexport class HasAccessResult extends FieldObject implements IHasAccessResult {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // HasAccess\n public get hasAccess(): boolean {\n return this.getField('HasAccess');\n }\n public set hasAccess(value: boolean) {\n this.setField('HasAccess', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('HasAccess', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class UserEntity extends PrivilegedEntity implements IUserEntity {\n // #region REST Properties\n\n // AppendMapToIncidentContent\n public get appendMapToIncidentContent(): boolean {\n return this.getField(UserEntityFields.appendMapToIncidentContentField, ValidFlags.SpecificExtra);\n }\n public set appendMapToIncidentContent(value: boolean) {\n this.setField(UserEntityFields.appendMapToIncidentContentField, value);\n }\n\n // AreIncidentMonitoringTasksSynchronized\n public get areIncidentMonitoringTasksSynchronized(): boolean {\n return this.getField(UserEntityFields.areIncidentMonitoringTasksSynchronizedField, ValidFlags.SpecificExtra);\n }\n public set areIncidentMonitoringTasksSynchronized(value: boolean) {\n this.setField(UserEntityFields.areIncidentMonitoringTasksSynchronizedField, value);\n }\n\n // AutoLogOffIsActivated\n public get autoLogOffIsActivated(): boolean {\n return this.getField(UserEntityFields.autoLogOffIsActivatedField, ValidFlags.Specific);\n }\n public set autoLogOffIsActivated(value: boolean) {\n this.setField(UserEntityFields.autoLogOffIsActivatedField, value);\n }\n\n // AutomaticallyChangeIncidentState\n public get automaticallyChangeIncidentState(): boolean {\n return this.getField(UserEntityFields.automaticallyChangeIncidentStateField, ValidFlags.SpecificExtra);\n }\n public set automaticallyChangeIncidentState(value: boolean) {\n this.setField(UserEntityFields.automaticallyChangeIncidentStateField, value);\n }\n\n // DefaultMapId\n public get defaultMapId(): IGuid {\n return this.getFieldGuid(UserEntityFields.defaultMapIdField, ValidFlags.SpecificExtra);\n }\n public set defaultMapId(value: IGuid) {\n this.setFieldGuid(UserEntityFields.defaultMapIdField, value);\n }\n\n // DefaultMeasurementSystem\n public get defaultMeasurementSystem(): string {\n return this.getField(UserEntityFields.defaultMeasurementSystemField, ValidFlags.SpecificExtra);\n }\n public set defaultMeasurementSystem(value: string) {\n this.setField(UserEntityFields.defaultMeasurementSystemField, value);\n }\n\n // FirstName\n public get firstName(): string {\n return this.getField(UserEntityFields.firstNameField, ValidFlags.Specific);\n }\n public set firstName(value: string) {\n this.setField(UserEntityFields.firstNameField, value);\n }\n\n // HideAreaViewForIncident\n public get hideAreaViewForIncident(): boolean {\n return this.getField(UserEntityFields.hideAreaViewForIncidentField, ValidFlags.SpecificExtra);\n }\n public set hideAreaViewForIncident(value: boolean) {\n this.setField(UserEntityFields.hideAreaViewForIncidentField, value);\n }\n\n // IncidentContentSpecificScreen\n public get incidentContentSpecificScreen(): number {\n return this.getField(UserEntityFields.incidentContentSpecificScreenField, ValidFlags.SpecificExtra);\n }\n public set incidentContentSpecificScreen(value: number) {\n this.setField(UserEntityFields.incidentContentSpecificScreenField, value);\n }\n\n // IncludeAuditMetadata\n public get includeAuditMetadata(): boolean {\n return this.getField(UserEntityFields.includeAuditMetadataField, ValidFlags.SpecificExtra);\n }\n\n // IsActive\n public get isActive(): boolean {\n return this.getField(UserEntityFields.isActiveField, ValidFlags.Specific);\n }\n public set isActive(value: boolean) {\n this.setField(UserEntityFields.isActiveField, value);\n }\n\n // IsDomainDisplayed\n public get isDomainDisplayed(): boolean {\n return this.getField(UserEntityFields.isDomainDisplayedField, ValidFlags.SpecificExtra);\n }\n\n // IsOptionsAlreadyImported\n public get isOptionsAlreadyImported(): boolean {\n return this.getField(UserEntityFields.isOptionsAlreadyImportedField, ValidFlags.SpecificExtra);\n }\n public set isOptionsAlreadyImported(value: boolean) {\n this.setField(UserEntityFields.isOptionsAlreadyImportedField, value);\n }\n\n // IsPrivateTasksSortedByType\n public get isPrivateTasksSortedByType(): boolean {\n return this.getField(UserEntityFields.isPrivateTasksSortedByTypeField, ValidFlags.SpecificExtra);\n }\n public set isPrivateTasksSortedByType(value: boolean) {\n this.setField(UserEntityFields.isPrivateTasksSortedByTypeField, value);\n }\n\n // IsPublicTasksSortedByType\n public get isPublicTasksSortedByType(): boolean {\n return this.getField(UserEntityFields.isPublicTasksSortedByTypeField, ValidFlags.SpecificExtra);\n }\n public set isPublicTasksSortedByType(value: boolean) {\n this.setField(UserEntityFields.isPublicTasksSortedByTypeField, value);\n }\n\n // LastMobileApplicationId\n public get lastMobileApplicationId(): string {\n return this.getField(UserEntityFields.lastMobileApplicationIdField, ValidFlags.SpecificExtra);\n }\n public set lastMobileApplicationId(value: string) {\n this.setField(UserEntityFields.lastMobileApplicationIdField, value);\n }\n\n // LastName\n public get lastName(): string {\n return this.getField(UserEntityFields.lastNameField, ValidFlags.Specific);\n }\n public set lastName(value: string) {\n this.setField(UserEntityFields.lastNameField, value);\n }\n\n // LastSelectedBadgeTemplate\n public get lastSelectedBadgeTemplate(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedBadgeTemplateField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedBadgeTemplate(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedBadgeTemplateField, value);\n }\n\n // LastSelectedBypassAntipassbackRulesOption\n public get lastSelectedBypassAntipassbackRulesOption(): boolean {\n return this.getField(UserEntityFields.lastSelectedBypassAntipassbackRulesOptionField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedBypassAntipassbackRulesOption(value: boolean) {\n this.setField(UserEntityFields.lastSelectedBypassAntipassbackRulesOptionField, value);\n }\n\n // LastSelectedCameraForSnapshot\n public get lastSelectedCameraForSnapshot(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedCameraForSnapshotField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedCameraForSnapshot(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedCameraForSnapshotField, value);\n }\n\n // LastSelectedCardholderGroup\n public get lastSelectedCardholderGroup(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedCardholderGroupField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedCardholderGroup(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedCardholderGroupField, value);\n }\n\n // LastSelectedCredentialConfiguration\n public get lastSelectedCredentialConfiguration(): number {\n return this.getField(UserEntityFields.lastSelectedCredentialConfigurationField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedCredentialConfiguration(value: number) {\n this.setField(UserEntityFields.lastSelectedCredentialConfigurationField, value);\n }\n\n // LastSelectedCredentialFormat\n public get lastSelectedCredentialFormat(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedCredentialFormatField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedCredentialFormat(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedCredentialFormatField, value);\n }\n\n // LastSelectedPartition\n public get lastSelectedPartition(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedPartitionField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedPartition(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedPartitionField, value);\n }\n\n // LastSelectedSaveAsPublicTask\n public get lastSelectedSaveAsPublicTask(): boolean {\n return this.getField(UserEntityFields.lastSelectedSaveAsPublicTaskField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedSaveAsPublicTask(value: boolean) {\n this.setField(UserEntityFields.lastSelectedSaveAsPublicTaskField, value);\n }\n\n // LastSelectedTemporaryCardExpiration\n public get lastSelectedTemporaryCardExpiration(): number {\n return this.getField(UserEntityFields.lastSelectedTemporaryCardExpirationField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedTemporaryCardExpiration(value: number) {\n this.setField(UserEntityFields.lastSelectedTemporaryCardExpirationField, value);\n }\n\n // LastSelectedUseExtendedGrantTimeOption\n public get lastSelectedUseExtendedGrantTimeOption(): boolean {\n return this.getField(UserEntityFields.lastSelectedUseExtendedGrantTimeOptionField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedUseExtendedGrantTimeOption(value: boolean) {\n this.setField(UserEntityFields.lastSelectedUseExtendedGrantTimeOptionField, value);\n }\n\n // LastSelectedVisitorEscort\n public get lastSelectedVisitorEscort(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedVisitorEscortField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedVisitorEscort(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedVisitorEscortField, value);\n }\n\n // LastSelectedVisitorEscort2\n public get lastSelectedVisitorEscort2(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedVisitorEscort2Field, ValidFlags.SpecificExtra);\n }\n public set lastSelectedVisitorEscort2(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedVisitorEscort2Field, value);\n }\n\n // LastSelectedVisitorEscortMandatory\n public get lastSelectedVisitorEscortMandatory(): boolean {\n return this.getField(UserEntityFields.lastSelectedVisitorEscortMandatoryField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedVisitorEscortMandatory(value: boolean) {\n this.setField(UserEntityFields.lastSelectedVisitorEscortMandatoryField, value);\n }\n\n // LastSelectedVisitorExpirationTime\n public get lastSelectedVisitorExpirationTime(): number {\n return this.getField(UserEntityFields.lastSelectedVisitorExpirationTimeField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedVisitorExpirationTime(value: number) {\n this.setField(UserEntityFields.lastSelectedVisitorExpirationTimeField, value);\n }\n\n // LastSelectedVisitorGroup\n public get lastSelectedVisitorGroup(): IGuid {\n return this.getFieldGuid(UserEntityFields.lastSelectedVisitorGroupField, ValidFlags.SpecificExtra);\n }\n public set lastSelectedVisitorGroup(value: IGuid) {\n this.setFieldGuid(UserEntityFields.lastSelectedVisitorGroupField, value);\n }\n\n // MaxConcurrentLogons\n public get maxConcurrentLogons(): number {\n return this.getField(UserEntityFields.maxConcurrentLogonsField, ValidFlags.Specific);\n }\n public set maxConcurrentLogons(value: number) {\n this.setField(UserEntityFields.maxConcurrentLogonsField, value);\n }\n\n // MeasurementSystem\n public get measurementSystem(): string {\n return this.getField(UserEntityFields.measurementSystemField, ValidFlags.SpecificExtra);\n }\n public set measurementSystem(value: string) {\n this.setField(UserEntityFields.measurementSystemField, value);\n }\n\n // MinumumIncidentPriorityInTray\n public get minumumIncidentPriorityInTray(): IGuid {\n return this.getFieldGuid(UserEntityFields.minumumIncidentPriorityInTrayField, ValidFlags.SpecificExtra);\n }\n public set minumumIncidentPriorityInTray(value: IGuid) {\n this.setFieldGuid(UserEntityFields.minumumIncidentPriorityInTrayField, value);\n }\n\n // NeedChangePassword\n public get needChangePassword(): boolean {\n return this.getField(UserEntityFields.needChangePasswordField, ValidFlags.Specific);\n }\n public set needChangePassword(value: boolean) {\n this.setField(UserEntityFields.needChangePasswordField, value);\n }\n\n // ObfuscateEntityNames\n public get obfuscateEntityNames(): boolean {\n return this.getField(UserEntityFields.obfuscateEntityNamesField, ValidFlags.Specific);\n }\n public set obfuscateEntityNames(value: boolean) {\n this.setField(UserEntityFields.obfuscateEntityNamesField, value);\n }\n\n // OpenIncidentContentInSpecificScreen\n public get openIncidentContentInSpecificScreen(): boolean {\n return this.getField(UserEntityFields.openIncidentContentInSpecificScreenField, ValidFlags.SpecificExtra);\n }\n public set openIncidentContentInSpecificScreen(value: boolean) {\n this.setField(UserEntityFields.openIncidentContentInSpecificScreenField, value);\n }\n\n // Password\n public get password(): string {\n return this.getField(UserEntityFields.passwordField, ValidFlags.Specific);\n }\n public set password(value: string) {\n this.setField(UserEntityFields.passwordField, value);\n }\n\n // PasswordExpiration\n public get passwordExpiration(): number {\n return this.getField(UserEntityFields.passwordExpirationField, ValidFlags.Specific);\n }\n public set passwordExpiration(value: number) {\n this.setField(UserEntityFields.passwordExpirationField, value);\n }\n\n // PasswordLastModified\n public get passwordLastModified(): Date {\n return this.getFieldDate(UserEntityFields.passwordLastModifiedField, ValidFlags.Specific);\n }\n\n // QueryUsingDeviceTimeZones\n public get queryUsingDeviceTimeZones(): boolean {\n return this.getField(UserEntityFields.queryUsingDeviceTimeZonesField, ValidFlags.SpecificExtra);\n }\n\n // ShowAllIncidentsOnDefaultMap\n public get showAllIncidentsOnDefaultMap(): boolean {\n return this.getField(UserEntityFields.showAllIncidentsOnDefaultMapField, ValidFlags.SpecificExtra);\n }\n public set showAllIncidentsOnDefaultMap(value: boolean) {\n this.setField(UserEntityFields.showAllIncidentsOnDefaultMapField, value);\n }\n\n // ShowMapAssistant\n public get showMapAssistant(): boolean {\n return this.getField(UserEntityFields.showMapAssistantField, ValidFlags.SpecificExtra);\n }\n public set showMapAssistant(value: boolean) {\n this.setField(UserEntityFields.showMapAssistantField, value);\n }\n\n // SkipPtzEvaluation\n public get skipPtzEvaluation(): boolean {\n return this.getField(UserEntityFields.skipPtzEvaluationField, ValidFlags.SpecificExtra);\n }\n public set skipPtzEvaluation(value: boolean) {\n this.setField(UserEntityFields.skipPtzEvaluationField, value);\n }\n\n // SpecificTimezone\n public get specificTimezone(): string {\n return this.getField(UserEntityFields.specificTimezoneField, ValidFlags.SpecificExtra);\n }\n public set specificTimezone(value: string) {\n this.setField(UserEntityFields.specificTimezoneField, value);\n }\n\n // ThumbnailId\n public get thumbnailId(): IGuid {\n return this.getFieldGuid(UserEntityFields.thumbnailIdField, ValidFlags.Specific);\n }\n public set thumbnailId(value: IGuid) {\n this.setFieldGuid(UserEntityFields.thumbnailIdField, value);\n }\n\n // UseDeviceTimezone\n public get useDeviceTimezone(): boolean {\n return this.getField(UserEntityFields.useDeviceTimezoneField, ValidFlags.SpecificExtra);\n }\n public set useDeviceTimezone(value: boolean) {\n this.setField(UserEntityFields.useDeviceTimezoneField, value);\n }\n\n // UseTimezoneAbbreviations\n public get useTimezoneAbbreviations(): boolean {\n return this.getField(UserEntityFields.useTimezoneAbbreviationsField, ValidFlags.SpecificExtra);\n }\n public set useTimezoneAbbreviations(value: boolean) {\n this.setField(UserEntityFields.useTimezoneAbbreviationsField, value);\n }\n\n // WebClientLanguage\n public get webClientLanguage(): string {\n return this.getField(UserEntityFields.webClientLanguageField, ValidFlags.SpecificExtra);\n }\n public set webClientLanguage(value: string) {\n this.setField(UserEntityFields.webClientLanguageField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Users);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getApplicationLoggedAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('ApplicationLogged', 'Id', true, query, ValidFlags.EntityDependency, transaction);\n }\n\n public async getFavoritesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Favorites', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getFavoritesCTAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('FavoritesCT', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getFavoritesMapsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('FavoritesMaps', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async addForceUserStatusAsync(isActive: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('isActive', isActive);\n\n return this.executeRequestTransactionAsync('ForceUserStatus', 'POST', inParam, transaction, responseHandler);\n }\n\n public async hasAccessAsync(entityId: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['HasAccess'] as boolean;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('entityId', entityId);\n\n return this.executeRequestTransactionAsync('HasAccess', 'POST', inParam, transaction, responseHandler);\n }\n\n public async hasAccessListAsync(ids: ObservableCollection, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new Array();\n const body = response.body['HasAccessList'] as Array;\n for (const entry of body) {\n const fo = new HasAccessResult();\n fo.loadFields(entry);\n result.push(fo);\n }\n return new Promise>(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldArrayGuid('ids', ids);\n\n return this.executeRequestTransactionAsync>('HasAccessList', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getHotActionsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(HotAction, 'HotActions', 'Id', true, false, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getLogonSchedulesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(LogOnSchedule, 'LogonSchedules', 'Id', false, true, ValidFlags.Specific, transaction);\n }\n\n public async getRecentlyUsedAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('RecentlyUsed', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getRecentlyUsedCTAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('RecentlyUsedCT', 'Id', false, query, ValidFlags.SpecificExtra, transaction);\n }\n\n public async safeUpdatePasswordAsync(newValue: string, oldValue: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('new', newValue);\n inParam.setField('old', oldValue);\n\n return this.executeRequestTransactionAsync('SafeUpdatePassword', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getUserSettingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(UserSetting, 'UserSettings', 'Id', false, true, ValidFlags.SpecificExtra, transaction);\n }\n\n public async getWebClientTasksAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(WebClientTask, 'WebClientTasks', 'Guid', false, true, ValidFlags.SpecificExtra, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUserGroup?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-30 8:57:47 AM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from '../Interface/IEntity';\nimport { IPrivilegedEntity, PrivilegedEntityFields } from './IPrivilegedEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class UserGroupEntityFields extends PrivilegedEntityFields {\n public static externalUniqueIdField = 'ExternalUniqueId';\n public static externalUniqueIdProviderField = 'ExternalUniqueIdProvider';\n public static skipPtzEvaluationField = 'SkipPtzEvaluation';\n}\n\n// #endregion Fields\n\nexport interface IUserGroupEntity extends IPrivilegedEntity {\n // #region REST Properties\n\n externalUniqueId: string;\n\n externalUniqueIdProvider: string;\n\n skipPtzEvaluation: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersRecursiveAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUserGroup?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-30 8:57:49 AM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { PrivilegedEntity } from './PrivilegedEntity';\nimport { IEntity } from '../Interface/IEntity';\nimport { IUserGroupEntity, UserGroupEntityFields } from '../Interface/IUserGroupEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\n\nexport class UserGroupEntity extends PrivilegedEntity implements IUserGroupEntity {\n // #region REST Properties\n\n // ExternalUniqueId\n public get externalUniqueId(): string {\n return this.getField(UserGroupEntityFields.externalUniqueIdField, ValidFlags.Specific);\n }\n public set externalUniqueId(value: string) {\n this.setField(UserGroupEntityFields.externalUniqueIdField, value);\n }\n\n // ExternalUniqueIdProvider\n public get externalUniqueIdProvider(): string {\n return this.getField(UserGroupEntityFields.externalUniqueIdProviderField, ValidFlags.Specific);\n }\n public set externalUniqueIdProvider(value: string) {\n this.setField(UserGroupEntityFields.externalUniqueIdProviderField, value);\n }\n\n // SkipPtzEvaluation\n public get skipPtzEvaluation(): boolean {\n return this.getField(UserGroupEntityFields.skipPtzEvaluationField, ValidFlags.SpecificExtra);\n }\n public set skipPtzEvaluation(value: boolean) {\n this.setField(UserGroupEntityFields.skipPtzEvaluationField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.UserGroups);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getMembersRecursiveAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('MembersRecursive', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLocatable?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:12 PM\nimport { IEntity, EntityFields } from './IEntity';\n\n// #region Fields\n\nexport class LocatableEntityFields extends EntityFields {\n public static isPredefinedLocationField = 'IsPredefinedLocation';\n public static latitudeField = 'Latitude';\n public static longitudeField = 'Longitude';\n public static timeZoneIdField = 'TimeZoneId';\n}\n\n// #endregion Fields\n\nexport interface ILocatableEntity extends IEntity {\n // #region REST Properties\n\n readonly isPredefinedLocation: boolean;\n\n latitude: number;\n\n longitude: number;\n\n timeZoneId: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLocatable?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:16 PM\nimport { Entity } from './Entity';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { ILocatableEntity, LocatableEntityFields } from '../Interface/ILocatableEntity';\n\nexport class LocatableEntity extends Entity implements ILocatableEntity {\n // #region REST Properties\n\n // IsPredefinedLocation\n public get isPredefinedLocation(): boolean {\n return this.getField(LocatableEntityFields.isPredefinedLocationField);\n }\n\n // Latitude\n public get latitude(): number {\n return this.getField(LocatableEntityFields.latitudeField, ValidFlags.EntityStatus);\n }\n public set latitude(value: number) {\n this.setField(LocatableEntityFields.latitudeField, value);\n }\n\n // Longitude\n public get longitude(): number {\n return this.getField(LocatableEntityFields.longitudeField, ValidFlags.EntityStatus);\n }\n public set longitude(value: number) {\n this.setField(LocatableEntityFields.longitudeField, value);\n }\n\n // TimeZoneId\n public get timeZoneId(): string {\n return this.getField(LocatableEntityFields.timeZoneIdField);\n }\n public set timeZoneId(value: string) {\n this.setField(LocatableEntityFields.timeZoneIdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor(entityType: string) {\n super(entityType);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiServer?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ILocatableEntity, LocatableEntityFields } from './ILocatableEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class ServerEntityFields extends LocatableEntityFields {\n public static defaultDatabaseServerField = 'DefaultDatabaseServer';\n public static descriptiveOSVersionField = 'DescriptiveOSVersion';\n public static descriptiveProductVersionField = 'DescriptiveProductVersion';\n public static exactVersionField = 'ExactVersion';\n public static fullyQualifiedNameField = 'FullyQualifiedName';\n public static isInBackwardCompatibilityModeField = 'IsInBackwardCompatibilityMode';\n public static isMainServerField = 'IsMainServer';\n public static isProxyField = 'IsProxy';\n public static majorVersionField = 'MajorVersion';\n public static networkField = 'Network';\n public static oSVersionField = 'OSVersion';\n public static privateAddressField = 'PrivateAddress';\n public static privateAddressesField = 'PrivateAddresses';\n public static privateLegacyPortField = 'PrivateLegacyPort';\n public static privatePortField = 'PrivatePort';\n public static publicAddressField = 'PublicAddress';\n public static restBaseEndpointField = 'RestBaseEndpoint';\n public static rootWebApplicationPathField = 'RootWebApplicationPath';\n public static secureWebPortField = 'SecureWebPort';\n public static serverCertificateField = 'ServerCertificate';\n public static serverCertificateThumbprintField = 'ServerCertificateThumbprint';\n public static serverTypeField = 'ServerType';\n public static webPortField = 'WebPort';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IRestRoleConfig extends IFieldObject {\n pluginType: IGuid;\n name: string;\n description: string;\n supports64Bits: boolean;\n serviceDomain: string;\n pluginAssemblyLocation: string;\n pluginTypeFullName: string;\n}\n\nexport interface INetworkInterface extends IFieldObject {\n macAddress: string;\n name: string;\n physicalAddress: string;\n iPv4: string;\n iPv6: string;\n}\n\n// #endregion Inner classes\n\nexport interface IServerEntity extends ILocatableEntity {\n // #region REST Properties\n\n defaultDatabaseServer: string;\n\n descriptiveOSVersion: string;\n\n readonly descriptiveProductVersion: string;\n\n readonly exactVersion: string;\n\n readonly fullyQualifiedName: string;\n\n readonly isInBackwardCompatibilityMode: boolean;\n\n readonly isMainServer: boolean;\n\n readonly isProxy: boolean;\n\n readonly majorVersion: string;\n\n readonly network: IGuid;\n\n oSVersion: string;\n\n readonly privateAddress: string;\n\n readonly privateAddresses: ObservableCollection;\n\n readonly privateLegacyPort: number;\n\n privatePort: number;\n\n readonly publicAddress: string;\n\n readonly restBaseEndpoint: string;\n\n rootWebApplicationPath: string;\n\n readonly secureWebPort: number;\n\n readonly serverCertificate: IGuid;\n\n readonly serverCertificateThumbprint: string;\n\n readonly serverType: string;\n\n readonly webPort: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAgentsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getDirectoriesAsync(value: string, transaction?: ITransaction): Promise | null>;\n getDrivesAsync(transaction?: ITransaction): Promise | null>;\n getFilesAsync(value: string, transaction?: ITransaction): Promise | null>;\n getNetworkInterfacesAsync(transaction?: ITransaction | null): Promise | null>;\n getRestRoleAvailableAsync(transaction?: ITransaction | null): Promise | null>;\n getRolesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiServer?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:01 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { LocatableEntity } from './LocatableEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { IServerEntity, IRestRoleConfig, INetworkInterface, ServerEntityFields } from '../Interface/IServerEntity';\n\n// #region Inner classes\n\nexport class RestRoleConfig extends FieldObject implements IRestRoleConfig {\n // PluginType\n public get pluginType(): IGuid {\n return this.getFieldGuid('PluginType');\n }\n public set pluginType(value: IGuid) {\n this.setFieldGuid('PluginType', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Supports64Bits\n public get supports64Bits(): boolean {\n return this.getField('Supports64Bits');\n }\n public set supports64Bits(value: boolean) {\n this.setField('Supports64Bits', value);\n }\n // ServiceDomain\n public get serviceDomain(): string {\n return this.getField('ServiceDomain');\n }\n public set serviceDomain(value: string) {\n this.setField('ServiceDomain', value);\n }\n // PluginAssemblyLocation\n public get pluginAssemblyLocation(): string {\n return this.getField('PluginAssemblyLocation');\n }\n public set pluginAssemblyLocation(value: string) {\n this.setField('PluginAssemblyLocation', value);\n }\n // PluginTypeFullName\n public get pluginTypeFullName(): string {\n return this.getField('PluginTypeFullName');\n }\n public set pluginTypeFullName(value: string) {\n this.setField('PluginTypeFullName', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('PluginType', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setField('Description', '');\n this.setField('Supports64Bits', false);\n this.setField('ServiceDomain', '');\n this.setField('PluginAssemblyLocation', '');\n this.setField('PluginTypeFullName', '');\n }\n}\n\nexport class NetworkInterface extends FieldObject implements INetworkInterface {\n // MacAddress\n public get macAddress(): string {\n return this.getField('MacAddress');\n }\n public set macAddress(value: string) {\n this.setField('MacAddress', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // PhysicalAddress\n public get physicalAddress(): string {\n return this.getField('PhysicalAddress');\n }\n public set physicalAddress(value: string) {\n this.setField('PhysicalAddress', value);\n }\n // IPv4\n public get iPv4(): string {\n return this.getField('IPv4');\n }\n public set iPv4(value: string) {\n this.setField('IPv4', value);\n }\n // IPv6\n public get iPv6(): string {\n return this.getField('IPv6');\n }\n public set iPv6(value: string) {\n this.setField('IPv6', value);\n }\n\n public initializeAllFields(): void {\n this.setField('MacAddress', '');\n this.setField('Name', '');\n this.setField('PhysicalAddress', '');\n this.setField('IPv4', '');\n this.setField('IPv6', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class ServerEntity extends LocatableEntity implements IServerEntity {\n // #region REST Properties\n\n // DefaultDatabaseServer\n public get defaultDatabaseServer(): string {\n return this.getField(ServerEntityFields.defaultDatabaseServerField);\n }\n public set defaultDatabaseServer(value: string) {\n this.setField(ServerEntityFields.defaultDatabaseServerField, value);\n }\n\n // DescriptiveOSVersion\n public get descriptiveOSVersion(): string {\n return this.getField(ServerEntityFields.descriptiveOSVersionField);\n }\n public set descriptiveOSVersion(value: string) {\n this.setField(ServerEntityFields.descriptiveOSVersionField, value);\n }\n\n // DescriptiveProductVersion\n public get descriptiveProductVersion(): string {\n return this.getField(ServerEntityFields.descriptiveProductVersionField);\n }\n\n // ExactVersion\n public get exactVersion(): string {\n return this.getField(ServerEntityFields.exactVersionField);\n }\n\n // FullyQualifiedName\n public get fullyQualifiedName(): string {\n return this.getField(ServerEntityFields.fullyQualifiedNameField);\n }\n\n // IsInBackwardCompatibilityMode\n public get isInBackwardCompatibilityMode(): boolean {\n return this.getField(ServerEntityFields.isInBackwardCompatibilityModeField);\n }\n\n // IsMainServer\n public get isMainServer(): boolean {\n return this.getField(ServerEntityFields.isMainServerField);\n }\n\n // IsProxy\n public get isProxy(): boolean {\n return this.getField(ServerEntityFields.isProxyField);\n }\n\n // MajorVersion\n public get majorVersion(): string {\n return this.getField(ServerEntityFields.majorVersionField);\n }\n\n // Network\n public get network(): IGuid {\n return this.getFieldGuid(ServerEntityFields.networkField);\n }\n\n // OSVersion\n public get oSVersion(): string {\n return this.getField(ServerEntityFields.oSVersionField);\n }\n public set oSVersion(value: string) {\n this.setField(ServerEntityFields.oSVersionField, value);\n }\n\n // PrivateAddress\n public get privateAddress(): string {\n return this.getField(ServerEntityFields.privateAddressField, ValidFlags.Specific);\n }\n\n // PrivateAddresses\n public get privateAddresses(): ObservableCollection {\n return this.getFieldArray(ServerEntityFields.privateAddressesField, ValidFlags.Specific);\n }\n\n // PrivateLegacyPort\n public get privateLegacyPort(): number {\n return this.getField(ServerEntityFields.privateLegacyPortField);\n }\n\n // PrivatePort\n public get privatePort(): number {\n return this.getField(ServerEntityFields.privatePortField, ValidFlags.Specific);\n }\n public set privatePort(value: number) {\n this.setField(ServerEntityFields.privatePortField, value);\n }\n\n // PublicAddress\n public get publicAddress(): string {\n return this.getField(ServerEntityFields.publicAddressField);\n }\n\n // RestBaseEndpoint\n public get restBaseEndpoint(): string {\n return this.getField(ServerEntityFields.restBaseEndpointField);\n }\n\n // RootWebApplicationPath\n public get rootWebApplicationPath(): string {\n return this.getField(ServerEntityFields.rootWebApplicationPathField);\n }\n public set rootWebApplicationPath(value: string) {\n this.setField(ServerEntityFields.rootWebApplicationPathField, value);\n }\n\n // SecureWebPort\n public get secureWebPort(): number {\n return this.getField(ServerEntityFields.secureWebPortField, ValidFlags.Specific);\n }\n\n // ServerCertificate\n public get serverCertificate(): IGuid {\n return this.getFieldGuid(ServerEntityFields.serverCertificateField, ValidFlags.Specific);\n }\n\n // ServerCertificateThumbprint\n public get serverCertificateThumbprint(): string {\n return this.getField(ServerEntityFields.serverCertificateThumbprintField, ValidFlags.Specific);\n }\n\n // ServerType\n public get serverType(): string {\n return this.getField(ServerEntityFields.serverTypeField);\n }\n\n // WebPort\n public get webPort(): number {\n return this.getField(ServerEntityFields.webPortField, ValidFlags.Specific);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Servers);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAgentsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Agents', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getDirectoriesAsync(value: string, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('Directories?Parent=' + value, 'GET', null, transaction, responseHandler);\n }\n\n public async getDrivesAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('Drives', 'GET', null, transaction, responseHandler);\n }\n\n public async getFilesAsync(value: string, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('Files?Parent=' + value, 'GET', null, transaction, responseHandler);\n }\n\n public async getNetworkInterfacesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(NetworkInterface, 'NetworkInterfaces', 'MacAddress', true, false, ValidFlags.None, transaction);\n }\n\n public async getRestRoleAvailableAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RestRoleConfig, 'RestRoleAvailable', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async getRolesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Roles', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArea?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class AreaEntityFields extends EntityFields {\n public static accessControlSupportField = 'AccessControlSupport';\n public static accessPermissionLevelField = 'AccessPermissionLevel';\n public static antipassbackModeField = 'AntipassbackMode';\n public static antipassbackScheduleField = 'AntipassbackSchedule';\n public static antipassbackStrictField = 'AntipassbackStrict';\n public static antipassbackTimeoutField = 'AntipassbackTimeout';\n public static captiveAccessPointField = 'CaptiveAccessPoint';\n public static duressField = 'Duress';\n public static enforceVisitorEscortRulesField = 'EnforceVisitorEscortRules';\n public static entryAccessPointField = 'EntryAccessPoint';\n public static exitAccessPointField = 'ExitAccessPoint';\n public static firstInRuleForAccessRulesApplyScheduleField = 'FirstInRuleForAccessRulesApplySchedule';\n public static firstInRuleForAccessRulesEnabledField = 'FirstInRuleForAccessRulesEnabled';\n public static firstInRuleForUnlockSchedulesEnabledField = 'FirstInRuleForUnlockSchedulesEnabled';\n public static firstInRuleUnlockScheduleOffsetField = 'FirstInRuleUnlockScheduleOffset';\n public static inheritEnforceVisitorEscortRulesField = 'InheritEnforceVisitorEscortRules';\n public static intrusionAccessPointInField = 'IntrusionAccessPointIn';\n public static intrusionAccessPointOutField = 'IntrusionAccessPointOut';\n public static intrusionArmingAccessPointField = 'IntrusionArmingAccessPoint';\n public static intrusionDisarmingAccessPointField = 'IntrusionDisarmingAccessPoint';\n public static isFederatedDirectoryField = 'IsFederatedDirectory';\n public static linkField = 'Link';\n public static maxOccupancyLimitField = 'MaxOccupancyLimit';\n public static maxOccupancyModeField = 'MaxOccupancyMode';\n public static peopleCountEnabledField = 'PeopleCountEnabled';\n public static peopleCountOwnerField = 'PeopleCountOwner';\n public static threatLevelField = 'ThreatLevel';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IAccessPointGroupThreatLevelMapping extends IFieldObject {\n accessPointGroupId: IGuid;\n threatLevelId: IGuid;\n xmlInfo: string;\n}\n\nexport interface IMap extends IFieldObject {\n provider: IGuid | null;\n fileExtension: string;\n fileData: string;\n zoomLevel: number | null;\n resolution: number | null;\n scaleFactor: number | null;\n}\n\n// #endregion Inner classes\n\nexport interface IAreaEntity extends IEntity {\n // #region REST Properties\n\n accessControlSupport: boolean;\n\n accessPermissionLevel: number;\n\n antipassbackMode: string;\n\n antipassbackSchedule: IGuid;\n\n antipassbackStrict: boolean;\n\n antipassbackTimeout: number;\n\n readonly captiveAccessPoint: IGuid;\n\n duress: boolean;\n\n enforceVisitorEscortRules: boolean;\n\n readonly entryAccessPoint: IGuid;\n\n readonly exitAccessPoint: IGuid;\n\n firstInRuleForAccessRulesApplySchedule: IGuid;\n\n firstInRuleForAccessRulesEnabled: boolean;\n\n firstInRuleForUnlockSchedulesEnabled: boolean;\n\n firstInRuleUnlockScheduleOffset: number;\n\n inheritEnforceVisitorEscortRules: boolean;\n\n readonly intrusionAccessPointIn: IGuid;\n\n readonly intrusionAccessPointOut: IGuid;\n\n readonly intrusionArmingAccessPoint: IGuid;\n\n readonly intrusionDisarmingAccessPoint: IGuid;\n\n readonly isFederatedDirectory: boolean;\n\n link: IGuid;\n\n maxOccupancyLimit: number;\n\n maxOccupancyMode: string;\n\n peopleCountEnabled: boolean;\n\n peopleCountOwner: boolean;\n\n threatLevel: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n createMapAsync(value: IMap, transaction?: ITransaction): Promise;\n getFirstInRuleBypassListAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getFirstInRuleSupervisorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getThreatLevelMappingsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArea?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:01 AM\nimport { Entity } from './Entity';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { IAreaEntity, IMap, AreaEntityFields, IAccessPointGroupThreatLevelMapping } from '../Interface/IAreaEntity';\n\n// #region Inner classes\n\nexport class AccessPointGroupThreatLevelMapping extends FieldObject implements IAccessPointGroupThreatLevelMapping {\n // AccessPointGroupId\n public get accessPointGroupId(): IGuid {\n return this.getFieldGuid('AccessPointGroupId');\n }\n public set accessPointGroupId(value: IGuid) {\n this.setFieldGuid('AccessPointGroupId', value);\n }\n // ThreatLevelId\n public get threatLevelId(): IGuid {\n return this.getFieldGuid('ThreatLevelId');\n }\n public set threatLevelId(value: IGuid) {\n this.setFieldGuid('ThreatLevelId', value);\n }\n // XmlInfo\n public get xmlInfo(): string {\n return this.getField('XmlInfo');\n }\n public set xmlInfo(value: string) {\n this.setField('XmlInfo', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('AccessPointGroupId', SafeGuid.EMPTY);\n this.setFieldGuid('ThreatLevelId', SafeGuid.EMPTY);\n this.setField('XmlInfo', '');\n }\n}\n\nexport class Map extends FieldObject implements IMap {\n // Provider\n public get provider(): IGuid | null {\n return this.getNullableFieldGuid('Provider');\n }\n public set provider(value: IGuid | null) {\n this.setNullableFieldGuid('Provider', value);\n }\n // FileExtension\n public get fileExtension(): string {\n return this.getField('FileExtension');\n }\n public set fileExtension(value: string) {\n this.setField('FileExtension', value);\n }\n // FileData\n public get fileData(): string {\n return this.getField('FileData');\n }\n public set fileData(value: string) {\n this.setField('FileData', value);\n }\n // ZoomLevel\n public get zoomLevel(): number | null {\n return this.getNullableField('ZoomLevel');\n }\n public set zoomLevel(value: number | null) {\n this.setNullableField('ZoomLevel', value);\n }\n // Resolution\n public get resolution(): number | null {\n return this.getNullableField('Resolution');\n }\n public set resolution(value: number | null) {\n this.setNullableField('Resolution', value);\n }\n // ScaleFactor\n public get scaleFactor(): number | null {\n return this.getNullableField('ScaleFactor');\n }\n public set scaleFactor(value: number | null) {\n this.setNullableField('ScaleFactor', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Provider', SafeGuid.EMPTY);\n this.setField('FileExtension', '');\n this.setField('FileData', '');\n this.setField('ZoomLevel', 0);\n this.setField('Resolution', 0);\n this.setField('ScaleFactor', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class AreaEntity extends Entity implements IAreaEntity {\n // #region REST Properties\n\n // AccessControlSupport\n public get accessControlSupport(): boolean {\n return this.getField(AreaEntityFields.accessControlSupportField, ValidFlags.Specific);\n }\n public set accessControlSupport(value: boolean) {\n this.setField(AreaEntityFields.accessControlSupportField, value);\n }\n\n // AccessPermissionLevel\n public get accessPermissionLevel(): number {\n return this.getField(AreaEntityFields.accessPermissionLevelField, ValidFlags.EntityStatus2);\n }\n public set accessPermissionLevel(value: number) {\n this.setField(AreaEntityFields.accessPermissionLevelField, value);\n }\n\n // AntipassbackMode\n public get antipassbackMode(): string {\n return this.getField(AreaEntityFields.antipassbackModeField, ValidFlags.Specific);\n }\n public set antipassbackMode(value: string) {\n this.setField(AreaEntityFields.antipassbackModeField, value);\n }\n\n // AntipassbackSchedule\n public get antipassbackSchedule(): IGuid {\n return this.getFieldGuid(AreaEntityFields.antipassbackScheduleField, ValidFlags.Specific);\n }\n public set antipassbackSchedule(value: IGuid) {\n this.setFieldGuid(AreaEntityFields.antipassbackScheduleField, value);\n }\n\n // AntipassbackStrict\n public get antipassbackStrict(): boolean {\n return this.getField(AreaEntityFields.antipassbackStrictField, ValidFlags.Specific);\n }\n public set antipassbackStrict(value: boolean) {\n this.setField(AreaEntityFields.antipassbackStrictField, value);\n }\n\n // AntipassbackTimeout\n public get antipassbackTimeout(): number {\n return this.getField(AreaEntityFields.antipassbackTimeoutField, ValidFlags.Specific);\n }\n public set antipassbackTimeout(value: number) {\n this.setField(AreaEntityFields.antipassbackTimeoutField, value);\n }\n\n // CaptiveAccessPoint\n public get captiveAccessPoint(): IGuid {\n return this.getFieldGuid(AreaEntityFields.captiveAccessPointField, ValidFlags.Membership);\n }\n\n // Duress\n public get duress(): boolean {\n return this.getField(AreaEntityFields.duressField, ValidFlags.Specific);\n }\n public set duress(value: boolean) {\n this.setField(AreaEntityFields.duressField, value);\n }\n\n // EnforceVisitorEscortRules\n public get enforceVisitorEscortRules(): boolean {\n return this.getField(AreaEntityFields.enforceVisitorEscortRulesField, ValidFlags.Specific);\n }\n public set enforceVisitorEscortRules(value: boolean) {\n this.setField(AreaEntityFields.enforceVisitorEscortRulesField, value);\n }\n\n // EntryAccessPoint\n public get entryAccessPoint(): IGuid {\n return this.getFieldGuid(AreaEntityFields.entryAccessPointField, ValidFlags.Membership);\n }\n\n // ExitAccessPoint\n public get exitAccessPoint(): IGuid {\n return this.getFieldGuid(AreaEntityFields.exitAccessPointField, ValidFlags.Membership);\n }\n\n // FirstInRuleForAccessRulesApplySchedule\n public get firstInRuleForAccessRulesApplySchedule(): IGuid {\n return this.getFieldGuid(AreaEntityFields.firstInRuleForAccessRulesApplyScheduleField, ValidFlags.Specific);\n }\n public set firstInRuleForAccessRulesApplySchedule(value: IGuid) {\n this.setFieldGuid(AreaEntityFields.firstInRuleForAccessRulesApplyScheduleField, value);\n }\n\n // FirstInRuleForAccessRulesEnabled\n public get firstInRuleForAccessRulesEnabled(): boolean {\n return this.getField(AreaEntityFields.firstInRuleForAccessRulesEnabledField, ValidFlags.Specific);\n }\n public set firstInRuleForAccessRulesEnabled(value: boolean) {\n this.setField(AreaEntityFields.firstInRuleForAccessRulesEnabledField, value);\n }\n\n // FirstInRuleForUnlockSchedulesEnabled\n public get firstInRuleForUnlockSchedulesEnabled(): boolean {\n return this.getField(AreaEntityFields.firstInRuleForUnlockSchedulesEnabledField, ValidFlags.Specific);\n }\n public set firstInRuleForUnlockSchedulesEnabled(value: boolean) {\n this.setField(AreaEntityFields.firstInRuleForUnlockSchedulesEnabledField, value);\n }\n\n // FirstInRuleUnlockScheduleOffset\n public get firstInRuleUnlockScheduleOffset(): number {\n return this.getField(AreaEntityFields.firstInRuleUnlockScheduleOffsetField, ValidFlags.Specific);\n }\n public set firstInRuleUnlockScheduleOffset(value: number) {\n this.setField(AreaEntityFields.firstInRuleUnlockScheduleOffsetField, value);\n }\n\n // InheritEnforceVisitorEscortRules\n public get inheritEnforceVisitorEscortRules(): boolean {\n return this.getField(AreaEntityFields.inheritEnforceVisitorEscortRulesField, ValidFlags.Specific);\n }\n public set inheritEnforceVisitorEscortRules(value: boolean) {\n this.setField(AreaEntityFields.inheritEnforceVisitorEscortRulesField, value);\n }\n\n // IntrusionAccessPointIn\n public get intrusionAccessPointIn(): IGuid {\n return this.getFieldGuid(AreaEntityFields.intrusionAccessPointInField, ValidFlags.Membership);\n }\n\n // IntrusionAccessPointOut\n public get intrusionAccessPointOut(): IGuid {\n return this.getFieldGuid(AreaEntityFields.intrusionAccessPointOutField, ValidFlags.Membership);\n }\n\n // IntrusionArmingAccessPoint\n public get intrusionArmingAccessPoint(): IGuid {\n return this.getFieldGuid(AreaEntityFields.intrusionArmingAccessPointField, ValidFlags.Membership);\n }\n\n // IntrusionDisarmingAccessPoint\n public get intrusionDisarmingAccessPoint(): IGuid {\n return this.getFieldGuid(AreaEntityFields.intrusionDisarmingAccessPointField, ValidFlags.Membership);\n }\n\n // IsFederatedDirectory\n public get isFederatedDirectory(): boolean {\n return this.getField(AreaEntityFields.isFederatedDirectoryField);\n }\n\n // Link\n public get link(): IGuid {\n return this.getFieldGuid(AreaEntityFields.linkField);\n }\n public set link(value: IGuid) {\n this.setFieldGuid(AreaEntityFields.linkField, value);\n }\n\n // MaxOccupancyLimit\n public get maxOccupancyLimit(): number {\n return this.getField(AreaEntityFields.maxOccupancyLimitField, ValidFlags.Specific);\n }\n public set maxOccupancyLimit(value: number) {\n this.setField(AreaEntityFields.maxOccupancyLimitField, value);\n }\n\n // MaxOccupancyMode\n public get maxOccupancyMode(): string {\n return this.getField(AreaEntityFields.maxOccupancyModeField, ValidFlags.Specific);\n }\n public set maxOccupancyMode(value: string) {\n this.setField(AreaEntityFields.maxOccupancyModeField, value);\n }\n\n // PeopleCountEnabled\n public get peopleCountEnabled(): boolean {\n return this.getField(AreaEntityFields.peopleCountEnabledField, ValidFlags.AreaPeopleCount);\n }\n public set peopleCountEnabled(value: boolean) {\n this.setField(AreaEntityFields.peopleCountEnabledField, value);\n }\n\n // PeopleCountOwner\n public get peopleCountOwner(): boolean {\n return this.getField(AreaEntityFields.peopleCountOwnerField);\n }\n public set peopleCountOwner(value: boolean) {\n this.setField(AreaEntityFields.peopleCountOwnerField, value);\n }\n\n // ThreatLevel\n public get threatLevel(): IGuid {\n return this.getFieldGuid(AreaEntityFields.threatLevelField, ValidFlags.EntityStatus2);\n }\n public set threatLevel(value: IGuid) {\n this.setFieldGuid(AreaEntityFields.threatLevelField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Areas);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPoints', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async createMapAsync(value: IMap, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = SafeGuid.parse((response.body['Id'] as string).toLowerCase());\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('CreateMap', 'POST', value, transaction, responseHandler);\n }\n\n public async getFirstInRuleBypassListAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('FirstInRuleBypassList', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async getFirstInRuleSupervisorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('FirstInRuleSupervisors', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getThreatLevelMappingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AccessPointGroupThreatLevelMapping, 'ThreatLevelMappings', 'ThreatLevelId', false, false, ValidFlags.EntityDependency, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCamera?codegen=ts&InterfaceOnly=True&workflow=False on 2022-07-05 4:50:16 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ILocatableEntity, LocatableEntityFields } from './ILocatableEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class CameraEntityFields extends LocatableEntityFields {\n public static audioRecordingField = 'AudioRecording';\n public static audioStreamInField = 'AudioStreamIn';\n public static audioStreamOutField = 'AudioStreamOut';\n public static automaticCleanupField = 'AutomaticCleanup';\n public static cameraSubTypeField = 'CameraSubType';\n public static defaultManualRecordingTimeField = 'DefaultManualRecordingTime';\n public static encryptionEnabledField = 'EncryptionEnabled';\n public static encryptionTypeField = 'EncryptionType';\n public static externalSystemTypeField = 'ExternalSystemType';\n public static federationStreamUsageField = 'FederationStreamUsage';\n public static federationUserIdField = 'FederationUserId';\n public static federationUserSecurityLevelField = 'FederationUserSecurityLevel';\n public static isDVRInputField = 'IsDVRInput';\n public static isEdgeAnalyticsCameraField = 'IsEdgeAnalyticsCamera';\n public static isLicensedCameraField = 'IsLicensedCamera';\n public static isNativeField = 'IsNative';\n public static isPluginCameraField = 'IsPluginCamera';\n public static isPrivacyProtectedField = 'IsPrivacyProtected';\n public static lockingUserAppIdField = 'LockingUserAppId';\n public static lockingUserIdField = 'LockingUserId';\n public static lockingUserInfoField = 'LockingUserInfo';\n public static lockStateField = 'LockState';\n public static metadataRecordingField = 'MetadataRecording';\n public static omnicastCameraGuidField = 'OmnicastCameraGuid';\n public static postEventRecordingTimeField = 'PostEventRecordingTime';\n public static preEventRecordingTimeField = 'PreEventRecordingTime';\n public static ptzAddressField = 'PtzAddress';\n public static ptzCapabilitiesField = 'PtzCapabilities';\n public static ptzIdleActionField = 'PtzIdleAction';\n public static ptzIdleActionNumberField = 'PtzIdleActionNumber';\n public static ptzIdleDelayField = 'PtzIdleDelay';\n public static ptzLockDelayField = 'PtzLockDelay';\n public static ptzLockStateTimeUpField = 'PtzLockStateTimeUp';\n public static ptzProtocolField = 'PtzProtocol';\n public static ptzSerialPortIdField = 'PtzSerialPortId';\n public static ptzSpecificConfigField = 'PtzSpecificConfig';\n public static recordingLengthField = 'RecordingLength';\n public static recordingStateField = 'RecordingState';\n public static redundantArchivingField = 'RedundantArchiving';\n public static retentionPeriodField = 'RetentionPeriod';\n public static roleTypeField = 'RoleType';\n public static signalStateField = 'SignalState';\n public static streamGroupIdField = 'StreamGroupId';\n public static tailingField = 'Tailing';\n public static thumbnailIdField = 'ThumbnailId';\n public static unitField = 'Unit';\n public static useCustomRecordingSettingsField = 'UseCustomRecordingSettings';\n public static videoEncoderDeviceField = 'VideoEncoderDevice';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IVideoAttribute extends IFieldObject {\n scheduleId: IGuid;\n brightness: number | null;\n contrast: number | null;\n hue: number | null;\n saturation: number | null;\n sharpness: number | null;\n}\n\nexport interface IStreamUsageInfo extends IFieldObject {\n id: IGuid;\n streamUsage: string;\n}\n\nexport interface IRecordingMode extends IFieldObject {\n id: number;\n scheduleId: IGuid;\n mode: string;\n}\n\nexport interface IPtzCapabilitiesInfo extends IFieldObject {\n protocolChangeSupported: boolean;\n ptzControlEnabled: boolean;\n ptzNumberChangeSupported: boolean;\n ptzSpeedControlSupported: boolean;\n cameraLinkChangeSupported: boolean;\n deletionSupported: boolean;\n idleDelayChangeSupported: boolean;\n lockDelayChangeSupported: boolean;\n supportedCommands: string;\n secondaryIOPortRequired: boolean;\n remoteDataRequired: boolean;\n numberOfPresets: number;\n numberOfPattern: number;\n numberOfPresetTours: number;\n numberOfAux: number;\n minimumCameraNumber: number;\n maximumCameraNumber: number;\n presetBase: number;\n patternBase: number;\n auxBase: number;\n presetTourBase: number;\n productCode: number;\n maximumZoomFactor: number;\n minimumPan: number;\n maximumPan: number;\n minimumTilt: number;\n maximumTilt: number;\n sphericalSpaceMinimumPan: number | null;\n sphericalSpaceMaximumPan: number | null;\n sphericalSpaceMinimumTilt: number | null;\n sphericalSpaceMaximumTilt: number | null;\n sphericalSpacePanLeftDeviceLimit: number | null;\n sphericalSpacePanRightDeviceLimit: number | null;\n sphericalSpaceTiltUpDeviceLimit: number | null;\n sphericalSpaceTiltDownDeviceLimit: number | null;\n zoomFactorSpaceMinimum: number | null;\n zoomFactorSpaceMaximum: number | null;\n minimumHorizontalFieldOfView: number | null;\n maximumHorizontalFieldOfView: number | null;\n minimumVerticalFieldOfView: number | null;\n maximumVerticalFieldOfView: number | null;\n minimumFocalLength: number | null;\n maximumFocalLength: number | null;\n unknownSpaceMinimumPan: number | null;\n unknownSpaceMaximumPan: number | null;\n unknownSpaceMinimumTilt: number | null;\n unknownSpaceMaximumTilt: number | null;\n unknownSpaceMinimumZoom: number | null;\n unknownSpaceMaximumZoom: number | null;\n}\n\nexport interface IProtectVideo extends IFieldObject {\n start: Date;\n stop: Date;\n duration: number | null;\n protect: boolean;\n}\n\nexport interface IMotionDetectionZone extends IFieldObject {\n id: number;\n macroBlockHeight: number | null;\n macroBlockWidth: number | null;\n mapHeight: number | null;\n mapWidth: number | null;\n motionOffEvent: number | null;\n motionOffThreshold: number | null;\n motionOnEvent: number | null;\n motionOnThreshold: number | null;\n sensitivity: number | null;\n}\n\nexport interface IMotionDetection extends IFieldObject {\n scheduleId: IGuid;\n enabled: boolean | null;\n cameraApplicationHardwareDetection: string;\n consecutiveFrame: boolean | null;\n hardwareDetection: boolean | null;\n isH264: boolean | null;\n h264ChromaWeight: number | null;\n h264LumaWeight: number | null;\n h264MacroBlockWeight: number | null;\n h264VectorWeight: number | null;\n motionDetectorMode: string;\n sensitivity: number | null;\n\n getZonesAsync(transaction?: ITransaction | null): Promise | null>;\n}\n\nexport interface ILensType extends IFieldObject {\n id: IGuid;\n manufacturer: string;\n data: string;\n}\n\nexport interface IVector extends IFieldObject {\n y: number;\n x: number;\n}\n\nexport interface ILensConfiguration extends IFieldObject {\n lensProperties: string;\n isHardwareDewarpingSupported: boolean;\n vector: IVector;\n viewingModes: ObservableCollection;\n}\n\nexport interface ILensInfo extends IFieldObject {\n lensConfiguration: ILensConfiguration;\n lensType: ILensType;\n}\n\nexport interface IThumbnailData extends IFieldObject {\n camera: IGuid;\n timestamp: Date;\n thumbnail: string;\n context: IGuid;\n latestFrame: Date;\n}\n\nexport interface IThumbnailRequest extends IFieldObject {\n time: Date | null;\n startTime: Date | null;\n endTime: Date | null;\n count: number | null;\n width: number;\n timeout: number | null;\n context: IGuid;\n isHighPrecision: boolean;\n}\n\nexport interface IUserInfo extends IFieldObject {\n userId: IGuid;\n userLevel: number;\n systemId: string;\n skipPtzEvaluation: boolean;\n}\n\nexport interface IFeatureCapability extends IFieldObject {\n id: string;\n supported: boolean;\n}\n\nexport interface IEncryptionCertificate extends IFieldObject {\n id: number;\n cert: string;\n}\n\nexport interface IControlPtz extends IFieldObject {\n command: string;\n arg1: number;\n arg2: number;\n userAppId: IGuid | null;\n userId: IGuid | null;\n}\n\nexport interface IBlockInfo extends IFieldObject {\n isBlocked: boolean;\n blockLevel: number;\n userLevel: number;\n startTime: Date;\n endTime: Date;\n}\n\nexport interface IPtzInfo extends IFieldObject {\n id: number;\n name: string;\n}\n\n// #endregion Inner classes\n\nexport interface ICameraEntity extends ILocatableEntity {\n // #region REST Properties\n\n audioRecording: boolean;\n\n readonly audioStreamIn: IGuid;\n\n readonly audioStreamOut: IGuid;\n\n automaticCleanup: boolean;\n\n readonly cameraSubType: string;\n\n defaultManualRecordingTime: number;\n\n encryptionEnabled: boolean;\n\n encryptionType: string;\n\n readonly externalSystemType: string;\n\n readonly federationStreamUsage: string;\n\n readonly federationUserId: IGuid;\n\n readonly federationUserSecurityLevel: number;\n\n readonly isDVRInput: boolean;\n\n readonly isEdgeAnalyticsCamera: boolean;\n\n readonly isLicensedCamera: boolean;\n\n readonly isNative: boolean;\n\n readonly isPluginCamera: boolean;\n\n readonly isPrivacyProtected: boolean;\n\n readonly lockingUserAppId: IGuid;\n\n readonly lockingUserId: IGuid;\n\n readonly lockingUserInfo: any;\n\n lockState: string;\n\n metadataRecording: boolean;\n\n readonly omnicastCameraGuid: IGuid;\n\n postEventRecordingTime: number;\n\n preEventRecordingTime: number;\n\n readonly ptzAddress: number;\n\n readonly ptzCapabilities: string;\n\n readonly ptzIdleAction: string;\n\n readonly ptzIdleActionNumber: number;\n\n readonly ptzIdleDelay: number;\n\n readonly ptzLockDelay: number;\n\n readonly ptzLockStateTimeUp: Date;\n\n readonly ptzProtocol: number;\n\n readonly ptzSerialPortId: IGuid;\n\n readonly ptzSpecificConfig: string;\n\n readonly recordingLength: string;\n\n readonly recordingState: string;\n\n redundantArchiving: boolean;\n\n retentionPeriod: number;\n\n readonly roleType: IGuid;\n\n readonly signalState: string;\n\n streamGroupId: string;\n\n readonly tailing: string;\n\n readonly thumbnailId: IGuid;\n\n readonly unit: IGuid;\n\n useCustomRecordingSettings: boolean;\n\n readonly videoEncoderDevice: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n addBookmarkAsync(description: string, timestamp: Date, playback: boolean, transaction?: ITransaction): Promise;\n getArchivedStreamsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getAttachedCashRegistersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getAuxAsync(transaction?: ITransaction | null): Promise | null>;\n blockAsync(start: Date, end: Date, blockingLevel: number, transaction?: ITransaction): Promise;\n getBlockCameraInfoAsync(transaction?: ITransaction | null): Promise;\n boostQualityAsScheduledAsync(transaction?: ITransaction): Promise;\n controlPtzAsync(value: IControlPtz, transaction?: ITransaction): Promise;\n donateArchivesAsync(id: IGuid, transaction?: ITransaction): Promise;\n getEncryptionCertificatesAsync(transaction?: ITransaction | null): Promise | null>;\n getFeatureCapabilitiesAsync(transaction?: ITransaction | null): Promise | null>;\n getFederationUserMultilevelInfoAsync(transaction?: ITransaction | null): Promise | null>;\n generateThumbnailsAsync(value: IThumbnailRequest, transaction?: ITransaction): Promise | null>;\n gotoHomeAsync(transaction?: ITransaction): Promise;\n getHardwareConfigDataAsync(transaction?: ITransaction | null): Promise;\n getLensAsync(transaction?: ITransaction | null): Promise;\n getMetadataStreamsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMotionDetectionAsync(transaction?: ITransaction | null): Promise | null>;\n getPatternsAsync(transaction?: ITransaction | null): Promise | null>;\n getPresetsAsync(transaction?: ITransaction | null): Promise | null>;\n protectVideoPlaybackAsync(value: IProtectVideo, transaction?: ITransaction): Promise;\n getPtzCapabilitiesAsync(transaction?: ITransaction | null): Promise;\n getRecordingModesAsync(transaction?: ITransaction | null): Promise | null>;\n startLiveStreamingAsync(transaction?: ITransaction): Promise;\n startRecordingAsync(transaction?: ITransaction): Promise;\n stopLiveStreamingAsync(transaction?: ITransaction): Promise;\n stopRecordingAsync(transaction?: ITransaction): Promise;\n getStreamsAsync(transaction?: ITransaction | null): Promise | null>;\n getTransferGroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n unblockAsync(start: Date, end: Date, transaction?: ITransaction): Promise;\n getVideoAttributesAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","import { FieldObject } from './FieldObject';\nimport { IFieldObject } from '../Client/Interface/IFieldObject';\nimport { ITransaction } from '../Client/Interface/ITransaction';\nimport { ObservableCollection } from './ObservableCollection';\nimport { RelationFieldObjectTracker } from './RelationFieldObjectTracker';\nimport { RelationObjectTracker } from './RelationObjectTracker';\nimport { RelationSimpleFieldObjectTracker } from './RelationSimpleFieldObjectTracker';\n\nexport class FieldObjectWithRelations extends FieldObject {\n protected async getFieldObjectRelationAsync(\n classType: new () => T,\n relationId: string,\n elementId: string,\n readOnly: boolean,\n allowValueUpdate: boolean,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise | null> {\n if ( this.roParent == null ) { throw new Error('roParent is null'); }\n const tracker = this.roParent.getRelation(\n relationId,\n new RelationFieldObjectTracker(classType, this.roParent, relationId, elementId, readOnly, allowValueUpdate),\n validFlags,\n ) as RelationFieldObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n public async getDataRelationAsync(\n classType: new () => T,\n relationId: string,\n allowValueUpdate: boolean,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise {\n if ( this.roParent == null ) { throw new Error('roParent is null'); }\n const tracker = this.roParent.getRelation(\n relationId,\n new RelationSimpleFieldObjectTracker(classType, this.roParent, relationId, allowValueUpdate),\n validFlags,\n ) as RelationSimpleFieldObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n\n public async getDataRelation2Async(\n relationId: string,\n fieldId: string,\n validFlags?: number | null,\n transaction?: ITransaction | null,\n ): Promise {\n if ( this.roParent == null ) { throw new Error('roParent is null'); }\n const tracker = this.roParent.getRelation(\n relationId,\n new RelationObjectTracker(this.roParent, relationId, fieldId),\n validFlags,\n ) as RelationObjectTracker;\n if (!transaction) {\n return await tracker.getValueAsync();\n } else {\n await tracker.pushTransactionAsync(transaction);\n return null;\n }\n }\n}\n","// Autogenerated: v2/help/Entities/ApiCamera?codegen=ts&InterfaceOnly=False&workflow=False on 2022-07-06 9:10:41 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { LocatableEntity } from '../LocatableEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ICameraEntity, IVideoAttribute, IStreamUsageInfo, IRecordingMode, IPtzCapabilitiesInfo, IThumbnailData, IThumbnailRequest, IFeatureCapability, IEncryptionCertificate, IControlPtz, IBlockInfo, IPtzInfo, CameraEntityFields, IMotionDetectionZone, IMotionDetection, IProtectVideo, IUserInfo, ILensInfo, ILensConfiguration, ILensType, IVector } from '../../Interface/ICameraEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { IFieldObject } from '../../Interface/IFieldObject';\nimport { FieldObjectWithRelations } from '../../../Helpers/FieldObjectWithRelations';\n\n// #region Inner classes\n\nexport class VideoAttribute extends FieldObject implements IVideoAttribute {\n // ScheduleId\n public get scheduleId(): IGuid {\n return this.getFieldGuid('ScheduleId');\n }\n public set scheduleId(value: IGuid) {\n this.setFieldGuid('ScheduleId', value);\n }\n // Brightness\n public get brightness(): number | null {\n return this.getNullableField('Brightness');\n }\n public set brightness(value: number | null) {\n this.setNullableField('Brightness', value);\n }\n // Contrast\n public get contrast(): number | null {\n return this.getNullableField('Contrast');\n }\n public set contrast(value: number | null) {\n this.setNullableField('Contrast', value);\n }\n // Hue\n public get hue(): number | null {\n return this.getNullableField('Hue');\n }\n public set hue(value: number | null) {\n this.setNullableField('Hue', value);\n }\n // Saturation\n public get saturation(): number | null {\n return this.getNullableField('Saturation');\n }\n public set saturation(value: number | null) {\n this.setNullableField('Saturation', value);\n }\n // Sharpness\n public get sharpness(): number | null {\n return this.getNullableField('Sharpness');\n }\n public set sharpness(value: number | null) {\n this.setNullableField('Sharpness', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('ScheduleId', SafeGuid.EMPTY);\n this.setField('Brightness', 0);\n this.setField('Contrast', 0);\n this.setField('Hue', 0);\n this.setField('Saturation', 0);\n this.setField('Sharpness', 0);\n }\n}\n\nexport class StreamUsageInfo extends FieldObject implements IStreamUsageInfo {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // StreamUsage\n public get streamUsage(): string {\n return this.getField('StreamUsage');\n }\n public set streamUsage(value: string) {\n this.setField('StreamUsage', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('StreamUsage', '');\n }\n}\n\nexport class RecordingMode extends FieldObject implements IRecordingMode {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // ScheduleId\n public get scheduleId(): IGuid {\n return this.getFieldGuid('ScheduleId');\n }\n public set scheduleId(value: IGuid) {\n this.setFieldGuid('ScheduleId', value);\n }\n // Mode\n public get mode(): string {\n return this.getField('Mode');\n }\n public set mode(value: string) {\n this.setField('Mode', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Id', 0);\n this.setFieldGuid('ScheduleId', SafeGuid.EMPTY);\n this.setField('Mode', '');\n }\n}\n\nexport class PtzCapabilitiesInfo extends FieldObject implements IPtzCapabilitiesInfo {\n // ProtocolChangeSupported\n public get protocolChangeSupported(): boolean {\n return this.getField('ProtocolChangeSupported');\n }\n public set protocolChangeSupported(value: boolean) {\n this.setField('ProtocolChangeSupported', value);\n }\n // PtzControlEnabled\n public get ptzControlEnabled(): boolean {\n return this.getField('PtzControlEnabled');\n }\n public set ptzControlEnabled(value: boolean) {\n this.setField('PtzControlEnabled', value);\n }\n // PtzNumberChangeSupported\n public get ptzNumberChangeSupported(): boolean {\n return this.getField('PtzNumberChangeSupported');\n }\n public set ptzNumberChangeSupported(value: boolean) {\n this.setField('PtzNumberChangeSupported', value);\n }\n // PtzSpeedControlSupported\n public get ptzSpeedControlSupported(): boolean {\n return this.getField('PtzSpeedControlSupported');\n }\n public set ptzSpeedControlSupported(value: boolean) {\n this.setField('PtzSpeedControlSupported', value);\n }\n // CameraLinkChangeSupported\n public get cameraLinkChangeSupported(): boolean {\n return this.getField('CameraLinkChangeSupported');\n }\n public set cameraLinkChangeSupported(value: boolean) {\n this.setField('CameraLinkChangeSupported', value);\n }\n // DeletionSupported\n public get deletionSupported(): boolean {\n return this.getField('DeletionSupported');\n }\n public set deletionSupported(value: boolean) {\n this.setField('DeletionSupported', value);\n }\n // IdleDelayChangeSupported\n public get idleDelayChangeSupported(): boolean {\n return this.getField('IdleDelayChangeSupported');\n }\n public set idleDelayChangeSupported(value: boolean) {\n this.setField('IdleDelayChangeSupported', value);\n }\n // LockDelayChangeSupported\n public get lockDelayChangeSupported(): boolean {\n return this.getField('LockDelayChangeSupported');\n }\n public set lockDelayChangeSupported(value: boolean) {\n this.setField('LockDelayChangeSupported', value);\n }\n // SupportedCommands\n public get supportedCommands(): string {\n return this.getField('SupportedCommands');\n }\n public set supportedCommands(value: string) {\n this.setField('SupportedCommands', value);\n }\n // SecondaryIOPortRequired\n public get secondaryIOPortRequired(): boolean {\n return this.getField('SecondaryIOPortRequired');\n }\n public set secondaryIOPortRequired(value: boolean) {\n this.setField('SecondaryIOPortRequired', value);\n }\n // RemoteDataRequired\n public get remoteDataRequired(): boolean {\n return this.getField('RemoteDataRequired');\n }\n public set remoteDataRequired(value: boolean) {\n this.setField('RemoteDataRequired', value);\n }\n // NumberOfPresets\n public get numberOfPresets(): number {\n return this.getField('NumberOfPresets');\n }\n public set numberOfPresets(value: number) {\n this.setField('NumberOfPresets', value);\n }\n // NumberOfPattern\n public get numberOfPattern(): number {\n return this.getField('NumberOfPattern');\n }\n public set numberOfPattern(value: number) {\n this.setField('NumberOfPattern', value);\n }\n // NumberOfPresetTours\n public get numberOfPresetTours(): number {\n return this.getField('NumberOfPresetTours');\n }\n public set numberOfPresetTours(value: number) {\n this.setField('NumberOfPresetTours', value);\n }\n // NumberOfAux\n public get numberOfAux(): number {\n return this.getField('NumberOfAux');\n }\n public set numberOfAux(value: number) {\n this.setField('NumberOfAux', value);\n }\n // MinimumCameraNumber\n public get minimumCameraNumber(): number {\n return this.getField('MinimumCameraNumber');\n }\n public set minimumCameraNumber(value: number) {\n this.setField('MinimumCameraNumber', value);\n }\n // MaximumCameraNumber\n public get maximumCameraNumber(): number {\n return this.getField('MaximumCameraNumber');\n }\n public set maximumCameraNumber(value: number) {\n this.setField('MaximumCameraNumber', value);\n }\n // PresetBase\n public get presetBase(): number {\n return this.getField('PresetBase');\n }\n public set presetBase(value: number) {\n this.setField('PresetBase', value);\n }\n // PatternBase\n public get patternBase(): number {\n return this.getField('PatternBase');\n }\n public set patternBase(value: number) {\n this.setField('PatternBase', value);\n }\n // AuxBase\n public get auxBase(): number {\n return this.getField('AuxBase');\n }\n public set auxBase(value: number) {\n this.setField('AuxBase', value);\n }\n // PresetTourBase\n public get presetTourBase(): number {\n return this.getField('PresetTourBase');\n }\n public set presetTourBase(value: number) {\n this.setField('PresetTourBase', value);\n }\n // ProductCode\n public get productCode(): number {\n return this.getField('ProductCode');\n }\n public set productCode(value: number) {\n this.setField('ProductCode', value);\n }\n // MaximumZoomFactor\n public get maximumZoomFactor(): number {\n return this.getField('MaximumZoomFactor');\n }\n public set maximumZoomFactor(value: number) {\n this.setField('MaximumZoomFactor', value);\n }\n // MinimumPan\n public get minimumPan(): number {\n return this.getField('MinimumPan');\n }\n public set minimumPan(value: number) {\n this.setField('MinimumPan', value);\n }\n // MaximumPan\n public get maximumPan(): number {\n return this.getField('MaximumPan');\n }\n public set maximumPan(value: number) {\n this.setField('MaximumPan', value);\n }\n // MinimumTilt\n public get minimumTilt(): number {\n return this.getField('MinimumTilt');\n }\n public set minimumTilt(value: number) {\n this.setField('MinimumTilt', value);\n }\n // MaximumTilt\n public get maximumTilt(): number {\n return this.getField('MaximumTilt');\n }\n public set maximumTilt(value: number) {\n this.setField('MaximumTilt', value);\n }\n // SphericalSpaceMinimumPan\n public get sphericalSpaceMinimumPan(): number | null {\n return this.getNullableField('SphericalSpaceMinimumPan');\n }\n public set sphericalSpaceMinimumPan(value: number | null) {\n this.setNullableField('SphericalSpaceMinimumPan', value);\n }\n // SphericalSpaceMaximumPan\n public get sphericalSpaceMaximumPan(): number | null {\n return this.getNullableField('SphericalSpaceMaximumPan');\n }\n public set sphericalSpaceMaximumPan(value: number | null) {\n this.setNullableField('SphericalSpaceMaximumPan', value);\n }\n // SphericalSpaceMinimumTilt\n public get sphericalSpaceMinimumTilt(): number | null {\n return this.getNullableField('SphericalSpaceMinimumTilt');\n }\n public set sphericalSpaceMinimumTilt(value: number | null) {\n this.setNullableField('SphericalSpaceMinimumTilt', value);\n }\n // SphericalSpaceMaximumTilt\n public get sphericalSpaceMaximumTilt(): number | null {\n return this.getNullableField('SphericalSpaceMaximumTilt');\n }\n public set sphericalSpaceMaximumTilt(value: number | null) {\n this.setNullableField('SphericalSpaceMaximumTilt', value);\n }\n // SphericalSpacePanLeftDeviceLimit\n public get sphericalSpacePanLeftDeviceLimit(): number | null {\n return this.getNullableField('SphericalSpacePanLeftDeviceLimit');\n }\n public set sphericalSpacePanLeftDeviceLimit(value: number | null) {\n this.setNullableField('SphericalSpacePanLeftDeviceLimit', value);\n }\n // SphericalSpacePanRightDeviceLimit\n public get sphericalSpacePanRightDeviceLimit(): number | null {\n return this.getNullableField('SphericalSpacePanRightDeviceLimit');\n }\n public set sphericalSpacePanRightDeviceLimit(value: number | null) {\n this.setNullableField('SphericalSpacePanRightDeviceLimit', value);\n }\n // SphericalSpaceTiltUpDeviceLimit\n public get sphericalSpaceTiltUpDeviceLimit(): number | null {\n return this.getNullableField('SphericalSpaceTiltUpDeviceLimit');\n }\n public set sphericalSpaceTiltUpDeviceLimit(value: number | null) {\n this.setNullableField('SphericalSpaceTiltUpDeviceLimit', value);\n }\n // SphericalSpaceTiltDownDeviceLimit\n public get sphericalSpaceTiltDownDeviceLimit(): number | null {\n return this.getNullableField('SphericalSpaceTiltDownDeviceLimit');\n }\n public set sphericalSpaceTiltDownDeviceLimit(value: number | null) {\n this.setNullableField('SphericalSpaceTiltDownDeviceLimit', value);\n }\n // ZoomFactorSpaceMinimum\n public get zoomFactorSpaceMinimum(): number | null {\n return this.getNullableField('ZoomFactorSpaceMinimum');\n }\n public set zoomFactorSpaceMinimum(value: number | null) {\n this.setNullableField('ZoomFactorSpaceMinimum', value);\n }\n // ZoomFactorSpaceMaximum\n public get zoomFactorSpaceMaximum(): number | null {\n return this.getNullableField('ZoomFactorSpaceMaximum');\n }\n public set zoomFactorSpaceMaximum(value: number | null) {\n this.setNullableField('ZoomFactorSpaceMaximum', value);\n }\n // MinimumHorizontalFieldOfView\n public get minimumHorizontalFieldOfView(): number | null {\n return this.getNullableField('MinimumHorizontalFieldOfView');\n }\n public set minimumHorizontalFieldOfView(value: number | null) {\n this.setNullableField('MinimumHorizontalFieldOfView', value);\n }\n // MaximumHorizontalFieldOfView\n public get maximumHorizontalFieldOfView(): number | null {\n return this.getNullableField('MaximumHorizontalFieldOfView');\n }\n public set maximumHorizontalFieldOfView(value: number | null) {\n this.setNullableField('MaximumHorizontalFieldOfView', value);\n }\n // MinimumVerticalFieldOfView\n public get minimumVerticalFieldOfView(): number | null {\n return this.getNullableField('MinimumVerticalFieldOfView');\n }\n public set minimumVerticalFieldOfView(value: number | null) {\n this.setNullableField('MinimumVerticalFieldOfView', value);\n }\n // MaximumVerticalFieldOfView\n public get maximumVerticalFieldOfView(): number | null {\n return this.getNullableField('MaximumVerticalFieldOfView');\n }\n public set maximumVerticalFieldOfView(value: number | null) {\n this.setNullableField('MaximumVerticalFieldOfView', value);\n }\n // MinimumFocalLength\n public get minimumFocalLength(): number | null {\n return this.getNullableField('MinimumFocalLength');\n }\n public set minimumFocalLength(value: number | null) {\n this.setNullableField('MinimumFocalLength', value);\n }\n // MaximumFocalLength\n public get maximumFocalLength(): number | null {\n return this.getNullableField('MaximumFocalLength');\n }\n public set maximumFocalLength(value: number | null) {\n this.setNullableField('MaximumFocalLength', value);\n }\n // UnknownSpaceMinimumPan\n public get unknownSpaceMinimumPan(): number | null {\n return this.getNullableField('UnknownSpaceMinimumPan');\n }\n public set unknownSpaceMinimumPan(value: number | null) {\n this.setNullableField('UnknownSpaceMinimumPan', value);\n }\n // UnknownSpaceMaximumPan\n public get unknownSpaceMaximumPan(): number | null {\n return this.getNullableField('UnknownSpaceMaximumPan');\n }\n public set unknownSpaceMaximumPan(value: number | null) {\n this.setNullableField('UnknownSpaceMaximumPan', value);\n }\n // UnknownSpaceMinimumTilt\n public get unknownSpaceMinimumTilt(): number | null {\n return this.getNullableField('UnknownSpaceMinimumTilt');\n }\n public set unknownSpaceMinimumTilt(value: number | null) {\n this.setNullableField('UnknownSpaceMinimumTilt', value);\n }\n // UnknownSpaceMaximumTilt\n public get unknownSpaceMaximumTilt(): number | null {\n return this.getNullableField('UnknownSpaceMaximumTilt');\n }\n public set unknownSpaceMaximumTilt(value: number | null) {\n this.setNullableField('UnknownSpaceMaximumTilt', value);\n }\n // UnknownSpaceMinimumZoom\n public get unknownSpaceMinimumZoom(): number | null {\n return this.getNullableField('UnknownSpaceMinimumZoom');\n }\n public set unknownSpaceMinimumZoom(value: number | null) {\n this.setNullableField('UnknownSpaceMinimumZoom', value);\n }\n // UnknownSpaceMaximumZoom\n public get unknownSpaceMaximumZoom(): number | null {\n return this.getNullableField('UnknownSpaceMaximumZoom');\n }\n public set unknownSpaceMaximumZoom(value: number | null) {\n this.setNullableField('UnknownSpaceMaximumZoom', value);\n }\n\n public initializeAllFields(): void {\n this.setField('ProtocolChangeSupported', false);\n this.setField('PtzControlEnabled', false);\n this.setField('PtzNumberChangeSupported', false);\n this.setField('PtzSpeedControlSupported', false);\n this.setField('CameraLinkChangeSupported', false);\n this.setField('DeletionSupported', false);\n this.setField('IdleDelayChangeSupported', false);\n this.setField('LockDelayChangeSupported', false);\n this.setField('SupportedCommands', '');\n this.setField('SecondaryIOPortRequired', false);\n this.setField('RemoteDataRequired', false);\n this.setField('NumberOfPresets', 0);\n this.setField('NumberOfPattern', 0);\n this.setField('NumberOfPresetTours', 0);\n this.setField('NumberOfAux', 0);\n this.setField('MinimumCameraNumber', 0);\n this.setField('MaximumCameraNumber', 0);\n this.setField('PresetBase', 0);\n this.setField('PatternBase', 0);\n this.setField('AuxBase', 0);\n this.setField('PresetTourBase', 0);\n this.setField('ProductCode', 0);\n this.setField('MaximumZoomFactor', 0);\n this.setField('MinimumPan', 0);\n this.setField('MaximumPan', 0);\n this.setField('MinimumTilt', 0);\n this.setField('MaximumTilt', 0);\n this.setField('SphericalSpaceMinimumPan', 0);\n this.setField('SphericalSpaceMaximumPan', 0);\n this.setField('SphericalSpaceMinimumTilt', 0);\n this.setField('SphericalSpaceMaximumTilt', 0);\n this.setField('SphericalSpacePanLeftDeviceLimit', 0);\n this.setField('SphericalSpacePanRightDeviceLimit', 0);\n this.setField('SphericalSpaceTiltUpDeviceLimit', 0);\n this.setField('SphericalSpaceTiltDownDeviceLimit', 0);\n this.setField('ZoomFactorSpaceMinimum', 0);\n this.setField('ZoomFactorSpaceMaximum', 0);\n this.setField('MinimumHorizontalFieldOfView', 0);\n this.setField('MaximumHorizontalFieldOfView', 0);\n this.setField('MinimumVerticalFieldOfView', 0);\n this.setField('MaximumVerticalFieldOfView', 0);\n this.setField('MinimumFocalLength', 0);\n this.setField('MaximumFocalLength', 0);\n this.setField('UnknownSpaceMinimumPan', 0);\n this.setField('UnknownSpaceMaximumPan', 0);\n this.setField('UnknownSpaceMinimumTilt', 0);\n this.setField('UnknownSpaceMaximumTilt', 0);\n this.setField('UnknownSpaceMinimumZoom', 0);\n this.setField('UnknownSpaceMaximumZoom', 0);\n }\n}\n\nexport class ProtectVideo extends FieldObject implements IProtectVideo {\n // Start\n public get start(): Date {\n return this.getFieldDate('Start');\n }\n public set start(value: Date) {\n this.setFieldDate('Start', value);\n }\n // Stop\n public get stop(): Date {\n return this.getFieldDate('Stop');\n }\n public set stop(value: Date) {\n this.setFieldDate('Stop', value);\n }\n // Duration\n public get duration(): number | null {\n return this.getNullableField('Duration');\n }\n public set duration(value: number | null) {\n this.setNullableField('Duration', value);\n }\n // Protect\n public get protect(): boolean {\n return this.getField('Protect');\n }\n public set protect(value: boolean) {\n this.setField('Protect', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldDate('Start', new Date());\n this.setFieldDate('Stop', new Date());\n this.setField('Duration', 0);\n this.setField('Protect', false);\n }\n}\n\nexport class MotionDetectionZone extends FieldObject implements IMotionDetectionZone {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // MacroBlockHeight\n public get macroBlockHeight(): number | null {\n return this.getNullableField('MacroBlockHeight');\n }\n public set macroBlockHeight(value: number | null) {\n this.setNullableField('MacroBlockHeight', value);\n }\n // MacroBlockWidth\n public get macroBlockWidth(): number | null {\n return this.getNullableField('MacroBlockWidth');\n }\n public set macroBlockWidth(value: number | null) {\n this.setNullableField('MacroBlockWidth', value);\n }\n // MapHeight\n public get mapHeight(): number | null {\n return this.getNullableField('MapHeight');\n }\n public set mapHeight(value: number | null) {\n this.setNullableField('MapHeight', value);\n }\n // MapWidth\n public get mapWidth(): number | null {\n return this.getNullableField('MapWidth');\n }\n public set mapWidth(value: number | null) {\n this.setNullableField('MapWidth', value);\n }\n // MotionOffEvent\n public get motionOffEvent(): number | null {\n return this.getNullableField('MotionOffEvent');\n }\n public set motionOffEvent(value: number | null) {\n this.setNullableField('MotionOffEvent', value);\n }\n // MotionOffThreshold\n public get motionOffThreshold(): number | null {\n return this.getNullableField('MotionOffThreshold');\n }\n public set motionOffThreshold(value: number | null) {\n this.setNullableField('MotionOffThreshold', value);\n }\n // MotionOnEvent\n public get motionOnEvent(): number | null {\n return this.getNullableField('MotionOnEvent');\n }\n public set motionOnEvent(value: number | null) {\n this.setNullableField('MotionOnEvent', value);\n }\n // MotionOnThreshold\n public get motionOnThreshold(): number | null {\n return this.getNullableField('MotionOnThreshold');\n }\n public set motionOnThreshold(value: number | null) {\n this.setNullableField('MotionOnThreshold', value);\n }\n // Sensitivity\n public get sensitivity(): number | null {\n return this.getNullableField('Sensitivity');\n }\n public set sensitivity(value: number | null) {\n this.setNullableField('Sensitivity', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', 0);\n this.setField('MacroBlockHeight', 0);\n this.setField('MacroBlockWidth', 0);\n this.setField('MapHeight', 0);\n this.setField('MapWidth', 0);\n this.setField('MotionOffEvent', 0);\n this.setField('MotionOffThreshold', 0);\n this.setField('MotionOnEvent', 0);\n this.setField('MotionOnThreshold', 0);\n this.setField('Sensitivity', 0);\n }\n}\n\nexport class MotionDetection extends FieldObjectWithRelations implements IMotionDetection {\n // ScheduleId\n public get scheduleId(): IGuid {\n return this.getFieldGuid('ScheduleId');\n }\n public set scheduleId(value: IGuid) {\n this.setFieldGuid('ScheduleId', value);\n }\n // Enabled\n public get enabled(): boolean | null {\n return this.getNullableField('Enabled');\n }\n public set enabled(value: boolean | null) {\n this.setNullableField('Enabled', value);\n }\n // CameraApplicationHardwareDetection\n public get cameraApplicationHardwareDetection(): string {\n return this.getField('CameraApplicationHardwareDetection');\n }\n public set cameraApplicationHardwareDetection(value: string) {\n this.setField('CameraApplicationHardwareDetection', value);\n }\n // ConsecutiveFrame\n public get consecutiveFrame(): boolean | null {\n return this.getNullableField('ConsecutiveFrame');\n }\n public set consecutiveFrame(value: boolean | null) {\n this.setNullableField('ConsecutiveFrame', value);\n }\n // HardwareDetection\n public get hardwareDetection(): boolean | null {\n return this.getNullableField('HardwareDetection');\n }\n public set hardwareDetection(value: boolean | null) {\n this.setNullableField('HardwareDetection', value);\n }\n // IsH264\n public get isH264(): boolean | null {\n return this.getNullableField('IsH264');\n }\n public set isH264(value: boolean | null) {\n this.setNullableField('IsH264', value);\n }\n // H264ChromaWeight\n public get h264ChromaWeight(): number | null {\n return this.getNullableField('H264ChromaWeight');\n }\n public set h264ChromaWeight(value: number | null) {\n this.setNullableField('H264ChromaWeight', value);\n }\n // H264LumaWeight\n public get h264LumaWeight(): number | null {\n return this.getNullableField('H264LumaWeight');\n }\n public set h264LumaWeight(value: number | null) {\n this.setNullableField('H264LumaWeight', value);\n }\n // H264MacroBlockWeight\n public get h264MacroBlockWeight(): number | null {\n return this.getNullableField('H264MacroBlockWeight');\n }\n public set h264MacroBlockWeight(value: number | null) {\n this.setNullableField('H264MacroBlockWeight', value);\n }\n // H264VectorWeight\n public get h264VectorWeight(): number | null {\n return this.getNullableField('H264VectorWeight');\n }\n public set h264VectorWeight(value: number | null) {\n this.setNullableField('H264VectorWeight', value);\n }\n // MotionDetectorMode\n public get motionDetectorMode(): string {\n return this.getField('MotionDetectorMode');\n }\n public set motionDetectorMode(value: string) {\n this.setField('MotionDetectorMode', value);\n }\n // Sensitivity\n public get sensitivity(): number | null {\n return this.getNullableField('Sensitivity');\n }\n public set sensitivity(value: number | null) {\n this.setNullableField('Sensitivity', value);\n }\n\n public async getZonesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(MotionDetectionZone, 'MotionDetections/' + this.scheduleId + '/Zones', 'Id', false, true, null, transaction);\n }\n\n\n public initializeAllFields(): void {\n this.setFieldGuid('ScheduleId', SafeGuid.EMPTY);\n this.setField('Enabled', false);\n this.setField('CameraApplicationHardwareDetection', '');\n this.setField('ConsecutiveFrame', false);\n this.setField('HardwareDetection', false);\n this.setField('IsH264', false);\n this.setField('H264ChromaWeight', 0);\n this.setField('H264LumaWeight', 0);\n this.setField('H264MacroBlockWeight', 0);\n this.setField('H264VectorWeight', 0);\n this.setField('MotionDetectorMode', '');\n this.setField('Sensitivity', 0);\n }\n}\n\nexport class LensType extends FieldObject implements ILensType {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Manufacturer\n public get manufacturer(): string {\n return this.getField('Manufacturer');\n }\n public set manufacturer(value: string) {\n this.setField('Manufacturer', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Manufacturer', '');\n this.setField('Data', '');\n }\n}\n\nexport class Vector extends FieldObject implements IVector {\n // Y\n public get y(): number {\n return this.getField('Y');\n }\n public set y(value: number) {\n this.setField('Y', value);\n }\n // X\n public get x(): number {\n return this.getField('X');\n }\n public set x(value: number) {\n this.setField('X', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Y', 0);\n this.setField('X', 0);\n }\n}\n\nexport class LensConfiguration extends FieldObject implements ILensConfiguration {\n // LensProperties\n public get lensProperties(): string {\n return this.getField('LensProperties');\n }\n public set lensProperties(value: string) {\n this.setField('LensProperties', value);\n }\n // IsHardwareDewarpingSupported\n public get isHardwareDewarpingSupported(): boolean {\n return this.getField('IsHardwareDewarpingSupported');\n }\n public set isHardwareDewarpingSupported(value: boolean) {\n this.setField('IsHardwareDewarpingSupported', value);\n }\n // Vector\n public get vector(): IVector {\n return this.getFieldObject(Vector, 'Vector');\n }\n public set vector(value: IVector) {\n this.setFieldObject('Vector', value);\n }\n // ViewingModes\n public get viewingModes(): ObservableCollection {\n return this.getFieldArray('ViewingModes');\n }\n public set viewingModes(value: ObservableCollection) {\n this.setFieldArray('ViewingModes', value);\n }\n\n public initializeAllFields(): void {\n this.setField('LensProperties', '');\n this.setField('IsHardwareDewarpingSupported', false);\n const objVector = new Vector();\n objVector.initializeAllFields();\n this.setFieldObject('Vector', objVector);\n this.setFieldArray('ViewingModes', new ObservableCollection());\n }\n}\n\nexport class LensInfo extends FieldObject implements ILensInfo {\n // LensConfiguration\n public get lensConfiguration(): ILensConfiguration {\n return this.getFieldObject(LensConfiguration, 'LensConfiguration');\n }\n public set lensConfiguration(value: ILensConfiguration) {\n this.setFieldObject('LensConfiguration', value);\n }\n // LensType\n public get lensType(): ILensType {\n return this.getFieldObject(LensType, 'LensType');\n }\n public set lensType(value: ILensType) {\n this.setFieldObject('LensType', value);\n }\n\n public initializeAllFields(): void {\n const objLensConfiguration = new LensConfiguration();\n objLensConfiguration.initializeAllFields();\n this.setFieldObject('LensConfiguration', objLensConfiguration);\n const objLensType = new LensType();\n objLensType.initializeAllFields();\n this.setFieldObject('LensType', objLensType);\n }\n}\n\nexport class ThumbnailData extends FieldObject implements IThumbnailData {\n // Camera\n public get camera(): IGuid {\n return this.getFieldGuid('Camera');\n }\n public set camera(value: IGuid) {\n this.setFieldGuid('Camera', value);\n }\n // Timestamp\n public get timestamp(): Date {\n return this.getFieldDate('Timestamp');\n }\n public set timestamp(value: Date) {\n this.setFieldDate('Timestamp', value);\n }\n // Thumbnail\n public get thumbnail(): string {\n return this.getField('Thumbnail');\n }\n public set thumbnail(value: string) {\n this.setField('Thumbnail', value);\n }\n // Context\n public get context(): IGuid {\n return this.getFieldGuid('Context');\n }\n public set context(value: IGuid) {\n this.setFieldGuid('Context', value);\n }\n // LatestFrame\n public get latestFrame(): Date {\n return this.getFieldDate('LatestFrame');\n }\n public set latestFrame(value: Date) {\n this.setFieldDate('LatestFrame', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Camera', SafeGuid.EMPTY);\n this.setFieldDate('Timestamp', new Date());\n this.setField('Thumbnail', '');\n this.setFieldGuid('Context', SafeGuid.EMPTY);\n this.setFieldDate('LatestFrame', new Date());\n }\n}\n\nexport class ThumbnailRequest extends FieldObject implements IThumbnailRequest {\n // Time\n public get time(): Date | null {\n return this.getNullableFieldDate('Time');\n }\n public set time(value: Date | null) {\n this.setNullableFieldDate('Time', value);\n }\n // StartTime\n public get startTime(): Date | null {\n return this.getNullableFieldDate('StartTime');\n }\n public set startTime(value: Date | null) {\n this.setNullableFieldDate('StartTime', value);\n }\n // EndTime\n public get endTime(): Date | null {\n return this.getNullableFieldDate('EndTime');\n }\n public set endTime(value: Date | null) {\n this.setNullableFieldDate('EndTime', value);\n }\n // Count\n public get count(): number | null {\n return this.getNullableField('Count');\n }\n public set count(value: number | null) {\n this.setNullableField('Count', value);\n }\n // Width\n public get width(): number {\n return this.getField('Width');\n }\n public set width(value: number) {\n this.setField('Width', value);\n }\n // Timeout\n public get timeout(): number | null {\n return this.getNullableField('Timeout');\n }\n public set timeout(value: number | null) {\n this.setNullableField('Timeout', value);\n }\n // Context\n public get context(): IGuid {\n return this.getFieldGuid('Context');\n }\n public set context(value: IGuid) {\n this.setFieldGuid('Context', value);\n }\n // IsHighPrecision\n public get isHighPrecision(): boolean {\n return this.getField('IsHighPrecision');\n }\n public set isHighPrecision(value: boolean) {\n this.setField('IsHighPrecision', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldDate('Time', new Date());\n this.setFieldDate('StartTime', new Date());\n this.setFieldDate('EndTime', new Date());\n this.setField('Count', 0);\n this.setField('Width', 0);\n this.setField('Timeout', 0);\n this.setFieldGuid('Context', SafeGuid.EMPTY);\n this.setField('IsHighPrecision', false);\n }\n}\n\nexport class UserInfo extends FieldObject implements IUserInfo {\n // UserId\n public get userId(): IGuid {\n return this.getFieldGuid('UserId');\n }\n public set userId(value: IGuid) {\n this.setFieldGuid('UserId', value);\n }\n // UserLevel\n public get userLevel(): number {\n return this.getField('UserLevel');\n }\n public set userLevel(value: number) {\n this.setField('UserLevel', value);\n }\n // SystemId\n public get systemId(): string {\n return this.getField('SystemId');\n }\n public set systemId(value: string) {\n this.setField('SystemId', value);\n }\n // SkipPtzEvaluation\n public get skipPtzEvaluation(): boolean {\n return this.getField('SkipPtzEvaluation');\n }\n public set skipPtzEvaluation(value: boolean) {\n this.setField('SkipPtzEvaluation', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('UserId', SafeGuid.EMPTY);\n this.setField('UserLevel', 0);\n this.setField('SystemId', '');\n this.setField('SkipPtzEvaluation', false);\n }\n}\n\nexport class FeatureCapability extends FieldObject implements IFeatureCapability {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Supported\n public get supported(): boolean {\n return this.getField('Supported');\n }\n public set supported(value: boolean) {\n this.setField('Supported', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('Supported', false);\n }\n}\n\nexport class EncryptionCertificate extends FieldObject implements IEncryptionCertificate {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // Cert\n public get cert(): string {\n return this.getField('Cert');\n }\n public set cert(value: string) {\n this.setField('Cert', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Id', 0);\n this.setField('Cert', '');\n }\n}\n\nexport class ControlPtz extends FieldObject implements IControlPtz {\n // Command\n public get command(): string {\n return this.getField('Command');\n }\n public set command(value: string) {\n this.setField('Command', value);\n }\n // Arg1\n public get arg1(): number {\n return this.getField('Arg1');\n }\n public set arg1(value: number) {\n this.setField('Arg1', value);\n }\n // Arg2\n public get arg2(): number {\n return this.getField('Arg2');\n }\n public set arg2(value: number) {\n this.setField('Arg2', value);\n }\n // UserAppId\n public get userAppId(): IGuid | null {\n return this.getNullableFieldGuid('UserAppId');\n }\n public set userAppId(value: IGuid | null) {\n this.setNullableFieldGuid('UserAppId', value);\n }\n // UserId\n public get userId(): IGuid | null {\n return this.getNullableFieldGuid('UserId');\n }\n public set userId(value: IGuid | null) {\n this.setNullableFieldGuid('UserId', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Command', '');\n this.setField('Arg1', 0);\n this.setField('Arg2', 0);\n this.setFieldGuid('UserAppId', SafeGuid.EMPTY);\n this.setFieldGuid('UserId', SafeGuid.EMPTY);\n }\n}\n\nexport class BlockInfo extends FieldObject implements IBlockInfo {\n // IsBlocked\n public get isBlocked(): boolean {\n return this.getField('IsBlocked');\n }\n public set isBlocked(value: boolean) {\n this.setField('IsBlocked', value);\n }\n // BlockLevel\n public get blockLevel(): number {\n return this.getField('BlockLevel');\n }\n public set blockLevel(value: number) {\n this.setField('BlockLevel', value);\n }\n // UserLevel\n public get userLevel(): number {\n return this.getField('UserLevel');\n }\n public set userLevel(value: number) {\n this.setField('UserLevel', value);\n }\n // StartTime\n public get startTime(): Date {\n return this.getFieldDate('StartTime');\n }\n public set startTime(value: Date) {\n this.setFieldDate('StartTime', value);\n }\n // EndTime\n public get endTime(): Date {\n return this.getFieldDate('EndTime');\n }\n public set endTime(value: Date) {\n this.setFieldDate('EndTime', value);\n }\n\n public initializeAllFields(): void {\n this.setField('IsBlocked', false);\n this.setField('BlockLevel', 0);\n this.setField('UserLevel', 0);\n this.setFieldDate('StartTime', new Date());\n this.setFieldDate('EndTime', new Date());\n }\n}\n\nexport class PtzInfo extends FieldObject implements IPtzInfo {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', 0);\n this.setField('Name', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class CameraEntity extends LocatableEntity implements ICameraEntity {\n // #region REST Properties\n\n // AudioRecording\n public get audioRecording(): boolean {\n return this.getField(CameraEntityFields.audioRecordingField);\n }\n public set audioRecording(value: boolean) {\n this.setField(CameraEntityFields.audioRecordingField, value);\n }\n\n // AudioStreamIn\n public get audioStreamIn(): IGuid {\n return this.getFieldGuid(CameraEntityFields.audioStreamInField);\n }\n\n // AudioStreamOut\n public get audioStreamOut(): IGuid {\n return this.getFieldGuid(CameraEntityFields.audioStreamOutField);\n }\n\n // AutomaticCleanup\n public get automaticCleanup(): boolean {\n return this.getField(CameraEntityFields.automaticCleanupField);\n }\n public set automaticCleanup(value: boolean) {\n this.setField(CameraEntityFields.automaticCleanupField, value);\n }\n\n // CameraSubType\n public get cameraSubType(): string {\n return this.getField(CameraEntityFields.cameraSubTypeField);\n }\n\n // DefaultManualRecordingTime\n public get defaultManualRecordingTime(): number {\n return this.getField(CameraEntityFields.defaultManualRecordingTimeField);\n }\n public set defaultManualRecordingTime(value: number) {\n this.setField(CameraEntityFields.defaultManualRecordingTimeField, value);\n }\n\n // EncryptionEnabled\n public get encryptionEnabled(): boolean {\n return this.getField(CameraEntityFields.encryptionEnabledField);\n }\n public set encryptionEnabled(value: boolean) {\n this.setField(CameraEntityFields.encryptionEnabledField, value);\n }\n\n // EncryptionType\n public get encryptionType(): string {\n return this.getField(CameraEntityFields.encryptionTypeField);\n }\n public set encryptionType(value: string) {\n this.setField(CameraEntityFields.encryptionTypeField, value);\n }\n\n // ExternalSystemType\n public get externalSystemType(): string {\n return this.getField(CameraEntityFields.externalSystemTypeField);\n }\n\n // FederationStreamUsage\n public get federationStreamUsage(): string {\n return this.getField(CameraEntityFields.federationStreamUsageField);\n }\n\n // FederationUserId\n public get federationUserId(): IGuid {\n return this.getFieldGuid(CameraEntityFields.federationUserIdField);\n }\n\n // FederationUserSecurityLevel\n public get federationUserSecurityLevel(): number {\n return this.getField(CameraEntityFields.federationUserSecurityLevelField);\n }\n\n // IsDVRInput\n public get isDVRInput(): boolean {\n return this.getField(CameraEntityFields.isDVRInputField);\n }\n\n // IsEdgeAnalyticsCamera\n public get isEdgeAnalyticsCamera(): boolean {\n return this.getField(CameraEntityFields.isEdgeAnalyticsCameraField);\n }\n\n // IsLicensedCamera\n public get isLicensedCamera(): boolean {\n return this.getField(CameraEntityFields.isLicensedCameraField);\n }\n\n // IsNative\n public get isNative(): boolean {\n return this.getField(CameraEntityFields.isNativeField);\n }\n\n // IsPluginCamera\n public get isPluginCamera(): boolean {\n return this.getField(CameraEntityFields.isPluginCameraField);\n }\n\n // IsPrivacyProtected\n public get isPrivacyProtected(): boolean {\n return this.getField(CameraEntityFields.isPrivacyProtectedField);\n }\n\n // LockingUserAppId\n public get lockingUserAppId(): IGuid {\n return this.getFieldGuid(CameraEntityFields.lockingUserAppIdField, ValidFlags.EntityStatus);\n }\n\n // LockingUserId\n public get lockingUserId(): IGuid {\n return this.getFieldGuid(CameraEntityFields.lockingUserIdField, ValidFlags.EntityStatus);\n }\n\n // LockingUserInfo\n public get lockingUserInfo(): any {\n return this.getField(CameraEntityFields.lockingUserInfoField);\n }\n\n // LockState\n public get lockState(): string {\n return this.getField(CameraEntityFields.lockStateField, ValidFlags.EntityStatus);\n }\n public set lockState(value: string) {\n this.setField(CameraEntityFields.lockStateField, value);\n }\n\n // MetadataRecording\n public get metadataRecording(): boolean {\n return this.getField(CameraEntityFields.metadataRecordingField);\n }\n public set metadataRecording(value: boolean) {\n this.setField(CameraEntityFields.metadataRecordingField, value);\n }\n\n // OmnicastCameraGuid\n public get omnicastCameraGuid(): IGuid {\n return this.getFieldGuid(CameraEntityFields.omnicastCameraGuidField);\n }\n\n // PostEventRecordingTime\n public get postEventRecordingTime(): number {\n return this.getField(CameraEntityFields.postEventRecordingTimeField);\n }\n public set postEventRecordingTime(value: number) {\n this.setField(CameraEntityFields.postEventRecordingTimeField, value);\n }\n\n // PreEventRecordingTime\n public get preEventRecordingTime(): number {\n return this.getField(CameraEntityFields.preEventRecordingTimeField);\n }\n public set preEventRecordingTime(value: number) {\n this.setField(CameraEntityFields.preEventRecordingTimeField, value);\n }\n\n // PtzAddress\n public get ptzAddress(): number {\n return this.getField(CameraEntityFields.ptzAddressField);\n }\n\n // PtzCapabilities\n public get ptzCapabilities(): string {\n return this.getField(CameraEntityFields.ptzCapabilitiesField);\n }\n\n // PtzIdleAction\n public get ptzIdleAction(): string {\n return this.getField(CameraEntityFields.ptzIdleActionField);\n }\n\n // PtzIdleActionNumber\n public get ptzIdleActionNumber(): number {\n return this.getField(CameraEntityFields.ptzIdleActionNumberField);\n }\n\n // PtzIdleDelay\n public get ptzIdleDelay(): number {\n return this.getField(CameraEntityFields.ptzIdleDelayField);\n }\n\n // PtzLockDelay\n public get ptzLockDelay(): number {\n return this.getField(CameraEntityFields.ptzLockDelayField);\n }\n\n // PtzLockStateTimeUp\n public get ptzLockStateTimeUp(): Date {\n return this.getFieldDate(CameraEntityFields.ptzLockStateTimeUpField, ValidFlags.EntityStatus);\n }\n\n // PtzProtocol\n public get ptzProtocol(): number {\n return this.getField(CameraEntityFields.ptzProtocolField);\n }\n\n // PtzSerialPortId\n public get ptzSerialPortId(): IGuid {\n return this.getFieldGuid(CameraEntityFields.ptzSerialPortIdField);\n }\n\n // PtzSpecificConfig\n public get ptzSpecificConfig(): string {\n return this.getField(CameraEntityFields.ptzSpecificConfigField);\n }\n\n // RecordingLength\n public get recordingLength(): string {\n return this.getField(CameraEntityFields.recordingLengthField);\n }\n\n // RecordingState\n public get recordingState(): string {\n return this.getField(CameraEntityFields.recordingStateField, ValidFlags.EntityStatus);\n }\n\n // RedundantArchiving\n public get redundantArchiving(): boolean {\n return this.getField(CameraEntityFields.redundantArchivingField);\n }\n public set redundantArchiving(value: boolean) {\n this.setField(CameraEntityFields.redundantArchivingField, value);\n }\n\n // RetentionPeriod\n public get retentionPeriod(): number {\n return this.getField(CameraEntityFields.retentionPeriodField);\n }\n public set retentionPeriod(value: number) {\n this.setField(CameraEntityFields.retentionPeriodField, value);\n }\n\n // RoleType\n public get roleType(): IGuid {\n return this.getFieldGuid(CameraEntityFields.roleTypeField);\n }\n\n // SignalState\n public get signalState(): string {\n return this.getField(CameraEntityFields.signalStateField, ValidFlags.EntityStatus);\n }\n\n // StreamGroupId\n public get streamGroupId(): string {\n return this.getField(CameraEntityFields.streamGroupIdField);\n }\n public set streamGroupId(value: string) {\n this.setField(CameraEntityFields.streamGroupIdField, value);\n }\n\n // Tailing\n public get tailing(): string {\n return this.getField(CameraEntityFields.tailingField);\n }\n\n // ThumbnailId\n public get thumbnailId(): IGuid {\n return this.getFieldGuid(CameraEntityFields.thumbnailIdField);\n }\n\n // Unit\n public get unit(): IGuid {\n return this.getFieldGuid(CameraEntityFields.unitField);\n }\n\n // UseCustomRecordingSettings\n public get useCustomRecordingSettings(): boolean {\n return this.getField(CameraEntityFields.useCustomRecordingSettingsField);\n }\n public set useCustomRecordingSettings(value: boolean) {\n this.setField(CameraEntityFields.useCustomRecordingSettingsField, value);\n }\n\n // VideoEncoderDevice\n public get videoEncoderDevice(): IGuid {\n return this.getFieldGuid(CameraEntityFields.videoEncoderDeviceField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Cameras);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async addBookmarkAsync(description: string, timestamp: Date, playback: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('description', description);\n inParam.setFieldDate('timestamp', timestamp);\n inParam.setField('playback', playback);\n\n return this.executeRequestTransactionAsync('AddBookmark', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getArchivedStreamsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('ArchivedStreams', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getAttachedCashRegistersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AttachedCashRegisters', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getAuxAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PtzInfo, 'Aux', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n public async blockAsync(start: Date, end: Date, blockingLevel: number, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldDate('start', start);\n inParam.setFieldDate('end', end);\n inParam.setField('blockingLevel', blockingLevel);\n\n return this.executeRequestTransactionAsync('Block', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getBlockCameraInfoAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(BlockInfo, 'BlockCameraInfo', false, ValidFlags.Specific, transaction);\n }\n\n public async boostQualityAsScheduledAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('BoostQualityAsScheduled', 'POST', null, transaction, responseHandler);\n }\n\n public async controlPtzAsync(value: IControlPtz, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('ControlPtz', 'POST', value, transaction, responseHandler);\n }\n\n public async donateArchivesAsync(id: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('id', id);\n\n return this.executeRequestTransactionAsync('DonateArchives', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getEncryptionCertificatesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(EncryptionCertificate, 'EncryptionCertificates', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n public async getFeatureCapabilitiesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(FeatureCapability, 'FeatureCapabilities', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async getFederationUserMultilevelInfoAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(UserInfo, 'FederationUserInfo', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async generateThumbnailsAsync(value: IThumbnailRequest, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new Array();\n const body = response.body as Array;\n for (const entry of body) {\n const fo = new ThumbnailData();\n fo.loadFields(entry);\n result.push(fo);\n }\n return new Promise>(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync>('GenerateThumbnails', 'POST', value, transaction, responseHandler);\n }\n\n public async gotoHomeAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('GotoHome', 'POST', null, transaction, responseHandler);\n }\n\n public async getHardwareConfigDataAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'HardwareConfigData', false, ValidFlags.None, transaction);\n }\n\n public async getLensAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(LensInfo, 'Lens', false, ValidFlags.Specific, transaction);\n }\n\n public async getMetadataStreamsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('MetadataStreams', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getMotionDetectionAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(MotionDetection, 'MotionDetections', 'ScheduleId', false, true, ValidFlags.None, transaction);\n }\n\n public async getPatternsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PtzInfo, 'Patterns', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async getPresetsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PtzInfo, 'Presets', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async protectVideoPlaybackAsync(value: IProtectVideo, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('ProtectVideoPlayback', 'POST', value, transaction, responseHandler);\n }\n\n public async getPtzCapabilitiesAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(PtzCapabilitiesInfo, 'PtzCapabilities', false, ValidFlags.None, transaction);\n }\n\n public async getRecordingModesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RecordingMode, 'RecordingModes', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async startLiveStreamingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('StartLiveStreaming', 'POST', null, transaction, responseHandler);\n }\n\n public async startRecordingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('StartRecording', 'POST', null, transaction, responseHandler);\n }\n\n public async stopLiveStreamingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('StopLiveStreaming', 'POST', null, transaction, responseHandler);\n }\n\n public async stopRecordingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('StopRecording', 'POST', null, transaction, responseHandler);\n }\n\n public async getStreamsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(StreamUsageInfo, 'Streams', 'Id', true, true, ValidFlags.EntityDependency2, transaction);\n }\n\n public async getTransferGroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('TransferGroups', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async unblockAsync(start: Date, end: Date, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldDate('start', start);\n inParam.setFieldDate('end', end);\n\n return this.executeRequestTransactionAsync('Unblock', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getVideoAttributesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(VideoAttribute, 'VideoAttributes', 'ScheduleId', false, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiRole?codegen=ts&InterfaceOnly=True&workflow=False on 2022-02-24 3:03:12 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class RoleEntityFields extends EntityFields {\n public static apiUrlPrefixesField = 'ApiUrlPrefixes';\n public static automaticBackupFileCountField = 'AutomaticBackupFileCount';\n public static automaticBackupFrequencyField = 'AutomaticBackupFrequency';\n public static automaticBackupTimeField = 'AutomaticBackupTime';\n public static backupFolderField = 'BackupFolder';\n public static databaseFolderField = 'DatabaseFolder';\n public static databaseInstanceField = 'DatabaseInstance';\n public static databaseNameField = 'DatabaseName';\n public static disabledField = 'Disabled';\n public static enableAutomaticBackupField = 'EnableAutomaticBackup';\n public static enableBackupCompressionField = 'EnableBackupCompression';\n public static encryptDatabaseConnectionField = 'EncryptDatabaseConnection';\n public static enforceDatabaseServerCertificateField = 'EnforceDatabaseServerCertificate';\n public static forceExecutionByPriorityField = 'ForceExecutionByPriority';\n public static groupField = 'Group';\n public static notificationsDatabaseUsageField = 'NotificationsDatabaseUsage';\n public static notificationsDatabaseUsageAsPercentageField = 'NotificationsDatabaseUsageAsPercentage';\n public static notificationsDiskSpaceField = 'NotificationsDiskSpace';\n public static notificationsRemainingGbField = 'NotificationsRemainingGb';\n public static notifyOnlyWhenLimitIsReachedField = 'NotifyOnlyWhenLimitIsReached';\n public static overriddenLoadingStrategyField = 'OverriddenLoadingStrategy';\n public static roleSubTypeField = 'RoleSubType';\n public static roleTypeIdField = 'RoleTypeId';\n public static serverField = 'Server';\n public static specificXmlField = 'SpecificXml';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IDatabaseInfo extends IFieldObject {\n database: string;\n server: string;\n username: string;\n password: string;\n}\n\nexport interface ISecureData extends IFieldObject {\n id: string;\n payload: string;\n}\n\nexport interface IRoleServer extends IFieldObject {\n id: IGuid;\n roleServerNetworkInterface: string;\n roleServerOrder: number | null;\n}\n\nexport interface IDatabaseCreateInfo extends IFieldObject {\n overwrite: boolean;\n folder: string;\n logFolder: string;\n database: string;\n server: string;\n username: string;\n password: string;\n}\n\n// #endregion Inner classes\n\nexport interface IRoleEntity extends IEntity {\n // #region REST Properties\n\n apiUrlPrefixes: ObservableCollection;\n\n automaticBackupFileCount: number;\n\n automaticBackupFrequency: string;\n\n automaticBackupTime: number;\n\n backupFolder: string;\n\n databaseFolder: string;\n\n databaseInstance: string;\n\n databaseName: string;\n\n disabled: boolean;\n\n enableAutomaticBackup: boolean;\n\n enableBackupCompression: boolean;\n\n encryptDatabaseConnection: boolean;\n\n enforceDatabaseServerCertificate: boolean;\n\n forceExecutionByPriority: boolean;\n\n group: string;\n\n notificationsDatabaseUsage: boolean;\n\n notificationsDatabaseUsageAsPercentage: number;\n\n notificationsDiskSpace: boolean;\n\n notificationsRemainingGb: number;\n\n notifyOnlyWhenLimitIsReached: boolean;\n\n overriddenLoadingStrategy: string;\n\n roleSubType: IGuid;\n\n roleTypeId: IGuid;\n\n server: IGuid;\n\n specificXml: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAgentsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n createDatabaseAsync(value: IDatabaseCreateInfo, transaction?: ITransaction): Promise;\n createDatabaseBackupAsync(folder: string, enableCompression: boolean, transaction?: ITransaction): Promise;\n getRoleDatabaseStatusAsync(transaction?: ITransaction | null): Promise;\n deleteDatabaseAsync(transaction?: ITransaction): Promise;\n getOwnershipEntitiesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n restoreDatabaseBackupAsync(file: string, transaction?: ITransaction): Promise;\n getRoleServersAsync(transaction?: ITransaction | null): Promise | null>;\n deleteSecureDataAsync(id: string, transaction?: ITransaction | null): Promise;\n getSecureDataAsync(id: string, transaction?: ITransaction | null): Promise;\n addSecureDataAsync(id: string, value: ISecureData, transaction?: ITransaction | null): Promise;\n setDatabaseAsync(value: IDatabaseInfo, transaction?: ITransaction): Promise;\n upgradeDatabaseAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiRole?codegen=ts&InterfaceOnly=False&workflow=False on 2022-02-24 3:03:19 PM\nimport { Entity } from '../Entity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IRoleEntity, IDatabaseInfo, ISecureData, IRoleServer, IDatabaseCreateInfo, RoleEntityFields } from '../../Interface/IRoleEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\nimport { RestResponse } from '../../../Connection/RestResponse';\n\n// #region Inner classes\n\nexport class DatabaseInfo extends FieldObject implements IDatabaseInfo {\n // Database\n public get database(): string {\n return this.getField('Database');\n }\n public set database(value: string) {\n this.setField('Database', value);\n }\n // Server\n public get server(): string {\n return this.getField('Server');\n }\n public set server(value: string) {\n this.setField('Server', value);\n }\n // Username\n public get username(): string {\n return this.getField('Username');\n }\n public set username(value: string) {\n this.setField('Username', value);\n }\n // Password\n public get password(): string {\n return this.getField('Password');\n }\n public set password(value: string) {\n this.setField('Password', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Database', '');\n this.setField('Server', '');\n this.setField('Username', '');\n this.setField('Password', '');\n }\n}\n\nexport class SecureData extends FieldObject implements ISecureData {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Payload\n public get payload(): string {\n return this.getField('Payload');\n }\n public set payload(value: string) {\n this.setField('Payload', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('Payload', '');\n }\n}\n\nexport class RoleServer extends FieldObject implements IRoleServer {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // RoleServerNetworkInterface\n public get roleServerNetworkInterface(): string {\n return this.getField('RoleServerNetworkInterface');\n }\n public set roleServerNetworkInterface(value: string) {\n this.setField('RoleServerNetworkInterface', value);\n }\n // RoleServerOrder\n public get roleServerOrder(): number | null {\n return this.getNullableField('RoleServerOrder');\n }\n public set roleServerOrder(value: number | null) {\n this.setNullableField('RoleServerOrder', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('RoleServerNetworkInterface', '');\n this.setField('RoleServerOrder', 0);\n }\n}\n\nexport class DatabaseCreateInfo extends FieldObject implements IDatabaseCreateInfo {\n // Overwrite\n public get overwrite(): boolean {\n return this.getField('Overwrite');\n }\n public set overwrite(value: boolean) {\n this.setField('Overwrite', value);\n }\n // Folder\n public get folder(): string {\n return this.getField('Folder');\n }\n public set folder(value: string) {\n this.setField('Folder', value);\n }\n // LogFolder\n public get logFolder(): string {\n return this.getField('LogFolder');\n }\n public set logFolder(value: string) {\n this.setField('LogFolder', value);\n }\n // Database\n public get database(): string {\n return this.getField('Database');\n }\n public set database(value: string) {\n this.setField('Database', value);\n }\n // Server\n public get server(): string {\n return this.getField('Server');\n }\n public set server(value: string) {\n this.setField('Server', value);\n }\n // Username\n public get username(): string {\n return this.getField('Username');\n }\n public set username(value: string) {\n this.setField('Username', value);\n }\n // Password\n public get password(): string {\n return this.getField('Password');\n }\n public set password(value: string) {\n this.setField('Password', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Overwrite', false);\n this.setField('Folder', '');\n this.setField('LogFolder', '');\n this.setField('Database', '');\n this.setField('Server', '');\n this.setField('Username', '');\n this.setField('Password', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class RoleEntity extends Entity implements IRoleEntity {\n // #region REST Properties\n\n // ApiUrlPrefixes\n public get apiUrlPrefixes(): ObservableCollection {\n return this.getFieldArray(RoleEntityFields.apiUrlPrefixesField);\n }\n public set apiUrlPrefixes(value: ObservableCollection) {\n this.setFieldArray(RoleEntityFields.apiUrlPrefixesField, value);\n }\n\n // AutomaticBackupFileCount\n public get automaticBackupFileCount(): number {\n return this.getField(RoleEntityFields.automaticBackupFileCountField);\n }\n public set automaticBackupFileCount(value: number) {\n this.setField(RoleEntityFields.automaticBackupFileCountField, value);\n }\n\n // AutomaticBackupFrequency\n public get automaticBackupFrequency(): string {\n return this.getField(RoleEntityFields.automaticBackupFrequencyField);\n }\n public set automaticBackupFrequency(value: string) {\n this.setField(RoleEntityFields.automaticBackupFrequencyField, value);\n }\n\n // AutomaticBackupTime\n public get automaticBackupTime(): number {\n return this.getField(RoleEntityFields.automaticBackupTimeField);\n }\n public set automaticBackupTime(value: number) {\n this.setField(RoleEntityFields.automaticBackupTimeField, value);\n }\n\n // BackupFolder\n public get backupFolder(): string {\n return this.getField(RoleEntityFields.backupFolderField);\n }\n public set backupFolder(value: string) {\n this.setField(RoleEntityFields.backupFolderField, value);\n }\n\n // DatabaseFolder\n public get databaseFolder(): string {\n return this.getField(RoleEntityFields.databaseFolderField);\n }\n public set databaseFolder(value: string) {\n this.setField(RoleEntityFields.databaseFolderField, value);\n }\n\n // DatabaseInstance\n public get databaseInstance(): string {\n return this.getField(RoleEntityFields.databaseInstanceField);\n }\n public set databaseInstance(value: string) {\n this.setField(RoleEntityFields.databaseInstanceField, value);\n }\n\n // DatabaseName\n public get databaseName(): string {\n return this.getField(RoleEntityFields.databaseNameField);\n }\n public set databaseName(value: string) {\n this.setField(RoleEntityFields.databaseNameField, value);\n }\n\n // Disabled\n public get disabled(): boolean {\n return this.getField(RoleEntityFields.disabledField);\n }\n public set disabled(value: boolean) {\n this.setField(RoleEntityFields.disabledField, value);\n }\n\n // EnableAutomaticBackup\n public get enableAutomaticBackup(): boolean {\n return this.getField(RoleEntityFields.enableAutomaticBackupField);\n }\n public set enableAutomaticBackup(value: boolean) {\n this.setField(RoleEntityFields.enableAutomaticBackupField, value);\n }\n\n // EnableBackupCompression\n public get enableBackupCompression(): boolean {\n return this.getField(RoleEntityFields.enableBackupCompressionField);\n }\n public set enableBackupCompression(value: boolean) {\n this.setField(RoleEntityFields.enableBackupCompressionField, value);\n }\n\n // EncryptDatabaseConnection\n public get encryptDatabaseConnection(): boolean {\n return this.getField(RoleEntityFields.encryptDatabaseConnectionField);\n }\n public set encryptDatabaseConnection(value: boolean) {\n this.setField(RoleEntityFields.encryptDatabaseConnectionField, value);\n }\n\n // EnforceDatabaseServerCertificate\n public get enforceDatabaseServerCertificate(): boolean {\n return this.getField(RoleEntityFields.enforceDatabaseServerCertificateField);\n }\n public set enforceDatabaseServerCertificate(value: boolean) {\n this.setField(RoleEntityFields.enforceDatabaseServerCertificateField, value);\n }\n\n // ForceExecutionByPriority\n public get forceExecutionByPriority(): boolean {\n return this.getField(RoleEntityFields.forceExecutionByPriorityField);\n }\n public set forceExecutionByPriority(value: boolean) {\n this.setField(RoleEntityFields.forceExecutionByPriorityField, value);\n }\n\n // Group\n public get group(): string {\n return this.getField(RoleEntityFields.groupField);\n }\n public set group(value: string) {\n this.setField(RoleEntityFields.groupField, value);\n }\n\n // NotificationsDatabaseUsage\n public get notificationsDatabaseUsage(): boolean {\n return this.getField(RoleEntityFields.notificationsDatabaseUsageField);\n }\n public set notificationsDatabaseUsage(value: boolean) {\n this.setField(RoleEntityFields.notificationsDatabaseUsageField, value);\n }\n\n // NotificationsDatabaseUsageAsPercentage\n public get notificationsDatabaseUsageAsPercentage(): number {\n return this.getField(RoleEntityFields.notificationsDatabaseUsageAsPercentageField);\n }\n public set notificationsDatabaseUsageAsPercentage(value: number) {\n this.setField(RoleEntityFields.notificationsDatabaseUsageAsPercentageField, value);\n }\n\n // NotificationsDiskSpace\n public get notificationsDiskSpace(): boolean {\n return this.getField(RoleEntityFields.notificationsDiskSpaceField);\n }\n public set notificationsDiskSpace(value: boolean) {\n this.setField(RoleEntityFields.notificationsDiskSpaceField, value);\n }\n\n // NotificationsRemainingGb\n public get notificationsRemainingGb(): number {\n return this.getField(RoleEntityFields.notificationsRemainingGbField);\n }\n public set notificationsRemainingGb(value: number) {\n this.setField(RoleEntityFields.notificationsRemainingGbField, value);\n }\n\n // NotifyOnlyWhenLimitIsReached\n public get notifyOnlyWhenLimitIsReached(): boolean {\n return this.getField(RoleEntityFields.notifyOnlyWhenLimitIsReachedField);\n }\n public set notifyOnlyWhenLimitIsReached(value: boolean) {\n this.setField(RoleEntityFields.notifyOnlyWhenLimitIsReachedField, value);\n }\n\n // OverriddenLoadingStrategy\n public get overriddenLoadingStrategy(): string {\n return this.getField(RoleEntityFields.overriddenLoadingStrategyField);\n }\n public set overriddenLoadingStrategy(value: string) {\n this.setField(RoleEntityFields.overriddenLoadingStrategyField, value);\n }\n\n // RoleSubType\n public get roleSubType(): IGuid {\n return this.getFieldGuid(RoleEntityFields.roleSubTypeField);\n }\n public set roleSubType(value: IGuid) {\n this.setFieldGuid(RoleEntityFields.roleSubTypeField, value);\n }\n\n // RoleTypeId\n public get roleTypeId(): IGuid {\n return this.getFieldGuid(RoleEntityFields.roleTypeIdField);\n }\n public set roleTypeId(value: IGuid) {\n this.setFieldGuid(RoleEntityFields.roleTypeIdField, value);\n }\n\n // Server\n public get server(): IGuid {\n return this.getFieldGuid(RoleEntityFields.serverField, ValidFlags.EntityStatus3);\n }\n public set server(value: IGuid) {\n this.setFieldGuid(RoleEntityFields.serverField, value);\n }\n\n // SpecificXml\n public get specificXml(): string {\n return this.getField(RoleEntityFields.specificXmlField, ValidFlags.Specific);\n }\n public set specificXml(value: string) {\n this.setField(RoleEntityFields.specificXmlField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Roles);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAgentsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Agents', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async createDatabaseAsync(value: IDatabaseCreateInfo, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('CreateDatabase', 'POST', value, transaction, responseHandler);\n }\n\n public async createDatabaseBackupAsync(folder: string, enableCompression: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('folder', folder);\n inParam.setField('enableCompression', enableCompression);\n\n return this.executeRequestTransactionAsync('CreateDatabaseBackup', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getRoleDatabaseStatusAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'DatabaseStatus', false, ValidFlags.None, transaction);\n }\n\n public async deleteDatabaseAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('DeleteDatabase', 'POST', null, transaction, responseHandler);\n }\n\n public async getOwnershipEntitiesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('OwnershipEntities', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async restoreDatabaseBackupAsync(file: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('file', file);\n\n return this.executeRequestTransactionAsync('RestoreDatabaseBackup', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getRoleServersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RoleServer, 'RoleServers', 'Id', false, true, ValidFlags.Membership2, transaction);\n }\n\n public async deleteSecureDataAsync(id: string, transaction?: ITransaction | null): Promise {\n await this.updateDataRelation2Async(SecureData, 'SecureData/' + id, 'DELETE', false, ValidFlags.None, null);\n return new RestResponse(HttpStatusCode.OK);\n }\n\n public async getSecureDataAsync(id: string, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(SecureData, 'SecureData/' + id, false, ValidFlags.None, transaction);\n }\n\n public async addSecureDataAsync(id: string, value: ISecureData, transaction?: ITransaction | null): Promise {\n return await this.updateDataRelation2Async(SecureData, 'SecureData/' + id, 'POST', false, ValidFlags.None, value);\n }\n\n public async setDatabaseAsync(value: IDatabaseInfo, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('SetDatabase', 'POST', value, transaction, responseHandler);\n }\n\n public async upgradeDatabaseAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('UpgradeDatabase', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAgent?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class AgentEntityFields extends EntityFields {\n public static agentTypeField = 'AgentType';\n public static roleIdField = 'RoleId';\n public static serverIdField = 'ServerId';\n public static serverInfoField = 'ServerInfo';\n public static specificConfigXmlField = 'SpecificConfigXml';\n public static xmlDataField = 'XmlData';\n}\n\n// #endregion Fields\n\nexport interface IAgentEntity extends IEntity {\n // #region REST Properties\n\n readonly agentType: string;\n\n roleId: IGuid;\n\n serverId: IGuid;\n\n serverInfo: string;\n\n specificConfigXml: string;\n\n xmlData: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAgentDatabaseStatusAsync(transaction?: ITransaction | null): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAgent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:24 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IAgentEntity, AgentEntityFields } from '../Interface/IAgentEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IFieldObject } from '../Interface/IFieldObject';\n\nexport class AgentEntity extends Entity implements IAgentEntity {\n // #region REST Properties\n\n // AgentType\n public get agentType(): string {\n return this.getField(AgentEntityFields.agentTypeField);\n }\n\n // RoleId\n public get roleId(): IGuid {\n return this.getFieldGuid(AgentEntityFields.roleIdField, ValidFlags.Specific);\n }\n public set roleId(value: IGuid) {\n this.setFieldGuid(AgentEntityFields.roleIdField, value);\n }\n\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid(AgentEntityFields.serverIdField, ValidFlags.Membership2);\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid(AgentEntityFields.serverIdField, value);\n }\n\n // ServerInfo\n public get serverInfo(): string {\n return this.getField(AgentEntityFields.serverInfoField, ValidFlags.Membership2);\n }\n public set serverInfo(value: string) {\n this.setField(AgentEntityFields.serverInfoField, value);\n }\n\n // SpecificConfigXml\n public get specificConfigXml(): string {\n return this.getField(AgentEntityFields.specificConfigXmlField, ValidFlags.Specific);\n }\n public set specificConfigXml(value: string) {\n this.setField(AgentEntityFields.specificConfigXmlField, value);\n }\n\n // XmlData\n public get xmlData(): string {\n return this.getField(AgentEntityFields.xmlDataField, ValidFlags.Specific);\n }\n public set xmlData(value: string) {\n this.setField(AgentEntityFields.xmlDataField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Agents);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAgentDatabaseStatusAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'DatabaseStatus', false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiZone?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { IGuid } from 'safeguid';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { IRestResponse } from './IRestResponse';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ZoneEntityFields extends EntityFields {\n public static accessControlUnitField = 'AccessControlUnit';\n public static armingDelayField = 'ArmingDelay';\n public static armingDelayOnField = 'ArmingDelayOn';\n public static armingStateField = 'ArmingState';\n public static zoneStateField = 'ZoneState';\n public static zoneTypeField = 'ZoneType';\n}\n\n// #endregion Fields\n\nexport interface IZoneEntity extends IEntity {\n // #region REST Properties\n\n accessControlUnit: IGuid;\n\n armingDelay: number;\n\n armingDelayOn: boolean;\n\n readonly armingState: string;\n\n readonly zoneState: string;\n\n zoneType: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n armZoneAsync(transaction?: ITransaction): Promise;\n getDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n disarmZoneAsync(transaction?: ITransaction): Promise;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiZone?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IZoneEntity, ZoneEntityFields } from '../../Interface/IZoneEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IGuid } from 'safeguid';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../../Interface/IRestResponse';\n\nexport class ZoneEntity extends Entity implements IZoneEntity {\n // #region REST Properties\n\n // AccessControlUnit\n public get accessControlUnit(): IGuid {\n return this.getFieldGuid(ZoneEntityFields.accessControlUnitField, ValidFlags.Specific);\n }\n public set accessControlUnit(value: IGuid) {\n this.setFieldGuid(ZoneEntityFields.accessControlUnitField, value);\n }\n\n // ArmingDelay\n public get armingDelay(): number {\n return this.getField(ZoneEntityFields.armingDelayField, ValidFlags.Specific);\n }\n public set armingDelay(value: number) {\n this.setField(ZoneEntityFields.armingDelayField, value);\n }\n\n // ArmingDelayOn\n public get armingDelayOn(): boolean {\n return this.getField(ZoneEntityFields.armingDelayOnField, ValidFlags.Specific);\n }\n public set armingDelayOn(value: boolean) {\n this.setField(ZoneEntityFields.armingDelayOnField, value);\n }\n\n // ArmingState\n public get armingState(): string {\n return this.getField(ZoneEntityFields.armingStateField, ValidFlags.EntityStatus);\n }\n\n // ZoneState\n public get zoneState(): string {\n return this.getField(ZoneEntityFields.zoneStateField, ValidFlags.EntityStatus);\n }\n\n // ZoneType\n public get zoneType(): string {\n return this.getField(ZoneEntityFields.zoneTypeField, ValidFlags.Base);\n }\n public set zoneType(value: string) {\n this.setField(ZoneEntityFields.zoneTypeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Zones);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async armZoneAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('ArmZone', 'POST', null, transaction, responseHandler);\n }\n\n public async getDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Devices', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n public async disarmZoneAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('DisarmZone', 'POST', null, transaction, responseHandler);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', true, query, ValidFlags.EntityMembership, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiTilePlugin?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { IEntity, EntityFields } from './IEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class TilePluginEntityFields extends EntityFields {\n public static contextField = 'Context';\n public static contextIdField = 'ContextId';\n public static fileField = 'File';\n public static rawLargeImageField = 'RawLargeImage';\n public static rawSmallImageField = 'RawSmallImage';\n public static urlField = 'Url';\n public static urlDisplayModeField = 'UrlDisplayMode';\n}\n\n// #endregion Fields\n\nexport interface ITilePluginEntity extends IEntity {\n // #region REST Properties\n\n context: string;\n\n contextId: IGuid;\n\n readonly file: IGuid;\n\n readonly rawLargeImage: string;\n\n readonly rawSmallImage: string;\n\n url: string;\n\n urlDisplayMode: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiTilePlugin?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { IGuid } from 'safeguid';\nimport { ITilePluginEntity, TilePluginEntityFields } from '../Interface/ITilePluginEntity';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\n\nexport class TilePluginEntity extends Entity implements ITilePluginEntity {\n // #region REST Properties\n\n // Context\n public get context(): string {\n return this.getField(TilePluginEntityFields.contextField, ValidFlags.Specific);\n }\n public set context(value: string) {\n this.setField(TilePluginEntityFields.contextField, value);\n }\n\n // ContextId\n public get contextId(): IGuid {\n return this.getFieldGuid(TilePluginEntityFields.contextIdField, ValidFlags.Specific);\n }\n public set contextId(value: IGuid) {\n this.setFieldGuid(TilePluginEntityFields.contextIdField, value);\n }\n\n // File\n public get file(): IGuid {\n return this.getFieldGuid(TilePluginEntityFields.fileField, ValidFlags.Specific);\n }\n\n // RawLargeImage\n public get rawLargeImage(): string {\n return this.getField(TilePluginEntityFields.rawLargeImageField, ValidFlags.Specific);\n }\n\n // RawSmallImage\n public get rawSmallImage(): string {\n return this.getField(TilePluginEntityFields.rawSmallImageField, ValidFlags.Specific);\n }\n\n // Url\n public get url(): string {\n return this.getField(TilePluginEntityFields.urlField, ValidFlags.Specific);\n }\n public set url(value: string) {\n this.setField(TilePluginEntityFields.urlField, value);\n }\n\n // UrlDisplayMode\n public get urlDisplayMode(): string {\n return this.getField(TilePluginEntityFields.urlDisplayModeField, ValidFlags.Specific);\n }\n public set urlDisplayMode(value: string) {\n this.setField(TilePluginEntityFields.urlDisplayModeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.TilePlugins);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiThreatLevel?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IRestResponse } from './IRestResponse';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ThreatLevelEntityFields extends EntityFields {\n public static colorField = 'Color';\n public static levelField = 'Level';\n}\n\n// #endregion Fields\n\nexport interface IThreatLevelEntity extends IEntity {\n // #region REST Properties\n\n color: string;\n\n level: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n activateAsync(target: IGuid, recursive: boolean, transaction?: ITransaction): Promise;\n deactivateAsync(target: IGuid, recursive: boolean, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiThreatLevel?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:24 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { IThreatLevelEntity, ThreatLevelEntityFields } from '../Interface/IThreatLevelEntity';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { ITransaction } from '../Interface/ITransaction';\n\nexport class ThreatLevelEntity extends Entity implements IThreatLevelEntity {\n // #region REST Properties\n\n // Color\n public get color(): string {\n return this.getField(ThreatLevelEntityFields.colorField, ValidFlags.Specific);\n }\n public set color(value: string) {\n this.setField(ThreatLevelEntityFields.colorField, value);\n }\n\n // Level\n public get level(): number {\n return this.getField(ThreatLevelEntityFields.levelField, ValidFlags.Specific);\n }\n public set level(value: number) {\n this.setField(ThreatLevelEntityFields.levelField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.ThreatLevels);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async activateAsync(target: IGuid, recursive: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('target', target);\n inParam.setField('recursive', recursive);\n\n return this.executeRequestTransactionAsync('Activate', 'POST', inParam, transaction, responseHandler);\n }\n\n public async deactivateAsync(target: IGuid, recursive: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('target', target);\n inParam.setField('recursive', recursive);\n\n return this.executeRequestTransactionAsync('Deactivate', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSchedule?codegen=ts&InterfaceOnly=True&workflow=False on 2021-06-03 12:03:22 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ScheduleEntityFields extends EntityFields {\n public static coverageTypeField = 'CoverageType';\n public static dataField = 'Data';\n public static isArchiverFriendlyField = 'IsArchiverFriendly';\n public static scheduleTypeField = 'ScheduleType';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IDateRange extends IFieldObject {\n start: Date;\n end: Date;\n}\n\n// #endregion Inner classes\n\nexport interface IScheduleEntity extends IEntity {\n // #region REST Properties\n\n coverageType: string;\n\n data: string;\n\n readonly isArchiverFriendly: boolean;\n\n scheduleType: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n isTimeCoverAsync(time: Date, transaction?: ITransaction): Promise;\n normalizeFlattenedDatesAsync(time: Date, transaction?: ITransaction): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSchedule?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:01 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IDateRange, IScheduleEntity, ScheduleEntityFields } from '../Interface/IScheduleEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IEntity } from '../Interface/IEntity';\n\n// #region Inner classes\n\nexport class DateRange extends FieldObject implements IDateRange {\n // Start\n public get start(): Date {\n return this.getFieldDate('Start');\n }\n public set start(value: Date) {\n this.setFieldDate('Start', value);\n }\n // End\n public get end(): Date {\n return this.getFieldDate('End');\n }\n public set end(value: Date) {\n this.setFieldDate('End', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldDate('Start', new Date());\n this.setFieldDate('End', new Date());\n }\n}\n\n// #endregion Inner classes\n\nexport class ScheduleEntity extends Entity implements IScheduleEntity {\n // #region REST Properties\n\n // CoverageType\n public get coverageType(): string {\n return this.getField(ScheduleEntityFields.coverageTypeField);\n }\n public set coverageType(value: string) {\n this.setField(ScheduleEntityFields.coverageTypeField, value);\n }\n\n // Data\n public get data(): string {\n return this.getField(ScheduleEntityFields.dataField);\n }\n public set data(value: string) {\n this.setField(ScheduleEntityFields.dataField, value);\n }\n\n // IsArchiverFriendly\n public get isArchiverFriendly(): boolean {\n return this.getField(ScheduleEntityFields.isArchiverFriendlyField);\n }\n\n // ScheduleType\n public get scheduleType(): string {\n return this.getField(ScheduleEntityFields.scheduleTypeField);\n }\n public set scheduleType(value: string) {\n this.setField(ScheduleEntityFields.scheduleTypeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Schedules);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPointRules', 'Id', true, query, ValidFlags.EntityDependency, transaction);\n }\n\n public async isTimeCoverAsync(time: Date, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body['isTimeCover'] as boolean;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldDate('time', time);\n\n return this.executeRequestTransactionAsync('IsTimeCover', 'POST', inParam, transaction, responseHandler);\n }\n\n public async normalizeFlattenedDatesAsync(time: Date, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new Array();\n const body = response.body['Range'] as Array;\n for (const entry of body) {\n const fo = new DateRange();\n fo.loadFields(entry);\n result.push(fo);\n }\n return new Promise>(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldDate('time', time);\n\n return this.executeRequestTransactionAsync>('NormalizeFlattenedDates', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPartition?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\nimport { IPrivilege } from './IPrivilegedEntity';\n\n// #region Fields\n\nexport class PartitionEntityFields extends EntityFields {\n public static canBeSharedField = 'CanBeShared';\n}\n\n// #endregion Fields\n\nexport interface IPartitionEntity extends IEntity {\n // #region REST Properties\n\n canBeShared: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAdministratorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getChildPartitionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getUserPrivilegesAsync(id: IGuid, transaction?: ITransaction | null): Promise | null>;\n getUsersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPartition?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-26 2:56:10 PM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../Interface/IEntity';\nimport { IPartitionEntity, PartitionEntityFields } from '../Interface/IPartitionEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { Privilege } from './PrivilegedEntity';\nimport { IPrivilege } from '../Interface/IPrivilegedEntity';\n\nexport class PartitionEntity extends Entity implements IPartitionEntity {\n // #region REST Properties\n\n // CanBeShared\n public get canBeShared(): boolean {\n return this.getField(PartitionEntityFields.canBeSharedField);\n }\n public set canBeShared(value: boolean) {\n this.setField(PartitionEntityFields.canBeSharedField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Partitions);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAdministratorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Administrators', 'Id', true, query, ValidFlags.Membership2, transaction);\n }\n\n public async getChildPartitionsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('ChildPartitions', 'Id', true, query, ValidFlags.Membership3, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.Membership, transaction);\n }\n\n public async getUserPrivilegesAsync(id: IGuid, transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Privilege, 'UserPrivileges/' + id, 'Id', false, true, ValidFlags.Membership2, transaction);\n }\n\n public async getUsersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Users', 'Id', true, query, ValidFlags.Membership2, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiRoute?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { IEntity, EntityFields } from './IEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class RouteEntityFields extends EntityFields {\n public static detectedTransportsFrom1To2Field = 'DetectedTransportsFrom1To2';\n public static detectedTransportsFrom2To1Field = 'DetectedTransportsFrom2To1';\n public static endPoint1Field = 'EndPoint1';\n public static endPoint2Field = 'EndPoint2';\n public static supportedTransportsField = 'SupportedTransports';\n public static usePrivateAddressFrom1To2Field = 'UsePrivateAddressFrom1To2';\n public static usePrivateAddressFrom2To1Field = 'UsePrivateAddressFrom2To1';\n}\n\n// #endregion Fields\n\nexport interface IRouteEntity extends IEntity {\n // #region REST Properties\n\n readonly detectedTransportsFrom1To2: string;\n\n readonly detectedTransportsFrom2To1: string;\n\n endPoint1: IGuid;\n\n endPoint2: IGuid;\n\n supportedTransports: string;\n\n usePrivateAddressFrom1To2: boolean;\n\n usePrivateAddressFrom2To1: boolean;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiRoute?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:24 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { IGuid } from 'safeguid';\nimport { IRouteEntity, RouteEntityFields } from '../Interface/IRouteEntity';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\n\nexport class RouteEntity extends Entity implements IRouteEntity {\n // #region REST Properties\n\n // DetectedTransportsFrom1To2\n public get detectedTransportsFrom1To2(): string {\n return this.getField(RouteEntityFields.detectedTransportsFrom1To2Field, ValidFlags.EntityStatus);\n }\n\n // DetectedTransportsFrom2To1\n public get detectedTransportsFrom2To1(): string {\n return this.getField(RouteEntityFields.detectedTransportsFrom2To1Field, ValidFlags.EntityStatus);\n }\n\n // EndPoint1\n public get endPoint1(): IGuid {\n return this.getFieldGuid(RouteEntityFields.endPoint1Field, ValidFlags.Specific);\n }\n public set endPoint1(value: IGuid) {\n this.setFieldGuid(RouteEntityFields.endPoint1Field, value);\n }\n\n // EndPoint2\n public get endPoint2(): IGuid {\n return this.getFieldGuid(RouteEntityFields.endPoint2Field, ValidFlags.Specific);\n }\n public set endPoint2(value: IGuid) {\n this.setFieldGuid(RouteEntityFields.endPoint2Field, value);\n }\n\n // SupportedTransports\n public get supportedTransports(): string {\n return this.getField(RouteEntityFields.supportedTransportsField, ValidFlags.Specific);\n }\n public set supportedTransports(value: string) {\n this.setField(RouteEntityFields.supportedTransportsField, value);\n }\n\n // UsePrivateAddressFrom1To2\n public get usePrivateAddressFrom1To2(): boolean {\n return this.getField(RouteEntityFields.usePrivateAddressFrom1To2Field, ValidFlags.Specific);\n }\n public set usePrivateAddressFrom1To2(value: boolean) {\n this.setField(RouteEntityFields.usePrivateAddressFrom1To2Field, value);\n }\n\n // UsePrivateAddressFrom2To1\n public get usePrivateAddressFrom2To1(): boolean {\n return this.getField(RouteEntityFields.usePrivateAddressFrom2To1Field, ValidFlags.Specific);\n }\n public set usePrivateAddressFrom2To1(value: boolean) {\n this.setField(RouteEntityFields.usePrivateAddressFrom2To1Field, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Routes);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiNetwork?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { IGuid } from 'safeguid';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class NetworkEntityFields extends EntityFields {\n public static iPv4AddressPrefixField = 'IPv4AddressPrefix';\n public static iPv4NetworkMaskField = 'IPv4NetworkMask';\n public static iPv6PrefixField = 'IPv6Prefix';\n public static iPv6PrefixLengthField = 'IPv6PrefixLength';\n public static isDefaultNetworkField = 'IsDefaultNetwork';\n public static parentRouteField = 'ParentRoute';\n public static proxyServerField = 'ProxyServer';\n public static publicAddressField = 'PublicAddress';\n public static remoteStreamLocatorIdField = 'RemoteStreamLocatorId';\n public static supportedTransportsField = 'SupportedTransports';\n public static supportsIpv6Field = 'SupportsIpv6';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IPublicServer extends IFieldObject {\n serverId: IGuid;\n publicEndPoint: string;\n isProxy: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface INetworkEntity extends IEntity {\n // #region REST Properties\n\n iPv4AddressPrefix: string;\n\n iPv4NetworkMask: string;\n\n iPv6Prefix: string;\n\n iPv6PrefixLength: number;\n\n readonly isDefaultNetwork: boolean;\n\n readonly parentRoute: IGuid;\n\n proxyServer: IGuid;\n\n publicAddress: string;\n\n remoteStreamLocatorId: IGuid;\n\n supportedTransports: string;\n\n readonly supportsIpv6: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getPublicServersAsync(transaction?: ITransaction | null): Promise | null>;\n getRoutesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getServersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getSubNetworksAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiNetwork?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:01 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IEntity } from '../Interface/IEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { INetworkEntity, IPublicServer, NetworkEntityFields } from '../Interface/INetworkEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FieldObject } from '../../Helpers/FieldObject';\n\n// #region Inner classes\n\nexport class PublicServer extends FieldObject implements IPublicServer {\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid('ServerId');\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid('ServerId', value);\n }\n // PublicEndPoint\n public get publicEndPoint(): string {\n return this.getField('PublicEndPoint');\n }\n public set publicEndPoint(value: string) {\n this.setField('PublicEndPoint', value);\n }\n // IsProxy\n public get isProxy(): boolean {\n return this.getField('IsProxy');\n }\n public set isProxy(value: boolean) {\n this.setField('IsProxy', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('ServerId', SafeGuid.EMPTY);\n this.setField('PublicEndPoint', '');\n this.setField('IsProxy', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class NetworkEntity extends Entity implements INetworkEntity {\n // #region REST Properties\n\n // IPv4AddressPrefix\n public get iPv4AddressPrefix(): string {\n return this.getField(NetworkEntityFields.iPv4AddressPrefixField, ValidFlags.Specific);\n }\n public set iPv4AddressPrefix(value: string) {\n this.setField(NetworkEntityFields.iPv4AddressPrefixField, value);\n }\n\n // IPv4NetworkMask\n public get iPv4NetworkMask(): string {\n return this.getField(NetworkEntityFields.iPv4NetworkMaskField, ValidFlags.Specific);\n }\n public set iPv4NetworkMask(value: string) {\n this.setField(NetworkEntityFields.iPv4NetworkMaskField, value);\n }\n\n // IPv6Prefix\n public get iPv6Prefix(): string {\n return this.getField(NetworkEntityFields.iPv6PrefixField, ValidFlags.Specific);\n }\n public set iPv6Prefix(value: string) {\n this.setField(NetworkEntityFields.iPv6PrefixField, value);\n }\n\n // IPv6PrefixLength\n public get iPv6PrefixLength(): number {\n return this.getField(NetworkEntityFields.iPv6PrefixLengthField, ValidFlags.Specific);\n }\n public set iPv6PrefixLength(value: number) {\n this.setField(NetworkEntityFields.iPv6PrefixLengthField, value);\n }\n\n // IsDefaultNetwork\n public get isDefaultNetwork(): boolean {\n return this.getField(NetworkEntityFields.isDefaultNetworkField);\n }\n\n // ParentRoute\n public get parentRoute(): IGuid {\n return this.getFieldGuid(NetworkEntityFields.parentRouteField);\n }\n\n // ProxyServer\n public get proxyServer(): IGuid {\n return this.getFieldGuid(NetworkEntityFields.proxyServerField, ValidFlags.Specific);\n }\n public set proxyServer(value: IGuid) {\n this.setFieldGuid(NetworkEntityFields.proxyServerField, value);\n }\n\n // PublicAddress\n public get publicAddress(): string {\n return this.getField(NetworkEntityFields.publicAddressField, ValidFlags.Specific);\n }\n public set publicAddress(value: string) {\n this.setField(NetworkEntityFields.publicAddressField, value);\n }\n\n // RemoteStreamLocatorId\n public get remoteStreamLocatorId(): IGuid {\n return this.getFieldGuid(NetworkEntityFields.remoteStreamLocatorIdField, ValidFlags.Specific);\n }\n public set remoteStreamLocatorId(value: IGuid) {\n this.setFieldGuid(NetworkEntityFields.remoteStreamLocatorIdField, value);\n }\n\n // SupportedTransports\n public get supportedTransports(): string {\n return this.getField(NetworkEntityFields.supportedTransportsField, ValidFlags.Specific);\n }\n public set supportedTransports(value: string) {\n this.setField(NetworkEntityFields.supportedTransportsField, value);\n }\n\n // SupportsIpv6\n public get supportsIpv6(): boolean {\n return this.getField(NetworkEntityFields.supportsIpv6Field);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Networks);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getPublicServersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(PublicServer, 'PublicServers', 'ServerId', false, true, ValidFlags.Specific, transaction);\n }\n\n public async getRoutesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Routes', 'Id', true, query, ValidFlags.EntityDependency, transaction);\n }\n\n public async getServersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Servers', 'Id', false, query, ValidFlags.Membership3, transaction);\n }\n\n public async getSubNetworksAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('SubNetworks', 'Id', false, query, ValidFlags.Membership, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMacro?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-30 8:57:45 AM\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\nimport { IRestResponse } from './IRestResponse';\n\n// #region Fields\n\nexport class MacroEntityFields extends EntityFields {\n public static codeField = 'Code';\n public static executionIntegrityField = 'ExecutionIntegrity';\n public static languageField = 'Language';\n public static loadingStrategyField = 'LoadingStrategy';\n public static mustBeSingleInstanceField = 'MustBeSingleInstance';\n}\n\n// #endregion Fields\n\nexport interface IMacroEntity extends IEntity {\n // #region REST Properties\n\n code: string;\n\n executionIntegrity: string;\n\n readonly language: string;\n\n loadingStrategy: string;\n\n mustBeSingleInstance: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n executeAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMacro?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-30 8:57:48 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IMacroEntity, MacroEntityFields } from '../Interface/IMacroEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\n\nexport class MacroEntity extends Entity implements IMacroEntity {\n // #region REST Properties\n\n // Code\n public get code(): string {\n return this.getField(MacroEntityFields.codeField, ValidFlags.Specific);\n }\n public set code(value: string) {\n this.setField(MacroEntityFields.codeField, value);\n }\n\n // ExecutionIntegrity\n public get executionIntegrity(): string {\n return this.getField(MacroEntityFields.executionIntegrityField, ValidFlags.Specific);\n }\n public set executionIntegrity(value: string) {\n this.setField(MacroEntityFields.executionIntegrityField, value);\n }\n\n // Language\n public get language(): string {\n return this.getField(MacroEntityFields.languageField, ValidFlags.Specific);\n }\n\n // LoadingStrategy\n public get loadingStrategy(): string {\n return this.getField(MacroEntityFields.loadingStrategyField, ValidFlags.Specific);\n }\n public set loadingStrategy(value: string) {\n this.setField(MacroEntityFields.loadingStrategyField, value);\n }\n\n // MustBeSingleInstance\n public get mustBeSingleInstance(): boolean {\n return this.getField(MacroEntityFields.mustBeSingleInstanceField, ValidFlags.Specific);\n }\n public set mustBeSingleInstance(value: boolean) {\n this.setField(MacroEntityFields.mustBeSingleInstanceField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Macros);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async executeAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Execute', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUnit?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ILocatableEntity, LocatableEntityFields } from '../Interface/ILocatableEntity';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class UnitEntityFields extends LocatableEntityFields {\n public static canRebootField = 'CanReboot';\n public static certificateIdField = 'CertificateId';\n public static certificateSigningRequestCommonNameField = 'CertificateSigningRequestCommonName';\n public static extensionIdField = 'ExtensionId';\n public static firmwareVersionField = 'FirmwareVersion';\n public static iPAddressField = 'IPAddress';\n public static isUsingCertificateField = 'IsUsingCertificate';\n public static loginPolicyField = 'LoginPolicy';\n public static manufacturerField = 'Manufacturer';\n public static modelField = 'Model';\n public static passwordField = 'Password';\n public static physicalAddressField = 'PhysicalAddress';\n public static platformVersionField = 'PlatformVersion';\n public static secureCommandPortField = 'SecureCommandPort';\n public static serialNumberField = 'SerialNumber';\n public static supportOutputDeviceStatesField = 'SupportOutputDeviceStates';\n public static supportsCertificateManagementField = 'SupportsCertificateManagement';\n public static supportServerControlledFirmwareUpgradeField = 'SupportServerControlledFirmwareUpgrade';\n public static supportsPasswordChangeField = 'SupportsPasswordChange';\n public static timeZoneField = 'TimeZone';\n public static usernameField = 'Username';\n}\n\n// #endregion Fields\n\nexport interface IUnitEntity extends ILocatableEntity {\n // #region REST Properties\n\n readonly canReboot: boolean;\n\n certificateId: IGuid;\n\n certificateSigningRequestCommonName: string;\n\n extensionId: IGuid;\n\n firmwareVersion: string;\n\n iPAddress: string;\n\n readonly isUsingCertificate: boolean;\n\n loginPolicy: string;\n\n manufacturer: string;\n\n model: string;\n\n password: string;\n\n readonly physicalAddress: string;\n\n platformVersion: string;\n\n secureCommandPort: number;\n\n serialNumber: string;\n\n readonly supportOutputDeviceStates: boolean;\n\n supportsCertificateManagement: boolean;\n\n supportServerControlledFirmwareUpgrade: boolean;\n\n supportsPasswordChange: boolean;\n\n readonly timeZone: string;\n\n username: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n moveUnitAsync(id: IGuid, transaction?: ITransaction): Promise;\n rebootAsync(transaction?: ITransaction): Promise;\n getUnitOnlyDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUnit?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { LocatableEntity } from './LocatableEntity';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IUnitEntity, UnitEntityFields } from '../Interface/IUnitEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from '../Interface/IEntity';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\n\nexport class UnitEntity extends LocatableEntity implements IUnitEntity {\n // #region REST Properties\n\n // CanReboot\n public get canReboot(): boolean {\n return this.getField(UnitEntityFields.canRebootField);\n }\n\n // CertificateId\n public get certificateId(): IGuid {\n return this.getFieldGuid(UnitEntityFields.certificateIdField);\n }\n public set certificateId(value: IGuid) {\n this.setFieldGuid(UnitEntityFields.certificateIdField, value);\n }\n\n // CertificateSigningRequestCommonName\n public get certificateSigningRequestCommonName(): string {\n return this.getField(UnitEntityFields.certificateSigningRequestCommonNameField, ValidFlags.Specific);\n }\n public set certificateSigningRequestCommonName(value: string) {\n this.setField(UnitEntityFields.certificateSigningRequestCommonNameField, value);\n }\n\n // ExtensionId\n public get extensionId(): IGuid {\n return this.getFieldGuid(UnitEntityFields.extensionIdField);\n }\n public set extensionId(value: IGuid) {\n this.setFieldGuid(UnitEntityFields.extensionIdField, value);\n }\n\n // FirmwareVersion\n public get firmwareVersion(): string {\n return this.getField(UnitEntityFields.firmwareVersionField, ValidFlags.Specific);\n }\n public set firmwareVersion(value: string) {\n this.setField(UnitEntityFields.firmwareVersionField, value);\n }\n\n // IPAddress\n public get iPAddress(): string {\n return this.getField(UnitEntityFields.iPAddressField, ValidFlags.Specific);\n }\n public set iPAddress(value: string) {\n this.setField(UnitEntityFields.iPAddressField, value);\n }\n\n // IsUsingCertificate\n public get isUsingCertificate(): boolean {\n return this.getField(UnitEntityFields.isUsingCertificateField);\n }\n\n // LoginPolicy\n public get loginPolicy(): string {\n return this.getField(UnitEntityFields.loginPolicyField);\n }\n public set loginPolicy(value: string) {\n this.setField(UnitEntityFields.loginPolicyField, value);\n }\n\n // Manufacturer\n public get manufacturer(): string {\n return this.getField(UnitEntityFields.manufacturerField, ValidFlags.Specific);\n }\n public set manufacturer(value: string) {\n this.setField(UnitEntityFields.manufacturerField, value);\n }\n\n // Model\n public get model(): string {\n return this.getField(UnitEntityFields.modelField, ValidFlags.Specific);\n }\n public set model(value: string) {\n this.setField(UnitEntityFields.modelField, value);\n }\n\n // Password\n public get password(): string {\n return this.getField(UnitEntityFields.passwordField);\n }\n public set password(value: string) {\n this.setField(UnitEntityFields.passwordField, value);\n }\n\n // PhysicalAddress\n public get physicalAddress(): string {\n return this.getField(UnitEntityFields.physicalAddressField, ValidFlags.Specific);\n }\n\n // PlatformVersion\n public get platformVersion(): string {\n return this.getField(UnitEntityFields.platformVersionField, ValidFlags.Specific);\n }\n public set platformVersion(value: string) {\n this.setField(UnitEntityFields.platformVersionField, value);\n }\n\n // SecureCommandPort\n public get secureCommandPort(): number {\n return this.getField(UnitEntityFields.secureCommandPortField);\n }\n public set secureCommandPort(value: number) {\n this.setField(UnitEntityFields.secureCommandPortField, value);\n }\n\n // SerialNumber\n public get serialNumber(): string {\n return this.getField(UnitEntityFields.serialNumberField, ValidFlags.Specific);\n }\n public set serialNumber(value: string) {\n this.setField(UnitEntityFields.serialNumberField, value);\n }\n\n // SupportOutputDeviceStates\n public get supportOutputDeviceStates(): boolean {\n return this.getField(UnitEntityFields.supportOutputDeviceStatesField);\n }\n\n // SupportsCertificateManagement\n public get supportsCertificateManagement(): boolean {\n return this.getField(UnitEntityFields.supportsCertificateManagementField);\n }\n public set supportsCertificateManagement(value: boolean) {\n this.setField(UnitEntityFields.supportsCertificateManagementField, value);\n }\n\n // SupportServerControlledFirmwareUpgrade\n public get supportServerControlledFirmwareUpgrade(): boolean {\n return this.getField(UnitEntityFields.supportServerControlledFirmwareUpgradeField);\n }\n public set supportServerControlledFirmwareUpgrade(value: boolean) {\n this.setField(UnitEntityFields.supportServerControlledFirmwareUpgradeField, value);\n }\n\n // SupportsPasswordChange\n public get supportsPasswordChange(): boolean {\n return this.getField(UnitEntityFields.supportsPasswordChangeField);\n }\n public set supportsPasswordChange(value: boolean) {\n this.setField(UnitEntityFields.supportsPasswordChangeField, value);\n }\n\n // TimeZone\n public get timeZone(): string {\n return this.getField(UnitEntityFields.timeZoneField);\n }\n\n // Username\n public get username(): string {\n return this.getField(UnitEntityFields.usernameField);\n }\n public set username(value: string) {\n this.setField(UnitEntityFields.usernameField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor(entityType: string) {\n super(entityType);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Devices', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n public async moveUnitAsync(id: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('id', id);\n\n return this.executeRequestTransactionAsync('MoveUnit', 'POST', inParam, transaction, responseHandler);\n }\n\n public async rebootAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Reboot', 'POST', null, transaction, responseHandler);\n }\n\n public async getUnitOnlyDevicesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('UnitOnlyDevices', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionUnit?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:12 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from './IEntity';\nimport { IUnitEntity, UnitEntityFields } from './IUnitEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class IntrusionUnitEntityFields extends UnitEntityFields {\n public static aCFailureField = 'ACFailure';\n public static batteryFailureField = 'BatteryFailure';\n public static capabilitiesField = 'Capabilities';\n public static clearLogsAfterDownloadField = 'ClearLogsAfterDownload';\n public static commandPortField = 'CommandPort';\n public static intrusionUnitIdField = 'IntrusionUnitId';\n public static isActivatedField = 'IsActivated';\n public static serialPortField = 'SerialPort';\n public static tamperField = 'Tamper';\n}\n\n// #endregion Fields\n\nexport interface IIntrusionUnitEntity extends IUnitEntity {\n // #region REST Properties\n\n aCFailure: boolean;\n\n batteryFailure: boolean;\n\n readonly capabilities: string;\n\n clearLogsAfterDownload: boolean;\n\n commandPort: number;\n\n intrusionUnitId: string;\n\n isActivated: boolean;\n\n serialPort: string;\n\n tamper: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getIntrusionAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionUnit?codegen=ts&InterfaceOnly=False&workflow=False on 2021-01-27 7:34:50 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { UnitEntity } from '../UnitEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IIntrusionUnitEntity, IntrusionUnitEntityFields } from '../../Interface/IIntrusionUnitEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class IntrusionUnitEntity extends UnitEntity implements IIntrusionUnitEntity {\n // #region REST Properties\n\n // ACFailure\n public get aCFailure(): boolean {\n return this.getField(IntrusionUnitEntityFields.aCFailureField, ValidFlags.EntityStatus);\n }\n public set aCFailure(value: boolean) {\n this.setField(IntrusionUnitEntityFields.aCFailureField, value);\n }\n\n // BatteryFailure\n public get batteryFailure(): boolean {\n return this.getField(IntrusionUnitEntityFields.batteryFailureField, ValidFlags.EntityStatus);\n }\n public set batteryFailure(value: boolean) {\n this.setField(IntrusionUnitEntityFields.batteryFailureField, value);\n }\n\n // Capabilities\n public get capabilities(): string {\n return this.getField(IntrusionUnitEntityFields.capabilitiesField, ValidFlags.Specific);\n }\n\n // ClearLogsAfterDownload\n public get clearLogsAfterDownload(): boolean {\n return this.getField(IntrusionUnitEntityFields.clearLogsAfterDownloadField, ValidFlags.Specific);\n }\n public set clearLogsAfterDownload(value: boolean) {\n this.setField(IntrusionUnitEntityFields.clearLogsAfterDownloadField, value);\n }\n\n // CommandPort\n public get commandPort(): number {\n return this.getField(IntrusionUnitEntityFields.commandPortField, ValidFlags.Specific);\n }\n public set commandPort(value: number) {\n this.setField(IntrusionUnitEntityFields.commandPortField, value);\n }\n\n // IntrusionUnitId\n public get intrusionUnitId(): string {\n return this.getField(IntrusionUnitEntityFields.intrusionUnitIdField, ValidFlags.Specific);\n }\n public set intrusionUnitId(value: string) {\n this.setField(IntrusionUnitEntityFields.intrusionUnitIdField, value);\n }\n\n // IsActivated\n public get isActivated(): boolean {\n return this.getField(IntrusionUnitEntityFields.isActivatedField, ValidFlags.Specific);\n }\n public set isActivated(value: boolean) {\n this.setField(IntrusionUnitEntityFields.isActivatedField, value);\n }\n\n // SerialPort\n public get serialPort(): string {\n return this.getField(IntrusionUnitEntityFields.serialPortField, ValidFlags.Specific);\n }\n public set serialPort(value: string) {\n this.setField(IntrusionUnitEntityFields.serialPortField, value);\n }\n\n // Tamper\n public get tamper(): boolean {\n return this.getField(IntrusionUnitEntityFields.tamperField, ValidFlags.EntityStatus);\n }\n public set tamper(value: boolean) {\n this.setField(IntrusionUnitEntityFields.tamperField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.IntrusionUnits);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getIntrusionAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('IntrusionAreas', 'Id', false, query, ValidFlags.Membership3, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionArea?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:06 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IRestResponse } from './IRestResponse';\n\n// #region Fields\n\nexport class IntrusionAreaEntityFields extends EntityFields {\n public static alarmStateField = 'AlarmState';\n public static alarmTriggeringInputField = 'AlarmTriggeringInput';\n public static alarmTriggeringOutputField = 'AlarmTriggeringOutput';\n public static armingStateField = 'ArmingState';\n public static capabilitiesField = 'Capabilities';\n public static extensionStatusField = 'ExtensionStatus';\n public static inputActiveField = 'InputActive';\n public static inputTroubleField = 'InputTrouble';\n public static intrusionUnitField = 'IntrusionUnit';\n public static isArmedField = 'IsArmed';\n public static isBypassedField = 'IsBypassed';\n public static physicalNameField = 'PhysicalName';\n public static synergisAreaField = 'SynergisArea';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IArmData extends IFieldObject {\n scope: string;\n timing: string;\n type: string;\n customDelay: number;\n}\n\n// #endregion Inner classes\n\nexport interface IIntrusionAreaEntity extends IEntity {\n // #region REST Properties\n\n alarmState: string;\n\n alarmTriggeringInput: IGuid;\n\n alarmTriggeringOutput: IGuid;\n\n armingState: string;\n\n readonly capabilities: string;\n\n extensionStatus: string;\n\n readonly inputActive: boolean;\n\n readonly inputTrouble: boolean;\n\n intrusionUnit: IGuid;\n\n readonly isArmed: boolean;\n\n readonly isBypassed: boolean;\n\n physicalName: string;\n\n synergisArea: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n acknowledgeIntrusionAlarmAsync(transaction?: ITransaction): Promise;\n armZoneAsync(value: IArmData, transaction?: ITransaction): Promise;\n cancelPostponeArmingAsync(transaction?: ITransaction): Promise;\n disarmZoneAsync(transaction?: ITransaction): Promise;\n getInputsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n postponeArmingAsync(delay: number, masterArm: boolean, armingDelay: number, transaction?: ITransaction): Promise;\n silenceIntrusionAlarmAsync(transaction?: ITransaction): Promise;\n triggerIntrusionAlarmAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionArea?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IGuid } from 'safeguid';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IArmData, IIntrusionAreaEntity, IntrusionAreaEntityFields } from '../../Interface/IIntrusionAreaEntity';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { Entity } from '../Entity';\n\n// #region Inner classes\n\nexport class ArmData extends FieldObject implements IArmData {\n // Scope\n public get scope(): string {\n return this.getField('Scope');\n }\n public set scope(value: string) {\n this.setField('Scope', value);\n }\n // Timing\n public get timing(): string {\n return this.getField('Timing');\n }\n public set timing(value: string) {\n this.setField('Timing', value);\n }\n // Type\n public get type(): string {\n return this.getField('Type');\n }\n public set type(value: string) {\n this.setField('Type', value);\n }\n // CustomDelay\n public get customDelay(): number {\n return this.getField('CustomDelay');\n }\n public set customDelay(value: number) {\n this.setField('CustomDelay', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Scope', '');\n this.setField('Timing', '');\n this.setField('Type', '');\n this.setField('CustomDelay', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class IntrusionAreaEntity extends Entity implements IIntrusionAreaEntity {\n // #region REST Properties\n\n // AlarmState\n public get alarmState(): string {\n return this.getField(IntrusionAreaEntityFields.alarmStateField, ValidFlags.EntityStatus);\n }\n public set alarmState(value: string) {\n this.setField(IntrusionAreaEntityFields.alarmStateField, value);\n }\n\n // AlarmTriggeringInput\n public get alarmTriggeringInput(): IGuid {\n return this.getFieldGuid(IntrusionAreaEntityFields.alarmTriggeringInputField, ValidFlags.Specific);\n }\n public set alarmTriggeringInput(value: IGuid) {\n this.setFieldGuid(IntrusionAreaEntityFields.alarmTriggeringInputField, value);\n }\n\n // AlarmTriggeringOutput\n public get alarmTriggeringOutput(): IGuid {\n return this.getFieldGuid(IntrusionAreaEntityFields.alarmTriggeringOutputField, ValidFlags.Specific);\n }\n public set alarmTriggeringOutput(value: IGuid) {\n this.setFieldGuid(IntrusionAreaEntityFields.alarmTriggeringOutputField, value);\n }\n\n // ArmingState\n public get armingState(): string {\n return this.getField(IntrusionAreaEntityFields.armingStateField, ValidFlags.EntityStatus);\n }\n public set armingState(value: string) {\n this.setField(IntrusionAreaEntityFields.armingStateField, value);\n }\n\n // Capabilities\n public get capabilities(): string {\n return this.getField(IntrusionAreaEntityFields.capabilitiesField, ValidFlags.Specific);\n }\n\n // ExtensionStatus\n public get extensionStatus(): string {\n return this.getField(IntrusionAreaEntityFields.extensionStatusField, ValidFlags.EntityStatus2);\n }\n public set extensionStatus(value: string) {\n this.setField(IntrusionAreaEntityFields.extensionStatusField, value);\n }\n\n // InputActive\n public get inputActive(): boolean {\n return this.getField(IntrusionAreaEntityFields.inputActiveField);\n }\n\n // InputTrouble\n public get inputTrouble(): boolean {\n return this.getField(IntrusionAreaEntityFields.inputTroubleField);\n }\n\n // IntrusionUnit\n public get intrusionUnit(): IGuid {\n return this.getFieldGuid(IntrusionAreaEntityFields.intrusionUnitField, ValidFlags.MemberOf3);\n }\n public set intrusionUnit(value: IGuid) {\n this.setFieldGuid(IntrusionAreaEntityFields.intrusionUnitField, value);\n }\n\n // IsArmed\n public get isArmed(): boolean {\n return this.getField(IntrusionAreaEntityFields.isArmedField);\n }\n\n // IsBypassed\n public get isBypassed(): boolean {\n return this.getField(IntrusionAreaEntityFields.isBypassedField);\n }\n\n // PhysicalName\n public get physicalName(): string {\n return this.getField(IntrusionAreaEntityFields.physicalNameField, ValidFlags.Specific);\n }\n public set physicalName(value: string) {\n this.setField(IntrusionAreaEntityFields.physicalNameField, value);\n }\n\n // SynergisArea\n public get synergisArea(): IGuid {\n return this.getFieldGuid(IntrusionAreaEntityFields.synergisAreaField, ValidFlags.Specific);\n }\n public set synergisArea(value: IGuid) {\n this.setFieldGuid(IntrusionAreaEntityFields.synergisAreaField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.IntrusionAreas);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async acknowledgeIntrusionAlarmAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('AcknowledgeIntrusionAlarm', 'POST', null, transaction, responseHandler);\n }\n\n public async armZoneAsync(value: IArmData, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('ArmZone', 'POST', value, transaction, responseHandler);\n }\n\n public async cancelPostponeArmingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('CancelPostponeArming', 'POST', null, transaction, responseHandler);\n }\n\n public async disarmZoneAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('DisarmZone', 'POST', null, transaction, responseHandler);\n }\n\n public async getInputsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Inputs', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.EntityMembership, transaction);\n }\n\n public async postponeArmingAsync(delay: number, masterArm: boolean, armingDelay: number, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('delay', delay);\n inParam.setField('masterArm', masterArm);\n inParam.setField('armingDelay', armingDelay);\n\n return this.executeRequestTransactionAsync('PostponeArming', 'POST', inParam, transaction, responseHandler);\n }\n\n public async silenceIntrusionAlarmAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('SilenceIntrusionAlarm', 'POST', null, transaction, responseHandler);\n }\n\n public async triggerIntrusionAlarmAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('TriggerIntrusionAlarm', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDevice?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class DeviceEntityFields extends EntityFields {\n public static deviceTypeField = 'DeviceType';\n public static isDisabledField = 'IsDisabled';\n public static physicalNameField = 'PhysicalName';\n public static uniqueIdField = 'UniqueId';\n public static unitField = 'Unit';\n}\n\n// #endregion Fields\n\nexport interface IDeviceEntity extends IEntity {\n // #region REST Properties\n\n readonly deviceType: string;\n\n isDisabled: boolean;\n\n readonly physicalName: string;\n\n readonly uniqueId: string;\n\n readonly unit: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDevice?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { Entity } from './../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IDeviceEntity, DeviceEntityFields } from '../../Interface/IDeviceEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class DeviceEntity extends Entity implements IDeviceEntity {\n // #region REST Properties\n\n // DeviceType\n public get deviceType(): string {\n return this.getField(DeviceEntityFields.deviceTypeField);\n }\n\n // IsDisabled\n public get isDisabled(): boolean {\n return this.getField(DeviceEntityFields.isDisabledField);\n }\n public set isDisabled(value: boolean) {\n this.setField(DeviceEntityFields.isDisabledField, value);\n }\n\n // PhysicalName\n public get physicalName(): string {\n return this.getField(DeviceEntityFields.physicalNameField);\n }\n\n // UniqueId\n public get uniqueId(): string {\n return this.getField(DeviceEntityFields.uniqueIdField);\n }\n\n // Unit\n public get unit(): IGuid {\n return this.getFieldGuid(DeviceEntityFields.unitField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Devices);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPoint', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCustomEntity?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity, EntityFields } from '../Interface/IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ICustomEntityTypeDescriptor } from './ICustomEntityManager';\n\n// #region Fields\n\nexport class CustomEntityFields extends EntityFields {\n public static customEntityTypeDescriptorIdField = 'CustomEntityTypeDescriptorId';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ICustomState extends IFieldObject {\n state0: string;\n state1: string;\n}\n\nexport interface ICustomInfo extends IFieldObject {\n info0: string;\n info1: string;\n}\n\n// #endregion Inner classes\n\nexport interface ICustomEntity extends IEntity {\n // #region REST Properties\n\n customEntityTypeDescriptorId: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getInfosAsync(transaction?: ITransaction | null): Promise;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getStatesAsync(transaction?: ITransaction | null): Promise;\n getTypeDescriptorAsync(transaction?: ITransaction | null): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCustomEntity?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:24 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IEntity } from '../Interface/IEntity';\nimport { ICustomEntity, ICustomState, ICustomInfo, CustomEntityFields } from '../Interface/ICustomEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IQueryFilter } from '../Interface/IQueryFilter';\nimport { ICustomEntityTypeDescriptor } from '../Interface/ICustomEntityManager';\nimport { CustomEntityTypeDescriptor } from '../Managers/CustomEntityManager';\n\n// #region Inner classes\n\nexport class CustomState extends FieldObject implements ICustomState {\n public get state0(): string {\n return this.getField('0');\n }\n\n public set state0(value: string) {\n this.setField('0', value);\n }\n public get state1(): string {\n return this.getField('1');\n }\n\n public set state1(value: string) {\n this.setField('1', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n }\n}\n\nexport class CustomInfo extends FieldObject implements ICustomInfo {\n public get info0(): string {\n return this.getField('0');\n }\n\n public set info0(value: string) {\n this.setField('0', value);\n }\n public get info1(): string {\n return this.getField('1');\n }\n\n public set info1(value: string) {\n this.setField('1', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n }\n}\n\n// #endregion Inner classes\n\nexport class CustomEntity extends Entity implements ICustomEntity {\n // #region REST Properties\n\n // CustomEntityTypeDescriptorId\n public get customEntityTypeDescriptorId(): IGuid {\n return this.getFieldGuid(CustomEntityFields.customEntityTypeDescriptorIdField);\n }\n public set customEntityTypeDescriptorId(value: IGuid) {\n this.setFieldGuid(CustomEntityFields.customEntityTypeDescriptorIdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.CustomEntities);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getInfosAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CustomInfo, 'Infos', true, ValidFlags.None, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getStatesAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CustomState, 'States', true, ValidFlags.None, transaction);\n }\n\n public async getTypeDescriptorAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CustomEntityTypeDescriptor, 'TypeDescriptor', false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiApplication?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class ApplicationEntityFields extends EntityFields {\n public static applicationVersionField = 'ApplicationVersion';\n public static appTypeField = 'AppType';\n public static externalApplicationOwnerField = 'ExternalApplicationOwner';\n public static isInBackwardCompatibilityModeField = 'IsInBackwardCompatibilityMode';\n public static lastLoggedTimestampField = 'LastLoggedTimestamp';\n public static lastLoggedUserField = 'LastLoggedUser';\n public static loggedUserField = 'LoggedUser';\n public static machineNameField = 'MachineName';\n public static streamingVersionField = 'StreamingVersion';\n public static versionField = 'Version';\n}\n\n// #endregion Fields\n\nexport interface IApplicationEntity extends IEntity {\n // #region REST Properties\n\n applicationVersion: string;\n\n appType: string;\n\n externalApplicationOwner: IGuid;\n\n readonly isInBackwardCompatibilityMode: boolean;\n\n readonly lastLoggedTimestamp: Date;\n\n readonly lastLoggedUser: IGuid;\n\n loggedUser: IGuid;\n\n readonly machineName: string;\n\n readonly streamingVersion: number;\n\n readonly version: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getMonitorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiApplication?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { Entity } from './../Entity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IApplicationEntity, ApplicationEntityFields } from '../../Interface/IApplicationEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\n\nexport class ApplicationEntity extends Entity implements IApplicationEntity {\n // #region REST Properties\n\n // ApplicationVersion\n public get applicationVersion(): string {\n return this.getField(ApplicationEntityFields.applicationVersionField, ValidFlags.Specific);\n }\n public set applicationVersion(value: string) {\n this.setField(ApplicationEntityFields.applicationVersionField, value);\n }\n\n // AppType\n public get appType(): string {\n return this.getField(ApplicationEntityFields.appTypeField);\n }\n public set appType(value: string) {\n this.setField(ApplicationEntityFields.appTypeField, value);\n }\n\n // ExternalApplicationOwner\n public get externalApplicationOwner(): IGuid {\n return this.getFieldGuid(ApplicationEntityFields.externalApplicationOwnerField, ValidFlags.Specific);\n }\n public set externalApplicationOwner(value: IGuid) {\n this.setFieldGuid(ApplicationEntityFields.externalApplicationOwnerField, value);\n }\n\n // IsInBackwardCompatibilityMode\n public get isInBackwardCompatibilityMode(): boolean {\n return this.getField(ApplicationEntityFields.isInBackwardCompatibilityModeField, ValidFlags.Specific);\n }\n\n // LastLoggedTimestamp\n public get lastLoggedTimestamp(): Date {\n return this.getFieldDate(ApplicationEntityFields.lastLoggedTimestampField, ValidFlags.Specific);\n }\n\n // LastLoggedUser\n public get lastLoggedUser(): IGuid {\n return this.getFieldGuid(ApplicationEntityFields.lastLoggedUserField, ValidFlags.Specific);\n }\n\n // LoggedUser\n public get loggedUser(): IGuid {\n return this.getFieldGuid(ApplicationEntityFields.loggedUserField, ValidFlags.Specific);\n }\n public set loggedUser(value: IGuid) {\n this.setFieldGuid(ApplicationEntityFields.loggedUserField, value);\n }\n\n // MachineName\n public get machineName(): string {\n return this.getField(ApplicationEntityFields.machineNameField, ValidFlags.EntityExtra);\n }\n\n // StreamingVersion\n public get streamingVersion(): number {\n return this.getField(ApplicationEntityFields.streamingVersionField, ValidFlags.Specific);\n }\n\n // Version\n public get version(): string {\n return this.getField(ApplicationEntityFields.versionField, ValidFlags.Specific);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Applications);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getMonitorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Monitors', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n // #endregion REST Methods\n\n // #region Custom Methods\n\n public async sendRequestAsync(value: IFieldObject, transaction?: ITransaction): Promise {\n value.setField('DestinationApp', this.id);\n return super.sendRequestAsync(value, transaction);\n }\n\n // #endregion Custom Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiVideoUnit?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IUnitEntity, UnitEntityFields } from './IUnitEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class VideoUnitEntityFields extends UnitEntityFields {\n public static authenticationSchemeField = 'AuthenticationScheme';\n public static certificateValidationInfoField = 'CertificateValidationInfo';\n public static commandPortField = 'CommandPort';\n public static connectionAddressField = 'ConnectionAddress';\n public static dhcpField = 'Dhcp';\n public static discoveryPortField = 'DiscoveryPort';\n public static firmwareUpgradePortField = 'FirmwareUpgradePort';\n public static firstAddFeatureSetField = 'FirstAddFeatureSet';\n public static gatewayField = 'Gateway';\n public static hardwareVersionField = 'HardwareVersion';\n public static hostNameField = 'HostName';\n public static isRestrictedUnitField = 'IsRestrictedUnit';\n public static lastPasswordChangeField = 'LastPasswordChange';\n public static legacyConfigurationsField = 'LegacyConfigurations';\n public static passwordStrengthField = 'PasswordStrength';\n public static prefixLengthField = 'PrefixLength';\n public static proxyIdentifierField = 'ProxyIdentifier';\n public static secureConnectionField = 'SecureConnection';\n public static subnetMaskField = 'SubnetMask';\n public static supportsAudioField = 'SupportsAudio';\n public static supportsChangeCommandPortField = 'SupportsChangeCommandPort';\n public static supportsChangeDiscoveryPortField = 'SupportsChangeDiscoveryPort';\n public static supportsChangeIPField = 'SupportsChangeIP';\n public static supportsFirmwareUpgradeField = 'SupportsFirmwareUpgrade';\n public static supportsIdentifyField = 'SupportsIdentify';\n public static supportsRebootField = 'SupportsReboot';\n public static supportsSSLField = 'SupportsSSL';\n public static useDefaultCredentialsField = 'UseDefaultCredentials';\n public static webPageField = 'WebPage';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IPingSubResult extends IFieldObject {\n authenticationScheme: string;\n authenticationSuccesful: boolean;\n httpConnectionSuccessful: boolean;\n httpSupported: boolean;\n pingDelay: number;\n pingFailureReason: string;\n pingSuccessful: boolean;\n serverId: IGuid;\n tcpConnectionEndPoint: string;\n tcpConnectionSuccessful: boolean;\n tcpSupported: boolean;\n}\n\nexport interface IPingResult extends IFieldObject {\n executed: boolean;\n pingFailureReason: string;\n results: ObservableCollection;\n}\n\n// #endregion Inner classes\n\nexport interface IVideoUnitEntity extends IUnitEntity {\n // #region REST Properties\n\n authenticationScheme: number;\n\n certificateValidationInfo: string;\n\n commandPort: number;\n\n connectionAddress: string;\n\n dhcp: boolean;\n\n discoveryPort: number;\n\n firmwareUpgradePort: number;\n\n firstAddFeatureSet: string;\n\n gateway: string;\n\n hardwareVersion: string;\n\n hostName: string;\n\n readonly isRestrictedUnit: boolean;\n\n readonly lastPasswordChange: Date;\n\n legacyConfigurations: string;\n\n readonly passwordStrength: string;\n\n prefixLength: number;\n\n proxyIdentifier: string;\n\n secureConnection: boolean;\n\n subnetMask: string;\n\n readonly supportsAudio: boolean;\n\n readonly supportsChangeCommandPort: boolean;\n\n readonly supportsChangeDiscoveryPort: boolean;\n\n readonly supportsChangeIP: boolean;\n\n readonly supportsFirmwareUpgrade: boolean;\n\n readonly supportsIdentify: boolean;\n\n readonly supportsReboot: boolean;\n\n readonly supportsSSL: boolean;\n\n useDefaultCredentials: boolean;\n\n webPage: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n identifyAsync(transaction?: ITransaction): Promise;\n pingAsync(transaction?: ITransaction): Promise;\n reconnectAsync(transaction?: ITransaction): Promise;\n getSpecificConfigAsync(transaction?: ITransaction | null): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiVideoUnit?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { UnitEntity } from '../UnitEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IVideoUnitEntity, IPingSubResult, IPingResult, VideoUnitEntityFields } from '../../Interface/IVideoUnitEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\n\n// #region Inner classes\n\nexport class PingSubResult extends FieldObject implements IPingSubResult {\n // AuthenticationScheme\n public get authenticationScheme(): string {\n return this.getField('AuthenticationScheme');\n }\n public set authenticationScheme(value: string) {\n this.setField('AuthenticationScheme', value);\n }\n // AuthenticationSuccesful\n public get authenticationSuccesful(): boolean {\n return this.getField('AuthenticationSuccesful');\n }\n public set authenticationSuccesful(value: boolean) {\n this.setField('AuthenticationSuccesful', value);\n }\n // HttpConnectionSuccessful\n public get httpConnectionSuccessful(): boolean {\n return this.getField('HttpConnectionSuccessful');\n }\n public set httpConnectionSuccessful(value: boolean) {\n this.setField('HttpConnectionSuccessful', value);\n }\n // HttpSupported\n public get httpSupported(): boolean {\n return this.getField('HttpSupported');\n }\n public set httpSupported(value: boolean) {\n this.setField('HttpSupported', value);\n }\n // PingDelay\n public get pingDelay(): number {\n return this.getField('PingDelay');\n }\n public set pingDelay(value: number) {\n this.setField('PingDelay', value);\n }\n // PingFailureReason\n public get pingFailureReason(): string {\n return this.getField('PingFailureReason');\n }\n public set pingFailureReason(value: string) {\n this.setField('PingFailureReason', value);\n }\n // PingSuccessful\n public get pingSuccessful(): boolean {\n return this.getField('PingSuccessful');\n }\n public set pingSuccessful(value: boolean) {\n this.setField('PingSuccessful', value);\n }\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid('ServerId');\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid('ServerId', value);\n }\n // TcpConnectionEndPoint\n public get tcpConnectionEndPoint(): string {\n return this.getField('TcpConnectionEndPoint');\n }\n public set tcpConnectionEndPoint(value: string) {\n this.setField('TcpConnectionEndPoint', value);\n }\n // TcpConnectionSuccessful\n public get tcpConnectionSuccessful(): boolean {\n return this.getField('TcpConnectionSuccessful');\n }\n public set tcpConnectionSuccessful(value: boolean) {\n this.setField('TcpConnectionSuccessful', value);\n }\n // TcpSupported\n public get tcpSupported(): boolean {\n return this.getField('TcpSupported');\n }\n public set tcpSupported(value: boolean) {\n this.setField('TcpSupported', value);\n }\n\n public initializeAllFields(): void {\n this.setField('AuthenticationScheme', '');\n this.setField('AuthenticationSuccesful', false);\n this.setField('HttpConnectionSuccessful', false);\n this.setField('HttpSupported', false);\n this.setField('PingDelay', 0);\n this.setField('PingFailureReason', '');\n this.setField('PingSuccessful', false);\n this.setFieldGuid('ServerId', SafeGuid.EMPTY);\n this.setField('TcpConnectionEndPoint', '');\n this.setField('TcpConnectionSuccessful', false);\n this.setField('TcpSupported', false);\n }\n}\n\nexport class PingResult extends FieldObject implements IPingResult {\n // Executed\n public get executed(): boolean {\n return this.getField('Executed');\n }\n public set executed(value: boolean) {\n this.setField('Executed', value);\n }\n // PingFailureReason\n public get pingFailureReason(): string {\n return this.getField('PingFailureReason');\n }\n public set pingFailureReason(value: string) {\n this.setField('PingFailureReason', value);\n }\n // Results\n public get results(): ObservableCollection {\n return this.getFieldObjectArray(PingSubResult, 'Results');\n }\n public set results(value: ObservableCollection) {\n this.setFieldObjectArray('Results', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Executed', false);\n this.setField('PingFailureReason', '');\n this.setFieldArray('Results', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class VideoUnitEntity extends UnitEntity implements IVideoUnitEntity {\n // #region REST Properties\n\n // AuthenticationScheme\n public get authenticationScheme(): number {\n return this.getField(VideoUnitEntityFields.authenticationSchemeField, ValidFlags.Specific);\n }\n public set authenticationScheme(value: number) {\n this.setField(VideoUnitEntityFields.authenticationSchemeField, value);\n }\n\n // CertificateValidationInfo\n public get certificateValidationInfo(): string {\n return this.getField(VideoUnitEntityFields.certificateValidationInfoField, ValidFlags.Specific);\n }\n public set certificateValidationInfo(value: string) {\n this.setField(VideoUnitEntityFields.certificateValidationInfoField, value);\n }\n\n // CommandPort\n public get commandPort(): number {\n return this.getField(VideoUnitEntityFields.commandPortField, ValidFlags.Specific);\n }\n public set commandPort(value: number) {\n this.setField(VideoUnitEntityFields.commandPortField, value);\n }\n\n // ConnectionAddress\n public get connectionAddress(): string {\n return this.getField(VideoUnitEntityFields.connectionAddressField, ValidFlags.Specific);\n }\n public set connectionAddress(value: string) {\n this.setField(VideoUnitEntityFields.connectionAddressField, value);\n }\n\n // Dhcp\n public get dhcp(): boolean {\n return this.getField(VideoUnitEntityFields.dhcpField, ValidFlags.Specific);\n }\n public set dhcp(value: boolean) {\n this.setField(VideoUnitEntityFields.dhcpField, value);\n }\n\n // DiscoveryPort\n public get discoveryPort(): number {\n return this.getField(VideoUnitEntityFields.discoveryPortField, ValidFlags.Specific);\n }\n public set discoveryPort(value: number) {\n this.setField(VideoUnitEntityFields.discoveryPortField, value);\n }\n\n // FirmwareUpgradePort\n public get firmwareUpgradePort(): number {\n return this.getField(VideoUnitEntityFields.firmwareUpgradePortField, ValidFlags.Specific);\n }\n public set firmwareUpgradePort(value: number) {\n this.setField(VideoUnitEntityFields.firmwareUpgradePortField, value);\n }\n\n // FirstAddFeatureSet\n public get firstAddFeatureSet(): string {\n return this.getField(VideoUnitEntityFields.firstAddFeatureSetField, ValidFlags.Specific);\n }\n public set firstAddFeatureSet(value: string) {\n this.setField(VideoUnitEntityFields.firstAddFeatureSetField, value);\n }\n\n // Gateway\n public get gateway(): string {\n return this.getField(VideoUnitEntityFields.gatewayField, ValidFlags.Specific);\n }\n public set gateway(value: string) {\n this.setField(VideoUnitEntityFields.gatewayField, value);\n }\n\n // HardwareVersion\n public get hardwareVersion(): string {\n return this.getField(VideoUnitEntityFields.hardwareVersionField, ValidFlags.Specific);\n }\n public set hardwareVersion(value: string) {\n this.setField(VideoUnitEntityFields.hardwareVersionField, value);\n }\n\n // HostName\n public get hostName(): string {\n return this.getField(VideoUnitEntityFields.hostNameField, ValidFlags.Specific);\n }\n public set hostName(value: string) {\n this.setField(VideoUnitEntityFields.hostNameField, value);\n }\n\n // IsRestrictedUnit\n public get isRestrictedUnit(): boolean {\n return this.getField(VideoUnitEntityFields.isRestrictedUnitField, ValidFlags.Specific);\n }\n\n // LastPasswordChange\n public get lastPasswordChange(): Date {\n return this.getFieldDate(VideoUnitEntityFields.lastPasswordChangeField, ValidFlags.Specific);\n }\n\n // LegacyConfigurations\n public get legacyConfigurations(): string {\n return this.getField(VideoUnitEntityFields.legacyConfigurationsField, ValidFlags.Specific);\n }\n public set legacyConfigurations(value: string) {\n this.setField(VideoUnitEntityFields.legacyConfigurationsField, value);\n }\n\n // PasswordStrength\n public get passwordStrength(): string {\n return this.getField(VideoUnitEntityFields.passwordStrengthField, ValidFlags.Specific);\n }\n\n // PrefixLength\n public get prefixLength(): number {\n return this.getField(VideoUnitEntityFields.prefixLengthField, ValidFlags.Specific);\n }\n public set prefixLength(value: number) {\n this.setField(VideoUnitEntityFields.prefixLengthField, value);\n }\n\n // ProxyIdentifier\n public get proxyIdentifier(): string {\n return this.getField(VideoUnitEntityFields.proxyIdentifierField, ValidFlags.Specific);\n }\n public set proxyIdentifier(value: string) {\n this.setField(VideoUnitEntityFields.proxyIdentifierField, value);\n }\n\n // SecureConnection\n public get secureConnection(): boolean {\n return this.getField(VideoUnitEntityFields.secureConnectionField, ValidFlags.Specific);\n }\n public set secureConnection(value: boolean) {\n this.setField(VideoUnitEntityFields.secureConnectionField, value);\n }\n\n // SubnetMask\n public get subnetMask(): string {\n return this.getField(VideoUnitEntityFields.subnetMaskField, ValidFlags.Specific);\n }\n public set subnetMask(value: string) {\n this.setField(VideoUnitEntityFields.subnetMaskField, value);\n }\n\n // SupportsAudio\n public get supportsAudio(): boolean {\n return this.getField(VideoUnitEntityFields.supportsAudioField, ValidFlags.Specific);\n }\n\n // SupportsChangeCommandPort\n public get supportsChangeCommandPort(): boolean {\n return this.getField(VideoUnitEntityFields.supportsChangeCommandPortField, ValidFlags.Specific);\n }\n\n // SupportsChangeDiscoveryPort\n public get supportsChangeDiscoveryPort(): boolean {\n return this.getField(VideoUnitEntityFields.supportsChangeDiscoveryPortField, ValidFlags.Specific);\n }\n\n // SupportsChangeIP\n public get supportsChangeIP(): boolean {\n return this.getField(VideoUnitEntityFields.supportsChangeIPField, ValidFlags.Specific);\n }\n\n // SupportsFirmwareUpgrade\n public get supportsFirmwareUpgrade(): boolean {\n return this.getField(VideoUnitEntityFields.supportsFirmwareUpgradeField, ValidFlags.Specific);\n }\n\n // SupportsIdentify\n public get supportsIdentify(): boolean {\n return this.getField(VideoUnitEntityFields.supportsIdentifyField, ValidFlags.Specific);\n }\n\n // SupportsReboot\n public get supportsReboot(): boolean {\n return this.getField(VideoUnitEntityFields.supportsRebootField, ValidFlags.Specific);\n }\n\n // SupportsSSL\n public get supportsSSL(): boolean {\n return this.getField(VideoUnitEntityFields.supportsSSLField, ValidFlags.Specific);\n }\n\n // UseDefaultCredentials\n public get useDefaultCredentials(): boolean {\n return this.getField(VideoUnitEntityFields.useDefaultCredentialsField, ValidFlags.Specific);\n }\n public set useDefaultCredentials(value: boolean) {\n this.setField(VideoUnitEntityFields.useDefaultCredentialsField, value);\n }\n\n // WebPage\n public get webPage(): string {\n return this.getField(VideoUnitEntityFields.webPageField, ValidFlags.Specific);\n }\n public set webPage(value: string) {\n this.setField(VideoUnitEntityFields.webPageField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.VideoUnits);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async identifyAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Identify', 'POST', null, transaction, responseHandler);\n }\n\n public async pingAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new PingResult();\n result.loadFields(response.body);\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Ping', 'POST', null, transaction, responseHandler);\n }\n\n public async reconnectAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Reconnect', 'POST', null, transaction, responseHandler);\n }\n\n public async getSpecificConfigAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'SpecificConfig', false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiTransferGroup?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class TransferGroupEntityFields extends EntityFields {\n public static destinationField = 'Destination';\n public static minutesToIgnoreField = 'MinutesToIgnore';\n public static simultaneousDownloadField = 'SimultaneousDownload';\n public static transferGroupTypeField = 'TransferGroupType';\n}\n\n// #endregion Fields\n\nexport interface ITransferGroupEntity extends IEntity {\n // #region REST Properties\n\n readonly destination: IGuid;\n\n readonly minutesToIgnore: number;\n\n readonly simultaneousDownload: number;\n\n readonly transferGroupType: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCamerasAndArchiversAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getSourceAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getSourcesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiTransferGroup?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:27 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { Entity } from '../Entity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ITransferGroupEntity, TransferGroupEntityFields } from '../../Interface/ITransferGroupEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class TransferGroupEntity extends Entity implements ITransferGroupEntity {\n // #region REST Properties\n\n // Destination\n public get destination(): IGuid {\n return this.getFieldGuid(TransferGroupEntityFields.destinationField);\n }\n\n // MinutesToIgnore\n public get minutesToIgnore(): number {\n return this.getField(TransferGroupEntityFields.minutesToIgnoreField);\n }\n\n // SimultaneousDownload\n public get simultaneousDownload(): number {\n return this.getField(TransferGroupEntityFields.simultaneousDownloadField);\n }\n\n // TransferGroupType\n public get transferGroupType(): string {\n return this.getField(TransferGroupEntityFields.transferGroupTypeField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.TransferGroups);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getCamerasAndArchiversAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('CamerasAndArchivers', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getSourceAreasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('SourceAreas', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getSourcesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Sources', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiStream?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class StreamEntityFields extends EntityFields {\n public static blockSizeField = 'BlockSize';\n public static cameraField = 'Camera';\n public static configuredConnectionField = 'ConfiguredConnection';\n public static deviceField = 'Device';\n public static isPresentField = 'IsPresent';\n public static legacyConfigurationsField = 'LegacyConfigurations';\n public static multicastAddressField = 'MulticastAddress';\n public static multicastPortField = 'MulticastPort';\n public static numberField = 'Number';\n public static streamTypeField = 'StreamType';\n public static supportedBlockSizeField = 'SupportedBlockSize';\n public static supportedConnectionField = 'SupportedConnection';\n public static uDPPortField = 'UDPPort';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ICompression extends IFieldObject {\n id: IGuid;\n videoCompressionAlgorithm: string;\n frameRate: number | null;\n bitRate: number | null;\n imageQuality: number | null;\n keyframeInterval: number | null;\n resolutionX: number | null;\n resolutionY: number | null;\n recordingFrameInterval: string | null;\n}\n\n// #endregion Inner classes\n\nexport interface IStreamEntity extends IEntity {\n // #region REST Properties\n\n blockSize: number;\n\n readonly camera: IGuid;\n\n configuredConnection: string;\n\n device: IGuid;\n\n isPresent: boolean;\n\n legacyConfigurations: string;\n\n multicastAddress: string;\n\n multicastPort: number;\n\n numberValue: number;\n\n streamType: string;\n\n supportedBlockSize: string;\n\n supportedConnection: string;\n\n uDPPort: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getCompressionsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiStream?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { Entity } from '../Entity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IStreamEntity, ICompression, StreamEntityFields } from '../../Interface/IStreamEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class Compression extends FieldObject implements ICompression {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // VideoCompressionAlgorithm\n public get videoCompressionAlgorithm(): string {\n return this.getField('VideoCompressionAlgorithm');\n }\n public set videoCompressionAlgorithm(value: string) {\n this.setField('VideoCompressionAlgorithm', value);\n }\n // FrameRate\n public get frameRate(): number | null {\n return this.getNullableField('FrameRate');\n }\n public set frameRate(value: number | null) {\n this.setNullableField('FrameRate', value);\n }\n // BitRate\n public get bitRate(): number | null {\n return this.getNullableField('BitRate');\n }\n public set bitRate(value: number | null) {\n this.setNullableField('BitRate', value);\n }\n // ImageQuality\n public get imageQuality(): number | null {\n return this.getNullableField('ImageQuality');\n }\n public set imageQuality(value: number | null) {\n this.setNullableField('ImageQuality', value);\n }\n // KeyframeInterval\n public get keyframeInterval(): number | null {\n return this.getNullableField('KeyframeInterval');\n }\n public set keyframeInterval(value: number | null) {\n this.setNullableField('KeyframeInterval', value);\n }\n // ResolutionX\n public get resolutionX(): number | null {\n return this.getNullableField('ResolutionX');\n }\n public set resolutionX(value: number | null) {\n this.setNullableField('ResolutionX', value);\n }\n // ResolutionY\n public get resolutionY(): number | null {\n return this.getNullableField('ResolutionY');\n }\n public set resolutionY(value: number | null) {\n this.setNullableField('ResolutionY', value);\n }\n // RecordingFrameInterval\n public get recordingFrameInterval(): string | null {\n return this.getNullableField('RecordingFrameInterval');\n }\n public set recordingFrameInterval(value: string | null) {\n this.setNullableField('RecordingFrameInterval', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('VideoCompressionAlgorithm', '');\n this.setField('FrameRate', 0);\n this.setField('BitRate', 0);\n this.setField('ImageQuality', 0);\n this.setField('KeyframeInterval', 0);\n this.setField('ResolutionX', 0);\n this.setField('ResolutionY', 0);\n this.setField('RecordingFrameInterval', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class StreamEntity extends Entity implements IStreamEntity {\n // #region REST Properties\n\n // BlockSize\n public get blockSize(): number {\n return this.getField(StreamEntityFields.blockSizeField);\n }\n public set blockSize(value: number) {\n this.setField(StreamEntityFields.blockSizeField, value);\n }\n\n // Camera\n public get camera(): IGuid {\n return this.getFieldGuid(StreamEntityFields.cameraField);\n }\n\n // ConfiguredConnection\n public get configuredConnection(): string {\n return this.getField(StreamEntityFields.configuredConnectionField);\n }\n public set configuredConnection(value: string) {\n this.setField(StreamEntityFields.configuredConnectionField, value);\n }\n\n // Device\n public get device(): IGuid {\n return this.getFieldGuid(StreamEntityFields.deviceField);\n }\n public set device(value: IGuid) {\n this.setFieldGuid(StreamEntityFields.deviceField, value);\n }\n\n // IsPresent\n public get isPresent(): boolean {\n return this.getField(StreamEntityFields.isPresentField);\n }\n public set isPresent(value: boolean) {\n this.setField(StreamEntityFields.isPresentField, value);\n }\n\n // LegacyConfigurations\n public get legacyConfigurations(): string {\n return this.getField(StreamEntityFields.legacyConfigurationsField);\n }\n public set legacyConfigurations(value: string) {\n this.setField(StreamEntityFields.legacyConfigurationsField, value);\n }\n\n // MulticastAddress\n public get multicastAddress(): string {\n return this.getField(StreamEntityFields.multicastAddressField);\n }\n public set multicastAddress(value: string) {\n this.setField(StreamEntityFields.multicastAddressField, value);\n }\n\n // MulticastPort\n public get multicastPort(): number {\n return this.getField(StreamEntityFields.multicastPortField);\n }\n public set multicastPort(value: number) {\n this.setField(StreamEntityFields.multicastPortField, value);\n }\n\n // Number\n public get numberValue(): number {\n return this.getField(StreamEntityFields.numberField);\n }\n public set numberValue(value: number) {\n this.setField(StreamEntityFields.numberField, value);\n }\n\n // StreamType\n public get streamType(): string {\n return this.getField(StreamEntityFields.streamTypeField);\n }\n public set streamType(value: string) {\n this.setField(StreamEntityFields.streamTypeField, value);\n }\n\n // SupportedBlockSize\n public get supportedBlockSize(): string {\n return this.getField(StreamEntityFields.supportedBlockSizeField);\n }\n public set supportedBlockSize(value: string) {\n this.setField(StreamEntityFields.supportedBlockSizeField, value);\n }\n\n // SupportedConnection\n public get supportedConnection(): string {\n return this.getField(StreamEntityFields.supportedConnectionField);\n }\n public set supportedConnection(value: string) {\n this.setField(StreamEntityFields.supportedConnectionField, value);\n }\n\n // UDPPort\n public get uDPPort(): number {\n return this.getField(StreamEntityFields.uDPPortField);\n }\n public set uDPPort(value: number) {\n this.setField(StreamEntityFields.uDPPortField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Streams);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getCompressionsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Compression, 'Compressions', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSequence?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { Entity } from '../Entity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { ISequenceEntity, ISequenceMember } from '../../Interface/ISequenceEntity';\n\n// #region Inner classes\n\nexport class SequenceMember extends FieldObject implements ISequenceMember {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // CameraId\n public get cameraId(): IGuid {\n return this.getFieldGuid('CameraId');\n }\n public set cameraId(value: IGuid) {\n this.setFieldGuid('CameraId', value);\n }\n // Dwell\n public get dwell(): number | null {\n return this.getNullableField('Dwell');\n }\n public set dwell(value: number | null) {\n this.setNullableField('Dwell', value);\n }\n // Command\n public get command(): string | null {\n return this.getNullableField('Command');\n }\n public set command(value: string | null) {\n this.setNullableField('Command', value);\n }\n // Auxiliary\n public get auxiliary(): string | null {\n return this.getNullableField('Auxiliary');\n }\n public set auxiliary(value: string | null) {\n this.setNullableField('Auxiliary', value);\n }\n // CommandNumber\n public get commandNumber(): number | null {\n return this.getNullableField('CommandNumber');\n }\n public set commandNumber(value: number | null) {\n this.setNullableField('CommandNumber', value);\n }\n // AuxiliaryNumber\n public get auxiliaryNumber(): number | null {\n return this.getNullableField('AuxiliaryNumber');\n }\n public set auxiliaryNumber(value: number | null) {\n this.setNullableField('AuxiliaryNumber', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Id', 0);\n this.setFieldGuid('CameraId', SafeGuid.EMPTY);\n this.setField('Dwell', 0);\n this.setField('Command', '');\n this.setField('Auxiliary', '');\n this.setField('CommandNumber', 0);\n this.setField('AuxiliaryNumber', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class SequenceEntity extends Entity implements ISequenceEntity {\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Sequences);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getSequenceMembersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(SequenceMember, 'Members', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiTileLayout?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:21 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { ITilePattern, ITileLayoutContent, ITileLayoutEntity } from '../Interface/ITileLayoutEntity';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\n// #region Inner classes\n\nexport class TilePattern extends FieldObject implements ITilePattern {\n // Columns\n public get columns(): number {\n return this.getField('Columns');\n }\n public set columns(value: number) {\n this.setField('Columns', value);\n }\n // ColumnSpans\n public get columnSpans(): ObservableCollection {\n return this.getFieldArray('ColumnSpans');\n }\n public set columnSpans(value: ObservableCollection) {\n this.setFieldArray('ColumnSpans', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Rows\n public get rows(): number {\n return this.getField('Rows');\n }\n public set rows(value: number) {\n this.setField('Rows', value);\n }\n // RowSpans\n public get rowSpans(): ObservableCollection {\n return this.getFieldArray('RowSpans');\n }\n public set rowSpans(value: ObservableCollection) {\n this.setFieldArray('RowSpans', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Columns', 0);\n this.setFieldArray('ColumnSpans', new ObservableCollection());\n this.setField('Name', '');\n this.setField('Rows', 0);\n this.setFieldArray('RowSpans', new ObservableCollection());\n }\n}\n\nexport class TileLayoutContent extends FieldObject implements ITileLayoutContent {\n // Pattern\n public get pattern(): ITilePattern {\n return this.getFieldObject(TilePattern, 'Pattern');\n }\n public set pattern(value: ITilePattern) {\n this.setFieldObject('Pattern', value);\n }\n // Entities\n public get entities(): ObservableCollection {\n return this.getFieldArrayGuid('Entities');\n }\n public set entities(value: ObservableCollection) {\n this.setFieldArrayGuid('Entities', value);\n }\n\n public initializeAllFields(): void {\n const objPattern = new TilePattern();\n objPattern.initializeAllFields();\n this.setFieldObject('Pattern', objPattern);\n this.setFieldArrayGuid('Entities', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class TileLayoutEntity extends Entity implements ITileLayoutEntity {\n // #region Constructor\n\n constructor() {\n super(EntityTypes.TileLayouts);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getContentAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(TileLayoutContent, 'Content', true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessControlUnit?codegen=ts&InterfaceOnly=True&workflow=False on 2021-05-11 9:36:04 AM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from './IEntity';\nimport { IUnitEntity } from './IUnitEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\nimport { UnitEntityFields } from './IUnitEntity';\n\n// #region Fields\n\nexport class AccessControlUnitEntityFields extends UnitEntityFields {\n public static extensionTypeField = 'ExtensionType';\n}\n\n// #endregion Fields\n\nexport interface IAccessControlUnitEntity extends IUnitEntity {\n // #region REST Properties\n\n extensionType: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getDoorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getElevatorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getInterfaceModulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessControlUnit?codegen=ts&InterfaceOnly=False&workflow=False on 2021-05-11 9:36:13 AM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { UnitEntity } from '../UnitEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAccessControlUnitEntity, AccessControlUnitEntityFields } from '../../Interface/IAccessControlUnitEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class AccessControlUnitEntity extends UnitEntity implements IAccessControlUnitEntity {\n // #region REST Properties\n\n // ExtensionType\n public get extensionType(): string {\n return this.getField(AccessControlUnitEntityFields.extensionTypeField);\n }\n public set extensionType(value: string) {\n this.setField(AccessControlUnitEntityFields.extensionTypeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Units);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getDoorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Doors', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getElevatorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Elevators', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getInterfaceModulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('InterfaceModules', 'Id', false, query, ValidFlags.Membership2, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessPoint?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class AccessPointEntityFields extends EntityFields {\n public static accessPointSideField = 'AccessPointSide';\n public static accessPointTypeField = 'AccessPointType';\n public static deviceStateField = 'DeviceState';\n public static parentField = 'Parent';\n public static twoManRuleEnabledField = 'TwoManRuleEnabled';\n}\n\n// #endregion Fields\n\nexport interface IAccessPointEntity extends IEntity {\n // #region REST Properties\n\n readonly accessPointSide: string;\n\n readonly accessPointType: string;\n\n deviceState: string;\n\n readonly parent: IGuid;\n\n twoManRuleEnabled: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessPoint?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAccessPointEntity, AccessPointEntityFields } from '../../Interface/IAccessPointEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class AccessPointEntity extends Entity implements IAccessPointEntity {\n // #region REST Properties\n\n // AccessPointSide\n public get accessPointSide(): string {\n return this.getField(AccessPointEntityFields.accessPointSideField, ValidFlags.Specific);\n }\n\n // AccessPointType\n public get accessPointType(): string {\n return this.getField(AccessPointEntityFields.accessPointTypeField);\n }\n\n // DeviceState\n public get deviceState(): string {\n return this.getField(AccessPointEntityFields.deviceStateField, ValidFlags.Specific);\n }\n public set deviceState(value: string) {\n this.setField(AccessPointEntityFields.deviceStateField, value);\n }\n\n // Parent\n public get parent(): IGuid {\n return this.getFieldGuid(AccessPointEntityFields.parentField, ValidFlags.MemberOf);\n }\n\n // TwoManRuleEnabled\n public get twoManRuleEnabled(): boolean {\n return this.getField(AccessPointEntityFields.twoManRuleEnabledField, ValidFlags.Specific);\n }\n public set twoManRuleEnabled(value: boolean) {\n this.setField(AccessPointEntityFields.twoManRuleEnabledField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.AccessPoints);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessPointRule?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class AccessPointRuleEntityFields extends EntityFields {\n public static accessPointRuleTypeField = 'AccessPointRuleType';\n public static defaultRuleField = 'DefaultRule';\n public static endTimeField = 'EndTime';\n public static positiveField = 'Positive';\n public static scheduleField = 'Schedule';\n public static startTimeField = 'StartTime';\n}\n\n// #endregion Fields\n\nexport interface IAccessPointRuleEntity extends IEntity {\n // #region REST Properties\n\n readonly accessPointRuleType: string;\n\n defaultRule: boolean;\n\n endTime: Date;\n\n positive: boolean;\n\n schedule: IGuid;\n\n startTime: Date;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointGroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCardholdersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessPointRule?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAccessPointRuleEntity, AccessPointRuleEntityFields } from '../../Interface/IAccessPointRuleEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class AccessPointRuleEntity extends Entity implements IAccessPointRuleEntity {\n // #region REST Properties\n\n // AccessPointRuleType\n public get accessPointRuleType(): string {\n return this.getField(AccessPointRuleEntityFields.accessPointRuleTypeField);\n }\n\n // DefaultRule\n public get defaultRule(): boolean {\n return this.getField(AccessPointRuleEntityFields.defaultRuleField);\n }\n public set defaultRule(value: boolean) {\n this.setField(AccessPointRuleEntityFields.defaultRuleField, value);\n }\n\n // EndTime\n public get endTime(): Date {\n return this.getFieldDate(AccessPointRuleEntityFields.endTimeField);\n }\n public set endTime(value: Date) {\n this.setFieldDate(AccessPointRuleEntityFields.endTimeField, value);\n }\n\n // Positive\n public get positive(): boolean {\n return this.getField(AccessPointRuleEntityFields.positiveField);\n }\n public set positive(value: boolean) {\n this.setField(AccessPointRuleEntityFields.positiveField, value);\n }\n\n // Schedule\n public get schedule(): IGuid {\n return this.getFieldGuid(AccessPointRuleEntityFields.scheduleField);\n }\n public set schedule(value: IGuid) {\n this.setFieldGuid(AccessPointRuleEntityFields.scheduleField, value);\n }\n\n // StartTime\n public get startTime(): Date {\n return this.getFieldDate(AccessPointRuleEntityFields.startTimeField);\n }\n public set startTime(value: Date) {\n this.setFieldDate(AccessPointRuleEntityFields.startTimeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.AccessRules);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointGroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPointGroups', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPoints', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getCardholdersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cardholders', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCardholder?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:04 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class CardholderEntityFields extends EntityFields {\n public static accessPermissionLevelField = 'AccessPermissionLevel';\n public static accessStatusField = 'AccessStatus';\n public static activationDateField = 'ActivationDate';\n public static antipassbackExemptionField = 'AntipassbackExemption';\n public static antipassbackExemptionIsInheritedField = 'AntipassbackExemptionIsInherited';\n public static canEscortField = 'CanEscort';\n public static emailAddressField = 'EmailAddress';\n public static expirationDateField = 'ExpirationDate';\n public static expirationDurationField = 'ExpirationDuration';\n public static expirationModeField = 'ExpirationMode';\n public static firstNameField = 'FirstName';\n public static hasPictureField = 'HasPicture';\n public static inheritAccessPermissionLevelFromGroupField = 'InheritAccessPermissionLevelFromGroup';\n public static isVisitorField = 'IsVisitor';\n public static lastAccessField = 'LastAccess';\n public static lastAccessGrantedField = 'LastAccessGranted';\n public static lastAccessLocationField = 'LastAccessLocation';\n public static lastNameField = 'LastName';\n public static mobilePhoneNumberField = 'MobilePhoneNumber';\n public static pictureIdField = 'PictureId';\n public static useExtendedGrantTimeField = 'UseExtendedGrantTime';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ICardholderPicture extends IFieldObject {\n guid: IGuid;\n data: string;\n}\n\n// #endregion Inner classes\n\nexport interface ICardholderEntity extends IEntity {\n // #region REST Properties\n\n accessPermissionLevel: number;\n\n accessStatus: string;\n\n activationDate: Date;\n\n antipassbackExemption: boolean;\n\n antipassbackExemptionIsInherited: boolean;\n\n canEscort: boolean;\n\n emailAddress: string;\n\n expirationDate: Date;\n\n expirationDuration: number;\n\n expirationMode: string;\n\n firstName: string;\n\n readonly hasPicture: boolean;\n\n inheritAccessPermissionLevelFromGroup: boolean;\n\n readonly isVisitor: boolean;\n\n readonly lastAccess: Date;\n\n readonly lastAccessGranted: boolean | null;\n\n readonly lastAccessLocation: IGuid;\n\n lastName: string;\n\n mobilePhoneNumber: string;\n\n readonly pictureId: IGuid;\n\n useExtendedGrantTime: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCardholdergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCredentialsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n forgiveAntipassbackAsync(transaction?: ITransaction): Promise;\n getHostedVisitorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n deletePictureAsync(transaction?: ITransaction | null): Promise;\n getPictureAsync(transaction?: ITransaction | null): Promise;\n addPictureAsync(value: ICardholderPicture, transaction?: ITransaction | null): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCardholder?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:02 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ICardholderPicture, ICardholderEntity, CardholderEntityFields } from '../../Interface/ICardholderEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { RestResponse } from '../../../Connection/RestResponse';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\n\n// #region Inner classes\n\nexport class CardholderPicture extends FieldObject implements ICardholderPicture {\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('Data', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class CardholderEntity extends Entity implements ICardholderEntity {\n // #region REST Properties\n\n // AccessPermissionLevel\n public get accessPermissionLevel(): number {\n return this.getField(CardholderEntityFields.accessPermissionLevelField, ValidFlags.Specific);\n }\n public set accessPermissionLevel(value: number) {\n this.setField(CardholderEntityFields.accessPermissionLevelField, value);\n }\n\n // AccessStatus\n public get accessStatus(): string {\n return this.getField(CardholderEntityFields.accessStatusField, ValidFlags.Specific);\n }\n public set accessStatus(value: string) {\n this.setField(CardholderEntityFields.accessStatusField, value);\n }\n\n // ActivationDate\n public get activationDate(): Date {\n return this.getFieldDate(CardholderEntityFields.activationDateField, ValidFlags.Specific);\n }\n public set activationDate(value: Date) {\n this.setFieldDate(CardholderEntityFields.activationDateField, value);\n }\n\n // AntipassbackExemption\n public get antipassbackExemption(): boolean {\n return this.getField(CardholderEntityFields.antipassbackExemptionField, ValidFlags.Specific);\n }\n public set antipassbackExemption(value: boolean) {\n this.setField(CardholderEntityFields.antipassbackExemptionField, value);\n }\n\n // AntipassbackExemptionIsInherited\n public get antipassbackExemptionIsInherited(): boolean {\n return this.getField(CardholderEntityFields.antipassbackExemptionIsInheritedField, ValidFlags.Specific);\n }\n public set antipassbackExemptionIsInherited(value: boolean) {\n this.setField(CardholderEntityFields.antipassbackExemptionIsInheritedField, value);\n }\n\n // CanEscort\n public get canEscort(): boolean {\n return this.getField(CardholderEntityFields.canEscortField, ValidFlags.Specific);\n }\n public set canEscort(value: boolean) {\n this.setField(CardholderEntityFields.canEscortField, value);\n }\n\n // EmailAddress\n public get emailAddress(): string {\n return this.getField(CardholderEntityFields.emailAddressField, ValidFlags.SpecificExtra);\n }\n public set emailAddress(value: string) {\n this.setField(CardholderEntityFields.emailAddressField, value);\n }\n\n // ExpirationDate\n public get expirationDate(): Date {\n return this.getFieldDate(CardholderEntityFields.expirationDateField, ValidFlags.Specific);\n }\n public set expirationDate(value: Date) {\n this.setFieldDate(CardholderEntityFields.expirationDateField, value);\n }\n\n // ExpirationDuration\n public get expirationDuration(): number {\n return this.getField(CardholderEntityFields.expirationDurationField, ValidFlags.Specific);\n }\n public set expirationDuration(value: number) {\n this.setField(CardholderEntityFields.expirationDurationField, value);\n }\n\n // ExpirationMode\n public get expirationMode(): string {\n return this.getField(CardholderEntityFields.expirationModeField, ValidFlags.Specific);\n }\n public set expirationMode(value: string) {\n this.setField(CardholderEntityFields.expirationModeField, value);\n }\n\n // FirstName\n public get firstName(): string {\n return this.getField(CardholderEntityFields.firstNameField, ValidFlags.SpecificExtra);\n }\n public set firstName(value: string) {\n this.setField(CardholderEntityFields.firstNameField, value);\n }\n\n // HasPicture\n public get hasPicture(): boolean {\n return this.getField(CardholderEntityFields.hasPictureField, ValidFlags.SpecificExtra);\n }\n\n // InheritAccessPermissionLevelFromGroup\n public get inheritAccessPermissionLevelFromGroup(): boolean {\n return this.getField(CardholderEntityFields.inheritAccessPermissionLevelFromGroupField, ValidFlags.Specific);\n }\n public set inheritAccessPermissionLevelFromGroup(value: boolean) {\n this.setField(CardholderEntityFields.inheritAccessPermissionLevelFromGroupField, value);\n }\n\n // IsVisitor\n public get isVisitor(): boolean {\n return this.getField(CardholderEntityFields.isVisitorField);\n }\n\n // LastAccess\n public get lastAccess(): Date {\n return this.getFieldDate(CardholderEntityFields.lastAccessField, ValidFlags.EntityStatus);\n }\n\n // LastAccessGranted\n public get lastAccessGranted(): boolean | null {\n return this.getNullableField(CardholderEntityFields.lastAccessGrantedField, ValidFlags.EntityStatus);\n }\n\n // LastAccessLocation\n public get lastAccessLocation(): IGuid {\n return this.getFieldGuid(CardholderEntityFields.lastAccessLocationField, ValidFlags.EntityStatus);\n }\n\n // LastName\n public get lastName(): string {\n return this.getField(CardholderEntityFields.lastNameField, ValidFlags.SpecificExtra);\n }\n public set lastName(value: string) {\n this.setField(CardholderEntityFields.lastNameField, value);\n }\n\n // MobilePhoneNumber\n public get mobilePhoneNumber(): string {\n return this.getField(CardholderEntityFields.mobilePhoneNumberField, ValidFlags.SpecificExtra);\n }\n public set mobilePhoneNumber(value: string) {\n this.setField(CardholderEntityFields.mobilePhoneNumberField, value);\n }\n\n // PictureId\n public get pictureId(): IGuid {\n return this.getFieldGuid(CardholderEntityFields.pictureIdField, ValidFlags.SpecificExtra);\n }\n\n // UseExtendedGrantTime\n public get useExtendedGrantTime(): boolean {\n return this.getField(CardholderEntityFields.useExtendedGrantTimeField, ValidFlags.Specific);\n }\n public set useExtendedGrantTime(value: boolean) {\n this.setField(CardholderEntityFields.useExtendedGrantTimeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Cardholders);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPointRules', 'Id', true, query, ValidFlags.MemberOf2, transaction);\n }\n\n public async getCardholdergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cardholdergroups', 'Id', false, query, ValidFlags.MemberOf, transaction);\n }\n\n public async getCredentialsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Credentials', 'Id', false, query, ValidFlags.EntityDependency, transaction);\n }\n\n public async forgiveAntipassbackAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('ForgiveAntipassback', 'POST', null, transaction, responseHandler);\n }\n\n public async getHostedVisitorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('HostedVisitors', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async deletePictureAsync(): Promise {\n await this.updateDataRelation2Async(CardholderPicture, 'Picture', 'DELETE', false, ValidFlags.SpecificExtra, null);\n return new RestResponse(HttpStatusCode.OK);\n }\n\n public async getPictureAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CardholderPicture, 'Picture', false, ValidFlags.SpecificExtra, transaction);\n }\n\n public async addPictureAsync(value: ICardholderPicture, transaction?: ITransaction | null): Promise {\n return await this.updateDataRelation2Async(CardholderPicture, 'Picture', 'POST', false, ValidFlags.SpecificExtra, value);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCardholderGroup?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:10 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class CardholderGroupEntityFields extends EntityFields {\n public static accessPermissionLevelField = 'AccessPermissionLevel';\n public static antipassbackExemptionField = 'AntipassbackExemption';\n public static antipassbackExemptionIsInheritedField = 'AntipassbackExemptionIsInherited';\n public static emailAddressField = 'EmailAddress';\n public static inheritAccessPermissionLevelFromParentGroupField = 'InheritAccessPermissionLevelFromParentGroup';\n public static isVisitorGroupField = 'IsVisitorGroup';\n}\n\n// #endregion Fields\n\nexport interface ICardholderGroupEntity extends IEntity {\n // #region REST Properties\n\n accessPermissionLevel: number;\n\n antipassbackExemption: boolean;\n\n antipassbackExemptionIsInherited: boolean;\n\n emailAddress: string;\n\n inheritAccessPermissionLevelFromParentGroup: boolean;\n\n isVisitorGroup: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCardholderGroup?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:17 PM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ICardholderGroupEntity, CardholderGroupEntityFields } from '../../Interface/ICardholderGroupEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class CardholderGroupEntity extends Entity implements ICardholderGroupEntity {\n // #region REST Properties\n\n // AccessPermissionLevel\n public get accessPermissionLevel(): number {\n return this.getField(CardholderGroupEntityFields.accessPermissionLevelField);\n }\n public set accessPermissionLevel(value: number) {\n this.setField(CardholderGroupEntityFields.accessPermissionLevelField, value);\n }\n\n // AntipassbackExemption\n public get antipassbackExemption(): boolean {\n return this.getField(CardholderGroupEntityFields.antipassbackExemptionField);\n }\n public set antipassbackExemption(value: boolean) {\n this.setField(CardholderGroupEntityFields.antipassbackExemptionField, value);\n }\n\n // AntipassbackExemptionIsInherited\n public get antipassbackExemptionIsInherited(): boolean {\n return this.getField(CardholderGroupEntityFields.antipassbackExemptionIsInheritedField);\n }\n public set antipassbackExemptionIsInherited(value: boolean) {\n this.setField(CardholderGroupEntityFields.antipassbackExemptionIsInheritedField, value);\n }\n\n // EmailAddress\n public get emailAddress(): string {\n return this.getField(CardholderGroupEntityFields.emailAddressField);\n }\n public set emailAddress(value: string) {\n this.setField(CardholderGroupEntityFields.emailAddressField, value);\n }\n\n // InheritAccessPermissionLevelFromParentGroup\n public get inheritAccessPermissionLevelFromParentGroup(): boolean {\n return this.getField(CardholderGroupEntityFields.inheritAccessPermissionLevelFromParentGroupField);\n }\n public set inheritAccessPermissionLevelFromParentGroup(value: boolean) {\n this.setField(CardholderGroupEntityFields.inheritAccessPermissionLevelFromParentGroupField, value);\n }\n\n // IsVisitorGroup\n public get isVisitorGroup(): boolean {\n return this.getField(CardholderGroupEntityFields.isVisitorGroupField);\n }\n public set isVisitorGroup(value: boolean) {\n this.setField(CardholderGroupEntityFields.isVisitorGroupField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.CardholderGroups);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPointRules', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","import { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 1989-2018 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class GrantedPrivilegesCache {\n public grantedPrivileges = SafeGuid.createSet();\n public lastTouch: Date;\n\n constructor(privileges: Set) {\n this.grantedPrivileges = privileges;\n this.lastTouch = new Date();\n }\n\n public touch() {\n this.lastTouch = new Date();\n }\n}\n\n/// \n/// Cache use to keep granted privileges per entity\n/// \nexport class SecurityCache {\n private readonly cleanuptTimeout = 60000 * 60; // 1 hour\n private timeoutHandle: number;\n\n private _grantedPrivileges = SafeGuid.createMap();\n\n constructor() {\n this.timeoutHandle = window.setTimeout(this.cleanup, this.cleanuptTimeout);\n this.cleanup();\n }\n\n /// \n /// Insert the specified data in the cache\n /// \n /// entity\n /// The granted privileges\n public insert( entity: IGuid, grantedPrivileges: Set): boolean {\n return this.keep(entity, grantedPrivileges);\n }\n\n /// \n /// Retrieve the granted privileges from the cache for the specified entity\n /// \n /// Entity\n /// The privileges associated to this entity\n /// Granted privileges\n public tryGet(entity: IGuid, grantedPrivileges: Set): Set | undefined {\n if (entity.isEmpty() || !this._grantedPrivileges.has(entity)) {\n return undefined;\n }\n\n const cache = this._grantedPrivileges.get(entity);\n if (!cache) {\n return undefined;\n }\n\n cache.touch();\n return cache.grantedPrivileges;\n }\n\n public clear() {\n this._grantedPrivileges.clear();\n }\n\n private cleanup() {\n const keepTime = new Date().getTime() - this.cleanuptTimeout;\n const keysToClear: IGuid[] = [];\n\n for ( const entityId of this._grantedPrivileges.keys()) {\n const privilege = this._grantedPrivileges.get(entityId);\n if (privilege) {\n // if old enough clear !\n if (privilege.lastTouch.getTime() < keepTime) {\n keysToClear.push(entityId);\n }\n }\n }\n\n keysToClear.forEach(item => this._grantedPrivileges.delete(item));\n\n this.timeoutHandle = window.setTimeout(this.cleanup, this.cleanuptTimeout);\n }\n\n private keep(entity: IGuid, grantedPrivileges: Set, forceOverwrite: boolean = false) {\n let exists = this._grantedPrivileges.has(entity);\n if (exists && forceOverwrite) {\n this._grantedPrivileges.delete(entity);\n exists = false;\n }\n\n if (!exists) {\n this._grantedPrivileges.set(entity, new GrantedPrivilegesCache(grantedPrivileges));\n return true;\n }\n\n return false;\n }\n}\n","// Autogenerated: v2/help/Entities/ApiMap?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class MapEntityFields extends EntityFields {\n public static associatedAreaField = 'AssociatedArea';\n public static backgroundColorField = 'BackgroundColor';\n public static cruncherIdField = 'CruncherId';\n public static dPIField = 'DPI';\n public static geoLocalizedField = 'GeoLocalized';\n public static hideEmptyLayersField = 'HideEmptyLayers';\n public static infoField = 'Info';\n public static isMapImageField = 'IsMapImage';\n public static lockDisplayField = 'LockDisplay';\n public static lockZoomField = 'LockZoom';\n public static maxZoomField = 'MaxZoom';\n public static originalFileExtensionField = 'OriginalFileExtension';\n public static projectionField = 'Projection';\n public static providerIdField = 'ProviderId';\n public static rotationField = 'Rotation';\n public static scaleFactorField = 'ScaleFactor';\n public static serverUrisField = 'ServerUris';\n public static statusField = 'Status';\n public static thumbnailIdField = 'ThumbnailId';\n public static versionField = 'Version';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ICustomVisibleLayer extends IFieldObject {\n id: string;\n isVisible: boolean;\n subLayers: ObservableCollection;\n}\n\nexport interface ICustomRefreshableLayer extends IFieldObject {\n url: string;\n refreshRate: number;\n isLayerRefreshing: boolean;\n lastRefreshTime: Date;\n isInDesignMode: boolean;\n}\n\nexport interface ICustomMapLayer extends IFieldObject {\n refreshableLayer: ICustomRefreshableLayer;\n isInDesignMode: boolean;\n refreshRate: string;\n refreshRateTs: number;\n isRefreshingLayer: boolean;\n url: string;\n zIndex: number;\n isPartialChecked: boolean;\n opacity: number;\n subLayers: ObservableCollection;\n parentLayerId: string;\n isDisplayed: boolean;\n id: string;\n title: string;\n token: string;\n}\n\nexport interface ICustomSpecificMapConfiguration extends IFieldObject {\n id: IGuid;\n layers: ObservableCollection;\n}\n\nexport interface IStateColor extends IFieldObject {\n state: number;\n color: string;\n visible: boolean;\n}\n\nexport interface IMapObject extends IFieldObject {\n guid: IGuid;\n data: string;\n file: IGuid | null;\n latitude: number;\n link: IGuid | null;\n longitude: number;\n relativeHeight: number;\n relativeWidth: number;\n rotation: number;\n showFov: boolean;\n fovDistance: number;\n fovMaxDistance: number;\n fovElevation: number;\n fovOrientation: number;\n fovWidth: number;\n type: IGuid;\n stateColors: ObservableCollection;\n}\n\nexport interface IVisibleLayer extends IFieldObject {\n id: IGuid;\n isDisplayed: boolean;\n zIndex: number;\n}\n\nexport interface IPoint extends IFieldObject {\n x: number;\n y: number;\n}\n\nexport interface IGeoReference extends IFieldObject {\n targetPoints: ObservableCollection;\n sourcePoints: ObservableCollection;\n isValid: boolean;\n}\n\nexport interface IMapFloorData extends IFieldObject {\n id: IGuid;\n abbreviation: string;\n orderPosition: number;\n}\n\nexport interface ILatLngRectangle extends IFieldObject {\n bottomRight: ICoordinate;\n topLeft: ICoordinate;\n}\n\nexport interface ICoordinate extends IFieldObject {\n latitude: number;\n longitude: number;\n altitude: number | null;\n}\n\nexport interface IDefaultView extends IFieldObject {\n name: string;\n scaleFactor: number;\n center: ICoordinate;\n viewArea: ILatLngRectangle;\n}\n\nexport interface IThickness extends IFieldObject {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\n// #endregion Inner classes\n\nexport interface IMapEntity extends IEntity {\n // #region REST Properties\n\n readonly associatedArea: IGuid;\n\n backgroundColor: number;\n\n cruncherId: IGuid;\n\n dPI: number;\n\n geoLocalized: boolean;\n\n hideEmptyLayers: boolean;\n\n info: string;\n\n readonly isMapImage: boolean;\n\n lockDisplay: boolean;\n\n lockZoom: boolean;\n\n maxZoom: number;\n\n originalFileExtension: string;\n\n projection: string;\n\n providerId: IGuid;\n\n rotation: number;\n\n scaleFactor: number;\n\n readonly serverUris: ObservableCollection;\n\n readonly status: string;\n\n readonly thumbnailId: IGuid;\n\n version: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getCropAsync(transaction?: ITransaction | null): Promise;\n getDefaultViewAsync(transaction?: ITransaction | null): Promise;\n getFloorInfoAsync(transaction?: ITransaction | null): Promise | null>;\n getGeoReferenceAsync(transaction?: ITransaction | null): Promise;\n getLayersAsync(transaction?: ITransaction | null): Promise | null>;\n getMapObjectsAsync(transaction?: ITransaction | null): Promise | null>;\n getSpecificMapsConfigurationsAsync(transaction?: ITransaction | null): Promise | null>;\n getViewAreaPresetsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMap?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:01 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IMapEntity, ICustomVisibleLayer, ICustomRefreshableLayer, ICustomMapLayer, ICustomSpecificMapConfiguration, IMapObject, IVisibleLayer, IPoint, IGeoReference, ICoordinate, ILatLngRectangle, IDefaultView, MapEntityFields, IStateColor, IMapFloorData, IThickness } from '../Interface/IMapEntity';\nimport { ITransaction } from '../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class CustomVisibleLayer extends FieldObject implements ICustomVisibleLayer {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // IsVisible\n public get isVisible(): boolean {\n return this.getField('IsVisible');\n }\n public set isVisible(value: boolean) {\n this.setField('IsVisible', value);\n }\n // SubLayers\n public get subLayers(): ObservableCollection {\n return this.getFieldObjectArray(CustomVisibleLayer, 'SubLayers');\n }\n public set subLayers(value: ObservableCollection) {\n this.setFieldObjectArray('SubLayers', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('IsVisible', false);\n this.setFieldArray('SubLayers', new ObservableCollection());\n }\n}\n\nexport class CustomRefreshableLayer extends FieldObject implements ICustomRefreshableLayer {\n // Url\n public get url(): string {\n return this.getField('Url');\n }\n public set url(value: string) {\n this.setField('Url', value);\n }\n // RefreshRate\n public get refreshRate(): number {\n return this.getField('RefreshRate');\n }\n public set refreshRate(value: number) {\n this.setField('RefreshRate', value);\n }\n // IsLayerRefreshing\n public get isLayerRefreshing(): boolean {\n return this.getField('IsLayerRefreshing');\n }\n public set isLayerRefreshing(value: boolean) {\n this.setField('IsLayerRefreshing', value);\n }\n // LastRefreshTime\n public get lastRefreshTime(): Date {\n return this.getFieldDate('LastRefreshTime');\n }\n public set lastRefreshTime(value: Date) {\n this.setFieldDate('LastRefreshTime', value);\n }\n // IsInDesignMode\n public get isInDesignMode(): boolean {\n return this.getField('IsInDesignMode');\n }\n public set isInDesignMode(value: boolean) {\n this.setField('IsInDesignMode', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Url', '');\n this.setField('RefreshRate', 0);\n this.setField('IsLayerRefreshing', false);\n this.setFieldDate('LastRefreshTime', new Date());\n this.setField('IsInDesignMode', false);\n }\n}\n\nexport class CustomMapLayer extends FieldObject implements ICustomMapLayer {\n // RefreshableLayer\n public get refreshableLayer(): ICustomRefreshableLayer {\n return this.getFieldObject(CustomRefreshableLayer, 'RefreshableLayer');\n }\n public set refreshableLayer(value: ICustomRefreshableLayer) {\n this.setFieldObject('RefreshableLayer', value);\n }\n // IsInDesignMode\n public get isInDesignMode(): boolean {\n return this.getField('IsInDesignMode');\n }\n public set isInDesignMode(value: boolean) {\n this.setField('IsInDesignMode', value);\n }\n // RefreshRate\n public get refreshRate(): string {\n return this.getField('RefreshRate');\n }\n public set refreshRate(value: string) {\n this.setField('RefreshRate', value);\n }\n // RefreshRateTs\n public get refreshRateTs(): number {\n return this.getField('RefreshRateTs');\n }\n public set refreshRateTs(value: number) {\n this.setField('RefreshRateTs', value);\n }\n // IsRefreshingLayer\n public get isRefreshingLayer(): boolean {\n return this.getField('IsRefreshingLayer');\n }\n public set isRefreshingLayer(value: boolean) {\n this.setField('IsRefreshingLayer', value);\n }\n // Url\n public get url(): string {\n return this.getField('Url');\n }\n public set url(value: string) {\n this.setField('Url', value);\n }\n // ZIndex\n public get zIndex(): number {\n return this.getField('ZIndex');\n }\n public set zIndex(value: number) {\n this.setField('ZIndex', value);\n }\n // IsPartialChecked\n public get isPartialChecked(): boolean {\n return this.getField('IsPartialChecked');\n }\n public set isPartialChecked(value: boolean) {\n this.setField('IsPartialChecked', value);\n }\n // Opacity\n public get opacity(): number {\n return this.getField('Opacity');\n }\n public set opacity(value: number) {\n this.setField('Opacity', value);\n }\n // SubLayers\n public get subLayers(): ObservableCollection {\n return this.getFieldObjectArray(CustomVisibleLayer, 'SubLayers');\n }\n public set subLayers(value: ObservableCollection) {\n this.setFieldObjectArray('SubLayers', value);\n }\n // ParentLayerId\n public get parentLayerId(): string {\n return this.getField('ParentLayerId');\n }\n public set parentLayerId(value: string) {\n this.setField('ParentLayerId', value);\n }\n // IsDisplayed\n public get isDisplayed(): boolean {\n return this.getField('IsDisplayed');\n }\n public set isDisplayed(value: boolean) {\n this.setField('IsDisplayed', value);\n }\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Title\n public get title(): string {\n return this.getField('Title');\n }\n public set title(value: string) {\n this.setField('Title', value);\n }\n // Token\n public get token(): string {\n return this.getField('Token');\n }\n public set token(value: string) {\n this.setField('Token', value);\n }\n\n public initializeAllFields(): void {\n const objRefreshableLayer = new CustomRefreshableLayer();\n objRefreshableLayer.initializeAllFields();\n this.setFieldObject('RefreshableLayer', objRefreshableLayer);\n this.setField('IsInDesignMode', false);\n this.setField('RefreshRate', '');\n this.setField('RefreshRateTs', 0);\n this.setField('IsRefreshingLayer', false);\n this.setField('Url', '');\n this.setField('ZIndex', 0);\n this.setField('IsPartialChecked', false);\n this.setField('Opacity', 0);\n this.setFieldArray('SubLayers', new ObservableCollection());\n this.setField('ParentLayerId', '');\n this.setField('IsDisplayed', false);\n this.setField('Id', '');\n this.setField('Title', '');\n this.setField('Token', '');\n }\n}\n\nexport class CustomSpecificMapConfiguration extends FieldObject implements ICustomSpecificMapConfiguration {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Layers\n public get layers(): ObservableCollection {\n return this.getFieldObjectArray(CustomMapLayer, 'Layers');\n }\n public set layers(value: ObservableCollection) {\n this.setFieldObjectArray('Layers', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setFieldArray('Layers', new ObservableCollection());\n }\n}\n\nexport class StateColor extends FieldObject implements IStateColor {\n // State\n public get state(): number {\n return this.getField('State');\n }\n public set state(value: number) {\n this.setField('State', value);\n }\n // Color\n public get color(): string {\n return this.getField('Color');\n }\n public set color(value: string) {\n this.setField('Color', value);\n }\n // Visible\n public get visible(): boolean {\n return this.getField('Visible');\n }\n public set visible(value: boolean) {\n this.setField('Visible', value);\n }\n\n public initializeAllFields(): void {\n this.setField('State', 0);\n this.setField('Color', '');\n this.setField('Visible', false);\n }\n}\n\nexport class MapObject extends FieldObject implements IMapObject {\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n // File\n public get file(): IGuid | null {\n return this.getNullableFieldGuid('File');\n }\n public set file(value: IGuid | null) {\n this.setNullableFieldGuid('File', value);\n }\n // Latitude\n public get latitude(): number {\n return this.getField('Latitude');\n }\n public set latitude(value: number) {\n this.setField('Latitude', value);\n }\n // Link\n public get link(): IGuid | null {\n return this.getNullableFieldGuid('Link');\n }\n public set link(value: IGuid | null) {\n this.setNullableFieldGuid('Link', value);\n }\n // Longitude\n public get longitude(): number {\n return this.getField('Longitude');\n }\n public set longitude(value: number) {\n this.setField('Longitude', value);\n }\n // RelativeHeight\n public get relativeHeight(): number {\n return this.getField('RelativeHeight');\n }\n public set relativeHeight(value: number) {\n this.setField('RelativeHeight', value);\n }\n // RelativeWidth\n public get relativeWidth(): number {\n return this.getField('RelativeWidth');\n }\n public set relativeWidth(value: number) {\n this.setField('RelativeWidth', value);\n }\n // Rotation\n public get rotation(): number {\n return this.getField('Rotation');\n }\n public set rotation(value: number) {\n this.setField('Rotation', value);\n }\n // ShowFov\n public get showFov(): boolean {\n return this.getField('ShowFov');\n }\n public set showFov(value: boolean) {\n this.setField('ShowFov', value);\n }\n // FovDistance\n public get fovDistance(): number {\n return this.getField('FovDistance');\n }\n public set fovDistance(value: number) {\n this.setField('FovDistance', value);\n }\n // FovMaxDistance\n public get fovMaxDistance(): number {\n return this.getField('FovMaxDistance');\n }\n public set fovMaxDistance(value: number) {\n this.setField('FovMaxDistance', value);\n }\n // FovElevation\n public get fovElevation(): number {\n return this.getField('FovElevation');\n }\n public set fovElevation(value: number) {\n this.setField('FovElevation', value);\n }\n // FovOrientation\n public get fovOrientation(): number {\n return this.getField('FovOrientation');\n }\n public set fovOrientation(value: number) {\n this.setField('FovOrientation', value);\n }\n // FovWidth\n public get fovWidth(): number {\n return this.getField('FovWidth');\n }\n public set fovWidth(value: number) {\n this.setField('FovWidth', value);\n }\n // Type\n public get type(): IGuid {\n return this.getFieldGuid('Type');\n }\n public set type(value: IGuid) {\n this.setFieldGuid('Type', value);\n }\n // StateColors\n public get stateColors(): ObservableCollection {\n return this.getFieldObjectArray(StateColor, 'StateColors');\n }\n public set stateColors(value: ObservableCollection) {\n this.setFieldObjectArray('StateColors', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('Data', '');\n this.setFieldGuid('File', SafeGuid.EMPTY);\n this.setField('Latitude', 0);\n this.setFieldGuid('Link', SafeGuid.EMPTY);\n this.setField('Longitude', 0);\n this.setField('RelativeHeight', 0);\n this.setField('RelativeWidth', 0);\n this.setField('Rotation', 0);\n this.setField('ShowFov', false);\n this.setField('FovDistance', 0);\n this.setField('FovMaxDistance', 0);\n this.setField('FovElevation', 0);\n this.setField('FovOrientation', 0);\n this.setField('FovWidth', 0);\n this.setFieldGuid('Type', SafeGuid.EMPTY);\n this.setFieldArray('StateColors', new ObservableCollection());\n }\n}\n\nexport class VisibleLayer extends FieldObject implements IVisibleLayer {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // IsDisplayed\n public get isDisplayed(): boolean {\n return this.getField('IsDisplayed');\n }\n public set isDisplayed(value: boolean) {\n this.setField('IsDisplayed', value);\n }\n // ZIndex\n public get zIndex(): number {\n return this.getField('ZIndex');\n }\n public set zIndex(value: number) {\n this.setField('ZIndex', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('IsDisplayed', false);\n this.setField('ZIndex', 0);\n }\n}\n\nexport class Point extends FieldObject implements IPoint {\n // X\n public get x(): number {\n return this.getField('X');\n }\n public set x(value: number) {\n this.setField('X', value);\n }\n // Y\n public get y(): number {\n return this.getField('Y');\n }\n public set y(value: number) {\n this.setField('Y', value);\n }\n\n public initializeAllFields(): void {\n this.setField('X', 0);\n this.setField('Y', 0);\n }\n}\n\nexport class GeoReference extends FieldObject implements IGeoReference {\n // TargetPoints\n public get targetPoints(): ObservableCollection {\n return this.getFieldObjectArray(Coordinate, 'TargetPoints');\n }\n public set targetPoints(value: ObservableCollection) {\n this.setFieldObjectArray('TargetPoints', value);\n }\n // SourcePoints\n public get sourcePoints(): ObservableCollection {\n return this.getFieldObjectArray(Point, 'SourcePoints');\n }\n public set sourcePoints(value: ObservableCollection) {\n this.setFieldObjectArray('SourcePoints', value);\n }\n // IsValid\n public get isValid(): boolean {\n return this.getField('IsValid');\n }\n public set isValid(value: boolean) {\n this.setField('IsValid', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('TargetPoints', new ObservableCollection());\n this.setFieldArray('SourcePoints', new ObservableCollection());\n this.setField('IsValid', false);\n }\n}\n\nexport class MapFloorData extends FieldObject implements IMapFloorData {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Abbreviation\n public get abbreviation(): string {\n return this.getField('Abbreviation');\n }\n public set abbreviation(value: string) {\n this.setField('Abbreviation', value);\n }\n // OrderPosition\n public get orderPosition(): number {\n return this.getField('OrderPosition');\n }\n public set orderPosition(value: number) {\n this.setField('OrderPosition', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Abbreviation', '');\n this.setField('OrderPosition', 0);\n }\n}\n\nexport class LatLngRectangle extends FieldObject implements ILatLngRectangle {\n // BottomRight\n public get bottomRight(): ICoordinate {\n return this.getFieldObject(Coordinate, 'BottomRight');\n }\n public set bottomRight(value: ICoordinate) {\n this.setFieldObject('BottomRight', value);\n }\n // TopLeft\n public get topLeft(): ICoordinate {\n return this.getFieldObject(Coordinate, 'TopLeft');\n }\n public set topLeft(value: ICoordinate) {\n this.setFieldObject('TopLeft', value);\n }\n\n public initializeAllFields(): void {\n const objBottomRight = new Coordinate();\n objBottomRight.initializeAllFields();\n this.setFieldObject('BottomRight', objBottomRight);\n const objTopLeft = new Coordinate();\n objTopLeft.initializeAllFields();\n this.setFieldObject('TopLeft', objTopLeft);\n }\n}\n\nexport class Coordinate extends FieldObject implements ICoordinate {\n // Latitude\n public get latitude(): number {\n return this.getField('Latitude');\n }\n public set latitude(value: number) {\n this.setField('Latitude', value);\n }\n // Longitude\n public get longitude(): number {\n return this.getField('Longitude');\n }\n public set longitude(value: number) {\n this.setField('Longitude', value);\n }\n // Altitude\n public get altitude(): number | null {\n return this.getNullableField('Altitude');\n }\n public set altitude(value: number | null) {\n this.setNullableField('Altitude', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setField('Altitude', 0);\n }\n}\n\nexport class DefaultView extends FieldObject implements IDefaultView {\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // ScaleFactor\n public get scaleFactor(): number {\n return this.getField('ScaleFactor');\n }\n public set scaleFactor(value: number) {\n this.setField('ScaleFactor', value);\n }\n // Center\n public get center(): ICoordinate {\n return this.getFieldObject(Coordinate, 'Center');\n }\n public set center(value: ICoordinate) {\n this.setFieldObject('Center', value);\n }\n // ViewArea\n public get viewArea(): ILatLngRectangle {\n return this.getFieldObject(LatLngRectangle, 'ViewArea');\n }\n public set viewArea(value: ILatLngRectangle) {\n this.setFieldObject('ViewArea', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Name', '');\n this.setField('ScaleFactor', 0);\n const objCenter = new Coordinate();\n objCenter.initializeAllFields();\n this.setFieldObject('Center', objCenter);\n const objViewArea = new LatLngRectangle();\n objViewArea.initializeAllFields();\n this.setFieldObject('ViewArea', objViewArea);\n }\n}\n\nexport class Thickness extends FieldObject implements IThickness {\n // Left\n public get left(): number {\n return this.getField('Left');\n }\n public set left(value: number) {\n this.setField('Left', value);\n }\n // Top\n public get top(): number {\n return this.getField('Top');\n }\n public set top(value: number) {\n this.setField('Top', value);\n }\n // Right\n public get right(): number {\n return this.getField('Right');\n }\n public set right(value: number) {\n this.setField('Right', value);\n }\n // Bottom\n public get bottom(): number {\n return this.getField('Bottom');\n }\n public set bottom(value: number) {\n this.setField('Bottom', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Left', 0);\n this.setField('Top', 0);\n this.setField('Right', 0);\n this.setField('Bottom', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class MapEntity extends Entity implements IMapEntity {\n // #region REST Properties\n\n // AssociatedArea\n public get associatedArea(): IGuid {\n return this.getFieldGuid(MapEntityFields.associatedAreaField, ValidFlags.Specific);\n }\n\n // BackgroundColor\n public get backgroundColor(): number {\n return this.getField(MapEntityFields.backgroundColorField, ValidFlags.Specific);\n }\n public set backgroundColor(value: number) {\n this.setField(MapEntityFields.backgroundColorField, value);\n }\n\n // CruncherId\n public get cruncherId(): IGuid {\n return this.getFieldGuid(MapEntityFields.cruncherIdField, ValidFlags.Specific);\n }\n public set cruncherId(value: IGuid) {\n this.setFieldGuid(MapEntityFields.cruncherIdField, value);\n }\n\n // DPI\n public get dPI(): number {\n return this.getField(MapEntityFields.dPIField, ValidFlags.Specific);\n }\n public set dPI(value: number) {\n this.setField(MapEntityFields.dPIField, value);\n }\n\n // GeoLocalized\n public get geoLocalized(): boolean {\n return this.getField(MapEntityFields.geoLocalizedField, ValidFlags.Specific);\n }\n public set geoLocalized(value: boolean) {\n this.setField(MapEntityFields.geoLocalizedField, value);\n }\n\n // HideEmptyLayers\n public get hideEmptyLayers(): boolean {\n return this.getField(MapEntityFields.hideEmptyLayersField, ValidFlags.Specific);\n }\n public set hideEmptyLayers(value: boolean) {\n this.setField(MapEntityFields.hideEmptyLayersField, value);\n }\n\n // Info\n public get info(): string {\n return this.getField(MapEntityFields.infoField, ValidFlags.Specific);\n }\n public set info(value: string) {\n this.setField(MapEntityFields.infoField, value);\n }\n\n // IsMapImage\n public get isMapImage(): boolean {\n return this.getField(MapEntityFields.isMapImageField);\n }\n\n // LockDisplay\n public get lockDisplay(): boolean {\n return this.getField(MapEntityFields.lockDisplayField, ValidFlags.Specific);\n }\n public set lockDisplay(value: boolean) {\n this.setField(MapEntityFields.lockDisplayField, value);\n }\n\n // LockZoom\n public get lockZoom(): boolean {\n return this.getField(MapEntityFields.lockZoomField, ValidFlags.Specific);\n }\n public set lockZoom(value: boolean) {\n this.setField(MapEntityFields.lockZoomField, value);\n }\n\n // MaxZoom\n public get maxZoom(): number {\n return this.getField(MapEntityFields.maxZoomField, ValidFlags.Specific);\n }\n public set maxZoom(value: number) {\n this.setField(MapEntityFields.maxZoomField, value);\n }\n\n // OriginalFileExtension\n public get originalFileExtension(): string {\n return this.getField(MapEntityFields.originalFileExtensionField, ValidFlags.Specific);\n }\n public set originalFileExtension(value: string) {\n this.setField(MapEntityFields.originalFileExtensionField, value);\n }\n\n // Projection\n public get projection(): string {\n return this.getField(MapEntityFields.projectionField, ValidFlags.Specific);\n }\n public set projection(value: string) {\n this.setField(MapEntityFields.projectionField, value);\n }\n\n // ProviderId\n public get providerId(): IGuid {\n return this.getFieldGuid(MapEntityFields.providerIdField, ValidFlags.Specific);\n }\n public set providerId(value: IGuid) {\n this.setFieldGuid(MapEntityFields.providerIdField, value);\n }\n\n // Rotation\n public get rotation(): number {\n return this.getField(MapEntityFields.rotationField, ValidFlags.Specific);\n }\n public set rotation(value: number) {\n this.setField(MapEntityFields.rotationField, value);\n }\n\n // ScaleFactor\n public get scaleFactor(): number {\n return this.getField(MapEntityFields.scaleFactorField, ValidFlags.Specific);\n }\n public set scaleFactor(value: number) {\n this.setField(MapEntityFields.scaleFactorField, value);\n }\n\n // ServerUris\n public get serverUris(): ObservableCollection {\n return this.getFieldArray(MapEntityFields.serverUrisField);\n }\n\n // Status\n public get status(): string {\n return this.getField(MapEntityFields.statusField, ValidFlags.EntityStatus2);\n }\n\n // ThumbnailId\n public get thumbnailId(): IGuid {\n return this.getFieldGuid(MapEntityFields.thumbnailIdField, ValidFlags.Specific);\n }\n\n // Version\n public get version(): IGuid {\n return this.getFieldGuid(MapEntityFields.versionField, ValidFlags.Specific);\n }\n public set version(value: IGuid) {\n this.setFieldGuid(MapEntityFields.versionField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Maps);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getCropAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(Thickness, 'Crop', true, ValidFlags.Specific, transaction);\n }\n\n public async getDefaultViewAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(DefaultView, 'DefaultView', true, ValidFlags.Specific, transaction);\n }\n\n public async getFloorInfoAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(MapFloorData, 'FloorInfo', 'Id', false, true, ValidFlags.Specific, transaction);\n }\n\n public async getGeoReferenceAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(GeoReference, 'GeoReference', false, ValidFlags.Specific, transaction);\n }\n\n public async getLayersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(VisibleLayer, 'Layers', '', true, false, ValidFlags.Specific, transaction);\n }\n\n public async getMapObjectsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(MapObject, 'MapObjects', 'Guid', false, true, ValidFlags.Membership, transaction);\n }\n\n public async getSpecificMapsConfigurationsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CustomSpecificMapConfiguration, 'SpecificMapsConfigurations', 'Id', true, false, ValidFlags.Specific, transaction);\n }\n\n public async getViewAreaPresetsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(DefaultView, 'ViewAreaPresets', 'Id', true, false, ValidFlags.Specific, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IEventBase } from '../Interface/IEventBase';\nimport { ICoordinate } from '../Interface/IMapEntity';\nimport { Coordinate } from '../Model/MapEntity';\n\nexport class EventBase extends FieldObject implements IEventBase {\n // #region Fields\n\n private _convertedJObject: string|null = null;\n\n // #endregion\n\n // #region REST Properties\n\n // ContextId\n public get contextId(): IGuid {\n return this.getFieldGuid('ContextId');\n }\n public set contextId(value: IGuid) {\n this.setFieldGuid('ContextId', value);\n }\n\n // Coordinate\n public get coordinate(): ICoordinate {\n return this.getFieldObject(Coordinate, 'Coordinate');\n }\n public set coordinate(value: ICoordinate) {\n this.setFieldObject('Coordinate', value);\n }\n\n // EventSubType\n public get eventSubType(): number {\n return this.getField('EventSubType');\n }\n public set eventSubType(value: number) {\n this.setField('EventSubType', value);\n }\n\n // EventType\n public get eventType(): string {\n return this.getField('EventType');\n }\n public set eventType(value: string) {\n this.setField('EventType', value);\n }\n\n // SourceEntity\n public get sourceEntity(): IGuid {\n return this.getFieldGuid('SourceEntity');\n }\n public set sourceEntity(value: IGuid) {\n this.setFieldGuid('SourceEntity', value);\n }\n\n // SourceEntityDesc\n public get sourceEntityDesc(): string {\n return this.getField('SourceEntityDesc');\n }\n public set sourceEntityDesc(value: string) {\n this.setField('SourceEntityDesc', value);\n }\n\n // SourceEntityType\n public get sourceEntityType(): string {\n return this.getField('SourceEntityType');\n }\n public set sourceEntityType(value: string) {\n this.setField('SourceEntityType', value);\n }\n\n // Timestamp\n public get timestamp(): Date {\n return this.getFieldDate('Timestamp');\n }\n public set timestamp(value: Date) {\n this.setFieldDate('Timestamp', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n // Some field are optional ( if you ask for expansion or not )\n public getSafeField(fieldId: string): T|null {\n try {\n return super.getField(fieldId);\n } catch (e) {\n return null;\n }\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('ContextId', SafeGuid.EMPTY);\n const objCoordinate = new Coordinate();\n objCoordinate.initializeAllFields();\n this.setFieldObject('Coordinate', objCoordinate);\n this.setField('EventSubType', 0);\n this.setField('EventType', '');\n this.setFieldGuid('SourceEntity', SafeGuid.EMPTY);\n this.setField('SourceEntityDesc', '');\n this.setField('SourceEntityType', '');\n this.setFieldDate('Timestamp', new Date());\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/enumerations/ApiEventTypes?codegen=ts&showresources=True&showinternalid=False on 2022-12-21 2:23:41 PM\n\nexport class EventTypes {\n public static None = 'None';\n public static Invalidate = 'Invalidate';\n public static ManualAction = 'ManualAction';\n public static AlarmTriggered = 'AlarmTriggered';\n public static AlarmAcknowledged = 'AlarmAcknowledged';\n public static ApplicationConnected = 'ApplicationConnected';\n public static ApplicationDisconnected = 'ApplicationDisconnected';\n public static ServerLost = 'ServerLost';\n public static CameraLiveBookmarkAdded = 'CameraLiveBookmarkAdded';\n public static CameraPlaybackBookmarkAdded = 'CameraPlaybackBookmarkAdded';\n public static CameraMotionOn = 'CameraMotionOn';\n public static CameraMotionOff = 'CameraMotionOff';\n public static CardholderAccessGranted = 'CardholderAccessGranted';\n public static CameraAbnormalMotion = 'CameraAbnormalMotion';\n public static CameraNominalMotion = 'CameraNominalMotion';\n public static CardholderAccessRefused = 'CardholderAccessRefused';\n public static CardholderWalkthrough = 'CardholderWalkthrough';\n public static CardholderInactive = 'CardholderInactive';\n public static CardHolderCredentialExpired = 'CardHolderCredentialExpired';\n public static CardHolderCredentialInactive = 'CardHolderCredentialInactive';\n public static CardHolderCredentialLost = 'CardHolderCredentialLost';\n public static CardHolderCredentialStolen = 'CardHolderCredentialStolen';\n public static CardholderAntipassback = 'CardholderAntipassback';\n public static CustomEvent = 'CustomEvent';\n public static UnitConnected = 'UnitConnected';\n public static UnitDisconnected = 'UnitDisconnected';\n public static InterfaceOnline = 'InterfaceOnline';\n public static InterfaceOffline = 'InterfaceOffline';\n public static AccessControlUnitWarningActivated = 'AccessControlUnitWarningActivated';\n public static AccessControlUnitWarningDeactivated = 'AccessControlUnitWarningDeactivated';\n public static FirmwareUpgradeScheduled = 'FirmwareUpgradeScheduled';\n public static FirmwareUpgradeCancelled = 'FirmwareUpgradeCancelled';\n public static InterfaceFirmwareUpgradeStarted = 'InterfaceFirmwareUpgradeStarted';\n public static InterfaceFirmwareUpgradeSuccess = 'InterfaceFirmwareUpgradeSuccess';\n public static InterfaceFirmwareUpgradeFailure = 'InterfaceFirmwareUpgradeFailure';\n public static InterfaceFirmwareUpgradeScheduled = 'InterfaceFirmwareUpgradeScheduled';\n public static InterfaceFirmwareUpgradeCancelled = 'InterfaceFirmwareUpgradeCancelled';\n public static InterfaceFirmwareUpgradeTransferred = 'InterfaceFirmwareUpgradeTransferred';\n public static UnitACFail = 'UnitACFail';\n public static UnitBatFail = 'UnitBatFail';\n public static UnitInvalidConfiguration = 'UnitInvalidConfiguration';\n public static UnitTemperatureAlarm = 'UnitTemperatureAlarm';\n public static UnitTimeOutOfSync = 'UnitTimeOutOfSync';\n public static UnitTimeOutOfSyncRecovered = 'UnitTimeOutOfSyncRecovered';\n public static UnitDiskActionError = 'UnitDiskActionError';\n public static UnitDiskFormatted = 'UnitDiskFormatted';\n public static UnitDiskLocked = 'UnitDiskLocked';\n public static UnitDiskMounted = 'UnitDiskMounted';\n public static UnitDiskUnlocked = 'UnitDiskUnlocked';\n public static UnitDiskUnmounted = 'UnitDiskUnmounted';\n public static ArchiveTransferSequenceImported = 'ArchiveTransferSequenceImported';\n public static UserLoggedOn = 'UserLoggedOn';\n public static UserLoggedOff = 'UserLoggedOff';\n public static UserLogonFailed = 'UserLogonFailed';\n public static FirmwareUpgradeStarted = 'FirmwareUpgradeStarted';\n public static FirmwareUpgradeSuccess = 'FirmwareUpgradeSuccess';\n public static FirmwareUpgradeFailure = 'FirmwareUpgradeFailure';\n public static DoorRexOn = 'DoorRexOn';\n public static DoorRexOff = 'DoorRexOff';\n public static DoorOpenedForTooLong = 'DoorOpenedForTooLong';\n public static DoorPullStationActivated = 'DoorPullStationActivated';\n public static DoorPullStationNormal = 'DoorPullStationNormal';\n public static DoorOpen = 'DoorOpen';\n public static DoorClose = 'DoorClose';\n public static DoorForcedOpen = 'DoorForcedOpen';\n public static DoorLock = 'DoorLock';\n public static DoorUnlock = 'DoorUnlock';\n public static DoorOpenWhileLockSecure = 'DoorOpenWhileLockSecure';\n public static AccessUnknownCredential = 'AccessUnknownCredential';\n public static AccessUnassignedCredential = 'AccessUnassignedCredential';\n public static AccessGranted = 'AccessGranted';\n public static AccessRefused = 'AccessRefused';\n public static AccessExpiredCredential = 'AccessExpiredCredential';\n public static AccessStolenCredential = 'AccessStolenCredential';\n public static AccessLostCredential = 'AccessLostCredential';\n public static AccessInactiveCredential = 'AccessInactiveCredential';\n public static AccessInactivePerson = 'AccessInactivePerson';\n public static DoorTamper = 'DoorTamper';\n public static InputTroubleShort = 'InputTroubleShort';\n public static InputTroubleOpen = 'InputTroubleOpen';\n public static EmergencyDoorRex = 'EmergencyDoorRex';\n public static EmergencyDoorUnlockPostponed = 'EmergencyDoorUnlockPostponed';\n public static EmergencyDoorUnlocked = 'EmergencyDoorUnlocked';\n public static EmergencyDoorUnlockedOperatorUnlock = 'EmergencyDoorUnlockedOperatorUnlock';\n public static EmergencyDoorUnlockedReleaseDelayTimeExpired = 'EmergencyDoorUnlockedReleaseDelayTimeExpired';\n public static EmergencyDoorUnlockedExtensionGuardLockingExpired = 'EmergencyDoorUnlockedExtensionGuardLockingExpired';\n public static EmergencyDoorUnlockedMaximumLockingTimeExpired = 'EmergencyDoorUnlockedMaximumLockingTimeExpired';\n public static EmergencyDoorUnlockedHostConnectionTimeout = 'EmergencyDoorUnlockedHostConnectionTimeout';\n public static EmergencyDoorReset = 'EmergencyDoorReset';\n public static EmergencyDoorResetRemoteOperator = 'EmergencyDoorResetRemoteOperator';\n public static EmergencyDoorResetPhysicalButton = 'EmergencyDoorResetPhysicalButton';\n public static EmergencyDoorResetAuto = 'EmergencyDoorResetAuto';\n public static DoorTestStarted = 'DoorTestStarted';\n public static DoorTestSucceeded = 'DoorTestSucceeded';\n public static DoorTestFailed = 'DoorTestFailed';\n public static DoorTestFailedAborted = 'DoorTestFailedAborted';\n public static DoorTestFailedReaderShunted = 'DoorTestFailedReaderShunted';\n public static DoorTestFailedDoorNotSecured = 'DoorTestFailedDoorNotSecured';\n public static DoorTestFailedError = 'DoorTestFailedError';\n public static DoorTestFailedUnlockFailed = 'DoorTestFailedUnlockFailed';\n public static DoorTestFailedRelockFailed = 'DoorTestFailedRelockFailed';\n public static AreaFirstManIn = 'AreaFirstManIn';\n public static AreaLastManOut = 'AreaLastManOut';\n public static AreaAntipassbackDetected = 'AreaAntipassbackDetected';\n public static AreaAntipassbackForgiven = 'AreaAntipassbackForgiven';\n public static PeopleCountReset = 'PeopleCountReset';\n public static AreaCardholderRemoved = 'AreaCardholderRemoved';\n public static AreaCardholderAdded = 'AreaCardholderAdded';\n public static CredentialUnassigned = 'CredentialUnassigned';\n public static CredentialExpired = 'CredentialExpired';\n public static CredentialStolen = 'CredentialStolen';\n public static CredentialLost = 'CredentialLost';\n public static CredentialInactive = 'CredentialInactive';\n public static CredentialHasExpired = 'CredentialHasExpired';\n public static CredentialIsExpiring = 'CredentialIsExpiring';\n public static ZoneGlassBreak = 'ZoneGlassBreak';\n public static ZoneWindowOpened = 'ZoneWindowOpened';\n public static ZoneWindowClosed = 'ZoneWindowClosed';\n public static ZoneDeadBoltLocked = 'ZoneDeadBoltLocked';\n public static ZoneDeadBoltUnlocked = 'ZoneDeadBoltUnlocked';\n public static ZoneKnobInplace = 'ZoneKnobInplace';\n public static ZoneKnobRotated = 'ZoneKnobRotated';\n public static ZoneLockSecured = 'ZoneLockSecured';\n public static ZoneLockReleased = 'ZoneLockReleased';\n public static MacroStarted = 'MacroStarted';\n public static MacroCompleted = 'MacroCompleted';\n public static MacroAborted = 'MacroAborted';\n public static AlarmAcknowledgedAlternate = 'AlarmAcknowledgedAlternate';\n public static LprFirst = 'LprFirst';\n public static LprRead = 'LprRead';\n public static LprHit = 'LprHit';\n public static ProcessMlpiResultsResultEvent = 'ProcessMlpiResultsResultEvent';\n public static LprOffloadSucceeded = 'LprOffloadSucceeded';\n public static LprOffloadFailed = 'LprOffloadFailed';\n public static LprNoMatch = 'LprNoMatch';\n public static LprHotlistChanged = 'LprHotlistChanged';\n public static LprUpdateInstalled = 'LprUpdateInstalled';\n public static LprUpdateUninstalled = 'LprUpdateUninstalled';\n public static LprUpdatePublished = 'LprUpdatePublished';\n public static LprUpdateError = 'LprUpdateError';\n public static LprUpdateInstalling = 'LprUpdateInstalling';\n public static LprUpdateUninstalling = 'LprUpdateUninstalling';\n public static IntrusionAreaDuress = 'IntrusionAreaDuress';\n public static IntrusionAreaEntryDelay = 'IntrusionAreaEntryDelay';\n public static IntrusionAreaAlarmActivated = 'IntrusionAreaAlarmActivated';\n public static IntrusionAreaArming = 'IntrusionAreaArming';\n public static IntrusionAreaArmingPostponed = 'IntrusionAreaArmingPostponed';\n public static IntrusionAreaMasterArmed = 'IntrusionAreaMasterArmed';\n public static IntrusionAreaPerimeterArmed = 'IntrusionAreaPerimeterArmed';\n public static IntrusionAreaDisarmed = 'IntrusionAreaDisarmed';\n public static IntrusionAreaInputTrouble = 'IntrusionAreaInputTrouble';\n public static IntrusionAreaInputBypassActivated = 'IntrusionAreaInputBypassActivated';\n public static IntrusionAreaInputBypassDeactivated = 'IntrusionAreaInputBypassDeactivated';\n public static IntrusionAreaForcedArming = 'IntrusionAreaForcedArming';\n public static IntrusionAreaCanceledAlarm = 'IntrusionAreaCanceledAlarm';\n public static IntrusionAreaMasterArmRequest = 'IntrusionAreaMasterArmRequest';\n public static IntrusionAreaPerimeterArmRequest = 'IntrusionAreaPerimeterArmRequest';\n public static IntrusionAreaDisarmRequest = 'IntrusionAreaDisarmRequest';\n public static IntrusionAreaArmingPostponedRequest = 'IntrusionAreaArmingPostponedRequest';\n public static IntrusionAreaCanceledAlarmRequest = 'IntrusionAreaCanceledAlarmRequest';\n public static IntrusionAreaAlarmSilenced = 'IntrusionAreaAlarmSilenced';\n public static IntrusionUnitTamper = 'IntrusionUnitTamper';\n public static ZoneArmed = 'ZoneArmed';\n public static ZoneDisarmed = 'ZoneDisarmed';\n public static ZoneMaintenanceOn = 'ZoneMaintenanceOn';\n public static ZoneMaintenanceOff = 'ZoneMaintenanceOff';\n public static ZoneWarningUnitOffline = 'ZoneWarningUnitOffline';\n public static DoorMaintenanceOff = 'DoorMaintenanceOff';\n public static DoorMaintenanceOn = 'DoorMaintenanceOn';\n public static DoorScheduledLock = 'DoorScheduledLock';\n public static DoorScheduledUnlock = 'DoorScheduledUnlock';\n public static DoorWarningUnitOffline = 'DoorWarningUnitOffline';\n public static DoorWarningInterfaceAcFail = 'DoorWarningInterfaceAcFail';\n public static DoorWarningInterfaceAcFailRestored = 'DoorWarningInterfaceAcFailRestored';\n public static DoorWarningInterfaceBatteryFail = 'DoorWarningInterfaceBatteryFail';\n public static DoorWarningInterfaceBatteryFailRestored = 'DoorWarningInterfaceBatteryFailRestored';\n public static DoorWarningInterfaceTamperFail = 'DoorWarningInterfaceTamperFail';\n public static DoorWarningInterfaceTamperFailRestored = 'DoorWarningInterfaceTamperFailRestored';\n public static DoorManuallyUnlocked = 'DoorManuallyUnlocked';\n public static DoorOnline = 'DoorOnline';\n public static DoorUnsecured = 'DoorUnsecured';\n public static DoorSecured = 'DoorSecured';\n public static VideoAnalyticsAudioAlarm = 'VideoAnalyticsAudioAlarm';\n public static VideoAnalyticsLicensePlateInSight = 'VideoAnalyticsLicensePlateInSight';\n public static VideoAnalyticsLicensePlateOutofSight = 'VideoAnalyticsLicensePlateOutofSight';\n public static VideoAnalyticsLicensePlateReading = 'VideoAnalyticsLicensePlateReading';\n public static VideoAnalyticsObjectConditionChange = 'VideoAnalyticsObjectConditionChange';\n public static VideoAnalyticsObjectCrossedLine = 'VideoAnalyticsObjectCrossedLine';\n public static VideoAnalyticsObjectEntered = 'VideoAnalyticsObjectEntered';\n public static VideoAnalyticsObjectExited = 'VideoAnalyticsObjectExited';\n public static VideoAnalyticsObjectFall = 'VideoAnalyticsObjectFall';\n public static VideoAnalyticsObjectFollowingRoute = 'VideoAnalyticsObjectFollowingRoute';\n public static VideoAnalyticsObjectInField = 'VideoAnalyticsObjectInField';\n public static VideoAnalyticsObjectLeft = 'VideoAnalyticsObjectLeft';\n public static VideoAnalyticsObjectLoitering = 'VideoAnalyticsObjectLoitering';\n public static VideoAnalyticsObjectMerged = 'VideoAnalyticsObjectMerged';\n public static VideoAnalyticsObjectRemoved = 'VideoAnalyticsObjectRemoved';\n public static VideoAnalyticsObjectRun = 'VideoAnalyticsObjectRun';\n public static VideoAnalyticsObjectSlide = 'VideoAnalyticsObjectSlide';\n public static VideoAnalyticsObjectSplit = 'VideoAnalyticsObjectSplit';\n public static VideoAnalyticsObjectStopped = 'VideoAnalyticsObjectStopped';\n public static VideoAnalyticsTailgating = 'VideoAnalyticsTailgating';\n public static VideoAnalyticsTampering = 'VideoAnalyticsTampering';\n public static VideoAnalyticsFaceDetected = 'VideoAnalyticsFaceDetected';\n public static VideoAnalyticsUndefined = 'VideoAnalyticsUndefined';\n public static VideoAnalyticsDirectionAlarm = 'VideoAnalyticsDirectionAlarm';\n public static VideoAnalyticsTamperingOff = 'VideoAnalyticsTamperingOff';\n public static VideoAnalyticsCrowdDetected = 'VideoAnalyticsCrowdDetected';\n public static VideoAnalyticsFaceRecognized = 'VideoAnalyticsFaceRecognized';\n public static VideoAnalyticsObjectDetected = 'VideoAnalyticsObjectDetected';\n public static VideoAnalyticsHeatMapChanged = 'VideoAnalyticsHeatMapChanged';\n public static VideoAnalyticsObjectCountChanged = 'VideoAnalyticsObjectCountChanged';\n public static VideoAnalyticsObjectVelocityChanged = 'VideoAnalyticsObjectVelocityChanged';\n public static VideoAnalyticsObjectDirectionChanged = 'VideoAnalyticsObjectDirectionChanged';\n public static VideoAnalyticsPeopleCounting = 'VideoAnalyticsPeopleCounting';\n public static VideoAnalyticsPeopleCountingAlarm = 'VideoAnalyticsPeopleCountingAlarm';\n public static VideoAnalyticsCrowdSize = 'VideoAnalyticsCrowdSize';\n public static FloorAccess = 'FloorAccess';\n public static AssetMoved = 'AssetMoved';\n public static AssetLowBattery = 'AssetLowBattery';\n public static AssetOffline = 'AssetOffline';\n public static AssetOnline = 'AssetOnline';\n public static ArchivingStartedAutomatically = 'ArchivingStartedAutomatically';\n public static ArchivingStoppedAutomatically = 'ArchivingStoppedAutomatically';\n public static ArchivingStartedManually = 'ArchivingStartedManually';\n public static ArchivingStoppedManually = 'ArchivingStoppedManually';\n public static ArchivingStartedOnMotionEvent = 'ArchivingStartedOnMotionEvent';\n public static ArchivingStoppedOnMotionEvent = 'ArchivingStoppedOnMotionEvent';\n public static ArchivingStartedByExternalSource = 'ArchivingStartedByExternalSource';\n public static ArchivingStoppedByExternalSource = 'ArchivingStoppedByExternalSource';\n public static ArchivingStartedByAlarm = 'ArchivingStartedByAlarm';\n public static ArchivingStoppedByAlarm = 'ArchivingStoppedByAlarm';\n public static CameraStartLiveStreaming = 'CameraStartLiveStreaming';\n public static CameraStopLiveStreaming = 'CameraStopLiveStreaming';\n public static ArchiveFileDeleted = 'ArchiveFileDeleted';\n public static CameraSignalLost = 'CameraSignalLost';\n public static CameraSignalRecovered = 'CameraSignalRecovered';\n public static ArchivingQueueFull = 'ArchivingQueueFull';\n public static CameraNotArchiving = 'CameraNotArchiving';\n public static CameraTransmissionLost = 'CameraTransmissionLost';\n public static CameraRtpPacketsLost = 'CameraRtpPacketsLost';\n public static CameraMultipleSourceDetected = 'CameraMultipleSourceDetected';\n public static CameraStartBlock = 'CameraStartBlock';\n public static CameraStopBlock = 'CameraStopBlock';\n public static CameraTransmissionRecovered = 'CameraTransmissionRecovered';\n public static CameraEdgeRecordingCommandTimeout = 'CameraEdgeRecordingCommandTimeout';\n public static CameraEdgestorageFailure = 'CameraEdgestorageFailure';\n public static CameraMotion = 'CameraMotion';\n public static CameraEdgestorageEnabled = 'CameraEdgestorageEnabled';\n public static CameraRtpPacketLostRecovery = 'CameraRtpPacketLostRecovery';\n public static PtzActivated = 'PtzActivated';\n public static PtzStopped = 'PtzStopped';\n public static PtzZoomByUserStarted = 'PtzZoomByUserStarted';\n public static PtzZoomByUserStopped = 'PtzZoomByUserStopped';\n public static PtzLocked = 'PtzLocked';\n public static HealthMonitoringEvent = 'HealthMonitoringEvent';\n public static AreaAntipassbackDisabledMixedMode = 'AreaAntipassbackDisabledMixedMode';\n public static AreaAntipassbackDisabledUnitOffline = 'AreaAntipassbackDisabledUnitOffline';\n public static AreaPeopleCountDisabledUnitOffline = 'AreaPeopleCountDisabledUnitOffline';\n public static AreaAntipassbackDisabledPerimeterOnElevator = 'AreaAntipassbackDisabledPerimeterOnElevator';\n public static AreaSasOverrideOn = 'AreaSasOverrideOn';\n public static AreaSasOverrideOff = 'AreaSasOverrideOff';\n public static AreaSasLockdownOn = 'AreaSasLockdownOn';\n public static AreaSasLockdownOff = 'AreaSasLockdownOff';\n public static AreaSasMultipleUnitWarning = 'AreaSasMultipleUnitWarning';\n public static AreaSasUnsupportedWarning = 'AreaSasUnsupportedWarning';\n public static AreaSasMaintenanceModeWarning = 'AreaSasMaintenanceModeWarning';\n public static AreaSasFreeAccessWarning = 'AreaSasFreeAccessWarning';\n public static AreaSasAntipassbackWarning = 'AreaSasAntipassbackWarning';\n public static AreaSasFloorWarning = 'AreaSasFloorWarning';\n public static AreaAntipassbackDisabledInvalidSettings = 'AreaAntipassbackDisabledInvalidSettings';\n public static AreaSasDoorWithNoSensorConfigured = 'AreaSasDoorWithNoSensorConfigured';\n public static AreaSasOnlyOnePerimeterFloor = 'AreaSasOnlyOnePerimeterFloor';\n public static SinglePersonCheckFailed = 'SinglePersonCheckFailed';\n public static SinglePersonCheckFailedNoPresenceDetected = 'SinglePersonCheckFailedNoPresenceDetected';\n public static SinglePersonCheckFailedTooManyPeople = 'SinglePersonCheckFailedTooManyPeople';\n public static AreaEvacuationStarted = 'AreaEvacuationStarted';\n public static AreaEvacuationEnded = 'AreaEvacuationEnded';\n public static AreaMusteringStarted = 'AreaMusteringStarted';\n public static AreaMusteringEnded = 'AreaMusteringEnded';\n public static AreaLast = 'AreaLast';\n public static ElevatorWarningUnitOffline = 'ElevatorWarningUnitOffline';\n public static ElevatorSecuredOnSchedule = 'ElevatorSecuredOnSchedule';\n public static ElevatorFreeAccessOnSchedule = 'ElevatorFreeAccessOnSchedule';\n public static AlarmInvestigating = 'AlarmInvestigating';\n public static AlarmForciblyAcked = 'AlarmForciblyAcked';\n public static ThreatLevelActivated = 'ThreatLevelActivated';\n public static ThreatLevelDeactivated = 'ThreatLevelDeactivated';\n public static CardholderNoEntryDetected = 'CardholderNoEntryDetected';\n public static DoorNoEntryDetected = 'DoorNoEntryDetected';\n public static CardholderEntryDetected = 'CardholderEntryDetected';\n public static CardholderEntryAssumed = 'CardholderEntryAssumed';\n public static VisitorAstray = 'VisitorAstray';\n public static MissingTailEscort = 'MissingTailEscort';\n public static DoorEntryDetected = 'DoorEntryDetected';\n public static DoorEntryAssumed = 'DoorEntryAssumed';\n public static DoorSupervisorInAccessRule = 'DoorSupervisorInAccessRule';\n public static DoorSupervisorInUnlockingSchedule = 'DoorSupervisorInUnlockingSchedule';\n public static AreaMaxOccupancyReached = 'AreaMaxOccupancyReached';\n public static AreaMaxOccupancyExceeded = 'AreaMaxOccupancyExceeded';\n public static AreaBelowMaxOccupancy = 'AreaBelowMaxOccupancy';\n public static DuressPinEntered = 'DuressPinEntered';\n public static DoubleBadgeOn = 'DoubleBadgeOn';\n public static DoubleBadgeOff = 'DoubleBadgeOff';\n public static AccessGrantConfirmationRequested = 'AccessGrantConfirmationRequested';\n public static IdentityValidationSucceeded = 'IdentityValidationSucceeded';\n public static IdentityValidationSucceededBiometric = 'IdentityValidationSucceededBiometric';\n public static IdentityValidationSucceededManual = 'IdentityValidationSucceededManual';\n public static IdentityValidationFailed = 'IdentityValidationFailed';\n public static IdentityValidationFailedBiometricMismatch = 'IdentityValidationFailedBiometricMismatch';\n public static IdentityValidationFailedBiometricMissing = 'IdentityValidationFailedBiometricMissing';\n public static IdentityValidationFailedManual = 'IdentityValidationFailedManual';\n public static IdentityValidationFailedTimeout = 'IdentityValidationFailedTimeout';\n public static OfflineSynchronizationStarted = 'OfflineSynchronizationStarted';\n public static OfflineSynchronizationFailure = 'OfflineSynchronizationFailure';\n public static OfflineSynchronizationSuccess = 'OfflineSynchronizationSuccess';\n public static AccessInvalidPin = 'AccessInvalidPin';\n public static AccessValidCardInvalidPin = 'AccessValidCardInvalidPin';\n public static AccessDeniedByAccessRule = 'AccessDeniedByAccessRule';\n public static AccessInsufficientPrivileges = 'AccessInsufficientPrivileges';\n public static AccessAntipassbackViolation = 'AccessAntipassbackViolation';\n public static AccessOutOfSchedule = 'AccessOutOfSchedule';\n public static AccessNoAccessRuleAssigned = 'AccessNoAccessRuleAssigned';\n public static AccessAbsentSupervisor = 'AccessAbsentSupervisor';\n public static AccessEscortRequired = 'AccessEscortRequired';\n public static AccessSecondCardholderRequired = 'AccessSecondCardholderRequired';\n public static AccessEscortNotSupported = 'AccessEscortNotSupported';\n public static CompanionVisitorDenied = 'CompanionVisitorDenied';\n public static Interlock = 'Interlock';\n public static AccessCardAndPINTimeout = 'AccessCardAndPINTimeout';\n public static AccessValidCardInactivePIN = 'AccessValidCardInactivePIN';\n public static AccessDeniedByMaxOccupancy = 'AccessDeniedByMaxOccupancy';\n public static UID = 'UID';\n public static Warning = 'Warning';\n public static UID2 = 'UID2';\n public static UserFirst = 'UserFirst';\n public static ModifiedIncident = 'ModifiedIncident';\n public static UserLast = 'UserLast';\n public static AccessPointFirst = 'AccessPointFirst';\n public static AccessPointLast = 'AccessPointLast';\n public static AlarmFirst = 'AlarmFirst';\n public static AlarmConditionCleared = 'AlarmConditionCleared';\n public static AlarmLast = 'AlarmLast';\n public static DoorFirst = 'DoorFirst';\n public static ScheduleUnlockIgnored = 'ScheduleUnlockIgnored';\n public static DoorLast = 'DoorLast';\n public static AreaFirst = 'AreaFirst';\n public static UnitFirst = 'UnitFirst';\n public static UnitLast = 'UnitLast';\n public static CredentialFirst = 'CredentialFirst';\n public static CredentialAccessDenied = 'CredentialAccessDenied';\n public static CredentialLast = 'CredentialLast';\n public static CardholderFirst = 'CardholderFirst';\n public static CardholderLast = 'CardholderLast';\n public static CardholderDuressPinEntered = 'CardholderDuressPinEntered';\n public static CardholderDoubleBadgeOn = 'CardholderDoubleBadgeOn';\n public static CardholderDoubleBadgeOff = 'CardholderDoubleBadgeOff';\n public static CardholderAccessGrantConfirmationRequested = 'CardholderAccessGrantConfirmationRequested';\n public static CardholderIdentityValidationSucceeded = 'CardholderIdentityValidationSucceeded';\n public static CardholderIdentityValidationSucceededBiometric = 'CardholderIdentityValidationSucceededBiometric';\n public static CardholderIdentityValidationSucceededManual = 'CardholderIdentityValidationSucceededManual';\n public static CardholderIdentityValidationFailed = 'CardholderIdentityValidationFailed';\n public static CardholderIdentityValidationFailedBiometricMismatch = 'CardholderIdentityValidationFailedBiometricMismatch';\n public static CardholderIdentityValidationFailedBiometricMissing = 'CardholderIdentityValidationFailedBiometricMissing';\n public static CardholderIdentityValidationFailedManual = 'CardholderIdentityValidationFailedManual';\n public static CardholderIdentityValidationFailedTimeout = 'CardholderIdentityValidationFailedTimeout';\n public static CardholderSinglePersonCheckFailed = 'CardholderSinglePersonCheckFailed';\n public static CardholderSinglePersonCheckFailedNoPresenceDetected = 'CardholderSinglePersonCheckFailedNoPresenceDetected';\n public static CardholderSinglePersonCheckFailedTooManyPeople = 'CardholderSinglePersonCheckFailedTooManyPeople';\n public static CredentialRequested = 'CredentialRequested';\n public static CredentialRequestedComplete = 'CredentialRequestedComplete';\n public static CredentialRequestedCancelled = 'CredentialRequestedCancelled';\n public static CredentialDoubleBadgeOn = 'CredentialDoubleBadgeOn';\n public static CredentialDoubleBadgeOff = 'CredentialDoubleBadgeOff';\n public static ApplicationFirst = 'ApplicationFirst';\n public static ApplicationLast = 'ApplicationLast';\n public static CameraFirst = 'CameraFirst';\n public static CameraLast = 'CameraLast';\n public static ExternalSystemFirst = 'ExternalSystemFirst';\n public static ExternalSystemAlarmTriggered = 'ExternalSystemAlarmTriggered';\n public static ExternalSystemSyncStarted = 'ExternalSystemSyncStarted';\n public static ExternalSystemSyncCompleted = 'ExternalSystemSyncCompleted';\n public static ExternalSystemSyncError = 'ExternalSystemSyncError';\n public static ExternalSystemSyncPartiallyCompleted = 'ExternalSystemSyncPartiallyCompleted';\n public static ExternalSystemLast = 'ExternalSystemLast';\n public static ZoneFirst = 'ZoneFirst';\n public static ZoneLast = 'ZoneLast';\n public static ElevatorFirst = 'ElevatorFirst';\n public static ElevatorLast = 'ElevatorLast';\n public static MacroFirst = 'MacroFirst';\n public static MacroLast = 'MacroLast';\n public static LprLast = 'LprLast';\n public static LprUpdatePackage = 'LprUpdatePackage';\n public static InvalidatePatrollerMlpiReadsResultEvent = 'InvalidatePatrollerMlpiReadsResultEvent';\n public static MlpiLast = 'MlpiLast';\n public static IntrusionAreaFirst = 'IntrusionAreaFirst';\n public static IntrusionAreaLast = 'IntrusionAreaLast';\n public static IntrusionUnitInputFirst = 'IntrusionUnitInputFirst';\n public static IntrusionUnitInputTrouble = 'IntrusionUnitInputTrouble';\n public static IntrusionUnitInputBypassActivated = 'IntrusionUnitInputBypassActivated';\n public static IntrusionUnitInputBypassDeactivated = 'IntrusionUnitInputBypassDeactivated';\n public static IntrusionUnitInputLast = 'IntrusionUnitInputLast';\n public static ArchiverEventsFirst = 'ArchiverEventsFirst';\n public static ArchiverCanWrite = 'ArchiverCanWrite';\n public static ArchiverDatabaseLost = 'ArchiverDatabaseLost';\n public static ArchiverDatabaseRecovered = 'ArchiverDatabaseRecovered';\n public static ArchiverDiskChanged = 'ArchiverDiskChanged';\n public static ArchiverDiskFull = 'ArchiverDiskFull';\n public static ArchiverDiskLoad = 'ArchiverDiskLoad';\n public static ArchiverInvalidCustomEncryption = 'ArchiverInvalidCustomEncryption';\n public static ArchiverNoWrite = 'ArchiverNoWrite';\n public static ArchiverNoWriteOnSpecifiedDisk = 'ArchiverNoWriteOnSpecifiedDisk';\n public static ArchiverArchivingStopped = 'ArchiverArchivingStopped';\n public static ArchiverBackupStarted = 'ArchiverBackupStarted';\n public static ArchiverBackupSucceeded = 'ArchiverBackupSucceeded';\n public static ArchiverBackupFailed = 'ArchiverBackupFailed';\n public static ArchiverProtectionThresholdExceeded = 'ArchiverProtectionThresholdExceeded';\n public static ArchiverVrmConnectionAttempt = 'ArchiverVrmConnectionAttempt';\n public static ArchiverVrmConnectionFailure = 'ArchiverVrmConnectionFailure';\n public static ArchiverPathTooLong = 'ArchiverPathTooLong';\n public static ArchiverFileProtectionSuccess = 'ArchiverFileProtectionSuccess';\n public static ArchiverFileProtectionFailure = 'ArchiverFileProtectionFailure';\n public static ArchiverDatabaseFlooding = 'ArchiverDatabaseFlooding';\n public static ArchiverEventsLast = 'ArchiverEventsLast';\n public static VideoAnalyticsFirst = 'VideoAnalyticsFirst';\n public static VideoAnalyticsTemperatureDetectionOn = 'VideoAnalyticsTemperatureDetectionOn';\n public static VideoAnalyticsTemperatureDetectionOff = 'VideoAnalyticsTemperatureDetectionOff';\n public static VideoAnalyticsTemperatureDetectionAlarm = 'VideoAnalyticsTemperatureDetectionAlarm';\n public static VideoAnalyticsAdaptiveMotion = 'VideoAnalyticsAdaptiveMotion';\n public static VideoAnalyticsObjectCountReached = 'VideoAnalyticsObjectCountReached';\n public static VideoAnalyticsLast = 'VideoAnalyticsLast';\n public static AssetFirst = 'AssetFirst';\n public static AssetLast = 'AssetLast';\n public static HealthMonitoringFirst = 'HealthMonitoringFirst';\n public static HealthMonitoringLast = 'HealthMonitoringLast';\n public static IntrusionUnitFirst = 'IntrusionUnitFirst';\n public static IntrusionUnitLast = 'IntrusionUnitLast';\n public static ThreatLevelFirst = 'ThreatLevelFirst';\n public static ThreatLevelLast = 'ThreatLevelLast';\n public static AutoActionExecute = 'AutoActionExecute';\n public static DeviceFirst = 'DeviceFirst';\n public static InputStateActive = 'InputStateActive';\n public static InputStateNormal = 'InputStateNormal';\n public static InputStateTrouble = 'InputStateTrouble';\n public static InputAlarmActive = 'InputAlarmActive';\n public static InputAlarmRestored = 'InputAlarmRestored';\n public static InputBypassed = 'InputBypassed';\n public static InputBypassRestored = 'InputBypassRestored';\n public static DeviceLast = 'DeviceLast';\n public static InputStateChanged = 'InputStateChanged';\n public static ParkingZoneFirst = 'ParkingZoneFirst';\n public static ParkingSessionStartedByVehicleEntered = 'ParkingSessionStartedByVehicleEntered';\n public static ParkingSessionStartedByUnknownVehicleExited = 'ParkingSessionStartedByUnknownVehicleExited';\n public static ParkingSessionConvenienceTimeStarted = 'ParkingSessionConvenienceTimeStarted';\n public static ParkingSessionValidatingPaidTimeByPaidTimeExpired = 'ParkingSessionValidatingPaidTimeByPaidTimeExpired';\n public static ParkingSessionValidatingPaidTimeByConvenienceTimeExpired = 'ParkingSessionValidatingPaidTimeByConvenienceTimeExpired';\n public static ParkingsessionPaidTimeStartedByPaidTimeValid = 'ParkingsessionPaidTimeStartedByPaidTimeValid';\n public static ParkingSessionPaidTimeStartedByValidationError = 'ParkingSessionPaidTimeStartedByValidationError';\n public static ParkingSessionGracePeriodStartedConvenienceTimeExpired = 'ParkingSessionGracePeriodStartedConvenienceTimeExpired';\n public static ParkingSessionGracePeriodStartedByPaidTimeInvalid = 'ParkingSessionGracePeriodStartedByPaidTimeInvalid';\n public static ParkingSessionViolationDetectedByConvenienceTimeExpired = 'ParkingSessionViolationDetectedByConvenienceTimeExpired';\n public static ParkingSessionViolationDetectedByGracePeriodExpired = 'ParkingSessionViolationDetectedByGracePeriodExpired';\n public static ParkingSessionViolationDetectedByPaidTimeInvalid = 'ParkingSessionViolationDetectedByPaidTimeInvalid';\n public static ParkingSessionViolationEnforced = 'ParkingSessionViolationEnforced';\n public static ParkingSessionCompletedByInventoryReset = 'ParkingSessionCompletedByInventoryReset';\n public static ParkingSessionCompletedByMaxSessionTimeExceeded = 'ParkingSessionCompletedByMaxSessionTimeExceeded';\n public static ParkingSessionCompletedByVehicledExited = 'ParkingSessionCompletedByVehicledExited';\n public static ParkingSessionCompletedByUnknownVehicledExited = 'ParkingSessionCompletedByUnknownVehicledExited';\n public static ParkingZoneInventoryReset = 'ParkingZoneInventoryReset';\n public static ParkingZoneMaximumCapacityReached = 'ParkingZoneMaximumCapacityReached';\n public static ParkingSessionStarted = 'ParkingSessionStarted';\n public static ParkingSessionValidatingPaidTime = 'ParkingSessionValidatingPaidTime';\n public static ParkingSessionPaidTimeStarted = 'ParkingSessionPaidTimeStarted';\n public static ParkingSessionGracePeriodStarted = 'ParkingSessionGracePeriodStarted';\n public static ParkingSessionViolationDetected = 'ParkingSessionViolationDetected';\n public static ParkingSessionCompleted = 'ParkingSessionCompleted';\n public static ParkingZoneLast = 'ParkingZoneLast';\n public static AlarmContextChanged = 'AlarmContextChanged';\n public static AudioAnalyticsFirst = 'AudioAnalyticsFirst';\n public static AudioAnalyticsCustom = 'AudioAnalyticsCustom';\n public static AudioAnalyticsLast = 'AudioAnalyticsLast';\n public static ActiveAlarms = 'ActiveAlarms';\n public static ActiveAlarmsRecovered = 'ActiveAlarmsRecovered';\n public static AgentStarted = 'AgentStarted';\n public static AgentStopped = 'AgentStopped';\n public static AgentStoppedUnexpectedly = 'AgentStoppedUnexpectedly';\n public static AllArchivingRestarted = 'AllArchivingRestarted';\n public static AllArchivingStopped = 'AllArchivingStopped';\n public static ApplicationConnect = 'ApplicationConnect';\n public static ApplicationDisconnectedByUser = 'ApplicationDisconnectedByUser';\n public static ApplicationDisconnectedUnexpectedly = 'ApplicationDisconnectedUnexpectedly';\n public static ApplicationStarted = 'ApplicationStarted';\n public static ApplicationStoppedByUser = 'ApplicationStoppedByUser';\n public static ApplicationStoppedUnexpectedl = 'ApplicationStoppedUnexpectedl';\n public static ArchiveBackupFailure = 'ArchiveBackupFailure';\n public static ArchiveBackupSuccess = 'ArchiveBackupSuccess';\n public static ArchiveConsolidationFailure = 'ArchiveConsolidationFailure';\n public static ArchiveConsolidationPartialFailure = 'ArchiveConsolidationPartialFailure';\n public static ArchiveConsolidationSuccess = 'ArchiveConsolidationSuccess';\n public static ArchiverTricklingFailure = 'ArchiverTricklingFailure';\n public static ArchiverTricklingPartialFailure = 'ArchiverTricklingPartialFailure';\n public static ArchiverTricklingSuccess = 'ArchiverTricklingSuccess';\n public static ArchiverTricklingRetry = 'ArchiverTricklingRetry';\n public static ArchiverTricklingCancel = 'ArchiverTricklingCancel';\n public static CameraConnectionEstablished = 'CameraConnectionEstablished';\n public static CameraConnectionStoppedByUser = 'CameraConnectionStoppedByUser';\n public static CameraConnectionStoppedUnexpectedly = 'CameraConnectionStoppedUnexpectedly';\n public static CameraRecordingProblem = 'CameraRecordingProblem';\n public static CameraRecordingProblemRecovered = 'CameraRecordingProblemRecovered';\n public static ConnectionFailed = 'ConnectionFailed';\n public static ConnectionRestored = 'ConnectionRestored';\n public static DatabaseAutomaticBackupFailed = 'DatabaseAutomaticBackupFailed';\n public static DatabaseAutomaticBackupRecovered = 'DatabaseAutomaticBackupRecovered';\n public static DatabaseFailoverMasterLost = 'DatabaseFailoverMasterLost';\n public static DatabaseFailoverMasterRecovered = 'DatabaseFailoverMasterRecovered';\n public static DatabaseLost = 'DatabaseLost';\n public static DatabaseRecovered = 'DatabaseRecovered';\n public static DatabaseRestoreFailure = 'DatabaseRestoreFailure';\n public static DatabaseRestoreSuccess = 'DatabaseRestoreSuccess';\n public static DirectoryStarted = 'DirectoryStarted';\n public static DirectoryStoppedByUser = 'DirectoryStoppedByUser';\n public static DirectoryStoppedUnexpectedly = 'DirectoryStoppedUnexpectedly';\n public static HighCPUUsage = 'HighCPUUsage';\n public static HighCPUUsageRecovered = 'HighCPUUsageRecovered';\n public static HighMemoryUsage = 'HighMemoryUsage';\n public static HighMemoryUsageRecovered = 'HighMemoryUsageRecovered';\n public static LiveHealthMonitoringRecovered = 'LiveHealthMonitoringRecovered';\n public static LiveHealthMonitoringStopped = 'LiveHealthMonitoringStopped';\n public static LowArchiveSpace = 'LowArchiveSpace';\n public static LowArchiveSpaceRecovered = 'LowArchiveSpaceRecovered';\n public static LowDatabaseSpace = 'LowDatabaseSpace';\n public static LowDatabaseSpaceRecovered = 'LowDatabaseSpaceRecovered';\n public static OffloadFailed = 'OffloadFailed';\n public static OffloadRecovered = 'OffloadRecovered';\n public static PatrollerOffline = 'PatrollerOffline';\n public static PatrollerOnline = 'PatrollerOnline';\n public static POSDatabaseLost = 'POSDatabaseLost';\n public static POSDatabaseRecovered = 'POSDatabaseRecovered';\n public static RoleStarted = 'RoleStarted';\n public static RoleStoppedByUser = 'RoleStoppedByUser';\n public static RoleStoppedUnexpectedly = 'RoleStoppedUnexpectedly';\n public static RTPPacketLoss = 'RTPPacketLoss';\n public static RTPPacketLossRecovered = 'RTPPacketLossRecovered';\n public static ServiceStarted = 'ServiceStarted';\n public static ServiceStoppedByUser = 'ServiceStoppedByUser';\n public static ServiceStoppedUnexpectedly = 'ServiceStoppedUnexpectedly';\n public static SynchronizationFailed = 'SynchronizationFailed';\n public static SynchronizationRecovered = 'SynchronizationRecovered';\n public static TransmissionLost = 'TransmissionLost';\n public static TransmissionRecovered = 'TransmissionRecovered';\n public static UnauthorizedDisk = 'UnauthorizedDisk';\n public static UnauthorizedDiskRecovered = 'UnauthorizedDiskRecovered';\n public static UnitConnectionFailed = 'UnitConnectionFailed';\n public static UnitConnectionRestored = 'UnitConnectionRestored';\n public static UnitConnectionStopped = 'UnitConnectionStopped';\n public static UnitTimeDrift = 'UnitTimeDrift';\n public static UnitTimeDriftRecovered = 'UnitTimeDriftRecovered';\n public static UnitTricklingFailure = 'UnitTricklingFailure';\n public static UnitTricklingPartialFailure = 'UnitTricklingPartialFailure';\n public static UnitTricklingSuccess = 'UnitTricklingSuccess';\n public static VideoSignalLoss = 'VideoSignalLoss';\n public static VideoSignalRecovered = 'VideoSignalRecovered';\n public static EdgeStorageRecovered = 'EdgeStorageRecovered';\n public static EdgeStorageFailure = 'EdgeStorageFailure';\n public static EdgeStorageRecordingRecovered = 'EdgeStorageRecordingRecovered';\n public static EdgeStorageRecordingFailure = 'EdgeStorageRecordingFailure';\n public static CertificateValid = 'CertificateValid';\n public static CertificateWarning = 'CertificateWarning';\n public static CertificateError = 'CertificateError';\n public static ValidDriverPack = 'ValidDriverPack';\n public static InvalidDriverPack = 'InvalidDriverPack';\n public static ArchivingNotMonitored = 'ArchivingNotMonitored';\n public static ApplicationConnectionNotMonitored = 'ApplicationConnectionNotMonitored';\n public static ApplicationNotMonitored = 'ApplicationNotMonitored';\n public static ConnectionNotMonitored = 'ConnectionNotMonitored';\n public static UnitConnectionNotMonitored = 'UnitConnectionNotMonitored';\n public static DatabaseAutomaticBackupNotMonitored = 'DatabaseAutomaticBackupNotMonitored';\n public static DatabaseNotMonitored = 'DatabaseNotMonitored';\n public static HighCPUUsageNotMonitored = 'HighCPUUsageNotMonitored';\n public static HighMemoryUsageNotMonitored = 'HighMemoryUsageNotMonitored';\n public static LowDatabaseSpaceNotMonitored = 'LowDatabaseSpaceNotMonitored';\n public static OffloadNotMonitored = 'OffloadNotMonitored';\n public static PatrollerNotMonitored = 'PatrollerNotMonitored';\n public static POSDatabaseNotMonitored = 'POSDatabaseNotMonitored';\n public static RoleNotMonitored = 'RoleNotMonitored';\n public static RTPPacketNotMonitored = 'RTPPacketNotMonitored';\n public static ServiceNotMonitored = 'ServiceNotMonitored';\n public static SynchronizationNotMonitored = 'SynchronizationNotMonitored';\n public static VideoSignalNotMonitored = 'VideoSignalNotMonitored';\n public static UnauthorizedDiskNotMonitored = 'UnauthorizedDiskNotMonitored';\n public static ActiveAlarmsNotMonitored = 'ActiveAlarmsNotMonitored';\n public static DirectoryNotMonitored = 'DirectoryNotMonitored';\n public static LowArchiveSpaceNotMonitored = 'LowArchiveSpaceNotMonitored';\n public static LiveHealthMonitoringNotMonitored = 'LiveHealthMonitoringNotMonitored';\n public static DatabaseFailoverMasterNotMonitored = 'DatabaseFailoverMasterNotMonitored';\n public static DatabaseRestoreNotMonitored = 'DatabaseRestoreNotMonitored';\n public static UnitTricklingNotMonitored = 'UnitTricklingNotMonitored';\n public static ArchiveBackupNotMonitored = 'ArchiveBackupNotMonitored';\n public static AgentNotMonitored = 'AgentNotMonitored';\n public static ArchiveConsolidationNotMonitored = 'ArchiveConsolidationNotMonitored';\n public static CameraRecordingNotMonitored = 'CameraRecordingNotMonitored';\n public static CameraConnectionNotMonitored = 'CameraConnectionNotMonitored';\n public static UnitTimeDriftNotMonitored = 'UnitTimeDriftNotMonitored';\n public static TransmissionNotMonitored = 'TransmissionNotMonitored';\n public static EdgeStorageNotMonitored = 'EdgeStorageNotMonitored';\n public static EdgeStorageRecordingNotMonitored = 'EdgeStorageRecordingNotMonitored';\n public static ArchiverTricklingNotMonitored = 'ArchiverTricklingNotMonitored';\n public static CertificateNotMonitored = 'CertificateNotMonitored';\n public static DriverPackNotMonitored = 'DriverPackNotMonitored';\n public static ScTokenValid = 'ScTokenValid';\n public static ScTokenError = 'ScTokenError';\n public static ScTokenNotMonitored = 'ScTokenNotMonitored';\n public static EntityOnline = 'EntityOnline';\n public static EntityOffline = 'EntityOffline';\n public static EntityNotMonitored = 'EntityNotMonitored';\n public static OptimizedDirectoryStartupSucceeded = 'OptimizedDirectoryStartupSucceeded';\n public static OptimizedDirectoryStartupFailed = 'OptimizedDirectoryStartupFailed';\n public static OptimizedDirectoryStartupNotMonitored = 'OptimizedDirectoryStartupNotMonitored';\n public static CommunicationsInviteSent = 'CommunicationsInviteSent';\n public static CommunicationsCallFirst = 'CommunicationsCallFirst';\n public static CommunicationsCallRinging = 'CommunicationsCallRinging';\n public static CommunicationsCallDeclined = 'CommunicationsCallDeclined';\n public static CommunicationsCallAnswered = 'CommunicationsCallAnswered';\n public static CommunicationsCallRejected = 'CommunicationsCallRejected';\n public static CommunicationsCallTimeout = 'CommunicationsCallTimeout';\n public static CommunicationsCallEnded = 'CommunicationsCallEnded';\n public static CommunicationsCallStarted = 'CommunicationsCallStarted';\n public static CommunicationsCallLast = 'CommunicationsCallLast';\n public static CommunicationsContactFirst = 'CommunicationsContactFirst';\n public static CommunicationsContactRegistered = 'CommunicationsContactRegistered';\n public static CommunicationsContactUnregistered = 'CommunicationsContactUnregistered';\n public static CommunicationsContactLast = 'CommunicationsContactLast';\n public static CommunicationsTrunkFirst = 'CommunicationsTrunkFirst';\n public static CommunicationsTrunkRegistered = 'CommunicationsTrunkRegistered';\n public static CommunicationsTrunkUnregistered = 'CommunicationsTrunkUnregistered';\n public static CommunicationsTrunkLast = 'CommunicationsTrunkLast';\n public static CorrelationFirst = 'CorrelationFirst';\n public static CorrelationEvent = 'CorrelationEvent';\n public static CorrelationRuleHitEvent = 'CorrelationRuleHitEvent';\n public static CorrelationLast = 'CorrelationLast';\n public static SecretKeyEvent = 'SecretKeyEvent';\n\n public static readonly values = [\n EventTypes.None,\n EventTypes.Invalidate,\n EventTypes.ManualAction,\n EventTypes.AlarmTriggered,\n EventTypes.AlarmAcknowledged,\n EventTypes.ApplicationConnected,\n EventTypes.ApplicationDisconnected,\n EventTypes.ServerLost,\n EventTypes.CameraLiveBookmarkAdded,\n EventTypes.CameraPlaybackBookmarkAdded,\n EventTypes.CameraMotionOn,\n EventTypes.CameraMotionOff,\n EventTypes.CardholderAccessGranted,\n EventTypes.CameraAbnormalMotion,\n EventTypes.CameraNominalMotion,\n EventTypes.CardholderAccessRefused,\n EventTypes.CardholderWalkthrough,\n EventTypes.CardholderInactive,\n EventTypes.CardHolderCredentialExpired,\n EventTypes.CardHolderCredentialInactive,\n EventTypes.CardHolderCredentialLost,\n EventTypes.CardHolderCredentialStolen,\n EventTypes.CardholderAntipassback,\n EventTypes.CustomEvent,\n EventTypes.UnitConnected,\n EventTypes.UnitDisconnected,\n EventTypes.InterfaceOnline,\n EventTypes.InterfaceOffline,\n EventTypes.AccessControlUnitWarningActivated,\n EventTypes.AccessControlUnitWarningDeactivated,\n EventTypes.FirmwareUpgradeScheduled,\n EventTypes.FirmwareUpgradeCancelled,\n EventTypes.InterfaceFirmwareUpgradeStarted,\n EventTypes.InterfaceFirmwareUpgradeSuccess,\n EventTypes.InterfaceFirmwareUpgradeFailure,\n EventTypes.InterfaceFirmwareUpgradeScheduled,\n EventTypes.InterfaceFirmwareUpgradeCancelled,\n EventTypes.InterfaceFirmwareUpgradeTransferred,\n EventTypes.UnitACFail,\n EventTypes.UnitBatFail,\n EventTypes.UnitInvalidConfiguration,\n EventTypes.UnitTemperatureAlarm,\n EventTypes.UnitTimeOutOfSync,\n EventTypes.UnitTimeOutOfSyncRecovered,\n EventTypes.UnitDiskActionError,\n EventTypes.UnitDiskFormatted,\n EventTypes.UnitDiskLocked,\n EventTypes.UnitDiskMounted,\n EventTypes.UnitDiskUnlocked,\n EventTypes.UnitDiskUnmounted,\n EventTypes.ArchiveTransferSequenceImported,\n EventTypes.UserLoggedOn,\n EventTypes.UserLoggedOff,\n EventTypes.UserLogonFailed,\n EventTypes.FirmwareUpgradeStarted,\n EventTypes.FirmwareUpgradeSuccess,\n EventTypes.FirmwareUpgradeFailure,\n EventTypes.DoorRexOn,\n EventTypes.DoorRexOff,\n EventTypes.DoorOpenedForTooLong,\n EventTypes.DoorPullStationActivated,\n EventTypes.DoorPullStationNormal,\n EventTypes.DoorOpen,\n EventTypes.DoorClose,\n EventTypes.DoorForcedOpen,\n EventTypes.DoorLock,\n EventTypes.DoorUnlock,\n EventTypes.DoorOpenWhileLockSecure,\n EventTypes.AccessUnknownCredential,\n EventTypes.AccessUnassignedCredential,\n EventTypes.AccessGranted,\n EventTypes.AccessRefused,\n EventTypes.AccessExpiredCredential,\n EventTypes.AccessStolenCredential,\n EventTypes.AccessLostCredential,\n EventTypes.AccessInactiveCredential,\n EventTypes.AccessInactivePerson,\n EventTypes.DoorTamper,\n EventTypes.InputTroubleShort,\n EventTypes.InputTroubleOpen,\n EventTypes.EmergencyDoorRex,\n EventTypes.EmergencyDoorUnlockPostponed,\n EventTypes.EmergencyDoorUnlocked,\n EventTypes.EmergencyDoorUnlockedOperatorUnlock,\n EventTypes.EmergencyDoorUnlockedReleaseDelayTimeExpired,\n EventTypes.EmergencyDoorUnlockedExtensionGuardLockingExpired,\n EventTypes.EmergencyDoorUnlockedMaximumLockingTimeExpired,\n EventTypes.EmergencyDoorUnlockedHostConnectionTimeout,\n EventTypes.EmergencyDoorReset,\n EventTypes.EmergencyDoorResetRemoteOperator,\n EventTypes.EmergencyDoorResetPhysicalButton,\n EventTypes.EmergencyDoorResetAuto,\n EventTypes.DoorTestStarted,\n EventTypes.DoorTestSucceeded,\n EventTypes.DoorTestFailed,\n EventTypes.DoorTestFailedAborted,\n EventTypes.DoorTestFailedReaderShunted,\n EventTypes.DoorTestFailedDoorNotSecured,\n EventTypes.DoorTestFailedError,\n EventTypes.DoorTestFailedUnlockFailed,\n EventTypes.DoorTestFailedRelockFailed,\n EventTypes.AreaFirstManIn,\n EventTypes.AreaLastManOut,\n EventTypes.AreaAntipassbackDetected,\n EventTypes.AreaAntipassbackForgiven,\n EventTypes.PeopleCountReset,\n EventTypes.AreaCardholderRemoved,\n EventTypes.AreaCardholderAdded,\n EventTypes.CredentialUnassigned,\n EventTypes.CredentialExpired,\n EventTypes.CredentialStolen,\n EventTypes.CredentialLost,\n EventTypes.CredentialInactive,\n EventTypes.CredentialHasExpired,\n EventTypes.CredentialIsExpiring,\n EventTypes.ZoneGlassBreak,\n EventTypes.ZoneWindowOpened,\n EventTypes.ZoneWindowClosed,\n EventTypes.ZoneDeadBoltLocked,\n EventTypes.ZoneDeadBoltUnlocked,\n EventTypes.ZoneKnobInplace,\n EventTypes.ZoneKnobRotated,\n EventTypes.ZoneLockSecured,\n EventTypes.ZoneLockReleased,\n EventTypes.MacroStarted,\n EventTypes.MacroCompleted,\n EventTypes.MacroAborted,\n EventTypes.AlarmAcknowledgedAlternate,\n EventTypes.LprFirst,\n EventTypes.LprRead,\n EventTypes.LprHit,\n EventTypes.ProcessMlpiResultsResultEvent,\n EventTypes.LprOffloadSucceeded,\n EventTypes.LprOffloadFailed,\n EventTypes.LprNoMatch,\n EventTypes.LprHotlistChanged,\n EventTypes.LprUpdateInstalled,\n EventTypes.LprUpdateUninstalled,\n EventTypes.LprUpdatePublished,\n EventTypes.LprUpdateError,\n EventTypes.LprUpdateInstalling,\n EventTypes.LprUpdateUninstalling,\n EventTypes.IntrusionAreaDuress,\n EventTypes.IntrusionAreaEntryDelay,\n EventTypes.IntrusionAreaAlarmActivated,\n EventTypes.IntrusionAreaArming,\n EventTypes.IntrusionAreaArmingPostponed,\n EventTypes.IntrusionAreaMasterArmed,\n EventTypes.IntrusionAreaPerimeterArmed,\n EventTypes.IntrusionAreaDisarmed,\n EventTypes.IntrusionAreaInputTrouble,\n EventTypes.IntrusionAreaInputBypassActivated,\n EventTypes.IntrusionAreaInputBypassDeactivated,\n EventTypes.IntrusionAreaForcedArming,\n EventTypes.IntrusionAreaCanceledAlarm,\n EventTypes.IntrusionAreaMasterArmRequest,\n EventTypes.IntrusionAreaPerimeterArmRequest,\n EventTypes.IntrusionAreaDisarmRequest,\n EventTypes.IntrusionAreaArmingPostponedRequest,\n EventTypes.IntrusionAreaCanceledAlarmRequest,\n EventTypes.IntrusionAreaAlarmSilenced,\n EventTypes.IntrusionUnitTamper,\n EventTypes.ZoneArmed,\n EventTypes.ZoneDisarmed,\n EventTypes.ZoneMaintenanceOn,\n EventTypes.ZoneMaintenanceOff,\n EventTypes.ZoneWarningUnitOffline,\n EventTypes.DoorMaintenanceOff,\n EventTypes.DoorMaintenanceOn,\n EventTypes.DoorScheduledLock,\n EventTypes.DoorScheduledUnlock,\n EventTypes.DoorWarningUnitOffline,\n EventTypes.DoorWarningInterfaceAcFail,\n EventTypes.DoorWarningInterfaceAcFailRestored,\n EventTypes.DoorWarningInterfaceBatteryFail,\n EventTypes.DoorWarningInterfaceBatteryFailRestored,\n EventTypes.DoorWarningInterfaceTamperFail,\n EventTypes.DoorWarningInterfaceTamperFailRestored,\n EventTypes.DoorManuallyUnlocked,\n EventTypes.DoorOnline,\n EventTypes.DoorUnsecured,\n EventTypes.DoorSecured,\n EventTypes.VideoAnalyticsAudioAlarm,\n EventTypes.VideoAnalyticsLicensePlateInSight,\n EventTypes.VideoAnalyticsLicensePlateOutofSight,\n EventTypes.VideoAnalyticsLicensePlateReading,\n EventTypes.VideoAnalyticsObjectConditionChange,\n EventTypes.VideoAnalyticsObjectCrossedLine,\n EventTypes.VideoAnalyticsObjectEntered,\n EventTypes.VideoAnalyticsObjectExited,\n EventTypes.VideoAnalyticsObjectFall,\n EventTypes.VideoAnalyticsObjectFollowingRoute,\n EventTypes.VideoAnalyticsObjectInField,\n EventTypes.VideoAnalyticsObjectLeft,\n EventTypes.VideoAnalyticsObjectLoitering,\n EventTypes.VideoAnalyticsObjectMerged,\n EventTypes.VideoAnalyticsObjectRemoved,\n EventTypes.VideoAnalyticsObjectRun,\n EventTypes.VideoAnalyticsObjectSlide,\n EventTypes.VideoAnalyticsObjectSplit,\n EventTypes.VideoAnalyticsObjectStopped,\n EventTypes.VideoAnalyticsTailgating,\n EventTypes.VideoAnalyticsTampering,\n EventTypes.VideoAnalyticsFaceDetected,\n EventTypes.VideoAnalyticsUndefined,\n EventTypes.VideoAnalyticsDirectionAlarm,\n EventTypes.VideoAnalyticsTamperingOff,\n EventTypes.VideoAnalyticsCrowdDetected,\n EventTypes.VideoAnalyticsFaceRecognized,\n EventTypes.VideoAnalyticsObjectDetected,\n EventTypes.VideoAnalyticsHeatMapChanged,\n EventTypes.VideoAnalyticsObjectCountChanged,\n EventTypes.VideoAnalyticsObjectVelocityChanged,\n EventTypes.VideoAnalyticsObjectDirectionChanged,\n EventTypes.VideoAnalyticsPeopleCounting,\n EventTypes.VideoAnalyticsPeopleCountingAlarm,\n EventTypes.VideoAnalyticsCrowdSize,\n EventTypes.FloorAccess,\n EventTypes.AssetMoved,\n EventTypes.AssetLowBattery,\n EventTypes.AssetOffline,\n EventTypes.AssetOnline,\n EventTypes.ArchivingStartedAutomatically,\n EventTypes.ArchivingStoppedAutomatically,\n EventTypes.ArchivingStartedManually,\n EventTypes.ArchivingStoppedManually,\n EventTypes.ArchivingStartedOnMotionEvent,\n EventTypes.ArchivingStoppedOnMotionEvent,\n EventTypes.ArchivingStartedByExternalSource,\n EventTypes.ArchivingStoppedByExternalSource,\n EventTypes.ArchivingStartedByAlarm,\n EventTypes.ArchivingStoppedByAlarm,\n EventTypes.CameraStartLiveStreaming,\n EventTypes.CameraStopLiveStreaming,\n EventTypes.ArchiveFileDeleted,\n EventTypes.CameraSignalLost,\n EventTypes.CameraSignalRecovered,\n EventTypes.ArchivingQueueFull,\n EventTypes.CameraNotArchiving,\n EventTypes.CameraTransmissionLost,\n EventTypes.CameraRtpPacketsLost,\n EventTypes.CameraMultipleSourceDetected,\n EventTypes.CameraStartBlock,\n EventTypes.CameraStopBlock,\n EventTypes.CameraTransmissionRecovered,\n EventTypes.CameraEdgeRecordingCommandTimeout,\n EventTypes.CameraEdgestorageFailure,\n EventTypes.CameraMotion,\n EventTypes.CameraEdgestorageEnabled,\n EventTypes.CameraRtpPacketLostRecovery,\n EventTypes.PtzActivated,\n EventTypes.PtzStopped,\n EventTypes.PtzZoomByUserStarted,\n EventTypes.PtzZoomByUserStopped,\n EventTypes.PtzLocked,\n EventTypes.HealthMonitoringEvent,\n EventTypes.AreaAntipassbackDisabledMixedMode,\n EventTypes.AreaAntipassbackDisabledUnitOffline,\n EventTypes.AreaPeopleCountDisabledUnitOffline,\n EventTypes.AreaAntipassbackDisabledPerimeterOnElevator,\n EventTypes.AreaSasOverrideOn,\n EventTypes.AreaSasOverrideOff,\n EventTypes.AreaSasLockdownOn,\n EventTypes.AreaSasLockdownOff,\n EventTypes.AreaSasMultipleUnitWarning,\n EventTypes.AreaSasUnsupportedWarning,\n EventTypes.AreaSasMaintenanceModeWarning,\n EventTypes.AreaSasFreeAccessWarning,\n EventTypes.AreaSasAntipassbackWarning,\n EventTypes.AreaSasFloorWarning,\n EventTypes.AreaAntipassbackDisabledInvalidSettings,\n EventTypes.AreaSasDoorWithNoSensorConfigured,\n EventTypes.AreaSasOnlyOnePerimeterFloor,\n EventTypes.SinglePersonCheckFailed,\n EventTypes.SinglePersonCheckFailedNoPresenceDetected,\n EventTypes.SinglePersonCheckFailedTooManyPeople,\n EventTypes.AreaEvacuationStarted,\n EventTypes.AreaEvacuationEnded,\n EventTypes.AreaMusteringStarted,\n EventTypes.AreaMusteringEnded,\n EventTypes.AreaLast,\n EventTypes.ElevatorWarningUnitOffline,\n EventTypes.ElevatorSecuredOnSchedule,\n EventTypes.ElevatorFreeAccessOnSchedule,\n EventTypes.AlarmInvestigating,\n EventTypes.AlarmForciblyAcked,\n EventTypes.ThreatLevelActivated,\n EventTypes.ThreatLevelDeactivated,\n EventTypes.CardholderNoEntryDetected,\n EventTypes.DoorNoEntryDetected,\n EventTypes.CardholderEntryDetected,\n EventTypes.CardholderEntryAssumed,\n EventTypes.VisitorAstray,\n EventTypes.MissingTailEscort,\n EventTypes.DoorEntryDetected,\n EventTypes.DoorEntryAssumed,\n EventTypes.DoorSupervisorInAccessRule,\n EventTypes.DoorSupervisorInUnlockingSchedule,\n EventTypes.AreaMaxOccupancyReached,\n EventTypes.AreaMaxOccupancyExceeded,\n EventTypes.AreaBelowMaxOccupancy,\n EventTypes.DuressPinEntered,\n EventTypes.DoubleBadgeOn,\n EventTypes.DoubleBadgeOff,\n EventTypes.AccessGrantConfirmationRequested,\n EventTypes.IdentityValidationSucceeded,\n EventTypes.IdentityValidationSucceededBiometric,\n EventTypes.IdentityValidationSucceededManual,\n EventTypes.IdentityValidationFailed,\n EventTypes.IdentityValidationFailedBiometricMismatch,\n EventTypes.IdentityValidationFailedBiometricMissing,\n EventTypes.IdentityValidationFailedManual,\n EventTypes.IdentityValidationFailedTimeout,\n EventTypes.OfflineSynchronizationStarted,\n EventTypes.OfflineSynchronizationFailure,\n EventTypes.OfflineSynchronizationSuccess,\n EventTypes.AccessInvalidPin,\n EventTypes.AccessValidCardInvalidPin,\n EventTypes.AccessDeniedByAccessRule,\n EventTypes.AccessInsufficientPrivileges,\n EventTypes.AccessAntipassbackViolation,\n EventTypes.AccessOutOfSchedule,\n EventTypes.AccessNoAccessRuleAssigned,\n EventTypes.AccessAbsentSupervisor,\n EventTypes.AccessEscortRequired,\n EventTypes.AccessSecondCardholderRequired,\n EventTypes.AccessEscortNotSupported,\n EventTypes.CompanionVisitorDenied,\n EventTypes.Interlock,\n EventTypes.AccessCardAndPINTimeout,\n EventTypes.AccessValidCardInactivePIN,\n EventTypes.AccessDeniedByMaxOccupancy,\n EventTypes.UID,\n EventTypes.Warning,\n EventTypes.UID2,\n EventTypes.UserFirst,\n EventTypes.ModifiedIncident,\n EventTypes.UserLast,\n EventTypes.AccessPointFirst,\n EventTypes.AccessPointLast,\n EventTypes.AlarmFirst,\n EventTypes.AlarmConditionCleared,\n EventTypes.AlarmLast,\n EventTypes.DoorFirst,\n EventTypes.ScheduleUnlockIgnored,\n EventTypes.DoorLast,\n EventTypes.AreaFirst,\n EventTypes.UnitFirst,\n EventTypes.UnitLast,\n EventTypes.CredentialFirst,\n EventTypes.CredentialAccessDenied,\n EventTypes.CredentialLast,\n EventTypes.CardholderFirst,\n EventTypes.CardholderLast,\n EventTypes.CardholderDuressPinEntered,\n EventTypes.CardholderDoubleBadgeOn,\n EventTypes.CardholderDoubleBadgeOff,\n EventTypes.CardholderAccessGrantConfirmationRequested,\n EventTypes.CardholderIdentityValidationSucceeded,\n EventTypes.CardholderIdentityValidationSucceededBiometric,\n EventTypes.CardholderIdentityValidationSucceededManual,\n EventTypes.CardholderIdentityValidationFailed,\n EventTypes.CardholderIdentityValidationFailedBiometricMismatch,\n EventTypes.CardholderIdentityValidationFailedBiometricMissing,\n EventTypes.CardholderIdentityValidationFailedManual,\n EventTypes.CardholderIdentityValidationFailedTimeout,\n EventTypes.CardholderSinglePersonCheckFailed,\n EventTypes.CardholderSinglePersonCheckFailedNoPresenceDetected,\n EventTypes.CardholderSinglePersonCheckFailedTooManyPeople,\n EventTypes.CredentialRequested,\n EventTypes.CredentialRequestedComplete,\n EventTypes.CredentialRequestedCancelled,\n EventTypes.CredentialDoubleBadgeOn,\n EventTypes.CredentialDoubleBadgeOff,\n EventTypes.ApplicationFirst,\n EventTypes.ApplicationLast,\n EventTypes.CameraFirst,\n EventTypes.CameraLast,\n EventTypes.ExternalSystemFirst,\n EventTypes.ExternalSystemAlarmTriggered,\n EventTypes.ExternalSystemSyncStarted,\n EventTypes.ExternalSystemSyncCompleted,\n EventTypes.ExternalSystemSyncError,\n EventTypes.ExternalSystemSyncPartiallyCompleted,\n EventTypes.ExternalSystemLast,\n EventTypes.ZoneFirst,\n EventTypes.ZoneLast,\n EventTypes.ElevatorFirst,\n EventTypes.ElevatorLast,\n EventTypes.MacroFirst,\n EventTypes.MacroLast,\n EventTypes.LprLast,\n EventTypes.LprUpdatePackage,\n EventTypes.InvalidatePatrollerMlpiReadsResultEvent,\n EventTypes.MlpiLast,\n EventTypes.IntrusionAreaFirst,\n EventTypes.IntrusionAreaLast,\n EventTypes.IntrusionUnitInputFirst,\n EventTypes.IntrusionUnitInputTrouble,\n EventTypes.IntrusionUnitInputBypassActivated,\n EventTypes.IntrusionUnitInputBypassDeactivated,\n EventTypes.IntrusionUnitInputLast,\n EventTypes.ArchiverEventsFirst,\n EventTypes.ArchiverCanWrite,\n EventTypes.ArchiverDatabaseLost,\n EventTypes.ArchiverDatabaseRecovered,\n EventTypes.ArchiverDiskChanged,\n EventTypes.ArchiverDiskFull,\n EventTypes.ArchiverDiskLoad,\n EventTypes.ArchiverInvalidCustomEncryption,\n EventTypes.ArchiverNoWrite,\n EventTypes.ArchiverNoWriteOnSpecifiedDisk,\n EventTypes.ArchiverArchivingStopped,\n EventTypes.ArchiverBackupStarted,\n EventTypes.ArchiverBackupSucceeded,\n EventTypes.ArchiverBackupFailed,\n EventTypes.ArchiverProtectionThresholdExceeded,\n EventTypes.ArchiverVrmConnectionAttempt,\n EventTypes.ArchiverVrmConnectionFailure,\n EventTypes.ArchiverPathTooLong,\n EventTypes.ArchiverFileProtectionSuccess,\n EventTypes.ArchiverFileProtectionFailure,\n EventTypes.ArchiverDatabaseFlooding,\n EventTypes.ArchiverEventsLast,\n EventTypes.VideoAnalyticsFirst,\n EventTypes.VideoAnalyticsTemperatureDetectionOn,\n EventTypes.VideoAnalyticsTemperatureDetectionOff,\n EventTypes.VideoAnalyticsTemperatureDetectionAlarm,\n EventTypes.VideoAnalyticsAdaptiveMotion,\n EventTypes.VideoAnalyticsObjectCountReached,\n EventTypes.VideoAnalyticsLast,\n EventTypes.AssetFirst,\n EventTypes.AssetLast,\n EventTypes.HealthMonitoringFirst,\n EventTypes.HealthMonitoringLast,\n EventTypes.IntrusionUnitFirst,\n EventTypes.IntrusionUnitLast,\n EventTypes.ThreatLevelFirst,\n EventTypes.ThreatLevelLast,\n EventTypes.AutoActionExecute,\n EventTypes.DeviceFirst,\n EventTypes.InputStateActive,\n EventTypes.InputStateNormal,\n EventTypes.InputStateTrouble,\n EventTypes.InputAlarmActive,\n EventTypes.InputAlarmRestored,\n EventTypes.InputBypassed,\n EventTypes.InputBypassRestored,\n EventTypes.DeviceLast,\n EventTypes.InputStateChanged,\n EventTypes.ParkingZoneFirst,\n EventTypes.ParkingSessionStartedByVehicleEntered,\n EventTypes.ParkingSessionStartedByUnknownVehicleExited,\n EventTypes.ParkingSessionConvenienceTimeStarted,\n EventTypes.ParkingSessionValidatingPaidTimeByPaidTimeExpired,\n EventTypes.ParkingSessionValidatingPaidTimeByConvenienceTimeExpired,\n EventTypes.ParkingsessionPaidTimeStartedByPaidTimeValid,\n EventTypes.ParkingSessionPaidTimeStartedByValidationError,\n EventTypes.ParkingSessionGracePeriodStartedConvenienceTimeExpired,\n EventTypes.ParkingSessionGracePeriodStartedByPaidTimeInvalid,\n EventTypes.ParkingSessionViolationDetectedByConvenienceTimeExpired,\n EventTypes.ParkingSessionViolationDetectedByGracePeriodExpired,\n EventTypes.ParkingSessionViolationDetectedByPaidTimeInvalid,\n EventTypes.ParkingSessionViolationEnforced,\n EventTypes.ParkingSessionCompletedByInventoryReset,\n EventTypes.ParkingSessionCompletedByMaxSessionTimeExceeded,\n EventTypes.ParkingSessionCompletedByVehicledExited,\n EventTypes.ParkingSessionCompletedByUnknownVehicledExited,\n EventTypes.ParkingZoneInventoryReset,\n EventTypes.ParkingZoneMaximumCapacityReached,\n EventTypes.ParkingSessionStarted,\n EventTypes.ParkingSessionValidatingPaidTime,\n EventTypes.ParkingSessionPaidTimeStarted,\n EventTypes.ParkingSessionGracePeriodStarted,\n EventTypes.ParkingSessionViolationDetected,\n EventTypes.ParkingSessionCompleted,\n EventTypes.ParkingZoneLast,\n EventTypes.AlarmContextChanged,\n EventTypes.AudioAnalyticsFirst,\n EventTypes.AudioAnalyticsCustom,\n EventTypes.AudioAnalyticsLast,\n EventTypes.ActiveAlarms,\n EventTypes.ActiveAlarmsRecovered,\n EventTypes.AgentStarted,\n EventTypes.AgentStopped,\n EventTypes.AgentStoppedUnexpectedly,\n EventTypes.AllArchivingRestarted,\n EventTypes.AllArchivingStopped,\n EventTypes.ApplicationConnect,\n EventTypes.ApplicationDisconnectedByUser,\n EventTypes.ApplicationDisconnectedUnexpectedly,\n EventTypes.ApplicationStarted,\n EventTypes.ApplicationStoppedByUser,\n EventTypes.ApplicationStoppedUnexpectedl,\n EventTypes.ArchiveBackupFailure,\n EventTypes.ArchiveBackupSuccess,\n EventTypes.ArchiveConsolidationFailure,\n EventTypes.ArchiveConsolidationPartialFailure,\n EventTypes.ArchiveConsolidationSuccess,\n EventTypes.ArchiverTricklingFailure,\n EventTypes.ArchiverTricklingPartialFailure,\n EventTypes.ArchiverTricklingSuccess,\n EventTypes.ArchiverTricklingRetry,\n EventTypes.ArchiverTricklingCancel,\n EventTypes.CameraConnectionEstablished,\n EventTypes.CameraConnectionStoppedByUser,\n EventTypes.CameraConnectionStoppedUnexpectedly,\n EventTypes.CameraRecordingProblem,\n EventTypes.CameraRecordingProblemRecovered,\n EventTypes.ConnectionFailed,\n EventTypes.ConnectionRestored,\n EventTypes.DatabaseAutomaticBackupFailed,\n EventTypes.DatabaseAutomaticBackupRecovered,\n EventTypes.DatabaseFailoverMasterLost,\n EventTypes.DatabaseFailoverMasterRecovered,\n EventTypes.DatabaseLost,\n EventTypes.DatabaseRecovered,\n EventTypes.DatabaseRestoreFailure,\n EventTypes.DatabaseRestoreSuccess,\n EventTypes.DirectoryStarted,\n EventTypes.DirectoryStoppedByUser,\n EventTypes.DirectoryStoppedUnexpectedly,\n EventTypes.HighCPUUsage,\n EventTypes.HighCPUUsageRecovered,\n EventTypes.HighMemoryUsage,\n EventTypes.HighMemoryUsageRecovered,\n EventTypes.LiveHealthMonitoringRecovered,\n EventTypes.LiveHealthMonitoringStopped,\n EventTypes.LowArchiveSpace,\n EventTypes.LowArchiveSpaceRecovered,\n EventTypes.LowDatabaseSpace,\n EventTypes.LowDatabaseSpaceRecovered,\n EventTypes.OffloadFailed,\n EventTypes.OffloadRecovered,\n EventTypes.PatrollerOffline,\n EventTypes.PatrollerOnline,\n EventTypes.POSDatabaseLost,\n EventTypes.POSDatabaseRecovered,\n EventTypes.RoleStarted,\n EventTypes.RoleStoppedByUser,\n EventTypes.RoleStoppedUnexpectedly,\n EventTypes.RTPPacketLoss,\n EventTypes.RTPPacketLossRecovered,\n EventTypes.ServiceStarted,\n EventTypes.ServiceStoppedByUser,\n EventTypes.ServiceStoppedUnexpectedly,\n EventTypes.SynchronizationFailed,\n EventTypes.SynchronizationRecovered,\n EventTypes.TransmissionLost,\n EventTypes.TransmissionRecovered,\n EventTypes.UnauthorizedDisk,\n EventTypes.UnauthorizedDiskRecovered,\n EventTypes.UnitConnectionFailed,\n EventTypes.UnitConnectionRestored,\n EventTypes.UnitConnectionStopped,\n EventTypes.UnitTimeDrift,\n EventTypes.UnitTimeDriftRecovered,\n EventTypes.UnitTricklingFailure,\n EventTypes.UnitTricklingPartialFailure,\n EventTypes.UnitTricklingSuccess,\n EventTypes.VideoSignalLoss,\n EventTypes.VideoSignalRecovered,\n EventTypes.EdgeStorageRecovered,\n EventTypes.EdgeStorageFailure,\n EventTypes.EdgeStorageRecordingRecovered,\n EventTypes.EdgeStorageRecordingFailure,\n EventTypes.CertificateValid,\n EventTypes.CertificateWarning,\n EventTypes.CertificateError,\n EventTypes.ValidDriverPack,\n EventTypes.InvalidDriverPack,\n EventTypes.ArchivingNotMonitored,\n EventTypes.ApplicationConnectionNotMonitored,\n EventTypes.ApplicationNotMonitored,\n EventTypes.ConnectionNotMonitored,\n EventTypes.UnitConnectionNotMonitored,\n EventTypes.DatabaseAutomaticBackupNotMonitored,\n EventTypes.DatabaseNotMonitored,\n EventTypes.HighCPUUsageNotMonitored,\n EventTypes.HighMemoryUsageNotMonitored,\n EventTypes.LowDatabaseSpaceNotMonitored,\n EventTypes.OffloadNotMonitored,\n EventTypes.PatrollerNotMonitored,\n EventTypes.POSDatabaseNotMonitored,\n EventTypes.RoleNotMonitored,\n EventTypes.RTPPacketNotMonitored,\n EventTypes.ServiceNotMonitored,\n EventTypes.SynchronizationNotMonitored,\n EventTypes.VideoSignalNotMonitored,\n EventTypes.UnauthorizedDiskNotMonitored,\n EventTypes.ActiveAlarmsNotMonitored,\n EventTypes.DirectoryNotMonitored,\n EventTypes.LowArchiveSpaceNotMonitored,\n EventTypes.LiveHealthMonitoringNotMonitored,\n EventTypes.DatabaseFailoverMasterNotMonitored,\n EventTypes.DatabaseRestoreNotMonitored,\n EventTypes.UnitTricklingNotMonitored,\n EventTypes.ArchiveBackupNotMonitored,\n EventTypes.AgentNotMonitored,\n EventTypes.ArchiveConsolidationNotMonitored,\n EventTypes.CameraRecordingNotMonitored,\n EventTypes.CameraConnectionNotMonitored,\n EventTypes.UnitTimeDriftNotMonitored,\n EventTypes.TransmissionNotMonitored,\n EventTypes.EdgeStorageNotMonitored,\n EventTypes.EdgeStorageRecordingNotMonitored,\n EventTypes.ArchiverTricklingNotMonitored,\n EventTypes.CertificateNotMonitored,\n EventTypes.DriverPackNotMonitored,\n EventTypes.ScTokenValid,\n EventTypes.ScTokenError,\n EventTypes.ScTokenNotMonitored,\n EventTypes.EntityOnline,\n EventTypes.EntityOffline,\n EventTypes.EntityNotMonitored,\n EventTypes.OptimizedDirectoryStartupSucceeded,\n EventTypes.OptimizedDirectoryStartupFailed,\n EventTypes.OptimizedDirectoryStartupNotMonitored,\n EventTypes.CommunicationsInviteSent,\n EventTypes.CommunicationsCallFirst,\n EventTypes.CommunicationsCallRinging,\n EventTypes.CommunicationsCallDeclined,\n EventTypes.CommunicationsCallAnswered,\n EventTypes.CommunicationsCallRejected,\n EventTypes.CommunicationsCallTimeout,\n EventTypes.CommunicationsCallEnded,\n EventTypes.CommunicationsCallStarted,\n EventTypes.CommunicationsCallLast,\n EventTypes.CommunicationsContactFirst,\n EventTypes.CommunicationsContactRegistered,\n EventTypes.CommunicationsContactUnregistered,\n EventTypes.CommunicationsContactLast,\n EventTypes.CommunicationsTrunkFirst,\n EventTypes.CommunicationsTrunkRegistered,\n EventTypes.CommunicationsTrunkUnregistered,\n EventTypes.CommunicationsTrunkLast,\n EventTypes.CorrelationFirst,\n EventTypes.CorrelationEvent,\n EventTypes.CorrelationRuleHitEvent,\n EventTypes.CorrelationLast,\n EventTypes.SecretKeyEvent\n ];\n\n public static ResourceDict = new Map();\n static EventTypes() {\n this.ResourceDict.set('None', -1);\n this.ResourceDict.set('Invalidate', -1);\n this.ResourceDict.set('ManualAction', 904);\n this.ResourceDict.set('AlarmTriggered', 357);\n this.ResourceDict.set('AlarmAcknowledged', 356);\n this.ResourceDict.set('ApplicationConnected', 669);\n this.ResourceDict.set('ApplicationDisconnected', 670);\n this.ResourceDict.set('ServerLost', -1);\n this.ResourceDict.set('CameraLiveBookmarkAdded', 1456);\n this.ResourceDict.set('CameraPlaybackBookmarkAdded', 1457);\n this.ResourceDict.set('CameraMotionOn', 1458);\n this.ResourceDict.set('CameraMotionOff', 1459);\n this.ResourceDict.set('CardholderAccessGranted', 267);\n this.ResourceDict.set('CameraAbnormalMotion', 16915);\n this.ResourceDict.set('CameraNominalMotion', 16914);\n this.ResourceDict.set('CardholderAccessRefused', 268);\n this.ResourceDict.set('CardholderWalkthrough', -1);\n this.ResourceDict.set('CardholderInactive', 767);\n this.ResourceDict.set('CardHolderCredentialExpired', 765);\n this.ResourceDict.set('CardHolderCredentialInactive', 766);\n this.ResourceDict.set('CardHolderCredentialLost', 768);\n this.ResourceDict.set('CardHolderCredentialStolen', 769);\n this.ResourceDict.set('CardholderAntipassback', 1019);\n this.ResourceDict.set('CustomEvent', 1604);\n this.ResourceDict.set('UnitConnected', 627);\n this.ResourceDict.set('UnitDisconnected', 628);\n this.ResourceDict.set('InterfaceOnline', 15425);\n this.ResourceDict.set('InterfaceOffline', 15426);\n this.ResourceDict.set('AccessControlUnitWarningActivated', 16520);\n this.ResourceDict.set('AccessControlUnitWarningDeactivated', 16521);\n this.ResourceDict.set('FirmwareUpgradeScheduled', 16560);\n this.ResourceDict.set('FirmwareUpgradeCancelled', 16561);\n this.ResourceDict.set('InterfaceFirmwareUpgradeStarted', 16563);\n this.ResourceDict.set('InterfaceFirmwareUpgradeSuccess', 16562);\n this.ResourceDict.set('InterfaceFirmwareUpgradeFailure', 16564);\n this.ResourceDict.set('InterfaceFirmwareUpgradeScheduled', 16566);\n this.ResourceDict.set('InterfaceFirmwareUpgradeCancelled', 16565);\n this.ResourceDict.set('InterfaceFirmwareUpgradeTransferred', 16567);\n this.ResourceDict.set('UnitACFail', 2018);\n this.ResourceDict.set('UnitBatFail', 2019);\n this.ResourceDict.set('UnitInvalidConfiguration', 5246);\n this.ResourceDict.set('UnitTemperatureAlarm', 10560);\n this.ResourceDict.set('UnitTimeOutOfSync', -1);\n this.ResourceDict.set('UnitTimeOutOfSyncRecovered', -1);\n this.ResourceDict.set('UnitDiskActionError', 14791);\n this.ResourceDict.set('UnitDiskFormatted', 14792);\n this.ResourceDict.set('UnitDiskLocked', 14793);\n this.ResourceDict.set('UnitDiskMounted', 14794);\n this.ResourceDict.set('UnitDiskUnlocked', 14795);\n this.ResourceDict.set('UnitDiskUnmounted', 14796);\n this.ResourceDict.set('ArchiveTransferSequenceImported', 16243);\n this.ResourceDict.set('UserLoggedOn', 271);\n this.ResourceDict.set('UserLoggedOff', 272);\n this.ResourceDict.set('UserLogonFailed', 12634);\n this.ResourceDict.set('FirmwareUpgradeStarted', 1597);\n this.ResourceDict.set('FirmwareUpgradeSuccess', 1598);\n this.ResourceDict.set('FirmwareUpgradeFailure', 1599);\n this.ResourceDict.set('DoorRexOn', 577);\n this.ResourceDict.set('DoorRexOff', 2000);\n this.ResourceDict.set('DoorOpenedForTooLong', 469);\n this.ResourceDict.set('DoorPullStationActivated', 581);\n this.ResourceDict.set('DoorPullStationNormal', 582);\n this.ResourceDict.set('DoorOpen', 580);\n this.ResourceDict.set('DoorClose', 579);\n this.ResourceDict.set('DoorForcedOpen', -1);\n this.ResourceDict.set('DoorLock', 843);\n this.ResourceDict.set('DoorUnlock', 842);\n this.ResourceDict.set('DoorOpenWhileLockSecure', 847);\n this.ResourceDict.set('AccessUnknownCredential', 270);\n this.ResourceDict.set('AccessUnassignedCredential', 8932);\n this.ResourceDict.set('AccessGranted', 267);\n this.ResourceDict.set('AccessRefused', 268);\n this.ResourceDict.set('AccessExpiredCredential', 8928);\n this.ResourceDict.set('AccessStolenCredential', 8931);\n this.ResourceDict.set('AccessLostCredential', 8930);\n this.ResourceDict.set('AccessInactiveCredential', 8929);\n this.ResourceDict.set('AccessInactivePerson', 767);\n this.ResourceDict.set('DoorTamper', 968);\n this.ResourceDict.set('InputTroubleShort', 1530);\n this.ResourceDict.set('InputTroubleOpen', 1531);\n this.ResourceDict.set('EmergencyDoorRex', 15767);\n this.ResourceDict.set('EmergencyDoorUnlockPostponed', 15768);\n this.ResourceDict.set('EmergencyDoorUnlocked', 15769);\n this.ResourceDict.set('EmergencyDoorUnlockedOperatorUnlock', 15774);\n this.ResourceDict.set('EmergencyDoorUnlockedReleaseDelayTimeExpired', 15776);\n this.ResourceDict.set('EmergencyDoorUnlockedExtensionGuardLockingExpired', 15770);\n this.ResourceDict.set('EmergencyDoorUnlockedMaximumLockingTimeExpired', 15772);\n this.ResourceDict.set('EmergencyDoorUnlockedHostConnectionTimeout', 15778);\n this.ResourceDict.set('EmergencyDoorReset', 15780);\n this.ResourceDict.set('EmergencyDoorResetRemoteOperator', 15785);\n this.ResourceDict.set('EmergencyDoorResetPhysicalButton', 15783);\n this.ResourceDict.set('EmergencyDoorResetAuto', 15781);\n this.ResourceDict.set('DoorTestStarted', 16541);\n this.ResourceDict.set('DoorTestSucceeded', 16543);\n this.ResourceDict.set('DoorTestFailed', 16542);\n this.ResourceDict.set('DoorTestFailedAborted', 16554);\n this.ResourceDict.set('DoorTestFailedReaderShunted', 16555);\n this.ResourceDict.set('DoorTestFailedDoorNotSecured', 16556);\n this.ResourceDict.set('DoorTestFailedError', 16557);\n this.ResourceDict.set('DoorTestFailedUnlockFailed', 16558);\n this.ResourceDict.set('DoorTestFailedRelockFailed', 16559);\n this.ResourceDict.set('AreaFirstManIn', 1020);\n this.ResourceDict.set('AreaLastManOut', 1021);\n this.ResourceDict.set('AreaAntipassbackDetected', 1019);\n this.ResourceDict.set('AreaAntipassbackForgiven', 1199);\n this.ResourceDict.set('PeopleCountReset', 3356);\n this.ResourceDict.set('AreaCardholderRemoved', 14101);\n this.ResourceDict.set('AreaCardholderAdded', 14230);\n this.ResourceDict.set('CredentialUnassigned', 269);\n this.ResourceDict.set('CredentialExpired', 765);\n this.ResourceDict.set('CredentialStolen', 769);\n this.ResourceDict.set('CredentialLost', 768);\n this.ResourceDict.set('CredentialInactive', 766);\n this.ResourceDict.set('CredentialHasExpired', 2194);\n this.ResourceDict.set('CredentialIsExpiring', 2195);\n this.ResourceDict.set('ZoneGlassBreak', 1606);\n this.ResourceDict.set('ZoneWindowOpened', 1607);\n this.ResourceDict.set('ZoneWindowClosed', 1608);\n this.ResourceDict.set('ZoneDeadBoltLocked', 1609);\n this.ResourceDict.set('ZoneDeadBoltUnlocked', 1610);\n this.ResourceDict.set('ZoneKnobInplace', 1611);\n this.ResourceDict.set('ZoneKnobRotated', 1612);\n this.ResourceDict.set('ZoneLockSecured', 1613);\n this.ResourceDict.set('ZoneLockReleased', 1614);\n this.ResourceDict.set('MacroStarted', 2156);\n this.ResourceDict.set('MacroCompleted', 2157);\n this.ResourceDict.set('MacroAborted', 2158);\n this.ResourceDict.set('AlarmAcknowledgedAlternate', 1665);\n this.ResourceDict.set('LprFirst', -1);\n this.ResourceDict.set('LprRead', 4233);\n this.ResourceDict.set('LprHit', 4234);\n this.ResourceDict.set('ProcessMlpiResultsResultEvent', -1);\n this.ResourceDict.set('LprOffloadSucceeded', 8205);\n this.ResourceDict.set('LprOffloadFailed', 8358);\n this.ResourceDict.set('LprNoMatch', 9506);\n this.ResourceDict.set('LprHotlistChanged', 12911);\n this.ResourceDict.set('LprUpdateInstalled', 7520);\n this.ResourceDict.set('LprUpdateUninstalled', 7521);\n this.ResourceDict.set('LprUpdatePublished', 8080);\n this.ResourceDict.set('LprUpdateError', 8078);\n this.ResourceDict.set('LprUpdateInstalling', 8079);\n this.ResourceDict.set('LprUpdateUninstalling', 8081);\n this.ResourceDict.set('IntrusionAreaDuress', 5018);\n this.ResourceDict.set('IntrusionAreaEntryDelay', 5019);\n this.ResourceDict.set('IntrusionAreaAlarmActivated', 5014);\n this.ResourceDict.set('IntrusionAreaArming', 5015);\n this.ResourceDict.set('IntrusionAreaArmingPostponed', 5016);\n this.ResourceDict.set('IntrusionAreaMasterArmed', 5023);\n this.ResourceDict.set('IntrusionAreaPerimeterArmed', 5024);\n this.ResourceDict.set('IntrusionAreaDisarmed', 5017);\n this.ResourceDict.set('IntrusionAreaInputTrouble', 5022);\n this.ResourceDict.set('IntrusionAreaInputBypassActivated', 5020);\n this.ResourceDict.set('IntrusionAreaInputBypassDeactivated', 5021);\n this.ResourceDict.set('IntrusionAreaForcedArming', 7117);\n this.ResourceDict.set('IntrusionAreaCanceledAlarm', 5743);\n this.ResourceDict.set('IntrusionAreaMasterArmRequest', 5790);\n this.ResourceDict.set('IntrusionAreaPerimeterArmRequest', 5791);\n this.ResourceDict.set('IntrusionAreaDisarmRequest', 5792);\n this.ResourceDict.set('IntrusionAreaArmingPostponedRequest', 5880);\n this.ResourceDict.set('IntrusionAreaCanceledAlarmRequest', 5881);\n this.ResourceDict.set('IntrusionAreaAlarmSilenced', 11877);\n this.ResourceDict.set('IntrusionUnitTamper', 8481);\n this.ResourceDict.set('ZoneArmed', 5794);\n this.ResourceDict.set('ZoneDisarmed', 5795);\n this.ResourceDict.set('ZoneMaintenanceOn', 12783);\n this.ResourceDict.set('ZoneMaintenanceOff', 12784);\n this.ResourceDict.set('ZoneWarningUnitOffline', 12879);\n this.ResourceDict.set('DoorMaintenanceOff', 1670);\n this.ResourceDict.set('DoorMaintenanceOn', 1669);\n this.ResourceDict.set('DoorScheduledLock', 1027);\n this.ResourceDict.set('DoorScheduledUnlock', 1028);\n this.ResourceDict.set('DoorWarningUnitOffline', 1672);\n this.ResourceDict.set('DoorWarningInterfaceAcFail', 14348);\n this.ResourceDict.set('DoorWarningInterfaceAcFailRestored', 14354);\n this.ResourceDict.set('DoorWarningInterfaceBatteryFail', 14347);\n this.ResourceDict.set('DoorWarningInterfaceBatteryFailRestored', 14353);\n this.ResourceDict.set('DoorWarningInterfaceTamperFail', 14349);\n this.ResourceDict.set('DoorWarningInterfaceTamperFailRestored', 14355);\n this.ResourceDict.set('DoorManuallyUnlocked', 762);\n this.ResourceDict.set('DoorOnline', 15394);\n this.ResourceDict.set('DoorUnsecured', 15450);\n this.ResourceDict.set('DoorSecured', 15449);\n this.ResourceDict.set('VideoAnalyticsAudioAlarm', 7109);\n this.ResourceDict.set('VideoAnalyticsLicensePlateInSight', 5247);\n this.ResourceDict.set('VideoAnalyticsLicensePlateOutofSight', 5248);\n this.ResourceDict.set('VideoAnalyticsLicensePlateReading', 5249);\n this.ResourceDict.set('VideoAnalyticsObjectConditionChange', 5250);\n this.ResourceDict.set('VideoAnalyticsObjectCrossedLine', 5251);\n this.ResourceDict.set('VideoAnalyticsObjectEntered', 5252);\n this.ResourceDict.set('VideoAnalyticsObjectExited', 5253);\n this.ResourceDict.set('VideoAnalyticsObjectFall', 5254);\n this.ResourceDict.set('VideoAnalyticsObjectFollowingRoute', 5255);\n this.ResourceDict.set('VideoAnalyticsObjectInField', 5256);\n this.ResourceDict.set('VideoAnalyticsObjectLeft', 5257);\n this.ResourceDict.set('VideoAnalyticsObjectLoitering', 5258);\n this.ResourceDict.set('VideoAnalyticsObjectMerged', 5259);\n this.ResourceDict.set('VideoAnalyticsObjectRemoved', 5260);\n this.ResourceDict.set('VideoAnalyticsObjectRun', 5261);\n this.ResourceDict.set('VideoAnalyticsObjectSlide', 5262);\n this.ResourceDict.set('VideoAnalyticsObjectSplit', 5263);\n this.ResourceDict.set('VideoAnalyticsObjectStopped', 5264);\n this.ResourceDict.set('VideoAnalyticsTailgating', 5265);\n this.ResourceDict.set('VideoAnalyticsTampering', 5266);\n this.ResourceDict.set('VideoAnalyticsFaceDetected', 10094);\n this.ResourceDict.set('VideoAnalyticsUndefined', 5267);\n this.ResourceDict.set('VideoAnalyticsDirectionAlarm', 10878);\n this.ResourceDict.set('VideoAnalyticsTamperingOff', 9973);\n this.ResourceDict.set('VideoAnalyticsCrowdDetected', 13398);\n this.ResourceDict.set('VideoAnalyticsFaceRecognized', 13399);\n this.ResourceDict.set('VideoAnalyticsObjectDetected', 13401);\n this.ResourceDict.set('VideoAnalyticsHeatMapChanged', 13400);\n this.ResourceDict.set('VideoAnalyticsObjectCountChanged', 13402);\n this.ResourceDict.set('VideoAnalyticsObjectVelocityChanged', 13405);\n this.ResourceDict.set('VideoAnalyticsObjectDirectionChanged', 13403);\n this.ResourceDict.set('VideoAnalyticsPeopleCounting', 268436032);\n this.ResourceDict.set('VideoAnalyticsPeopleCountingAlarm', 268436033);\n this.ResourceDict.set('VideoAnalyticsCrowdSize', 268437953);\n this.ResourceDict.set('FloorAccess', 2234);\n this.ResourceDict.set('AssetMoved', 8109);\n this.ResourceDict.set('AssetLowBattery', 8111);\n this.ResourceDict.set('AssetOffline', 8107);\n this.ResourceDict.set('AssetOnline', 8105);\n this.ResourceDict.set('ArchivingStartedAutomatically', 2536);\n this.ResourceDict.set('ArchivingStoppedAutomatically', 2537);\n this.ResourceDict.set('ArchivingStartedManually', 2538);\n this.ResourceDict.set('ArchivingStoppedManually', 2539);\n this.ResourceDict.set('ArchivingStartedOnMotionEvent', 2544);\n this.ResourceDict.set('ArchivingStoppedOnMotionEvent', 2545);\n this.ResourceDict.set('ArchivingStartedByExternalSource', 2546);\n this.ResourceDict.set('ArchivingStoppedByExternalSource', 2547);\n this.ResourceDict.set('ArchivingStartedByAlarm', 2548);\n this.ResourceDict.set('ArchivingStoppedByAlarm', 2549);\n this.ResourceDict.set('CameraStartLiveStreaming', 17114);\n this.ResourceDict.set('CameraStopLiveStreaming', 17130);\n this.ResourceDict.set('ArchiveFileDeleted', 2540);\n this.ResourceDict.set('CameraSignalLost', 5004);\n this.ResourceDict.set('CameraSignalRecovered', 5005);\n this.ResourceDict.set('ArchivingQueueFull', 5231);\n this.ResourceDict.set('CameraNotArchiving', 5233);\n this.ResourceDict.set('CameraTransmissionLost', 5235);\n this.ResourceDict.set('CameraRtpPacketsLost', 5234);\n this.ResourceDict.set('CameraMultipleSourceDetected', 5232);\n this.ResourceDict.set('CameraStartBlock', 8972);\n this.ResourceDict.set('CameraStopBlock', 8973);\n this.ResourceDict.set('CameraTransmissionRecovered', 8367);\n this.ResourceDict.set('CameraEdgeRecordingCommandTimeout', 9721);\n this.ResourceDict.set('CameraEdgestorageFailure', 9718);\n this.ResourceDict.set('CameraMotion', 2535);\n this.ResourceDict.set('CameraEdgestorageEnabled', 14381);\n this.ResourceDict.set('CameraRtpPacketLostRecovery', 8368);\n this.ResourceDict.set('PtzActivated', 5129);\n this.ResourceDict.set('PtzStopped', 5130);\n this.ResourceDict.set('PtzZoomByUserStarted', 5132);\n this.ResourceDict.set('PtzZoomByUserStopped', 5133);\n this.ResourceDict.set('PtzLocked', 5131);\n this.ResourceDict.set('HealthMonitoringEvent', 7843);\n this.ResourceDict.set('AreaAntipassbackDisabledMixedMode', 1622);\n this.ResourceDict.set('AreaAntipassbackDisabledUnitOffline', 1623);\n this.ResourceDict.set('AreaPeopleCountDisabledUnitOffline', 1624);\n this.ResourceDict.set('AreaAntipassbackDisabledPerimeterOnElevator', 2002);\n this.ResourceDict.set('AreaSasOverrideOn', 2448);\n this.ResourceDict.set('AreaSasOverrideOff', 2449);\n this.ResourceDict.set('AreaSasLockdownOn', 2450);\n this.ResourceDict.set('AreaSasLockdownOff', 2451);\n this.ResourceDict.set('AreaSasMultipleUnitWarning', 2453);\n this.ResourceDict.set('AreaSasUnsupportedWarning', 2454);\n this.ResourceDict.set('AreaSasMaintenanceModeWarning', 2455);\n this.ResourceDict.set('AreaSasFreeAccessWarning', 2456);\n this.ResourceDict.set('AreaSasAntipassbackWarning', 2457);\n this.ResourceDict.set('AreaSasFloorWarning', 2458);\n this.ResourceDict.set('AreaAntipassbackDisabledInvalidSettings', 5316);\n this.ResourceDict.set('AreaSasDoorWithNoSensorConfigured', 11108);\n this.ResourceDict.set('AreaSasOnlyOnePerimeterFloor', 11107);\n this.ResourceDict.set('SinglePersonCheckFailed', 15762);\n this.ResourceDict.set('SinglePersonCheckFailedNoPresenceDetected', 15763);\n this.ResourceDict.set('SinglePersonCheckFailedTooManyPeople', 15765);\n this.ResourceDict.set('AreaEvacuationStarted', 16488);\n this.ResourceDict.set('AreaEvacuationEnded', 16489);\n this.ResourceDict.set('AreaMusteringStarted', 16501);\n this.ResourceDict.set('AreaMusteringEnded', 16500);\n this.ResourceDict.set('AreaLast', -1);\n this.ResourceDict.set('ElevatorWarningUnitOffline', 2030);\n this.ResourceDict.set('ElevatorSecuredOnSchedule', 1988);\n this.ResourceDict.set('ElevatorFreeAccessOnSchedule', 1987);\n this.ResourceDict.set('AlarmInvestigating', 8794);\n this.ResourceDict.set('AlarmForciblyAcked', 8595);\n this.ResourceDict.set('ThreatLevelActivated', 8956);\n this.ResourceDict.set('ThreatLevelDeactivated', 9295);\n this.ResourceDict.set('CardholderNoEntryDetected', 9221);\n this.ResourceDict.set('DoorNoEntryDetected', 9221);\n this.ResourceDict.set('CardholderEntryDetected', 9222);\n this.ResourceDict.set('CardholderEntryAssumed', 9539);\n this.ResourceDict.set('VisitorAstray', 14133);\n this.ResourceDict.set('MissingTailEscort', 14136);\n this.ResourceDict.set('DoorEntryDetected', 9222);\n this.ResourceDict.set('DoorEntryAssumed', 9539);\n this.ResourceDict.set('DoorSupervisorInAccessRule', 13245);\n this.ResourceDict.set('DoorSupervisorInUnlockingSchedule', 13246);\n this.ResourceDict.set('AreaMaxOccupancyReached', 14123);\n this.ResourceDict.set('AreaMaxOccupancyExceeded', 14124);\n this.ResourceDict.set('AreaBelowMaxOccupancy', 14125);\n this.ResourceDict.set('DuressPinEntered', 14129);\n this.ResourceDict.set('DoubleBadgeOn', 14827);\n this.ResourceDict.set('DoubleBadgeOff', 14828);\n this.ResourceDict.set('AccessGrantConfirmationRequested', 15748);\n this.ResourceDict.set('IdentityValidationSucceeded', 15749);\n this.ResourceDict.set('IdentityValidationSucceededBiometric', 15750);\n this.ResourceDict.set('IdentityValidationSucceededManual', 15752);\n this.ResourceDict.set('IdentityValidationFailed', 15754);\n this.ResourceDict.set('IdentityValidationFailedBiometricMismatch', 15756);\n this.ResourceDict.set('IdentityValidationFailedBiometricMissing', 15758);\n this.ResourceDict.set('IdentityValidationFailedManual', 15755);\n this.ResourceDict.set('IdentityValidationFailedTimeout', 15760);\n this.ResourceDict.set('OfflineSynchronizationStarted', 1309);\n this.ResourceDict.set('OfflineSynchronizationFailure', 1311);\n this.ResourceDict.set('OfflineSynchronizationSuccess', 1310);\n this.ResourceDict.set('AccessInvalidPin', 9192);\n this.ResourceDict.set('AccessValidCardInvalidPin', 9193);\n this.ResourceDict.set('AccessDeniedByAccessRule', 9194);\n this.ResourceDict.set('AccessInsufficientPrivileges', 9195);\n this.ResourceDict.set('AccessAntipassbackViolation', 9196);\n this.ResourceDict.set('AccessOutOfSchedule', 9197);\n this.ResourceDict.set('AccessNoAccessRuleAssigned', 9635);\n this.ResourceDict.set('AccessAbsentSupervisor', 10757);\n this.ResourceDict.set('AccessEscortRequired', 10046);\n this.ResourceDict.set('AccessSecondCardholderRequired', 10048);\n this.ResourceDict.set('AccessEscortNotSupported', 67108873);\n this.ResourceDict.set('CompanionVisitorDenied', 67108875);\n this.ResourceDict.set('Interlock', 10890);\n this.ResourceDict.set('AccessCardAndPINTimeout', 12380);\n this.ResourceDict.set('AccessValidCardInactivePIN', 12382);\n this.ResourceDict.set('AccessDeniedByMaxOccupancy', 14120);\n this.ResourceDict.set('UID', -1);\n this.ResourceDict.set('Warning', 1634);\n this.ResourceDict.set('UID2', -1);\n this.ResourceDict.set('UserFirst', -1);\n this.ResourceDict.set('ModifiedIncident', 8532);\n this.ResourceDict.set('UserLast', -1);\n this.ResourceDict.set('AccessPointFirst', -1);\n this.ResourceDict.set('AccessPointLast', -1);\n this.ResourceDict.set('AlarmFirst', -1);\n this.ResourceDict.set('AlarmConditionCleared', 8593);\n this.ResourceDict.set('AlarmLast', -1);\n this.ResourceDict.set('DoorFirst', -1);\n this.ResourceDict.set('ScheduleUnlockIgnored', 10839);\n this.ResourceDict.set('DoorLast', -1);\n this.ResourceDict.set('AreaFirst', -1);\n this.ResourceDict.set('UnitFirst', -1);\n this.ResourceDict.set('UnitLast', -1);\n this.ResourceDict.set('CredentialFirst', -1);\n this.ResourceDict.set('CredentialAccessDenied', 268);\n this.ResourceDict.set('CredentialLast', -1);\n this.ResourceDict.set('CardholderFirst', -1);\n this.ResourceDict.set('CardholderLast', -1);\n this.ResourceDict.set('CardholderDuressPinEntered', 14129);\n this.ResourceDict.set('CardholderDoubleBadgeOn', 14827);\n this.ResourceDict.set('CardholderDoubleBadgeOff', 14828);\n this.ResourceDict.set('CardholderAccessGrantConfirmationRequested', 15748);\n this.ResourceDict.set('CardholderIdentityValidationSucceeded', 15749);\n this.ResourceDict.set('CardholderIdentityValidationSucceededBiometric', 15750);\n this.ResourceDict.set('CardholderIdentityValidationSucceededManual', 15752);\n this.ResourceDict.set('CardholderIdentityValidationFailed', 15754);\n this.ResourceDict.set('CardholderIdentityValidationFailedBiometricMismatch', 15756);\n this.ResourceDict.set('CardholderIdentityValidationFailedBiometricMissing', 15758);\n this.ResourceDict.set('CardholderIdentityValidationFailedManual', 15755);\n this.ResourceDict.set('CardholderIdentityValidationFailedTimeout', 15760);\n this.ResourceDict.set('CardholderSinglePersonCheckFailed', 15762);\n this.ResourceDict.set('CardholderSinglePersonCheckFailedNoPresenceDetected', 15763);\n this.ResourceDict.set('CardholderSinglePersonCheckFailedTooManyPeople', 15765);\n this.ResourceDict.set('CredentialRequested', 8587);\n this.ResourceDict.set('CredentialRequestedComplete', 8589);\n this.ResourceDict.set('CredentialRequestedCancelled', 8588);\n this.ResourceDict.set('CredentialDoubleBadgeOn', 14827);\n this.ResourceDict.set('CredentialDoubleBadgeOff', 14828);\n this.ResourceDict.set('ApplicationFirst', -1);\n this.ResourceDict.set('ApplicationLast', -1);\n this.ResourceDict.set('CameraFirst', -1);\n this.ResourceDict.set('CameraLast', -1);\n this.ResourceDict.set('ExternalSystemFirst', -1);\n this.ResourceDict.set('ExternalSystemAlarmTriggered', 1549);\n this.ResourceDict.set('ExternalSystemSyncStarted', 2532);\n this.ResourceDict.set('ExternalSystemSyncCompleted', 2533);\n this.ResourceDict.set('ExternalSystemSyncError', 2534);\n this.ResourceDict.set('ExternalSystemSyncPartiallyCompleted', 13251);\n this.ResourceDict.set('ExternalSystemLast', -1);\n this.ResourceDict.set('ZoneFirst', -1);\n this.ResourceDict.set('ZoneLast', -1);\n this.ResourceDict.set('ElevatorFirst', -1);\n this.ResourceDict.set('ElevatorLast', -1);\n this.ResourceDict.set('MacroFirst', -1);\n this.ResourceDict.set('MacroLast', -1);\n this.ResourceDict.set('LprLast', -1);\n this.ResourceDict.set('LprUpdatePackage', -1);\n this.ResourceDict.set('InvalidatePatrollerMlpiReadsResultEvent', -1);\n this.ResourceDict.set('MlpiLast', -1);\n this.ResourceDict.set('IntrusionAreaFirst', -1);\n this.ResourceDict.set('IntrusionAreaLast', -1);\n this.ResourceDict.set('IntrusionUnitInputFirst', -1);\n this.ResourceDict.set('IntrusionUnitInputTrouble', 5013);\n this.ResourceDict.set('IntrusionUnitInputBypassActivated', 5011);\n this.ResourceDict.set('IntrusionUnitInputBypassDeactivated', 5012);\n this.ResourceDict.set('IntrusionUnitInputLast', -1);\n this.ResourceDict.set('ArchiverEventsFirst', -1);\n this.ResourceDict.set('ArchiverCanWrite', 5237);\n this.ResourceDict.set('ArchiverDatabaseLost', 5238);\n this.ResourceDict.set('ArchiverDatabaseRecovered', 5239);\n this.ResourceDict.set('ArchiverDiskChanged', 5240);\n this.ResourceDict.set('ArchiverDiskFull', 5241);\n this.ResourceDict.set('ArchiverDiskLoad', 5242);\n this.ResourceDict.set('ArchiverInvalidCustomEncryption', 5243);\n this.ResourceDict.set('ArchiverNoWrite', 5244);\n this.ResourceDict.set('ArchiverNoWriteOnSpecifiedDisk', 5245);\n this.ResourceDict.set('ArchiverArchivingStopped', 5236);\n this.ResourceDict.set('ArchiverBackupStarted', 6762);\n this.ResourceDict.set('ArchiverBackupSucceeded', 6763);\n this.ResourceDict.set('ArchiverBackupFailed', 6764);\n this.ResourceDict.set('ArchiverProtectionThresholdExceeded', 6765);\n this.ResourceDict.set('ArchiverVrmConnectionAttempt', 8370);\n this.ResourceDict.set('ArchiverVrmConnectionFailure', 8369);\n this.ResourceDict.set('ArchiverPathTooLong', 10994);\n this.ResourceDict.set('ArchiverFileProtectionSuccess', -1);\n this.ResourceDict.set('ArchiverFileProtectionFailure', -1);\n this.ResourceDict.set('ArchiverDatabaseFlooding', 17113);\n this.ResourceDict.set('ArchiverEventsLast', -1);\n this.ResourceDict.set('VideoAnalyticsFirst', -1);\n this.ResourceDict.set('VideoAnalyticsTemperatureDetectionOn', 11934);\n this.ResourceDict.set('VideoAnalyticsTemperatureDetectionOff', 11935);\n this.ResourceDict.set('VideoAnalyticsTemperatureDetectionAlarm', 16314);\n this.ResourceDict.set('VideoAnalyticsAdaptiveMotion', 268435769);\n this.ResourceDict.set('VideoAnalyticsObjectCountReached', 268435768);\n this.ResourceDict.set('VideoAnalyticsLast', -1);\n this.ResourceDict.set('AssetFirst', -1);\n this.ResourceDict.set('AssetLast', -1);\n this.ResourceDict.set('HealthMonitoringFirst', -1);\n this.ResourceDict.set('HealthMonitoringLast', -1);\n this.ResourceDict.set('IntrusionUnitFirst', -1);\n this.ResourceDict.set('IntrusionUnitLast', -1);\n this.ResourceDict.set('ThreatLevelFirst', -1);\n this.ResourceDict.set('ThreatLevelLast', -1);\n this.ResourceDict.set('AutoActionExecute', -1);\n this.ResourceDict.set('DeviceFirst', -1);\n this.ResourceDict.set('InputStateActive', 11952);\n this.ResourceDict.set('InputStateNormal', 11953);\n this.ResourceDict.set('InputStateTrouble', 11954);\n this.ResourceDict.set('InputAlarmActive', 134228915);\n this.ResourceDict.set('InputAlarmRestored', 134228916);\n this.ResourceDict.set('InputBypassed', 7024);\n this.ResourceDict.set('InputBypassRestored', 134228917);\n this.ResourceDict.set('DeviceLast', -1);\n this.ResourceDict.set('InputStateChanged', 11722);\n this.ResourceDict.set('ParkingZoneFirst', -1);\n this.ResourceDict.set('ParkingSessionStartedByVehicleEntered', 13217);\n this.ResourceDict.set('ParkingSessionStartedByUnknownVehicleExited', 13216);\n this.ResourceDict.set('ParkingSessionConvenienceTimeStarted', 13174);\n this.ResourceDict.set('ParkingSessionValidatingPaidTimeByPaidTimeExpired', 13221);\n this.ResourceDict.set('ParkingSessionValidatingPaidTimeByConvenienceTimeExpired', 13220);\n this.ResourceDict.set('ParkingsessionPaidTimeStartedByPaidTimeValid', 13222);\n this.ResourceDict.set('ParkingSessionPaidTimeStartedByValidationError', 13223);\n this.ResourceDict.set('ParkingSessionGracePeriodStartedConvenienceTimeExpired', 13218);\n this.ResourceDict.set('ParkingSessionGracePeriodStartedByPaidTimeInvalid', 13219);\n this.ResourceDict.set('ParkingSessionViolationDetectedByConvenienceTimeExpired', 13224);\n this.ResourceDict.set('ParkingSessionViolationDetectedByGracePeriodExpired', 13225);\n this.ResourceDict.set('ParkingSessionViolationDetectedByPaidTimeInvalid', 13226);\n this.ResourceDict.set('ParkingSessionViolationEnforced', 13110);\n this.ResourceDict.set('ParkingSessionCompletedByInventoryReset', 13227);\n this.ResourceDict.set('ParkingSessionCompletedByMaxSessionTimeExceeded', 13228);\n this.ResourceDict.set('ParkingSessionCompletedByVehicledExited', 13229);\n this.ResourceDict.set('ParkingSessionCompletedByUnknownVehicledExited', 13532);\n this.ResourceDict.set('ParkingZoneInventoryReset', 13105);\n this.ResourceDict.set('ParkingZoneMaximumCapacityReached', 13106);\n this.ResourceDict.set('ParkingSessionStarted', 13173);\n this.ResourceDict.set('ParkingSessionValidatingPaidTime', 13176);\n this.ResourceDict.set('ParkingSessionPaidTimeStarted', 13177);\n this.ResourceDict.set('ParkingSessionGracePeriodStarted', 13175);\n this.ResourceDict.set('ParkingSessionViolationDetected', 13109);\n this.ResourceDict.set('ParkingSessionCompleted', 13178);\n this.ResourceDict.set('ParkingZoneLast', -1);\n this.ResourceDict.set('AlarmContextChanged', 13808);\n this.ResourceDict.set('AudioAnalyticsFirst', -1);\n this.ResourceDict.set('AudioAnalyticsCustom', 268435971);\n this.ResourceDict.set('AudioAnalyticsLast', -1);\n this.ResourceDict.set('ActiveAlarms', 8195);\n this.ResourceDict.set('ActiveAlarmsRecovered', 8196);\n this.ResourceDict.set('AgentStarted', 13311);\n this.ResourceDict.set('AgentStopped', 13312);\n this.ResourceDict.set('AgentStoppedUnexpectedly', 13313);\n this.ResourceDict.set('AllArchivingRestarted', 7685);\n this.ResourceDict.set('AllArchivingStopped', 7684);\n this.ResourceDict.set('ApplicationConnect', 7688);\n this.ResourceDict.set('ApplicationDisconnectedByUser', 7686);\n this.ResourceDict.set('ApplicationDisconnectedUnexpectedly', 7687);\n this.ResourceDict.set('ApplicationStarted', 7691);\n this.ResourceDict.set('ApplicationStoppedByUser', 7689);\n this.ResourceDict.set('ApplicationStoppedUnexpectedl', 7690);\n this.ResourceDict.set('ArchiveBackupFailure', 10256);\n this.ResourceDict.set('ArchiveBackupSuccess', 10257);\n this.ResourceDict.set('ArchiveConsolidationFailure', 13444);\n this.ResourceDict.set('ArchiveConsolidationPartialFailure', 13445);\n this.ResourceDict.set('ArchiveConsolidationSuccess', 13443);\n this.ResourceDict.set('ArchiverTricklingFailure', 10261);\n this.ResourceDict.set('ArchiverTricklingPartialFailure', 10262);\n this.ResourceDict.set('ArchiverTricklingSuccess', 10263);\n this.ResourceDict.set('ArchiverTricklingRetry', 15571);\n this.ResourceDict.set('ArchiverTricklingCancel', 15577);\n this.ResourceDict.set('CameraConnectionEstablished', 14254);\n this.ResourceDict.set('CameraConnectionStoppedByUser', 14256);\n this.ResourceDict.set('CameraConnectionStoppedUnexpectedly', 14255);\n this.ResourceDict.set('CameraRecordingProblem', 13869);\n this.ResourceDict.set('CameraRecordingProblemRecovered', 13870);\n this.ResourceDict.set('ConnectionFailed', 7694);\n this.ResourceDict.set('ConnectionRestored', 7695);\n this.ResourceDict.set('DatabaseAutomaticBackupFailed', 7700);\n this.ResourceDict.set('DatabaseAutomaticBackupRecovered', 7701);\n this.ResourceDict.set('DatabaseFailoverMasterLost', 8389);\n this.ResourceDict.set('DatabaseFailoverMasterRecovered', 8390);\n this.ResourceDict.set('DatabaseLost', 7703);\n this.ResourceDict.set('DatabaseRecovered', 7704);\n this.ResourceDict.set('DatabaseRestoreFailure', 8452);\n this.ResourceDict.set('DatabaseRestoreSuccess', 8451);\n this.ResourceDict.set('DirectoryStarted', 8257);\n this.ResourceDict.set('DirectoryStoppedByUser', 8258);\n this.ResourceDict.set('DirectoryStoppedUnexpectedly', 8259);\n this.ResourceDict.set('HighCPUUsage', 7709);\n this.ResourceDict.set('HighCPUUsageRecovered', 7710);\n this.ResourceDict.set('HighMemoryUsage', 7715);\n this.ResourceDict.set('HighMemoryUsageRecovered', 7716);\n this.ResourceDict.set('LiveHealthMonitoringRecovered', 8373);\n this.ResourceDict.set('LiveHealthMonitoringStopped', 8372);\n this.ResourceDict.set('LowArchiveSpace', 8221);\n this.ResourceDict.set('LowArchiveSpaceRecovered', 8220);\n this.ResourceDict.set('LowDatabaseSpace', 7719);\n this.ResourceDict.set('LowDatabaseSpaceRecovered', 7720);\n this.ResourceDict.set('OffloadFailed', 7727);\n this.ResourceDict.set('OffloadRecovered', 7728);\n this.ResourceDict.set('PatrollerOffline', 7729);\n this.ResourceDict.set('PatrollerOnline', 7730);\n this.ResourceDict.set('POSDatabaseLost', 7732);\n this.ResourceDict.set('POSDatabaseRecovered', 7733);\n this.ResourceDict.set('RoleStarted', 7736);\n this.ResourceDict.set('RoleStoppedByUser', 7737);\n this.ResourceDict.set('RoleStoppedUnexpectedly', 7738);\n this.ResourceDict.set('RTPPacketLoss', 7739);\n this.ResourceDict.set('RTPPacketLossRecovered', 7740);\n this.ResourceDict.set('ServiceStarted', 7743);\n this.ResourceDict.set('ServiceStoppedByUser', 7741);\n this.ResourceDict.set('ServiceStoppedUnexpectedly', 7742);\n this.ResourceDict.set('SynchronizationFailed', 7744);\n this.ResourceDict.set('SynchronizationRecovered', 7745);\n this.ResourceDict.set('TransmissionLost', 5235);\n this.ResourceDict.set('TransmissionRecovered', 8367);\n this.ResourceDict.set('UnauthorizedDisk', 8088);\n this.ResourceDict.set('UnauthorizedDiskRecovered', 8089);\n this.ResourceDict.set('UnitConnectionFailed', 7696);\n this.ResourceDict.set('UnitConnectionRestored', 7697);\n this.ResourceDict.set('UnitConnectionStopped', 8498);\n this.ResourceDict.set('UnitTimeDrift', 15334);\n this.ResourceDict.set('UnitTimeDriftRecovered', 15333);\n this.ResourceDict.set('UnitTricklingFailure', 10258);\n this.ResourceDict.set('UnitTricklingPartialFailure', 10259);\n this.ResourceDict.set('UnitTricklingSuccess', 10260);\n this.ResourceDict.set('VideoSignalLoss', 7752);\n this.ResourceDict.set('VideoSignalRecovered', 7753);\n this.ResourceDict.set('EdgeStorageRecovered', 15564);\n this.ResourceDict.set('EdgeStorageFailure', 15567);\n this.ResourceDict.set('EdgeStorageRecordingRecovered', 15566);\n this.ResourceDict.set('EdgeStorageRecordingFailure', 15565);\n this.ResourceDict.set('CertificateValid', 16239);\n this.ResourceDict.set('CertificateWarning', 16240);\n this.ResourceDict.set('CertificateError', 16241);\n this.ResourceDict.set('ValidDriverPack', 16280);\n this.ResourceDict.set('InvalidDriverPack', 16281);\n this.ResourceDict.set('ArchivingNotMonitored', 16398);\n this.ResourceDict.set('ApplicationConnectionNotMonitored', 16399);\n this.ResourceDict.set('ApplicationNotMonitored', 16400);\n this.ResourceDict.set('ConnectionNotMonitored', 16401);\n this.ResourceDict.set('UnitConnectionNotMonitored', 16402);\n this.ResourceDict.set('DatabaseAutomaticBackupNotMonitored', 16403);\n this.ResourceDict.set('DatabaseNotMonitored', 16404);\n this.ResourceDict.set('HighCPUUsageNotMonitored', 16405);\n this.ResourceDict.set('HighMemoryUsageNotMonitored', 16406);\n this.ResourceDict.set('LowDatabaseSpaceNotMonitored', 16407);\n this.ResourceDict.set('OffloadNotMonitored', 16408);\n this.ResourceDict.set('PatrollerNotMonitored', 16409);\n this.ResourceDict.set('POSDatabaseNotMonitored', 16410);\n this.ResourceDict.set('RoleNotMonitored', 16411);\n this.ResourceDict.set('RTPPacketNotMonitored', 16412);\n this.ResourceDict.set('ServiceNotMonitored', 16413);\n this.ResourceDict.set('SynchronizationNotMonitored', 16414);\n this.ResourceDict.set('VideoSignalNotMonitored', 16415);\n this.ResourceDict.set('UnauthorizedDiskNotMonitored', 16416);\n this.ResourceDict.set('ActiveAlarmsNotMonitored', 16417);\n this.ResourceDict.set('DirectoryNotMonitored', 16418);\n this.ResourceDict.set('LowArchiveSpaceNotMonitored', 16419);\n this.ResourceDict.set('LiveHealthMonitoringNotMonitored', 16420);\n this.ResourceDict.set('DatabaseFailoverMasterNotMonitored', 16421);\n this.ResourceDict.set('DatabaseRestoreNotMonitored', 16422);\n this.ResourceDict.set('UnitTricklingNotMonitored', 16423);\n this.ResourceDict.set('ArchiveBackupNotMonitored', 16424);\n this.ResourceDict.set('AgentNotMonitored', 16425);\n this.ResourceDict.set('ArchiveConsolidationNotMonitored', 16426);\n this.ResourceDict.set('CameraRecordingNotMonitored', 16427);\n this.ResourceDict.set('CameraConnectionNotMonitored', 16429);\n this.ResourceDict.set('UnitTimeDriftNotMonitored', 16428);\n this.ResourceDict.set('TransmissionNotMonitored', 16430);\n this.ResourceDict.set('EdgeStorageNotMonitored', 16431);\n this.ResourceDict.set('EdgeStorageRecordingNotMonitored', 16432);\n this.ResourceDict.set('ArchiverTricklingNotMonitored', 16433);\n this.ResourceDict.set('CertificateNotMonitored', 16434);\n this.ResourceDict.set('DriverPackNotMonitored', 16435);\n this.ResourceDict.set('ScTokenValid', 16769);\n this.ResourceDict.set('ScTokenError', 16770);\n this.ResourceDict.set('ScTokenNotMonitored', 16802);\n this.ResourceDict.set('EntityOnline', 16844);\n this.ResourceDict.set('EntityOffline', 16845);\n this.ResourceDict.set('EntityNotMonitored', 16846);\n this.ResourceDict.set('OptimizedDirectoryStartupSucceeded', 17198);\n this.ResourceDict.set('OptimizedDirectoryStartupFailed', 17199);\n this.ResourceDict.set('OptimizedDirectoryStartupNotMonitored', 17200);\n this.ResourceDict.set('CommunicationsInviteSent', -1);\n this.ResourceDict.set('CommunicationsCallFirst', -1);\n this.ResourceDict.set('CommunicationsCallRinging', -1);\n this.ResourceDict.set('CommunicationsCallDeclined', -1);\n this.ResourceDict.set('CommunicationsCallAnswered', -1);\n this.ResourceDict.set('CommunicationsCallRejected', -1);\n this.ResourceDict.set('CommunicationsCallTimeout', -1);\n this.ResourceDict.set('CommunicationsCallEnded', -1);\n this.ResourceDict.set('CommunicationsCallStarted', -1);\n this.ResourceDict.set('CommunicationsCallLast', -1);\n this.ResourceDict.set('CommunicationsContactFirst', -1);\n this.ResourceDict.set('CommunicationsContactRegistered', -1);\n this.ResourceDict.set('CommunicationsContactUnregistered', -1);\n this.ResourceDict.set('CommunicationsContactLast', -1);\n this.ResourceDict.set('CommunicationsTrunkFirst', -1);\n this.ResourceDict.set('CommunicationsTrunkRegistered', -1);\n this.ResourceDict.set('CommunicationsTrunkUnregistered', -1);\n this.ResourceDict.set('CommunicationsTrunkLast', -1);\n this.ResourceDict.set('CorrelationFirst', -1);\n this.ResourceDict.set('CorrelationEvent', 15720);\n this.ResourceDict.set('CorrelationRuleHitEvent', 15721);\n this.ResourceDict.set('CorrelationLast', -1);\n this.ResourceDict.set('SecretKeyEvent', -1);\n }\n}\n","// Autogenerated: v2/help/Classes/ApiRoutableEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:08 PM\nimport { EventBase } from './EventBase';\nimport { IRoutableEvent } from '../Interface/IRoutableEvent';\n\nexport class RoutableEvent extends EventBase implements IRoutableEvent {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAlarmEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:10 AM\nimport { RoutableEvent } from './RoutableEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IDynamicContentInfo, IAlarmEvent } from '../Interface/IAlarmEvent';\n\n// #region Inner classes\n\nexport class DynamicContentInfo extends FieldObject implements IDynamicContentInfo {\n // AttachedEntities\n public get attachedEntities(): ObservableCollection {\n return this.getFieldArrayGuid('AttachedEntities');\n }\n public set attachedEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('AttachedEntities', value);\n }\n // Context\n public get context(): string {\n return this.getField('Context');\n }\n public set context(value: string) {\n this.setField('Context', value);\n }\n // ForwardedRecipients\n public get forwardedRecipients(): ObservableCollection {\n return this.getFieldArrayGuid('ForwardedRecipients');\n }\n public set forwardedRecipients(value: ObservableCollection) {\n this.setFieldArrayGuid('ForwardedRecipients', value);\n }\n // Priority\n public get priority(): number {\n return this.getField('Priority');\n }\n public set priority(value: number) {\n this.setField('Priority', value);\n }\n // Urls\n public get urls(): ObservableCollection {\n return this.getFieldArray('Urls');\n }\n public set urls(value: ObservableCollection) {\n this.setFieldArray('Urls', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArrayGuid('AttachedEntities', new ObservableCollection());\n this.setField('Context', '');\n this.setFieldArrayGuid('ForwardedRecipients', new ObservableCollection());\n this.setField('Priority', 0);\n this.setFieldArray('Urls', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class AlarmEvent extends RoutableEvent implements IAlarmEvent {\n // #region REST Properties\n\n // DynamicContent\n public get dynamicContent(): IDynamicContentInfo {\n return this.getFieldObject(DynamicContentInfo, 'DynamicContent');\n }\n public set dynamicContent(value: IDynamicContentInfo) {\n this.setFieldObject('DynamicContent', value);\n }\n\n // InstanceId\n public get instanceId(): number {\n return this.getField('InstanceId');\n }\n public set instanceId(value: number) {\n this.setField('InstanceId', value);\n }\n\n // Priority\n public get priority(): number {\n return this.getField('Priority');\n }\n public set priority(value: number) {\n this.setField('Priority', value);\n }\n\n // PropagationLevel\n public get propagationLevel(): number {\n return this.getField('PropagationLevel');\n }\n public set propagationLevel(value: number) {\n this.setField('PropagationLevel', value);\n }\n\n // SourceConditionState\n public get sourceConditionState(): number {\n return this.getField('SourceConditionState');\n }\n public set sourceConditionState(value: number) {\n this.setField('SourceConditionState', value);\n }\n\n // SourceConditionType\n public get sourceConditionType(): string {\n return this.getField('SourceConditionType');\n }\n public set sourceConditionType(value: string) {\n this.setField('SourceConditionType', value);\n }\n\n // TriggerEntity\n public get triggerEntity(): IGuid {\n return this.getFieldGuid('TriggerEntity');\n }\n public set triggerEntity(value: IGuid) {\n this.setFieldGuid('TriggerEntity', value);\n }\n\n // TriggerEntityDesc\n public get triggerEntityDesc(): string {\n return this.getField('TriggerEntityDesc');\n }\n public set triggerEntityDesc(value: string) {\n this.setField('TriggerEntityDesc', value);\n }\n\n // TriggerEntityType\n public get triggerEntityType(): string {\n return this.getField('TriggerEntityType');\n }\n public set triggerEntityType(value: string) {\n this.setField('TriggerEntityType', value);\n }\n\n // TriggerEvent\n public get triggerEvent(): string {\n return this.getField('TriggerEvent');\n }\n public set triggerEvent(value: string) {\n this.setField('TriggerEvent', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n const objDynamicContent = new DynamicContentInfo();\n objDynamicContent.initializeAllFields();\n this.setFieldObject('DynamicContent', objDynamicContent);\n this.setField('InstanceId', 0);\n this.setField('Priority', 0);\n this.setField('PropagationLevel', 0);\n this.setField('SourceConditionState', 0);\n this.setField('SourceConditionType', '');\n this.setFieldGuid('TriggerEntity', SafeGuid.EMPTY);\n this.setField('TriggerEntityDesc', '');\n this.setField('TriggerEntityType', '');\n this.setField('TriggerEvent', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAlarmTriggeredEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { AlarmEvent } from './AlarmEvent';\nimport { IGuid } from 'safeguid';\nimport { IAlarmTriggeredEvent } from '../Interface/IAlarmTriggeredEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class AlarmTriggeredEvent extends AlarmEvent implements IAlarmTriggeredEvent {\n // #region REST Properties\n\n // TriggeredTime\n public get triggeredTime(): Date {\n return this.getFieldDate('TriggeredTime');\n }\n public set triggeredTime(value: Date) {\n this.setFieldDate('TriggeredTime', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldDate('TriggeredTime', new Date());\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAlarmAcknowledgedEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { AlarmEvent } from './AlarmEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAlarmAcknowledgedEvent } from '../Interface/IAlarmAcknowledgedEvent';\n\nexport class AlarmAcknowledgedEvent extends AlarmEvent implements IAlarmAcknowledgedEvent {\n // #region REST Properties\n\n // AckBy\n public get ackBy(): IGuid {\n return this.getFieldGuid('AckBy');\n }\n public set ackBy(value: IGuid) {\n this.setFieldGuid('AckBy', value);\n }\n\n // AckByDesc\n public get ackByDesc(): string {\n return this.getField('AckByDesc');\n }\n public set ackByDesc(value: string) {\n this.setField('AckByDesc', value);\n }\n\n // AckByType\n public get ackByType(): string {\n return this.getField('AckByType');\n }\n public set ackByType(value: string) {\n this.setField('AckByType', value);\n }\n\n // AckReason\n public get ackReason(): number {\n return this.getField('AckReason');\n }\n public set ackReason(value: number) {\n this.setField('AckReason', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('AckBy', SafeGuid.EMPTY);\n this.setField('AckByDesc', '');\n this.setField('AckByType', '');\n this.setField('AckReason', 0);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAlarmInvestigatingEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { AlarmEvent } from './AlarmEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAlarmInvestigatingEvent } from '../Interface/IAlarmInvestigatingEvent';\n\nexport class AlarmInvestigatingEvent extends AlarmEvent implements IAlarmInvestigatingEvent {\n // #region REST Properties\n\n // InvestigatedBy\n public get investigatedBy(): IGuid {\n return this.getFieldGuid('InvestigatedBy');\n }\n public set investigatedBy(value: IGuid) {\n this.setFieldGuid('InvestigatedBy', value);\n }\n\n // InvestigatedByDesc\n public get investigatedByDesc(): string {\n return this.getField('InvestigatedByDesc');\n }\n public set investigatedByDesc(value: string) {\n this.setField('InvestigatedByDesc', value);\n }\n\n // InvestigatedByType\n public get investigatedByType(): string {\n return this.getField('InvestigatedByType');\n }\n public set investigatedByType(value: string) {\n this.setField('InvestigatedByType', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('InvestigatedBy', SafeGuid.EMPTY);\n this.setField('InvestigatedByDesc', '');\n this.setField('InvestigatedByType', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiTimezoneEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-12 06:43:50\nimport { RoutableEvent } from './RoutableEvent';\nimport { ITimezoneEvent } from '../Interface/ITimezoneEvent';\n\nexport class TimezoneEvent extends RoutableEvent implements ITimezoneEvent {\n // #region REST Properties\n\n // SourceTimeZoneId\n public get sourceTimeZoneId(): string {\n return this.getField('SourceTimeZoneId');\n }\n public set sourceTimeZoneId(value: string) {\n this.setField('SourceTimeZoneId', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('SourceTimeZoneId', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAccessEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:10 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAccessEvent } from '../Interface/IAccessEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class AccessEvent extends TimezoneEvent implements IAccessEvent {\n // #region REST Properties\n\n // Cardholder\n public get cardholder(): IGuid {\n return this.getFieldGuid('Cardholder');\n }\n public set cardholder(value: IGuid) {\n this.setFieldGuid('Cardholder', value);\n }\n\n // CardholderDesc\n public get cardholderDesc(): string {\n return this.getField('CardholderDesc');\n }\n public set cardholderDesc(value: string) {\n this.setField('CardholderDesc', value);\n }\n\n // CardholderType\n public get cardholderType(): string {\n return this.getField('CardholderType');\n }\n public set cardholderType(value: string) {\n this.setField('CardholderType', value);\n }\n\n // Credentials\n public get credentials(): ObservableCollection {\n return this.getFieldArrayGuid('Credentials');\n }\n public set credentials(value: ObservableCollection) {\n this.setFieldArrayGuid('Credentials', value);\n }\n\n // DoorSideGuid\n public get doorSideGuid(): IGuid {\n return this.getFieldGuid('DoorSideGuid');\n }\n public set doorSideGuid(value: IGuid) {\n this.setFieldGuid('DoorSideGuid', value);\n }\n\n // DoorSideGuidDesc\n public get doorSideGuidDesc(): string {\n return this.getField('DoorSideGuidDesc');\n }\n public set doorSideGuidDesc(value: string) {\n this.setField('DoorSideGuidDesc', value);\n }\n\n // DoorSideGuidType\n public get doorSideGuidType(): string {\n return this.getField('DoorSideGuidType');\n }\n public set doorSideGuidType(value: string) {\n this.setField('DoorSideGuidType', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Cardholder', SafeGuid.EMPTY);\n this.setField('CardholderDesc', '');\n this.setField('CardholderType', '');\n this.setFieldArrayGuid('Credentials', new ObservableCollection());\n this.setFieldGuid('DoorSideGuid', SafeGuid.EMPTY);\n this.setField('DoorSideGuidDesc', '');\n this.setField('DoorSideGuidType', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAccessUnknownCredentialEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { AccessEvent } from './AccessEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAccessUnknownCredentialEvent } from '../Interface/IAccessUnknownCredentialEvent';\n\nexport class AccessUnknownCredentialEvent extends AccessEvent implements IAccessUnknownCredentialEvent {\n // #region REST Properties\n\n // BitLength\n public get bitLength(): number {\n return this.getField('BitLength');\n }\n public set bitLength(value: number) {\n this.setField('BitLength', value);\n }\n\n // CardFormat\n public get cardFormat(): IGuid {\n return this.getFieldGuid('CardFormat');\n }\n public set cardFormat(value: IGuid) {\n this.setFieldGuid('CardFormat', value);\n }\n\n // CredentialType\n public get credentialType(): string {\n return this.getField('CredentialType');\n }\n public set credentialType(value: string) {\n this.setField('CredentialType', value);\n }\n\n // UniqueID\n public get uniqueID(): string {\n return this.getField('UniqueID');\n }\n public set uniqueID(value: string) {\n this.setField('UniqueID', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('BitLength', 0);\n this.setFieldGuid('CardFormat', SafeGuid.EMPTY);\n this.setField('CredentialType', '');\n this.setField('UniqueID', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiApplicationEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:08 PM\nimport { RoutableEvent } from './RoutableEvent';\nimport { IApplicationEvent } from '../Interface/IApplicationEvent';\n\nexport class ApplicationEvent extends RoutableEvent implements IApplicationEvent {\n // #region REST Properties\n\n // ApplicationName\n public get applicationName(): string {\n return this.getField('ApplicationName');\n }\n public set applicationName(value: string) {\n this.setField('ApplicationName', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('ApplicationName', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCustomPayloadEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-12 06:41:26\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { ICustomPayloadEvent } from '../Interface/ICustomPayloadEvent';\n\nexport class CustomPayloadEvent extends TimezoneEvent implements ICustomPayloadEvent {\n // #region REST Properties\n\n // CustomEventId\n public get customEventId(): number {\n return this.getField('CustomEventId');\n }\n public set customEventId(value: number) {\n this.setField('CustomEventId', value);\n }\n\n // Message\n public get message(): string {\n return this.getField('Message');\n }\n public set message(value: string) {\n this.setField('Message', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('CustomEventId', 0);\n this.setField('Message', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiLprReadEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:52 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ILprReadEvent, ILocation } from '../Interface/ILprReadEvent';\n\n// #region Inner classes\n\nexport class Location extends FieldObject implements ILocation {\n // Address\n public get address(): string {\n return this.getField('Address');\n }\n public set address(value: string) {\n this.setField('Address', value);\n }\n // Altitude\n public get altitude(): number {\n return this.getField('Altitude');\n }\n public set altitude(value: number) {\n this.setField('Altitude', value);\n }\n // Latitude\n public get latitude(): number {\n return this.getField('Latitude');\n }\n public set latitude(value: number) {\n this.setField('Latitude', value);\n }\n // Longitude\n public get longitude(): number {\n return this.getField('Longitude');\n }\n public set longitude(value: number) {\n this.setField('Longitude', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Address', '');\n this.setField('Altitude', 0);\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n }\n}\n\n// #endregion Inner classes\n\nexport class LprReadEvent extends TimezoneEvent implements ILprReadEvent {\n // #region REST Properties\n\n // AttributesXml\n public get attributesXml(): string {\n return this.getField('AttributesXml');\n }\n public set attributesXml(value: string) {\n this.setField('AttributesXml', value);\n }\n\n // ContextThumbnailImage\n public get contextThumbnailImage(): string {\n return this.getField('ContextThumbnailImage');\n }\n public set contextThumbnailImage(value: string) {\n this.setField('ContextThumbnailImage', value);\n }\n\n // DefaultColor\n public get defaultColor(): string {\n return this.getField('DefaultColor');\n }\n public set defaultColor(value: string) {\n this.setField('DefaultColor', value);\n }\n\n // DeviceId\n public get deviceId(): IGuid {\n return this.getFieldGuid('DeviceId');\n }\n public set deviceId(value: IGuid) {\n this.setFieldGuid('DeviceId', value);\n }\n\n // EditedRead\n public get editedRead(): boolean {\n return this.getField('EditedRead');\n }\n public set editedRead(value: boolean) {\n this.setField('EditedRead', value);\n }\n\n // Heading\n public get heading(): number {\n return this.getField('Heading');\n }\n public set heading(value: number) {\n this.setField('Heading', value);\n }\n\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n\n // IsHit\n public get isHit(): boolean {\n return this.getField('IsHit');\n }\n public set isHit(value: boolean) {\n this.setField('IsHit', value);\n }\n\n // IsProtected\n public get isProtected(): boolean {\n return this.getField('IsProtected');\n }\n public set isProtected(value: boolean) {\n this.setField('IsProtected', value);\n }\n\n // IsRealTime\n public get isRealTime(): boolean {\n return this.getField('IsRealTime');\n }\n public set isRealTime(value: boolean) {\n this.setField('IsRealTime', value);\n }\n\n // Location\n public get location(): ILocation {\n return this.getFieldObject(Location, 'Location');\n }\n public set location(value: ILocation) {\n this.setFieldObject('Location', value);\n }\n\n // LprThumbnailImage\n public get lprThumbnailImage(): string {\n return this.getField('LprThumbnailImage');\n }\n public set lprThumbnailImage(value: string) {\n this.setField('LprThumbnailImage', value);\n }\n\n // ManualRead\n public get manualRead(): boolean {\n return this.getField('ManualRead');\n }\n public set manualRead(value: boolean) {\n this.setField('ManualRead', value);\n }\n\n // PatrollerId\n public get patrollerId(): IGuid {\n return this.getFieldGuid('PatrollerId');\n }\n public set patrollerId(value: IGuid) {\n this.setFieldGuid('PatrollerId', value);\n }\n\n // Plate\n public get plate(): string {\n return this.getField('Plate');\n }\n public set plate(value: string) {\n this.setField('Plate', value);\n }\n\n // PlateState\n public get plateState(): string {\n return this.getField('PlateState');\n }\n public set plateState(value: string) {\n this.setField('PlateState', value);\n }\n\n // Speed\n public get speed(): number {\n return this.getField('Speed');\n }\n public set speed(value: number) {\n this.setField('Speed', value);\n }\n\n // UnitId\n public get unitId(): IGuid {\n return this.getFieldGuid('UnitId');\n }\n public set unitId(value: IGuid) {\n this.setFieldGuid('UnitId', value);\n }\n\n // VehicleMake\n public get vehicleMake(): string {\n return this.getField('VehicleMake');\n }\n public set vehicleMake(value: string) {\n this.setField('VehicleMake', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('AttributesXml', '');\n this.setField('ContextThumbnailImage', '');\n this.setField('DefaultColor', '');\n this.setFieldGuid('DeviceId', SafeGuid.EMPTY);\n this.setField('EditedRead', false);\n this.setField('Heading', 0);\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('IsHit', false);\n this.setField('IsProtected', false);\n this.setField('IsRealTime', false);\n const objLocation = new Location();\n objLocation.initializeAllFields();\n this.setFieldObject('Location', objLocation);\n this.setField('LprThumbnailImage', '');\n this.setField('ManualRead', false);\n this.setFieldGuid('PatrollerId', SafeGuid.EMPTY);\n this.setField('Plate', '');\n this.setField('PlateState', '');\n this.setField('Speed', 0);\n this.setFieldGuid('UnitId', SafeGuid.EMPTY);\n this.setField('VehicleMake', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiLprHitEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:52 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { LprReadEvent } from './LprReadEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ILprHitEvent } from '../Interface/ILprHitEvent';\nimport { ILprReadEvent } from '../Interface/ILprReadEvent';\n\nexport class LprHitEvent extends TimezoneEvent implements ILprHitEvent {\n // #region REST Properties\n\n // AttributesXml\n public get attributesXml(): string {\n return this.getField('AttributesXml');\n }\n public set attributesXml(value: string) {\n this.setField('AttributesXml', value);\n }\n\n // DefaultColor\n public get defaultColor(): string {\n return this.getField('DefaultColor');\n }\n public set defaultColor(value: string) {\n this.setField('DefaultColor', value);\n }\n\n // HitType\n public get hitType(): string {\n return this.getField('HitType');\n }\n public set hitType(value: string) {\n this.setField('HitType', value);\n }\n\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n\n // IsProtected\n public get isProtected(): boolean {\n return this.getField('IsProtected');\n }\n public set isProtected(value: boolean) {\n this.setField('IsProtected', value);\n }\n\n // IsRealTime\n public get isRealTime(): boolean {\n return this.getField('IsRealTime');\n }\n public set isRealTime(value: boolean) {\n this.setField('IsRealTime', value);\n }\n\n // LprRuleId\n public get lprRuleId(): IGuid {\n return this.getFieldGuid('LprRuleId');\n }\n public set lprRuleId(value: IGuid) {\n this.setFieldGuid('LprRuleId', value);\n }\n\n // Read1\n public get read1(): ILprReadEvent {\n return this.getFieldObject(LprReadEvent, 'Read1');\n }\n public set read1(value: ILprReadEvent) {\n this.setFieldObject('Read1', value);\n }\n\n // Read2\n public get read2(): ILprReadEvent {\n return this.getFieldObject(LprReadEvent, 'Read2');\n }\n public set read2(value: ILprReadEvent) {\n this.setFieldObject('Read2', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('AttributesXml', '');\n this.setField('DefaultColor', '');\n this.setField('HitType', '');\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('IsProtected', false);\n this.setField('IsRealTime', false);\n this.setFieldGuid('LprRuleId', SafeGuid.EMPTY);\n const objRead1 = new LprReadEvent();\n objRead1.initializeAllFields();\n this.setFieldObject('Read1', objRead1);\n const objRead2 = new LprReadEvent();\n objRead2.initializeAllFields();\n this.setFieldObject('Read2', objRead2);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiUserEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:08 PM\nimport { RoutableEvent } from './RoutableEvent';\nimport { IUserEvent } from '../Interface/IUserEvent';\n\nexport class UserEvent extends RoutableEvent implements IUserEvent {\n // #region REST Properties\n\n // UserDescriptor\n public get userDescriptor(): string {\n return this.getField('UserDescriptor');\n }\n public set userDescriptor(value: string) {\n this.setField('UserDescriptor', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('UserDescriptor', '');\n }\n\n // #endregion Methods\n\n}\n\n","import { FieldObject } from '../Helpers/FieldObject';\nimport { LogSeverity } from './Enumerations/LogSeverity';\nimport { SecurityCenterClient } from './SecurityCenterClient';\nimport { ConsoleCommandRequestReceivedArg } from '../Connection/RestArgs';\nimport { EventDispatcher, Handler } from '../Helpers/Helpers';\nimport { RestResponse } from '../Connection/RestResponse';\n\nexport class DiagnosticEventArgs {\n public logSeverity = '';\n public name = '';\n public message = '';\n public details = '';\n\n constructor(logSeverity: string, name: string, message: string, details: string) {\n this.logSeverity = logSeverity;\n this.name = name;\n this.message = message;\n this.details = details;\n }\n}\n\nexport class ServiceDomain {\n public serviceDomainId = '';\n public processId = 0;\n public loadingStrategy = '';\n\n constructor(serviceDomainId: string, processId: number, loadingStrategy: string) {\n this.serviceDomainId = serviceDomainId;\n this.processId = processId;\n this.loadingStrategy = loadingStrategy;\n }\n}\n\nexport class Service {\n public serviceId = '';\n public serviceType = '';\n\n public Service(serviceId: string, serviceType: string) {\n this.serviceId = serviceId;\n this.serviceType = serviceType;\n }\n}\n\nexport class DiagnosticManager {\n // #region Fields\n\n public consoleCommandDefaultAnswerEnabled = true;\n public enabled = true;\n private client: SecurityCenterClient;\n private _enabledLevel = new Map();\n private _handlers = new Map Promise>();\n private _streamerConsoleCommandRequestReceivedDispatcher = new EventDispatcher();\n\n // #endregion\n\n // #region Constructor\n\n constructor(client: SecurityCenterClient) {\n this.client = client;\n\n // All level enabled by default\n this._enabledLevel.set(LogSeverity.Debug, true);\n this._enabledLevel.set(LogSeverity.Error, true);\n this._enabledLevel.set(LogSeverity.Fatal, true);\n this._enabledLevel.set(LogSeverity.Information, true);\n this._enabledLevel.set(LogSeverity.Performance, true);\n this._enabledLevel.set(LogSeverity.Warning, true);\n }\n\n // #endregion\n\n // #region Public methods\n\n public enableTraceLevel(level: string, enable: boolean) {\n if (this._enabledLevel.has(level)) {\n this._enabledLevel.set(level, enable);\n }\n }\n\n public async sendTraceAsync(level: string, name: string, message: string, details: string) {\n if (!this.enabled) {\n return;\n }\n\n if (this.client.isLoggedOn) {\n try {\n const body = new FieldObject();\n body.setField('Level', level);\n body.setField('Name', name);\n body.setField('Message', message);\n body.setField('Details', details);\n await this.client.rest.executeRequestAsync('POST', '/v2/Traces', body.toString());\n } catch (e) {\n // ignore\n }\n }\n }\n\n public async addConsoleDebugCommandAsync(\n handler: (args: ConsoleCommandRequestReceivedArg) => Promise,\n group: string,\n method: string,\n param1: string,\n param2: string,\n param3: string,\n ) {\n const key = group + ' ' + method;\n if (this._handlers.has(key)) {\n this._handlers.delete(key);\n }\n this._handlers.set(key, handler);\n return this.client.rest.addConsoleDebugCommandAsync(group, method, param1, param2, param3);\n }\n\n public async executeDebugCommandAsync(logger: string, method: string, ...params: string[]): Promise {\n const body = new FieldObject();\n body.setField('logger', logger);\n body.setField('command', method);\n const parameters = new Array();\n\n let i = 0;\n for (const param of params) {\n const zeParam = new FieldObject();\n zeParam.setField('index', i);\n zeParam.setField('name', 'param' + i);\n zeParam.setField('type', 'System.String');\n zeParam.setField('value', param);\n parameters.push(zeParam.toJson());\n i = i + 1;\n }\n body.setField('parameters', JSON.stringify(parameters));\n\n const response = await this.client.rest.executeRequestAsync('POST', '/v2/DebugCommand', body.toString());\n return response;\n }\n\n public onConsoleCommandRequestReceived(handler: Handler) {\n return this._streamerConsoleCommandRequestReceivedDispatcher.subscribe(handler);\n }\n\n /*\n public virtual async Task> GetServiceDomainsAsync()\n {\n List result = new List();\n var response = await _client.Rest.ExecuteRequestAsync($\"/v2/ServiceDomains\", \"GET\", null).ConfigureAwait(false);\n var serviceDomains = response.GetArray();\n foreach( var domain in serviceDomains )\n {\n var domainId = domain.SelectStringToken(\"ServiceDomainId\");\n var processId = domain.SelectIntToken(\"ProcessId\");\n var loadingStrategy = domain.SelectStringToken(\"LoadingStrategy\");\n ServiceDomain newDomain = new ServiceDomain(domainId, processId.Value, loadingStrategy);\n result.Add(newDomain);\n }\n return result;\n }\n\n public virtual async Task> GetServicesAsync(string serviceDomainId)\n {\n List result = new List();\n var response = await _client.Rest.ExecuteRequestAsync($\"/v2/ServiceDomains/{serviceDomainId}\", \"GET\", null).ConfigureAwait(false);\n var services = response.GetArray();\n foreach (var service in services)\n {\n var serviceId = service.SelectStringToken(\"ServiceId\");\n var serviceType = service.SelectStringToken(\"ServiceType\");\n Service newService = new Service(serviceId, serviceType);\n result.Add(newService);\n }\n return result;\n }\n\n public virtual Task KillServiceDomainAsync(string serviceDomainId)\n {\n return _client.Rest.ExecuteRequestAsync($\"/v2/ServiceDomains/{serviceDomainId}\", \"DELETE\", null);\n }\n\n public virtual Task KillServiceAsync(string serviceDomainId, string serviceId)\n {\n return _client.Rest.ExecuteRequestAsync($\"/v2/ServiceDomains/{serviceDomainId}/{serviceId}\", \"DELETE\", null);\n }\n */\n\n // #endregion\n\n // #region Private Methods\n\n // #endregion\n\n // #region Internal\n\n public newConnectionCreated() {\n if (this.client.rest != null) {\n this.client.rest.onConsoleCommandRequestReceived((arg) => this.onInternalConsoleCommandRequestReceived(arg));\n }\n }\n\n // #endregion\n\n // #region Event handlers\n\n private async onInternalConsoleCommandRequestReceived(args: ConsoleCommandRequestReceivedArg) {\n try {\n const key = args.group + ' ' + args.method;\n if (this.enabled) {\n if (this._handlers.has(key)) {\n const handler = this._handlers.get(key);\n if (handler != null) {\n const response = await handler(args);\n if (response != null) {\n await this.client.rest.sendRequestResponseAsync(args.id, response);\n }\n return;\n }\n }\n }\n if (this.consoleCommandDefaultAnswerEnabled === true) {\n await this.client.rest.sendRequestResponseAsync(args.id, 'OK'); // always respond something\n return;\n }\n this._streamerConsoleCommandRequestReceivedDispatcher.dispatch(args);\n } catch (e: any) {\n await this.client.rest.sendRequestResponseAsync(args.id, e.toString()); // always respond something\n }\n }\n\n // #endregion\n}\n","\nimport { EventBase } from \"./EventBase\";\n\nexport class EventTypeProvider {\n // tslint:disable-next-line: variable-name\n EventType!: string;\n}\n\nexport class MultiEvent extends EventBase {\n public get events(): Array {\n const events = this.getField(\"Events\");\n return JSON.parse(events);\n }\n}\n","// Autogenerated: v2/help/Classes/ApiModifiedIncidentEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:11 AM\nimport { RoutableEvent } from './RoutableEvent';\nimport { IModifiedIncidentEvent } from '../Interface/IModifiedIncidentEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class ModifiedIncidentEvent extends RoutableEvent implements IModifiedIncidentEvent {\n // #region REST Properties\n\n // IncidentId\n public get incidentId(): IGuid {\n return this.getFieldGuid('IncidentId');\n }\n public set incidentId(value: IGuid) {\n this.setFieldGuid('IncidentId', value);\n }\n\n // IncidentNote\n public get incidentNote(): string {\n return this.getField('IncidentNote');\n }\n public set incidentNote(value: string) {\n this.setField('IncidentNote', value);\n }\n\n // IncidentTimestamp\n public get incidentTimestamp(): Date {\n return this.getFieldDate('IncidentTimestamp');\n }\n public set incidentTimestamp(value: Date) {\n this.setFieldDate('IncidentTimestamp', value);\n }\n\n // IncidentTitle\n public get incidentTitle(): string {\n return this.getField('IncidentTitle');\n }\n public set incidentTitle(value: string) {\n this.setField('IncidentTitle', value);\n }\n\n // IsDeleted\n public get isDeleted(): boolean {\n return this.getField('IsDeleted');\n }\n public set isDeleted(value: boolean) {\n this.setField('IsDeleted', value);\n }\n\n // Latitude\n public get latitude(): number | null {\n return this.getNullableField('Latitude');\n }\n public set latitude(value: number | null) {\n this.setNullableField('Latitude', value);\n }\n\n // Longitude\n public get longitude(): number | null {\n return this.getNullableField('Longitude');\n }\n public set longitude(value: number | null) {\n this.setNullableField('Longitude', value);\n }\n\n // ReferencedEntities\n public get referencedEntities(): ObservableCollection {\n return this.getFieldArrayGuid('ReferencedEntities');\n }\n public set referencedEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('ReferencedEntities', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('IncidentId', SafeGuid.EMPTY);\n this.setField('IncidentNote', '');\n this.setFieldDate('IncidentTimestamp', new Date());\n this.setField('IncidentTitle', '');\n this.setField('IsDeleted', false);\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setFieldArrayGuid('ReferencedEntities', new ObservableCollection());\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ICardholderEvent } from '../Interface/ICardholderEvent';\nimport { RoutableEvent } from './RoutableEvent';\nimport { TimezoneEvent } from './TimezoneEvent';\n\nexport class CardholderEvent extends TimezoneEvent implements ICardholderEvent {\n // #region REST Properties\n\n // Cardholder\n public get cardholder(): IGuid {\n return this.getFieldGuid('Cardholder');\n }\n public set cardholder(value: IGuid) {\n this.setFieldGuid('Cardholder', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Cardholder', SafeGuid.EMPTY);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderAntipassbackEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ICardholderAntipassbackEvent } from '../Interface/ICardholderAntipassbackEvent';\nimport { CardholderEvent } from './CardholderEvent';\n\nexport class CardholderAntipassbackEvent extends CardholderEvent implements ICardholderAntipassbackEvent {\n // #region REST Properties\n\n // AreaDirectionGuid\n public get areaDirectionGuid(): IGuid {\n return this.getFieldGuid('AreaDirectionGuid');\n }\n public set areaDirectionGuid(value: IGuid) {\n this.setFieldGuid('AreaDirectionGuid', value);\n }\n\n // DoorSideGuid\n public get doorSideGuid(): IGuid {\n return this.getFieldGuid('DoorSideGuid');\n }\n public set doorSideGuid(value: IGuid) {\n this.setFieldGuid('DoorSideGuid', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('AreaDirectionGuid', SafeGuid.EMPTY);\n this.setFieldGuid('DoorSideGuid', SafeGuid.EMPTY);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderAntipassbackForgivenEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-01-21 12:36:23 PM\nimport { IGuid } from 'safeguid';\nimport { ICardholderAntipassbackForgivenEvent } from '../Interface/ICardholderAntipassbackForgivenEvent';\nimport { CardholderEvent } from './CardholderEvent';\n\nexport class CardholderAntipassbackForgivenEvent extends CardholderEvent implements ICardholderAntipassbackForgivenEvent {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoor?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { IFieldObject } from './IFieldObject';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class DoorEntityFields extends EntityFields {\n public static doorForcedBehaviorField = 'DoorForcedBehavior';\n public static doorHeldBehaviorField = 'DoorHeldBehavior';\n public static doorLockField = 'DoorLock';\n public static doorOpenedField = 'DoorOpened';\n public static doorRelockDelayField = 'DoorRelockDelay';\n public static doorRelockOnCloseField = 'DoorRelockOnClose';\n public static doorSensorField = 'DoorSensor';\n public static entrySensorExtendedGrantTimeField = 'EntrySensorExtendedGrantTime';\n public static entrySensorStandardGrantTimeField = 'EntrySensorStandardGrantTime';\n public static extendedGrantTimeField = 'ExtendedGrantTime';\n public static interfaceModuleField = 'InterfaceModule';\n public static isLockedField = 'IsLocked';\n public static isLockSensorUnsecuredField = 'IsLockSensorUnsecured';\n public static maintenanceModeActiveField = 'MaintenanceModeActive';\n public static mainUnitField = 'MainUnit';\n public static manualStationPulledField = 'ManualStationPulled';\n public static maskAccessWhenUnlockedByScheduleField = 'MaskAccessWhenUnlockedBySchedule';\n public static maskDoorOpenTooLongWhenUnlockedByScheduleField = 'MaskDoorOpenTooLongWhenUnlockedBySchedule';\n public static maximumDelayBetweenSwipesField = 'MaximumDelayBetweenSwipes';\n public static normalGrantTimeField = 'NormalGrantTime';\n public static rexHoldOffAfterClosedDelayField = 'RexHoldOffAfterClosedDelay';\n public static rexHoldOffAfterGrantDelayField = 'RexHoldOffAfterGrantDelay';\n public static rexHoldoffWhileOpenedField = 'RexHoldoffWhileOpened';\n public static unlockOnRexField = 'UnlockOnRex';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IAutoUnlockOverride extends IFieldObject {\n start: Date;\n end: Date;\n isUnlocking: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface IDoorEntity extends IEntity {\n // #region REST Properties\n\n doorForcedBehavior: string;\n\n doorHeldBehavior: string;\n\n readonly doorLock: IGuid;\n\n readonly doorOpened: boolean;\n\n doorRelockDelay: number;\n\n doorRelockOnClose: boolean;\n\n readonly doorSensor: IGuid;\n\n entrySensorExtendedGrantTime: number;\n\n entrySensorStandardGrantTime: number;\n\n extendedGrantTime: number;\n\n interfaceModule: IGuid;\n\n readonly isLocked: boolean;\n\n readonly isLockSensorUnsecured: boolean;\n\n maintenanceModeActive: boolean;\n\n mainUnit: IGuid;\n\n readonly manualStationPulled: boolean;\n\n maskAccessWhenUnlockedBySchedule: boolean;\n\n maskDoorOpenTooLongWhenUnlockedBySchedule: boolean;\n\n maximumDelayBetweenSwipes: number;\n\n normalGrantTime: number;\n\n rexHoldOffAfterClosedDelay: number;\n\n rexHoldOffAfterGrantDelay: number;\n\n rexHoldoffWhileOpened: boolean;\n\n unlockOnRex: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n deleteAutoUnlockOverrideAsync(transaction?: ITransaction | null): Promise;\n getAutoUnlockOverrideAsync(transaction?: ITransaction | null): Promise;\n addAutoUnlockOverrideAsync(value: IAutoUnlockOverride, transaction?: ITransaction | null): Promise;\n getDoorSidesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n unlockAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoor?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:02 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAutoUnlockOverride, IDoorEntity, DoorEntityFields } from '../../Interface/IDoorEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { RestResponse } from '../../../Connection/RestResponse';\n\n// #region Inner classes\n\nexport class AutoUnlockOverride extends FieldObject implements IAutoUnlockOverride {\n // Start\n public get start(): Date {\n return this.getFieldDate('Start');\n }\n public set start(value: Date) {\n this.setFieldDate('Start', value);\n }\n // End\n public get end(): Date {\n return this.getFieldDate('End');\n }\n public set end(value: Date) {\n this.setFieldDate('End', value);\n }\n // IsUnlocking\n public get isUnlocking(): boolean {\n return this.getField('IsUnlocking');\n }\n public set isUnlocking(value: boolean) {\n this.setField('IsUnlocking', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldDate('Start', new Date());\n this.setFieldDate('End', new Date());\n this.setField('IsUnlocking', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class DoorEntity extends Entity implements IDoorEntity {\n // #region REST Properties\n\n // DoorForcedBehavior\n public get doorForcedBehavior(): string {\n return this.getField(DoorEntityFields.doorForcedBehaviorField, ValidFlags.Specific);\n }\n public set doorForcedBehavior(value: string) {\n this.setField(DoorEntityFields.doorForcedBehaviorField, value);\n }\n\n // DoorHeldBehavior\n public get doorHeldBehavior(): string {\n return this.getField(DoorEntityFields.doorHeldBehaviorField, ValidFlags.Specific);\n }\n public set doorHeldBehavior(value: string) {\n this.setField(DoorEntityFields.doorHeldBehaviorField, value);\n }\n\n // DoorLock\n public get doorLock(): IGuid {\n return this.getFieldGuid(DoorEntityFields.doorLockField, ValidFlags.Membership);\n }\n\n // DoorOpened\n public get doorOpened(): boolean {\n return this.getField(DoorEntityFields.doorOpenedField, ValidFlags.EntityStatus);\n }\n\n // DoorRelockDelay\n public get doorRelockDelay(): number {\n return this.getField(DoorEntityFields.doorRelockDelayField, ValidFlags.Specific);\n }\n public set doorRelockDelay(value: number) {\n this.setField(DoorEntityFields.doorRelockDelayField, value);\n }\n\n // DoorRelockOnClose\n public get doorRelockOnClose(): boolean {\n return this.getField(DoorEntityFields.doorRelockOnCloseField, ValidFlags.Specific);\n }\n public set doorRelockOnClose(value: boolean) {\n this.setField(DoorEntityFields.doorRelockOnCloseField, value);\n }\n\n // DoorSensor\n public get doorSensor(): IGuid {\n return this.getFieldGuid(DoorEntityFields.doorSensorField, ValidFlags.Membership);\n }\n\n // EntrySensorExtendedGrantTime\n public get entrySensorExtendedGrantTime(): number {\n return this.getField(DoorEntityFields.entrySensorExtendedGrantTimeField, ValidFlags.Specific);\n }\n public set entrySensorExtendedGrantTime(value: number) {\n this.setField(DoorEntityFields.entrySensorExtendedGrantTimeField, value);\n }\n\n // EntrySensorStandardGrantTime\n public get entrySensorStandardGrantTime(): number {\n return this.getField(DoorEntityFields.entrySensorStandardGrantTimeField, ValidFlags.Specific);\n }\n public set entrySensorStandardGrantTime(value: number) {\n this.setField(DoorEntityFields.entrySensorStandardGrantTimeField, value);\n }\n\n // ExtendedGrantTime\n public get extendedGrantTime(): number {\n return this.getField(DoorEntityFields.extendedGrantTimeField, ValidFlags.Specific);\n }\n public set extendedGrantTime(value: number) {\n this.setField(DoorEntityFields.extendedGrantTimeField, value);\n }\n\n // InterfaceModule\n public get interfaceModule(): IGuid {\n return this.getFieldGuid(DoorEntityFields.interfaceModuleField, ValidFlags.Specific);\n }\n public set interfaceModule(value: IGuid) {\n this.setFieldGuid(DoorEntityFields.interfaceModuleField, value);\n }\n\n // IsLocked\n public get isLocked(): boolean {\n return this.getField(DoorEntityFields.isLockedField, ValidFlags.EntityStatus);\n }\n\n // IsLockSensorUnsecured\n public get isLockSensorUnsecured(): boolean {\n return this.getField(DoorEntityFields.isLockSensorUnsecuredField, ValidFlags.EntityStatus);\n }\n\n // MaintenanceModeActive\n public get maintenanceModeActive(): boolean {\n return this.getField(DoorEntityFields.maintenanceModeActiveField, ValidFlags.Behavior);\n }\n public set maintenanceModeActive(value: boolean) {\n this.setField(DoorEntityFields.maintenanceModeActiveField, value);\n }\n\n // MainUnit\n public get mainUnit(): IGuid {\n return this.getFieldGuid(DoorEntityFields.mainUnitField, ValidFlags.Specific);\n }\n public set mainUnit(value: IGuid) {\n this.setFieldGuid(DoorEntityFields.mainUnitField, value);\n }\n\n // ManualStationPulled\n public get manualStationPulled(): boolean {\n return this.getField(DoorEntityFields.manualStationPulledField, ValidFlags.EntityStatus);\n }\n\n // MaskAccessWhenUnlockedBySchedule\n public get maskAccessWhenUnlockedBySchedule(): boolean {\n return this.getField(DoorEntityFields.maskAccessWhenUnlockedByScheduleField, ValidFlags.Specific);\n }\n public set maskAccessWhenUnlockedBySchedule(value: boolean) {\n this.setField(DoorEntityFields.maskAccessWhenUnlockedByScheduleField, value);\n }\n\n // MaskDoorOpenTooLongWhenUnlockedBySchedule\n public get maskDoorOpenTooLongWhenUnlockedBySchedule(): boolean {\n return this.getField(DoorEntityFields.maskDoorOpenTooLongWhenUnlockedByScheduleField, ValidFlags.Specific);\n }\n public set maskDoorOpenTooLongWhenUnlockedBySchedule(value: boolean) {\n this.setField(DoorEntityFields.maskDoorOpenTooLongWhenUnlockedByScheduleField, value);\n }\n\n // MaximumDelayBetweenSwipes\n public get maximumDelayBetweenSwipes(): number {\n return this.getField(DoorEntityFields.maximumDelayBetweenSwipesField, ValidFlags.Specific);\n }\n public set maximumDelayBetweenSwipes(value: number) {\n this.setField(DoorEntityFields.maximumDelayBetweenSwipesField, value);\n }\n\n // NormalGrantTime\n public get normalGrantTime(): number {\n return this.getField(DoorEntityFields.normalGrantTimeField, ValidFlags.Specific);\n }\n public set normalGrantTime(value: number) {\n this.setField(DoorEntityFields.normalGrantTimeField, value);\n }\n\n // RexHoldOffAfterClosedDelay\n public get rexHoldOffAfterClosedDelay(): number {\n return this.getField(DoorEntityFields.rexHoldOffAfterClosedDelayField, ValidFlags.Specific);\n }\n public set rexHoldOffAfterClosedDelay(value: number) {\n this.setField(DoorEntityFields.rexHoldOffAfterClosedDelayField, value);\n }\n\n // RexHoldOffAfterGrantDelay\n public get rexHoldOffAfterGrantDelay(): number {\n return this.getField(DoorEntityFields.rexHoldOffAfterGrantDelayField, ValidFlags.Specific);\n }\n public set rexHoldOffAfterGrantDelay(value: number) {\n this.setField(DoorEntityFields.rexHoldOffAfterGrantDelayField, value);\n }\n\n // RexHoldoffWhileOpened\n public get rexHoldoffWhileOpened(): boolean {\n return this.getField(DoorEntityFields.rexHoldoffWhileOpenedField, ValidFlags.Specific);\n }\n public set rexHoldoffWhileOpened(value: boolean) {\n this.setField(DoorEntityFields.rexHoldoffWhileOpenedField, value);\n }\n\n // UnlockOnRex\n public get unlockOnRex(): boolean {\n return this.getField(DoorEntityFields.unlockOnRexField, ValidFlags.Behavior);\n }\n public set unlockOnRex(value: boolean) {\n this.setField(DoorEntityFields.unlockOnRexField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Doors);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPoints', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n public async deleteAutoUnlockOverrideAsync(): Promise {\n await this.updateDataRelation2Async(AutoUnlockOverride, 'AutoUnlockOverride', 'DELETE', true, ValidFlags.Behavior, null);\n return new RestResponse(HttpStatusCode.OK);\n }\n\n public async getAutoUnlockOverrideAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(AutoUnlockOverride, 'AutoUnlockOverride', true, ValidFlags.Behavior, transaction);\n }\n\n public async addAutoUnlockOverrideAsync(value: IAutoUnlockOverride, transaction?: ITransaction | null): Promise {\n return await this.updateDataRelation2Async(AutoUnlockOverride, 'AutoUnlockOverride', 'POST', true, ValidFlags.Behavior, value);\n }\n\n public async getDoorSidesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('DoorSides', 'Id', true, query, ValidFlags.Membership, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', true, query, ValidFlags.EntityMembership, transaction);\n }\n\n public async unlockAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('Unlock', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCredential?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\n\n// #region Fields\n\nexport class CredentialEntityFields extends EntityFields {\n public static accessStatusField = 'AccessStatus';\n public static activationDateField = 'ActivationDate';\n public static badgeTemplateField = 'BadgeTemplate';\n public static cardholderField = 'Cardholder';\n public static cardNumberField = 'CardNumber';\n public static credentialCodeField = 'CredentialCode';\n public static credentialTypeField = 'CredentialType';\n public static expirationDateField = 'ExpirationDate';\n public static expirationDurationField = 'ExpirationDuration';\n public static expirationModeField = 'ExpirationMode';\n public static facilityField = 'Facility';\n public static formatField = 'Format';\n public static formatFriendlyNameField = 'FormatFriendlyName';\n public static keyPadField = 'KeyPad';\n public static uniqueIdField = 'UniqueId';\n}\n\n// #endregion Fields\n\nexport interface ICredentialEntity extends IEntity {\n // #region REST Properties\n\n accessStatus: string;\n\n activationDate: Date;\n\n badgeTemplate: IGuid;\n\n cardholder: IGuid;\n\n cardNumber: number;\n\n readonly credentialCode: string;\n\n credentialType: string;\n\n expirationDate: Date;\n\n expirationDuration: number;\n\n expirationMode: string;\n\n facility: number;\n\n format: IGuid;\n\n readonly formatFriendlyName: string;\n\n\n uniqueId: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiCredential?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { IGuid } from 'safeguid';\nimport { ICredentialEntity, CredentialEntityFields } from '../../Interface/ICredentialEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\n\nexport class CredentialEntity extends Entity implements ICredentialEntity {\n // #region REST Properties\n\n // AccessStatus\n public get accessStatus(): string {\n return this.getField(CredentialEntityFields.accessStatusField, ValidFlags.Specific);\n }\n public set accessStatus(value: string) {\n this.setField(CredentialEntityFields.accessStatusField, value);\n }\n\n // ActivationDate\n public get activationDate(): Date {\n return this.getFieldDate(CredentialEntityFields.activationDateField, ValidFlags.Specific);\n }\n public set activationDate(value: Date) {\n this.setFieldDate(CredentialEntityFields.activationDateField, value);\n }\n\n // BadgeTemplate\n public get badgeTemplate(): IGuid {\n return this.getFieldGuid(CredentialEntityFields.badgeTemplateField, ValidFlags.Specific);\n }\n public set badgeTemplate(value: IGuid) {\n this.setFieldGuid(CredentialEntityFields.badgeTemplateField, value);\n }\n\n // Cardholder\n public get cardholder(): IGuid {\n return this.getFieldGuid(CredentialEntityFields.cardholderField, ValidFlags.Specific);\n }\n public set cardholder(value: IGuid) {\n this.setFieldGuid(CredentialEntityFields.cardholderField, value);\n }\n\n // CardNumber\n public get cardNumber(): number {\n return this.getField(CredentialEntityFields.cardNumberField);\n }\n public set cardNumber(value: number) {\n this.setField(CredentialEntityFields.cardNumberField, value);\n }\n\n // CredentialCode\n public get credentialCode(): string {\n return this.getField(CredentialEntityFields.credentialCodeField, ValidFlags.Specific);\n }\n\n // CredentialType\n public get credentialType(): string {\n return this.getField(CredentialEntityFields.credentialTypeField, ValidFlags.Base);\n }\n public set credentialType(value: string) {\n this.setField(CredentialEntityFields.credentialTypeField, value);\n }\n\n // ExpirationDate\n public get expirationDate(): Date {\n return this.getFieldDate(CredentialEntityFields.expirationDateField, ValidFlags.Specific);\n }\n public set expirationDate(value: Date) {\n this.setFieldDate(CredentialEntityFields.expirationDateField, value);\n }\n\n // ExpirationDuration\n public get expirationDuration(): number {\n return this.getField(CredentialEntityFields.expirationDurationField, ValidFlags.Specific);\n }\n public set expirationDuration(value: number) {\n this.setField(CredentialEntityFields.expirationDurationField, value);\n }\n\n // ExpirationMode\n public get expirationMode(): string {\n return this.getField(CredentialEntityFields.expirationModeField, ValidFlags.Specific);\n }\n public set expirationMode(value: string) {\n this.setField(CredentialEntityFields.expirationModeField, value);\n }\n\n // Facility\n public get facility(): number {\n return this.getField(CredentialEntityFields.facilityField);\n }\n public set facility(value: number) {\n this.setField(CredentialEntityFields.facilityField, value);\n }\n\n // Format\n public get format(): IGuid {\n return this.getFieldGuid(CredentialEntityFields.formatField);\n }\n public set format(value: IGuid) {\n this.setFieldGuid(CredentialEntityFields.formatField, value);\n }\n\n // FormatFriendlyName\n public get formatFriendlyName(): string {\n return this.getField(CredentialEntityFields.formatFriendlyNameField, ValidFlags.Specific);\n }\n\n // KeyPad\n public set keyPad(value: number) {\n this.setField(CredentialEntityFields.keyPadField, value);\n }\n\n // UniqueId\n public get uniqueId(): string {\n return this.getField(CredentialEntityFields.uniqueIdField, ValidFlags.Specific);\n }\n public set uniqueId(value: string) {\n this.setField(CredentialEntityFields.uniqueIdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Credentials);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderAccessEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:12:10 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ICardholderAccessEvent } from '../Interface/ICardholderAccessEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { CardholderEvent } from './CardholderEvent';\n\nexport class CardholderAccessEvent extends CardholderEvent implements ICardholderAccessEvent {\n // #region REST Properties\n\n // AccessPoint\n public get accessPoint(): IGuid {\n return this.getFieldGuid('AccessPoint');\n }\n public set accessPoint(value: IGuid) {\n this.setFieldGuid('AccessPoint', value);\n }\n\n // Credentials\n public get credentials(): ObservableCollection {\n return this.getFieldArrayGuid('Credentials');\n }\n public set credentials(value: ObservableCollection) {\n this.setFieldArrayGuid('Credentials', value);\n }\n\n // DoorSide\n public get doorSide(): IGuid {\n return this.getFieldGuid('DoorSide');\n }\n public set doorSide(value: IGuid) {\n this.setFieldGuid('DoorSide', value);\n }\n\n // LicensePlateExactMatch\n public get licensePlateExactMatch(): boolean {\n return this.getField('LicensePlateExactMatch');\n }\n public set licensePlateExactMatch(value: boolean) {\n this.setField('LicensePlateExactMatch', value);\n }\n\n // UnderDuress\n public get underDuress(): boolean {\n return this.getField('UnderDuress');\n }\n public set underDuress(value: boolean) {\n this.setField('UnderDuress', value);\n }\n\n // WrongPin\n public get wrongPin(): string {\n return this.getField('WrongPin');\n }\n public set wrongPin(value: string) {\n this.setField('WrongPin', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('AccessPoint', SafeGuid.EMPTY);\n this.setFieldArrayGuid('Credentials', new ObservableCollection());\n this.setFieldGuid('DoorSide', SafeGuid.EMPTY);\n this.setField('LicensePlateExactMatch', false);\n this.setField('UnderDuress', false);\n this.setField('WrongPin', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCredentialStatusEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ICredentialStatusEvent } from '../Interface/ICredentialStatusEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class CredentialStatusEvent extends TimezoneEvent implements ICredentialStatusEvent {\n // #region REST Properties\n\n // AccessPointGuid\n public get accessPointGuid(): IGuid {\n return this.getFieldGuid('AccessPointGuid');\n }\n public set accessPointGuid(value: IGuid) {\n this.setFieldGuid('AccessPointGuid', value);\n }\n\n // AccessPointGuidDesc\n public get accessPointGuidDesc(): string {\n return this.getField('AccessPointGuidDesc');\n }\n public set accessPointGuidDesc(value: string) {\n this.setField('AccessPointGuidDesc', value);\n }\n\n // DoorSideGuid\n public get doorSideGuid(): IGuid {\n return this.getFieldGuid('DoorSideGuid');\n }\n public set doorSideGuid(value: IGuid) {\n this.setFieldGuid('DoorSideGuid', value);\n }\n\n // DoorSideGuidDesc\n public get doorSideGuidDesc(): string {\n return this.getField('DoorSideGuidDesc');\n }\n public set doorSideGuidDesc(value: string) {\n this.setField('DoorSideGuidDesc', value);\n }\n\n // DoorSideGuidType\n public get doorSideGuidType(): string {\n return this.getField('DoorSideGuidType');\n }\n public set doorSideGuidType(value: string) {\n this.setField('DoorSideGuidType', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('AccessPointGuid', SafeGuid.EMPTY);\n this.setField('AccessPointGuidDesc', '');\n this.setFieldGuid('DoorSideGuid', SafeGuid.EMPTY);\n this.setField('DoorSideGuidDesc', '');\n this.setField('DoorSideGuidType', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAccessPointCredentialStatusEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAccessPointCredentialStatusEvent } from '../Interface/IAccessPointCredentialStatusEvent';\n\nexport class AccessPointCredentialStatusEvent extends TimezoneEvent implements IAccessPointCredentialStatusEvent {\n // #region REST Properties\n\n // CredentialGuid\n public get credentialGuid(): IGuid {\n return this.getFieldGuid('CredentialGuid');\n }\n public set credentialGuid(value: IGuid) {\n this.setFieldGuid('CredentialGuid', value);\n }\n\n // CredentialGuidDesc\n public get credentialGuidDesc(): string {\n return this.getField('CredentialGuidDesc');\n }\n public set credentialGuidDesc(value: string) {\n this.setField('CredentialGuidDesc', value);\n }\n\n // DoorSideGuid\n public get doorSideGuid(): IGuid {\n return this.getFieldGuid('DoorSideGuid');\n }\n public set doorSideGuid(value: IGuid) {\n this.setFieldGuid('DoorSideGuid', value);\n }\n\n // DoorSideGuidDesc\n public get doorSideGuidDesc(): string {\n return this.getField('DoorSideGuidDesc');\n }\n public set doorSideGuidDesc(value: string) {\n this.setField('DoorSideGuidDesc', value);\n }\n\n // DoorSideGuidType\n public get doorSideGuidType(): string {\n return this.getField('DoorSideGuidType');\n }\n public set doorSideGuidType(value: string) {\n this.setField('DoorSideGuidType', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('CredentialGuid', SafeGuid.EMPTY);\n this.setField('CredentialGuidDesc', '');\n this.setFieldGuid('DoorSideGuid', SafeGuid.EMPTY);\n this.setField('DoorSideGuidDesc', '');\n this.setField('DoorSideGuidType', '');\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderIdentityValidationEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:51 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ICardholderIdentityValidationEvent } from '../Interface/ICardholderIdentityValidationEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { CardholderEvent } from './CardholderEvent';\n\nexport class CardholderIdentityValidationEvent extends CardholderEvent implements ICardholderIdentityValidationEvent {\n // #region REST Properties\n\n // AccessPoint\n public get accessPoint(): IGuid {\n return this.getFieldGuid('AccessPoint');\n }\n public set accessPoint(value: IGuid) {\n this.setFieldGuid('AccessPoint', value);\n }\n\n // Area\n public get area(): IGuid {\n return this.getFieldGuid('Area');\n }\n public set area(value: IGuid) {\n this.setFieldGuid('Area', value);\n }\n\n // Door\n public get door(): IGuid {\n return this.getFieldGuid('Door');\n }\n public set door(value: IGuid) {\n this.setFieldGuid('Door', value);\n }\n\n // DoorSide\n public get doorSide(): IGuid {\n return this.getFieldGuid('DoorSide');\n }\n public set doorSide(value: IGuid) {\n this.setFieldGuid('DoorSide', value);\n }\n\n // Unit\n public get unit(): IGuid {\n return this.getFieldGuid('Unit');\n }\n public set unit(value: IGuid) {\n this.setFieldGuid('Unit', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('AccessPoint', SafeGuid.EMPTY);\n this.setFieldGuid('Area', SafeGuid.EMPTY);\n this.setFieldGuid('Door', SafeGuid.EMPTY);\n this.setFieldGuid('DoorSide', SafeGuid.EMPTY);\n this.setFieldGuid('Unit', SafeGuid.EMPTY);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiIdentityValidationEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:01:52 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IIdentityValidationEvent } from '../Interface/IIdentityValidationEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\nexport class IdentityValidationEvent extends TimezoneEvent implements IIdentityValidationEvent {\n // #region REST Properties\n\n // Area\n public get area(): IGuid {\n return this.getFieldGuid('Area');\n }\n public set area(value: IGuid) {\n this.setFieldGuid('Area', value);\n }\n\n // Cardholder\n public get cardholder(): IGuid {\n return this.getFieldGuid('Cardholder');\n }\n public set cardholder(value: IGuid) {\n this.setFieldGuid('Cardholder', value);\n }\n\n // Door\n public get door(): IGuid {\n return this.getFieldGuid('Door');\n }\n public set door(value: IGuid) {\n this.setFieldGuid('Door', value);\n }\n\n // DoorSide\n public get doorSide(): IGuid {\n return this.getFieldGuid('DoorSide');\n }\n public set doorSide(value: IGuid) {\n this.setFieldGuid('DoorSide', value);\n }\n\n // Unit\n public get unit(): IGuid {\n return this.getFieldGuid('Unit');\n }\n public set unit(value: IGuid) {\n this.setFieldGuid('Unit', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Area', SafeGuid.EMPTY);\n this.setFieldGuid('Cardholder', SafeGuid.EMPTY);\n this.setFieldGuid('Door', SafeGuid.EMPTY);\n this.setFieldGuid('DoorSide', SafeGuid.EMPTY);\n this.setFieldGuid('Unit', SafeGuid.EMPTY);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiCardholderAccessGrantConfirmationRequestedEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-06-04 9:12:13 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid } from 'safeguid';\nimport { ICardholderAccessGrantConfirmationRequestedEvent } from '../Interface/ICardholderAccessGrantConfirmationRequestedEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { CardholderIdentityValidationEvent } from './CardholderIdentityValidationEvent';\n\nexport class CardholderAccessGrantConfirmationRequestedEvent extends CardholderIdentityValidationEvent implements ICardholderAccessGrantConfirmationRequestedEvent {\n // #region REST Properties\n\n // BiometricScore\n public get biometricScore(): number {\n return this.getField('BiometricScore');\n }\n public set biometricScore(value: number) {\n this.setField('BiometricScore', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('BiometricScore', 0);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ApiAccessGrantConfirmationRequestedEvent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-06-04 9:21:56 AM\nimport { TimezoneEvent } from './TimezoneEvent';\nimport { IGuid } from 'safeguid';\nimport { IAccessGrantConfirmationRequestedEvent } from '../Interface/IAccessGrantConfirmationRequestedEvent';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IdentityValidationEvent } from './IdentityValidationEvent';\n\nexport class AccessGrantConfirmationRequestedEvent extends IdentityValidationEvent implements IAccessGrantConfirmationRequestedEvent {\n // #region REST Properties\n\n // BiometricScore\n public get biometricScore(): number {\n return this.getField('BiometricScore');\n }\n public set biometricScore(value: number) {\n this.setField('BiometricScore', value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('BiometricScore', 0);\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/enumerations/systemids?codegen=ts on 2022-07-05 4:50:11 PM\nimport { SafeGuid } from 'safeguid';\n\nexport class Guids {\n public static AccessRuleReportTemplate = SafeGuid.parse('d52780fa-1fb9-452a-842c-5e54f59abf0f');\n public static ActiveOutputBehavior = SafeGuid.parse('00000000-0000-0000-0000-00000000000e');\n public static RemoteUser = SafeGuid.parse('00000000-0000-0000-0000-000000000005');\n public static Administrator = SafeGuid.parse('00000000-0000-0000-0000-000000000003');\n public static Administrators = SafeGuid.parse('00000000-0000-0000-0000-000000000002');\n public static SCCompactOperator = SafeGuid.parse('12aba0d0-6821-4140-93c2-31eea4a18ab4');\n public static SCCompactViewer = SafeGuid.parse('aff25b68-4814-4767-adac-5ecd27836d0f');\n public static SCCompactRestrictedPartition = SafeGuid.parse('33170d62-ea13-431d-8cee-e0bae02dbccf');\n public static AlarmReportTemplate = SafeGuid.parse('89d3dcef-a0fe-48e5-8236-b3fe85f29bfa');\n public static AlertAudioFile = SafeGuid.parse('7eb04bf7-b47c-4505-8194-89ac7413a889');\n public static AllCardholders = SafeGuid.parse('00000000-0000-0000-0000-000000000008');\n public static AllOpenRule = SafeGuid.parse('00000000-0000-0000-0000-00000000000a');\n public static AlwaysSchedule = SafeGuid.parse('00000000-0000-0000-0000-000000000006');\n public static AntipassbackRule = SafeGuid.parse('00000000-0000-0000-0000-00000000000c');\n public static AreaPresenceReportTemplate = SafeGuid.parse('a1c3d7e2-4cef-48a0-bf66-af1630636fbd');\n public static AutoGeneratedReportTemplate = SafeGuid.parse('f67ee4ba-22cc-44af-a0b7-70292df541cf');\n public static Bell1AudioFile = SafeGuid.parse('6b85acd1-b8b8-4b92-9044-5b93c44810cd');\n public static Bell2AudioFile = SafeGuid.parse('faf65682-1be1-4456-966b-5d651070eff9');\n public static Bell3AudioFile = SafeGuid.parse('1281203a-3e58-4245-ab15-a8fb2f38f0df');\n public static BuzzerAudioFile = SafeGuid.parse('d3154a22-b84d-4689-8c7f-c7e35f5541d4');\n public static CardholderActivityReportTemplate = SafeGuid.parse('8ea875c2-ed64-4cb0-8e8c-d10a5100a3ff');\n public static CardholderUnknownImage = SafeGuid.parse('256ed239-8731-4ab0-9ff6-197c8708fcf8');\n public static UnknownImage = SafeGuid.parse('a0b7fd3b-f81a-4581-b206-ef1c3cc3a706');\n public static RootPartition = SafeGuid.parse('00000000-0000-0000-0000-00000000000b');\n public static MasterPartition = SafeGuid.parse('00000000-0000-0000-0000-000000000bbb');\n public static SystemPartition = SafeGuid.parse('00000000-0000-0000-0000-0000000000bb');\n public static DoorActivityReportTemplate = SafeGuid.parse('ab0d97c5-b5ce-44b0-af28-374ba3d43c84');\n public static DoorAudioFile = SafeGuid.parse('cf7ad417-846a-49e7-a818-0f082ed2a3af');\n public static DoorBell1AudioFile = SafeGuid.parse('a976ca14-97e4-4cff-a006-f7e49df81f5f');\n public static DoorBell2AudioFile = SafeGuid.parse('ac3445b4-7b69-4706-9c7f-69b584f07631');\n public static FallbackPrivilege = SafeGuid.parse('cb0157c7-4b19-4e95-b4b7-94a22faa9995');\n public static GlassAudioFile = SafeGuid.parse('760be459-8db3-40e4-ba0a-e850e90373b9');\n public static HealthReportTemplate = SafeGuid.parse('f6e971df-59c0-4a2a-9f6b-ca94bd2fbeba');\n public static LockAudioFile = SafeGuid.parse('0cab3e75-57c6-46d3-a68b-f8af95adc1c5');\n public static LockdownRule = SafeGuid.parse('00000000-0000-0000-0000-000000000009');\n public static NormalOutputBehavior = SafeGuid.parse('00000000-0000-0000-0000-00000000000f');\n public static RootPrivilege = SafeGuid.parse('38acc600-4a32-44ff-8df5-0797d888930b');\n public static Service = SafeGuid.parse('00000000-0000-0000-0000-000000000004');\n public static SystemConfiguration = SafeGuid.parse('00000000-0000-0000-0000-000000000007');\n public static ThreeBellsAudioFile = SafeGuid.parse('5fa90e60-b028-4f75-87ef-b9a4e848cdd7');\n public static TimeAndAttendanceReportTemplate = SafeGuid.parse('528f23bb-174e-4e60-8abb-bc93e9ee9100');\n public static UnitActivityReportTemplate = SafeGuid.parse('f8bc0a89-2a04-434e-8a68-9e2aeb9c192d');\n public static VisitedPersonCustomField = SafeGuid.parse('807bd603-56ed-4fb7-be5c-69321012378e');\n public static VisitedPersonFirstNameCustomField = SafeGuid.parse('c645ce1c-0dff-4208-ab59-73ac93c45058');\n public static VisitedPersonLastNameCustomField = SafeGuid.parse('b6baabdd-09e3-462c-a9da-53f714e0c2c1');\n public static VisitorActivityReportTemplate = SafeGuid.parse('66685b40-3c13-4357-b2c3-6b9f822fdb9d');\n public static VisitorCompanyCustomField = SafeGuid.parse('b40fb66a-e9d5-4b67-82f4-4f55ec529335');\n public static VisitorPhoneNumberCustomField = SafeGuid.parse('c8fee095-3e9c-4e8b-80f1-894ee65604d5');\n public static Visitors = SafeGuid.parse('00000000-0000-0000-0000-00000000000d');\n public static VisitorVisitReasonCustomField = SafeGuid.parse('451c360d-f4c1-498d-b036-28adbe8ec92b');\n public static ZoneActivityReportTemplate = SafeGuid.parse('2a118abb-d4a6-4a36-8c76-8897e6576f99');\n public static PermitZoneEveryone = SafeGuid.parse('0362449c-e193-4747-9d66-e8b483069f1c');\n public static PermitZoneNoPermits = SafeGuid.parse('e216707f-1fc0-46f4-b454-2ce8fd0ca5b4');\n public static PermitZoneAllPermits = SafeGuid.parse('72d06e91-596f-4259-8012-bd2a0a657017');\n public static DefaultUserId = SafeGuid.parse('2ac07729-a2aa-4559-968d-97ce7c7b33e7');\n public static DefaultLprPermitRuleId = SafeGuid.parse('c817318b-10ef-402f-8d35-06e2c2839e4d');\n public static DefaultLprOvertimeRuleId = SafeGuid.parse('7218fc3a-77ab-4568-a0cd-6813f8310c1f');\n public static LprSharedPermitRule = SafeGuid.parse('8c13ce28-0c2c-4517-b8d6-7a22869b87ba');\n public static LprNewWantedRule = SafeGuid.parse('3d7f3d2c-14bb-47b2-b6c8-ccdef109f4fe');\n public static DefaultParkingZoneRule = SafeGuid.parse('09e29d39-83da-4cdc-81cc-0191833cb9a6');\n public static PatrollerDefaultUserId = SafeGuid.parse('04f46295-a54b-499c-80cd-201dd09a3e60');\n public static PublicUserGroup = SafeGuid.parse('00000000-0000-0000-0000-0000000000b2');\n public static RoleModuleApplication = SafeGuid.parse('57e0923a-ace3-4b0a-9cd0-011b7f082705');\n public static DefaultMapId = SafeGuid.parse('6f9592a3-933c-4f6d-9b89-4a0c09056372');\n public static DefaultArchiveConsolidationTransferGroup = SafeGuid.parse('ddcc530c-f8e6-4842-ac3c-7ae9d9c3c917');\n public static RecommendedFirmwareTypeGuid = SafeGuid.parse('52367f49-0261-4237-b02f-4275cbdcefb2');\n public static HardeningEntryGuid = SafeGuid.parse('86ac267a-4b0e-4b65-88f6-1ea97772798d');\n public static LicenseCategory_SecurityCenter = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f61');\n public static LicenseCategory_Synergis = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f62');\n public static LicenseCategory_MissionControl = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f63');\n public static LicenseCategory_Omnicast = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f64');\n public static LicenseCategory_AutoVu = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f65');\n public static LicenseCategory_PlanManager = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f66');\n public static LicenseCategory_Mobile = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f67');\n public static LicenseCategory_Sipelia = SafeGuid.parse('bcedcfb3-e097-4d12-92d4-763811090f68');\n\n public static readonly values = [\n Guids.AccessRuleReportTemplate,\n Guids.ActiveOutputBehavior,\n Guids.RemoteUser,\n Guids.Administrator,\n Guids.Administrators,\n Guids.SCCompactOperator,\n Guids.SCCompactViewer,\n Guids.SCCompactRestrictedPartition,\n Guids.AlarmReportTemplate,\n Guids.AlertAudioFile,\n Guids.AllCardholders,\n Guids.AllOpenRule,\n Guids.AlwaysSchedule,\n Guids.AntipassbackRule,\n Guids.AreaPresenceReportTemplate,\n Guids.AutoGeneratedReportTemplate,\n Guids.Bell1AudioFile,\n Guids.Bell2AudioFile,\n Guids.Bell3AudioFile,\n Guids.BuzzerAudioFile,\n Guids.CardholderActivityReportTemplate,\n Guids.CardholderUnknownImage,\n Guids.UnknownImage,\n Guids.RootPartition,\n Guids.MasterPartition,\n Guids.SystemPartition,\n Guids.DoorActivityReportTemplate,\n Guids.DoorAudioFile,\n Guids.DoorBell1AudioFile,\n Guids.DoorBell2AudioFile,\n Guids.FallbackPrivilege,\n Guids.GlassAudioFile,\n Guids.HealthReportTemplate,\n Guids.LockAudioFile,\n Guids.LockdownRule,\n Guids.NormalOutputBehavior,\n Guids.RootPrivilege,\n Guids.Service,\n Guids.SystemConfiguration,\n Guids.ThreeBellsAudioFile,\n Guids.TimeAndAttendanceReportTemplate,\n Guids.UnitActivityReportTemplate,\n Guids.VisitedPersonCustomField,\n Guids.VisitedPersonFirstNameCustomField,\n Guids.VisitedPersonLastNameCustomField,\n Guids.VisitorActivityReportTemplate,\n Guids.VisitorCompanyCustomField,\n Guids.VisitorPhoneNumberCustomField,\n Guids.Visitors,\n Guids.VisitorVisitReasonCustomField,\n Guids.ZoneActivityReportTemplate,\n Guids.PermitZoneEveryone,\n Guids.PermitZoneNoPermits,\n Guids.PermitZoneAllPermits,\n Guids.DefaultUserId,\n Guids.DefaultLprPermitRuleId,\n Guids.DefaultLprOvertimeRuleId,\n Guids.LprSharedPermitRule,\n Guids.LprNewWantedRule,\n Guids.DefaultParkingZoneRule,\n Guids.PatrollerDefaultUserId,\n Guids.PublicUserGroup,\n Guids.RoleModuleApplication,\n Guids.DefaultMapId,\n Guids.DefaultArchiveConsolidationTransferGroup,\n Guids.RecommendedFirmwareTypeGuid,\n Guids.HardeningEntryGuid,\n Guids.LicenseCategory_SecurityCenter,\n Guids.LicenseCategory_Synergis,\n Guids.LicenseCategory_MissionControl,\n Guids.LicenseCategory_Omnicast,\n Guids.LicenseCategory_AutoVu,\n Guids.LicenseCategory_PlanManager,\n Guids.LicenseCategory_Mobile,\n Guids.LicenseCategory_Sipelia\n ];\n}\n","// Autogenerated: v2/help/Entities/ApiPluginRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { RoleEntity } from './RoleEntity';\nimport { Diagnostic } from '../Entity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IRoleAgentApplication, ISlotInfo, IDbUpgradeItem, IDatabaseScript, IDatabaseConnectionInfo, IPluginRoleEntity, IAgentUrl, IPluginRoleConfig, IRestVersion } from '../../Interface/IPluginRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IDiagnostic } from '../../Interface/IEntity';\n\n// #region Inner classes\n\nexport class SlotInfo extends FieldObject implements ISlotInfo {\n // Count\n public get count(): number {\n return this.getField('Count');\n }\n public set count(value: number) {\n this.setField('Count', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Count', 0);\n }\n}\n\nexport class RoleAgentApplication extends FieldObject implements IRoleAgentApplication {\n // AppId\n public get appId(): IGuid {\n return this.getFieldGuid('AppId');\n }\n public set appId(value: IGuid) {\n this.setFieldGuid('AppId', value);\n }\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid('ServerId');\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid('ServerId', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('AppId', SafeGuid.EMPTY);\n this.setFieldGuid('ServerId', SafeGuid.EMPTY);\n }\n}\n\nexport class AgentUrl extends FieldObject implements IAgentUrl {\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid('ServerId');\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid('ServerId', value);\n }\n // ApplicationPath\n public get applicationPath(): string {\n return this.getField('ApplicationPath');\n }\n public set applicationPath(value: string) {\n this.setField('ApplicationPath', value);\n }\n // RestUrl\n public get restUrl(): string {\n return this.getField('RestUrl');\n }\n public set restUrl(value: string) {\n this.setField('RestUrl', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('ServerId', SafeGuid.EMPTY);\n this.setField('ApplicationPath', '');\n this.setField('RestUrl', '');\n }\n}\n\nexport class RestVersion extends FieldObject implements IRestVersion {\n // Minor\n public get minor(): number {\n return this.getField('Minor');\n }\n public set minor(value: number) {\n this.setField('Minor', value);\n }\n // Major\n public get major(): number {\n return this.getField('Major');\n }\n public set major(value: number) {\n this.setField('Major', value);\n }\n // Build\n public get build(): number {\n return this.getField('Build');\n }\n public set build(value: number) {\n this.setField('Build', value);\n }\n // Revision\n public get revision(): number {\n return this.getField('Revision');\n }\n public set revision(value: number) {\n this.setField('Revision', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Minor', 0);\n this.setField('Major', 0);\n this.setField('Build', 0);\n this.setField('Revision', 0);\n }\n}\n\nexport class PluginRoleConfig extends FieldObject implements IPluginRoleConfig {\n // Version\n public get version(): IRestVersion {\n return this.getFieldObject(RestVersion, 'Version');\n }\n public set version(value: IRestVersion) {\n this.setFieldObject('Version', value);\n }\n // Urls\n public get urls(): ObservableCollection {\n return this.getFieldObjectArray(AgentUrl, 'Urls');\n }\n public set urls(value: ObservableCollection) {\n this.setFieldObjectArray('Urls', value);\n }\n // ExternalPlugin\n public get externalPlugin(): boolean {\n return this.getField('ExternalPlugin');\n }\n public set externalPlugin(value: boolean) {\n this.setField('ExternalPlugin', value);\n }\n // ConfigToolData\n public get configToolData(): string {\n return this.getField('ConfigToolData');\n }\n public set configToolData(value: string) {\n this.setField('ConfigToolData', value);\n }\n // ConfigToolHtml\n public get configToolHtml(): string {\n return this.getField('ConfigToolHtml');\n }\n public set configToolHtml(value: string) {\n this.setField('ConfigToolHtml', value);\n }\n // ConfigToolHtmlZip\n public get configToolHtmlZip(): IGuid {\n return this.getFieldGuid('ConfigToolHtmlZip');\n }\n public set configToolHtmlZip(value: IGuid) {\n this.setFieldGuid('ConfigToolHtmlZip', value);\n }\n // ConfigToolHtmlZipMd5\n public get configToolHtmlZipMd5(): string {\n return this.getField('ConfigToolHtmlZipMd5');\n }\n public set configToolHtmlZipMd5(value: string) {\n this.setField('ConfigToolHtmlZipMd5', value);\n }\n // RoleCustomData\n public get roleCustomData(): string {\n return this.getField('RoleCustomData');\n }\n public set roleCustomData(value: string) {\n this.setField('RoleCustomData', value);\n }\n // SupportDatabase\n public get supportDatabase(): boolean {\n return this.getField('SupportDatabase');\n }\n public set supportDatabase(value: boolean) {\n this.setField('SupportDatabase', value);\n }\n // NameSpace\n public get nameSpace(): string {\n return this.getField('NameSpace');\n }\n public set nameSpace(value: string) {\n this.setField('NameSpace', value);\n }\n\n public initializeAllFields(): void {\n const objVersion = new RestVersion();\n objVersion.initializeAllFields();\n this.setFieldObject('Version', objVersion);\n this.setFieldArray('Urls', new ObservableCollection());\n this.setField('ExternalPlugin', false);\n this.setField('ConfigToolData', '');\n this.setField('ConfigToolHtml', '');\n this.setFieldGuid('ConfigToolHtmlZip', SafeGuid.EMPTY);\n this.setField('ConfigToolHtmlZipMd5', '');\n this.setField('RoleCustomData', '');\n this.setField('SupportDatabase', false);\n this.setField('NameSpace', '');\n }\n}\n\nexport class DbUpgradeItem extends FieldObject implements IDbUpgradeItem {\n // SourceVersion\n public get sourceVersion(): number {\n return this.getField('SourceVersion');\n }\n public set sourceVersion(value: number) {\n this.setField('SourceVersion', value);\n }\n // TargetVersion\n public get targetVersion(): number {\n return this.getField('TargetVersion');\n }\n public set targetVersion(value: number) {\n this.setField('TargetVersion', value);\n }\n // UpgradeScript\n public get upgradeScript(): string {\n return this.getField('UpgradeScript');\n }\n public set upgradeScript(value: string) {\n this.setField('UpgradeScript', value);\n }\n\n public initializeAllFields(): void {\n this.setField('SourceVersion', 0);\n this.setField('TargetVersion', 0);\n this.setField('UpgradeScript', '');\n }\n}\n\nexport class DatabaseScript extends FieldObject implements IDatabaseScript {\n // ExpectedVersion\n public get expectedVersion(): number {\n return this.getField('ExpectedVersion');\n }\n public set expectedVersion(value: number) {\n this.setField('ExpectedVersion', value);\n }\n // CreationScript\n public get creationScript(): string {\n return this.getField('CreationScript');\n }\n public set creationScript(value: string) {\n this.setField('CreationScript', value);\n }\n // UpgradeItems\n public get upgradeItems(): ObservableCollection {\n return this.getFieldObjectArray(DbUpgradeItem, 'UpgradeItems');\n }\n public set upgradeItems(value: ObservableCollection) {\n this.setFieldObjectArray('UpgradeItems', value);\n }\n\n public initializeAllFields(): void {\n this.setField('ExpectedVersion', 0);\n this.setField('CreationScript', '');\n this.setFieldArray('UpgradeItems', new ObservableCollection());\n }\n}\n\nexport class DatabaseConnectionInfo extends FieldObject implements IDatabaseConnectionInfo {\n // DatabaseInstance\n public get databaseInstance(): string {\n return this.getField('DatabaseInstance');\n }\n public set databaseInstance(value: string) {\n this.setField('DatabaseInstance', value);\n }\n // DatabaseName\n public get databaseName(): string {\n return this.getField('DatabaseName');\n }\n public set databaseName(value: string) {\n this.setField('DatabaseName', value);\n }\n // ConnectionString\n public get connectionString(): string {\n return this.getField('ConnectionString');\n }\n public set connectionString(value: string) {\n this.setField('ConnectionString', value);\n }\n\n public initializeAllFields(): void {\n this.setField('DatabaseInstance', '');\n this.setField('DatabaseName', '');\n this.setField('ConnectionString', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class PluginRoleEntity extends RoleEntity implements IPluginRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getDatabaseConfigurationAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(DatabaseConnectionInfo, 'DatabaseConnectionInfo', false, ValidFlags.Specific, transaction);\n }\n\n public async setDatabaseScriptsAsync(value: IDatabaseScript, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('DatabaseScripts', 'POST', value, transaction, responseHandler);\n }\n\n public async getDiagnosticsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Diagnostic, 'Diagnostics', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n public async freeSlotAsync(groupId: string, slotId: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('groupId', groupId);\n inParam.setField('slotId', slotId);\n\n return this.executeRequestTransactionAsync('FreeSlot', 'POST', inParam, transaction, responseHandler);\n }\n\n public async modifyLicenseItemAsync(item: string, count: number, tag: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('item', item);\n inParam.setField('count', count);\n inParam.setField('tag', tag);\n\n return this.executeRequestTransactionAsync('LicenseItem', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getPluginRoleConfigAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(PluginRoleConfig, 'PluginRoleConfig', true, ValidFlags.None, transaction);\n }\n\n public async reserveSlotAsync(maxCountAllowed: number, groupId: string, slotId: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('maxCountAllowed', maxCountAllowed);\n inParam.setField('groupId', groupId);\n inParam.setField('slotId', slotId);\n\n return this.executeRequestTransactionAsync('ReserveSlot', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getRoleAgentApplicationsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RoleAgentApplication, 'RoleAgentApplication', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async getFreeSlotAsync(id: string, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(SlotInfo, 'SlotCount/' + id, false, ValidFlags.None, transaction);\n }\n\n public async startOpenIdServerAsync(applicationPath: string, authCallbackUri: string, port: number, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('applicationPath', applicationPath);\n inParam.setField('authCallbackUri', authCallbackUri);\n inParam.setField('port', port);\n\n return this.executeRequestTransactionAsync('StartOpenIdServer', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: CodeGen/FeatureDescriptor?language=ts&InterfaceOnly=True on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/Feature?language=ts&InterfaceOnly=True on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/KeyValueParam?language=ts&InterfaceOnly=True on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/RestRoleConfigToolData?language=ts&InterfaceOnly=True on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/WebAppConfig?language=ts&InterfaceOnly=True on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/FeatureDescriptor?language=ts&InterfaceOnly=False on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/Feature?language=ts&InterfaceOnly=False on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/KeyValueParam?language=ts&InterfaceOnly=False on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/RestRoleConfigToolData?language=ts&InterfaceOnly=False on 2021-06-02 7:18:49 AM\n// Autogenerated: CodeGen/WebAppConfig?language=ts&InterfaceOnly=False on 2021-06-02 7:18:49 AM\nimport { RestVersion } from 'RestClient/Client/Model/Roles/PluginRoleEntity';\nimport { IRestVersion } from 'RestClient/Client/Interface/IPluginRoleEntity';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport interface IFeatureDescriptor extends IFieldObject {\n id: IGuid;\n version: string;\n name: string;\n description: string;\n category: string;\n generalAvailability: boolean;\n enabledByDefault: boolean;\n}\n\nexport interface IFeature extends IFieldObject {\n descriptor: IFeatureDescriptor;\n enabled: boolean;\n isVisible: boolean;\n specificConfig: string;\n serverSpecificConfig: string;\n}\n\nexport interface IKeyValue extends IFieldObject {\n key: string;\n value: string;\n}\n\nexport interface IRestRoleConfigToolData extends IFieldObject {\n features: ObservableCollection;\n advancedSettings: ObservableCollection;\n}\n\nexport interface IWebAppConfig extends IRestRoleConfigToolData {\n version: IRestVersion;\n applicationPath: string;\n useDefaultPorts: boolean;\n httpPort: number;\n httpsPort: number;\n httpsSupported: boolean;\n httpSupported: boolean;\n tokenDuration: number;\n maxClientSessions: number;\n useKestrel: boolean;\n roleUniqueId: string;\n bindCertificate: boolean;\n enableLoadBalancing: boolean;\n}\n\nexport class FeatureDescriptor extends FieldObject implements IFeatureDescriptor {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Version\n public get version(): string {\n return this.getField('Version');\n }\n public set version(value: string) {\n this.setField('Version', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Category\n public get category(): string {\n return this.getField('Category');\n }\n public set category(value: string) {\n this.setField('Category', value);\n }\n // GeneralAvailability\n public get generalAvailability(): boolean {\n return this.getField('GeneralAvailability');\n }\n public set generalAvailability(value: boolean) {\n this.setField('GeneralAvailability', value);\n }\n // EnabledByDefault\n public get enabledByDefault(): boolean {\n return this.getField('EnabledByDefault');\n }\n public set enabledByDefault(value: boolean) {\n this.setField('EnabledByDefault', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Version', '');\n this.setField('Name', '');\n this.setField('Description', '');\n this.setField('Category', '');\n this.setField('GeneralAvailability', false);\n this.setField('EnabledByDefault', false);\n }\n}\n\nexport class Feature extends FieldObject implements IFeature {\n // Descriptor\n public get descriptor(): IFeatureDescriptor {\n return this.getFieldObject(FeatureDescriptor, 'Descriptor');\n }\n public set descriptor(value: IFeatureDescriptor) {\n this.setFieldObject('Descriptor', value);\n }\n // Enabled\n public get enabled(): boolean {\n return this.getField('Enabled');\n }\n public set enabled(value: boolean) {\n this.setField('Enabled', value);\n }\n // IsVisible\n public get isVisible(): boolean {\n return this.getField('IsVisible');\n }\n public set isVisible(value: boolean) {\n this.setField('IsVisible', value);\n }\n // SpecificConfig\n public get specificConfig(): string {\n return this.getField('SpecificConfig');\n }\n public set specificConfig(value: string) {\n this.setField('SpecificConfig', value);\n }\n // ServerSpecificConfig\n public get serverSpecificConfig(): string {\n return this.getField('ServerSpecificConfig');\n }\n public set serverSpecificConfig(value: string) {\n this.setField('ServerSpecificConfig', value);\n }\n\n public initializeAllFields(): void {\n const objDescriptor = new FeatureDescriptor();\n objDescriptor.initializeAllFields();\n this.setFieldObject('Descriptor', objDescriptor);\n this.setField('Enabled', false);\n this.setField('IsVisible', false);\n this.setField('SpecificConfig', '');\n this.setField('ServerSpecificConfig', '');\n }\n}\n\nexport class KeyValue extends FieldObject implements IKeyValue {\n // Key\n public get key(): string {\n return this.getField('Key');\n }\n public set key(value: string) {\n this.setField('Key', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Key', '');\n this.setField('Value', '');\n }\n}\n\nexport class RestRoleConfigToolData extends FieldObject implements IRestRoleConfigToolData {\n // Features\n public get features(): ObservableCollection {\n return this.getFieldObjectArray(Feature, 'Features');\n }\n public set features(value: ObservableCollection) {\n this.setFieldObjectArray('Features', value);\n }\n // AdvancedSettings\n public get advancedSettings(): ObservableCollection {\n return this.getFieldObjectArray(KeyValue, 'AdvancedSettings');\n }\n public set advancedSettings(value: ObservableCollection) {\n this.setFieldObjectArray('AdvancedSettings', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldArray('Features', new ObservableCollection());\n this.setFieldArray('AdvancedSettings', new ObservableCollection());\n }\n}\n\nexport class WebAppConfig extends RestRoleConfigToolData implements IWebAppConfig {\n // Version\n public get version(): IRestVersion {\n return this.getFieldObject(RestVersion, 'Version');\n }\n public set version(value: IRestVersion) {\n this.setFieldObject('Version', value);\n }\n // ApplicationPath\n public get applicationPath(): string {\n return this.getField('ApplicationPath');\n }\n public set applicationPath(value: string) {\n this.setField('ApplicationPath', value);\n }\n // UseDefaultPorts\n public get useDefaultPorts(): boolean {\n return this.getField('UseDefaultPorts');\n }\n public set useDefaultPorts(value: boolean) {\n this.setField('UseDefaultPorts', value);\n }\n // HttpPort\n public get httpPort(): number {\n return this.getField('HttpPort');\n }\n public set httpPort(value: number) {\n this.setField('HttpPort', value);\n }\n // HttpsPort\n public get httpsPort(): number {\n return this.getField('HttpsPort');\n }\n public set httpsPort(value: number) {\n this.setField('HttpsPort', value);\n }\n // HttpsSupported\n public get httpsSupported(): boolean {\n return this.getField('HttpsSupported');\n }\n public set httpsSupported(value: boolean) {\n this.setField('HttpsSupported', value);\n }\n // HttpSupported\n public get httpSupported(): boolean {\n return this.getField('HttpSupported');\n }\n public set httpSupported(value: boolean) {\n this.setField('HttpSupported', value);\n }\n // TokenDuration\n public get tokenDuration(): number {\n return this.getField('TokenDuration');\n }\n public set tokenDuration(value: number) {\n this.setField('TokenDuration', value);\n }\n // MaxClientSessions\n public get maxClientSessions(): number {\n return this.getField('MaxClientSessions');\n }\n public set maxClientSessions(value: number) {\n this.setField('MaxClientSessions', value);\n }\n // UseKestrel\n public get useKestrel(): boolean {\n return this.getField('UseKestrel');\n }\n public set useKestrel(value: boolean) {\n this.setField('UseKestrel', value);\n }\n // RoleUniqueId\n public get roleUniqueId(): string {\n return this.getField('RoleUniqueId');\n }\n public set roleUniqueId(value: string) {\n this.setField('RoleUniqueId', value);\n }\n // BindCertificate\n public get bindCertificate(): boolean {\n return this.getField('BindCertificate');\n }\n public set bindCertificate(value: boolean) {\n this.setField('BindCertificate', value);\n }\n // EnableLoadBalancing\n public get enableLoadBalancing(): boolean {\n return this.getField('EnableLoadBalancing');\n }\n public set enableLoadBalancing(value: boolean) {\n this.setField('EnableLoadBalancing', value);\n }\n public get localAddress(): ObservableCollection {\n return this.getFieldArray('LocalAddress');\n }\n public set localAddress(value: ObservableCollection) {\n this.setFieldArray('LocalAddress', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n const objVersion = new RestVersion();\n objVersion.initializeAllFields();\n this.setFieldObject('Version', objVersion);\n this.setField('ApplicationPath', '');\n this.setField('UseDefaultPorts', false);\n this.setField('HttpPort', 0);\n this.setField('HttpsPort', 0);\n this.setField('HttpsSupported', false);\n this.setField('HttpSupported', false);\n this.setField('TokenDuration', 0);\n this.setField('MaxClientSessions', 0);\n this.setField('UseKestrel', false);\n this.setField('RoleUniqueId', '');\n this.setField('BindCertificate', false);\n this.setField('EnableLoadBalancing', false);\n this.setField('LocalAddress', []);\n }\n}\n","import { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\n\nexport class LicenseDetails {\n constructor(private _fieldObject: IFieldObject) {}\n\n public hasLicense(license: string): boolean {\n return this._fieldObject.getField(license) ?? false;\n }\n\n public get version(): number {\n return this._fieldObject.getField('Version') ?? 0;\n }\n}\n","export class Globals {\n public static webAppUniqueIdHeader = 'WebAppUniqueIdHeader';\n}\n","import { RestConnection } from 'RestClient/Connection/RestConnection';\nimport { Streamer } from 'RestClient/Connection/Streamers/Streamer';\nimport { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { WebAppClient } from './WebAppClient';\nimport { Observable, Subject, from } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { exhaustMapWithTrailing } from './Rxjs/exhaust-map-with-trailing';\nimport { CancellationToken } from 'RestClient/Helpers/Helpers';\nimport { RestResponse } from 'RestClient/Connection/RestResponse';\n\nexport class WebAppConnection extends RestConnection {\n private _parent: WebAppClient;\n private fetchEventSubject = new Subject();\n private cancellationToken = new CancellationToken();\n private webSocketSubject?: Subject;\n\n constructor(parent: WebAppClient) {\n super();\n this._parent = parent;\n this.windowsAuthentificationEnabled = parent.windowsAuthentificationEnabled;\n\n this.fetchEventSubject\n .pipe(\n exhaustMapWithTrailing(() => this.getEvents()),\n filter((restResponse) => restResponse.statusCode === HttpStatusCode.OK && restResponse.body !== undefined),\n map((restResponse) => restResponse.body as Array),\n tap((fieldObjects) => {\n fieldObjects.forEach((fieldObject) => {\n this._restStreamer.entity_EventReceived(fieldObject.toString());\n });\n })\n )\n .subscribe();\n }\n\n public async disposeAsync(): Promise {\n await super.disposeAsync();\n\n this.fetchEventSubject.next();\n this.fetchEventSubject.complete();\n\n this.disposeWebSocketSubject();\n\n this.cancellationToken.cancelToken();\n }\n\n public buildStreamer(): void {\n this._restStreamer = new Streamer(this);\n this._restStreamer._unknownRequestDispatcher.subscribe(async (arg) => {\n switch (arg.msgType) {\n case 'fetchevent':\n {\n this.fetchEventSubject.next();\n }\n break;\n }\n });\n\n this._restStreamer._streamerSessionIdReceivedDispatcher.subscribe(async (_: string) => {\n try {\n await this._parent.afterLogonOperationAsync(LogonState.LoggedOn);\n } catch (e) {\n await this.disposeAsync();\n }\n });\n }\n\n private disposeWebSocketSubject() {\n if (this.webSocketSubject) {\n this.webSocketSubject.next();\n this.webSocketSubject.complete();\n }\n }\n\n private getEvents(): Observable {\n return from(this.executeRequestAsync('GET', 'api/Session/Events', null, this.cancellationToken));\n }\n}\n","import { ObservableInput, OperatorFunction, Observable, Subject, defer, from } from 'rxjs';\nimport { exhaustMap, finalize, throttle } from 'rxjs/operators';\n\n/**\n * Same as exhaustMap() operator (ignore all inputs whilst the inner Observable is running),\n * but it will memorize if a new value was sent whilst the observable was running, and emit a new observable when it's done with the first one.\n * See https://github.com/ReactiveX/rxjs/issues/5004 for the implementation request on github.\n *\n * @example\n * observable$.pipe(\n * exhaustMapWithTrailing(() => fetchSomething())\n * );\n *\n * In this example, `fetchSomething()` could take time (ex: 3 seconds).\n * If the input observable sends 3 consecutive values, `fetchSomething()` will be sent for the first value, and memorize that it was sent a second and a third value.\n * Then, when the first value has been processed by `fetchSomething()`, the third value will be sent to `fetchSomething()`.\n */\nexport function exhaustMapWithTrailing(project: (value: T, index: number) => ObservableInput): OperatorFunction {\n return (source): Observable =>\n defer(() => {\n const release = new Subject();\n return source.pipe(\n throttle(() => release, { leading: true, trailing: true }),\n exhaustMap((value, index) => from(project(value, index)).pipe(finalize(() => release.next())) as Observable)\n );\n });\n}\n","export enum SecurityCenterVersionEquality{\n Greater,\n Equal,\n Smaller\n}\n\nexport class SecurityCenterVersion {\n private constructor(public major: number, public minor: number, public build: number, public revision: number) {\n }\n\n public static isCompatible(version: SecurityCenterVersion | string | null, minimumVersion: SecurityCenterVersion | string | null, maximumVersion: SecurityCenterVersion | string | null = null): boolean {\n const currentVersion = version instanceof SecurityCenterVersion ? version : SecurityCenterVersion.tryParse(version);\n const minVersion = minimumVersion instanceof SecurityCenterVersion ? minimumVersion : SecurityCenterVersion.tryParse(minimumVersion);\n const maxVersion = maximumVersion instanceof SecurityCenterVersion ? maximumVersion : SecurityCenterVersion.tryParse(maximumVersion);\n\n return currentVersion?.isCompatible(minVersion, maxVersion) ?? false;\n }\n\n public static tryParse(version: string | null): SecurityCenterVersion | null {\n if (!version) {\n return null;\n }\n\n const element = version.split('.');\n if (element.length > 4) {\n return null;\n }\n\n let major: number | null = null, minor: number | null = null, build: number | null = null, revision: number | null = null;\n if (!!element[0]) {\n major = parseInt(element[0]);\n }\n if (!!element[1]) {\n minor = parseInt(element[1]);\n }\n if (!!element[2]) {\n build = parseInt(element[2]);\n }\n if (!!element[3]) {\n revision = parseInt(element[3]);\n }\n\n if (!major || !minor) {\n return null;\n }\n\n return new SecurityCenterVersion(major, minor, build ?? 0, revision ?? 0);\n }\n\n public isEqual(version: SecurityCenterVersion): SecurityCenterVersionEquality {\n if (this.major !== version.major) {\n if (this.major > version.major) {\n return SecurityCenterVersionEquality.Greater;\n } else if (this.major < version.minor) {\n return SecurityCenterVersionEquality.Smaller;\n }\n }\n\n if (this.minor !== version.minor) {\n if (this.minor > version.minor) {\n return SecurityCenterVersionEquality.Greater;\n } else if (this.minor < version.minor) {\n return SecurityCenterVersionEquality.Smaller\n }\n }\n\n const buildA = this.build < 10 ? this.build * 1000 : this.build;\n const buildB = version.build < 10 ? version.build * 1000 : version.build;\n\n if (buildA !== buildB) {\n if (buildA > buildB) {\n return SecurityCenterVersionEquality.Greater;\n } else if (buildA < buildB) {\n return SecurityCenterVersionEquality.Smaller;\n }\n }\n\n if (this.revision !== version.revision) {\n if (this.revision > version.revision) {\n return SecurityCenterVersionEquality.Greater;\n } else if (this.revision < version.revision) {\n return SecurityCenterVersionEquality.Smaller;\n }\n }\n\n return SecurityCenterVersionEquality.Equal;\n }\n\n private isCompatible(minVersion: SecurityCenterVersion | null, maxVersion: SecurityCenterVersion | null = null): boolean {\n let isGreaterOrEqual = true;\n if(!!minVersion){\n const minValidation = this.isEqual(minVersion);\n isGreaterOrEqual = minValidation === SecurityCenterVersionEquality.Equal || minValidation === SecurityCenterVersionEquality.Greater\n }\n\n let isSmallerOrEqual = true;\n if(!!maxVersion){\n const maxValidation = this.isEqual(maxVersion);\n isSmallerOrEqual = maxValidation === SecurityCenterVersionEquality.Equal || maxValidation === SecurityCenterVersionEquality.Smaller\n }\n\n return isGreaterOrEqual && isSmallerOrEqual;\n }\n}\n","import { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { SecurityCenterVersion } from './SecurityCenterVersion';\n\nexport interface EntityPropWrapper {\n type: 'get' | 'method';\n minimumVersion: string;\n propertyName: P;\n default: T[P] | ((...args: any[]) => unknown);\n}\n\nexport const backwardCompatible = (\n type: 'get' | 'method',\n minimumVersion: string,\n propertyName: P,\n defaultValue: PT\n): EntityPropWrapper => {\n return {\n type,\n minimumVersion,\n propertyName,\n default: defaultValue,\n };\n};\n\nexport function BackwardCompatible(propWrappers?: EntityPropWrapper[]) {\n return (constructor: new (...args: any[]) => Entity): new (...args: any[]) => E => {\n const classWrapped: new (...args: any[]) => E = class WrappedEntity extends constructor {\n } as new (entityType?: string) => E;\n for (const propertyToWrap of propWrappers ?? []) {\n if (propertyToWrap.type === 'get') {\n const propertyDescriptor = Object.getOwnPropertyDescriptor(constructor.prototype, propertyToWrap.propertyName);\n if (propertyDescriptor) {\n const originalGet = propertyDescriptor.get;\n const originalSet = propertyDescriptor.set;\n if (originalGet) {\n Object.defineProperty(classWrapped.prototype, propertyToWrap.propertyName, {\n get: function () {\n const currentVersion = this._client.securityCenterVersion?.securityCenterExactVersion ?? null;\n return SecurityCenterVersion.isCompatible(currentVersion, propertyToWrap.minimumVersion) ? originalGet.call(this) : propertyToWrap.default;\n },\n set: function (value: unknown) {\n const currentVersion = this._client.securityCenterVersion?.securityCenterExactVersion ?? null;\n if (SecurityCenterVersion.isCompatible(currentVersion, propertyToWrap.minimumVersion)) originalSet?.call(this, value);\n },\n });\n }\n }\n } else {\n const originalImpl = classWrapped.prototype[propertyToWrap.propertyName];\n if (typeof originalImpl === 'function' && typeof propertyToWrap.default === 'function') {\n classWrapped.prototype[propertyToWrap.propertyName] = function (...args: any[]) {\n const currentVersion = this._client.securityCenterVersion?.securityCenterExactVersion ?? null;\n return SecurityCenterVersion.isCompatible(currentVersion, propertyToWrap.minimumVersion)\n ? originalImpl.call(this, ...args)\n : (propertyToWrap.default as any).call(this, ...args);\n };\n }\n }\n }\n return classWrapped;\n };\n}\n","// Autogenerated: v2/help/Entities/ApiElevator?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ElevatorEntityFields extends EntityFields {\n public static cabinReaderField = 'CabinReader';\n}\n\n// #endregion Fields\n\nexport interface IElevatorEntity extends IEntity {\n // #region REST Properties\n\n readonly cabinReader: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getFloorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiElevator?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IElevatorEntity, ElevatorEntityFields } from '../../Interface/IElevatorEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class ElevatorEntity extends Entity implements IElevatorEntity {\n // #region REST Properties\n\n // CabinReader\n public get cabinReader(): IGuid {\n return this.getFieldGuid(ElevatorEntityFields.cabinReaderField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Elevators);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getFloorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Floors', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getMembersAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Members', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiVisitor?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class VisitorEntityFields extends EntityFields {\n public static accessPermissionLevelField = 'AccessPermissionLevel';\n public static accessStatusField = 'AccessStatus';\n public static activationDateField = 'ActivationDate';\n public static antipassbackExemptionField = 'AntipassbackExemption';\n public static antipassbackExemptionIsInheritedField = 'AntipassbackExemptionIsInherited';\n public static checkinDateField = 'CheckinDate';\n public static checkoutDateField = 'CheckoutDate';\n public static emailAddressField = 'EmailAddress';\n public static escortField = 'Escort';\n public static escort2Field = 'Escort2';\n public static expirationDateField = 'ExpirationDate';\n public static expirationDurationField = 'ExpirationDuration';\n public static expirationModeField = 'ExpirationMode';\n public static firstNameField = 'FirstName';\n public static hasPictureField = 'HasPicture';\n public static inheritAccessPermissionLevelFromGroupField = 'InheritAccessPermissionLevelFromGroup';\n public static isArchivedField = 'IsArchived';\n public static isVisitorField = 'IsVisitor';\n public static lastAccessField = 'LastAccess';\n public static lastAccessGrantedField = 'LastAccessGranted';\n public static lastAccessLocationField = 'LastAccessLocation';\n public static lastNameField = 'LastName';\n public static mandatoryEscortField = 'MandatoryEscort';\n public static mobilePhoneNumberField = 'MobilePhoneNumber';\n public static useExtendedGrantTimeField = 'UseExtendedGrantTime';\n public static validateEscortRulesField = 'ValidateEscortRules';\n public static visitDateField = 'VisitDate';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IVisitorImage extends IFieldObject {\n guid: IGuid;\n data: string;\n}\n\n// #endregion Inner classes\n\nexport interface IVisitorEntity extends IEntity {\n // #region REST Properties\n\n accessPermissionLevel: number;\n\n accessStatus: string;\n\n activationDate: Date;\n\n antipassbackExemption: boolean;\n\n antipassbackExemptionIsInherited: boolean;\n\n readonly checkinDate: Date;\n\n readonly checkoutDate: Date;\n\n emailAddress: string;\n\n escort: IGuid;\n\n escort2: IGuid;\n\n expirationDate: Date;\n\n expirationDuration: number;\n\n expirationMode: string;\n\n firstName: string;\n\n readonly hasPicture: boolean;\n\n inheritAccessPermissionLevelFromGroup: boolean;\n\n readonly isArchived: boolean;\n\n readonly isVisitor: boolean;\n\n readonly lastAccess: Date;\n\n readonly lastAccessGranted: boolean | null;\n\n readonly lastAccessLocation: IGuid;\n\n lastName: string;\n\n mandatoryEscort: boolean;\n\n mobilePhoneNumber: string;\n\n useExtendedGrantTime: boolean;\n\n\n visitDate: Date;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getUsergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getCredentialsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n deletePictureAsync(transaction?: ITransaction | null): Promise;\n getPictureAsync(transaction?: ITransaction | null): Promise;\n addPictureAsync(value: IVisitorImage, transaction?: ITransaction | null): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiVisitor?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:02 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IVisitorEntity, IVisitorImage, VisitorEntityFields } from '../../Interface/IVisitorEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { RestResponse } from '../../../Connection/RestResponse';\n\n// #region Inner classes\n\nexport class VisitorImage extends FieldObject implements IVisitorImage {\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('Data', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class VisitorEntity extends Entity implements IVisitorEntity {\n // #region REST Properties\n\n // AccessPermissionLevel\n public get accessPermissionLevel(): number {\n return this.getField(VisitorEntityFields.accessPermissionLevelField);\n }\n public set accessPermissionLevel(value: number) {\n this.setField(VisitorEntityFields.accessPermissionLevelField, value);\n }\n\n // AccessStatus\n public get accessStatus(): string {\n return this.getField(VisitorEntityFields.accessStatusField);\n }\n public set accessStatus(value: string) {\n this.setField(VisitorEntityFields.accessStatusField, value);\n }\n\n // ActivationDate\n public get activationDate(): Date {\n return this.getFieldDate(VisitorEntityFields.activationDateField);\n }\n public set activationDate(value: Date) {\n this.setFieldDate(VisitorEntityFields.activationDateField, value);\n }\n\n // AntipassbackExemption\n public get antipassbackExemption(): boolean {\n return this.getField(VisitorEntityFields.antipassbackExemptionField);\n }\n public set antipassbackExemption(value: boolean) {\n this.setField(VisitorEntityFields.antipassbackExemptionField, value);\n }\n\n // AntipassbackExemptionIsInherited\n public get antipassbackExemptionIsInherited(): boolean {\n return this.getField(VisitorEntityFields.antipassbackExemptionIsInheritedField);\n }\n public set antipassbackExemptionIsInherited(value: boolean) {\n this.setField(VisitorEntityFields.antipassbackExemptionIsInheritedField, value);\n }\n\n // CheckinDate\n public get checkinDate(): Date {\n return this.getFieldDate(VisitorEntityFields.checkinDateField);\n }\n\n // CheckoutDate\n public get checkoutDate(): Date {\n return this.getFieldDate(VisitorEntityFields.checkoutDateField);\n }\n\n // EmailAddress\n public get emailAddress(): string {\n return this.getField(VisitorEntityFields.emailAddressField);\n }\n public set emailAddress(value: string) {\n this.setField(VisitorEntityFields.emailAddressField, value);\n }\n\n // Escort\n public get escort(): IGuid {\n return this.getFieldGuid(VisitorEntityFields.escortField);\n }\n public set escort(value: IGuid) {\n this.setFieldGuid(VisitorEntityFields.escortField, value);\n }\n\n // Escort2\n public get escort2(): IGuid {\n return this.getFieldGuid(VisitorEntityFields.escort2Field);\n }\n public set escort2(value: IGuid) {\n this.setFieldGuid(VisitorEntityFields.escort2Field, value);\n }\n\n // ExpirationDate\n public get expirationDate(): Date {\n return this.getFieldDate(VisitorEntityFields.expirationDateField);\n }\n public set expirationDate(value: Date) {\n this.setFieldDate(VisitorEntityFields.expirationDateField, value);\n }\n\n // ExpirationDuration\n public get expirationDuration(): number {\n return this.getField(VisitorEntityFields.expirationDurationField);\n }\n public set expirationDuration(value: number) {\n this.setField(VisitorEntityFields.expirationDurationField, value);\n }\n\n // ExpirationMode\n public get expirationMode(): string {\n return this.getField(VisitorEntityFields.expirationModeField);\n }\n public set expirationMode(value: string) {\n this.setField(VisitorEntityFields.expirationModeField, value);\n }\n\n // FirstName\n public get firstName(): string {\n return this.getField(VisitorEntityFields.firstNameField);\n }\n public set firstName(value: string) {\n this.setField(VisitorEntityFields.firstNameField, value);\n }\n\n // HasPicture\n public get hasPicture(): boolean {\n return this.getField(VisitorEntityFields.hasPictureField);\n }\n\n // InheritAccessPermissionLevelFromGroup\n public get inheritAccessPermissionLevelFromGroup(): boolean {\n return this.getField(VisitorEntityFields.inheritAccessPermissionLevelFromGroupField);\n }\n public set inheritAccessPermissionLevelFromGroup(value: boolean) {\n this.setField(VisitorEntityFields.inheritAccessPermissionLevelFromGroupField, value);\n }\n\n // IsArchived\n public get isArchived(): boolean {\n return this.getField(VisitorEntityFields.isArchivedField);\n }\n\n // IsVisitor\n public get isVisitor(): boolean {\n return this.getField(VisitorEntityFields.isVisitorField);\n }\n\n // LastAccess\n public get lastAccess(): Date {\n return this.getFieldDate(VisitorEntityFields.lastAccessField);\n }\n\n // LastAccessGranted\n public get lastAccessGranted(): boolean | null {\n return this.getNullableField(VisitorEntityFields.lastAccessGrantedField);\n }\n\n // LastAccessLocation\n public get lastAccessLocation(): IGuid {\n return this.getFieldGuid(VisitorEntityFields.lastAccessLocationField);\n }\n\n // LastName\n public get lastName(): string {\n return this.getField(VisitorEntityFields.lastNameField);\n }\n public set lastName(value: string) {\n this.setField(VisitorEntityFields.lastNameField, value);\n }\n\n // MandatoryEscort\n public get mandatoryEscort(): boolean {\n return this.getField(VisitorEntityFields.mandatoryEscortField);\n }\n public set mandatoryEscort(value: boolean) {\n this.setField(VisitorEntityFields.mandatoryEscortField, value);\n }\n\n // MobilePhoneNumber\n public get mobilePhoneNumber(): string {\n return this.getField(VisitorEntityFields.mobilePhoneNumberField);\n }\n public set mobilePhoneNumber(value: string) {\n this.setField(VisitorEntityFields.mobilePhoneNumberField, value);\n }\n\n // UseExtendedGrantTime\n public get useExtendedGrantTime(): boolean {\n return this.getField(VisitorEntityFields.useExtendedGrantTimeField);\n }\n public set useExtendedGrantTime(value: boolean) {\n this.setField(VisitorEntityFields.useExtendedGrantTimeField, value);\n }\n\n // ValidateEscortRules\n public set validateEscortRules(value: boolean) {\n this.setField(VisitorEntityFields.validateEscortRulesField, value);\n }\n\n // VisitDate\n public get visitDate(): Date {\n return this.getFieldDate(VisitorEntityFields.visitDateField);\n }\n public set visitDate(value: Date) {\n this.setFieldDate(VisitorEntityFields.visitDateField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Visitors);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPointRules', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getUsergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cardholdergroups', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getCredentialsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Credentials', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async deletePictureAsync(): Promise {\n await this.updateDataRelation2Async(VisitorImage, 'Picture', 'DELETE', false, ValidFlags.None, null);\n return new RestResponse(HttpStatusCode.OK);\n }\n\n public async getPictureAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(VisitorImage, 'Picture', false, ValidFlags.None, transaction);\n }\n\n public async addPictureAsync(value: IVisitorImage, transaction?: ITransaction | null): Promise {\n return await this.updateDataRelation2Async(VisitorImage, 'Picture', 'POST', false, ValidFlags.None, value);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLprUnit?codegen=ts&InterfaceOnly=True&workflow=False on 2021-05-11 9:36:09 AM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IEntity } from './IEntity';\nimport { IUnitEntity, UnitEntityFields } from './IUnitEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class LprUnitEntityFields extends UnitEntityFields {\n public static extendedInfoField = 'ExtendedInfo';\n public static lprUnitTypeField = 'LprUnitType';\n}\n\n// #endregion Fields\n\nexport interface ILprUnitEntity extends IUnitEntity {\n // #region REST Properties\n\n readonly extendedInfo: string;\n\n readonly lprUnitType: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLprUnit?codegen=ts&InterfaceOnly=False&workflow=False on 2021-05-11 9:36:14 AM\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { UnitEntity } from '../UnitEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ILprUnitEntity, LprUnitEntityFields } from '../../Interface/ILprUnitEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class LprUnitEntity extends UnitEntity implements ILprUnitEntity {\n // #region REST Properties\n\n // ExtendedInfo\n public get extendedInfo(): string {\n return this.getField(LprUnitEntityFields.extendedInfoField);\n }\n\n // LprUnitType\n public get lprUnitType(): string {\n return this.getField(LprUnitEntityFields.lprUnitTypeField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.LprUnits);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPatroller?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\nimport { ILocatableEntity, LocatableEntityFields } from './ILocatableEntity';\nimport { IRestResponse } from './IRestResponse';\n\n// #region Fields\n\nexport class PatrollerEntityFields extends LocatableEntityFields {\n public static softwareVersionField = 'SoftwareVersion';\n}\n\n// #endregion Fields\n\nexport interface IPatrollerEntity extends ILocatableEntity {\n // #region REST Properties\n\n readonly softwareVersion: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n moveUnitAsync(id: IGuid, transaction?: ITransaction): Promise;\n getUnitsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPatroller?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { LocatableEntity } from '../LocatableEntity';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IPatrollerEntity, PatrollerEntityFields } from '../../Interface/IPatrollerEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\n\nexport class PatrollerEntity extends LocatableEntity implements IPatrollerEntity {\n // #region REST Properties\n\n // SoftwareVersion\n public get softwareVersion(): string {\n return this.getField(PatrollerEntityFields.softwareVersionField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Patrollers);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async moveUnitAsync(id: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('id', id);\n\n return this.executeRequestTransactionAsync('MoveUnit', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getUnitsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Units', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiContentFileEntity?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:04 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IEntity, EntityFields } from './IEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ContentFileEntityFields extends EntityFields {\n public static passwordField = 'Password';\n public static pathField = 'Path';\n public static schemaField = 'Schema';\n public static supportsEditorField = 'SupportsEditor';\n public static userNameField = 'UserName';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IRuleTranslation extends IFieldObject {\n from: string;\n to: string;\n}\n\nexport interface IRuleAttribute extends IFieldObject {\n isMandatory: boolean;\n key: string;\n defaultValue: string;\n length: number;\n start: number;\n dateFormat: string;\n translations: ObservableCollection;\n}\n\n// #endregion Inner classes\n\nexport interface IContentFileEntity extends IEntity {\n // #region REST Properties\n\n password: string;\n\n path: string;\n\n readonly schema: string;\n\n supportsEditor: boolean;\n\n userName: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAttributesAsync(transaction?: ITransaction | null): Promise | null>;\n addPlateAsync(value: IFieldObject, transaction?: ITransaction): Promise;\n getRolesAsync(transaction?: ITransaction): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiContentFileEntity?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-26 3:26:01 PM\nimport { Entity } from '../Entity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IContentFileEntity, IRuleTranslation, IRuleAttribute, ContentFileEntityFields } from '../../Interface/IContentFileEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\n\n// #region Inner classes\n\nexport class RuleTranslation extends FieldObject implements IRuleTranslation {\n // From\n public get from(): string {\n return this.getField('From');\n }\n public set from(value: string) {\n this.setField('From', value);\n }\n // To\n public get to(): string {\n return this.getField('To');\n }\n public set to(value: string) {\n this.setField('To', value);\n }\n\n public initializeAllFields(): void {\n this.setField('From', '');\n this.setField('To', '');\n }\n}\n\nexport class RuleAttribute extends FieldObject implements IRuleAttribute {\n // IsMandatory\n public get isMandatory(): boolean {\n return this.getField('IsMandatory');\n }\n public set isMandatory(value: boolean) {\n this.setField('IsMandatory', value);\n }\n // Key\n public get key(): string {\n return this.getField('Key');\n }\n public set key(value: string) {\n this.setField('Key', value);\n }\n // DefaultValue\n public get defaultValue(): string {\n return this.getField('DefaultValue');\n }\n public set defaultValue(value: string) {\n this.setField('DefaultValue', value);\n }\n // Length\n public get length(): number {\n return this.getField('Length');\n }\n public set length(value: number) {\n this.setField('Length', value);\n }\n // Start\n public get start(): number {\n return this.getField('Start');\n }\n public set start(value: number) {\n this.setField('Start', value);\n }\n // DateFormat\n public get dateFormat(): string {\n return this.getField('DateFormat');\n }\n public set dateFormat(value: string) {\n this.setField('DateFormat', value);\n }\n // Translations\n public get translations(): ObservableCollection {\n return this.getFieldObjectArray(RuleTranslation, 'Translations');\n }\n public set translations(value: ObservableCollection) {\n this.setFieldObjectArray('Translations', value);\n }\n\n public initializeAllFields(): void {\n this.setField('IsMandatory', false);\n this.setField('Key', '');\n this.setField('DefaultValue', '');\n this.setField('Length', 0);\n this.setField('Start', 0);\n this.setField('DateFormat', '');\n this.setFieldArray('Translations', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class ContentFileEntity extends Entity implements IContentFileEntity {\n // #region REST Properties\n\n // Password\n public get password(): string {\n return this.getField(ContentFileEntityFields.passwordField);\n }\n public set password(value: string) {\n this.setField(ContentFileEntityFields.passwordField, value);\n }\n\n // Path\n public get path(): string {\n return this.getField(ContentFileEntityFields.pathField);\n }\n public set path(value: string) {\n this.setField(ContentFileEntityFields.pathField, value);\n }\n\n // Schema\n public get schema(): string {\n return this.getField(ContentFileEntityFields.schemaField);\n }\n\n // SupportsEditor\n public get supportsEditor(): boolean {\n return this.getField(ContentFileEntityFields.supportsEditorField);\n }\n public set supportsEditor(value: boolean) {\n this.setField(ContentFileEntityFields.supportsEditorField, value);\n }\n\n // UserName\n public get userName(): string {\n return this.getField(ContentFileEntityFields.userNameField);\n }\n public set userName(value: string) {\n this.setField(ContentFileEntityFields.userNameField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor(entityType: string) {\n super(entityType);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAttributesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RuleAttribute, 'Attributes', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async addPlateAsync(value: IFieldObject, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('Plate', 'POST', value, transaction, responseHandler);\n }\n\n public async getRolesAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('Roles', 'GET', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiHotlist?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:12 PM\nimport { IContentFileEntity, ContentFileEntityFields } from './IContentFileEntity';\n\n// #region Fields\n\nexport class HotlistEntityFields extends ContentFileEntityFields {\n public static colorField = 'Color';\n public static downloadOnlyAtLogonField = 'DownloadOnlyAtLogon';\n public static emailNotificationAddressField = 'EmailNotificationAddress';\n public static expeditiveTransferField = 'ExpeditiveTransfer';\n public static hitPriorityField = 'HitPriority';\n public static isCovertField = 'IsCovert';\n public static overridePrivacyField = 'OverridePrivacy';\n public static soundFileField = 'SoundFile';\n public static useWildcardsField = 'UseWildcards';\n}\n\n// #endregion Fields\n\nexport interface IHotlistEntity extends IContentFileEntity {\n // #region REST Properties\n\n color: string;\n\n downloadOnlyAtLogon: boolean;\n\n emailNotificationAddress: string;\n\n expeditiveTransfer: boolean;\n\n hitPriority: number;\n\n isCovert: boolean;\n\n overridePrivacy: boolean;\n\n soundFile: string;\n\n useWildcards: boolean;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiHotlist?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:17 PM\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ContentFileEntity } from './ContentFileEntity';\nimport { IHotlistEntity, HotlistEntityFields } from '../../Interface/IHotlistEntity';\n\nexport class HotlistEntity extends ContentFileEntity implements IHotlistEntity {\n // #region REST Properties\n\n // Color\n public get color(): string {\n return this.getField(HotlistEntityFields.colorField);\n }\n public set color(value: string) {\n this.setField(HotlistEntityFields.colorField, value);\n }\n\n // DownloadOnlyAtLogon\n public get downloadOnlyAtLogon(): boolean {\n return this.getField(HotlistEntityFields.downloadOnlyAtLogonField);\n }\n public set downloadOnlyAtLogon(value: boolean) {\n this.setField(HotlistEntityFields.downloadOnlyAtLogonField, value);\n }\n\n // EmailNotificationAddress\n public get emailNotificationAddress(): string {\n return this.getField(HotlistEntityFields.emailNotificationAddressField);\n }\n public set emailNotificationAddress(value: string) {\n this.setField(HotlistEntityFields.emailNotificationAddressField, value);\n }\n\n // ExpeditiveTransfer\n public get expeditiveTransfer(): boolean {\n return this.getField(HotlistEntityFields.expeditiveTransferField);\n }\n public set expeditiveTransfer(value: boolean) {\n this.setField(HotlistEntityFields.expeditiveTransferField, value);\n }\n\n // HitPriority\n public get hitPriority(): number {\n return this.getField(HotlistEntityFields.hitPriorityField);\n }\n public set hitPriority(value: number) {\n this.setField(HotlistEntityFields.hitPriorityField, value);\n }\n\n // IsCovert\n public get isCovert(): boolean {\n return this.getField(HotlistEntityFields.isCovertField);\n }\n public set isCovert(value: boolean) {\n this.setField(HotlistEntityFields.isCovertField, value);\n }\n\n // OverridePrivacy\n public get overridePrivacy(): boolean {\n return this.getField(HotlistEntityFields.overridePrivacyField);\n }\n public set overridePrivacy(value: boolean) {\n this.setField(HotlistEntityFields.overridePrivacyField, value);\n }\n\n // SoundFile\n public get soundFile(): string {\n return this.getField(HotlistEntityFields.soundFileField);\n }\n public set soundFile(value: string) {\n this.setField(HotlistEntityFields.soundFileField, value);\n }\n\n // UseWildcards\n public get useWildcards(): boolean {\n return this.getField(HotlistEntityFields.useWildcardsField);\n }\n public set useWildcards(value: boolean) {\n this.setField(HotlistEntityFields.useWildcardsField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Hotlists);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUserTask?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:09 PM\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\n\n// #region Fields\n\nexport class UserTaskEntityFields extends EntityFields {\n public static contextField = 'Context';\n public static guidField = 'Guid';\n public static isSystemTaskField = 'IsSystemTask';\n public static pathField = 'Path';\n public static taskSubTypeField = 'TaskSubType';\n public static taskTypeField = 'TaskType';\n}\n\n// #endregion Fields\n\nexport interface IUserTaskEntity extends IEntity {\n // #region REST Properties\n\n context: string;\n\n readonly guid: IGuid;\n\n readonly isSystemTask: boolean;\n\n path: string;\n\n taskSubType: IGuid;\n\n taskType: IGuid;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiUserTask?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { IGuid } from 'safeguid';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IUserTaskEntity, UserTaskEntityFields } from '../Interface/IUserTaskEntity';\nimport { Entity } from './Entity';\n\nexport class UserTaskEntity extends Entity implements IUserTaskEntity {\n // #region REST Properties\n\n // Context\n public get context(): string {\n return this.getField(UserTaskEntityFields.contextField, ValidFlags.Specific);\n }\n public set context(value: string) {\n this.setField(UserTaskEntityFields.contextField, value);\n }\n\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid(UserTaskEntityFields.guidField, ValidFlags.Specific);\n }\n\n // IsSystemTask\n public get isSystemTask(): boolean {\n return this.getField(UserTaskEntityFields.isSystemTaskField);\n }\n\n // Path\n public get path(): string {\n return this.getField(UserTaskEntityFields.pathField, ValidFlags.Specific);\n }\n public set path(value: string) {\n this.setField(UserTaskEntityFields.pathField, value);\n }\n\n // TaskSubType\n public get taskSubType(): IGuid {\n return this.getFieldGuid(UserTaskEntityFields.taskSubTypeField, ValidFlags.Specific);\n }\n public set taskSubType(value: IGuid) {\n this.setFieldGuid(UserTaskEntityFields.taskSubTypeField, value);\n }\n\n // TaskType\n public get taskType(): IGuid {\n return this.getFieldGuid(UserTaskEntityFields.taskTypeField, ValidFlags.Specific);\n }\n public set taskType(value: IGuid) {\n this.setFieldGuid(UserTaskEntityFields.taskTypeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.UserTasks);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiFile?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:06 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class FileEntityFields extends EntityFields {\n public static cacheGuidField = 'CacheGuid';\n public static fileCategoryField = 'FileCategory';\n public static xmlInfoField = 'XmlInfo';\n}\n\n// #endregion Fields\n\nexport interface IFileEntity extends IEntity {\n // #region REST Properties\n\n cacheGuid: IGuid;\n\n fileCategory: string;\n\n xmlInfo: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiFile?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:24 AM\nimport { Entity } from './Entity';\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { IGuid } from 'safeguid';\nimport { FileEntityFields, IFileEntity } from '../Interface/IFileEntity';\n\nexport class FileEntity extends Entity implements IFileEntity {\n // #region REST Properties\n\n // CacheGuid\n public get cacheGuid(): IGuid {\n return this.getFieldGuid(FileEntityFields.cacheGuidField);\n }\n public set cacheGuid(value: IGuid) {\n this.setFieldGuid(FileEntityFields.cacheGuidField, value);\n }\n\n // FileCategory\n public get fileCategory(): string {\n return this.getField(FileEntityFields.fileCategoryField);\n }\n public set fileCategory(value: string) {\n this.setField(FileEntityFields.fileCategoryField, value);\n }\n\n // XmlInfo\n public get xmlInfo(): string {\n return this.getField(FileEntityFields.xmlInfoField);\n }\n public set xmlInfo(value: string) {\n this.setField(FileEntityFields.xmlInfoField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.Files);\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoorTemplate?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class DoorTemplateEntityFields extends EntityFields {\n public static doorForcedBehaviorField = 'DoorForcedBehavior';\n public static doorHeldBehaviorField = 'DoorHeldBehavior';\n public static doorHeldOpenDelayField = 'DoorHeldOpenDelay';\n public static doorRelockDelayField = 'DoorRelockDelay';\n public static doorRelockOnCloseField = 'DoorRelockOnClose';\n public static enforceVisitorEscortRulesAlphaSideField = 'EnforceVisitorEscortRulesAlphaSide';\n public static enforceVisitorEscortRulesBetaSideField = 'EnforceVisitorEscortRulesBetaSide';\n public static extendedEntryTimeField = 'ExtendedEntryTime';\n public static extendedGrantTimeField = 'ExtendedGrantTime';\n public static grantOnRexField = 'GrantOnRex';\n public static interfaceModuleDeviceDefinitionField = 'InterfaceModuleDeviceDefinition';\n public static isAccessRulesEnabledField = 'IsAccessRulesEnabled';\n public static isDefaultField = 'IsDefault';\n public static isDoorPropertiesEnabledField = 'IsDoorPropertiesEnabled';\n public static isHardwareMappingEnabledField = 'IsHardwareMappingEnabled';\n public static isHardwareSettingsEnabledField = 'IsHardwareSettingsEnabled';\n public static maskAccessWhenUnlockedByScheduleField = 'MaskAccessWhenUnlockedBySchedule';\n public static maskDoorOpenTooLongWhenUnlockedByScheduleField = 'MaskDoorOpenTooLongWhenUnlockedBySchedule';\n public static maximumDelayBetweenSwipesField = 'MaximumDelayBetweenSwipes';\n public static normalEntryTimeField = 'NormalEntryTime';\n public static normalGrantTimeField = 'NormalGrantTime';\n public static rexHoldOffAfterClosedDelayField = 'RexHoldOffAfterClosedDelay';\n public static rexHoldOffAfterGrantDelayField = 'RexHoldOffAfterGrantDelay';\n public static rexHoldoffWhileOpenedField = 'RexHoldoffWhileOpened';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ICardAndPinSetting extends IFieldObject {\n cardAndPinCoverage: IGuid;\n cardAndPinTimeout: number;\n side: string;\n readerMode: string;\n}\n\nexport interface IAccessRulesConfig extends IFieldObject {\n accessRule: IGuid;\n side: string;\n}\n\nexport interface IAccessPointsInfo extends IFieldObject {\n deviceId: string;\n side: string;\n type: string;\n}\n\n// #endregion Inner classes\n\nexport interface IDoorTemplateEntity extends IEntity {\n // #region REST Properties\n\n doorForcedBehavior: string;\n\n doorHeldBehavior: string;\n\n doorHeldOpenDelay: number;\n\n doorRelockDelay: number;\n\n doorRelockOnClose: boolean;\n\n enforceVisitorEscortRulesAlphaSide: boolean;\n\n enforceVisitorEscortRulesBetaSide: boolean;\n\n extendedEntryTime: number;\n\n extendedGrantTime: number;\n\n grantOnRex: boolean;\n\n interfaceModuleDeviceDefinition: IGuid;\n\n isAccessRulesEnabled: boolean;\n\n isDefault: boolean;\n\n isDoorPropertiesEnabled: boolean;\n\n isHardwareMappingEnabled: boolean;\n\n isHardwareSettingsEnabled: boolean;\n\n maskAccessWhenUnlockedBySchedule: boolean;\n\n maskDoorOpenTooLongWhenUnlockedBySchedule: boolean;\n\n maximumDelayBetweenSwipes: number;\n\n normalEntryTime: number;\n\n normalGrantTime: number;\n\n rexHoldOffAfterClosedDelay: number;\n\n rexHoldOffAfterGrantDelay: number;\n\n rexHoldoffWhileOpened: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointsAsync(transaction?: ITransaction | null): Promise | null>;\n getAccessRulesAsync(transaction?: ITransaction | null): Promise | null>;\n getAppliedDoorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n applyAsync(doorGuid: IGuid, unitGuid: IGuid, interfaceGuid: IGuid, transaction?: ITransaction): Promise;\n getCardAndPinSettingsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoorTemplate?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:02 AM\nimport { Entity } from '../Entity';\nimport { EntityTypes } from '../../Enumerations/EntityTypes';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IDoorTemplateEntity, ICardAndPinSetting, IAccessRulesConfig, IAccessPointsInfo, DoorTemplateEntityFields } from '../../Interface/IDoorTemplateEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\n\n// #region Inner classes\n\nexport class CardAndPinSetting extends FieldObject implements ICardAndPinSetting {\n // CardAndPinCoverage\n public get cardAndPinCoverage(): IGuid {\n return this.getFieldGuid('CardAndPinCoverage');\n }\n public set cardAndPinCoverage(value: IGuid) {\n this.setFieldGuid('CardAndPinCoverage', value);\n }\n // CardAndPinTimeout\n public get cardAndPinTimeout(): number {\n return this.getField('CardAndPinTimeout');\n }\n public set cardAndPinTimeout(value: number) {\n this.setField('CardAndPinTimeout', value);\n }\n // Side\n public get side(): string {\n return this.getField('Side');\n }\n public set side(value: string) {\n this.setField('Side', value);\n }\n // ReaderMode\n public get readerMode(): string {\n return this.getField('ReaderMode');\n }\n public set readerMode(value: string) {\n this.setField('ReaderMode', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('CardAndPinCoverage', SafeGuid.EMPTY);\n this.setField('CardAndPinTimeout', 0);\n this.setField('Side', '');\n this.setField('ReaderMode', '');\n }\n}\n\nexport class AccessRulesConfig extends FieldObject implements IAccessRulesConfig {\n // AccessRule\n public get accessRule(): IGuid {\n return this.getFieldGuid('AccessRule');\n }\n public set accessRule(value: IGuid) {\n this.setFieldGuid('AccessRule', value);\n }\n // Side\n public get side(): string {\n return this.getField('Side');\n }\n public set side(value: string) {\n this.setField('Side', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('AccessRule', SafeGuid.EMPTY);\n this.setField('Side', '');\n }\n}\n\nexport class AccessPointsInfo extends FieldObject implements IAccessPointsInfo {\n // DeviceId\n public get deviceId(): string {\n return this.getField('DeviceId');\n }\n public set deviceId(value: string) {\n this.setField('DeviceId', value);\n }\n // Side\n public get side(): string {\n return this.getField('Side');\n }\n public set side(value: string) {\n this.setField('Side', value);\n }\n // Type\n public get type(): string {\n return this.getField('Type');\n }\n public set type(value: string) {\n this.setField('Type', value);\n }\n\n public initializeAllFields(): void {\n this.setField('DeviceId', '');\n this.setField('Side', '');\n this.setField('Type', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class DoorTemplateEntity extends Entity implements IDoorTemplateEntity {\n // #region REST Properties\n\n // DoorForcedBehavior\n public get doorForcedBehavior(): string {\n return this.getField(DoorTemplateEntityFields.doorForcedBehaviorField);\n }\n public set doorForcedBehavior(value: string) {\n this.setField(DoorTemplateEntityFields.doorForcedBehaviorField, value);\n }\n\n // DoorHeldBehavior\n public get doorHeldBehavior(): string {\n return this.getField(DoorTemplateEntityFields.doorHeldBehaviorField);\n }\n public set doorHeldBehavior(value: string) {\n this.setField(DoorTemplateEntityFields.doorHeldBehaviorField, value);\n }\n\n // DoorHeldOpenDelay\n public get doorHeldOpenDelay(): number {\n return this.getField(DoorTemplateEntityFields.doorHeldOpenDelayField);\n }\n public set doorHeldOpenDelay(value: number) {\n this.setField(DoorTemplateEntityFields.doorHeldOpenDelayField, value);\n }\n\n // DoorRelockDelay\n public get doorRelockDelay(): number {\n return this.getField(DoorTemplateEntityFields.doorRelockDelayField);\n }\n public set doorRelockDelay(value: number) {\n this.setField(DoorTemplateEntityFields.doorRelockDelayField, value);\n }\n\n // DoorRelockOnClose\n public get doorRelockOnClose(): boolean {\n return this.getField(DoorTemplateEntityFields.doorRelockOnCloseField);\n }\n public set doorRelockOnClose(value: boolean) {\n this.setField(DoorTemplateEntityFields.doorRelockOnCloseField, value);\n }\n\n // EnforceVisitorEscortRulesAlphaSide\n public get enforceVisitorEscortRulesAlphaSide(): boolean {\n return this.getField(DoorTemplateEntityFields.enforceVisitorEscortRulesAlphaSideField);\n }\n public set enforceVisitorEscortRulesAlphaSide(value: boolean) {\n this.setField(DoorTemplateEntityFields.enforceVisitorEscortRulesAlphaSideField, value);\n }\n\n // EnforceVisitorEscortRulesBetaSide\n public get enforceVisitorEscortRulesBetaSide(): boolean {\n return this.getField(DoorTemplateEntityFields.enforceVisitorEscortRulesBetaSideField);\n }\n public set enforceVisitorEscortRulesBetaSide(value: boolean) {\n this.setField(DoorTemplateEntityFields.enforceVisitorEscortRulesBetaSideField, value);\n }\n\n // ExtendedEntryTime\n public get extendedEntryTime(): number {\n return this.getField(DoorTemplateEntityFields.extendedEntryTimeField);\n }\n public set extendedEntryTime(value: number) {\n this.setField(DoorTemplateEntityFields.extendedEntryTimeField, value);\n }\n\n // ExtendedGrantTime\n public get extendedGrantTime(): number {\n return this.getField(DoorTemplateEntityFields.extendedGrantTimeField);\n }\n public set extendedGrantTime(value: number) {\n this.setField(DoorTemplateEntityFields.extendedGrantTimeField, value);\n }\n\n // GrantOnRex\n public get grantOnRex(): boolean {\n return this.getField(DoorTemplateEntityFields.grantOnRexField);\n }\n public set grantOnRex(value: boolean) {\n this.setField(DoorTemplateEntityFields.grantOnRexField, value);\n }\n\n // InterfaceModuleDeviceDefinition\n public get interfaceModuleDeviceDefinition(): IGuid {\n return this.getFieldGuid(DoorTemplateEntityFields.interfaceModuleDeviceDefinitionField);\n }\n public set interfaceModuleDeviceDefinition(value: IGuid) {\n this.setFieldGuid(DoorTemplateEntityFields.interfaceModuleDeviceDefinitionField, value);\n }\n\n // IsAccessRulesEnabled\n public get isAccessRulesEnabled(): boolean {\n return this.getField(DoorTemplateEntityFields.isAccessRulesEnabledField);\n }\n public set isAccessRulesEnabled(value: boolean) {\n this.setField(DoorTemplateEntityFields.isAccessRulesEnabledField, value);\n }\n\n // IsDefault\n public get isDefault(): boolean {\n return this.getField(DoorTemplateEntityFields.isDefaultField);\n }\n public set isDefault(value: boolean) {\n this.setField(DoorTemplateEntityFields.isDefaultField, value);\n }\n\n // IsDoorPropertiesEnabled\n public get isDoorPropertiesEnabled(): boolean {\n return this.getField(DoorTemplateEntityFields.isDoorPropertiesEnabledField);\n }\n public set isDoorPropertiesEnabled(value: boolean) {\n this.setField(DoorTemplateEntityFields.isDoorPropertiesEnabledField, value);\n }\n\n // IsHardwareMappingEnabled\n public get isHardwareMappingEnabled(): boolean {\n return this.getField(DoorTemplateEntityFields.isHardwareMappingEnabledField);\n }\n public set isHardwareMappingEnabled(value: boolean) {\n this.setField(DoorTemplateEntityFields.isHardwareMappingEnabledField, value);\n }\n\n // IsHardwareSettingsEnabled\n public get isHardwareSettingsEnabled(): boolean {\n return this.getField(DoorTemplateEntityFields.isHardwareSettingsEnabledField);\n }\n public set isHardwareSettingsEnabled(value: boolean) {\n this.setField(DoorTemplateEntityFields.isHardwareSettingsEnabledField, value);\n }\n\n // MaskAccessWhenUnlockedBySchedule\n public get maskAccessWhenUnlockedBySchedule(): boolean {\n return this.getField(DoorTemplateEntityFields.maskAccessWhenUnlockedByScheduleField);\n }\n public set maskAccessWhenUnlockedBySchedule(value: boolean) {\n this.setField(DoorTemplateEntityFields.maskAccessWhenUnlockedByScheduleField, value);\n }\n\n // MaskDoorOpenTooLongWhenUnlockedBySchedule\n public get maskDoorOpenTooLongWhenUnlockedBySchedule(): boolean {\n return this.getField(DoorTemplateEntityFields.maskDoorOpenTooLongWhenUnlockedByScheduleField);\n }\n public set maskDoorOpenTooLongWhenUnlockedBySchedule(value: boolean) {\n this.setField(DoorTemplateEntityFields.maskDoorOpenTooLongWhenUnlockedByScheduleField, value);\n }\n\n // MaximumDelayBetweenSwipes\n public get maximumDelayBetweenSwipes(): number {\n return this.getField(DoorTemplateEntityFields.maximumDelayBetweenSwipesField);\n }\n public set maximumDelayBetweenSwipes(value: number) {\n this.setField(DoorTemplateEntityFields.maximumDelayBetweenSwipesField, value);\n }\n\n // NormalEntryTime\n public get normalEntryTime(): number {\n return this.getField(DoorTemplateEntityFields.normalEntryTimeField);\n }\n public set normalEntryTime(value: number) {\n this.setField(DoorTemplateEntityFields.normalEntryTimeField, value);\n }\n\n // NormalGrantTime\n public get normalGrantTime(): number {\n return this.getField(DoorTemplateEntityFields.normalGrantTimeField);\n }\n public set normalGrantTime(value: number) {\n this.setField(DoorTemplateEntityFields.normalGrantTimeField, value);\n }\n\n // RexHoldOffAfterClosedDelay\n public get rexHoldOffAfterClosedDelay(): number {\n return this.getField(DoorTemplateEntityFields.rexHoldOffAfterClosedDelayField);\n }\n public set rexHoldOffAfterClosedDelay(value: number) {\n this.setField(DoorTemplateEntityFields.rexHoldOffAfterClosedDelayField, value);\n }\n\n // RexHoldOffAfterGrantDelay\n public get rexHoldOffAfterGrantDelay(): number {\n return this.getField(DoorTemplateEntityFields.rexHoldOffAfterGrantDelayField);\n }\n public set rexHoldOffAfterGrantDelay(value: number) {\n this.setField(DoorTemplateEntityFields.rexHoldOffAfterGrantDelayField, value);\n }\n\n // RexHoldoffWhileOpened\n public get rexHoldoffWhileOpened(): boolean {\n return this.getField(DoorTemplateEntityFields.rexHoldoffWhileOpenedField);\n }\n public set rexHoldoffWhileOpened(value: boolean) {\n this.setField(DoorTemplateEntityFields.rexHoldoffWhileOpenedField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super(EntityTypes.DoorTemplates);\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AccessPointsInfo, 'AccessPoints', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n public async getAccessRulesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AccessRulesConfig, 'AccessRules', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n public async getAppliedDoorsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AppliedDoors', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async applyAsync(doorGuid: IGuid, unitGuid: IGuid, interfaceGuid: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('doorGuid', doorGuid);\n inParam.setFieldGuid('unitGuid', unitGuid);\n inParam.setFieldGuid('interfaceGuid', interfaceGuid);\n\n return this.executeRequestTransactionAsync('Apply', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getCardAndPinSettingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(CardAndPinSetting, 'CardAndPinSettings', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessManagerRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class AccessManagerRoleEntityFields extends RoleEntityFields {\n public static activateGlobalAntiPassbackField = 'ActivateGlobalAntiPassback';\n public static activatePeerToPeerField = 'ActivatePeerToPeer';\n public static keepHistoryField = 'KeepHistory';\n public static logRetentionDaysField = 'LogRetentionDays';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IAccessControlExtension extends IFieldObject {\n extensionType: IGuid;\n}\n\n// #endregion Inner classes\n\nexport interface IAccessManagerRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n activateGlobalAntiPassback: boolean;\n\n activatePeerToPeer: boolean;\n\n keepHistory: boolean;\n\n logRetentionDays: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getExtensionsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAccessManagerRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:02 AM\nimport { RoleEntity } from '../Roles/RoleEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IAccessManagerRoleEntity, IAccessControlExtension, AccessManagerRoleEntityFields } from '../../Interface/IAccessManagerRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class AccessControlExtension extends FieldObject implements IAccessControlExtension {\n // ExtensionType\n public get extensionType(): IGuid {\n return this.getFieldGuid('ExtensionType');\n }\n public set extensionType(value: IGuid) {\n this.setFieldGuid('ExtensionType', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('ExtensionType', SafeGuid.EMPTY);\n }\n}\n\n// #endregion Inner classes\n\nexport class AccessManagerRoleEntity extends RoleEntity implements IAccessManagerRoleEntity {\n // #region REST Properties\n\n // ActivateGlobalAntiPassback\n public get activateGlobalAntiPassback(): boolean {\n return this.getField(AccessManagerRoleEntityFields.activateGlobalAntiPassbackField);\n }\n public set activateGlobalAntiPassback(value: boolean) {\n this.setField(AccessManagerRoleEntityFields.activateGlobalAntiPassbackField, value);\n }\n\n // ActivatePeerToPeer\n public get activatePeerToPeer(): boolean {\n return this.getField(AccessManagerRoleEntityFields.activatePeerToPeerField);\n }\n public set activatePeerToPeer(value: boolean) {\n this.setField(AccessManagerRoleEntityFields.activatePeerToPeerField, value);\n }\n\n // KeepHistory\n public get keepHistory(): boolean {\n return this.getField(AccessManagerRoleEntityFields.keepHistoryField);\n }\n public set keepHistory(value: boolean) {\n this.setField(AccessManagerRoleEntityFields.keepHistoryField, value);\n }\n\n // LogRetentionDays\n public get logRetentionDays(): number {\n return this.getField(AccessManagerRoleEntityFields.logRetentionDaysField);\n }\n public set logRetentionDays(value: number) {\n this.setField(AccessManagerRoleEntityFields.logRetentionDaysField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getExtensionsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AccessControlExtension, 'Extensions', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAreaAccessPoint?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\nimport { IAccessPointEntity, AccessPointEntityFields } from './IAccessPointEntity';\n\n// #region Fields\n\nexport class AreaAccessPointEntityFields extends AccessPointEntityFields {\n public static areaField = 'Area';\n}\n\n// #endregion Fields\n\nexport interface IAreaAccessPointEntity extends IAccessPointEntity {\n // #region REST Properties\n\n readonly area: IGuid;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAreaAccessPoint?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:25 AM\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { AccessPointEntity } from './AccessPointEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAreaAccessPointEntity, AreaAccessPointEntityFields } from '../../Interface/IAreaAccessPointEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class AreaAccessPointEntity extends AccessPointEntity implements IAreaAccessPointEntity {\n // #region REST Properties\n\n // Area\n public get area(): IGuid {\n return this.getFieldGuid(AreaAccessPointEntityFields.areaField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAccessPointsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AccessPoints', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Rules', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoorAccessPoint?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { IAccessPointEntity, AccessPointEntityFields } from './IAccessPointEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class DoorAccessPointEntityFields extends AccessPointEntityFields {\n public static deviceField = 'Device';\n public static doorField = 'Door';\n}\n\n// #endregion Fields\n\nexport interface IDoorAccessPointEntity extends IAccessPointEntity {\n // #region REST Properties\n\n device: IGuid;\n\n readonly door: IGuid;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoorAccessPoint?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { AccessPointEntity } from './AccessPointEntity';\nimport { IGuid } from 'safeguid';\nimport { IDoorAccessPointEntity, DoorAccessPointEntityFields } from '../../Interface/IDoorAccessPointEntity';\n\nexport class DoorAccessPointEntity extends AccessPointEntity implements IDoorAccessPointEntity {\n // #region REST Properties\n\n // Device\n public get device(): IGuid {\n return this.getFieldGuid(DoorAccessPointEntityFields.deviceField);\n }\n public set device(value: IGuid) {\n this.setFieldGuid(DoorAccessPointEntityFields.deviceField, value);\n }\n\n // Door\n public get door(): IGuid {\n return this.getFieldGuid(DoorAccessPointEntityFields.doorField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDoorSideAccessPoint?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-15 12:15:58 PM\nimport { ObservableCollection } from './../../../Helpers/ObservableCollection';\nimport { DoorAccessPointEntity } from './DoorAccessPointEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { FieldObject } from './../../../Helpers/FieldObject';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IDoorSideAccessPointEntity, DoorSideAccessPointEntityFields } from '../../Interface/IDoorSideAccessPointEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\nexport class DoorSideAccessPointEntity extends DoorAccessPointEntity implements IDoorSideAccessPointEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Rules', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async setDeviceStateAsync(shunt: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('shunt', shunt);\n\n return this.executeRequestTransactionAsync('SetDeviceState', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMobileApplication?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { IApplicationEntity, ApplicationEntityFields } from './IApplicationEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class MobileApplicationEntityFields extends ApplicationEntityFields {\n public static altitudeField = 'Altitude';\n public static headingField = 'Heading';\n public static isBlackListedField = 'IsBlackListed';\n public static latitudeField = 'Latitude';\n public static longitudeField = 'Longitude';\n public static mobileVideoUnitIdField = 'MobileVideoUnitId';\n public static oSField = 'OS';\n public static speedField = 'Speed';\n public static timeZoneIdField = 'TimeZoneId';\n}\n\n// #endregion Fields\n\nexport interface IMobileApplicationEntity extends IApplicationEntity {\n // #region REST Properties\n\n altitude: number;\n\n heading: number;\n\n isBlackListed: boolean;\n\n latitude: number;\n\n longitude: number;\n\n mobileVideoUnitId: IGuid;\n\n oS: string;\n\n speed: number;\n\n timeZoneId: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMobileApplication?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { ApplicationEntity } from './ApplicationEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IMobileApplicationEntity, MobileApplicationEntityFields } from '../../Interface/IMobileApplicationEntity';\n\nexport class MobileApplicationEntity extends ApplicationEntity implements IMobileApplicationEntity {\n // #region REST Properties\n\n // Altitude\n public get altitude(): number {\n return this.getField(MobileApplicationEntityFields.altitudeField, ValidFlags.EntityStatus3);\n }\n public set altitude(value: number) {\n this.setField(MobileApplicationEntityFields.altitudeField, value);\n }\n\n // Heading\n public get heading(): number {\n return this.getField(MobileApplicationEntityFields.headingField, ValidFlags.EntityStatus3);\n }\n public set heading(value: number) {\n this.setField(MobileApplicationEntityFields.headingField, value);\n }\n\n // IsBlackListed\n public get isBlackListed(): boolean {\n return this.getField(MobileApplicationEntityFields.isBlackListedField, ValidFlags.Specific);\n }\n public set isBlackListed(value: boolean) {\n this.setField(MobileApplicationEntityFields.isBlackListedField, value);\n }\n\n // Latitude\n public get latitude(): number {\n return this.getField(MobileApplicationEntityFields.latitudeField, ValidFlags.EntityStatus3);\n }\n public set latitude(value: number) {\n this.setField(MobileApplicationEntityFields.latitudeField, value);\n }\n\n // Longitude\n public get longitude(): number {\n return this.getField(MobileApplicationEntityFields.longitudeField, ValidFlags.EntityStatus3);\n }\n public set longitude(value: number) {\n this.setField(MobileApplicationEntityFields.longitudeField, value);\n }\n\n // MobileVideoUnitId\n public get mobileVideoUnitId(): IGuid {\n return this.getFieldGuid(MobileApplicationEntityFields.mobileVideoUnitIdField, ValidFlags.Specific);\n }\n public set mobileVideoUnitId(value: IGuid) {\n this.setFieldGuid(MobileApplicationEntityFields.mobileVideoUnitIdField, value);\n }\n\n // OS\n public get oS(): string {\n return this.getField(MobileApplicationEntityFields.oSField, ValidFlags.Specific);\n }\n public set oS(value: string) {\n this.setField(MobileApplicationEntityFields.oSField, value);\n }\n\n // Speed\n public get speed(): number {\n return this.getField(MobileApplicationEntityFields.speedField, ValidFlags.EntityStatus3);\n }\n public set speed(value: number) {\n this.setField(MobileApplicationEntityFields.speedField, value);\n }\n\n // TimeZoneId\n public get timeZoneId(): string {\n return this.getField(MobileApplicationEntityFields.timeZoneIdField, ValidFlags.Specific);\n }\n public set timeZoneId(value: string) {\n this.setField(MobileApplicationEntityFields.timeZoneIdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiInputDevice?codegen=ts&InterfaceOnly=True&workflow=False on 2020-12-11 12:11:51 PM\nimport { DeviceEntityFields, IDeviceEntity } from './IDeviceEntity';\n\n// #region Fields\n\nexport class InputDeviceEntityFields extends DeviceEntityFields {\n public static inputStateField = 'InputState';\n}\n\n// #endregion Fields\n\nexport interface IInputDeviceEntity extends IDeviceEntity {\n // #region REST Properties\n\n inputState: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiInputDevice?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-15 12:15:59 PM\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IInputDeviceEntity, InputDeviceEntityFields } from '../../Interface/IInputDeviceEntity';\nimport { DeviceEntity } from './DeviceEntity';\n\nexport class InputDeviceEntity extends DeviceEntity implements IInputDeviceEntity {\n // #region REST Properties\n\n // InputState\n public get inputState(): string {\n return this.getField(InputDeviceEntityFields.inputStateField, ValidFlags.EntityStatus);\n }\n public set inputState(value: string) {\n this.setField(InputDeviceEntityFields.inputStateField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionInputDevice?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:06 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity, EntityFields } from './IEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\nimport { InputDeviceEntityFields, IInputDeviceEntity } from './IInputDeviceEntity';\nimport { IRestResponse } from './IRestResponse';\n\n// #region Fields\n\nexport class IntrusionInputDeviceEntityFields extends InputDeviceEntityFields {\n public static alarmStateField = 'AlarmState';\n public static bypassedStateField = 'BypassedState';\n public static capabilitiesField = 'Capabilities';\n public static inputTypeField = 'InputType';\n public static inputTypeCustomIconField = 'InputTypeCustomIcon';\n public static inputTypeIdField = 'InputTypeId';\n public static inputTypeNameField = 'InputTypeName';\n}\n\n// #endregion Fields\n\nexport interface IIntrusionInputDeviceEntity extends IInputDeviceEntity {\n // #region REST Properties\n\n alarmState: string;\n\n bypassedState: string;\n\n readonly capabilities: string;\n\n readonly inputType: string;\n\n readonly inputTypeCustomIcon: IGuid;\n\n readonly inputTypeId: IGuid;\n\n readonly inputTypeName: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAlarmSourcesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n bypassInputAsync(transaction?: ITransaction): Promise;\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n unbypassInputAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIntrusionInputDevice?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IIntrusionInputDeviceEntity, IntrusionInputDeviceEntityFields } from '../../Interface/IIntrusionInputDevice';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { InputDeviceEntity } from './InputDeviceEntity';\n\nexport class IntrusionInputDeviceEntity extends InputDeviceEntity implements IIntrusionInputDeviceEntity {\n // #region REST Properties\n\n // AlarmState\n public get alarmState(): string {\n return this.getField(IntrusionInputDeviceEntityFields.alarmStateField, ValidFlags.EntityStatus2);\n }\n public set alarmState(value: string) {\n this.setField(IntrusionInputDeviceEntityFields.alarmStateField, value);\n }\n\n // BypassedState\n public get bypassedState(): string {\n return this.getField(IntrusionInputDeviceEntityFields.bypassedStateField, ValidFlags.EntityStatus2);\n }\n public set bypassedState(value: string) {\n this.setField(IntrusionInputDeviceEntityFields.bypassedStateField, value);\n }\n\n // Capabilities\n public get capabilities(): string {\n return this.getField(IntrusionInputDeviceEntityFields.capabilitiesField, ValidFlags.Specific);\n }\n\n // InputType\n public get inputType(): string {\n return this.getField(IntrusionInputDeviceEntityFields.inputTypeField, ValidFlags.Specific);\n }\n\n // InputTypeCustomIcon\n public get inputTypeCustomIcon(): IGuid {\n return this.getFieldGuid(IntrusionInputDeviceEntityFields.inputTypeCustomIconField, ValidFlags.Specific);\n }\n\n // InputTypeId\n public get inputTypeId(): IGuid {\n return this.getFieldGuid(IntrusionInputDeviceEntityFields.inputTypeIdField, ValidFlags.Specific);\n }\n\n // InputTypeName\n public get inputTypeName(): string {\n return this.getField(IntrusionInputDeviceEntityFields.inputTypeNameField, ValidFlags.Specific);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAlarmSourcesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('AlarmSources', 'Id', false, query, ValidFlags.EntityStatus2, transaction);\n }\n\n public async bypassInputAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('BypassInput', 'POST', null, transaction, responseHandler);\n }\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', false, query, ValidFlags.Specific, transaction);\n }\n\n public async unbypassInputAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('UnbypassInput', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiOutputDevice?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { IGuid } from 'safeguid';\nimport { ITransaction } from './ITransaction';\nimport { DeviceEntityFields, IDeviceEntity } from './IDeviceEntity';\nimport { IRestResponse } from './IRestResponse';\n\n// #region Fields\n\nexport class OutputDeviceEntityFields extends DeviceEntityFields {\n public static outputStateField = 'OutputState';\n}\n\n// #endregion Fields\n\nexport interface IOutputDeviceEntity extends IDeviceEntity {\n // #region REST Properties\n\n outputState: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n triggerOutputAsync(outputBehaviorId: IGuid, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiOutputDevice?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { IGuid } from 'safeguid';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IOutputDeviceEntity, OutputDeviceEntityFields } from '../../Interface/IOutputDeviceEntity';\nimport { DeviceEntity } from './DeviceEntity';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\n\nexport class OutputDeviceEntity extends DeviceEntity implements IOutputDeviceEntity {\n // #region REST Properties\n\n // OutputState\n public get outputState(): string {\n return this.getField(OutputDeviceEntityFields.outputStateField, ValidFlags.EntityStatus);\n }\n public set outputState(value: string) {\n this.setField(OutputDeviceEntityFields.outputStateField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async triggerOutputAsync(outputBehaviorId: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('outputBehaviorId', outputBehaviorId);\n\n return this.executeRequestTransactionAsync('TriggerOutput', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLicensePlateManagerRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:06 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class LicensePlateManagerRoleEntityFields extends RoleEntityFields {\n public static archiverIdField = 'ArchiverId';\n public static eventRetentionInDaysField = 'EventRetentionInDays';\n public static hitImageRetentionInDaysField = 'HitImageRetentionInDays';\n public static hitRetentionInDaysField = 'HitRetentionInDays';\n public static occupancyRetentionInDaysField = 'OccupancyRetentionInDays';\n public static parkingZoneDataRetentionInDaysField = 'ParkingZoneDataRetentionInDays';\n public static positionRetentionInDaysField = 'PositionRetentionInDays';\n public static readImageRetentionInDaysField = 'ReadImageRetentionInDays';\n public static readRetentionInDaysField = 'ReadRetentionInDays';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IModuleConfig extends IFieldObject {\n id: string;\n isActive: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface ILicensePlateManagerRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n archiverId: IGuid;\n\n eventRetentionInDays: number;\n\n hitImageRetentionInDays: number;\n\n hitRetentionInDays: number;\n\n occupancyRetentionInDays: number;\n\n parkingZoneDataRetentionInDays: number;\n\n positionRetentionInDays: number;\n\n readImageRetentionInDays: number;\n\n readRetentionInDays: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAssociationAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getModulesAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiLicensePlateManagerRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { RoleEntity } from '../Roles/RoleEntity';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { Transaction } from '../../Transaction';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { QueryFilter } from '../../Queries/QueryFilter';\nimport { Entity } from '../Entity';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { ILicensePlateManagerRoleEntity, IModuleConfig, LicensePlateManagerRoleEntityFields } from '../../Interface/ILicensePlateManagerRole';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class ModuleConfig extends FieldObject implements IModuleConfig {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // IsActive\n public get isActive(): boolean {\n return this.getField('IsActive');\n }\n public set isActive(value: boolean) {\n this.setField('IsActive', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('IsActive', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class LicensePlateManagerRoleEntity extends RoleEntity implements ILicensePlateManagerRoleEntity {\n // #region REST Properties\n\n // ArchiverId\n public get archiverId(): IGuid {\n return this.getFieldGuid(LicensePlateManagerRoleEntityFields.archiverIdField);\n }\n public set archiverId(value: IGuid) {\n this.setFieldGuid(LicensePlateManagerRoleEntityFields.archiverIdField, value);\n }\n\n // EventRetentionInDays\n public get eventRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.eventRetentionInDaysField);\n }\n public set eventRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.eventRetentionInDaysField, value);\n }\n\n // HitImageRetentionInDays\n public get hitImageRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.hitImageRetentionInDaysField);\n }\n public set hitImageRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.hitImageRetentionInDaysField, value);\n }\n\n // HitRetentionInDays\n public get hitRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.hitRetentionInDaysField);\n }\n public set hitRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.hitRetentionInDaysField, value);\n }\n\n // OccupancyRetentionInDays\n public get occupancyRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.occupancyRetentionInDaysField);\n }\n public set occupancyRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.occupancyRetentionInDaysField, value);\n }\n\n // ParkingZoneDataRetentionInDays\n public get parkingZoneDataRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.parkingZoneDataRetentionInDaysField);\n }\n public set parkingZoneDataRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.parkingZoneDataRetentionInDaysField, value);\n }\n\n // PositionRetentionInDays\n public get positionRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.positionRetentionInDaysField);\n }\n public set positionRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.positionRetentionInDaysField, value);\n }\n\n // ReadImageRetentionInDays\n public get readImageRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.readImageRetentionInDaysField);\n }\n public set readImageRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.readImageRetentionInDaysField, value);\n }\n\n // ReadRetentionInDays\n public get readRetentionInDays(): number {\n return this.getField(LicensePlateManagerRoleEntityFields.readRetentionInDaysField);\n }\n public set readRetentionInDays(value: number) {\n this.setField(LicensePlateManagerRoleEntityFields.readRetentionInDaysField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAssociationAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Associations', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getModulesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(ModuleConfig, 'Modules', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArchiverAgent?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-15 12:15:50 PM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { IRestResponse } from './IRestResponse';\nimport { IAgentEntity, AgentEntityFields } from './IAgentEntity';\nimport { ITransaction } from './ITransaction';\nimport { IFieldObject } from './IFieldObject';\nimport { IDatabaseCreateInfo, IDatabaseInfo } from './IRoleEntity';\n\n// #region Fields\n\nexport class ArchiverAgentEntityFields extends AgentEntityFields {\n public static archiveBackupPathField = 'ArchiveBackupPath';\n public static archivingPriorityField = 'ArchivingPriority';\n public static automaticBackupFileCountField = 'AutomaticBackupFileCount';\n public static automaticBackupFrequencyField = 'AutomaticBackupFrequency';\n public static automaticBackupTimeField = 'AutomaticBackupTime';\n public static backupFolderField = 'BackupFolder';\n public static backupRetentionPeriodField = 'BackupRetentionPeriod';\n public static databaseFolderField = 'DatabaseFolder';\n public static databaseInstanceField = 'DatabaseInstance';\n public static databaseNameField = 'DatabaseName';\n public static databasePasswordField = 'DatabasePassword';\n public static databaseUserField = 'DatabaseUser';\n public static deleteOldBackupFilesOnDiskFullField = 'DeleteOldBackupFilesOnDiskFull';\n public static enableAutomaticBackupField = 'EnableAutomaticBackup';\n public static enableBackupCompressionField = 'EnableBackupCompression';\n public static notificationsDatabaseUsageField = 'NotificationsDatabaseUsage';\n public static notificationsDatabaseUsageAsPercentageField = 'NotificationsDatabaseUsageAsPercentage';\n public static notificationsDiskSpaceField = 'NotificationsDiskSpace';\n public static notificationsOnlyWhenLimitIsReachedField = 'NotificationsOnlyWhenLimitIsReached';\n public static notificationsRemainingGbField = 'NotificationsRemainingGb';\n public static rtspPortField = 'RtspPort';\n public static rtspPortUnitControlField = 'RtspPortUnitControl';\n public static telnetPortField = 'TelnetPort';\n}\n\n// #endregion Fields\n\nexport interface IArchiverAgentEntity extends IAgentEntity {\n // #region REST Properties\n\n archiveBackupPath: string;\n\n archivingPriority: number;\n\n automaticBackupFileCount: number;\n\n automaticBackupFrequency: string;\n\n automaticBackupTime: number;\n\n backupFolder: string;\n\n backupRetentionPeriod: number;\n\n databaseFolder: string;\n\n databaseInstance: string;\n\n databaseName: string;\n\n databasePassword: string;\n\n databaseUser: string;\n\n deleteOldBackupFilesOnDiskFull: boolean;\n\n enableAutomaticBackup: boolean;\n\n enableBackupCompression: boolean;\n\n notificationsDatabaseUsage: boolean;\n\n notificationsDatabaseUsageAsPercentage: number;\n\n notificationsDiskSpace: boolean;\n\n notificationsOnlyWhenLimitIsReached: boolean;\n\n notificationsRemainingGb: number;\n\n rtspPort: number;\n\n rtspPortUnitControl: number;\n\n telnetPort: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getArchiverStatsAsync(transaction?: ITransaction | null): Promise;\n createDatabaseAsync(value: IDatabaseCreateInfo, transaction?: ITransaction): Promise;\n createDatabaseBackupAsync(folder: string, enableCompression: boolean, transaction?: ITransaction): Promise;\n deleteDatabaseAsync(transaction?: ITransaction): Promise;\n getDriveGroupsAsync(transaction?: ITransaction): Promise | null>;\n restoreDatabaseBackupAsync(file: string, transaction?: ITransaction): Promise;\n setDatabaseAsync(value: IDatabaseInfo, transaction?: ITransaction): Promise;\n upgradeDatabaseAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArchiverAgent?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-15 12:15:59 PM\nimport { AgentEntity } from '../AgentEntity';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IArchiverAgentEntity, ArchiverAgentEntityFields } from '../../Interface/IArchiverAgentEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\nimport { IDatabaseCreateInfo, IDatabaseInfo } from '../../Interface/IRoleEntity';\n\nexport class ArchiverAgentEntity extends AgentEntity implements IArchiverAgentEntity {\n // #region REST Properties\n\n // ArchiveBackupPath\n public get archiveBackupPath(): string {\n return this.getField(ArchiverAgentEntityFields.archiveBackupPathField);\n }\n public set archiveBackupPath(value: string) {\n this.setField(ArchiverAgentEntityFields.archiveBackupPathField, value);\n }\n\n // ArchivingPriority\n public get archivingPriority(): number {\n return this.getField(ArchiverAgentEntityFields.archivingPriorityField);\n }\n public set archivingPriority(value: number) {\n this.setField(ArchiverAgentEntityFields.archivingPriorityField, value);\n }\n\n // AutomaticBackupFileCount\n public get automaticBackupFileCount(): number {\n return this.getField(ArchiverAgentEntityFields.automaticBackupFileCountField);\n }\n public set automaticBackupFileCount(value: number) {\n this.setField(ArchiverAgentEntityFields.automaticBackupFileCountField, value);\n }\n\n // AutomaticBackupFrequency\n public get automaticBackupFrequency(): string {\n return this.getField(ArchiverAgentEntityFields.automaticBackupFrequencyField);\n }\n public set automaticBackupFrequency(value: string) {\n this.setField(ArchiverAgentEntityFields.automaticBackupFrequencyField, value);\n }\n\n // AutomaticBackupTime\n public get automaticBackupTime(): number {\n return this.getField(ArchiverAgentEntityFields.automaticBackupTimeField);\n }\n public set automaticBackupTime(value: number) {\n this.setField(ArchiverAgentEntityFields.automaticBackupTimeField, value);\n }\n\n // BackupFolder\n public get backupFolder(): string {\n return this.getField(ArchiverAgentEntityFields.backupFolderField);\n }\n public set backupFolder(value: string) {\n this.setField(ArchiverAgentEntityFields.backupFolderField, value);\n }\n\n // BackupRetentionPeriod\n public get backupRetentionPeriod(): number {\n return this.getField(ArchiverAgentEntityFields.backupRetentionPeriodField);\n }\n public set backupRetentionPeriod(value: number) {\n this.setField(ArchiverAgentEntityFields.backupRetentionPeriodField, value);\n }\n\n // DatabaseFolder\n public get databaseFolder(): string {\n return this.getField(ArchiverAgentEntityFields.databaseFolderField);\n }\n public set databaseFolder(value: string) {\n this.setField(ArchiverAgentEntityFields.databaseFolderField, value);\n }\n\n // DatabaseInstance\n public get databaseInstance(): string {\n return this.getField(ArchiverAgentEntityFields.databaseInstanceField);\n }\n public set databaseInstance(value: string) {\n this.setField(ArchiverAgentEntityFields.databaseInstanceField, value);\n }\n\n // DatabaseName\n public get databaseName(): string {\n return this.getField(ArchiverAgentEntityFields.databaseNameField);\n }\n public set databaseName(value: string) {\n this.setField(ArchiverAgentEntityFields.databaseNameField, value);\n }\n\n // DatabasePassword\n public get databasePassword(): string {\n return this.getField(ArchiverAgentEntityFields.databasePasswordField);\n }\n public set databasePassword(value: string) {\n this.setField(ArchiverAgentEntityFields.databasePasswordField, value);\n }\n\n // DatabaseUser\n public get databaseUser(): string {\n return this.getField(ArchiverAgentEntityFields.databaseUserField);\n }\n public set databaseUser(value: string) {\n this.setField(ArchiverAgentEntityFields.databaseUserField, value);\n }\n\n // DeleteOldBackupFilesOnDiskFull\n public get deleteOldBackupFilesOnDiskFull(): boolean {\n return this.getField(ArchiverAgentEntityFields.deleteOldBackupFilesOnDiskFullField);\n }\n public set deleteOldBackupFilesOnDiskFull(value: boolean) {\n this.setField(ArchiverAgentEntityFields.deleteOldBackupFilesOnDiskFullField, value);\n }\n\n // EnableAutomaticBackup\n public get enableAutomaticBackup(): boolean {\n return this.getField(ArchiverAgentEntityFields.enableAutomaticBackupField);\n }\n public set enableAutomaticBackup(value: boolean) {\n this.setField(ArchiverAgentEntityFields.enableAutomaticBackupField, value);\n }\n\n // EnableBackupCompression\n public get enableBackupCompression(): boolean {\n return this.getField(ArchiverAgentEntityFields.enableBackupCompressionField);\n }\n public set enableBackupCompression(value: boolean) {\n this.setField(ArchiverAgentEntityFields.enableBackupCompressionField, value);\n }\n\n // NotificationsDatabaseUsage\n public get notificationsDatabaseUsage(): boolean {\n return this.getField(ArchiverAgentEntityFields.notificationsDatabaseUsageField);\n }\n public set notificationsDatabaseUsage(value: boolean) {\n this.setField(ArchiverAgentEntityFields.notificationsDatabaseUsageField, value);\n }\n\n // NotificationsDatabaseUsageAsPercentage\n public get notificationsDatabaseUsageAsPercentage(): number {\n return this.getField(ArchiverAgentEntityFields.notificationsDatabaseUsageAsPercentageField);\n }\n public set notificationsDatabaseUsageAsPercentage(value: number) {\n this.setField(ArchiverAgentEntityFields.notificationsDatabaseUsageAsPercentageField, value);\n }\n\n // NotificationsDiskSpace\n public get notificationsDiskSpace(): boolean {\n return this.getField(ArchiverAgentEntityFields.notificationsDiskSpaceField);\n }\n public set notificationsDiskSpace(value: boolean) {\n this.setField(ArchiverAgentEntityFields.notificationsDiskSpaceField, value);\n }\n\n // NotificationsOnlyWhenLimitIsReached\n public get notificationsOnlyWhenLimitIsReached(): boolean {\n return this.getField(ArchiverAgentEntityFields.notificationsOnlyWhenLimitIsReachedField);\n }\n public set notificationsOnlyWhenLimitIsReached(value: boolean) {\n this.setField(ArchiverAgentEntityFields.notificationsOnlyWhenLimitIsReachedField, value);\n }\n\n // NotificationsRemainingGb\n public get notificationsRemainingGb(): number {\n return this.getField(ArchiverAgentEntityFields.notificationsRemainingGbField);\n }\n public set notificationsRemainingGb(value: number) {\n this.setField(ArchiverAgentEntityFields.notificationsRemainingGbField, value);\n }\n\n // RtspPort\n public get rtspPort(): number {\n return this.getField(ArchiverAgentEntityFields.rtspPortField);\n }\n public set rtspPort(value: number) {\n this.setField(ArchiverAgentEntityFields.rtspPortField, value);\n }\n\n // RtspPortUnitControl\n public get rtspPortUnitControl(): number {\n return this.getField(ArchiverAgentEntityFields.rtspPortUnitControlField);\n }\n public set rtspPortUnitControl(value: number) {\n this.setField(ArchiverAgentEntityFields.rtspPortUnitControlField, value);\n }\n\n // TelnetPort\n public get telnetPort(): number {\n return this.getField(ArchiverAgentEntityFields.telnetPortField);\n }\n public set telnetPort(value: number) {\n this.setField(ArchiverAgentEntityFields.telnetPortField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getArchiverStatsAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'ArchiverStats', false, ValidFlags.None, transaction);\n }\n\n public async createDatabaseAsync(value: IDatabaseCreateInfo, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('CreateDatabase', 'POST', value, transaction, responseHandler);\n }\n\n public async createDatabaseBackupAsync(folder: string, enableCompression: boolean, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('folder', folder);\n inParam.setField('enableCompression', enableCompression);\n\n return this.executeRequestTransactionAsync('CreateDatabaseBackup', 'POST', inParam, transaction, responseHandler);\n }\n\n public async deleteDatabaseAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('DeleteDatabase', 'POST', null, transaction, responseHandler);\n }\n\n public async getDriveGroupsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('DriveGroups', 'GET', null, transaction, responseHandler);\n }\n\n public async restoreDatabaseBackupAsync(file: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('file', file);\n\n return this.executeRequestTransactionAsync('RestoreDatabaseBackup', 'POST', inParam, transaction, responseHandler);\n }\n\n public async setDatabaseAsync(value: IDatabaseInfo, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('SetDatabase', 'POST', value, transaction, responseHandler);\n }\n\n public async upgradeDatabaseAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('UpgradeDatabase', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArchiverRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\nimport { IEncryptionCertificate, IRecordingMode } from './ICameraEntity';\n\n// #region Fields\n\nexport class ArchiverRoleEntityFields extends RoleEntityFields {\n public static archiveBackupMaxBandwidthField = 'ArchiveBackupMaxBandwidth';\n public static archiveFileSizeEnabledField = 'ArchiveFileSizeEnabled';\n public static archivingLoadThresholdField = 'ArchivingLoadThreshold';\n public static audioRecordingField = 'AudioRecording';\n public static autodiscoverAreaField = 'AutodiscoverArea';\n public static backupRetentionPeriodField = 'BackupRetentionPeriod';\n public static defaultManualRecordingTimeField = 'DefaultManualRecordingTime';\n public static deleteOldFilesOnDiskFullField = 'DeleteOldFilesOnDiskFull';\n public static enableArchiveConsolidationField = 'EnableArchiveConsolidation';\n public static enableAutomaticCleanupField = 'EnableAutomaticCleanup';\n public static enableCloudArchivesField = 'EnableCloudArchives';\n public static enableEdgePlaybackRequestsField = 'EnableEdgePlaybackRequests';\n public static enableThumbnailsRequestsField = 'EnableThumbnailsRequests';\n public static encryptionEnabledField = 'EncryptionEnabled';\n public static encryptionTypeField = 'EncryptionType';\n public static isVideoWatermarkingField = 'IsVideoWatermarking';\n public static maximumSimultaneousDownloadField = 'MaximumSimultaneousDownload';\n public static maximumVideoLenghtField = 'MaximumVideoLenght';\n public static maximumVideoSizeField = 'MaximumVideoSize';\n public static metadataRecordingField = 'MetadataRecording';\n public static postEventRecordingTimeField = 'PostEventRecordingTime';\n public static preEventRecordingTimeField = 'PreEventRecordingTime';\n public static primaryArchiverIdField = 'PrimaryArchiverId';\n public static protectedVideoThresholdField = 'ProtectedVideoThreshold';\n public static redundantArchivingField = 'RedundantArchiving';\n public static telnetEnabledField = 'TelnetEnabled';\n public static telnetPasswordField = 'TelnetPassword';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IVideoQualityPreset extends IFieldObject {\n frameRate: number;\n resolution: string;\n}\n\nexport interface INTPSetting extends IFieldObject {\n pollTimeout: number | null;\n port: number | null;\n server: string;\n}\n\nexport interface IExtension extends IFieldObject {\n id: IGuid;\n extensionType: IGuid;\n refuseBasicAuthentication: boolean;\n\n getAdvancedSettingsAsync(transaction?: ITransaction | null): Promise | null>;\n}\n\nexport interface IAdvanceSetting extends IFieldObject {\n name: string;\n value: string;\n}\n\n// #endregion Inner classes\n\nexport interface IArchiverRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n archiveBackupMaxBandwidth: number;\n\n archiveFileSizeEnabled: boolean;\n\n archivingLoadThreshold: number;\n\n audioRecording: boolean;\n\n autodiscoverArea: IGuid;\n\n backupRetentionPeriod: number;\n\n defaultManualRecordingTime: number;\n\n deleteOldFilesOnDiskFull: boolean;\n\n enableArchiveConsolidation: boolean;\n\n enableAutomaticCleanup: boolean;\n\n enableCloudArchives: boolean;\n\n enableEdgePlaybackRequests: boolean;\n\n enableThumbnailsRequests: boolean;\n\n encryptionEnabled: boolean;\n\n encryptionType: string;\n\n isVideoWatermarking: boolean;\n\n maximumSimultaneousDownload: number;\n\n maximumVideoLenght: number;\n\n maximumVideoSize: number;\n\n metadataRecording: boolean;\n\n postEventRecordingTime: number;\n\n preEventRecordingTime: number;\n\n readonly primaryArchiverId: string;\n\n protectedVideoThreshold: number;\n\n redundantArchiving: boolean;\n\n telnetEnabled: boolean;\n\n telnetPassword: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getAdvancedSettingsAsync(transaction?: ITransaction | null): Promise | null>;\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getEncryptionCertificatesAsync(transaction?: ITransaction | null): Promise | null>;\n getExtensionsAsync(transaction?: ITransaction | null): Promise | null>;\n getNTPSettingsAsync(transaction?: ITransaction | null): Promise;\n getRecordingModesAsync(transaction?: ITransaction | null): Promise | null>;\n getVideoQualityPresetsAsync(transaction?: ITransaction | null): Promise;\n getVideoUnitsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiArchiverRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { RoleEntity } from '../Roles/RoleEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IArchiverRoleEntity, IVideoQualityPreset, INTPSetting, IExtension, IAdvanceSetting, ArchiverRoleEntityFields } from '../../Interface/IArchiverRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { IEncryptionCertificate, IRecordingMode } from '../../Interface/ICameraEntity';\nimport { EncryptionCertificate, RecordingMode } from './CameraEntity';\nimport { FieldObjectWithRelations } from '../../../Helpers/FieldObjectWithRelations';\n\n// #region Inner classes\n\nexport class VideoQualityPreset extends FieldObject implements IVideoQualityPreset {\n // FrameRate\n public get frameRate(): number {\n return this.getField('FrameRate');\n }\n public set frameRate(value: number) {\n this.setField('FrameRate', value);\n }\n // Resolution\n public get resolution(): string {\n return this.getField('Resolution');\n }\n public set resolution(value: string) {\n this.setField('Resolution', value);\n }\n\n public initializeAllFields(): void {\n this.setField('FrameRate', 0);\n this.setField('Resolution', '');\n }\n}\n\nexport class NTPSetting extends FieldObject implements INTPSetting {\n // PollTimeout\n public get pollTimeout(): number | null {\n return this.getNullableField('PollTimeout');\n }\n public set pollTimeout(value: number | null) {\n this.setNullableField('PollTimeout', value);\n }\n // Port\n public get port(): number | null {\n return this.getNullableField('Port');\n }\n public set port(value: number | null) {\n this.setNullableField('Port', value);\n }\n // Server\n public get server(): string {\n return this.getField('Server');\n }\n public set server(value: string) {\n this.setField('Server', value);\n }\n\n public initializeAllFields(): void {\n this.setField('PollTimeout', 0);\n this.setField('Port', 0);\n this.setField('Server', '');\n }\n}\n\nexport class Extension extends FieldObjectWithRelations implements IExtension {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // ExtensionType\n public get extensionType(): IGuid {\n return this.getFieldGuid('ExtensionType');\n }\n public set extensionType(value: IGuid) {\n this.setFieldGuid('ExtensionType', value);\n }\n // RefuseBasicAuthentication\n public get refuseBasicAuthentication(): boolean {\n return this.getField('RefuseBasicAuthentication');\n }\n public set refuseBasicAuthentication(value: boolean) {\n this.setField('RefuseBasicAuthentication', value);\n }\n\n public async getAdvancedSettingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AdvanceSetting, 'Extensions/' + this.id + '/AdvancedSettings', 'Name', false, true, null, transaction);\n }\n\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setFieldGuid('ExtensionType', SafeGuid.EMPTY);\n this.setField('RefuseBasicAuthentication', false);\n }\n}\n\nexport class AdvanceSetting extends FieldObject implements IAdvanceSetting {\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Name', '');\n this.setField('Value', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class ArchiverRoleEntity extends RoleEntity implements IArchiverRoleEntity {\n // #region REST Properties\n\n // ArchiveBackupMaxBandwidth\n public get archiveBackupMaxBandwidth(): number {\n return this.getField(ArchiverRoleEntityFields.archiveBackupMaxBandwidthField);\n }\n public set archiveBackupMaxBandwidth(value: number) {\n this.setField(ArchiverRoleEntityFields.archiveBackupMaxBandwidthField, value);\n }\n\n // ArchiveFileSizeEnabled\n public get archiveFileSizeEnabled(): boolean {\n return this.getField(ArchiverRoleEntityFields.archiveFileSizeEnabledField);\n }\n public set archiveFileSizeEnabled(value: boolean) {\n this.setField(ArchiverRoleEntityFields.archiveFileSizeEnabledField, value);\n }\n\n // ArchivingLoadThreshold\n public get archivingLoadThreshold(): number {\n return this.getField(ArchiverRoleEntityFields.archivingLoadThresholdField);\n }\n public set archivingLoadThreshold(value: number) {\n this.setField(ArchiverRoleEntityFields.archivingLoadThresholdField, value);\n }\n\n // AudioRecording\n public get audioRecording(): boolean {\n return this.getField(ArchiverRoleEntityFields.audioRecordingField);\n }\n public set audioRecording(value: boolean) {\n this.setField(ArchiverRoleEntityFields.audioRecordingField, value);\n }\n\n // AutodiscoverArea\n public get autodiscoverArea(): IGuid {\n return this.getFieldGuid(ArchiverRoleEntityFields.autodiscoverAreaField);\n }\n public set autodiscoverArea(value: IGuid) {\n this.setFieldGuid(ArchiverRoleEntityFields.autodiscoverAreaField, value);\n }\n\n // BackupRetentionPeriod\n public get backupRetentionPeriod(): number {\n return this.getField(ArchiverRoleEntityFields.backupRetentionPeriodField);\n }\n public set backupRetentionPeriod(value: number) {\n this.setField(ArchiverRoleEntityFields.backupRetentionPeriodField, value);\n }\n\n // DefaultManualRecordingTime\n public get defaultManualRecordingTime(): number {\n return this.getField(ArchiverRoleEntityFields.defaultManualRecordingTimeField);\n }\n public set defaultManualRecordingTime(value: number) {\n this.setField(ArchiverRoleEntityFields.defaultManualRecordingTimeField, value);\n }\n\n // DeleteOldFilesOnDiskFull\n public get deleteOldFilesOnDiskFull(): boolean {\n return this.getField(ArchiverRoleEntityFields.deleteOldFilesOnDiskFullField);\n }\n public set deleteOldFilesOnDiskFull(value: boolean) {\n this.setField(ArchiverRoleEntityFields.deleteOldFilesOnDiskFullField, value);\n }\n\n // EnableArchiveConsolidation\n public get enableArchiveConsolidation(): boolean {\n return this.getField(ArchiverRoleEntityFields.enableArchiveConsolidationField);\n }\n public set enableArchiveConsolidation(value: boolean) {\n this.setField(ArchiverRoleEntityFields.enableArchiveConsolidationField, value);\n }\n\n // EnableAutomaticCleanup\n public get enableAutomaticCleanup(): boolean {\n return this.getField(ArchiverRoleEntityFields.enableAutomaticCleanupField);\n }\n public set enableAutomaticCleanup(value: boolean) {\n this.setField(ArchiverRoleEntityFields.enableAutomaticCleanupField, value);\n }\n\n // EnableCloudArchives\n public get enableCloudArchives(): boolean {\n return this.getField(ArchiverRoleEntityFields.enableCloudArchivesField);\n }\n public set enableCloudArchives(value: boolean) {\n this.setField(ArchiverRoleEntityFields.enableCloudArchivesField, value);\n }\n\n // EnableEdgePlaybackRequests\n public get enableEdgePlaybackRequests(): boolean {\n return this.getField(ArchiverRoleEntityFields.enableEdgePlaybackRequestsField);\n }\n public set enableEdgePlaybackRequests(value: boolean) {\n this.setField(ArchiverRoleEntityFields.enableEdgePlaybackRequestsField, value);\n }\n\n // EnableThumbnailsRequests\n public get enableThumbnailsRequests(): boolean {\n return this.getField(ArchiverRoleEntityFields.enableThumbnailsRequestsField);\n }\n public set enableThumbnailsRequests(value: boolean) {\n this.setField(ArchiverRoleEntityFields.enableThumbnailsRequestsField, value);\n }\n\n // EncryptionEnabled\n public get encryptionEnabled(): boolean {\n return this.getField(ArchiverRoleEntityFields.encryptionEnabledField);\n }\n public set encryptionEnabled(value: boolean) {\n this.setField(ArchiverRoleEntityFields.encryptionEnabledField, value);\n }\n\n // EncryptionType\n public get encryptionType(): string {\n return this.getField(ArchiverRoleEntityFields.encryptionTypeField);\n }\n public set encryptionType(value: string) {\n this.setField(ArchiverRoleEntityFields.encryptionTypeField, value);\n }\n\n // IsVideoWatermarking\n public get isVideoWatermarking(): boolean {\n return this.getField(ArchiverRoleEntityFields.isVideoWatermarkingField);\n }\n public set isVideoWatermarking(value: boolean) {\n this.setField(ArchiverRoleEntityFields.isVideoWatermarkingField, value);\n }\n\n // MaximumSimultaneousDownload\n public get maximumSimultaneousDownload(): number {\n return this.getField(ArchiverRoleEntityFields.maximumSimultaneousDownloadField);\n }\n public set maximumSimultaneousDownload(value: number) {\n this.setField(ArchiverRoleEntityFields.maximumSimultaneousDownloadField, value);\n }\n\n // MaximumVideoLenght\n public get maximumVideoLenght(): number {\n return this.getField(ArchiverRoleEntityFields.maximumVideoLenghtField);\n }\n public set maximumVideoLenght(value: number) {\n this.setField(ArchiverRoleEntityFields.maximumVideoLenghtField, value);\n }\n\n // MaximumVideoSize\n public get maximumVideoSize(): number {\n return this.getField(ArchiverRoleEntityFields.maximumVideoSizeField);\n }\n public set maximumVideoSize(value: number) {\n this.setField(ArchiverRoleEntityFields.maximumVideoSizeField, value);\n }\n\n // MetadataRecording\n public get metadataRecording(): boolean {\n return this.getField(ArchiverRoleEntityFields.metadataRecordingField);\n }\n public set metadataRecording(value: boolean) {\n this.setField(ArchiverRoleEntityFields.metadataRecordingField, value);\n }\n\n // PostEventRecordingTime\n public get postEventRecordingTime(): number {\n return this.getField(ArchiverRoleEntityFields.postEventRecordingTimeField);\n }\n public set postEventRecordingTime(value: number) {\n this.setField(ArchiverRoleEntityFields.postEventRecordingTimeField, value);\n }\n\n // PreEventRecordingTime\n public get preEventRecordingTime(): number {\n return this.getField(ArchiverRoleEntityFields.preEventRecordingTimeField);\n }\n public set preEventRecordingTime(value: number) {\n this.setField(ArchiverRoleEntityFields.preEventRecordingTimeField, value);\n }\n\n // PrimaryArchiverId\n public get primaryArchiverId(): string {\n return this.getField(ArchiverRoleEntityFields.primaryArchiverIdField);\n }\n\n // ProtectedVideoThreshold\n public get protectedVideoThreshold(): number {\n return this.getField(ArchiverRoleEntityFields.protectedVideoThresholdField);\n }\n public set protectedVideoThreshold(value: number) {\n this.setField(ArchiverRoleEntityFields.protectedVideoThresholdField, value);\n }\n\n // RedundantArchiving\n public get redundantArchiving(): boolean {\n return this.getField(ArchiverRoleEntityFields.redundantArchivingField);\n }\n public set redundantArchiving(value: boolean) {\n this.setField(ArchiverRoleEntityFields.redundantArchivingField, value);\n }\n\n // TelnetEnabled\n public get telnetEnabled(): boolean {\n return this.getField(ArchiverRoleEntityFields.telnetEnabledField);\n }\n public set telnetEnabled(value: boolean) {\n this.setField(ArchiverRoleEntityFields.telnetEnabledField, value);\n }\n\n // TelnetPassword\n public get telnetPassword(): string {\n return this.getField(ArchiverRoleEntityFields.telnetPasswordField);\n }\n public set telnetPassword(value: string) {\n this.setField(ArchiverRoleEntityFields.telnetPasswordField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getAdvancedSettingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AdvanceSetting, 'AdvancedSettings', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async getAgentsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Agents', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n public async getEncryptionCertificatesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(EncryptionCertificate, 'EncryptionCertificates', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n public async getExtensionsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Extension, 'Extensions', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async getNTPSettingsAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(NTPSetting, 'NTPSettings', true, ValidFlags.None, transaction);\n }\n\n public async getRecordingModesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(RecordingMode, 'RecordingModes', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async getVideoQualityPresetsAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(VideoQualityPreset, 'VideoQualityPresets', true, ValidFlags.None, transaction);\n }\n\n public async getVideoUnitsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('VideoUnits', 'Id', true, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAuxiliaryArchiverRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:03 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IEntity } from './IEntity';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\nimport { IQueryFilter } from './IQueryFilter';\n\n// #region Fields\n\nexport class AuxiliaryArchiverRoleEntityFields extends RoleEntityFields {\n public static archiveBackupMaxBandwidthField = 'ArchiveBackupMaxBandwidth';\n public static archiveFileSizeEnabledField = 'ArchiveFileSizeEnabled';\n public static backupRetentionPeriodField = 'BackupRetentionPeriod';\n public static defaultManualRecordingTimeField = 'DefaultManualRecordingTime';\n public static deleteOldFilesOnDiskFullField = 'DeleteOldFilesOnDiskFull';\n public static diskLoadWarningLimitField = 'DiskLoadWarningLimit';\n public static enableAudioRecordingField = 'EnableAudioRecording';\n public static enableAutomaticCleanupField = 'EnableAutomaticCleanup';\n public static enableMetadataRecordingField = 'EnableMetadataRecording';\n public static enableThumbnailsRequestsField = 'EnableThumbnailsRequests';\n public static isVideoWatermarkingField = 'IsVideoWatermarking';\n public static maximumVideoLengthField = 'MaximumVideoLength';\n public static maximumVideoSizeField = 'MaximumVideoSize';\n public static postEventRecordingTimeField = 'PostEventRecordingTime';\n public static preEventRecordingTimeField = 'PreEventRecordingTime';\n public static protectedVideoThresholdField = 'ProtectedVideoThreshold';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IAuxRecordingMode extends IFieldObject {\n id: number;\n mode: string | null;\n scheduleId: IGuid | null;\n}\n\n// #endregion Inner classes\n\nexport interface IAuxiliaryArchiverRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n archiveBackupMaxBandwidth: number;\n\n archiveFileSizeEnabled: boolean;\n\n backupRetentionPeriod: number;\n\n defaultManualRecordingTime: number;\n\n deleteOldFilesOnDiskFull: boolean;\n\n diskLoadWarningLimit: number;\n\n enableAudioRecording: boolean;\n\n enableAutomaticCleanup: boolean;\n\n enableMetadataRecording: boolean;\n\n enableThumbnailsRequests: boolean;\n\n isVideoWatermarking: boolean;\n\n maximumVideoLength: number;\n\n maximumVideoSize: number;\n\n postEventRecordingTime: number;\n\n preEventRecordingTime: number;\n\n protectedVideoThreshold: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getArchiverStatsAsync(transaction?: ITransaction | null): Promise;\n getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n getRecordingModesAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAuxiliaryArchiverRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { RoleEntity } from '../Roles/RoleEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IAuxiliaryArchiverRoleEntity, IAuxRecordingMode, AuxiliaryArchiverRoleEntityFields } from '../../Interface/IAuxiliaryArchiverRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFieldObject } from '../../Interface/IFieldObject';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\n\n// #region Inner classes\n\nexport class AuxRecordingMode extends FieldObject implements IAuxRecordingMode {\n // Id\n public get id(): number {\n return this.getField('Id');\n }\n public set id(value: number) {\n this.setField('Id', value);\n }\n // Mode\n public get mode(): string | null {\n return this.getNullableField('Mode');\n }\n public set mode(value: string | null) {\n this.setNullableField('Mode', value);\n }\n // ScheduleId\n public get scheduleId(): IGuid | null {\n return this.getNullableFieldGuid('ScheduleId');\n }\n public set scheduleId(value: IGuid | null) {\n this.setNullableFieldGuid('ScheduleId', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Id', 0);\n this.setField('Mode', '');\n this.setFieldGuid('ScheduleId', SafeGuid.EMPTY);\n }\n}\n\n// #endregion Inner classes\n\nexport class AuxiliaryArchiverRoleEntity extends RoleEntity implements IAuxiliaryArchiverRoleEntity {\n // #region REST Properties\n\n // ArchiveBackupMaxBandwidth\n public get archiveBackupMaxBandwidth(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.archiveBackupMaxBandwidthField);\n }\n public set archiveBackupMaxBandwidth(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.archiveBackupMaxBandwidthField, value);\n }\n\n // ArchiveFileSizeEnabled\n public get archiveFileSizeEnabled(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.archiveFileSizeEnabledField);\n }\n public set archiveFileSizeEnabled(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.archiveFileSizeEnabledField, value);\n }\n\n // BackupRetentionPeriod\n public get backupRetentionPeriod(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.backupRetentionPeriodField);\n }\n public set backupRetentionPeriod(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.backupRetentionPeriodField, value);\n }\n\n // DefaultManualRecordingTime\n public get defaultManualRecordingTime(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.defaultManualRecordingTimeField);\n }\n public set defaultManualRecordingTime(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.defaultManualRecordingTimeField, value);\n }\n\n // DeleteOldFilesOnDiskFull\n public get deleteOldFilesOnDiskFull(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.deleteOldFilesOnDiskFullField);\n }\n public set deleteOldFilesOnDiskFull(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.deleteOldFilesOnDiskFullField, value);\n }\n\n // DiskLoadWarningLimit\n public get diskLoadWarningLimit(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.diskLoadWarningLimitField);\n }\n public set diskLoadWarningLimit(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.diskLoadWarningLimitField, value);\n }\n\n // EnableAudioRecording\n public get enableAudioRecording(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.enableAudioRecordingField);\n }\n public set enableAudioRecording(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.enableAudioRecordingField, value);\n }\n\n // EnableAutomaticCleanup\n public get enableAutomaticCleanup(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.enableAutomaticCleanupField);\n }\n public set enableAutomaticCleanup(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.enableAutomaticCleanupField, value);\n }\n\n // EnableMetadataRecording\n public get enableMetadataRecording(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.enableMetadataRecordingField);\n }\n public set enableMetadataRecording(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.enableMetadataRecordingField, value);\n }\n\n // EnableThumbnailsRequests\n public get enableThumbnailsRequests(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.enableThumbnailsRequestsField);\n }\n public set enableThumbnailsRequests(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.enableThumbnailsRequestsField, value);\n }\n\n // IsVideoWatermarking\n public get isVideoWatermarking(): boolean {\n return this.getField(AuxiliaryArchiverRoleEntityFields.isVideoWatermarkingField);\n }\n public set isVideoWatermarking(value: boolean) {\n this.setField(AuxiliaryArchiverRoleEntityFields.isVideoWatermarkingField, value);\n }\n\n // MaximumVideoLength\n public get maximumVideoLength(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.maximumVideoLengthField);\n }\n public set maximumVideoLength(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.maximumVideoLengthField, value);\n }\n\n // MaximumVideoSize\n public get maximumVideoSize(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.maximumVideoSizeField);\n }\n public set maximumVideoSize(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.maximumVideoSizeField, value);\n }\n\n // PostEventRecordingTime\n public get postEventRecordingTime(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.postEventRecordingTimeField);\n }\n public set postEventRecordingTime(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.postEventRecordingTimeField, value);\n }\n\n // PreEventRecordingTime\n public get preEventRecordingTime(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.preEventRecordingTimeField);\n }\n public set preEventRecordingTime(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.preEventRecordingTimeField, value);\n }\n\n // ProtectedVideoThreshold\n public get protectedVideoThreshold(): number {\n return this.getField(AuxiliaryArchiverRoleEntityFields.protectedVideoThresholdField);\n }\n public set protectedVideoThreshold(value: number) {\n this.setField(AuxiliaryArchiverRoleEntityFields.protectedVideoThresholdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getArchiverStatsAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FieldObject, 'ArchiverStats', false, ValidFlags.None, transaction);\n }\n\n public async getCamerasAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Cameras', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n public async getRecordingModesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(AuxRecordingMode, 'RecordingModes', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMediaRouterRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class MediaRouterRoleEntityFields extends RoleEntityFields {\n public static rtspPortField = 'RtspPort';\n public static startMulticastAddressField = 'StartMulticastAddress';\n public static startMulticastPortField = 'StartMulticastPort';\n public static useSecureCommunicationField = 'UseSecureCommunication';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IStrategy extends IFieldObject {\n networkCardMac: string;\n exportTricklingEnabled: boolean | null;\n liveEnabled: boolean | null;\n playbackEnabled: boolean | null;\n priority: number | null;\n networkCardRtpPort: number | null;\n networkCardRtspPort: number | null;\n publicAddresses: string;\n networkCardIPAddress: string;\n}\n\nexport interface IUdpPortRange extends IFieldObject {\n lowerBound: number;\n upperBound: number;\n}\n\nexport interface IRedirector extends IFieldObject {\n serverId: IGuid;\n udpPortRange: IUdpPortRange;\n rtpPort: number | null;\n rtspPort: number | null;\n maximumLiveStreams: number | null;\n maximumPlaybackStreams: number | null;\n liveBandwidthHardLimit: number | null;\n liveBandwidthSoftLimit: number | null;\n playbackBandwidthHardLimit: number | null;\n playbackBandwidthSoftLimit: number | null;\n strategy: ObservableCollection;\n isAdvanceRedirectionStrategy: boolean | null;\n}\n\n// #endregion Inner classes\n\nexport interface IMediaRouterRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n rtspPort: number;\n\n startMulticastAddress: string;\n\n startMulticastPort: number;\n\n useSecureCommunication: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getRedirectorsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMediaRouterRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { RoleEntity } from '../Roles/RoleEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IMediaRouterRoleEntity, IStrategy, IUdpPortRange, IRedirector, MediaRouterRoleEntityFields } from '../../Interface/IMediaRouterRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class Strategy extends FieldObject implements IStrategy {\n // NetworkCardMac\n public get networkCardMac(): string {\n return this.getField('NetworkCardMac');\n }\n public set networkCardMac(value: string) {\n this.setField('NetworkCardMac', value);\n }\n // ExportTricklingEnabled\n public get exportTricklingEnabled(): boolean | null {\n return this.getNullableField('ExportTricklingEnabled');\n }\n public set exportTricklingEnabled(value: boolean | null) {\n this.setNullableField('ExportTricklingEnabled', value);\n }\n // LiveEnabled\n public get liveEnabled(): boolean | null {\n return this.getNullableField('LiveEnabled');\n }\n public set liveEnabled(value: boolean | null) {\n this.setNullableField('LiveEnabled', value);\n }\n // PlaybackEnabled\n public get playbackEnabled(): boolean | null {\n return this.getNullableField('PlaybackEnabled');\n }\n public set playbackEnabled(value: boolean | null) {\n this.setNullableField('PlaybackEnabled', value);\n }\n // Priority\n public get priority(): number | null {\n return this.getNullableField('Priority');\n }\n public set priority(value: number | null) {\n this.setNullableField('Priority', value);\n }\n // NetworkCardRtpPort\n public get networkCardRtpPort(): number | null {\n return this.getNullableField('NetworkCardRtpPort');\n }\n public set networkCardRtpPort(value: number | null) {\n this.setNullableField('NetworkCardRtpPort', value);\n }\n // NetworkCardRtspPort\n public get networkCardRtspPort(): number | null {\n return this.getNullableField('NetworkCardRtspPort');\n }\n public set networkCardRtspPort(value: number | null) {\n this.setNullableField('NetworkCardRtspPort', value);\n }\n // PublicAddresses\n public get publicAddresses(): string {\n return this.getField('PublicAddresses');\n }\n public set publicAddresses(value: string) {\n this.setField('PublicAddresses', value);\n }\n // NetworkCardIPAddress\n public get networkCardIPAddress(): string {\n return this.getField('NetworkCardIPAddress');\n }\n public set networkCardIPAddress(value: string) {\n this.setField('NetworkCardIPAddress', value);\n }\n\n public initializeAllFields(): void {\n this.setField('NetworkCardMac', '');\n this.setField('ExportTricklingEnabled', false);\n this.setField('LiveEnabled', false);\n this.setField('PlaybackEnabled', false);\n this.setField('Priority', 0);\n this.setField('NetworkCardRtpPort', 0);\n this.setField('NetworkCardRtspPort', 0);\n this.setField('PublicAddresses', '');\n this.setField('NetworkCardIPAddress', '');\n }\n}\n\nexport class UdpPortRange extends FieldObject implements IUdpPortRange {\n // LowerBound\n public get lowerBound(): number {\n return this.getField('LowerBound');\n }\n public set lowerBound(value: number) {\n this.setField('LowerBound', value);\n }\n // UpperBound\n public get upperBound(): number {\n return this.getField('UpperBound');\n }\n public set upperBound(value: number) {\n this.setField('UpperBound', value);\n }\n\n public initializeAllFields(): void {\n this.setField('LowerBound', 0);\n this.setField('UpperBound', 0);\n }\n}\n\nexport class Redirector extends FieldObject implements IRedirector {\n // ServerId\n public get serverId(): IGuid {\n return this.getFieldGuid('ServerId');\n }\n public set serverId(value: IGuid) {\n this.setFieldGuid('ServerId', value);\n }\n // UdpPortRange\n public get udpPortRange(): IUdpPortRange {\n return this.getFieldObject(UdpPortRange, 'UdpPortRange');\n }\n public set udpPortRange(value: IUdpPortRange) {\n this.setFieldObject('UdpPortRange', value);\n }\n // RtpPort\n public get rtpPort(): number | null {\n return this.getNullableField('RtpPort');\n }\n public set rtpPort(value: number | null) {\n this.setNullableField('RtpPort', value);\n }\n // RtspPort\n public get rtspPort(): number | null {\n return this.getNullableField('RtspPort');\n }\n public set rtspPort(value: number | null) {\n this.setNullableField('RtspPort', value);\n }\n // MaximumLiveStreams\n public get maximumLiveStreams(): number | null {\n return this.getNullableField('MaximumLiveStreams');\n }\n public set maximumLiveStreams(value: number | null) {\n this.setNullableField('MaximumLiveStreams', value);\n }\n // MaximumPlaybackStreams\n public get maximumPlaybackStreams(): number | null {\n return this.getNullableField('MaximumPlaybackStreams');\n }\n public set maximumPlaybackStreams(value: number | null) {\n this.setNullableField('MaximumPlaybackStreams', value);\n }\n // LiveBandwidthHardLimit\n public get liveBandwidthHardLimit(): number | null {\n return this.getNullableField('LiveBandwidthHardLimit');\n }\n public set liveBandwidthHardLimit(value: number | null) {\n this.setNullableField('LiveBandwidthHardLimit', value);\n }\n // LiveBandwidthSoftLimit\n public get liveBandwidthSoftLimit(): number | null {\n return this.getNullableField('LiveBandwidthSoftLimit');\n }\n public set liveBandwidthSoftLimit(value: number | null) {\n this.setNullableField('LiveBandwidthSoftLimit', value);\n }\n // PlaybackBandwidthHardLimit\n public get playbackBandwidthHardLimit(): number | null {\n return this.getNullableField('PlaybackBandwidthHardLimit');\n }\n public set playbackBandwidthHardLimit(value: number | null) {\n this.setNullableField('PlaybackBandwidthHardLimit', value);\n }\n // PlaybackBandwidthSoftLimit\n public get playbackBandwidthSoftLimit(): number | null {\n return this.getNullableField('PlaybackBandwidthSoftLimit');\n }\n public set playbackBandwidthSoftLimit(value: number | null) {\n this.setNullableField('PlaybackBandwidthSoftLimit', value);\n }\n // Strategy\n public get strategy(): ObservableCollection {\n return this.getFieldObjectArray(Strategy, 'Strategy');\n }\n public set strategy(value: ObservableCollection) {\n this.setFieldObjectArray('Strategy', value);\n }\n // IsAdvanceRedirectionStrategy\n public get isAdvanceRedirectionStrategy(): boolean | null {\n return this.getNullableField('IsAdvanceRedirectionStrategy');\n }\n public set isAdvanceRedirectionStrategy(value: boolean | null) {\n this.setNullableField('IsAdvanceRedirectionStrategy', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('ServerId', SafeGuid.EMPTY);\n const objUdpPortRange = new UdpPortRange();\n objUdpPortRange.initializeAllFields();\n this.setFieldObject('UdpPortRange', objUdpPortRange);\n this.setField('RtpPort', 0);\n this.setField('RtspPort', 0);\n this.setField('MaximumLiveStreams', 0);\n this.setField('MaximumPlaybackStreams', 0);\n this.setField('LiveBandwidthHardLimit', 0);\n this.setField('LiveBandwidthSoftLimit', 0);\n this.setField('PlaybackBandwidthHardLimit', 0);\n this.setField('PlaybackBandwidthSoftLimit', 0);\n this.setFieldArray('Strategy', new ObservableCollection());\n this.setField('IsAdvanceRedirectionStrategy', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class MediaRouterRoleEntity extends RoleEntity implements IMediaRouterRoleEntity {\n // #region REST Properties\n\n // RtspPort\n public get rtspPort(): number {\n return this.getField(MediaRouterRoleEntityFields.rtspPortField);\n }\n public set rtspPort(value: number) {\n this.setField(MediaRouterRoleEntityFields.rtspPortField, value);\n }\n\n // StartMulticastAddress\n public get startMulticastAddress(): string {\n return this.getField(MediaRouterRoleEntityFields.startMulticastAddressField);\n }\n public set startMulticastAddress(value: string) {\n this.setField(MediaRouterRoleEntityFields.startMulticastAddressField, value);\n }\n\n // StartMulticastPort\n public get startMulticastPort(): number {\n return this.getField(MediaRouterRoleEntityFields.startMulticastPortField);\n }\n public set startMulticastPort(value: number) {\n this.setField(MediaRouterRoleEntityFields.startMulticastPortField, value);\n }\n\n // UseSecureCommunication\n public get useSecureCommunication(): boolean {\n return this.getField(MediaRouterRoleEntityFields.useSecureCommunicationField);\n }\n public set useSecureCommunication(value: boolean) {\n this.setField(MediaRouterRoleEntityFields.useSecureCommunicationField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getRedirectorsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Redirector, 'Redirectors', 'ServerId', false, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiActiveDirectoryRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:02 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ActiveDirectoryRoleEntityFields extends RoleEntityFields {\n public static connectionStatusField = 'ConnectionStatus';\n public static dCField = 'DC';\n public static defaultBadgeTemplateField = 'DefaultBadgeTemplate';\n public static defaultCardFormatField = 'DefaultCardFormat';\n public static domainField = 'Domain';\n public static externalAddressField = 'ExternalAddress';\n public static maxPictureSizeField = 'MaxPictureSize';\n public static maxPictureSizeLimitField = 'MaxPictureSizeLimit';\n public static netBiosNameField = 'NetBiosName';\n public static partitionGuidField = 'PartitionGuid';\n public static passwordField = 'Password';\n public static statusField = 'Status';\n public static uploadPicturesToActiveDirectoryField = 'UploadPicturesToActiveDirectory';\n public static useApplicationCredentialsField = 'UseApplicationCredentials';\n public static useDCField = 'UseDC';\n public static useGlobalCatalogField = 'UseGlobalCatalog';\n public static usernameField = 'Username';\n public static useSSLConnectionField = 'UseSSLConnection';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IImportedGroup extends IFieldObject {\n groupAccountGuid: IGuid;\n groupAccountName: string;\n synchronizeCardholders: boolean | null;\n synchronizeCredentials: boolean | null;\n synchronizeUserGroup: boolean | null;\n synchronizeUsers: boolean | null;\n}\n\n// #endregion Inner classes\n\nexport interface IActiveDirectoryRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n readonly connectionStatus: string;\n\n dC: string;\n\n defaultBadgeTemplate: IGuid;\n\n defaultCardFormat: IGuid;\n\n domain: string;\n\n externalAddress: string;\n\n maxPictureSize: number;\n\n maxPictureSizeLimit: number;\n\n netBiosName: string;\n\n partitionGuid: IGuid;\n\n password: string;\n\n readonly status: string;\n\n uploadPicturesToActiveDirectory: boolean;\n\n useApplicationCredentials: boolean;\n\n useDC: boolean;\n\n useGlobalCatalog: boolean;\n\n username: string;\n\n useSSLConnection: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getImportedGroupsAsync(transaction?: ITransaction | null): Promise | null>;\n triggerSynchronizationAsync(transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiActiveDirectoryRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:03 AM\nimport { RoleEntity } from './RoleEntity';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IActiveDirectoryRoleEntity, IImportedGroup, ActiveDirectoryRoleEntityFields } from '../../Interface/IActiveDirectoryRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class ImportedGroup extends FieldObject implements IImportedGroup {\n // GroupAccountGuid\n public get groupAccountGuid(): IGuid {\n return this.getFieldGuid('GroupAccountGuid');\n }\n public set groupAccountGuid(value: IGuid) {\n this.setFieldGuid('GroupAccountGuid', value);\n }\n // GroupAccountName\n public get groupAccountName(): string {\n return this.getField('GroupAccountName');\n }\n public set groupAccountName(value: string) {\n this.setField('GroupAccountName', value);\n }\n // SynchronizeCardholders\n public get synchronizeCardholders(): boolean | null {\n return this.getNullableField('SynchronizeCardholders');\n }\n public set synchronizeCardholders(value: boolean | null) {\n this.setNullableField('SynchronizeCardholders', value);\n }\n // SynchronizeCredentials\n public get synchronizeCredentials(): boolean | null {\n return this.getNullableField('SynchronizeCredentials');\n }\n public set synchronizeCredentials(value: boolean | null) {\n this.setNullableField('SynchronizeCredentials', value);\n }\n // SynchronizeUserGroup\n public get synchronizeUserGroup(): boolean | null {\n return this.getNullableField('SynchronizeUserGroup');\n }\n public set synchronizeUserGroup(value: boolean | null) {\n this.setNullableField('SynchronizeUserGroup', value);\n }\n // SynchronizeUsers\n public get synchronizeUsers(): boolean | null {\n return this.getNullableField('SynchronizeUsers');\n }\n public set synchronizeUsers(value: boolean | null) {\n this.setNullableField('SynchronizeUsers', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('GroupAccountGuid', SafeGuid.EMPTY);\n this.setField('GroupAccountName', '');\n this.setField('SynchronizeCardholders', false);\n this.setField('SynchronizeCredentials', false);\n this.setField('SynchronizeUserGroup', false);\n this.setField('SynchronizeUsers', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class ActiveDirectoryRoleEntity extends RoleEntity implements IActiveDirectoryRoleEntity {\n // #region REST Properties\n\n // ConnectionStatus\n public get connectionStatus(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.connectionStatusField);\n }\n\n // DC\n public get dC(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.dCField);\n }\n public set dC(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.dCField, value);\n }\n\n // DefaultBadgeTemplate\n public get defaultBadgeTemplate(): IGuid {\n return this.getFieldGuid(ActiveDirectoryRoleEntityFields.defaultBadgeTemplateField);\n }\n public set defaultBadgeTemplate(value: IGuid) {\n this.setFieldGuid(ActiveDirectoryRoleEntityFields.defaultBadgeTemplateField, value);\n }\n\n // DefaultCardFormat\n public get defaultCardFormat(): IGuid {\n return this.getFieldGuid(ActiveDirectoryRoleEntityFields.defaultCardFormatField);\n }\n public set defaultCardFormat(value: IGuid) {\n this.setFieldGuid(ActiveDirectoryRoleEntityFields.defaultCardFormatField, value);\n }\n\n // Domain\n public get domain(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.domainField);\n }\n public set domain(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.domainField, value);\n }\n\n // ExternalAddress\n public get externalAddress(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.externalAddressField);\n }\n public set externalAddress(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.externalAddressField, value);\n }\n\n // MaxPictureSize\n public get maxPictureSize(): number {\n return this.getField(ActiveDirectoryRoleEntityFields.maxPictureSizeField);\n }\n public set maxPictureSize(value: number) {\n this.setField(ActiveDirectoryRoleEntityFields.maxPictureSizeField, value);\n }\n\n // MaxPictureSizeLimit\n public get maxPictureSizeLimit(): number {\n return this.getField(ActiveDirectoryRoleEntityFields.maxPictureSizeLimitField);\n }\n public set maxPictureSizeLimit(value: number) {\n this.setField(ActiveDirectoryRoleEntityFields.maxPictureSizeLimitField, value);\n }\n\n // NetBiosName\n public get netBiosName(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.netBiosNameField);\n }\n public set netBiosName(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.netBiosNameField, value);\n }\n\n // PartitionGuid\n public get partitionGuid(): IGuid {\n return this.getFieldGuid(ActiveDirectoryRoleEntityFields.partitionGuidField);\n }\n public set partitionGuid(value: IGuid) {\n this.setFieldGuid(ActiveDirectoryRoleEntityFields.partitionGuidField, value);\n }\n\n // Password\n public get password(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.passwordField);\n }\n public set password(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.passwordField, value);\n }\n\n // Status\n public get status(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.statusField);\n }\n\n // UploadPicturesToActiveDirectory\n public get uploadPicturesToActiveDirectory(): boolean {\n return this.getField(ActiveDirectoryRoleEntityFields.uploadPicturesToActiveDirectoryField);\n }\n public set uploadPicturesToActiveDirectory(value: boolean) {\n this.setField(ActiveDirectoryRoleEntityFields.uploadPicturesToActiveDirectoryField, value);\n }\n\n // UseApplicationCredentials\n public get useApplicationCredentials(): boolean {\n return this.getField(ActiveDirectoryRoleEntityFields.useApplicationCredentialsField);\n }\n public set useApplicationCredentials(value: boolean) {\n this.setField(ActiveDirectoryRoleEntityFields.useApplicationCredentialsField, value);\n }\n\n // UseDC\n public get useDC(): boolean {\n return this.getField(ActiveDirectoryRoleEntityFields.useDCField);\n }\n public set useDC(value: boolean) {\n this.setField(ActiveDirectoryRoleEntityFields.useDCField, value);\n }\n\n // UseGlobalCatalog\n public get useGlobalCatalog(): boolean {\n return this.getField(ActiveDirectoryRoleEntityFields.useGlobalCatalogField);\n }\n public set useGlobalCatalog(value: boolean) {\n this.setField(ActiveDirectoryRoleEntityFields.useGlobalCatalogField, value);\n }\n\n // Username\n public get username(): string {\n return this.getField(ActiveDirectoryRoleEntityFields.usernameField);\n }\n public set username(value: string) {\n this.setField(ActiveDirectoryRoleEntityFields.usernameField, value);\n }\n\n // UseSSLConnection\n public get useSSLConnection(): boolean {\n return this.getField(ActiveDirectoryRoleEntityFields.useSSLConnectionField);\n }\n public set useSSLConnection(value: boolean) {\n this.setField(ActiveDirectoryRoleEntityFields.useSSLConnectionField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getImportedGroupsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(ImportedGroup, 'ImportedGroups', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async triggerSynchronizationAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('TriggerSynchronization', 'POST', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAuthenticationRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-26 3:26:01 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IAuthenticationRoleEntity, INetworkEndPoint } from '../../Interface/IAuthenticationRoleEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { IEntity } from '../../Interface/IEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { FieldObject } from '../../../Helpers/FieldObject';\n\n// #region Inner classes\n\nexport class NetworkEndPoint extends FieldObject implements INetworkEndPoint {\n // MetadataEndpoints\n public get metadataEndpoints(): ObservableCollection {\n return this.getFieldArray('MetadataEndpoints');\n }\n public set metadataEndpoints(value: ObservableCollection) {\n this.setFieldArray('MetadataEndpoints', value);\n }\n // RedirectUris\n public get redirectUris(): ObservableCollection {\n return this.getFieldArray('RedirectUris');\n }\n public set redirectUris(value: ObservableCollection) {\n this.setFieldArray('RedirectUris', value);\n }\n // LogoutUris\n public get logoutUris(): ObservableCollection {\n return this.getFieldArray('LogoutUris');\n }\n public set logoutUris(value: ObservableCollection) {\n this.setFieldArray('LogoutUris', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('MetadataEndpoints', new ObservableCollection());\n this.setFieldArray('RedirectUris', new ObservableCollection());\n this.setFieldArray('LogoutUris', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class AuthenticationRoleEntity extends RoleEntity implements IAuthenticationRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getNetworkEndPointsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(NetworkEndPoint, 'NetworkEndPoints', 'Id', true, false, ValidFlags.None, transaction);\n }\n\n public async getUsergroupsAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null> {\n return this.getGuidRelationAsync('Usergroups', 'Id', false, query, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiAdfsRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-26 3:26:01 PM\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IDomainName, IDomain, IAdfsRoleEntity } from '../../Interface/IAdfsRoleEntity';\nimport { AuthenticationRoleEntity } from './AuthenticationRoleEntity';\nimport { IQueryFilter } from '../../Interface/IQueryFilter';\nimport { IEntity } from '../../Interface/IEntity';\n\n// #region Inner classes\n\nexport class DomainName extends FieldObject implements IDomainName {\n // FullyQualifiedForm\n public get fullyQualifiedForm(): string {\n return this.getField('FullyQualifiedForm');\n }\n public set fullyQualifiedForm(value: string) {\n this.setField('FullyQualifiedForm', value);\n }\n // NetbiosForm\n public get netbiosForm(): string {\n return this.getField('NetbiosForm');\n }\n public set netbiosForm(value: string) {\n this.setField('NetbiosForm', value);\n }\n\n public initializeAllFields(): void {\n this.setField('FullyQualifiedForm', '');\n this.setField('NetbiosForm', '');\n }\n}\n\nexport class Domain extends FieldObject implements IDomain {\n // Domains\n public get domains(): ObservableCollection {\n return this.getFieldObjectArray(DomainName, 'Domains');\n }\n public set domains(value: ObservableCollection) {\n this.setFieldObjectArray('Domains', value);\n }\n // Url\n public get url(): string {\n return this.getField('Url');\n }\n public set url(value: string) {\n this.setField('Url', value);\n }\n // RelyingPartyId\n public get relyingPartyId(): string {\n return this.getField('RelyingPartyId');\n }\n public set relyingPartyId(value: string) {\n this.setField('RelyingPartyId', value);\n }\n // EnablePassiveAuth\n public get enablePassiveAuth(): boolean {\n return this.getField('EnablePassiveAuth');\n }\n public set enablePassiveAuth(value: boolean) {\n this.setField('EnablePassiveAuth', value);\n }\n // ExternalIdentityProviders\n public get externalIdentityProviders(): ObservableCollection {\n return this.getFieldObjectArray(Domain, 'ExternalIdentityProviders');\n }\n public set externalIdentityProviders(value: ObservableCollection) {\n this.setFieldObjectArray('ExternalIdentityProviders', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('Domains', new ObservableCollection());\n this.setField('Url', '');\n this.setField('RelyingPartyId', '');\n this.setField('EnablePassiveAuth', false);\n this.setFieldArray('ExternalIdentityProviders', new ObservableCollection());\n }\n}\n\n// #endregion Inner classes\n\nexport class AdfsRoleEntity extends AuthenticationRoleEntity implements IAdfsRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getTrustChainsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Domain, 'TrustChains', 'Id', false, false, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDirectoryFailoverRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:05 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class DirectoryFailoverRoleEntityFields extends RoleEntityFields {\n public static forceDirectoryOnMasterField = 'ForceDirectoryOnMaster';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IDirectoryFailoverRoleServer extends IFieldObject {\n id: IGuid;\n isGatewayOnly: boolean;\n isDisasterRecovery: boolean | null;\n}\n\n// #endregion Inner classes\n\nexport interface IDirectoryFailoverRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n forceDirectoryOnMaster: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getServersAsync(transaction?: ITransaction | null): Promise | null>;\n getValidationKeyAsync(servers: ObservableCollection, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiDirectoryFailoverRole?codegen=ts&InterfaceOnly=False&workflow=False on 2022-07-06 9:10:40 AM\nimport { RoleEntity } from './RoleEntity';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IDirectoryFailoverRoleServer, IDirectoryFailoverRoleEntity, DirectoryFailoverRoleEntityFields } from '../../Interface/IDirectoryFailOverRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class DirectoryFailoverRoleServer extends FieldObject implements IDirectoryFailoverRoleServer {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // IsGatewayOnly\n public get isGatewayOnly(): boolean {\n return this.getField('IsGatewayOnly');\n }\n public set isGatewayOnly(value: boolean) {\n this.setField('IsGatewayOnly', value);\n }\n // IsDisasterRecovery\n public get isDisasterRecovery(): boolean | null {\n return this.getNullableField('IsDisasterRecovery');\n }\n public set isDisasterRecovery(value: boolean | null) {\n this.setNullableField('IsDisasterRecovery', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('IsGatewayOnly', false);\n this.setField('IsDisasterRecovery', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class DirectoryFailoverRoleEntity extends RoleEntity implements IDirectoryFailoverRoleEntity {\n // #region REST Properties\n\n // ForceDirectoryOnMaster\n public get forceDirectoryOnMaster(): boolean {\n return this.getField(DirectoryFailoverRoleEntityFields.forceDirectoryOnMasterField);\n }\n public set forceDirectoryOnMaster(value: boolean) {\n this.setField(DirectoryFailoverRoleEntityFields.forceDirectoryOnMasterField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getServersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(DirectoryFailoverRoleServer, 'Servers', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n public async getValidationKeyAsync(servers: ObservableCollection, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body as string;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldArrayGuid('servers', servers);\n\n return this.executeRequestTransactionAsync('ValidationKey', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiFederationBaseRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:06 PM\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class FederationBaseRoleEntityFields extends RoleEntityFields {\n public static defaultParentAreaField = 'DefaultParentArea';\n public static enablePlaybackField = 'EnablePlayback';\n public static iPField = 'IP';\n public static passwordField = 'Password';\n public static portField = 'Port';\n public static statusDescriptionField = 'StatusDescription';\n public static streamingVersionField = 'StreamingVersion';\n public static usernameField = 'Username';\n}\n\n// #endregion Fields\n\nexport interface IFederationBaseRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n defaultParentArea: IGuid;\n\n enablePlayback: boolean;\n\n iP: string;\n\n password: string;\n\n port: number;\n\n readonly statusDescription: string;\n\n readonly streamingVersion: number;\n\n username: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiFederationBaseRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { RoleEntity } from './RoleEntity';\nimport { IGuid } from 'safeguid';\nimport { IFederationBaseRoleEntity, FederationBaseRoleEntityFields } from '../../Interface/IFederationBaseRoleEntity';\n\nexport class FederationBaseRoleEntity extends RoleEntity implements IFederationBaseRoleEntity {\n // #region REST Properties\n\n // DefaultParentArea\n public get defaultParentArea(): IGuid {\n return this.getFieldGuid(FederationBaseRoleEntityFields.defaultParentAreaField);\n }\n public set defaultParentArea(value: IGuid) {\n this.setFieldGuid(FederationBaseRoleEntityFields.defaultParentAreaField, value);\n }\n\n // EnablePlayback\n public get enablePlayback(): boolean {\n return this.getField(FederationBaseRoleEntityFields.enablePlaybackField);\n }\n public set enablePlayback(value: boolean) {\n this.setField(FederationBaseRoleEntityFields.enablePlaybackField, value);\n }\n\n // IP\n public get iP(): string {\n return this.getField(FederationBaseRoleEntityFields.iPField);\n }\n public set iP(value: string) {\n this.setField(FederationBaseRoleEntityFields.iPField, value);\n }\n\n // Password\n public get password(): string {\n return this.getField(FederationBaseRoleEntityFields.passwordField);\n }\n public set password(value: string) {\n this.setField(FederationBaseRoleEntityFields.passwordField, value);\n }\n\n // Port\n public get port(): number {\n return this.getField(FederationBaseRoleEntityFields.portField);\n }\n public set port(value: number) {\n this.setField(FederationBaseRoleEntityFields.portField, value);\n }\n\n // StatusDescription\n public get statusDescription(): string {\n return this.getField(FederationBaseRoleEntityFields.statusDescriptionField);\n }\n\n // StreamingVersion\n public get streamingVersion(): number {\n return this.getField(FederationBaseRoleEntityFields.streamingVersionField);\n }\n\n // Username\n public get username(): string {\n return this.getField(FederationBaseRoleEntityFields.usernameField);\n }\n public set username(value: string) {\n this.setField(FederationBaseRoleEntityFields.usernameField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiHealthMonitoringRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:18 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IHealthMonitoringRoleEntity } from '../../Interface/IHealthMonitoringRoleEntity';\n\nexport class HealthMonitoringRoleEntity extends RoleEntity implements IHealthMonitoringRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiIncidentManagementRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:18 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IIncidentManagementRoleEntity } from '../../Interface/IIncidentManagementRoleEntity';\n\nexport class IncidentManagementRoleEntity extends RoleEntity implements IIncidentManagementRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMapManagerRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { IGuid } from 'safeguid';\n\n// #region Fields\n\nexport class MapManagerRoleEntityFields extends RoleEntityFields {\n public static cacheLocationField = 'CacheLocation';\n public static connectionPortField = 'ConnectionPort';\n public static defaultMapIdField = 'DefaultMapId';\n}\n\n// #endregion Fields\n\nexport interface IMapManagerRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n cacheLocation: string;\n\n connectionPort: number;\n\n defaultMapId: IGuid;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMapManagerRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:26 AM\nimport { RoleEntity } from './RoleEntity';\nimport { IGuid } from 'safeguid';\nimport { IMapManagerRoleEntity, MapManagerRoleEntityFields } from '../../Interface/IMapManagerRoleEntity';\n\nexport class MapManagerRoleEntity extends RoleEntity implements IMapManagerRoleEntity {\n // #region REST Properties\n\n // CacheLocation\n public get cacheLocation(): string {\n return this.getField(MapManagerRoleEntityFields.cacheLocationField);\n }\n public set cacheLocation(value: string) {\n this.setField(MapManagerRoleEntityFields.cacheLocationField, value);\n }\n\n // ConnectionPort\n public get connectionPort(): number {\n return this.getField(MapManagerRoleEntityFields.connectionPortField);\n }\n public set connectionPort(value: number) {\n this.setField(MapManagerRoleEntityFields.connectionPortField, value);\n }\n\n // DefaultMapId\n public get defaultMapId(): IGuid {\n return this.getFieldGuid(MapManagerRoleEntityFields.defaultMapIdField);\n }\n public set defaultMapId(value: IGuid) {\n this.setFieldGuid(MapManagerRoleEntityFields.defaultMapIdField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMediaGatewayRole?codegen=ts&InterfaceOnly=True&workflow=False on 2020-09-21 3:54:06 PM\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\n\n// #region Fields\n\nexport class MediaGatewayRoleEntityFields extends RoleEntityFields {\n public static httpPortField = 'HttpPort';\n public static httpsPortField = 'HttpsPort';\n public static listenPortField = 'ListenPort';\n public static rtspEnabledField = 'RtspEnabled';\n public static secureServerField = 'SecureServer';\n public static useDefaultPortsField = 'UseDefaultPorts';\n public static useRtspsField = 'UseRtsps';\n public static webApplicationPathField = 'WebApplicationPath';\n}\n\n// #endregion Fields\n\nexport interface IMediaGatewayRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n httpPort: number;\n\n httpsPort: number;\n\n listenPort: number;\n\n rtspEnabled: boolean;\n\n secureServer: boolean;\n\n useDefaultPorts: boolean;\n\n useRtsps: boolean;\n\n webApplicationPath: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiMediaGatewayRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-09-21 3:54:11 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IMediaGatewayRoleEntity, MediaGatewayRoleEntityFields } from '../../Interface/IMediaGatewayRoleEntity';\n\nexport class MediaGatewayRoleEntity extends RoleEntity implements IMediaGatewayRoleEntity {\n // #region REST Properties\n\n // HttpPort\n public get httpPort(): number {\n return this.getField(MediaGatewayRoleEntityFields.httpPortField);\n }\n public set httpPort(value: number) {\n this.setField(MediaGatewayRoleEntityFields.httpPortField, value);\n }\n\n // HttpsPort\n public get httpsPort(): number {\n return this.getField(MediaGatewayRoleEntityFields.httpsPortField);\n }\n public set httpsPort(value: number) {\n this.setField(MediaGatewayRoleEntityFields.httpsPortField, value);\n }\n\n // ListenPort\n public get listenPort(): number {\n return this.getField(MediaGatewayRoleEntityFields.listenPortField);\n }\n public set listenPort(value: number) {\n this.setField(MediaGatewayRoleEntityFields.listenPortField, value);\n }\n\n // RtspEnabled\n public get rtspEnabled(): boolean {\n return this.getField(MediaGatewayRoleEntityFields.rtspEnabledField);\n }\n public set rtspEnabled(value: boolean) {\n this.setField(MediaGatewayRoleEntityFields.rtspEnabledField, value);\n }\n\n // SecureServer\n public get secureServer(): boolean {\n return this.getField(MediaGatewayRoleEntityFields.secureServerField);\n }\n public set secureServer(value: boolean) {\n this.setField(MediaGatewayRoleEntityFields.secureServerField, value);\n }\n\n // UseDefaultPorts\n public get useDefaultPorts(): boolean {\n return this.getField(MediaGatewayRoleEntityFields.useDefaultPortsField);\n }\n public set useDefaultPorts(value: boolean) {\n this.setField(MediaGatewayRoleEntityFields.useDefaultPortsField, value);\n }\n\n // UseRtsps\n public get useRtsps(): boolean {\n return this.getField(MediaGatewayRoleEntityFields.useRtspsField);\n }\n public set useRtsps(value: boolean) {\n this.setField(MediaGatewayRoleEntityFields.useRtspsField, value);\n }\n\n // WebApplicationPath\n public get webApplicationPath(): string {\n return this.getField(MediaGatewayRoleEntityFields.webApplicationPathField);\n }\n public set webApplicationPath(value: string) {\n this.setField(MediaGatewayRoleEntityFields.webApplicationPathField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiOmnicastFederationRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-15 12:15:54 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IFederationBaseRoleEntity, FederationBaseRoleEntityFields } from './IFederationBaseRoleEntity';\nimport { ITransaction } from './ITransaction';\nimport { IFederationEvent } from './ISecurityCenterFederationRoleEntity';\nimport { IFieldObject } from './IFieldObject';\n\n// #region Fields\n\nexport class OmnicastFederationRoleEntityFields extends FederationBaseRoleEntityFields {\n public static defaultStreamUsageField = 'DefaultStreamUsage';\n public static federateAlarmsField = 'FederateAlarms';\n public static versionField = 'Version';\n public static videoRedirectionModeField = 'VideoRedirectionMode';\n}\n\n// #endregion Fields\n\nexport interface IOmnicastFederationRoleEntity extends IFederationBaseRoleEntity {\n // #region REST Properties\n\n defaultStreamUsage: string;\n\n federateAlarms: boolean;\n\n version: string;\n\n videoRedirectionMode: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getEventsAsync(transaction?: ITransaction | null): Promise | null>;\n getRedirectorsAsync(transaction?: ITransaction): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSecurityCenterFederationRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IFieldObject } from './IFieldObject';\nimport { IFederationBaseRoleEntity, FederationBaseRoleEntityFields } from './IFederationBaseRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class SecurityCenterFederationRoleEntityFields extends FederationBaseRoleEntityFields {\n public static defaultStreamUsageField = 'DefaultStreamUsage';\n public static federateAlarmsField = 'FederateAlarms';\n public static forwardDirectoryReportsField = 'ForwardDirectoryReports';\n public static resiliencyTimeoutInMillisecondsField = 'ResiliencyTimeoutInMilliseconds';\n public static rootAreaIdField = 'RootAreaId';\n public static useResilientConnectionField = 'UseResilientConnection';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface IFederationEvent extends IFieldObject {\n id: string;\n enabled: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface ISecurityCenterFederationRoleEntity extends IFederationBaseRoleEntity {\n // #region REST Properties\n\n defaultStreamUsage: string;\n\n federateAlarms: boolean;\n\n forwardDirectoryReports: boolean;\n\n resiliencyTimeoutInMilliseconds: number;\n\n readonly rootAreaId: IGuid;\n\n useResilientConnection: boolean;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getEventsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiSecurityCenterFederationRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 9:30:27 AM\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { FederationBaseRoleEntity } from './FederationBaseRoleEntity';\nimport { IGuid } from 'safeguid';\nimport { IFederationEvent, ISecurityCenterFederationRoleEntity, SecurityCenterFederationRoleEntityFields } from '../../Interface/ISecurityCenterFederationRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class FederationEvent extends FieldObject implements IFederationEvent {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Enabled\n public get enabled(): boolean {\n return this.getField('Enabled');\n }\n public set enabled(value: boolean) {\n this.setField('Enabled', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Id', '');\n this.setField('Enabled', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class SecurityCenterFederationRoleEntity extends FederationBaseRoleEntity implements ISecurityCenterFederationRoleEntity {\n // #region REST Properties\n\n // DefaultStreamUsage\n public get defaultStreamUsage(): string {\n return this.getField(SecurityCenterFederationRoleEntityFields.defaultStreamUsageField);\n }\n public set defaultStreamUsage(value: string) {\n this.setField(SecurityCenterFederationRoleEntityFields.defaultStreamUsageField, value);\n }\n\n // FederateAlarms\n public get federateAlarms(): boolean {\n return this.getField(SecurityCenterFederationRoleEntityFields.federateAlarmsField);\n }\n public set federateAlarms(value: boolean) {\n this.setField(SecurityCenterFederationRoleEntityFields.federateAlarmsField, value);\n }\n\n // ForwardDirectoryReports\n public get forwardDirectoryReports(): boolean {\n return this.getField(SecurityCenterFederationRoleEntityFields.forwardDirectoryReportsField);\n }\n public set forwardDirectoryReports(value: boolean) {\n this.setField(SecurityCenterFederationRoleEntityFields.forwardDirectoryReportsField, value);\n }\n\n // ResiliencyTimeoutInMilliseconds\n public get resiliencyTimeoutInMilliseconds(): number {\n return this.getField(SecurityCenterFederationRoleEntityFields.resiliencyTimeoutInMillisecondsField);\n }\n public set resiliencyTimeoutInMilliseconds(value: number) {\n this.setField(SecurityCenterFederationRoleEntityFields.resiliencyTimeoutInMillisecondsField, value);\n }\n\n // RootAreaId\n public get rootAreaId(): IGuid {\n return this.getFieldGuid(SecurityCenterFederationRoleEntityFields.rootAreaIdField);\n }\n\n // UseResilientConnection\n public get useResilientConnection(): boolean {\n return this.getField(SecurityCenterFederationRoleEntityFields.useResilientConnectionField);\n }\n public set useResilientConnection(value: boolean) {\n this.setField(SecurityCenterFederationRoleEntityFields.useResilientConnectionField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getEventsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(FederationEvent, 'Events', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiOmnicastFederationRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-15 12:15:59 PM\nimport { FederationBaseRoleEntity } from './FederationBaseRoleEntity';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IOmnicastFederationRoleEntity, OmnicastFederationRoleEntityFields } from '../../Interface/IOmnicastFederationRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\nimport { IFederationEvent } from '../../Interface/ISecurityCenterFederationRoleEntity';\nimport { FederationEvent } from './SecurityCenterFederationRoleEntity';\nimport { IFieldObject } from '../../Interface/IFieldObject';\n\nexport class OmnicastFederationRoleEntity extends FederationBaseRoleEntity implements IOmnicastFederationRoleEntity {\n // #region REST Properties\n\n // DefaultStreamUsage\n public get defaultStreamUsage(): string {\n return this.getField(OmnicastFederationRoleEntityFields.defaultStreamUsageField);\n }\n public set defaultStreamUsage(value: string) {\n this.setField(OmnicastFederationRoleEntityFields.defaultStreamUsageField, value);\n }\n\n // FederateAlarms\n public get federateAlarms(): boolean {\n return this.getField(OmnicastFederationRoleEntityFields.federateAlarmsField);\n }\n public set federateAlarms(value: boolean) {\n this.setField(OmnicastFederationRoleEntityFields.federateAlarmsField, value);\n }\n\n // Version\n public get version(): string {\n return this.getField(OmnicastFederationRoleEntityFields.versionField);\n }\n public set version(value: string) {\n this.setField(OmnicastFederationRoleEntityFields.versionField, value);\n }\n\n // VideoRedirectionMode\n public get videoRedirectionMode(): boolean {\n return this.getField(OmnicastFederationRoleEntityFields.videoRedirectionModeField);\n }\n public set videoRedirectionMode(value: boolean) {\n this.setField(OmnicastFederationRoleEntityFields.videoRedirectionModeField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getEventsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(FederationEvent, 'Events', 'Id', true, true, ValidFlags.None, transaction);\n }\n\n public async getRedirectorsAsync(transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK) {\n const result = response.body as Array;\n return new Promise>(function(resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function(resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync>('Redirectors', 'GET', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPointOfSaleRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:18 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IPointOfSaleRoleEntity } from '../../Interface/IPointOfSaleRoleEntity';\n\nexport class PointOfSaleRoleEntity extends RoleEntity implements IPointOfSaleRoleEntity {\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiReverseTunnelClientRole?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:14 PM\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\n\n// #region Fields\n\nexport class ReverseTunnelClientRoleEntityFields extends RoleEntityFields {\n public static encryptionModeField = 'EncryptionMode';\n public static keyFileField = 'KeyFile';\n public static remoteEncryptionModeField = 'RemoteEncryptionMode';\n}\n\n// #endregion Fields\n\nexport interface IReverseTunnelClientRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n encryptionMode: string;\n\n readonly keyFile: string;\n\n readonly remoteEncryptionMode: string;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiReverseTunnelClientRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:18 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IReverseTunnelClientRoleEntity, ReverseTunnelClientRoleEntityFields } from '../../Interface/IReverseTunnelClientRoleEntity';\n\nexport class ReverseTunnelClientRoleEntity extends RoleEntity implements IReverseTunnelClientRoleEntity {\n // #region REST Properties\n\n // EncryptionMode\n public get encryptionMode(): string {\n return this.getField(ReverseTunnelClientRoleEntityFields.encryptionModeField);\n }\n public set encryptionMode(value: string) {\n this.setField(ReverseTunnelClientRoleEntityFields.encryptionModeField, value);\n }\n\n // KeyFile\n public get keyFile(): string {\n return this.getField(ReverseTunnelClientRoleEntityFields.keyFileField);\n }\n\n // RemoteEncryptionMode\n public get remoteEncryptionMode(): string {\n return this.getField(ReverseTunnelClientRoleEntityFields.remoteEncryptionModeField);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiReverseTunnelServerRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:08 PM\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class ReverseTunnelServerRoleEntityFields extends RoleEntityFields {\n public static globalEncryptionModeField = 'GlobalEncryptionMode';\n public static globalTcpPortRangeEndField = 'GlobalTcpPortRangeEnd';\n public static globalTcpPortRangeStartField = 'GlobalTcpPortRangeStart';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ISite extends IFieldObject {\n name: string;\n mandatoryExistingEntity: IGuid | null;\n friendlyDescription: string;\n encryptionMode: string;\n forceReset: boolean;\n}\n\n// #endregion Inner classes\n\nexport interface IReverseTunnelServerRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n globalEncryptionMode: string;\n\n globalTcpPortRangeEnd: number;\n\n globalTcpPortRangeStart: number;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n addSitesAsync(value: ISite, transaction?: ITransaction): Promise;\n deleteSitesAsync(name: string, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiReverseTunnelServerRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-08-30 10:02:04 AM\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { RoleEntity } from './RoleEntity';\nimport HttpStatusCode from '../../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../../Interface/IRestResponse';\nimport { IReverseTunnelServerRoleEntity, ISite, ReverseTunnelServerRoleEntityFields } from '../../Interface/IReverseTunnelServerRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class Site extends FieldObject implements ISite {\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // MandatoryExistingEntity\n public get mandatoryExistingEntity(): IGuid | null {\n return this.getNullableFieldGuid('MandatoryExistingEntity');\n }\n public set mandatoryExistingEntity(value: IGuid | null) {\n this.setNullableFieldGuid('MandatoryExistingEntity', value);\n }\n // FriendlyDescription\n public get friendlyDescription(): string {\n return this.getField('FriendlyDescription');\n }\n public set friendlyDescription(value: string) {\n this.setField('FriendlyDescription', value);\n }\n // EncryptionMode\n public get encryptionMode(): string {\n return this.getField('EncryptionMode');\n }\n public set encryptionMode(value: string) {\n this.setField('EncryptionMode', value);\n }\n // ForceReset\n public get forceReset(): boolean {\n return this.getField('ForceReset');\n }\n public set forceReset(value: boolean) {\n this.setField('ForceReset', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Name', '');\n this.setFieldGuid('MandatoryExistingEntity', SafeGuid.EMPTY);\n this.setField('FriendlyDescription', '');\n this.setField('EncryptionMode', '');\n this.setField('ForceReset', false);\n }\n}\n\n// #endregion Inner classes\n\nexport class ReverseTunnelServerRoleEntity extends RoleEntity implements IReverseTunnelServerRoleEntity {\n // #region REST Properties\n\n // GlobalEncryptionMode\n public get globalEncryptionMode(): string {\n return this.getField(ReverseTunnelServerRoleEntityFields.globalEncryptionModeField);\n }\n public set globalEncryptionMode(value: string) {\n this.setField(ReverseTunnelServerRoleEntityFields.globalEncryptionModeField, value);\n }\n\n // GlobalTcpPortRangeEnd\n public get globalTcpPortRangeEnd(): number {\n return this.getField(ReverseTunnelServerRoleEntityFields.globalTcpPortRangeEndField);\n }\n public set globalTcpPortRangeEnd(value: number) {\n this.setField(ReverseTunnelServerRoleEntityFields.globalTcpPortRangeEndField, value);\n }\n\n // GlobalTcpPortRangeStart\n public get globalTcpPortRangeStart(): number {\n return this.getField(ReverseTunnelServerRoleEntityFields.globalTcpPortRangeStartField);\n }\n public set globalTcpPortRangeStart(value: number) {\n this.setField(ReverseTunnelServerRoleEntityFields.globalTcpPortRangeStartField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async addSitesAsync(value: ISite, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = response.body as string;\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('Sites', 'POST', value, transaction, responseHandler);\n }\n\n public async deleteSitesAsync(name: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('Sites' + '/' + name, 'DELETE', null, transaction, responseHandler);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiPluginRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-08-26 2:56:07 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from './IRestResponse';\nimport { IFieldObject } from './IFieldObject';\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class PluginRoleEntityFields extends RoleEntityFields {\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ISlotInfo extends IFieldObject {\n count: number;\n}\n\nexport interface IRoleAgentApplication extends IFieldObject {\n appId: IGuid;\n serverId: IGuid;\n}\n\nexport interface IAgentUrl extends IFieldObject {\n serverId: IGuid;\n applicationPath: string;\n restUrl: string;\n}\n\nexport interface IRestVersion extends IFieldObject {\n minor: number;\n major: number;\n build: number;\n revision: number;\n}\n\nexport interface IPluginRoleConfig extends IFieldObject {\n version: IRestVersion;\n urls: ObservableCollection;\n externalPlugin: boolean;\n configToolData: string;\n configToolHtml: string;\n configToolHtmlZip: IGuid;\n configToolHtmlZipMd5: string;\n roleCustomData: string;\n supportDatabase: boolean;\n nameSpace: string;\n}\n\nexport interface IDbUpgradeItem extends IFieldObject {\n sourceVersion: number;\n targetVersion: number;\n upgradeScript: string;\n}\n\nexport interface IDatabaseScript extends IFieldObject {\n expectedVersion: number;\n creationScript: string;\n upgradeItems: ObservableCollection;\n}\n\nexport interface IDatabaseConnectionInfo extends IFieldObject {\n databaseInstance: string;\n databaseName: string;\n connectionString: string;\n}\n\n// #endregion Inner classes\n\nexport interface IPluginRoleEntity extends IRoleEntity {\n // #region REST Methods\n\n getDatabaseConfigurationAsync(transaction?: ITransaction | null): Promise;\n setDatabaseScriptsAsync(value: IDatabaseScript, transaction?: ITransaction): Promise;\n freeSlotAsync(groupId: string, slotId: string, transaction?: ITransaction): Promise;\n modifyLicenseItemAsync(item: string, count: number, tag: string, transaction?: ITransaction): Promise;\n getPluginRoleConfigAsync(transaction?: ITransaction | null): Promise;\n reserveSlotAsync(maxCountAllowed: number, groupId: string, slotId: string, transaction?: ITransaction): Promise;\n getRoleAgentApplicationsAsync(transaction?: ITransaction | null): Promise | null>;\n getFreeSlotAsync(id: string, transaction?: ITransaction | null): Promise;\n startOpenIdServerAsync(applicationPath: string, authCallbackUri: string, port: number, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiWebClientRole?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-15 12:15:55 PM\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\nimport { IFieldObject } from './IFieldObject';\nimport { IPluginRoleEntity, PluginRoleEntityFields } from './IPluginRoleEntity';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class WebClientRoleEntityFields extends PluginRoleEntityFields {\n public static exportFolderField = 'ExportFolder';\n public static httpPortField = 'HttpPort';\n public static httpsPortField = 'HttpsPort';\n public static useDefaultWebServerPortField = 'UseDefaultWebServerPort';\n public static useInfiniteSessionsField = 'UseInfiniteSessions';\n public static webAddressField = 'WebAddress';\n}\n\n// #endregion Fields\n\n// #region Inner classes\n\nexport interface ISetting extends IFieldObject {\n key: string;\n value: string;\n}\n\n// #endregion Inner classes\n\nexport interface IWebClientRoleEntity extends IPluginRoleEntity {\n // #region REST Properties\n\n exportFolder: string;\n\n httpPort: number;\n\n httpsPort: number;\n\n useDefaultWebServerPort: boolean;\n\n useInfiniteSessions: boolean;\n\n webAddress: string;\n\n // #endregion REST Properties\n\n // #region REST Methods\n\n getSettingsAsync(transaction?: ITransaction | null): Promise | null>;\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiWebClientRole?codegen=ts&InterfaceOnly=False&workflow=False on 2021-04-15 12:15:59 PM\nimport { ValidFlags } from '../../Enumerations/ValidFlags';\nimport { FieldObject } from '../../../Helpers/FieldObject';\nimport { ObservableCollection } from '../../../Helpers/ObservableCollection';\nimport { PluginRoleEntity } from './PluginRoleEntity';\nimport { IWebClientRoleEntity, ISetting, WebClientRoleEntityFields } from '../../Interface/IWebClientRoleEntity';\nimport { ITransaction } from '../../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class Setting extends FieldObject implements ISetting {\n // Key\n public get key(): string {\n return this.getField('Key');\n }\n public set key(value: string) {\n this.setField('Key', value);\n }\n // Value\n public get value(): string {\n return this.getField('Value');\n }\n public set value(value: string) {\n this.setField('Value', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('Key', '');\n this.setField('Value', '');\n }\n}\n\n// #endregion Inner classes\n\nexport class WebClientRoleEntity extends PluginRoleEntity implements IWebClientRoleEntity {\n // #region REST Properties\n\n // ExportFolder\n public get exportFolder(): string {\n return this.getField(WebClientRoleEntityFields.exportFolderField);\n }\n public set exportFolder(value: string) {\n this.setField(WebClientRoleEntityFields.exportFolderField, value);\n }\n\n // HttpPort\n public get httpPort(): number {\n return this.getField(WebClientRoleEntityFields.httpPortField);\n }\n public set httpPort(value: number) {\n this.setField(WebClientRoleEntityFields.httpPortField, value);\n }\n\n // HttpsPort\n public get httpsPort(): number {\n return this.getField(WebClientRoleEntityFields.httpsPortField);\n }\n public set httpsPort(value: number) {\n this.setField(WebClientRoleEntityFields.httpsPortField, value);\n }\n\n // UseDefaultWebServerPort\n public get useDefaultWebServerPort(): boolean {\n return this.getField(WebClientRoleEntityFields.useDefaultWebServerPortField);\n }\n public set useDefaultWebServerPort(value: boolean) {\n this.setField(WebClientRoleEntityFields.useDefaultWebServerPortField, value);\n }\n\n // UseInfiniteSessions\n public get useInfiniteSessions(): boolean {\n return this.getField(WebClientRoleEntityFields.useInfiniteSessionsField);\n }\n public set useInfiniteSessions(value: boolean) {\n this.setField(WebClientRoleEntityFields.useInfiniteSessionsField, value);\n }\n\n // WebAddress\n public get webAddress(): string {\n return this.getField(WebClientRoleEntityFields.webAddressField);\n }\n public set webAddress(value: string) {\n this.setField(WebClientRoleEntityFields.webAddressField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region REST Methods\n\n public async getSettingsAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(Setting, 'Settings', 'Id', false, true, ValidFlags.None, transaction);\n }\n\n // #endregion REST Methods\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiZoneManagementRole?codegen=ts&InterfaceOnly=True&workflow=False on 2020-07-23 3:40:15 PM\nimport { IRoleEntity, RoleEntityFields } from './IRoleEntity';\n\n// #region Fields\n\nexport class ZoneManagementRoleEntityFields extends RoleEntityFields {\n public static keepHistoryField = 'KeepHistory';\n public static logRetentionDaysField = 'LogRetentionDays';\n}\n\n// #endregion Fields\n\nexport interface IZoneManagementRoleEntity extends IRoleEntity {\n // #region REST Properties\n\n keepHistory: boolean;\n\n logRetentionDays: number;\n\n // #endregion REST Properties\n\n}\n\n","// Autogenerated: v2/help/Entities/ApiZoneManagementRole?codegen=ts&InterfaceOnly=False&workflow=False on 2020-07-23 3:40:18 PM\nimport { RoleEntity } from './RoleEntity';\nimport { IZoneManagementRoleEntity, ZoneManagementRoleEntityFields } from '../../Interface/IZoneManagementRoleEntity';\n\nexport class ZoneManagementRoleEntity extends RoleEntity implements IZoneManagementRoleEntity {\n // #region REST Properties\n\n // KeepHistory\n public get keepHistory(): boolean {\n return this.getField(ZoneManagementRoleEntityFields.keepHistoryField);\n }\n public set keepHistory(value: boolean) {\n this.setField(ZoneManagementRoleEntityFields.keepHistoryField, value);\n }\n\n // LogRetentionDays\n public get logRetentionDays(): number {\n return this.getField(ZoneManagementRoleEntityFields.logRetentionDaysField);\n }\n public set logRetentionDays(value: number) {\n this.setField(ZoneManagementRoleEntityFields.logRetentionDaysField, value);\n }\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n}\n\n","import { backwardCompatible, BackwardCompatible } from './IEntityPropWrapper';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { AlarmEntity } from 'RestClient/Client/Model/AlarmEntity';\nimport { AccessControlUnitEntity } from 'RestClient/Client/Model/AccessControl/AccessControlUnitEntity';\nimport { AccessPointRuleEntity } from 'RestClient/Client/Model/AccessControl/AccessPointRuleEntity';\nimport { DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { MapEntity } from 'RestClient/Client/Model/MapEntity';\nimport { SafeGuid } from 'safeguid/dist/safeguid';\nimport { AccessPointEntity } from 'RestClient/Client/Model/AccessControl/AccessPointEntity';\nimport { ApplicationEntity } from 'RestClient/Client/Model/Application/ApplicationEntity';\nimport { AreaEntity } from 'RestClient/Client/Model/AreaEntity';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { CardholderGroupEntity } from 'RestClient/Client/Model/AccessControl/CardholderGroupEntity';\nimport { CredentialEntity } from 'RestClient/Client/Model/AccessControl/CredentialEntity';\nimport { DeviceEntity } from 'RestClient/Client/Model/Devices/DeviceEntity';\nimport { ElevatorEntity } from 'RestClient/Client/Model/AccessControl/ElevatorEntity';\nimport { RoleEntity } from 'RestClient/Client/Model/Roles/RoleEntity';\nimport { PartitionEntity } from 'RestClient/Client/Model/PartitionEntity';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { ScheduleEntity } from 'RestClient/Client/Model/ScheduleEntity';\nimport { UnitEntity } from 'RestClient/Client/Model/UnitEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { UserGroupEntity } from 'RestClient/Client/Model/UserGroupEntity';\nimport { VisitorEntity } from 'RestClient/Client/Model/AccessControl/VisitorEntity';\nimport { ZoneEntity } from 'RestClient/Client/Model/AccessControl/ZoneEntity';\nimport { MacroEntity } from \"RestClient/Client/Model/MacroEntity\";\nimport { LprUnitEntity } from 'RestClient/Client/Model/LicensePlateRecognition/LprUnitEntity';\nimport { PatrollerEntity } from 'RestClient/Client/Model/LicensePlateRecognition/LprPatrollerEntity';\nimport { HotlistEntity } from 'RestClient/Client/Model/LicensePlateRecognition/HotlistEntity';\nimport { UserTaskEntity } from 'RestClient/Client/Model/UserTaskEntity';\nimport { IntrusionAreaEntity } from 'RestClient/Client/Model/Intrusion/IntrusionAreaEntity';\nimport { IntrusionUnitEntity } from 'RestClient/Client/Model/Intrusion/IntrusionUnitEntity';\nimport { ServerEntity } from 'RestClient/Client/Model/ServerEntity';\nimport { VideoUnitEntity } from 'RestClient/Client/Model/Video/VideoUnitEntity';\nimport { FileEntity } from 'RestClient/Client/Model/FileEntity';\nimport { ThreatLevelEntity } from 'RestClient/Client/Model/ThreatLevelEntity';\nimport { StreamEntity } from 'RestClient/Client/Model/Video/StreamEntity';\nimport { NetworkEntity } from 'RestClient/Client/Model/NetworkEntity';\nimport { AgentEntity } from 'RestClient/Client/Model/AgentEntity';\nimport { RouteEntity } from 'RestClient/Client/Model/RouteEntity';\nimport { SequenceEntity } from 'RestClient/Client/Model/Video/SequenceEntity';\nimport { TilePluginEntity } from 'RestClient/Client/Model/TilePluginEntity';\nimport { TransferGroupEntity } from 'RestClient/Client/Model/Video/TransferGroupEntity';\nimport { CustomEntity } from 'RestClient/Client/Model/CustomEntity';\nimport { TileLayoutEntity } from 'RestClient/Client/Model/TileLayoutEntity';\nimport { DoorTemplateEntity } from 'RestClient/Client/Model/AccessControl/DoorTemplateEntity';\nimport { AccessManagerRoleEntity } from 'RestClient/Client/Model/AccessControl/AccessManagerRoleEntity';\nimport { AreaAccessPointEntity } from 'RestClient/Client/Model/AccessControl/AreaAccessPointEntity';\nimport { DoorAccessPointEntity } from 'RestClient/Client/Model/AccessControl/DoorAccessPointEntity';\nimport { DoorSideAccessPointEntity } from 'RestClient/Client/Model/AccessControl/DoorSideAccessPointEntity';\nimport { MobileApplicationEntity } from 'RestClient/Client/Model/Application/MobileApplicationEntity';\nimport { InputDeviceEntity } from 'RestClient/Client/Model/Devices/InputDeviceEntity';\nimport { IntrusionInputDeviceEntity } from 'RestClient/Client/Model/Devices/IntrusionInputDeviceEntity';\nimport { OutputDeviceEntity } from 'RestClient/Client/Model/Devices/OutputDeviceEntity';\nimport { ContentFileEntity } from 'RestClient/Client/Model/LicensePlateRecognition/ContentFileEntity';\nimport { LicensePlateManagerRoleEntity } from 'RestClient/Client/Model/LicensePlateRecognition/LicensePlateManagerRole';\nimport { LocatableEntity } from 'RestClient/Client/Model/LocatableEntity';\nimport { ArchiverAgentEntity } from 'RestClient/Client/Model/Video/ArchiverAgentEntity';\nimport { ArchiverRoleEntity } from 'RestClient/Client/Model/Video/ArchiverRoleEntity';\nimport { AuxiliaryArchiverRoleEntity } from 'RestClient/Client/Model/Video/AuxiliaryArchiverRoleEntity';\nimport { MediaRouterRoleEntity } from 'RestClient/Client/Model/Video/MediaRouterRoleEntity';\nimport { ActiveDirectoryRoleEntity } from 'RestClient/Client/Model/Roles/ActiveDirectoryRoleEntity';\nimport { AdfsRoleEntity } from 'RestClient/Client/Model/Roles/AdfsRoleEntity';\nimport { AuthenticationRoleEntity } from 'RestClient/Client/Model/Roles/AuthenticationRoleEntity';\nimport { DirectoryFailoverRoleEntity } from 'RestClient/Client/Model/Roles/DirectoryFailOverRoleEntity';\nimport { FederationBaseRoleEntity } from 'RestClient/Client/Model/Roles/FederationBaseRoleEntity';\nimport { HealthMonitoringRoleEntity } from 'RestClient/Client/Model/Roles/HealthMonitoringRoleEntity';\nimport { IncidentManagementRoleEntity } from 'RestClient/Client/Model/Roles/IncidentManagementRoleEntity';\nimport { MapManagerRoleEntity } from 'RestClient/Client/Model/Roles/MapManagerRoleEntity';\nimport { MediaGatewayRoleEntity } from 'RestClient/Client/Model/Roles/MediaGatewayRoleEntity';\nimport { OmnicastFederationRoleEntity } from 'RestClient/Client/Model/Roles/OmnicastFederationRoleEntity';\nimport { PluginRoleEntity } from 'RestClient/Client/Model/Roles/PluginRoleEntity';\nimport { PointOfSaleRoleEntity } from 'RestClient/Client/Model/Roles/PointOfSaleRoleEntity';\nimport { ReverseTunnelClientRoleEntity } from 'RestClient/Client/Model/Roles/ReverseTunnelClientRoleEntity';\nimport { ReverseTunnelServerRoleEntity } from 'RestClient/Client/Model/Roles/ReverseTunnelServerRoleEntity';\nimport { SecurityCenterFederationRoleEntity } from 'RestClient/Client/Model/Roles/SecurityCenterFederationRoleEntity';\nimport { WebClientRoleEntity } from 'RestClient/Client/Model/Roles/WebClientRoleEntity';\nimport { ZoneManagementRoleEntity } from 'RestClient/Client/Model/Roles/ZoneManagementRoleEntity';\nimport { PrivilegedEntity } from 'RestClient/Client/Model/PrivilegedEntity';\n\nexport const EntityWrapper = BackwardCompatible([\n backwardCompatible('method', '5.10.3.0', 'getCustomIconsAsync', async function (this: Entity, transaction?: ITransaction | null) {\n const customIcon = await this.getCustomIconAsync(transaction);\n return customIcon ? ObservableCollection.From([customIcon]) : null;\n }),\n])(Entity);\n\n// Access Control\nexport const AccessControlUnitEntityWrapper = BackwardCompatible([])(AccessControlUnitEntity);\nexport const AccessManagerRoleEntityWrapper = BackwardCompatible([])(AccessManagerRoleEntity);\nexport const AccessPointEntityWrapper = BackwardCompatible([])(AccessPointEntity);\nexport const AccessPointRuleEntityWrapper = BackwardCompatible([])(AccessPointRuleEntity);\nexport const AreaAccessPointEntityWrapper = BackwardCompatible([])(AreaAccessPointEntity);\nexport const CardholderEntityWrapper = BackwardCompatible([])(CardholderEntity);\nexport const CardholderGroupEntityWrapper = BackwardCompatible([])(CardholderGroupEntity);\nexport const CredentialEntityWrapper = BackwardCompatible([])(CredentialEntity);\nexport const DoorAccessPointEntityWrapper = BackwardCompatible([])(DoorAccessPointEntity);\nexport const DoorEntityWrapper = BackwardCompatible([])(DoorEntity);\nexport const DoorSideAccessPointEntityWrapper = BackwardCompatible([])(DoorSideAccessPointEntity);\nexport const DoorTemplateEntityWrapper = BackwardCompatible([])(DoorTemplateEntity);\nexport const ElevatorEntityWrapper = BackwardCompatible([])(ElevatorEntity);\nexport const VisitorEntityWrapper = BackwardCompatible([])(VisitorEntity);\nexport const ZoneEntityWrapper = BackwardCompatible([])(ZoneEntity);\n\n// Application\nexport const ApplicationEntityWrapper = BackwardCompatible([])(ApplicationEntity);\nexport const MobileApplicationEntityWrapper = BackwardCompatible([])(MobileApplicationEntity);\n\n// Devices\nexport const DeviceEntityWrapper = BackwardCompatible([])(DeviceEntity);\nexport const InputDeviceEntityWrapper = BackwardCompatible([])(InputDeviceEntity);\nexport const IntrusionInputDeviceEntityWrapper = BackwardCompatible([])(IntrusionInputDeviceEntity);\nexport const OutputDeviceEntityWrapper = BackwardCompatible([])(OutputDeviceEntity);\n\n// Intrusion\nexport const IntrusionAreaEntityWrapper = BackwardCompatible([])(IntrusionAreaEntity);\nexport const IntrusionUnitEntityWrapper = BackwardCompatible([])(IntrusionUnitEntity);\n\n// LPR\nexport const ContentFileEntityWrapper = BackwardCompatible([])(ContentFileEntity);\nexport const HotlistEntityWrapper = BackwardCompatible([])(HotlistEntity);\nexport const LicensePlateManagerRoleEntityWrapper = BackwardCompatible([])(LicensePlateManagerRoleEntity);\nexport const PatrollerEntityWrapper = BackwardCompatible([])(PatrollerEntity);\nexport const LprUnitEntityWrapper = BackwardCompatible([])(LprUnitEntity);\n\n// Roles\nexport const ActiveDirectoryRoleEntityWrapper = BackwardCompatible([])(ActiveDirectoryRoleEntity);\nexport const AdfsRoleEntityWrapper = BackwardCompatible([])(AdfsRoleEntity);\nexport const AuthenticationRoleEntityWrapper = BackwardCompatible([])(AuthenticationRoleEntity);\nexport const DirectoryFailoverRoleEntityWrapper = BackwardCompatible([])(DirectoryFailoverRoleEntity);\nexport const FederationBaseRoleEntityWrapper = BackwardCompatible([])(FederationBaseRoleEntity);\nexport const HealthMonitoringRoleEntityWrapper = BackwardCompatible([])(HealthMonitoringRoleEntity);\nexport const IncidentManagementRoleEntityWrapper = BackwardCompatible([])(IncidentManagementRoleEntity);\nexport const MapManagerRoleEntityWrapper = BackwardCompatible([])(MapManagerRoleEntity);\nexport const MediaGatewayRoleEntityWrapper = BackwardCompatible([])(MediaGatewayRoleEntity);\nexport const OmnicastFederationRoleEntityWrapper = BackwardCompatible([])(OmnicastFederationRoleEntity);\nexport const PluginRoleEntityWrapper = BackwardCompatible([])(PluginRoleEntity);\nexport const PointOfSaleRoleEntityWrapper = BackwardCompatible([])(PointOfSaleRoleEntity);\nexport const ReverseTunnelClientRoleEntityWrapper = BackwardCompatible([])(ReverseTunnelClientRoleEntity);\nexport const ReverseTunnelServerRoleEntityWrapper = BackwardCompatible([])(ReverseTunnelServerRoleEntity);\nexport const RoleEntityWrapper = BackwardCompatible([])(RoleEntity);\nexport const SecurityCenterFederationRoleEntityWrapper = BackwardCompatible([])(SecurityCenterFederationRoleEntity);\nexport const WebClientRoleEntityWrapper = BackwardCompatible([])(WebClientRoleEntity);\nexport const ZoneManagementRoleEntityWrapper = BackwardCompatible([])(ZoneManagementRoleEntity);\n\n// Video\nexport const ArchiverAgentEntityWrapper = BackwardCompatible([])(ArchiverAgentEntity);\nexport const ArchiverRoleEntityWrapper = BackwardCompatible([])(ArchiverRoleEntity);\nexport const AuxiliaryArchiverRoleEntityWrapper = BackwardCompatible([])(AuxiliaryArchiverRoleEntity);\nexport const CameraEntityWrapper = BackwardCompatible([])(CameraEntity);\nexport const MediaRouterRoleEntityWrapper = BackwardCompatible([])(MediaRouterRoleEntity);\nexport const SequenceEntityWrapper = BackwardCompatible([])(SequenceEntity);\nexport const StreamEntityWrapper = BackwardCompatible([])(StreamEntity);\nexport const TransferGroupEntityWrapper = BackwardCompatible([])(TransferGroupEntity);\nexport const VideoUnitEntityWrapper = BackwardCompatible([])(VideoUnitEntity);\n\n// Generic\nexport const AgentEntityWrapper = BackwardCompatible([])(AgentEntity);\nexport const AlarmEntityWrapper = BackwardCompatible([])(AlarmEntity);\nexport const AreaEntityWrapper = BackwardCompatible([])(AreaEntity);\nexport const CustomEntityWrapper = BackwardCompatible([])(CustomEntity);\nexport const FileEntityWrapper = BackwardCompatible([])(FileEntity);\nexport const LocatableEntityWrapper = BackwardCompatible([])(LocatableEntity);\nexport const MacroEntityWrapper = BackwardCompatible([])(MacroEntity);\nexport const MapEntityWrapper = BackwardCompatible([\n backwardCompatible('get', '5.10.3.0', 'backgroundColor', 0),\n backwardCompatible('get', '5.10.3.0', 'cruncherId', SafeGuid.EMPTY),\n backwardCompatible('get', '5.10.3.0', 'geoLocalized', false),\n backwardCompatible('get', '5.10.3.0', 'hideEmptyLayers', false),\n backwardCompatible('get', '5.10.3.0', 'info', ''),\n backwardCompatible('get', '5.10.3.0', 'isMapImage', false),\n backwardCompatible('get', '5.10.3.0', 'lockDisplay', false),\n backwardCompatible('get', '5.10.3.0', 'lockZoom', false),\n backwardCompatible('get', '5.10.3.0', 'originalFileExtension', ''),\n backwardCompatible('get', '5.10.3.0', 'projection', ''),\n backwardCompatible('get', '5.10.3.0', 'rotation', 0),\n backwardCompatible('get', '5.10.3.0', 'scaleFactor', 1),\n])(MapEntity);\nexport const NetworkEntityWrapper = BackwardCompatible([])(NetworkEntity);\nexport const PartitionEntityWrapper = BackwardCompatible([])(PartitionEntity);\nexport const PrivilegedEntityWrapper = BackwardCompatible([])(PrivilegedEntity);\nexport const RouteEntityWrapper = BackwardCompatible([])(RouteEntity);\nexport const ScheduleEntityWrapper = BackwardCompatible([])(ScheduleEntity);\nexport const ServerEntityWrapper = BackwardCompatible([])(ServerEntity);\nexport const SystemConfigurationEntityWrapper = BackwardCompatible([])(SystemConfigurationEntity);\nexport const ThreatLevelEntityWrapper = BackwardCompatible([])(ThreatLevelEntity);\nexport const TileLayoutEntityWrapper = BackwardCompatible([])(TileLayoutEntity);\nexport const TilePluginEntityWrapper = BackwardCompatible([])(TilePluginEntity);\nexport const UnitEntityWrapper = BackwardCompatible([])(UnitEntity);\nexport const UserEntityWrapper = BackwardCompatible([])(UserEntity);\nexport const UserGroupEntityWrapper = BackwardCompatible([])(UserGroupEntity);\nexport const UserTaskEntityWrapper = BackwardCompatible([])(UserTaskEntity);\n","import { IEntity } from \"RestClient/Client/Interface/IEntity\";\nimport { EntityTypes } from \"RestClient/Client/Enumerations/EntityTypes\";\nimport {\n AccessPointEntityWrapper,\n AlarmEntityWrapper,\n AccessPointRuleEntityWrapper,\n ApplicationEntityWrapper,\n AreaEntityWrapper,\n MapEntityWrapper,\n CameraEntityWrapper,\n CardholderEntityWrapper,\n CardholderGroupEntityWrapper,\n CredentialEntityWrapper,\n DeviceEntityWrapper,\n DoorEntityWrapper,\n ElevatorEntityWrapper,\n EntityWrapper,\n PartitionEntityWrapper,\n RoleEntityWrapper,\n ScheduleEntityWrapper,\n SystemConfigurationEntityWrapper,\n UnitEntityWrapper,\n UserEntityWrapper,\n UserGroupEntityWrapper,\n VisitorEntityWrapper,\n ZoneEntityWrapper,\n MacroEntityWrapper,\n LprUnitEntityWrapper,\n PatrollerEntityWrapper,\n HotlistEntityWrapper,\n UserTaskEntityWrapper,\n IntrusionAreaEntityWrapper,\n IntrusionUnitEntityWrapper,\n ServerEntityWrapper,\n VideoUnitEntityWrapper,\n FileEntityWrapper,\n ThreatLevelEntityWrapper,\n StreamEntityWrapper,\n NetworkEntityWrapper,\n AgentEntityWrapper,\n RouteEntityWrapper,\n SequenceEntityWrapper,\n TilePluginEntityWrapper,\n TransferGroupEntityWrapper,\n CustomEntityWrapper,\n TileLayoutEntityWrapper,\n DoorTemplateEntityWrapper,\n PrivilegedEntityWrapper,\n DoorAccessPointEntityWrapper,\n InputDeviceEntityWrapper,\n ContentFileEntityWrapper,\n LocatableEntityWrapper,\n AuthenticationRoleEntityWrapper,\n FederationBaseRoleEntityWrapper,\n PluginRoleEntityWrapper,\n AccessControlUnitEntityWrapper,\n AccessManagerRoleEntityWrapper,\n AreaAccessPointEntityWrapper,\n DoorSideAccessPointEntityWrapper,\n MobileApplicationEntityWrapper,\n IntrusionInputDeviceEntityWrapper,\n OutputDeviceEntityWrapper,\n LicensePlateManagerRoleEntityWrapper,\n ActiveDirectoryRoleEntityWrapper,\n AdfsRoleEntityWrapper,\n DirectoryFailoverRoleEntityWrapper,\n HealthMonitoringRoleEntityWrapper,\n IncidentManagementRoleEntityWrapper,\n MapManagerRoleEntityWrapper,\n MediaGatewayRoleEntityWrapper,\n OmnicastFederationRoleEntityWrapper,\n PointOfSaleRoleEntityWrapper,\n ReverseTunnelClientRoleEntityWrapper,\n ReverseTunnelServerRoleEntityWrapper,\n SecurityCenterFederationRoleEntityWrapper,\n WebClientRoleEntityWrapper,\n ZoneManagementRoleEntityWrapper,\n ArchiverAgentEntityWrapper,\n AuxiliaryArchiverRoleEntityWrapper,\n ArchiverRoleEntityWrapper, MediaRouterRoleEntityWrapper\n} from \"./EntityWrapper\";\nimport { MapEntity } from \"RestClient/Client/Model/MapEntity\";\nimport { AccessControlUnitEntity } from \"RestClient/Client/Model/AccessControl/AccessControlUnitEntity\";\nimport { DoorEntity } from \"RestClient/Client/Model/AccessControl/DoorEntity\";\nimport { AccessPointRuleEntity } from \"RestClient/Client/Model/AccessControl/AccessPointRuleEntity\";\nimport { AlarmEntity } from \"RestClient/Client/Model/AlarmEntity\";\nimport { ApplicationEntity } from \"RestClient/Client/Model/Application/ApplicationEntity\";\nimport { AreaEntity } from \"RestClient/Client/Model/AreaEntity\";\nimport { CameraEntity } from \"RestClient/Client/Model/Video/CameraEntity\";\nimport { CardholderEntity } from \"RestClient/Client/Model/AccessControl/CardholderEntity\";\nimport { CardholderGroupEntity } from \"RestClient/Client/Model/AccessControl/CardholderGroupEntity\";\nimport { CredentialEntity } from \"RestClient/Client/Model/AccessControl/CredentialEntity\";\nimport { DeviceEntity } from \"RestClient/Client/Model/Devices/DeviceEntity\";\nimport { ElevatorEntity } from \"RestClient/Client/Model/AccessControl/ElevatorEntity\";\nimport { RoleEntity } from \"RestClient/Client/Model/Roles/RoleEntity\";\nimport { PartitionEntity } from \"RestClient/Client/Model/PartitionEntity\";\nimport { SystemConfigurationEntity } from \"RestClient/Client/Model/SystemConfigurationEntity\";\nimport { ScheduleEntity } from \"RestClient/Client/Model/ScheduleEntity\";\nimport { UnitEntity } from \"RestClient/Client/Model/UnitEntity\";\nimport { UserEntity } from \"RestClient/Client/Model/UserEntity\";\nimport { UserGroupEntity } from \"RestClient/Client/Model/UserGroupEntity\";\nimport { VisitorEntity } from \"RestClient/Client/Model/AccessControl/VisitorEntity\";\nimport { ZoneEntity } from \"RestClient/Client/Model/AccessControl/ZoneEntity\";\nimport { MacroEntity } from \"RestClient/Client/Model/MacroEntity\";\nimport { LprUnitEntity } from \"RestClient/Client/Model/LicensePlateRecognition/LprUnitEntity\";\nimport { PatrollerEntity } from \"RestClient/Client/Model/LicensePlateRecognition/LprPatrollerEntity\";\nimport { UserTaskEntity } from \"RestClient/Client/Model/UserTaskEntity\";\nimport { IntrusionAreaEntity } from \"RestClient/Client/Model/Intrusion/IntrusionAreaEntity\";\nimport { IntrusionUnitEntity } from \"RestClient/Client/Model/Intrusion/IntrusionUnitEntity\";\nimport { ServerEntity } from \"RestClient/Client/Model/ServerEntity\";\nimport { VideoUnitEntity } from \"RestClient/Client/Model/Video/VideoUnitEntity\";\nimport { FileEntity } from \"RestClient/Client/Model/FileEntity\";\nimport { ThreatLevelEntity } from \"RestClient/Client/Model/ThreatLevelEntity\";\nimport { StreamEntity } from \"RestClient/Client/Model/Video/StreamEntity\";\nimport { NetworkEntity } from \"RestClient/Client/Model/NetworkEntity\";\nimport { AgentEntity } from \"RestClient/Client/Model/AgentEntity\";\nimport { RouteEntity } from \"RestClient/Client/Model/RouteEntity\";\nimport { HotlistEntity } from \"RestClient/Client/Model/LicensePlateRecognition/HotlistEntity\";\nimport { SequenceEntity } from \"RestClient/Client/Model/Video/SequenceEntity\";\nimport { TilePluginEntity } from \"RestClient/Client/Model/TilePluginEntity\";\nimport { TransferGroupEntity } from \"RestClient/Client/Model/Video/TransferGroupEntity\";\nimport { CustomEntity } from \"RestClient/Client/Model/CustomEntity\";\nimport { TileLayoutEntity } from \"RestClient/Client/Model/TileLayoutEntity\";\nimport { DoorTemplateEntity } from \"RestClient/Client/Model/AccessControl/DoorTemplateEntity\";\nimport { Entity } from \"RestClient/Client/Model/Entity\";\nimport { PrivilegedEntity } from \"RestClient/Client/Model/PrivilegedEntity\";\nimport { AccessManagerRoleEntity } from \"RestClient/Client/Model/AccessControl/AccessManagerRoleEntity\";\nimport { AccessPointEntity } from \"RestClient/Client/Model/AccessControl/AccessPointEntity\";\nimport { AreaAccessPointEntity } from \"RestClient/Client/Model/AccessControl/AreaAccessPointEntity\";\nimport { DoorAccessPointEntity } from \"RestClient/Client/Model/AccessControl/DoorAccessPointEntity\";\nimport { DoorSideAccessPointEntity } from \"RestClient/Client/Model/AccessControl/DoorSideAccessPointEntity\";\nimport { MobileApplicationEntity } from \"RestClient/Client/Model/Application/MobileApplicationEntity\";\nimport { InputDeviceEntity } from \"RestClient/Client/Model/Devices/InputDeviceEntity\";\nimport { IntrusionInputDeviceEntity } from \"RestClient/Client/Model/Devices/IntrusionInputDeviceEntity\";\nimport { OutputDeviceEntity } from \"RestClient/Client/Model/Devices/OutputDeviceEntity\";\nimport { ContentFileEntity } from \"RestClient/Client/Model/LicensePlateRecognition/ContentFileEntity\";\nimport { LicensePlateManagerRoleEntity } from \"RestClient/Client/Model/LicensePlateRecognition/LicensePlateManagerRole\";\nimport { ActiveDirectoryRoleEntity } from \"RestClient/Client/Model/Roles/ActiveDirectoryRoleEntity\";\nimport { AdfsRoleEntity } from \"RestClient/Client/Model/Roles/AdfsRoleEntity\";\nimport { AuthenticationRoleEntity } from \"RestClient/Client/Model/Roles/AuthenticationRoleEntity\";\nimport { DirectoryFailoverRoleEntity } from \"RestClient/Client/Model/Roles/DirectoryFailOverRoleEntity\";\nimport { FederationBaseRoleEntity } from \"RestClient/Client/Model/Roles/FederationBaseRoleEntity\";\nimport { HealthMonitoringRoleEntity } from \"RestClient/Client/Model/Roles/HealthMonitoringRoleEntity\";\nimport { IncidentManagementRoleEntity } from \"RestClient/Client/Model/Roles/IncidentManagementRoleEntity\";\nimport { MapManagerRoleEntity } from \"RestClient/Client/Model/Roles/MapManagerRoleEntity\";\nimport { MediaGatewayRoleEntity } from \"RestClient/Client/Model/Roles/MediaGatewayRoleEntity\";\nimport { OmnicastFederationRoleEntity } from \"RestClient/Client/Model/Roles/OmnicastFederationRoleEntity\";\nimport { PluginRoleEntity } from \"RestClient/Client/Model/Roles/PluginRoleEntity\";\nimport { PointOfSaleRoleEntity } from \"RestClient/Client/Model/Roles/PointOfSaleRoleEntity\";\nimport { ReverseTunnelClientRoleEntity } from \"RestClient/Client/Model/Roles/ReverseTunnelClientRoleEntity\";\nimport { ReverseTunnelServerRoleEntity } from \"RestClient/Client/Model/Roles/ReverseTunnelServerRoleEntity\";\nimport { SecurityCenterFederationRoleEntity } from \"RestClient/Client/Model/Roles/SecurityCenterFederationRoleEntity\";\nimport { WebClientRoleEntity } from \"RestClient/Client/Model/Roles/WebClientRoleEntity\";\nimport { ZoneManagementRoleEntity } from \"RestClient/Client/Model/Roles/ZoneManagementRoleEntity\";\nimport { ArchiverAgentEntity } from \"RestClient/Client/Model/Video/ArchiverAgentEntity\";\nimport { ArchiverRoleEntity } from \"RestClient/Client/Model/Video/ArchiverRoleEntity\";\nimport { AuxiliaryArchiverRoleEntity } from \"RestClient/Client/Model/Video/AuxiliaryArchiverRoleEntity\";\nimport { MediaRouterRoleEntity } from \"RestClient/Client/Model/Video/MediaRouterRoleEntity\";\nimport { LocatableEntity } from \"RestClient/Client/Model/LocatableEntity\";\n\nexport class WrapperFactory {\n public static initialize(): void {\n try {\n // Access Control\n Object.setPrototypeOf(AccessControlUnitEntity.prototype, UnitEntityWrapper.prototype);\n Object.setPrototypeOf(AccessManagerRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(AccessPointEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(AccessPointRuleEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(AreaAccessPointEntity.prototype, AccessPointEntityWrapper.prototype);\n Object.setPrototypeOf(CardholderEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(CardholderGroupEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(CredentialEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(DoorAccessPointEntity.prototype, AccessPointEntityWrapper.prototype);\n Object.setPrototypeOf(DoorEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(DoorSideAccessPointEntity.prototype, DoorAccessPointEntityWrapper.prototype);\n Object.setPrototypeOf(DoorTemplateEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(ElevatorEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(VisitorEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(ZoneEntity.prototype, EntityWrapper.prototype);\n\n // Application\n Object.setPrototypeOf(ApplicationEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(MobileApplicationEntity.prototype, ApplicationEntityWrapper.prototype);\n\n // Devices\n Object.setPrototypeOf(DeviceEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(InputDeviceEntity.prototype, DeviceEntityWrapper.prototype);\n Object.setPrototypeOf(IntrusionInputDeviceEntity.prototype, InputDeviceEntityWrapper.prototype);\n Object.setPrototypeOf(OutputDeviceEntity.prototype, DeviceEntityWrapper.prototype);\n\n // Intrusion\n Object.setPrototypeOf(IntrusionAreaEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(IntrusionUnitEntity.prototype, UnitEntityWrapper.prototype);\n\n // LPR\n Object.setPrototypeOf(ContentFileEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(HotlistEntity.prototype, ContentFileEntityWrapper.prototype);\n Object.setPrototypeOf(LicensePlateManagerRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(PatrollerEntity.prototype, LocatableEntityWrapper.prototype);\n Object.setPrototypeOf(LprUnitEntity.prototype, UnitEntityWrapper.prototype);\n\n // Roles\n Object.setPrototypeOf(ActiveDirectoryRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(AdfsRoleEntity.prototype, AuthenticationRoleEntityWrapper.prototype);\n Object.setPrototypeOf(AuthenticationRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(DirectoryFailoverRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(FederationBaseRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(HealthMonitoringRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(IncidentManagementRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(MapManagerRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(MediaGatewayRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(OmnicastFederationRoleEntity.prototype, FederationBaseRoleEntityWrapper.prototype);\n Object.setPrototypeOf(PluginRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(PointOfSaleRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(ReverseTunnelClientRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(ReverseTunnelServerRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(RoleEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(SecurityCenterFederationRoleEntity.prototype, FederationBaseRoleEntityWrapper.prototype);\n Object.setPrototypeOf(WebClientRoleEntity.prototype, PluginRoleEntityWrapper.prototype);\n Object.setPrototypeOf(ZoneManagementRoleEntity.prototype, RoleEntityWrapper.prototype);\n\n // Video\n Object.setPrototypeOf(ArchiverAgentEntity.prototype, AgentEntityWrapper.prototype);\n Object.setPrototypeOf(ArchiverRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(AuxiliaryArchiverRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(CameraEntity.prototype, LocatableEntityWrapper.prototype);\n Object.setPrototypeOf(MediaRouterRoleEntity.prototype, RoleEntityWrapper.prototype);\n Object.setPrototypeOf(SequenceEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(StreamEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(TransferGroupEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(VideoUnitEntity.prototype, UnitEntityWrapper.prototype);\n\n // Generic\n Object.setPrototypeOf(AgentEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(AlarmEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(AreaEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(CustomEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(FileEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(LocatableEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(MacroEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(MapEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(NetworkEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(PartitionEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(PrivilegedEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(RouteEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(ScheduleEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(ServerEntity.prototype, LocatableEntityWrapper.prototype);\n Object.setPrototypeOf(SystemConfigurationEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(ThreatLevelEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(TileLayoutEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(TilePluginEntity.prototype, EntityWrapper.prototype);\n Object.setPrototypeOf(UnitEntity.prototype, LocatableEntityWrapper.prototype);\n Object.setPrototypeOf(UserEntity.prototype, PrivilegedEntityWrapper.prototype);\n Object.setPrototypeOf(UserGroupEntity.prototype, PrivilegedEntityWrapper.prototype);\n Object.setPrototypeOf(UserTaskEntity.prototype, EntityWrapper.prototype);\n } catch (e) {\n console.error(e as string);\n }\n }\n\n public static wrap(entity: IEntity): U {\n switch (entity.constructor) {\n case AccessControlUnitEntity:\n Object.setPrototypeOf(entity, AccessControlUnitEntityWrapper.prototype);\n break;\n case AccessManagerRoleEntity:\n Object.setPrototypeOf(entity, AccessManagerRoleEntityWrapper.prototype);\n break;\n case AccessPointEntity:\n Object.setPrototypeOf(entity, AccessPointEntityWrapper.prototype);\n break;\n case AccessPointRuleEntity:\n Object.setPrototypeOf(entity, AccessPointRuleEntityWrapper.prototype);\n break;\n case AreaAccessPointEntity:\n Object.setPrototypeOf(entity, AreaAccessPointEntityWrapper.prototype);\n break;\n case CardholderEntity:\n Object.setPrototypeOf(entity, CardholderEntityWrapper.prototype);\n break;\n case CardholderGroupEntity:\n Object.setPrototypeOf(entity, CardholderGroupEntityWrapper.prototype);\n break;\n case CredentialEntity:\n Object.setPrototypeOf(entity, CredentialEntityWrapper.prototype);\n break;\n case DoorAccessPointEntity:\n Object.setPrototypeOf(entity, DoorAccessPointEntityWrapper.prototype);\n break;\n case DoorEntity:\n Object.setPrototypeOf(entity, DoorEntityWrapper.prototype);\n break;\n case DoorSideAccessPointEntity:\n Object.setPrototypeOf(entity, DoorSideAccessPointEntityWrapper.prototype);\n break;\n case DoorTemplateEntity:\n Object.setPrototypeOf(entity, DoorTemplateEntityWrapper.prototype);\n break;\n case ElevatorEntity:\n Object.setPrototypeOf(entity, ElevatorEntityWrapper.prototype);\n break;\n case VisitorEntity:\n Object.setPrototypeOf(entity, VisitorEntityWrapper.prototype);\n break;\n case ZoneEntity:\n Object.setPrototypeOf(entity, ZoneEntityWrapper.prototype);\n break;\n case ApplicationEntity:\n Object.setPrototypeOf(entity, ApplicationEntityWrapper.prototype);\n break;\n case MobileApplicationEntity:\n Object.setPrototypeOf(entity, MobileApplicationEntityWrapper.prototype);\n break;\n case DeviceEntity:\n Object.setPrototypeOf(entity, DeviceEntityWrapper.prototype);\n break;\n case InputDeviceEntity:\n Object.setPrototypeOf(entity, InputDeviceEntityWrapper.prototype);\n break;\n case IntrusionInputDeviceEntity:\n Object.setPrototypeOf(entity, IntrusionInputDeviceEntityWrapper.prototype);\n break;\n case OutputDeviceEntity:\n Object.setPrototypeOf(entity, OutputDeviceEntityWrapper.prototype);\n break;\n case IntrusionAreaEntity:\n Object.setPrototypeOf(entity, IntrusionAreaEntityWrapper.prototype);\n break;\n case IntrusionUnitEntity:\n Object.setPrototypeOf(entity, IntrusionUnitEntityWrapper.prototype);\n break;\n case ContentFileEntity:\n Object.setPrototypeOf(entity, ContentFileEntityWrapper.prototype);\n break;\n case HotlistEntity:\n Object.setPrototypeOf(entity, HotlistEntityWrapper.prototype);\n break;\n case LicensePlateManagerRoleEntity:\n Object.setPrototypeOf(entity, LicensePlateManagerRoleEntityWrapper.prototype);\n break;\n case PatrollerEntity:\n Object.setPrototypeOf(entity, PatrollerEntityWrapper.prototype);\n break;\n case LprUnitEntity:\n Object.setPrototypeOf(entity, LprUnitEntityWrapper.prototype);\n break;\n case ActiveDirectoryRoleEntity:\n Object.setPrototypeOf(entity, ActiveDirectoryRoleEntityWrapper.prototype);\n break;\n case AdfsRoleEntity:\n Object.setPrototypeOf(entity, AdfsRoleEntityWrapper.prototype);\n break;\n case AuthenticationRoleEntity:\n Object.setPrototypeOf(entity, AuthenticationRoleEntityWrapper.prototype);\n break;\n case DirectoryFailoverRoleEntity:\n Object.setPrototypeOf(entity, DirectoryFailoverRoleEntityWrapper.prototype);\n break;\n case FederationBaseRoleEntity:\n Object.setPrototypeOf(entity, FederationBaseRoleEntityWrapper.prototype);\n break;\n case HealthMonitoringRoleEntity:\n Object.setPrototypeOf(entity, HealthMonitoringRoleEntityWrapper.prototype);\n break;\n case IncidentManagementRoleEntity:\n Object.setPrototypeOf(entity, IncidentManagementRoleEntityWrapper.prototype);\n break;\n case MapManagerRoleEntity:\n Object.setPrototypeOf(entity, MapManagerRoleEntityWrapper.prototype);\n break;\n case MediaGatewayRoleEntity:\n Object.setPrototypeOf(entity, MediaGatewayRoleEntityWrapper.prototype);\n break;\n case OmnicastFederationRoleEntity:\n Object.setPrototypeOf(entity, OmnicastFederationRoleEntityWrapper.prototype);\n break;\n case PluginRoleEntity:\n Object.setPrototypeOf(entity, PluginRoleEntityWrapper.prototype);\n break;\n case PointOfSaleRoleEntity:\n Object.setPrototypeOf(entity, PointOfSaleRoleEntityWrapper.prototype);\n break;\n case ReverseTunnelClientRoleEntity:\n Object.setPrototypeOf(entity, ReverseTunnelClientRoleEntityWrapper.prototype);\n break;\n case ReverseTunnelServerRoleEntity:\n Object.setPrototypeOf(entity, ReverseTunnelServerRoleEntityWrapper.prototype);\n break;\n case RoleEntity:\n Object.setPrototypeOf(entity, RoleEntityWrapper.prototype);\n break;\n case SecurityCenterFederationRoleEntity:\n Object.setPrototypeOf(entity, SecurityCenterFederationRoleEntityWrapper.prototype);\n break;\n case WebClientRoleEntity:\n Object.setPrototypeOf(entity, WebClientRoleEntityWrapper.prototype);\n break;\n case ZoneManagementRoleEntity:\n Object.setPrototypeOf(entity, ZoneManagementRoleEntityWrapper.prototype);\n break;\n case ArchiverAgentEntity:\n Object.setPrototypeOf(entity, ArchiverAgentEntityWrapper.prototype);\n break;\n case ArchiverRoleEntity:\n Object.setPrototypeOf(entity, ArchiverRoleEntityWrapper.prototype);\n break;\n case AuxiliaryArchiverRoleEntity:\n Object.setPrototypeOf(entity, AuxiliaryArchiverRoleEntityWrapper.prototype);\n break;\n case CameraEntity:\n Object.setPrototypeOf(entity, CameraEntityWrapper.prototype);\n break;\n case MediaRouterRoleEntity:\n Object.setPrototypeOf(entity, MediaRouterRoleEntityWrapper.prototype);\n break;\n case SequenceEntity:\n Object.setPrototypeOf(entity, SequenceEntityWrapper.prototype);\n break;\n case StreamEntity:\n Object.setPrototypeOf(entity, StreamEntityWrapper.prototype);\n break;\n case TransferGroupEntity:\n Object.setPrototypeOf(entity, TransferGroupEntityWrapper.prototype);\n break;\n case AgentEntity:\n Object.setPrototypeOf(entity, AgentEntityWrapper.prototype);\n break;\n case AlarmEntity:\n Object.setPrototypeOf(entity, AlarmEntityWrapper.prototype);\n break;\n case AreaEntity:\n Object.setPrototypeOf(entity, AreaEntityWrapper.prototype);\n break;\n case CustomEntity:\n Object.setPrototypeOf(entity, CustomEntityWrapper.prototype);\n break;\n case FileEntity:\n Object.setPrototypeOf(entity, FileEntityWrapper.prototype);\n break;\n case LocatableEntity:\n Object.setPrototypeOf(entity, LocatableEntityWrapper.prototype);\n break;\n case MacroEntity:\n Object.setPrototypeOf(entity, MacroEntityWrapper.prototype);\n break;\n case MapEntity:\n Object.setPrototypeOf(entity, MapEntityWrapper.prototype);\n break;\n case NetworkEntity:\n Object.setPrototypeOf(entity, NetworkEntityWrapper.prototype);\n break;\n case PartitionEntity:\n Object.setPrototypeOf(entity, PartitionEntityWrapper.prototype);\n break;\n case PrivilegedEntity:\n Object.setPrototypeOf(entity, PrivilegedEntityWrapper.prototype);\n break;\n case RouteEntity:\n Object.setPrototypeOf(entity, RouteEntityWrapper.prototype);\n break;\n case ScheduleEntity:\n Object.setPrototypeOf(entity, ScheduleEntityWrapper.prototype);\n break;\n case ServerEntity:\n Object.setPrototypeOf(entity, ServerEntityWrapper.prototype);\n break;\n case SystemConfigurationEntity:\n Object.setPrototypeOf(entity, SystemConfigurationEntityWrapper.prototype);\n break;\n case ThreatLevelEntity:\n Object.setPrototypeOf(entity, ThreatLevelEntityWrapper.prototype);\n break;\n case TileLayoutEntity:\n Object.setPrototypeOf(entity, TileLayoutEntityWrapper.prototype);\n break;\n case TilePluginEntity:\n Object.setPrototypeOf(entity, TilePluginEntityWrapper.prototype);\n break;\n case UnitEntity:\n Object.setPrototypeOf(entity, UnitEntityWrapper.prototype);\n break;\n case UserEntity:\n Object.setPrototypeOf(entity, UserEntityWrapper.prototype);\n break;\n case UserGroupEntity:\n Object.setPrototypeOf(entity, UserGroupEntityWrapper.prototype);\n break;\n case UserTaskEntity:\n Object.setPrototypeOf(entity, UserTaskEntityWrapper.prototype);\n break;\n }\n\n return entity as U;\n }\n}\n","import { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { LogonInfo } from 'RestClient/Client/Parameters/LogonInfo';\nimport { RestResponse } from 'RestClient/Connection/RestResponse';\nimport { CancellationToken } from 'RestClient/Helpers/Helpers';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { RestConnection } from 'RestClient/Connection/RestConnection';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { UserTokenData } from 'RestClient/Client/Parameters/UserTokenData';\nimport { LogSeverity } from 'RestClient/Client/Enumerations/LogSeverity';\nimport { WebAppConfig, IWebAppConfig } from './Model/WebAppRoleconfig';\nimport { LicenseDetails } from './LicenseDetails';\nimport { Globals as WebAppGlobals } from './Globals';\nimport { WebAppConnection } from './WebAppConnection';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IVersionInfo } from \"../../genetec-webapp-clientapp/src/app/modules/shared/api/api\";\nimport { WrapperFactory } from \"./RestWrappers/WrapperFactory\";\nimport { ISecurityCenterClient } from \"RestClient/Client/Interface/ISecurityCenterClient\";\nimport { Entity } from \"RestClient/Client/Model/Entity\";\n\nexport class WebAppRegistrationInfo {\n public uniqueId = '';\n public machineName = '';\n public language = 'en';\n public machineId = SafeGuid.newGuid().toString();\n\n constructor(uniqueId: string) {\n this.uniqueId = uniqueId;\n }\n}\n\nexport class TokenIdentityClaims {\n public userId = '';\n public userName = '';\n public grantedPrivileges: Set = new Set();\n public expiration: Date = new Date();\n}\n\nexport class UserTokenDataWithClaims extends UserTokenData {\n public claims: TokenIdentityClaims | undefined;\n}\n\nexport class WebAppClient extends SecurityCenterClient implements ISecurityCenterClient{\n // #region Fields\n private _applicationId = SafeGuid.EMPTY;\n private _roleId = SafeGuid.EMPTY;\n private _serverId = SafeGuid.EMPTY;\n private _userId = SafeGuid.EMPTY;\n private _userLogonLanguage = '';\n private _registrationFailReason = '';\n private _registrationFailResponse = '';\n private _roleConfig: IWebAppConfig | undefined = undefined;\n private _licenseDetails: LicenseDetails | undefined = undefined;\n private _grantedGlobalPrivileges: Set | undefined;\n private _afterLogonCallbacks: (() => Promise)[] = [];\n private _postLogonFailResponse: IRestResponse | undefined;\n private _securityCenterVersion: IVersionInfo | null = null;\n\n // #endregion\n\n // #region Properties\n public get additionalHeaders(): Map {\n return this._additionalHeaders;\n }\n\n public get applicationId(): IGuid {\n return this._applicationId;\n }\n\n public get securityCenterVersion(): IVersionInfo | null {\n return this._securityCenterVersion;\n }\n\n public get roleId(): IGuid {\n return this._roleId;\n }\n\n public get serverId(): IGuid {\n return this._serverId;\n }\n\n public get userId(): IGuid {\n return this._userId;\n }\n\n /** Returns the language of the user immediately after logon. */\n public get userLogonLanguage(): string {\n return this._userLogonLanguage;\n }\n\n public get registrationFailReason(): string {\n return this._registrationFailReason;\n }\n\n public get registrationFailResponse(): string {\n return this._registrationFailResponse;\n }\n\n public get isWebSocket(): boolean {\n if (this._rest !== null) {\n return this._rest.isWebSocket;\n }\n return false;\n }\n\n public get roleConfig(): IWebAppConfig | undefined {\n return this._roleConfig;\n }\n\n public get license(): LicenseDetails | undefined {\n return this._licenseDetails;\n }\n\n public registrationInfo = new WebAppRegistrationInfo('');\n public enableWebSocket = true;\n public enableSSE = true;\n public windowsAuthentificationEnabled = false;\n\n // #endregion\n\n // #region Constructor\n\n constructor(registrationInfo: WebAppRegistrationInfo) {\n super();\n this.registrationInfo = registrationInfo;\n this.allowImpersonate = true;\n\n WrapperFactory.initialize();\n }\n\n // #endregion\n\n // #region Public methods public\n\n public createLocalEntity(classType: new () => U, id: IGuid): U {\n return WrapperFactory.wrap(super.createLocalEntity(classType, id));\n }\n\n public async logonAsync(logonInfo: LogonInfo, cancelToken?: CancellationToken): Promise {\n this._postLogonFailResponse = undefined;\n this.addAdditionalHeader(WebAppGlobals.webAppUniqueIdHeader, this.registrationInfo.uniqueId);\n const response = await super.logonAsync(logonInfo, cancelToken);\n if (response.statusCode === HttpStatusCode.OK) {\n if (this.applicationId.toString() === SafeGuid.EMPTY.toString()) {\n return new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR, this.registrationFailReason);\n }\n\n // sometimes errors only occurs when renewing the token, so advise when this happens\n if (this._postLogonFailResponse) {\n return this._postLogonFailResponse;\n }\n }\n return response;\n }\n\n public pauseConnectionAsync(): Promise | undefined {\n if (this._rest) {\n return this._rest.pauseConnectionAsync();\n }\n }\n\n public async logoffAsync(): Promise {\n try {\n await this._rest?.executeRequestAsync('POST', '/api/Session/Logoff', null);\n } catch (e) {\n // Catch...\n }\n await super.logoffAsync();\n }\n\n public async getIsAuthenticatedWithOpenIdAsync(): Promise {\n if (!this._rest) return Promise.resolve(false);\n const response = await this._rest.executeRequestAsync('GET', '/api/Session/IsAuthenticatedWithOpenId', null);\n return response?.body;\n }\n\n public isGlobalPrivilegeGranted(privilege: IGuid): boolean {\n if (!this._grantedGlobalPrivileges) {\n return false;\n }\n\n return this._grantedGlobalPrivileges.has(privilege.toString());\n }\n\n public async afterLogonOperationAsync(logonState: LogonState, cancelToken?: CancellationToken): Promise {\n this.addAdditionalHeader('WebAppSessionIdHeader', this.rest.streamerConnectionId);\n try {\n await this.fetchScVersion();\n await this.registerApplicationAsync(cancelToken);\n await this.initClientData();\n await this.renewTokenAsync();\n } catch (exception: any) {\n const response = exception.response as RestResponse;\n if (response) {\n this._postLogonFailResponse = response;\n }\n throw exception;\n }\n\n for (const callback of this._afterLogonCallbacks) {\n try {\n await callback();\n } catch (exception: any) {\n this.diagnosticManager?.sendTraceAsync(LogSeverity.Error, this.debugAppName, 'After logon callback error', exception);\n }\n }\n }\n\n public getAdvancedSetting(key: string, defaultValue: T): T {\n const value = this.roleConfig?.advancedSettings.firstOrDefault((item: { key: string }) => item.key.toLocaleLowerCase() === key.toLocaleLowerCase())?.value;\n if (value) {\n switch (typeof defaultValue) {\n case 'string':\n return value as T;\n case 'number':\n if (isNaN(new Number(value).valueOf())) {\n return defaultValue;\n }\n return new Number(value).valueOf() as T;\n case 'boolean':\n if (value.toLowerCase() === 'true') return true as T;\n if (value.toLowerCase() === 'false') return false as T;\n return defaultValue;\n }\n }\n\n return defaultValue;\n }\n\n // adds a callback to be called just before the app is considered logged on\n public addLogonInterceptCallback(callback: () => Promise): void {\n this._afterLogonCallbacks.push(callback);\n }\n\n // #endregion\n\n // #region Protected\n\n protected buildRestConnection(url: string, username: string | null, password: string | null, authToken: string | null): RestConnection {\n const validatedUrl = this.validateUrl(url);\n\n const newConnection = new WebAppConnection(this);\n newConnection.enableWebSocket = this.enableWebSocket;\n newConnection.enableSSE = this.enableSSE;\n newConnection.setupConnection(validatedUrl, username, password, authToken);\n\n if (this._rest != null) {\n newConnection.retryCount = this._rest.retryCount;\n newConnection.retryDelay = this._rest.retryDelay;\n }\n\n for (const [key, value] of this._additionalHeaders) {\n newConnection.addAdditionalHeader(key, value, false);\n }\n return newConnection;\n }\n\n protected readUserTokenData(response: RestResponse): UserTokenDataWithClaims {\n const result = new UserTokenDataWithClaims();\n result.token = response.body['Token'];\n result.validUntil = new Date(response.body['ValidUntil']);\n result.millisecondsValid = response.body['MillisecondsValid'];\n\n const claims = new TokenIdentityClaims();\n claims.expiration = response.body['Claims']['Expiration'];\n claims.grantedPrivileges = new Set(response.body['Claims']['GrantedPrivileges']);\n claims.userId = response.body['Claims']['UserId'];\n claims.userName = response.body['Claims']['UserName'];\n result.claims = claims;\n\n return result;\n }\n\n protected async applyTokenAsync(token: UserTokenData): Promise {\n await super.applyTokenAsync(token);\n\n if (token instanceof UserTokenDataWithClaims) {\n this._grantedGlobalPrivileges = token.claims?.grantedPrivileges;\n }\n }\n\n // #endregion\n\n // #region Private methods\n\n private async registerApplicationAsync(cancelToken?: CancellationToken) {\n const webAppConnection = this._rest as WebAppConnection;\n\n const payload = new FieldObject();\n payload.setField('UniqueId', this.registrationInfo.uniqueId);\n payload.setField('MachineName', this.registrationInfo.machineName);\n payload.setField('Language', this.registrationInfo.language);\n payload.setField('MachineId', this.registrationInfo.machineId);\n const registrationResult = await webAppConnection.streamer.getObjectInvokeOnStreamerAsync(FieldObject, 'RegisterApplication', payload.toJson());\n this._applicationId = registrationResult.getFieldGuid('ApplicationId');\n this._roleId = registrationResult.getFieldGuid('RoleId');\n this._serverId = registrationResult.getFieldGuid('ServerId');\n this._userId = registrationResult.getFieldGuid('UserId');\n this._userLogonLanguage = registrationResult.getField('UserLanguage');\n this._registrationFailReason = registrationResult.getField('RegistrationFailReason');\n this._registrationFailResponse = registrationResult.getField('RegistrationFailResponse');\n }\n\n // here we do 2 requests for all init data, one for the entities and one for the data itself,\n // we keep it inside the client for furthur usage\n private async initClientData() {\n this._roleConfig = await this.fetchRoleConfig();\n\n const systemConfig = (await this.getEntityAsync(SystemConfigurationEntity, Guids.SystemConfiguration)) as SystemConfigurationEntity;\n if (systemConfig) {\n const response = await systemConfig.getLicenseDetailsAsync();\n if (response) {\n this._licenseDetails = new LicenseDetails(response);\n }\n }\n }\n\n private async fetchRoleConfig(): Promise {\n const roleConfig = new WebAppConfig();\n // Call straight the role instead of Wrapper since the role entity might be not accessible\n const response = await this.rest.executeRequestAsync('GET', 'api/info/roleConfig', null);\n if (response.statusCode === HttpStatusCode.OK) {\n roleConfig.loadFields(response.body);\n }\n\n return roleConfig;\n }\n\n private async fetchScVersion() {\n const response = await this.rest.executeRequestAsync('GET', 'api/version/versionInfo', null);\n if (response.statusCode === HttpStatusCode.OK) {\n this._securityCenterVersion = response.body as IVersionInfo;\n }\n }\n\n // #endregion\n}\n","import { EventFilter } from '../Connection/EventFilter';\nimport * as Args from '../Connection/RestArgs';\nimport { RestConnection } from '../Connection/RestConnection';\nimport { ConnectionState } from '../Connection/Streamers/ConnectionState';\nimport * as Helpers from '../Helpers/Helpers';\nimport { LogonState, LogonStateChangedArgs } from './Args/LogonStateChangedArgs';\nimport { AlarmEntity } from './Model/AlarmEntity';\nimport { Entity } from './Model/Entity';\nimport { RestObject } from './Model/RestObject';\nimport { LogonInfo } from './Parameters/LogonInfo';\nimport { RestResponse, RestResponseError } from '../Connection/RestResponse';\nimport { IRestResponse } from '../Client/Interface/IRestResponse';\nimport { EntityQuery } from './Queries/EntityQuery';\nimport { FieldList } from '../Helpers/FieldList';\nimport { RestTransaction } from '../Connection/RestTransaction';\nimport { EntityTypes } from './Enumerations/EntityTypes';\nimport { SystemConfigurationEntity } from './Model/SystemConfigurationEntity';\nimport { Transaction } from './Transaction';\nimport { UserTokenData } from './Parameters/UserTokenData';\nimport { ApplicationType } from './Enumerations/ApplicationType';\nimport HttpStatusCode from './Enumerations/HttpStatusCode';\nimport { EntityCacheTask } from './Operations/EntityCacheTask';\nimport { ActionBase } from './Event/ActionBase';\nimport { FieldObject } from '../Helpers/FieldObject';\nimport { CurrentUserInfo } from './Parameters/CurrentUserInfo';\nimport { UserEntity } from './Model/UserEntity';\nimport { UserGroupEntity } from './Model/UserGroupEntity';\nimport { ServerEntity } from './Model/ServerEntity';\nimport { AreaEntity } from './Model/AreaEntity';\nimport { CameraEntity } from './Model/Video/CameraEntity';\nimport { RoleEntity } from './Model/Roles/RoleEntity';\nimport { AgentEntity } from './Model/AgentEntity';\nimport { ZoneEntity } from './Model/AccessControl/ZoneEntity';\nimport { TilePluginEntity } from './Model/TilePluginEntity';\nimport { ThreatLevelEntity } from './Model/ThreatLevelEntity';\nimport { ScheduleEntity } from './Model/ScheduleEntity';\nimport { PartitionEntity } from './Model/PartitionEntity';\nimport { RouteEntity } from './Model/RouteEntity';\nimport { NetworkEntity } from './Model/NetworkEntity';\nimport { MacroEntity } from './Model/MacroEntity';\nimport { IntrusionUnitEntity } from './Model/Intrusion/IntrusionUnitEntity';\nimport { IntrusionAreaEntity } from './Model/Intrusion/IntrusionAreaEntity';\nimport { DeviceEntity } from './Model/Devices/DeviceEntity';\nimport { CustomEntity } from './Model/CustomEntity';\nimport { ApplicationEntity } from './Model/Application/ApplicationEntity';\nimport { VideoUnitEntity } from './Model/Video/VideoUnitEntity';\nimport { TransferGroupEntity } from './Model/Video/TransferGroupEntity';\nimport { StreamEntity } from './Model/Video/StreamEntity';\nimport { SequenceEntity } from './Model/Video/SequenceEntity';\nimport { TileLayoutEntity } from './Model/TileLayoutEntity';\nimport { AccessControlUnitEntity } from './Model/AccessControl/AccessControlUnitEntity';\nimport { AccessPointEntity } from './Model/AccessControl/AccessPointEntity';\nimport { AccessPointRuleEntity } from './Model/AccessControl/AccessPointRuleEntity';\nimport { CardholderEntity } from './Model/AccessControl/CardholderEntity';\nimport { CardholderGroupEntity } from './Model/AccessControl/CardholderGroupEntity';\nimport { SecurityCache } from './Model/SecurityCache';\nimport { EventBase } from './Event/EventBase';\nimport { EventTypes } from './Enumerations/EventTypes';\nimport { AlarmTriggeredEvent } from './Event/AlarmTriggeredEvent';\nimport { AlarmAcknowledgedEvent } from './Event/AlarmAcknowledgedEvent';\nimport { AlarmInvestigatingEvent } from './Event/AlarmInvestigatingEvent';\nimport { AccessUnknownCredentialEvent } from './Event/AccessUnknownCredentialEvent';\nimport { AccessEvent } from './Event/AccessEvent';\nimport { ApplicationEvent } from './Event/ApplicationEvent';\nimport { CustomPayloadEvent } from './Event/CustomEvent';\nimport { LprReadEvent } from './Event/LprReadEvent';\nimport { LprHitEvent } from './Event/LprHitEvent';\nimport { UserEvent } from './Event/UserEvent';\nimport { BaseReport } from './Reports/BaseReport';\nimport { ReportResult } from './Reports/ReportResult';\nimport { DiagnosticManager } from './DiagnosticManager';\nimport { LogSeverity } from './Enumerations/LogSeverity';\nimport { Timer } from '../Helpers/Timer';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { EntityFields, IEntity } from './Interface/IEntity';\nimport { MultiEvent } from './Event/MultiEvent';\nimport { ModifiedIncidentEvent } from './Event/ModifiedIncidentEvent';\nimport { IRestObject } from './Interface/IRestObject';\nimport { IReportResult } from './Interface/IReportResult';\nimport { IEntityCacheTask } from './Interface/IEntityCacheTask';\nimport { ISecurityCenterClient } from './Interface/ISecurityCenterClient';\nimport { CardholderAntipassbackEvent } from './Event/CardholderAntipassbackEvent';\nimport { CardholderAntipassbackForgivenEvent } from './Event/CardholderAntipassbackForgivenEvent';\nimport { DoorEntity } from './Model/AccessControl/DoorEntity';\nimport { ITransaction } from './Interface/ITransaction';\nimport { CredentialEntity } from './Model/AccessControl/CredentialEntity';\nimport { CardholderAccessEvent } from './Event/CardholderAccessEvent';\nimport { CredentialStatusEvent } from './Event/CredentialStatusEvent';\nimport { AccessPointCredentialStatusEvent } from './Event/AccessPointCredentialStatusEvent';\nimport { RootEntitiesQuery } from './Queries/RootEntitiesPageQuery';\nimport { CardholderIdentityValidationEvent } from './Event/CardholderIdentityValidationEvent';\nimport { IdentityValidationEvent } from './Event/IdentityValidationEvent';\nimport { CardholderAccessGrantConfirmationRequestedEvent } from './Event/CardholderAccessGrantConfirmationRequestedEvent';\nimport { AccessGrantConfirmationRequestedEvent } from './Event/AccessGrantConfirmationRequestedEvent';\nimport { CancellationToken } from '../Helpers/Helpers';\nimport { Globals } from '../Globals';\nimport { Observable, Subject } from 'rxjs';\nimport { concatMap } from 'rxjs/operators';\n\nexport class SecurityCenterClient implements ISecurityCenterClient {\n // #region Fields\n\n public debugAppName = 'RestClient';\n public allowImpersonate = false;\n public connectStreamer = true;\n public defaultFields: FieldList;\n public applicationType = ApplicationType.IntegrationService;\n public tokenValidity = 0;\n public requestedPrivileges: Array = new Array();\n public supportWebSocket = true;\n public supportSSE = true;\n\n public eventsReceived$: Observable;\n\n protected _rest: RestConnection | null;\n protected _logonStateChangedDispatcher = new Helpers.EventDispatcher();\n protected _logonState = LogonState.LoggedOff;\n protected _logonCancellationToken: Helpers.CancellationToken | null = null;\n protected _additionalHeaders = new Map();\n protected _currentToken = '';\n protected _currentUserInfo: CurrentUserInfo | null = null;\n protected _wasLoggedOn = false;\n protected _entityTypeDic = new Map Entity>();\n protected _eventTypeDic = new Map any>();\n protected _tokenAppliedDispatcher = new Helpers.EventDispatcher();\n protected _entityInvalidatedDispatcher = new Helpers.EventDispatcher();\n protected _entityAddedDispatcher = new Helpers.EventDispatcher();\n protected _entityRemovedDispatcher = new Helpers.EventDispatcher();\n protected _actionDispatcher = new Helpers.EventDispatcher();\n protected _requestDispatcher = new Helpers.EventDispatcher();\n protected _diagnosticManager: DiagnosticManager;\n protected _timerTokenRenewal: Timer;\n protected _securityCache: SecurityCache = new SecurityCache();\n\n private eventsReceivedSubject$ = new Subject();\n private readonly renewTokenDelayBeforeEnd = 15 * 60 * 1000; // 15 min\n private disposing = false;\n\n // #endregion\n\n // #region Properties\n\n public get rest(): RestConnection {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n return this._rest;\n }\n\n public get currentLogonState(): LogonState {\n return this._logonState;\n }\n\n /**\n * Gets a buffered copy of the current user information class\n */\n public get currentUserInfo(): CurrentUserInfo | null {\n return this._currentUserInfo;\n }\n\n public get isLoggedOn(): boolean {\n if (this._logonState === LogonState.LoggedOn || this._logonState === LogonState.ReloggedOn) {\n return true;\n }\n return false;\n }\n\n public get diagnosticManager(): DiagnosticManager {\n return this._diagnosticManager;\n }\n\n // #endregion\n\n // #region Constructor, Dispose\n constructor() {\n this._rest = null;\n\n this._diagnosticManager = new DiagnosticManager(this);\n\n // Fill the entity type dictionary (toLowerCase()!!)\n this._entityTypeDic.set(EntityTypes.Alarms.toLowerCase(), AlarmEntity);\n this._entityTypeDic.set(EntityTypes.SystemConfigurations.toLowerCase(), SystemConfigurationEntity);\n this._entityTypeDic.set(EntityTypes.Users.toLowerCase(), UserEntity);\n this._entityTypeDic.set(EntityTypes.UserGroups.toLowerCase(), UserGroupEntity);\n this._entityTypeDic.set(EntityTypes.Servers.toLowerCase(), ServerEntity);\n this._entityTypeDic.set(EntityTypes.Areas.toLowerCase(), AreaEntity);\n this._entityTypeDic.set(EntityTypes.Cameras.toLowerCase(), CameraEntity);\n this._entityTypeDic.set(EntityTypes.Roles.toLowerCase(), RoleEntity);\n this._entityTypeDic.set(EntityTypes.Agents.toLowerCase(), AgentEntity);\n this._entityTypeDic.set(EntityTypes.Zones.toLowerCase(), ZoneEntity);\n this._entityTypeDic.set(EntityTypes.TilePlugins.toLowerCase(), TilePluginEntity);\n this._entityTypeDic.set(EntityTypes.ThreatLevels.toLowerCase(), ThreatLevelEntity);\n this._entityTypeDic.set(EntityTypes.Schedules.toLowerCase(), ScheduleEntity);\n this._entityTypeDic.set(EntityTypes.Routes.toLowerCase(), RouteEntity);\n this._entityTypeDic.set(EntityTypes.Partitions.toLowerCase(), PartitionEntity);\n this._entityTypeDic.set(EntityTypes.Networks.toLowerCase(), NetworkEntity);\n this._entityTypeDic.set(EntityTypes.Macros.toLowerCase(), MacroEntity);\n this._entityTypeDic.set(EntityTypes.IntrusionUnits.toLowerCase(), IntrusionUnitEntity);\n this._entityTypeDic.set(EntityTypes.IntrusionAreas.toLowerCase(), IntrusionAreaEntity);\n this._entityTypeDic.set(EntityTypes.Devices.toLowerCase(), DeviceEntity);\n this._entityTypeDic.set(EntityTypes.CustomEntities.toLowerCase(), CustomEntity);\n this._entityTypeDic.set(EntityTypes.Applications.toLowerCase(), ApplicationEntity);\n this._entityTypeDic.set(EntityTypes.VideoUnits.toLowerCase(), VideoUnitEntity);\n this._entityTypeDic.set(EntityTypes.TransferGroups.toLowerCase(), TransferGroupEntity);\n this._entityTypeDic.set(EntityTypes.Streams.toLowerCase(), StreamEntity);\n this._entityTypeDic.set(EntityTypes.Sequences.toLowerCase(), SequenceEntity);\n this._entityTypeDic.set(EntityTypes.TileLayouts.toLowerCase(), TileLayoutEntity);\n this._entityTypeDic.set(EntityTypes.Units.toLowerCase(), AccessControlUnitEntity);\n this._entityTypeDic.set(EntityTypes.Doors.toLowerCase(), DoorEntity);\n this._entityTypeDic.set(EntityTypes.AccessPoints.toLowerCase(), AccessPointEntity);\n this._entityTypeDic.set(EntityTypes.AccessRules.toLowerCase(), AccessPointRuleEntity);\n this._entityTypeDic.set(EntityTypes.Cardholders.toLowerCase(), CardholderEntity);\n this._entityTypeDic.set(EntityTypes.CardholderGroups.toLowerCase(), CardholderGroupEntity);\n this._entityTypeDic.set(EntityTypes.Credentials.toLowerCase(), CredentialEntity);\n\n this.registerEvents();\n\n this.defaultFields = new FieldList('id', 'name', 'entitytype'); // column to download by default in relations\n this._timerTokenRenewal = new Timer(() => this.onTimerRenewToken());\n\n this.eventsReceived$ = this.eventsReceivedSubject$.asObservable();\n }\n\n public async disposeAsync() {\n await this.logoffAsync();\n this._logonStateChangedDispatcher.clear();\n this._tokenAppliedDispatcher.clear();\n this._timerTokenRenewal.dispose();\n\n this.eventsReceivedSubject$.next();\n this.eventsReceivedSubject$.complete();\n }\n\n // #endregion\n\n // #region Public methods\n\n public async logonAsync(logonInfo: LogonInfo, cancelToken?: Helpers.CancellationToken): Promise {\n if (this._logonCancellationToken) {\n this._logonCancellationToken.cancelToken();\n }\n if (cancelToken) {\n this._logonCancellationToken = cancelToken;\n }\n\n await this.disposeRestConnectionAsync();\n this._rest = this.buildRestConnection(logonInfo.directory, null, null, logonInfo.authorizationHeader);\n this._currentToken = logonInfo.authorizationHeader;\n this._rest.appName = this.debugAppName;\n this._rest.allowImpersonate = this.allowImpersonate;\n\n this._rest.onEventReceived((arg) => this.onInternalEventReceived(arg));\n this._rest.onEntityInvalidated((arg) => this.onInternalEntityInvalidated(arg));\n this._rest.onEntityAdded((arg) => this.onInternalEntityAdded(arg));\n this._rest.onEntityRemoved((arg) => this.onInternalEntityRemoved(arg));\n this._rest.onConnectionStateChanged((arg) => this.onConnectionStateChanged(arg));\n this._rest.onActionReceived((arg) => this.onInternalActionReceived(arg));\n this._rest.onRequestReceived((arg) => this.onInternalRequestReceived(arg));\n this._rest.onDisconnectRequestReceived((arg) => this.onInternalDisconnectRequestReceived(arg));\n this._rest.onQueryReceived(() => this.onQueryReceived());\n this._diagnosticManager.newConnectionCreated();\n\n let response = await this._rest.waitForRestReadyAsync(this._logonCancellationToken);\n if (response.statusCode === HttpStatusCode.OK) {\n try {\n this._currentUserInfo = await this.getCurrentUserInfoAsync();\n } catch (exception: any) {\n const response = exception.response as RestResponse;\n if (response) {\n return response;\n }\n }\n\n if (this.connectStreamer === true) {\n response = await this._rest.startStreamerAsync(this._logonCancellationToken);\n }\n }\n this._logonCancellationToken = null;\n return response;\n }\n\n public async logoffAsync(): Promise {\n if (this._timerTokenRenewal != null) {\n this._timerTokenRenewal.change(-1);\n }\n if (this._rest != null) {\n this._rest.clearCurrentFitler();\n }\n return await this.disposeRestConnectionAsync();\n }\n\n public async changeExpiredPasswordAsync(url: string, username: string, oldPassword: string, newPassword: string, cancelToken?: CancellationToken): Promise {\n var newRest = this.buildRestConnection(url, username, oldPassword, null);\n\n if (this.debugAppName != null && this._rest != null) {\n this._rest.appName = this.debugAppName;\n }\n newRest.allowImpersonate = this.allowImpersonate;\n newRest.addAdditionalHeader(Globals.newAuthorizationHeader, RestConnection.buildBasicAuthorizationHeader(username, newPassword), false);\n let response: RestResponse;\n try {\n response = await newRest.executeRequestAsync('GET', '/v2/help', null, cancelToken);\n if (response.statusCode == HttpStatusCode.OK && this._rest != null) {\n this._rest.authorizationHeader = RestConnection.buildBasicAuthorizationHeader(username, newPassword);\n }\n } finally {\n void newRest.disposeAsync();\n }\n\n return response;\n }\n\n public buildEntityCache(fields?: string[], debounce?: number, maxDebouce?: number): IEntityCacheTask;\n public buildEntityCache(fields?: string, debounce?: number, maxDebouce?: number): IEntityCacheTask;\n public buildEntityCache(fields?: string | string[], debounce = 1000, maxDebouce = 10000): IEntityCacheTask {\n const downloadMask = fields ? fields.toString() : this.defaultFields.toString();\n return new EntityCacheTask(this, debounce, maxDebouce, downloadMask) as IEntityCacheTask;\n }\n\n public async setStreamerFilterAsync(filter: EventFilter): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n return await this._rest.setStreamerFilterAsync(filter);\n }\n\n public async addToStreamerFilterAsync(filter: EventFilter): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n return await this._rest.addToStreamerFilterAsync(filter);\n }\n\n public async removeFromStreamerFilterAsync(filterId: IGuid): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n const lst = SafeGuid.createSet();\n lst.add(filterId);\n return await this._rest.removeFromStreamerFilterAsync(lst);\n }\n\n public async removeFromStreamerFiltersAsync(filterIds: Set): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n return await this._rest.removeFromStreamerFilterAsync(filterIds);\n }\n\n public addAdditionalHeader(headerKey: string, headerValue: string, normalize = true) {\n const value = normalize === true ? RestConnection.normalizeValue(headerValue) : headerValue;\n this._additionalHeaders.set(headerKey, value);\n if (this._rest !== null) {\n this._rest.addAdditionalHeader(headerKey, value);\n }\n }\n\n public async getAsync(\n classType: new () => T,\n identifier?: string | null,\n transaction?: Transaction | null,\n token?: Helpers.CancellationToken | null,\n ): Promise {\n let objectUri = '';\n const ro = new classType();\n if (identifier === null || identifier === undefined) {\n objectUri = ro.baseUri + '?Fields=*';\n } else {\n objectUri = ro.baseUri + '/' + identifier + '?Fields=*';\n }\n\n if (!transaction) {\n if (ro.canGet === true) {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n const response = await this._rest.executeRequestAsync('GET', objectUri, null, new Helpers.CancellationToken());\n if (response.statusCode === HttpStatusCode.OK) {\n if (!response.body) {\n throw new Error('bodyObject is null');\n }\n ro.load(this, response.body);\n return ro as unknown as U;\n }\n throw new RestResponseError('getAsync failed', response);\n } else {\n ro.load(this, {});\n return ro as unknown as U;\n }\n } else {\n const responseHandler = (response: IRestResponse) => {\n if (response.statusCode === HttpStatusCode.OK) {\n if (!response.body) {\n throw new Error('bodyObject is null');\n }\n ro.load(this, response.body);\n return new Promise(function (resolve) {\n resolve(ro as unknown as U);\n });\n }\n return new Promise(function (resolve, reject) {\n reject();\n });\n };\n transaction.addTransactionOperation(objectUri, 'GET', null, responseHandler);\n return new Promise(function (resolve) {\n resolve(null as unknown as U);\n });\n }\n }\n\n public createLocalEntity(classType: new () => U, id: IGuid): U {\n const newEntity = this.createEntityModel(classType) as U;\n newEntity.setFieldGuid(EntityFields.idField, id);\n newEntity.load(this);\n return newEntity;\n }\n\n public async getEntityAsync(\n classType: new () => U,\n id: IGuid,\n transaction?: Transaction | null,\n token?: Helpers.CancellationToken | null,\n ...fields: string[]\n ): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n if (!transaction) {\n const transactionQuery = new EntityQuery();\n transactionQuery.guids.add(id);\n for (const arg of fields) {\n const fieldName = arg.toLowerCase().trim();\n transactionQuery.fields.add(fieldName);\n }\n\n const result = await this.getEntitiesAsync(classType, transactionQuery, transaction, token);\n if (result != null && result.length > 0) {\n return result[0] as unknown as U;\n }\n return null;\n }\n\n const responseHandler = (response: IRestResponse) => {\n if (response.statusCode === HttpStatusCode.OK) {\n if (!response.body) {\n throw new Error('bodyObject is null');\n }\n const scEntity = this.createEntityModel(classType, response.body);\n return new Promise(function (resolve) {\n resolve(scEntity);\n });\n }\n return new Promise(function (resolve, reject) {\n reject();\n });\n };\n\n let query = 'v2/entities/' + id;\n if (fields != null) {\n const fieldList = new FieldList(...fields);\n query += '?Fields=' + fieldList.toString();\n }\n transaction.addTransactionOperation(query, 'GET', null, responseHandler);\n return new Promise(function (resolve) {\n resolve(null);\n });\n }\n\n // TODO scale mode\n public async getEntitiesAsync(\n classType: new () => U,\n query: EntityQuery | RootEntitiesQuery,\n transaction?: Transaction | null,\n token?: Helpers.CancellationToken | null,\n ): Promise> {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n const queryString = query.buildQuery();\n\n if (!transaction) {\n const response = await this._rest.executeRequestAsync('GET', queryString, null, token);\n if (response.statusCode === HttpStatusCode.OK) {\n const result = this.buildQueryResult(classType, response);\n const arrayResult = new Array();\n for (const elem of result.values()) {\n arrayResult.push(elem as unknown as U);\n }\n return arrayResult;\n }\n throw new RestResponseError('getEntitiesAsync failed', response);\n } else {\n const responseHandler = (response: RestResponse) => {\n const result = this.buildQueryResult(classType, response);\n return new Promise>(function (resolve) {\n resolve(Array.from(result.values()));\n });\n };\n\n transaction.addTransactionOperation(queryString, 'GET', null, responseHandler);\n return new Array();\n }\n }\n\n public async queryAsync(classType: new () => T, query: BaseReport, token?: Helpers.CancellationToken | null): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n const queryString = query.buildQuery();\n let response: RestResponse | null = null;\n if (query.enableStreamedResponse) {\n response = await this._rest.getStreamedJsonAsync(queryString, 'GET', null, (x) => {\n const result = new classType();\n result.load(x);\n query.fireSubResult(result);\n // if (sendActivityReport) {\n // reportResult.Add(result);\n // }\n return;\n });\n if (response.statusCode === HttpStatusCode.OK) {\n // await HandleActityReportAsync(query, reportResult).ConfigureAwait(false);\n return new classType() as unknown as U;\n }\n } else {\n response = await this._rest.executeRequestAsync('GET', queryString, null, token);\n if (response.statusCode === HttpStatusCode.OK) {\n const result = new classType();\n result.load(response.body);\n // if (sendActivityReport) {\n // await HandleActityReportAsync(query, new List() { result }).ConfigureAwait(false);\n // }\n return result as unknown as U;\n }\n }\n if (response == null) {\n throw new Error('response is null');\n }\n throw new RestResponseError('queryAsync failed', response);\n }\n\n public async createAsync(entity?: IEntity, entities?: Set) {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n if (!entities) {\n entities = new Set();\n }\n\n if (entity) {\n entities.add(entity);\n }\n\n let transaction = new RestTransaction(this._rest);\n\n // Create them\n for (const e of entities) {\n const body = e.getCreateBody();\n if (body != null) {\n transaction.addTransactionOperation('v2/Entities', 'POST', body, e);\n }\n }\n\n const result = await transaction.executeTransactionAsync();\n if (result.statusCode !== HttpStatusCode.OK) {\n throw new Error(result.toString());\n }\n\n // Get their Id\n transaction = new RestTransaction(this._rest);\n const ids = new Set();\n for (const trans of result.transactionResult) {\n if (trans.result) {\n ids.add(trans.result['Id']);\n const restEntity = trans.context as IEntity;\n transaction.addTransactionOperation('v2/Entities/' + trans.result['Id'], 'GET', null, restEntity);\n }\n }\n\n // Load them back\n const result2 = await transaction.executeTransactionAsync();\n if (result2.statusCode !== HttpStatusCode.OK) {\n throw new Error(result2.toString());\n }\n for (const trans of result2.transactionResult) {\n if (trans.result) {\n const restEntity = trans.context as IEntity;\n restEntity.load(this, trans.result);\n restEntity.securityCache = this._securityCache;\n }\n }\n\n // Execute any pending operation\n transaction = new RestTransaction(this._rest);\n for (const e of entities) {\n e.addPendingOperation(transaction);\n }\n const result3 = await transaction.executeTransactionAsync();\n if (result3.statusCode !== HttpStatusCode.OK) {\n throw new Error(result3.toString());\n }\n\n this.resetDirty(entities);\n return ids;\n }\n\n public async updateAsync(entity?: IRestObject | null, entities?: Set | null, transaction?: ITransaction | null): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n if (!entities) {\n entities = new Set();\n }\n\n if (entity) {\n entities.add(entity);\n }\n\n let response = new RestResponse();\n\n if (!transaction || !transaction.restTransaction) {\n const t = new RestTransaction(this._rest);\n for (const e of entities) {\n const body = e.getUpdateBody();\n if (body != null) {\n t.addTransactionOperation(e.baseUri, 'PUT', body);\n }\n e.addPendingOperation(t);\n }\n response = await t.executeTransactionAsync();\n if (response.statusCode !== HttpStatusCode.OK) {\n throw new RestResponseError('updateAsync failed', response);\n }\n this.resetDirty(entities);\n } else {\n // already a transaction there\n for (const e of entities) {\n const responseHandler = (rep: IRestResponse) => {\n e.isDirty = false;\n return new Promise(function (resolve) {\n resolve(rep);\n });\n };\n\n let body = e.getUpdateBody();\n if (body == null) {\n body = {}; // because we want to reset the dirty\n }\n\n transaction.addTransactionOperation(e.baseUri, 'PUT', body, responseHandler);\n e.addPendingOperation(transaction.restTransaction);\n }\n response = new RestResponse(HttpStatusCode.OK);\n }\n return response;\n }\n\n public createEntityModel(classType: new () => T, config?: { [k: string]: any }): T | null {\n let instance: T;\n let entityType: string | undefined;\n if (config) {\n entityType = config[EntityFields.entityTypeField];\n }\n\n const isValidEntityType = typeof entityType === 'string';\n instance = this.createEntityClass(classType, isValidEntityType ? entityType : undefined);\n\n if (entityType && isValidEntityType && instance.hasField(EntityFields.entityTypeField) && instance.entityType.toLowerCase() !== entityType.toLowerCase()) {\n return null;\n }\n\n if (config) {\n instance.load(this, config);\n instance.securityCache = this._securityCache;\n }\n return instance;\n }\n\n public createTransaction(): Transaction {\n return new Transaction(this);\n }\n\n public async deleteAsync(id?: IGuid | null, ids?: Set | null, transaction?: Transaction | null): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n if (!ids) {\n ids = SafeGuid.createSet();\n }\n\n if (id) {\n ids.add(id);\n }\n\n let response = new RestResponse();\n\n if (!transaction) {\n const t = new RestTransaction(this._rest);\n for (const elem of ids) {\n t.addTransactionOperation('v2/Entities/' + elem, 'DELETE', null);\n }\n response = await t.executeTransactionAsync();\n if (response.statusCode !== HttpStatusCode.OK) {\n throw new RestResponseError('deleteAsync failed', response);\n }\n } else {\n // already a transaction there\n for (const elem of ids) {\n const responseHandler = (rep: RestResponse) => {\n return new Promise(function (resolve) {\n resolve(rep);\n });\n };\n transaction.addTransactionOperation('v2/Entities/' + elem, 'DELETE', null, responseHandler);\n }\n response.statusCode = HttpStatusCode.OK;\n }\n return response;\n }\n\n public async renewTokenAsync() {\n // -1 indicates that the server will put us a duration for us\n const toKenDuration = this.tokenValidity === 0 ? -1 : this.tokenValidity;\n const token = await this.getUserToken(this._currentToken, this.applicationType, this.requestedPrivileges, toKenDuration);\n await this.applyTokenAsync(token);\n }\n\n public async getUserToken(authentificationHeader: string, applicationType: string, privs: Array, duration: number): Promise {\n if (this._rest == null) {\n throw new Error('_rest is null');\n }\n\n const restConnection = this.buildRestConnection(this._rest.restServerUrl, null, null, authentificationHeader);\n\n restConnection.allowImpersonate = false; // make sure it is off\n restConnection.appName = this.debugAppName;\n\n let request = 'v2/Tokens/webtoken?ApplicationType=' + applicationType;\n if (privs != null && privs.length > 0) {\n let sb = '&Privileges=';\n let first = false;\n for (const priv of privs) {\n if (first === false) {\n sb += priv;\n } else {\n sb += ',' + priv;\n }\n first = true;\n }\n request += sb;\n }\n\n if (duration !== -1) {\n request += '&Duration=' + duration;\n }\n\n try {\n const response = await restConnection.executeRequestAsync('GET', request, null);\n if (response.statusCode === HttpStatusCode.OK) {\n if (!response.body) {\n throw new Error('body is null');\n }\n return this.readUserTokenData(response);\n }\n throw new RestResponseError('RenewToken fails', response);\n } finally {\n void restConnection.disposeAsync();\n }\n }\n\n protected readUserTokenData(response: RestResponse) {\n const result = new UserTokenData();\n result.token = response.body['Token'];\n result.validUntil = new Date(response.body['ValidUntil']);\n result.millisecondsValid = response.body['MillisecondsValid'];\n return result;\n }\n\n public async getCurrentUserInfoAsync(authentificationHeader?: string): Promise {\n let response: RestResponse;\n\n if (!this._rest) {\n throw new Error('Not Connected');\n }\n\n if (!authentificationHeader) {\n response = await this._rest.executeRequestAsync('GET', 'v2/Entities/users/currentuserinfo', null);\n } else {\n const body = new FieldObject();\n body.setField('authentification', authentificationHeader);\n response = await this._rest.executeRequestAsync('POST', 'v2/Entities/users/currentuserinfo', body.toString());\n }\n\n if (response.statusCode === HttpStatusCode.OK) {\n const result = new CurrentUserInfo();\n result.id = SafeGuid.parse(response.body.UserGuid.toLowerCase());\n result.directoryId = SafeGuid.parse(response.body.DirectoryGuid.toLowerCase());\n result.isAdministrator = response.body.IsAdministrator;\n result.name = response.body.UserName;\n return result;\n }\n throw new RestResponseError('getCurrentUserInfoAsync failed', response);\n }\n\n public registerAdditionalEventTypes(typeName: string, type: new () => any) {\n this._eventTypeDic.set(typeName, type);\n }\n\n // #endregion\n\n // #region Event handling methods\n\n public onLogonStateChanged(handler: Helpers.Handler) {\n return this._logonStateChangedDispatcher.subscribe(handler);\n }\n\n public onTokenApplied(handler: Helpers.Handler) {\n return this._tokenAppliedDispatcher.subscribe(handler);\n }\n\n public onEntityInvalidated(handler: Helpers.Handler) {\n return this._entityInvalidatedDispatcher.subscribe(handler);\n }\n\n public onEntityAdded(handler: Helpers.Handler) {\n return this._entityAddedDispatcher.subscribe(handler);\n }\n\n public onEntityRemoved(handler: Helpers.Handler) {\n return this._entityRemovedDispatcher.subscribe(handler);\n }\n\n public onEventReceived(handler: Helpers.Handler): () => void {\n const subscription = this.eventsReceived$.pipe(concatMap((events) => events)).subscribe((event) => handler(event));\n return () => subscription.unsubscribe();\n }\n\n public onActionReceived(handler: Helpers.Handler) {\n return this._actionDispatcher.subscribe(handler);\n }\n\n public onRequestReceived(handler: Helpers.Handler) {\n return this._requestDispatcher.subscribe(handler);\n }\n\n // #endregion\n\n // #region Protected\n\n protected async applyTokenAsync(token: UserTokenData): Promise {\n if (this._rest != null) {\n // only set the token if it is a valid one\n this._currentToken = token.getAuthentificationHeader();\n this._rest.authorizationHeader = this._currentToken;\n this.startValidityProcess(token.validUntil);\n await this.afterTokenAppliedAsync();\n this._tokenAppliedDispatcher.dispatch(token);\n }\n }\n\n protected afterTokenAppliedAsync(): Promise {\n return new Promise(function (resolve) {\n resolve();\n });\n }\n\n protected buildRestConnection(url: string, username: string | null, password: string | null, authToken: string | null): RestConnection {\n url = this.validateUrl(url);\n\n const newConnection = new RestConnection(this.supportWebSocket, this.supportSSE);\n newConnection.setupConnection(url, username, password, authToken);\n\n if (this._rest != null) {\n newConnection.retryCount = this._rest.retryCount;\n newConnection.retryDelay = this._rest.retryDelay;\n }\n\n for (const [key, value] of this._additionalHeaders) {\n newConnection.addAdditionalHeader(key, value, false);\n }\n return newConnection;\n }\n\n protected validateUrl(url: string): string {\n // Ensure we supports http (non-ssl)\n const dir = url.toLowerCase();\n if (!dir.startsWith('http://') && !dir.startsWith('https://')) {\n url = 'https://' + dir;\n }\n if (url.endsWith('/')) {\n url = url.slice(0, -1);\n }\n return url;\n }\n\n protected onInternalEventReceived(e: FieldObject) {\n if (e.hasField('ActionType')) {\n const action = new ActionBase(e);\n const e2 = new Args.ActionReceivedArg(e);\n this._actionDispatcher.dispatch(e2);\n } else {\n let evt: EventBase;\n if (this._eventTypeDic.has(e.getField('EventType'))) {\n const activator = this._eventTypeDic.get(e.getField('EventType'));\n if (!activator) {\n throw new Error('activator is undefined!');\n }\n evt = new activator();\n } else {\n evt = new EventBase();\n }\n evt.loadFrom(e);\n if (evt.eventType === 'MultiEvent') {\n const multiEvent = evt as MultiEvent;\n\n if (multiEvent) {\n this.fireMultiEvents(multiEvent);\n }\n\n return; // only send events inside the mutli event, not the multi event itself\n }\n\n const eventArg = new Args.EventReceivedArg(evt);\n this.eventsReceivedSubject$.next([eventArg]);\n }\n }\n\n protected onInternalActionReceived(e: FieldObject) {\n this._actionDispatcher.dispatch(new Args.ActionReceivedArg(e));\n }\n\n protected onInternalEntityInvalidated(obj: Args.EntityInvalidatedArg) {\n this._entityInvalidatedDispatcher.dispatch(obj);\n }\n\n protected onInternalEntityAdded(obj: Args.EntityAddedArg) {\n this._entityAddedDispatcher.dispatch(obj);\n }\n\n protected onInternalEntityRemoved(obj: Args.EntityRemovedArg) {\n this._entityRemovedDispatcher.dispatch(obj);\n }\n\n protected onConnectionStateChanged(e: Args.StateChangeArg) {\n try {\n if (e.state === ConnectionState.Connected) {\n this._wasLoggedOn = true;\n\n if (this.currentLogonState === LogonState.ReloggingOn) {\n this.fireLogonStateChange(new LogonStateChangedArgs(LogonState.ReloggedOn));\n } else {\n this.fireLogonStateChange(new LogonStateChangedArgs(LogonState.LoggedOn));\n }\n } else if (e.state === ConnectionState.Reconnecting) {\n this.fireLogonStateChange(new LogonStateChangedArgs(LogonState.ReloggingOn));\n } else if (e.state === ConnectionState.Disconnected) {\n if (this._wasLoggedOn) {\n this._wasLoggedOn = false;\n this._currentUserInfo = null;\n this.fireLogonStateChange(new LogonStateChangedArgs(LogonState.LoggedOff));\n }\n }\n } catch (e) {}\n }\n\n protected onInternalRequestReceived(arg: Args.RequestReceivedArg) {\n this._requestDispatcher.dispatch(arg);\n }\n\n protected async onInternalDisconnectRequestReceived(arg: Args.DisconnectRequestArgs): Promise {\n // Streamer would try to reconnect when the socket closes. Disposing the rest connection here assures\n // us the user will stay disconnected.\n if (!arg.tryToReconnect) {\n await this.disposeRestConnectionAsync();\n }\n }\n\n protected onQueryReceived() {}\n\n // #endregion\n\n // #region Private methods\n\n private createEntityClass(classType: new () => IEntity, entityType?: string): T {\n if (!classType) {\n classType = Entity;\n }\n\n let instance: IEntity | null = null;\n if (entityType) {\n const cleanedEntityType = entityType.toLowerCase().trim();\n const activator = this._entityTypeDic.get(cleanedEntityType);\n if (activator) {\n instance = new activator();\n }\n }\n\n if (!instance || !instance.isOfType(classType)) {\n if (classType === Entity) {\n instance = new Entity(entityType);\n } else {\n instance = new classType();\n }\n }\n\n return instance as T;\n }\n\n private fireLogonStateChange(state: LogonStateChangedArgs) {\n this._logonState = state.state;\n this._logonStateChangedDispatcher.dispatch(state);\n }\n\n private async disposeRestConnectionAsync() {\n if (this.disposing) return;\n\n this.disposing = true;\n\n if (this._timerTokenRenewal != null) {\n this._timerTokenRenewal.change(-1);\n }\n\n if (this._rest != null) {\n try {\n await this._rest.disposeAsync();\n } catch (e) {\n // ignore and continue\n }\n this._rest = null;\n }\n this._securityCache.clear();\n\n this.disposing = false;\n }\n\n private fireMultiEvents(multiEvent: MultiEvent) {\n const eventsReceived: Args.EventReceivedArg[] = [];\n multiEvent.events.forEach((event) => {\n let singleEvent: EventBase | undefined;\n if (this._eventTypeDic.has(event.EventType)) {\n const activator = this._eventTypeDic.get(event.EventType);\n if (activator) {\n singleEvent = new activator();\n if (singleEvent === undefined) {\n throw new Error('singleEvent === undefined');\n }\n }\n } else {\n singleEvent = new EventBase();\n }\n if (singleEvent !== undefined) {\n singleEvent.loadFields(event);\n eventsReceived.push(new Args.EventReceivedArg(singleEvent));\n }\n });\n\n if (eventsReceived.length > 0) {\n this.eventsReceivedSubject$.next(eventsReceived);\n }\n }\n\n private buildQueryResult(classType: new () => T, response: RestResponse): Map {\n const result = SafeGuid.createMap();\n let entities;\n if (response.body) {\n entities = response.body;\n } else {\n if (!response.body) {\n throw new Error('no body');\n }\n entities = response.body;\n }\n\n for (let i = 0; i < entities.length; i++) {\n const scEntity = this.createEntityModel(classType, entities[i]);\n if (scEntity && !result.has(scEntity.id)) {\n result.set(scEntity.id, scEntity);\n }\n }\n return result;\n }\n\n private resetDirty(entities: Set) {\n for (const entity of entities) {\n entity.isDirty = false;\n }\n }\n\n private startValidityProcess(validUntil: Date): void {\n let timeUntilNow = validUntil.valueOf() - Date.now();\n\n if (timeUntilNow > this.renewTokenDelayBeforeEnd) {\n timeUntilNow = timeUntilNow - this.renewTokenDelayBeforeEnd;\n } else {\n timeUntilNow = timeUntilNow - 60000; // - 1 min\n }\n\n if (timeUntilNow > 0) {\n this._timerTokenRenewal.change(timeUntilNow);\n } else {\n this._timerTokenRenewal.change(30000); // to prevent infinte fast loop of token generation, still wait 30 sec\n /*\n this._diagnosticManager.traceLocal(\n LogSeverity.Error,\n this.debugAppName,\n 'Token validity range is too high.',\n 'Please ensure you have the correct date & time on device.',\n );\n */\n }\n }\n\n private async onTimerRenewToken() {\n try {\n await this.renewTokenAsync();\n } catch (e: any) {\n // If it fails... retry because we don't have anything else better to do at this point\n this.startValidityProcess(new Date(Date.now() + this.renewTokenDelayBeforeEnd));\n await this._diagnosticManager.sendTraceAsync(LogSeverity.Error, this.debugAppName, 'Unable to renew token automatically', e.toString());\n }\n }\n\n private registerEvents() {\n this._eventTypeDic.set(EventTypes.AlarmTriggered, AlarmTriggeredEvent);\n\n // multi\n this._eventTypeDic.set('MultiEvent', MultiEvent);\n\n // cardholder access event\n this._eventTypeDic.set(EventTypes.CardholderAccessRefused, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderAccessGranted, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardHolderCredentialExpired, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardHolderCredentialInactive, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardHolderCredentialLost, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardHolderCredentialStolen, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderDoubleBadgeOff, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderDoubleBadgeOn, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderDuressPinEntered, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderEntryAssumed, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderEntryDetected, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderNoEntryDetected, CardholderAccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderInactive, CardholderAccessEvent);\n\n // credential status event\n this._eventTypeDic.set(EventTypes.CredentialExpired, CredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.CredentialLost, CredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.CredentialInactive, CredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.CredentialStolen, CredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.CredentialUnassigned, CredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.CredentialAccessDenied, CredentialStatusEvent);\n\n // AP credential status event\n this._eventTypeDic.set(EventTypes.AccessExpiredCredential, AccessPointCredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.AccessLostCredential, AccessPointCredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.AccessInactiveCredential, AccessPointCredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.AccessStolenCredential, AccessPointCredentialStatusEvent);\n this._eventTypeDic.set(EventTypes.AccessUnassignedCredential, AccessPointCredentialStatusEvent);\n\n // alarm\n this._eventTypeDic.set(EventTypes.AlarmTriggered, AlarmTriggeredEvent);\n this._eventTypeDic.set(EventTypes.AlarmAcknowledged, AlarmAcknowledgedEvent);\n this._eventTypeDic.set(EventTypes.AlarmForciblyAcked, AlarmAcknowledgedEvent);\n this._eventTypeDic.set(EventTypes.AlarmAcknowledgedAlternate, AlarmAcknowledgedEvent);\n this._eventTypeDic.set(EventTypes.AlarmInvestigating, AlarmInvestigatingEvent);\n\n // Access control\n this._eventTypeDic.set(EventTypes.AccessGranted, AccessEvent);\n this._eventTypeDic.set(EventTypes.AccessUnknownCredential, AccessUnknownCredentialEvent);\n this._eventTypeDic.set(EventTypes.DoorNoEntryDetected, AccessEvent);\n this._eventTypeDic.set(EventTypes.DoorEntryAssumed, AccessEvent);\n this._eventTypeDic.set(EventTypes.DoorEntryDetected, AccessEvent);\n this._eventTypeDic.set(EventTypes.CardholderAntipassback, CardholderAntipassbackEvent);\n this._eventTypeDic.set(EventTypes.AreaAntipassbackForgiven, CardholderAntipassbackForgivenEvent);\n\n // Cardholder identity event\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationSucceededManual, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationSucceededBiometric, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationFailedTimeout, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationFailedBiometricMissing, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationFailedBiometricMismatch, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderIdentityValidationFailedManual, CardholderIdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.CardholderAccessGrantConfirmationRequested, CardholderAccessGrantConfirmationRequestedEvent);\n\n // identity event\n this._eventTypeDic.set(EventTypes.IdentityValidationSucceededManual, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.IdentityValidationSucceededBiometric, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.IdentityValidationFailedTimeout, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.IdentityValidationFailedBiometricMissing, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.IdentityValidationFailedBiometricMismatch, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.IdentityValidationFailedManual, IdentityValidationEvent);\n this._eventTypeDic.set(EventTypes.AccessGrantConfirmationRequested, AccessGrantConfirmationRequestedEvent);\n\n // app\n this._eventTypeDic.set(EventTypes.ApplicationConnected, ApplicationEvent);\n this._eventTypeDic.set(EventTypes.ApplicationDisconnected, ApplicationEvent);\n\n // Custom\n this._eventTypeDic.set(EventTypes.CustomEvent, CustomPayloadEvent);\n\n // Lpr\n this._eventTypeDic.set(EventTypes.LprRead, LprReadEvent);\n this._eventTypeDic.set(EventTypes.LprHit, LprHitEvent);\n\n // user\n this._eventTypeDic.set(EventTypes.UserLoggedOn, UserEvent);\n this._eventTypeDic.set(EventTypes.UserLoggedOff, UserEvent);\n this._eventTypeDic.set(EventTypes.UserLogonFailed, UserEvent);\n this._eventTypeDic.set(EventTypes.ModifiedIncident, ModifiedIncidentEvent);\n }\n\n // #endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Utility fuctions to have a delay promise instead of using a callback\n *\n * @param timeToWait time in millisecond\n * @returns promise resolved when timeout\n */\nexport const delayAsPromise = (timeToWait: number): Promise => {\n return new Promise((res) => setTimeout(res, timeToWait));\n};\n\n/**\n * Utility function to validate required inputs has been set\n *\n * @param inputs\n */\nexport const checkRequiredInputs = (inputs: Record): void => {\n const undefinedInputKeys = Object.entries(inputs)\n .filter(([_, value]) => value === undefined) // use only value\n .map((key) => key); // use only key\n if (undefinedInputKeys.length) throw Error(`Inputs required : ${undefinedInputKeys.join(', ')}`);\n};\n\nexport const WINDOW = new InjectionToken('Global window object');\n","import { Inject, Injectable } from '@angular/core';\nimport { ApplicationType } from 'RestClient/Client/Enumerations/ApplicationType';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WebAppClient, WebAppRegistrationInfo } from 'WebClient/WebAppClient';\nimport { Constants } from '@src/constants';\nimport { WINDOW } from '@utilities/common-helper';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Injectable({ providedIn: 'root' })\nexport class SecurityCenterClientService {\n public get scClient(): WebAppClient {\n return this.securityCenterClient;\n }\n\n private webAppUniqueIdHeader = 'WebAppUniqueId';\n private webAppMachineUniqueIdHeader = 'WebAppMachineUniqueId';\n private securityCenterClient: WebAppClient;\n\n constructor(@Inject(WINDOW) private window: Window) {\n const storedWebAppUniqueId = this.window.sessionStorage.getItem(this.webAppUniqueIdHeader) ?? this.resetUniqueAppId();\n\n let storedWebAppMachineUniqueId = this.window.localStorage.getItem(this.webAppMachineUniqueIdHeader);\n if (storedWebAppMachineUniqueId === null) {\n storedWebAppMachineUniqueId = SafeGuid.newGuid().toString();\n this.window.localStorage.setItem(this.webAppMachineUniqueIdHeader, storedWebAppMachineUniqueId);\n }\n\n this.securityCenterClient = new WebAppClient(new WebAppRegistrationInfo(storedWebAppUniqueId));\n this.securityCenterClient.applicationType = ApplicationType.WebClient;\n this.securityCenterClient.debugAppName = 'SC6 Incubation';\n this.securityCenterClient.registrationInfo.machineId = storedWebAppMachineUniqueId;\n\n const xsrfToken = this.getCookie('XSRF-TOKEN');\n this.securityCenterClient.addAdditionalHeader('X-XSRF-TOKEN', xsrfToken);\n\n this.securityCenterClient.onTokenApplied(() => {\n this.window.localStorage.setItem(Constants.isWebAppTokenSet, 'true');\n });\n }\n\n public resetUniqueAppId(): string {\n const storedWebAppUniqueId = SafeGuid.newGuid().toString();\n this.window.sessionStorage.setItem(this.webAppUniqueIdHeader, storedWebAppUniqueId);\n if (this.securityCenterClient !== undefined) {\n this.securityCenterClient.registrationInfo.uniqueId = storedWebAppUniqueId;\n }\n return storedWebAppUniqueId;\n }\n\n public resetToken(): void {\n this.window.localStorage.removeItem(Constants.isWebAppTokenSet);\n }\n\n public getCookie(cname: string): string {\n const name = cname + '=';\n const decodedCookie = decodeURIComponent(document.cookie);\n const ca = decodedCookie.split(';');\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n }\n}\n","/* eslint-disable no-console */\nimport { Injectable, Inject } from '@angular/core';\nimport { WINDOW } from '@utilities/common-helper';\nimport { LogSeverity } from 'RestClient/Client/Enumerations/LogSeverity';\n\nconst noop = (): any => undefined;\nconst prefix = '👉⚡👈 SCW - ';\n\ndeclare global {\n interface Window {\n scwLogSeverity: Array;\n scwSetAllLoggers: () => Array;\n scwSetFullLoggers: () => Array;\n scwClearLoggers: () => Array;\n scwToggleLogServerSide: () => boolean;\n scwToggleSpecificLogger: (logger: string) => Array;\n }\n}\n\n@Injectable()\nexport class LoggerService {\n public traceInformation: (message?: any, ...optionalParams: any[]) => void = noop;\n public traceDebug: (message?: any, ...optionalParams: any[]) => void = noop;\n public traceError: (message?: any, ...optionalParams: any[]) => void = noop;\n public traceFatal: (message?: any, ...optionalParams: any[]) => void = noop;\n public tracePerformance: (message?: any, ...optionalParams: any[]) => void = noop;\n public traceWarning: (message?: any, ...optionalParams: any[]) => void = noop;\n\n public logServerSide = false;\n\n public currentLogSeverities: Array;\n\n constructor(@Inject('logSeverities') private logSeverities: Array, @Inject(WINDOW) window: Window) {\n this.currentLogSeverities = this.logSeverities;\n this.setAvailableLoggers();\n\n window.scwLogSeverity = this.currentLogSeverities;\n window.scwSetAllLoggers = this.setAllLoggers.bind(this);\n window.scwSetFullLoggers = this.setFullLoggers.bind(this);\n window.scwClearLoggers = this.clearLoggers.bind(this);\n window.scwToggleSpecificLogger = this.toggleSpecificLogger.bind(this);\n window.scwToggleLogServerSide = this.toggleLogServerSide.bind(this);\n }\n\n public setAvailableLoggers(): void {\n if (this.currentLogSeverities.includes(LogSeverity.None)) {\n return;\n }\n\n if (this.currentLogSeverities.includes(LogSeverity.All)) {\n this.setAllLoggers();\n } else if (this.currentLogSeverities.includes(LogSeverity.Full)) {\n this.setFullLoggers();\n } else {\n this.setCurrentLoggers();\n }\n }\n\n public toggleSpecificLogger(logger: string): string[] {\n // First letter needs to be capitalized to match the enum\n const capitalizedLogger = logger.charAt(0).toUpperCase() + logger.slice(1);\n\n if (this.currentLogSeverities.includes(capitalizedLogger)) {\n this.currentLogSeverities.splice(this.currentLogSeverities.indexOf(capitalizedLogger), 1);\n } else {\n this.currentLogSeverities.push(capitalizedLogger);\n }\n\n this.setCurrentLoggers();\n\n return this.currentLogSeverities;\n }\n\n public setAllLoggers(): string[] {\n this.clearLoggers();\n\n this.currentLogSeverities.push(LogSeverity.Debug, LogSeverity.Error, LogSeverity.Fatal);\n\n this.setTraceDebug();\n this.setTraceError();\n this.setTraceFatal();\n\n return this.currentLogSeverities;\n }\n\n public setFullLoggers(): string[] {\n this.clearLoggers();\n\n this.currentLogSeverities.push(LogSeverity.Debug, LogSeverity.Error, LogSeverity.Fatal, LogSeverity.Information, LogSeverity.Performance, LogSeverity.Warning);\n\n this.setTraceDebug();\n this.setTraceError();\n this.setTraceFatal();\n this.setTraceInformation();\n this.setTracePerformance();\n this.setTraceWarning();\n\n return this.currentLogSeverities;\n }\n\n public setCurrentLoggers(): void {\n this.currentLogSeverities.forEach((x) => {\n switch (x) {\n case LogSeverity.Debug:\n this.setTraceDebug();\n break;\n case LogSeverity.Error:\n this.setTraceError();\n break;\n case LogSeverity.Fatal:\n this.setTraceFatal();\n break;\n case LogSeverity.Information:\n this.setTraceInformation();\n break;\n case LogSeverity.Performance:\n this.setTracePerformance();\n break;\n case LogSeverity.Warning:\n this.setTraceWarning();\n break;\n }\n });\n }\n\n public clearLoggers(): string[] {\n this.currentLogSeverities.length = 0;\n this.traceDebug = noop;\n this.traceError = noop;\n this.traceFatal = noop;\n this.traceInformation = noop;\n this.tracePerformance = noop;\n this.traceWarning = noop;\n\n return this.currentLogSeverities;\n }\n\n public setTraceDebug(): void {\n const fullTracePrefix = prefix + 'DEBUG:';\n if (this.logServerSide) {\n this.traceDebug = (message: string) => {\n // eslint-disable-next-line no-console\n console.debug(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.traceDebug = Function.prototype.bind.call(console.debug, console, fullTracePrefix) as typeof console.debug;\n }\n }\n\n public setTraceError(): void {\n const fullTracePrefix = prefix + 'ERROR:';\n if (this.logServerSide) {\n this.traceError = (message: string) => {\n console.error(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.traceError = Function.prototype.bind.call(console.error, console, fullTracePrefix) as typeof console.debug;\n }\n }\n\n public setTraceFatal(): void {\n const fullTracePrefix = prefix + 'FATAL:';\n if (this.logServerSide) {\n this.traceFatal = (message: string) => {\n // eslint-disable-next-line no-console\n console.error(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.traceFatal = Function.prototype.bind.call(console.error, console, fullTracePrefix) as typeof console.error;\n }\n }\n\n public setTraceInformation(): void {\n const fullTracePrefix = prefix + 'INFO:';\n if (this.logServerSide) {\n this.traceInformation = (message: string) => {\n // eslint-disable-next-line no-console\n console.info(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.traceInformation = Function.prototype.bind.call(console.info, console, fullTracePrefix) as typeof console.info;\n }\n }\n\n public setTracePerformance(): void {\n const fullTracePrefix = prefix + 'PERF:';\n if (this.logServerSide) {\n this.tracePerformance = (message: string) => {\n // eslint-disable-next-line no-console\n console.debug(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.tracePerformance = Function.prototype.bind.call(console.debug, console, fullTracePrefix) as typeof console.debug;\n }\n }\n\n public setTraceWarning(): void {\n const fullTracePrefix = prefix + 'WARN:';\n if (this.logServerSide) {\n this.traceWarning = (message: string) => {\n // eslint-disable-next-line no-console\n console.warn(fullTracePrefix + ' ' + message);\n // TODO: Log server side\n };\n } else {\n this.traceWarning = Function.prototype.bind.call(console.warn, console, fullTracePrefix) as typeof console.warn;\n }\n }\n\n public toggleLogServerSide(): boolean {\n this.logServerSide = !this.logServerSide;\n this.setAvailableLoggers();\n\n return this.logServerSide;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { LoggerService } from './logger/logger.service';\n\nexport interface ActionDescription {\n name: string;\n originComponent?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TrackingService {\n private scClient: ISecurityCenterClient;\n private activeComponents = new Map();\n\n constructor(securityCenterProvider: SecurityCenterClientService, private loggerService: LoggerService) {\n this.scClient = securityCenterProvider?.scClient;\n }\n\n public addActiveComponent(name: string): void {\n const activeCount = this.activeComponents.get(name) ?? 0;\n this.activeComponents.set(name, activeCount + 1);\n }\n\n public removeActiveComponent(name: string): void {\n const activeCount = this.activeComponents.get(name);\n if (activeCount) {\n this.activeComponents.set(name, activeCount - 1);\n\n if (activeCount === 1) {\n this.activeComponents.delete(name);\n }\n }\n }\n\n public async logActionAsync(actionDescription: ActionDescription): Promise {\n // TODO: log the action\n }\n\n public outputStats(): void {\n this.loggerService.traceInformation('Active components');\n for (const component of this.activeComponents) {\n this.loggerService.traceInformation(`${component[0]}: ${component[1]}`);\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Gelato } from '@genetec/gelato-angular';\nimport { uniqueId } from 'lodash-es';\nimport { TrackingService } from '../../services/tracking.service';\n\n@Component({\n selector: 'app-tracked-component',\n template: '',\n})\nexport class TrackedComponent extends Gelato implements OnInit, OnDestroy {\n public readonly componentId!: number | string;\n\n protected name!: string;\n\n constructor(protected trackingService: TrackingService) {\n super();\n this.name = this.constructor.name;\n this.componentId = uniqueId();\n }\n\n public ngOnInit(): void {\n this.trackingService.addActiveComponent(this.name);\n }\n\n public ngOnDestroy(): void {\n this.trackingService.removeActiveComponent(this.name);\n }\n\n protected async logAction(actionDescription: string): Promise {\n await this.trackingService.logActionAsync({ name: actionDescription, originComponent: this.name });\n }\n}\n","\n \n \n {{ getName(command) }}\n \n\n","import { Component, Input } from '@angular/core';\nimport { ButtonFlavor } from '@genetec/gelato';\nimport { CommandUsage } from '../../services/commands/commands-usage/command-usage';\nimport { TrackingService } from '../../services/tracking.service';\nimport { TrackedComponent } from '../tracked/tracked.component';\n\n@Component({\n selector: 'app-command-button',\n templateUrl: './command-button.component.html',\n styleUrls: ['./command-button.component.scss'],\n})\nexport class CommandButtonComponent extends TrackedComponent {\n @Input() public command!: CommandUsage;\n\n public readonly ButtonFlavor = ButtonFlavor;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public getName(command: CommandUsage): string | undefined {\n // if there is no icon, use the text\n if (!command.icon) {\n return command.name();\n }\n }\n\n public getTooltip(command: CommandUsage): string {\n let tooltip = command.tooltip();\n if (!tooltip) {\n // if there is no tooltip and that we only have an icon, use the name as tooltip\n if (command.icon) {\n tooltip = command.name();\n }\n }\n return tooltip;\n }\n\n public onButtonClicked(event: Event): void {\n event.cancelBubble = true;\n event.preventDefault();\n }\n}\n","import { ContextMenuItem } from './context-menu-item';\n\nexport const Separator = 'separator';\n\nexport class MenuSeparator implements ContextMenuItem {\n text = Separator;\n id = Separator;\n}\n","/**\n * Freezes an object so that it's properties cannot be modified. Useful for creating\n * constant objects.\n *\n * @param obj Object that you want converted into a readonly object.\n * @returns The same object but with its properties readonly.\n */\nexport const Constants = >(obj: T): Readonly => {\n return Object.freeze(obj);\n};\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const ContextTypes = Constants({\n Content: SafeGuid.parse('B94A419C-7F68-4487-9C91-547706DC3F93'),\n Entity: SafeGuid.parse('88E3422A-C9F5-4F55-976B-297B30698900'),\n EntityId: SafeGuid.parse('BA83C494-BD9C-4053-921B-5B3F48E04AFF'),\n Map: SafeGuid.parse('FDA8AD7D-BEE4-4204-81BA-1528BF29E2EF'),\n Specific: SafeGuid.parse('27E6ADB0-2BCC-49F2-BC58-2C11A3E6AE84'),\n});\n","import { Subscription } from 'rxjs';\n\nexport class Unsubscribable {\n private subscription: Subscription | (() => void);\n\n constructor(subscription: Subscription | (() => void)) {\n this.subscription = subscription;\n }\n\n public static unsubscribe(subscription: Subscription | (() => void)): void {\n if (subscription instanceof Subscription) {\n subscription.unsubscribe();\n } else {\n subscription();\n }\n }\n\n public unsubscribe(): void {\n Unsubscribable.unsubscribe(this.subscription);\n }\n}\n\nexport class SubscriptionCollection {\n private subscriptions: (Subscription | (() => void))[] = [];\n\n public add(...subscription: (Subscription | (() => void))[]): void {\n this.subscriptions.push(...subscription);\n }\n\n public remove(subscription: Subscription | (() => void)): Unsubscribable | undefined {\n const index = this.subscriptions.indexOf(subscription);\n if (index > 0) {\n const removed = this.subscriptions.splice(index, 1);\n return new Unsubscribable(removed[0]);\n }\n return undefined;\n }\n\n public unsubscribeAll(): void {\n for (const subscription of this.subscriptions) {\n Unsubscribable.unsubscribe(subscription);\n }\n this.subscriptions.length = 0;\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { CommandContext, CommandDisplay } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { SubscriptionCollection } from '../../../utilities/subscription-collection';\n\nexport abstract class CommandsUsageContext implements CommandContext {\n public abstract data: any;\n public abstract invalidateCanExecute: (commandId: IGuid, canExecute?: boolean) => void;\n public abstract invalidateDisplay: (commandId: IGuid, commandDisplay?: CommandDisplay) => void;\n public abstract subscriptions: SubscriptionCollection;\n public abstract type: IGuid;\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CommandContext, CommandDisplay } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { EntityCommandContext } from '../entity-command-context';\nimport { SubscriptionCollection } from '../../../utilities/subscription-collection';\nimport { CommandsUsageContext } from './commands-usage-context';\n\nexport class EntityCommandsUsageContext extends CommandsUsageContext implements EntityCommandContext {\n public type: IGuid;\n public data: any;\n public subscriptions = new SubscriptionCollection();\n\n constructor(\n commandContext: CommandContext,\n public entityCache: IEntityCacheTask,\n public invalidateCanExecute: (commandId: IGuid, canExecute?: boolean) => void,\n public invalidateDisplay: (commandId: IGuid, commandDisplay?: CommandDisplay) => void\n ) {\n super();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.data = commandContext.data;\n this.type = commandContext.type;\n }\n}\n","import { MeltedIcon } from '@genetec/gelato-angular';\nimport { MenuSeparator } from '@shared/interfaces/context-menu-item/menu-separator';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { SignalEventDispatcher } from 'RestClient/Helpers/Helpers';\nimport { BehaviorSubject } from 'rxjs';\nimport { GuidSet, IGuid } from 'safeguid';\nimport { ContextTypes } from '@shared/interfaces/plugins/public/context-types';\nimport { Content, PluginCommand } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandContext, CommandDisplay, CommandsService } from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { CommandUsage } from './command-usage';\nimport { EntityCommandsUsageContext } from './entity-commands-usage-context';\n@UntilDestroy()\nexport class CommandsUsage {\n public readonly commandContext: EntityCommandsUsageContext;\n\n public commands: CommandUsage[] = [];\n public isReady$ = new BehaviorSubject(true);\n public usageDone = new SignalEventDispatcher();\n\n private commandIds = new GuidSet();\n private initializingCommands = new GuidSet();\n private subscribers = new Set<() => void>();\n private specificCommandIds?: IGuid[];\n\n public get subscriberCount(): number {\n return this.subscribers.size;\n }\n\n constructor(\n private commandsService: CommandsService,\n commandContext: CommandContext,\n entityCache: IEntityCacheTask,\n public targetElement?: Element,\n specificCommandIds?: IGuid[]\n ) {\n this.commandContext = new EntityCommandsUsageContext(\n commandContext,\n entityCache,\n (commandId, canExecute?) => this.invalidateCanExecute(commandId, canExecute),\n (commandId, commandDisplay?) => this.invalidateDisplay(commandId, commandDisplay)\n );\n\n if (specificCommandIds && specificCommandIds.length > 0) {\n this.specificCommandIds = specificCommandIds;\n }\n }\n\n // TODO YN: Write tests for this...\n // still missing sub folder of sub folder\n public static createContextMenuItems(commandUsages: CommandUsage[]): ContextMenuItem[] {\n const items: ContextMenuItem[] = [];\n\n const allCommands = commandUsages.sort((p1, p2) => {\n // for now sub folder at start\n if (p1.command.groupName) {\n if (p2.command.groupName) {\n return 0;\n }\n return -1;\n }\n\n // no section, on top\n if (!p1.command.sectionName) {\n if (p2.command.groupName) {\n return 1;\n }\n return -1;\n }\n\n return 1;\n });\n\n const isGroupHidden = (item: ContextMenuItem): boolean => {\n let isChildVisible = false;\n for (const child of item.children ?? []) {\n if (!child.isHidden || !child.isHidden(child)) {\n isChildVisible = true;\n break;\n }\n }\n return !isChildVisible;\n };\n\n allCommands.forEach((commandUsage) => {\n let itemsToInsert = items;\n const groupName = commandUsage.command.groupName ? commandUsage.command.groupName() : undefined;\n if (groupName && groupName !== '') {\n let subMenu = items.find((item: ContextMenuItem) => item.text === groupName);\n if (!subMenu) {\n subMenu = {\n id: groupName,\n text: groupName,\n icon: commandUsage.command.groupIcon,\n children: [],\n iconColor: commandUsage.color(),\n isHidden: isGroupHidden,\n };\n items.push(subMenu);\n }\n itemsToInsert = subMenu.children ?? [];\n }\n\n const sectionName = commandUsage.command.sectionName ? commandUsage.command.sectionName() : undefined;\n if (sectionName && sectionName !== '') {\n const subSection = items.findIndex((item) => item instanceof MenuSeparator);\n if (subSection === -1) {\n itemsToInsert.push(new MenuSeparator());\n }\n }\n itemsToInsert.push(commandUsage.createMenuItem());\n });\n\n // return only the children if only one section...\n if (items.length === 1 && items[0].children) {\n return items[0].children;\n }\n\n return items;\n }\n\n public addCommand(command: PluginCommand): void {\n const commandId = command.id;\n if (!this.commandIds.has(commandId)) {\n if (this.isReady$.getValue()) {\n this.isReady$.next(false);\n }\n\n this.initializingCommands.add(commandId);\n this.commandIds.add(commandId);\n const commandUsage = new CommandUsage(command, this.commandContext, () => this.executeCommand(commandId), this.targetElement);\n this.commands.push(commandUsage);\n this.initializeCommand(commandUsage).fireAndForget();\n }\n }\n\n public addCommands(commands: PluginCommand[]): void {\n for (const command of commands) {\n this.addCommand(command);\n }\n }\n\n public async createContextMenuItemsAsync(): Promise {\n await this.waitToBeReady();\n return CommandsUsage.createContextMenuItems(this.commands);\n }\n\n public dispose(): void {\n this.commandContext.entityCache?.dispose().fireAndForget();\n this.commandContext.subscriptions?.unsubscribeAll();\n }\n\n public equals(other: CommandsUsage): boolean {\n return this === other || this.represents(other.commandContext, other.specificCommandIds, other.targetElement);\n }\n\n public represents(commandContext: CommandContext, specificCommandIds?: IGuid[], targetElement?: Element): boolean {\n if (commandContext.type.equals(this.commandContext.type)) {\n if ((specificCommandIds && !this.specificCommandIds) || (!specificCommandIds && specificCommandIds)) {\n return false;\n }\n if (specificCommandIds && this.specificCommandIds) {\n for (const commandId of specificCommandIds) {\n if (!this.specificCommandIds.some((x) => x.equals(commandId))) {\n return false;\n }\n }\n for (const commandId of this.specificCommandIds) {\n if (!specificCommandIds.some((x) => x.equals(commandId))) {\n return false;\n }\n }\n }\n\n if (this.targetElement && targetElement && !this.targetElement.contains(targetElement)) {\n return false;\n }\n\n if (commandContext.type.equals(ContextTypes.Content) && commandContext.data && this.commandContext.data) {\n return (commandContext.data as Content).id.equals((this.commandContext.data as Content).id);\n } else if (commandContext.type.equals(ContextTypes.EntityId)) {\n return (commandContext.data as IGuid).equals(this.commandContext.data as IGuid);\n } else {\n return commandContext.data === this.commandContext.data;\n }\n }\n return false;\n }\n\n public invalidateCanExecute(commandId: IGuid, canExecute?: boolean): void {\n const commandUsage = this.commands.find((x) => x.id.equals(commandId));\n if (commandUsage) {\n if (canExecute !== undefined) {\n commandUsage.canExecute = canExecute;\n } else {\n this.refreshCanExecuteAsync(commandUsage).fireAndForget();\n }\n }\n }\n\n public invalidateDisplay(commandId: IGuid, commandDisplay?: CommandDisplay): void {\n const commandUsage = this.commands.find((x) => x.id.equals(commandId));\n if (commandUsage) {\n if (commandDisplay) {\n this.setCommandDisplay(commandUsage, commandDisplay);\n } else {\n this.refreshDisplayAsync(commandUsage).fireAndForget();\n }\n }\n }\n\n public subscribe(): () => void {\n const unsubscribe = () => {};\n this.subscribers.add(unsubscribe);\n return () => this.unsubscribe(unsubscribe);\n }\n\n private async canExecuteCommandAsync(commandId: IGuid): Promise {\n return await this.commandsService.canExecuteCommandAsync(commandId, this.commandContext);\n }\n\n private executeCommand(commandId: IGuid): void {\n // Force execute because isAvailable and canExecute are already evaluated at this point\n this.commandsService.forceExecuteCommand(commandId, this.commandContext, undefined, this.targetElement);\n }\n\n private async getCommandDisplayAsync(commandId: IGuid): Promise {\n return await this.commandsService.getCommandDisplayAsync(commandId, this.commandContext);\n }\n\n private async initializeCommand(commandUsage: CommandUsage): Promise {\n await this.refreshDisplayAsync(commandUsage);\n await this.refreshCanExecuteAsync(commandUsage);\n this.onCommandInitialized(commandUsage.id);\n }\n\n private onCommandInitialized(commandId: IGuid): void {\n this.initializingCommands.delete(commandId);\n if (this.initializingCommands.size === 0) {\n this.isReady$.next(true);\n }\n }\n\n private async refreshCanExecuteAsync(commandUsage: CommandUsage): Promise {\n const canExecute = await this.canExecuteCommandAsync(commandUsage.id);\n commandUsage.canExecute = canExecute;\n }\n\n private async refreshDisplayAsync(commandUsage: CommandUsage): Promise {\n const commandDisplay = await this.getCommandDisplayAsync(commandUsage.id);\n if (commandDisplay) {\n this.setCommandDisplay(commandUsage, commandDisplay);\n }\n }\n\n private setCommandDisplay(commandUsage: CommandUsage, commandDisplay: CommandDisplay) {\n commandUsage.name = commandDisplay.name;\n commandUsage.icon = commandDisplay.icon || MeltedIcon.None;\n commandUsage.tooltip = commandDisplay.tooltip ? commandDisplay.tooltip : () => '';\n commandUsage.isAllowed = commandDisplay.isAllowed;\n }\n\n private unsubscribe(subscription: () => void): void {\n this.subscribers.delete(subscription);\n if (this.subscribers.size === 0) {\n this.usageDone.dispatchAsync();\n }\n }\n\n private async waitToBeReady(): Promise {\n if (this.isReady$.getValue()) {\n return;\n }\n\n let resolvePromise: () => void;\n const promise = new Promise((resolve) => {\n resolvePromise = resolve;\n });\n const subscription = this.isReady$.pipe(untilDestroyed(this)).subscribe((isReady) => {\n if (isReady) {\n resolvePromise();\n subscription.unsubscribe();\n }\n });\n return promise;\n }\n}\n","
\n 0\">\n \n \n \n \n {{ getName(command) }}\n \n \n \n \n\n 0\">\n \n \n \n \n\n \n
\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, ItemSlot } from '@genetec/gelato';\nimport { GenMenu } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { IGuid } from 'safeguid';\nimport { MenuPosition } from '@genetec/gelato';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { CommandUsage } from '../../services/commands/commands-usage/command-usage';\nimport { CommandsUsage } from '../../services/commands/commands-usage/commands-usage';\nimport { TrackingService } from '../../services/tracking.service';\nimport { TrackedComponent } from '../tracked/tracked.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-command-buttons',\n templateUrl: './command-buttons.component.html',\n styleUrls: ['./command-buttons.component.scss'],\n})\nexport class CommandButtonsComponent extends TrackedComponent implements OnInit, OnChanges {\n @ViewChild('mainDiv') public mainDiv!: ElementRef;\n @ViewChild('moreMenu') public moreMenu!: GenMenu;\n\n @Input() public commandsUsage!: CommandsUsage;\n @Input() public excludedCommandIds: IGuid[] = [];\n @Input() public maximumButtonCount!: number;\n @Input() public areButtonsSpaced = false;\n @Input() public mainButtonFlavor = ButtonFlavor.Flat;\n\n @Output() public isLoadingChange = new EventEmitter();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n public readonly MenuPosition = MenuPosition;\n\n public additionnalCommands: CommandUsage[] = [];\n public displayedCommands: CommandUsage[] = [];\n public isLoading = true;\n public isMoreMenuOpen = false;\n public moreMenuItemSource: ContextMenuItem[] = [];\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.commandsUsage !== 'undefined') {\n const change = changes.commandsUsage;\n const commandsUsage = change.currentValue as CommandsUsage;\n if (commandsUsage && change.previousValue !== commandsUsage) {\n this.createCommandButtons();\n this.isLoading = !commandsUsage.isReady$.getValue();\n if (this.isLoading) {\n commandsUsage.isReady$.pipe(untilDestroyed(this)).subscribe((isReady: boolean) => {\n this.isLoading = !isReady;\n this.isLoadingChange.emit(this.isLoading);\n });\n } else {\n this.isLoadingChange.emit(this.isLoading);\n }\n }\n }\n }\n\n public onClicked(event: Event): void {\n event.cancelBubble = true;\n event.preventDefault();\n }\n\n public getName(command: CommandUsage): string | undefined {\n // if there is no icon, use the text\n if (!command.icon) {\n return command.name();\n }\n }\n\n public getTooltip(command: CommandUsage): string {\n let tooltip = command.tooltip();\n if (!tooltip) {\n // if there is no tooltip and that we only have an icon, use the name as tooltip\n if (command.icon) {\n tooltip = command.name();\n }\n }\n return tooltip;\n }\n\n public toggleMoreMenu(): void {\n this.createAdditionnalCommands();\n this.moreMenu.toggle().fireAndForget();\n this.isMoreMenuOpen = !this.isMoreMenuOpen;\n }\n\n private createAdditionnalCommands() {\n this.moreMenuItemSource = [];\n if (this.additionnalCommands.length > 0) {\n for (const command of this.additionnalCommands) {\n this.moreMenuItemSource.push(command.createMenuItem());\n }\n }\n }\n\n private createCommandButtons() {\n let index = 0;\n this.displayedCommands = [];\n this.additionnalCommands = [];\n this.moreMenuItemSource = [];\n const commands = this.commandsUsage.commands.filter((commandUsage) => !this.excludedCommandIds.some((excludedCommandId) => excludedCommandId.equals(commandUsage.id)));\n\n if (commands.length > 0) {\n for (; index < commands.length && index < this.maximumButtonCount; index++) {\n this.displayedCommands.push(commands[index]);\n }\n\n if (commands.length > this.displayedCommands.length) {\n for (; index < commands.length; index++) {\n this.additionnalCommands.push(commands[index]);\n }\n }\n }\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { WINDOW } from '@utilities/common-helper';\nimport Dexie from 'dexie';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { LoggerService } from '../logger/logger.service';\nimport { IDBStringDataObject } from './interfaces';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class IDBService extends Dexie {\n private static readonly DBVersion = 1; // IMPORTANT: Change this when changing the structure of the database!\n private static readonly DBName = 'GenWebApp';\n private static readonly FilesStore = 'files';\n private static readonly ResourcesStore = 'resources';\n\n public files: Dexie.Table | null = null;\n public resources: Dexie.Table | null = null;\n\n private canOpenDBSubject = new BehaviorSubject(null);\n\n constructor(private loggerService: LoggerService, @Inject(WINDOW) private window: Window) {\n super(IDBService.DBName);\n\n this.updateCanOpenDB();\n\n this.canOpenDBSubject.pipe(untilDestroyed(this)).subscribe((canOpenDB: boolean | null) => {\n if (canOpenDB) {\n this.setupTables();\n }\n });\n }\n\n /**\n * Returns if IndexedDB is supported in the current browser.\n *\n * @returns If IndexedDB is supported or not\n */\n public isIDBSupported(): boolean {\n return !!this.window.indexedDB && this.canOpenDBSubject.value === true;\n }\n\n private setupTables() {\n this.version(IDBService.DBVersion).stores({\n [IDBService.FilesStore]: `id, lastAccess`,\n [IDBService.ResourcesStore]: `id, lastAccess`,\n });\n this.files = this.table(IDBService.FilesStore);\n this.resources = this.table(IDBService.ResourcesStore);\n }\n\n private updateCanOpenDB() {\n try {\n const newDB = this.window.indexedDB.open(IDBService.DBName);\n newDB.onsuccess = () => {\n this.canOpenDBSubject.next(true);\n this.loggerService.traceDebug('IDB supported.');\n };\n newDB.onerror = () => {\n // IndexedDB not supported in Firefox & Private Browsing\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1639542\n this.canOpenDBSubject.next(false);\n this.loggerService.traceDebug('IDB is not supported. Error trying to open a table');\n this.window.indexedDB.deleteDatabase(IDBService.DBName);\n };\n } catch {\n this.canOpenDBSubject.next(false);\n this.loggerService.traceDebug('IDB is not supported. Error trying to open a table');\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport CryptoJS from 'crypto-js';\nimport Dexie from 'dexie';\nimport { get } from 'lodash-es';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IFileEntity } from 'RestClient/Client/Interface/IFileEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ApiException, CustomIconQueryEntry, CustomIconState, EncryptionKey, FileCacheQueryEntry, ResourcesClient } from '../../api/api';\nimport { IDBService } from '../idb/idb.service';\nimport { IDBStringDataObject } from '../idb/interfaces';\nimport { LoggerService } from '../logger/logger.service';\nimport { ResourcesOptions } from './interfaces';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResourcesService implements OnDestroy {\n private encryptionKey: EncryptionKey | null = null;\n private subscriptions = new SubscriptionCollection();\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n private resourcesClient: ResourcesClient,\n private idbService: IDBService,\n private loggerService: LoggerService\n ) {\n this.subscriptions.add(\n securityCenterClientService.scClient.onLogonStateChanged((arg) => {\n this.onLogonStateChanged(arg);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribeAll();\n }\n\n /**\n * Clears the cache for the tables used by [[ResourcesService]]\n *\n * @param maxAge - If set, the records that were access between now and maxAge will be kept (key lastAccess)\n */\n public clearCache(maxAge?: number): void {\n if (maxAge) {\n [this.idbService.files, this.idbService.resources].forEach((table) => {\n table\n ?.where('lastAccess')\n .below(Date.now() - maxAge)\n .delete()\n .then((deletedRecords) => {\n this.loggerService.traceDebug(`${deletedRecords} records deleted from IDB from table ${table.name}`);\n })\n .catch(() => {\n this.loggerService.traceError(`Error trying to clear the ${table.name} cache.`);\n });\n });\n } else {\n this.idbService.files?.clear().catch(() => {\n this.loggerService.traceError(`Error trying to clear the files cache.`);\n });\n this.idbService.resources?.clear().catch(() => {\n this.loggerService.traceError(`Error trying to clear the resources cache.`);\n });\n }\n }\n\n /**\n * Retrieve a cached item from the cache (files table).\n *\n * @param key - The item's key\n * @param useEncryption - (Optional) Boolean flag indicitating if encryption should be utilized, default: _true_\n * @param updateCache - (Optional) Boolean flag indicating if the cache should be updated when item retrieved (last access bump), default: _true_\n * @returns The cached data or _null_ if not found\n */\n public async getCachedItem(key: string, useEncryption?: boolean, updateCache?: boolean): Promise {\n return this.getCachedItemInternalAsync(this.idbService.files, key, useEncryption, updateCache);\n }\n\n /**\n * Update the cache at the specified key with the supplied data (files table).\n *\n * @param key - The key of the item\n * @param data - The data payload\n * @param useEncryption - (Optional) Boolean flag to utilize encryption, default: _true_\n * @returns _true_ if the update was successfully added or updated to the cache, _false_ otherwise\n */\n public async updateCachedItem(key: string, data: string, useEncryption?: boolean): Promise {\n return this.updateCachedItemInternalAsync(this.idbService.files, key, data, useEncryption);\n }\n\n /**\n * Gets the custom icon of entities. You have to provide the **customIconId** since it will be used to fetch the icon from the IndexedDB cache first before\n * sending any requests to the role. Alternatively, provide the [[Entity]] instance and the [[IEntity.customIconId]] property of the entity will be used.\n *\n * *Note: Only one icon per entity can be requested at once. Separate calls if you want custom icons from two different states.*\n *\n * @param customIcons The entity to get the custom icons from. Have to provide the **customIconId** and **state** for caching purposes (they will be basically used to construct a key for the cache table).\n * @example\n * [\n * { entity: '00000001-0000-babe-0000-c4546da31914f', customIconId: 'c713a355-4289-444b-b731-8faec5aa4c3c'},\n * { entity: 'ba0cbe7a-e5e3-4e08-8cb8-11cea91c6c73f', customIconId: '446c748e-6048-41e1-8d08-9efffc404275', state: CustomIconState.Active},\n * { entity: myEntity, state: CustomIconState.Active},\n * { entity: mySecondEntity},\n * ...\n * ]\n * @param options Options related to IndexedDB Caching.\n * @returns A record-like object linking the entityId to its custom icon data (base64 string)\n * @example\n * const customIconResult = this.resourcesService.getCustomIconAsync([\n * { entity: '00000001-0000-babe-0000-c4546da31914f', customIconId: 'c713a355-4289-444b-b731-8faec5aa4c3c'}\n * ]);\n *\n * const customIconBase64 = customIconResult['00000001-0000-babe-0000-c4546da31914f'];\n */\n public async getCustomIconAsync(\n customIcons: ({ entity: IEntity; state?: CustomIconState } | { entity: IGuid | string; customIconId: IGuid | string; state?: CustomIconState })[],\n options?: ResourcesOptions\n ): Promise> {\n const result: Record = {};\n\n // Cache flag setups\n const useCache = this.idbService.isIDBSupported() && !options?.bypassCache; // Defaults to not bypassing cache\n const updateCache = this.idbService.isIDBSupported() && (options?.updateCache ?? true); // Defaults to updating cache\n const encrypted = options?.encrypted ?? true; // Encrypted by default\n\n // Prepare an eventual query to the backend\n const customIconQueryEntries: CustomIconQueryEntry[] = [];\n\n // Try to get custom icons from cache\n const customIconIdsByEntityId = this.createPropsByEntityIdMap(customIcons) as Record;\n for (const [entityId, { customIconId, state }] of Object.entries(customIconIdsByEntityId)) {\n let data = null;\n if (useCache && customIconId) {\n const cacheKey = this.createCustomIconCacheKey(customIconId, state);\n data = await this.getCachedItemInternalAsync(this.idbService.files, cacheKey, encrypted, updateCache);\n\n if (data) {\n result[entityId.toString()] = data;\n }\n }\n\n // If not using cache or not found in cache, add to eventual query.\n if (!data) {\n // Not found in cache, will have to fetch from server\n customIconQueryEntries.push(\n new CustomIconQueryEntry({\n entityId: SafeGuid.parse(entityId.toString()),\n state,\n })\n );\n }\n }\n\n // Query the backend for icons not found in the cache\n if (customIconQueryEntries.length) {\n try {\n const customIconResult = await this.resourcesClient.getCustomIcon(customIconQueryEntries).toPromise();\n if (customIconResult) {\n // Only need to loop in results if we tried fetching some from the IDB cache. Otherwise we can just return the results directly.\n if (useCache) {\n // Update cache or merge results from cache with results from server\n await Promise.all(\n Object.entries(customIconResult).map(([entityId, customIconData]) => {\n if (updateCache) {\n // Get back customIconId and state from entityId\n const { customIconId, state } = customIconIdsByEntityId[entityId] || [undefined, undefined];\n\n // Add or update to cache\n if (customIconId && !SafeGuid.EMPTY.equals(entityId)) {\n this.updateCachedItemInternalAsync(\n this.idbService.files,\n this.createCustomIconCacheKey(customIconId, state),\n customIconData,\n encrypted\n ).fireAndForget();\n }\n }\n\n result[entityId] = customIconData;\n })\n );\n } else {\n return customIconResult;\n }\n }\n } catch (e) {\n if (e instanceof ApiException && e.status === 400) {\n this.loggerService.traceError(`ResourcesService getCustomIcon Bad Request${e.response ? `: ${JSON.stringify(e.response)}` : ''}`);\n } else {\n this.loggerService.traceError(`ResourcesService getCustomIcon Unknown Error${e instanceof Error ? `: ${e.message}` : ''}`);\n }\n }\n }\n\n return result;\n }\n\n public async getFilesCacheAsync(\n fileCacheQueryEntry: IFileEntity | { entity: IGuid | string | IEntity; fileCacheId: IGuid | string }[],\n options?: ResourcesOptions\n ): Promise> {\n const result: Record = {};\n\n // Cache flag setups\n const useCache = this.idbService.isIDBSupported() && !options?.bypassCache; // Defaults to not bypassing cache\n const updateCache = this.idbService.isIDBSupported() && (options?.updateCache ?? true); // Defaults to updating cache\n const encrypted = options?.encrypted ?? true; // Encrypted by default\n\n // Prepare the query to the backend\n const fileCacheQueryEntries: FileCacheQueryEntry[] = [];\n\n // Argument discrimination, create a structure easier to deal with that contains all the information we need.\n // fileCacheGuid -> { entity: IGuid | string | IEntity }\n let fileCacheIdsByEntityId: Record;\n if (Array.isArray(fileCacheQueryEntry)) {\n fileCacheIdsByEntityId = this.createPropsByEntityIdMap(fileCacheQueryEntry, 'fileCacheId') as Record;\n } else {\n // IFileEntity\n fileCacheIdsByEntityId = { [fileCacheQueryEntry.cacheGuid.toString()]: { entity: fileCacheQueryEntry.id.toString() } };\n }\n\n // Try to get custom icons from cache\n // Deconstruct arguments\n for (const [fileCacheId, { entity }] of Object.entries(fileCacheIdsByEntityId)) {\n let data = null;\n const fileId = fileCacheId.toString();\n if (useCache) {\n if (fileId) {\n data = await this.getCachedItemInternalAsync(this.idbService.files, fileId, encrypted, updateCache);\n if (data) {\n result[fileId] = data;\n }\n }\n }\n\n if (!data && fileCacheId) {\n // Not found in cache, will have to fetch from server\n fileCacheQueryEntries.push(\n new FileCacheQueryEntry({\n entityId: SafeGuid.parse((typeof entity === 'object' && 'id' in entity ? entity.id : entity).toString()),\n fileCacheId: SafeGuid.parse(fileId),\n })\n );\n }\n }\n\n if (fileCacheQueryEntries.length) {\n try {\n const fileCacheResult = await this.resourcesClient.getFileCache(fileCacheQueryEntries).toPromise();\n if (fileCacheResult) {\n // Only need to loop in results if we tried fetching some from the IDB cache.\n if (useCache) {\n // Update cache or merge results from cache with results from server\n await Promise.all(\n Object.entries(fileCacheResult).map(([fileCacheId, fileCacheData]) => {\n if (updateCache) {\n // Add or update to cache\n if (!SafeGuid.EMPTY.equals(fileCacheId)) {\n this.updateCachedItemInternalAsync(this.idbService.files, fileCacheId, fileCacheData, encrypted).fireAndForget();\n }\n }\n\n result[fileCacheId] = fileCacheData;\n })\n );\n } else {\n return fileCacheResult;\n }\n }\n } catch (e) {\n if (e instanceof ApiException && e.status === 400) {\n this.loggerService.traceError(`ResourcesService getFileCache Bad Request${e.response ? `: ${JSON.stringify(e.response)}` : ''}`);\n } else {\n this.loggerService.traceError(`ResourcesService getFileCache Unknown Error${e instanceof Error ? `: ${e.message}` : ''}`);\n }\n }\n }\n\n return result;\n }\n\n /**\n * Gets the resource from the IDB cache or the server if not found in the cache.\n *\n * @param {string} key - The key of the resource to get\n * @param {ResourcesOptions} options - Options related to IndexedDB Caching.\n * @returns A promise with string representing the resource if found, null if not.\n */\n public async getResourcesAsync(key: string, options?: ResourcesOptions): Promise;\n /**\n * Gets the resources from the IDB cache or the server if not found in the cache.\n *\n * @param {string} key - The key of the resources to get\n * @param {ResourcesOptions} options - Options related to IndexedDB Caching.\n * @returns A promise returning a Map of the resources mapped by key. Map contains entries for resources that were not found and have the value null.\n */\n public async getResourcesAsync(keys: string[], options?: ResourcesOptions): Promise>;\n public async getResourcesAsync(keys: string | string[], options?: ResourcesOptions): Promise> {\n const result: Record = {};\n const useCache = this.idbService.isIDBSupported() && !options?.bypassCache; // Defaults to not bypassing cache\n const updateCache = this.idbService.isIDBSupported() && (options?.updateCache ?? true); // Defaults to updating cache\n const encrypted = options?.encrypted ?? true; // Encrypted by default\n\n const keysArray = this.toArray(keys);\n const resourcesToFetch: string[] = useCache ? [] : keysArray;\n\n if (useCache) {\n await Promise.all(\n keysArray.map(async (key) => {\n const data = await this.getCachedItemInternalAsync(this.idbService.resources, key.toString(), encrypted, updateCache);\n if (data) {\n result[key] = data;\n } else {\n // add to resources to get from server\n resourcesToFetch.push(key);\n }\n })\n );\n }\n\n // Get any resources not found in cache (if supported, if not get all requested resources)\n if (resourcesToFetch.length) {\n const resourcesData = await this.getResourcesFromServerAsync(resourcesToFetch);\n if (resourcesData != null) {\n resourcesToFetch.forEach((key) => {\n const data = resourcesData[key];\n\n // add or update to cache\n if (updateCache && data) {\n this.updateCachedItemInternalAsync(this.idbService.resources, key, data, encrypted).fireAndForget();\n }\n\n if (data) {\n result[key] = data;\n }\n });\n }\n }\n\n // Only return the data directly if only request a single resource\n return Array.isArray(keys) ? result : Object.values(result)[0] ?? null;\n }\n\n private async getCachedItemInternalAsync(table: Dexie.Table | null, key: string, useEncryption?: boolean, updateCache?: boolean): Promise {\n const useCache = this.idbService.isIDBSupported(); // Defaults to not bypassing cache\n const update = useCache && (updateCache ?? true);\n const encrypted = useEncryption ?? true; // Encrypted by default\n\n if (useCache && table && key) {\n this.loggerService.traceDebug(`Getting cached data with key ${key}`);\n const storeData = (\n await table.get(key).catch((error) => {\n this.loggerService.traceError(`Error trying to access item in cache`, error);\n return undefined;\n })\n )?.data;\n\n if (storeData) {\n if (update) {\n this.updateLastAccess(table, key, storeData);\n }\n\n // Decrypt if needed.\n return encrypted ? await this.decryptAsync(storeData) : storeData;\n }\n }\n return null;\n }\n\n private updateLastAccess(table: Dexie.Table, key: string, storeData: string) {\n // Update the DB (LastAccess) [Background]\n table\n .put({\n id: key,\n data: storeData,\n lastAccess: Date.now(),\n })\n .catch((e) => {\n this.loggerService.traceError(`Error trying to update last access item in cache`, e);\n });\n }\n\n private async updateCachedItemInternalAsync(table: Dexie.Table | null, key: string, data: string, useEncryption?: boolean): Promise {\n const useCache = this.idbService.isIDBSupported(); // Defaults to not bypassing cache\n const encrypted = useEncryption ?? true; // Encrypted by default\n // Add or update to cache\n if (useCache && table && key && data) {\n this.loggerService.traceDebug(`Updating item in cache with id ${key}, will be encrypted: ${encrypted}`, data);\n let storeData: string | null = data;\n\n // Do we need to encrypt the data?\n if (encrypted) {\n storeData = await this.encryptAsync(data);\n if (!storeData) {\n this.loggerService.traceDebug(`Failed to update item in cache because data it could not be encrypted`);\n }\n }\n\n // Ensure the data is still valid and update the cache\n if (storeData) {\n this.updateLastAccess(table, key, storeData);\n // Success!\n return true;\n }\n }\n // Something did not succeed updating the cache\n return false;\n }\n\n /**\n * Create a map-like object with entityIds as key and the rest of the properties as a value\n *\n * @example\n * createPropsByEntityIdMap([{ entity: 'myguid', prop1: '1', prop2: '2'}, ...]) // Returns { 'myguid': { 'entity': 'myguid', prop1: '1', prop2: '2' }, ... }\n */\n private createPropsByEntityIdMap(\n entities: ({ entity: IEntity | IGuid | string } & Record)[],\n uniqueIdPropNamePath = 'entity'\n ): Record> {\n const result = entities.reduce((map, obj) => {\n const id = get(obj, uniqueIdPropNamePath);\n if (isGuid(id)) {\n const idString = id.toString();\n map[idString] = {};\n Object.entries(obj).forEach(([key, value]) => {\n map[idString][key] = value;\n });\n }\n return map;\n }, {} as Record>);\n return result;\n }\n\n private createCustomIconCacheKey(customIconId: IGuid | string, state?: CustomIconState) {\n return `${customIconId.toString()}${state || ''}`;\n }\n\n private async encryptAsync(data: string): Promise {\n try {\n this.loggerService.traceDebug('Encrypting data', data);\n // fetch the encryption key from server when needed\n if (!this.encryptionKey) {\n // retrieve the encryption key from server and cache it\n this.loggerService.traceDebug(`Getting encryption key from backend`);\n this.encryptionKey = await this.resourcesClient.getEncryptionKey().toPromise();\n }\n\n // ensure we have a valid encryption key\n if (this.encryptionKey && this.encryptionKey.type.toLowerCase() === 'aes') {\n const encrypted = CryptoJS.AES.encrypt(data, this.encryptionKey.key, { mode: CryptoJS.mode.ECB });\n return encrypted.toString();\n }\n } catch (e) {\n this.loggerService.traceWarning('Could not encrypt data', data, e);\n }\n return null;\n }\n\n private async decryptAsync(encrypted: string): Promise {\n try {\n this.loggerService.traceDebug('Decrypting data', encrypted);\n // fetch the encryption key from server when needed\n if (!this.encryptionKey) {\n // retrieve the encryption key from server and cache it\n this.loggerService.traceDebug(`Getting encryption key from backend`);\n this.encryptionKey = await this.resourcesClient.getEncryptionKey().toPromise();\n }\n\n // ensure we have a valid encryption key\n if (this.encryptionKey && this.encryptionKey.type.toLowerCase() === 'aes') {\n const decrypted = CryptoJS.AES.decrypt(encrypted, this.encryptionKey.key, { mode: CryptoJS.mode.ECB });\n return decrypted.toString(CryptoJS.enc.Utf8);\n }\n } catch (error) {\n this.loggerService.traceWarning(`Could not decrypt data`, error);\n }\n return null;\n }\n\n private async getResourcesFromServerAsync(resources: string[]): Promise | null> {\n if (!resources.length) return null;\n\n this.loggerService.traceDebug(`Getting resource from server`, resources);\n const data = await this.resourcesClient.getResources(resources).toPromise();\n\n if (!data) {\n this.loggerService.traceWarning(`Resources not found`);\n }\n\n return data;\n }\n\n private toArray(obj: T | T[]): T[] {\n return Array.isArray(obj) ? obj : [obj];\n }\n\n //#region Events\n\n private onLogonStateChanged(e: LogonStateChangedArgs) {\n // On logoff, clear the encryption key\n if (!e.loggedOn()) {\n this.encryptionKey = null;\n }\n }\n\n //#endregion\n}\n","
\n \n \n
\n\n
\n \n \n
\n
\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { ResourcesService } from '@modules/shared/services/resources/resources.service';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-custom-icon',\n templateUrl: './custom-icon.component.html',\n styleUrls: ['./custom-icon.component.scss'],\n animations: [\n trigger('showAnimation', [transition(':enter', [style({ opacity: 0 }), animate('250ms', style({ opacity: 1 }))])]),\n trigger('leaveAnimation', [transition(':leave', [style({ opacity: 0.25 }), animate('250ms', style({ opacity: 0 }))])]),\n ],\n})\nexport class CustomIconComponent implements OnInit, OnChanges {\n @Input() public icon?: Icon | string | null = Icon.Info;\n\n @Input() public size?: 'small' | 'medium' | 'large' | '' = 'medium';\n\n @Input() public color?: string;\n\n @Input() public entityId?: IGuid | string | null = SafeGuid.EMPTY;\n\n @Input() public customIconId?: IGuid | string | null;\n\n @Input() public customIconState?: CustomIconState | null;\n\n @Input() public iconFontSizePx?: number;\n\n @Input() public customIconWidthPx?: number;\n\n @Input() public customIconHeightPx?: number;\n\n public customIconSrc?: string;\n\n public isLoading = false;\n\n private loadingFailed = false;\n\n constructor(private resourcesService: ResourcesService, private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n let needReloadCustomIcon = false;\n if (changes.customIconId) {\n needReloadCustomIcon = !toGuid(changes.customIconId?.previousValue).equals(toGuid(changes.customIconId?.currentValue));\n }\n\n if (!needReloadCustomIcon && changes.customIconState) {\n needReloadCustomIcon = changes.customIconState?.previousValue !== changes.customIconState?.currentValue;\n }\n\n if (this.icon?.startsWith('data:image/')) {\n this.customIconSrc = this.icon;\n needReloadCustomIcon = false;\n }\n\n if (needReloadCustomIcon) {\n this.loadCustomIcon();\n }\n }\n\n public isGenIconShowing(): boolean {\n return this.loadingFailed || !this.customIconSrc || (this.isLoading && !(this.customIconId && isNonEmptyGuid(this.customIconId)));\n }\n\n private loadCustomIcon() {\n const customIconId = toGuid(this.customIconId);\n const entity = toGuid(this.entityId);\n\n if (isNonEmptyGuid(customIconId) && isNonEmptyGuid(entity)) {\n // Flag is Loading after a second in case custom icon comes in fast. Otherwise show loading.\n const timeout = setTimeout(() => {\n this.isLoading = true;\n }, 1000);\n\n this.resourcesService\n .getCustomIconAsync([{ customIconId, entity, state: this.customIconState ?? undefined }])\n .then((result) => {\n const customIconIdSrc = entity ? result[entity.toString()] : undefined;\n this.customIconSrc = customIconIdSrc ? `data:image/png;base64,${customIconIdSrc}` : '';\n this.cdRef.detectChanges();\n })\n .catch(() => {\n this.customIconSrc = '';\n })\n .finally(() => {\n this.loadingFailed = !this.customIconSrc;\n\n if (this.isLoading) {\n // Clear loading flag a bit later to allow animation if went from loading to custom icon\n\n setTimeout(() => {\n this.isLoading = false;\n }, 750);\n }\n\n clearTimeout(timeout);\n })\n .fireAndForget();\n } else {\n this.customIconSrc = '';\n }\n }\n}\n","import { MeltedIcon } from '@genetec/gelato-angular';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { EventDispatcher } from 'RestClient/Helpers/Helpers';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport class BrowserItem {\n public canExpand = false;\n public children: BrowserItem[] | null = null;\n public collapsed = new EventDispatcher();\n public expanded = new EventDispatcher();\n public htmlElement!: HTMLElement;\n public icon = MeltedIcon.None;\n public image?: string;\n public isChecked = false;\n public isExpanding = false;\n public isPartialChecked?: boolean;\n public parent: BrowserItem | null = null;\n public sortPriority = -1;\n public text = '';\n public customIconId?: IGuid;\n public customIconState = CustomIconState.All;\n public itemId = SafeGuid.newGuid().toString();\n\n public get id(): string {\n const parentId = this.parent?.id ?? '';\n return `${parentId}.${this.itemId}`;\n }\n\n public get isExpanded(): boolean {\n return this.itemExpanded;\n }\n\n public set isExpanded(value: boolean) {\n if (!this.canExpand) {\n return;\n }\n\n const oldValue = this.itemExpanded;\n this.itemExpanded = value;\n\n if (value && !this.children && !this.isExpanding) {\n this.expanded.dispatch(this);\n } else if (!value && oldValue) {\n this.collapsed.dispatch(this);\n }\n }\n\n protected itemExpanded = false;\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { BrowserItem } from './items/browser-item';\n\n// Directive that outputs an event when the element's width or height changes\n@Directive({\n selector: '[appEntityBrowserKeyboardNavigation]',\n})\nexport class EntityBrowserKeyboardNavigationDirective implements OnChanges {\n @Input() public browserItem!: BrowserItem;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.browserItem !== 'undefined') {\n const change = changes.browserItem;\n const browserItem = change.currentValue as BrowserItem;\n if (browserItem && change.previousValue !== browserItem) {\n this.browserItem = browserItem;\n this.browserItem.htmlElement = this.elementRef.nativeElement as HTMLElement;\n }\n }\n }\n}\n","import 'reflect-metadata';\n\nimport { IGuid } from 'safeguid';\nimport { MeltedIcon } from '@genetec/gelato-angular'; // mmmm for plugins ?\nimport { Injector } from '@angular/core';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FeatureFlag } from '@modules/feature-flags/feature-flag';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Used to identify and set properties for a plugin\n */\ninterface PluginDescriptorBase {\n /**\n * Plugin types supported by this plugin\n */\n pluginTypes: IGuid[];\n\n /**\n * exposure data of a plugin (this is used to show the plugin appearance or location, like a button or icon)\n */\n exposure: PluginComponentExposure;\n\n /**\n * requirements for this plugin to be displayed\n */\n requirements?: PluginComponentRequirements;\n}\n\nexport interface PluginDescriptor extends PluginDescriptorBase {\n /**\n * indicates if this plugin is supported for a particular data\n */\n isSupported(data: unknown, pluginType: IGuid, injector: Injector): boolean;\n}\n\nexport interface ContentPluginDescriptor extends PluginDescriptorBase {\n /**\n * indicates if this plugin is supported for a particular data\n */\n isContentSupported(data: Content, pluginType: IGuid, injector: Injector): boolean;\n}\n\nexport interface PluginComponent {\n /**\n * data context to interract with the plugin\n */\n setDataContext?(dataContext: unknown): void;\n}\n\nexport interface MetadataPluginComponent extends PluginComponent {\n /**\n * initData that will be passed to this plugin to interact with at the instanciation of it\n */\n setInitData?(initData: unknown): void;\n}\n\nexport interface ContentPluginComponent extends PluginComponent {\n /**\n * content that will be passed to this plugin to interact with at the instanciation of it\n */\n setContent?(content: Content): void;\n}\n\n/**\n * when the plugin wants to add a command\n */\nexport interface PluginCommand {\n /**\n * the command id that will be called\n */\n id: IGuid;\n\n /**\n * name of the command (method here to always have right language)\n */\n name: () => string;\n\n /**\n * icon of the command\n */\n icon: MeltedIcon;\n\n /**\n * text of the command (method here to always have right language)\n */\n tooltip?: () => string;\n\n /**\n * color of the command's icon\n */\n color?: () => string;\n\n /**\n * Section where the command goes under\n */\n sectionName?: () => string;\n\n /**\n * Folder group where the command goes\n */\n groupName?: () => string;\n\n /**\n * icon representing the section\n */\n groupIcon?: MeltedIcon;\n\n /**\n * Keys to press to execute command\n */\n keyBinding?: string;\n}\n\n/**\n * exposure data of a plugin (normaly this is used to show the plugin first appearance, like a button or icon)\n */\nexport interface PluginComponentExposure {\n /**\n * id of the plugin\n */\n id: IGuid;\n\n /**\n * title to display\n */\n title?: string;\n\n /**\n * icon to be used\n */\n icon?: string;\n\n /**\n * plugin sub Section (usefull to indicate another placement location inside the plugin container if the plugin container supports it)\n */\n subSection?: IGuid;\n\n /**\n * priority where the plugin will be instanciated compared to others that support the same data\n */\n priority?: number;\n\n /**\n * list of tags that represent this component\n */\n tags?: string[];\n\n /**\n * indicates if this plugin is dependant of another, meaning it will not be exposed if the dependant plugin is not there.\n */\n requiredParentPlugin?: IGuid;\n\n /**\n * all available commands for this plugin\n */\n availableCommands?: IGuid[];\n\n /**\n * indicates if multiple data using this plugin type can be navigated through a carousel or if multiple instances of the plugin must be created\n */\n supportsCarousel?: boolean;\n\n /**\n * Sub task plugin type\n */\n subTaskPluginType?: IGuid;\n\n /**\n * indicates if the plugin is standalone and should be displayed as one item\n */\n standalone?: boolean;\n}\n\n/**\n * requirement for the plugin to display\n */\nexport interface PluginComponentRequirements {\n /**\n * list of features to be enabled\n */\n features?: IGuid[];\n\n /**\n * list of licenses needed\n */\n licenses?: string[];\n\n /**\n * Global privileges needed\n */\n globalPrivileges?: IGuid[];\n\n /**\n * Global privileges that are verified bu not mandatory\n */\n optionalGlobalPrivileges?: IGuid[];\n\n /**\n * Any feature flag needed (OR)\n */\n enabledFeatureFlags?: FeatureFlag[];\n\n /**\n * All disabled feature flag needed (AND)\n */\n disabledFeatureFlags?: FeatureFlag[];\n}\n\n/**\n * Data group used to interact with within the plugin\n */\nexport interface ContentGroup {\n /**\n * unique id of the content group\n */\n id: IGuid;\n\n /**\n * main content of the group\n */\n mainContent: Content;\n\n /**\n * sub contents adding data to the main content\n */\n subContents: Content[];\n}\n\n/**\n * specific data used to interact with within the plugin\n * */\nexport interface Content {\n /**\n * unique id of the content\n */\n id: IGuid;\n\n /**\n * type of the content\n */\n type: IGuid;\n\n /**\n * title of the content\n */\n title: string;\n\n /**\n * small description of the content\n */\n description: string;\n\n /**\n * icon representing this content\n */\n icon: string;\n\n /**\n * custom icon representing this content if there is one\n */\n customIconId?: IGuid;\n\n /**\n * color assigned to this content\n */\n color: string;\n\n /**\n * source of the content\n */\n source: string;\n\n /**\n * the mainContent of its group (null if mainContent itself)\n */\n /**\n * this is usefull to know the context as of what to display\n */\n contextContent: Content | null;\n\n /**\n * other sub contents of the group\n */\n contextsubContents: Content[] | null;\n\n /**\n * any relevent data attached to the content\n */\n parameters: IFieldObject | null;\n\n /**\n * privileges related to this content\n */\n grantedPrivileges: IGuid[];\n}\n\nexport enum DisplayContext {\n Unknown = 0,\n MapPopup = 1,\n Sidepane = 2,\n}\n\nexport interface LicensePartsState {\n [licensePart: string]: boolean;\n}\nexport interface PluginContext {\n /**\n * Specify the context where the plugin is displayed\n */\n displayContext: DisplayContext;\n}\n\n// #region Decorators for plugins\n\n/**\n * Metadata key to identify the data inserted using reflection for the PluginDescriptor decorator\n */\nexport const MetadataKey = 'PluginDescriptorMetadataKey';\nexport const PluginDescriptor = (pluginDescriptor: PluginDescriptor): ((constructor: new (...args: any[]) => any) => void) => {\n return (constructor: new (...args: any[]) => any) => {\n Reflect.defineMetadata(MetadataKey, pluginDescriptor, constructor);\n };\n};\n","class FeatureFlagSymbol extends String {\n public key: string;\n public defaultValue: boolean;\n\n constructor(featureFlagKey: string, defaultValue = false) {\n super(featureFlagKey);\n this.key = featureFlagKey;\n this.defaultValue = defaultValue;\n }\n\n public isEnabled(advancedSettingsService: any): boolean {\n return advancedSettingsService.get(this.key, this.defaultValue);\n }\n}\n\nexport type FeatureFlag = FeatureFlagSymbol & string;\n\nexport const CreateFeatureFlag = (featureFlagKey: string, defaultValue = false): FeatureFlag => {\n return new FeatureFlagSymbol(featureFlagKey, defaultValue) as FeatureFlag;\n};\n\nexport const CreateFeatureFlagGroup = >(obj: T): DetailedFeatureFlagGroup => {\n return Object.freeze(obj);\n};\n\nexport type DetailedFeatureFlagGroup> = Record;\n\n/**\n * Feature flag group that has its feature flags already evaluated.\n */\nexport type FeatureFlagGroup = Record;\n","import { CreateFeatureFlag, CreateFeatureFlagGroup } from '@modules/feature-flags/feature-flag';\n\nexport const AccessControlFeatureFlags = CreateFeatureFlagGroup({\n General: CreateFeatureFlag('Flag.AccessControl', true),\n Cardholders: CreateFeatureFlag('Flag.AccessControl.Cardholders', true),\n AddCardholders: CreateFeatureFlag('Flag.AccessControl.AddCardholders', true),\n CardholdersEditPane: CreateFeatureFlag('Flag.AccessControl.CardholdersEditPane', true),\n CardholderEditPicture: CreateFeatureFlag('Flag.AccessControl.CardholdersEditPane.EditPicture', false),\n EditPaneCreateCredentials: CreateFeatureFlag('Flag.AccessControl.CardholdersEditPane.CreateCredentials', false),\n});\n","import { ComponentFactory, NgModuleRef, Type } from '@angular/core';\nimport { PluginComponentExposure } from '../public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class PluginItem {\n constructor(\n /**\n * The Component's type to be created for that plugin.\n */\n public type: Type,\n public componentFactory: ComponentFactory,\n public data: unknown,\n public exposure: PluginComponentExposure,\n public subTaskPlugins: PluginItem[],\n public ngModule?: NgModuleRef,\n public commandTarget?: Element\n ) {}\n}\n","// Autogenerated: CodeGen/ExternalPluginDescriptor?language=ts&InterfaceOnly=True on 2020-08-21 8:19:16 AM\n// Autogenerated: CodeGen/ExternalPluginDescriptor?language=ts&InterfaceOnly=False on 2020-08-21 8:19:16 AM\n// Autogenerated: CodeGen/ExternalPluginDependency?language=ts&InterfaceOnly=True on 2020-08-21 8:19:16 AM\n// Autogenerated: CodeGen/ExternalPluginDependency?language=ts&InterfaceOnly=False on 2020-08-21 8:19:16 AM\n// Autogenerated: CodeGen/ModulePluginDescriptor?language=ts&InterfaceOnly=True on 2020-08-21 8:19:16 AM\n// Autogenerated: CodeGen/ModulePluginDescriptor?language=ts&InterfaceOnly=False on 2020-08-21 8:19:16 AM\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport interface IExternalPluginDescriptor extends IFieldObject {\n packageFileName: string;\n pluginDescriptor: IModulePluginDescriptor;\n dependencies: ObservableCollection;\n}\n\nexport class ExternalPluginDescriptor extends FieldObject implements IExternalPluginDescriptor {\n // PackageFileName\n public get packageFileName(): string {\n return this.getField('PackageFileName');\n }\n public set packageFileName(value: string) {\n this.setField('PackageFileName', value);\n }\n // PluginDescriptor\n public get pluginDescriptor(): IModulePluginDescriptor {\n return this.getFieldObject(ModulePluginDescriptor, 'PluginDescriptor');\n }\n public set pluginDescriptor(value: IModulePluginDescriptor) {\n this.setFieldObject('PluginDescriptor', value);\n }\n // Dependencies\n public get dependencies(): ObservableCollection {\n return this.getFieldObjectArray(ExternalPluginDependency, 'Dependencies');\n }\n public set dependencies(value: ObservableCollection) {\n this.setFieldObjectArray('Dependencies', value);\n }\n\n public initializeAllFields(): void {\n this.setField('PackageFileName', '');\n const objPluginDescriptor = new ModulePluginDescriptor();\n objPluginDescriptor.initializeAllFields();\n this.setFieldObject('PluginDescriptor', objPluginDescriptor);\n this.setFieldArray('Dependencies', new ObservableCollection());\n }\n}\n\nexport interface IExternalPluginDependency extends IFieldObject {\n key: string;\n libraryName: string;\n}\n\nexport class ExternalPluginDependency extends FieldObject implements IExternalPluginDependency {\n // Key\n public get key(): string {\n return this.getField('Key');\n }\n public set key(value: string) {\n this.setField('Key', value);\n }\n // LibraryName\n public get libraryName(): string {\n return this.getField('LibraryName');\n }\n public set libraryName(value: string) {\n this.setField('LibraryName', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Key', '');\n this.setField('LibraryName', '');\n }\n}\n\nexport interface IModulePluginDescriptor extends IFieldObject {\n moduleClassType: string;\n componentType: string;\n pluginType: IGuid;\n}\n\nexport class ModulePluginDescriptor extends FieldObject implements IModulePluginDescriptor {\n // ModuleClassType\n public get moduleClassType(): string {\n return this.getField('ModuleClassType');\n }\n public set moduleClassType(value: string) {\n this.setField('ModuleClassType', value);\n }\n // ComponentType\n public get componentType(): string {\n return this.getField('ComponentType');\n }\n public set componentType(value: string) {\n this.setField('ComponentType', value);\n }\n // PluginType\n public get pluginType(): IGuid {\n return this.getFieldGuid('PluginType');\n }\n public set pluginType(value: IGuid) {\n this.setFieldGuid('PluginType', value);\n }\n\n public initializeAllFields(): void {\n this.setField('ModuleClassType', '');\n this.setField('ComponentType', '');\n this.setFieldGuid('PluginType', SafeGuid.EMPTY);\n }\n}\n","// Autogenerated: CodeGen/PluginsController?language=ts&InterfaceOnly=False on 2021-04-21 3:54:24 PM\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { ExternalPluginDescriptor, IExternalPluginDescriptor } from './plugins.controller.data';\nimport { IPluginsController } from './plugins.controller.interfaces';\n\nexport class PluginsController extends RestObject implements IPluginsController {\n constructor() {\n super('api/Plugins');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async getExternalDescriptorsAsync(pluginType: IGuid, transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(ExternalPluginDescriptor, 'ExternalDescriptors/' + pluginType, 'pluginType', true, false, null, transaction);\n }\n\n // #endregion Rest Methods\n\n}\n","import { Injectable } from '@angular/core';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdvancedSettingsService {\n private scClient: WebAppClient;\n\n constructor(securityCenterClientService: SecurityCenterClientService) {\n this.scClient = securityCenterClientService?.scClient;\n }\n\n /**\n * Get advanced setting based on the provided key\n *\n * @param fallbackValue Value that will be use if no setting was found or if it has no value\n * @returns The advanced setting in the provided type (string | number | boolean)\n */\n get(key: string, fallbackValue: TType): TType {\n return this.scClient.getAdvancedSetting(key, fallbackValue);\n }\n}\n","import { Injectable, Type, Compiler, Injector, ComponentFactoryResolver } from '@angular/core';\nimport { SafeGuid, IGuid, GuidMap } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { AccessControlFeatureFlags } from '@modules/access-control/feature-flags';\nimport { FeatureFlag } from '@modules/feature-flags/feature-flag';\nimport {\n MetadataKey,\n PluginDescriptor,\n PluginComponent,\n PluginComponentRequirements,\n ContentPluginComponent,\n ContentPluginDescriptor,\n ContentGroup,\n Content,\n LicensePartsState,\n} from '../../interfaces/plugins/public/plugin-public.interface';\nimport { PluginItem } from '../../interfaces/plugins/internal/pluginItem';\nimport { PluginsController } from '../../controllers/plugins/plugins.controller';\nimport { IExternalPluginDescriptor } from '../../controllers/plugins/plugins.controller.data';\nimport { FEATURES_SERVICE } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { LoggerService } from '../logger/logger.service';\nimport { IPluginsController } from '../../controllers/plugins/plugins.controller.interfaces';\nimport { AdvancedSettingsService } from '../advanced-settings/advanced-settings.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PluginService {\n //#region Fields\n\n public static availablePlugins: Type[] = [];\n public static availableContentPlugins: Type[] = [];\n\n private resolvedExternalPluginDescriptors: Map = new Map();\n\n private pluginDescriptorsByPluginTypes = new GuidMap<{ type: Type; descriptor: PluginDescriptor | ContentPluginDescriptor }[]>();\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n private advancedSettingsService: AdvancedSettingsService,\n private compiler: Compiler,\n private injector: Injector,\n private componentFactoryResolver: ComponentFactoryResolver,\n private loggerService: LoggerService\n ) {}\n\n //#endregion\n\n //#region Public Methods\n\n //\n public async getPlugin(pluginType: IGuid, pluginId: IGuid, data?: unknown): Promise {\n const plugins = await this.getPlugins(pluginType, data);\n\n const filteredPlugins = plugins.filter((toFilterPlugin) => toFilterPlugin.exposure.id.equals(pluginId));\n\n return filteredPlugins.length === 0 ? undefined : filteredPlugins[0];\n }\n\n /**\n * Retrieves plugins of given type and that supports the given data.\n *\n * @param pluginType\n * @param data content associated with the plugin\n * @returns list of pluginItems\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n public async getPlugins(pluginType: IGuid, data?: unknown): Promise {\n // external ones, comes from server, disabled for now waiting for module federation\n const externalPlugins: PluginItem[] = []; // = await this.getExternalPlugins(pluginType, data);\n\n // internal ones, already compiled within this app\n const internalPlugins = await this.getInternalPluginsAsync(pluginType, data);\n\n // filter by priority\n let allPlugins = internalPlugins.concat(externalPlugins).sort((p1, p2) => {\n // By default, if no priority is set, apply 1000\n const defaultPriority = 1000;\n const priority1 = p1 === undefined || p1.exposure.priority === undefined ? defaultPriority : p1.exposure.priority;\n const priority2 = p2 === undefined || p2.exposure.priority === undefined ? defaultPriority : p2.exposure.priority;\n\n return priority1 - priority2;\n });\n\n // filter out plugins that have required parent plugins that are not present\n allPlugins = allPlugins.filter(\n (pluginToFilter) => !pluginToFilter.exposure?.requiredParentPlugin || allPlugins.some((plugin) => plugin.exposure.id === pluginToFilter.exposure.requiredParentPlugin)\n );\n\n return allPlugins;\n }\n\n /**\n * @param pluginId The id of the plugin that we are looking the name for\n * @returns If a plugin with the corresponding id exists, returns the name without the class name (ie. removes 'TaskComponent' substring). Else, returns an empty string.\n */\n public getPluginName(pluginId: IGuid): string {\n for (const pluginComponent of PluginService.availablePlugins.concat(PluginService.availableContentPlugins)) {\n const descriptor = this.getPluginDescriptor(pluginComponent);\n if (descriptor?.exposure.id.equals(pluginId)) {\n return pluginComponent.name?.replace('TaskComponent', '') ?? '';\n }\n }\n\n return '';\n }\n\n public getPluginsGlobalPrivileges(): Set {\n const globalPrivileges = SafeGuid.createSet();\n\n for (const pluginComponent of PluginService.availablePlugins.concat(PluginService.availableContentPlugins)) {\n const descriptor = this.getPluginDescriptor(pluginComponent);\n if (descriptor?.requirements) {\n descriptor.requirements.globalPrivileges?.forEach((item) => globalPrivileges.add(item));\n descriptor.requirements.optionalGlobalPrivileges?.forEach((item) => globalPrivileges.add(item));\n }\n }\n\n return globalPrivileges;\n }\n\n public async getPluginsFromContentGroup(pluginType: IGuid, contentGroup: ContentGroup): Promise {\n let plugins = await this.getPlugins(pluginType, contentGroup.mainContent);\n const allPlugins: PluginItem[] = [];\n if (contentGroup.subContents) {\n for (const subContent of contentGroup.subContents) {\n const subPlugins = await this.getPlugins(pluginType, subContent);\n subPlugins.forEach((item) => {\n plugins.push(item);\n });\n }\n }\n\n plugins = plugins.sort((p1, p2) => {\n const priority1 = p1 === undefined || p1.exposure.priority === undefined ? 0 : p1.exposure.priority;\n const priority2 = p2 === undefined || p2.exposure.priority === undefined ? 0 : p2.exposure.priority;\n\n return priority1 - priority2;\n });\n\n return plugins;\n }\n\n /**\n * Retrieve a set of string contaning the name of every license parts used inside the web app\n */\n public getWebAppLicensesPartsFromPlugins(): string[] {\n const licenseParts: Set = new Set();\n\n for (const pluginComponent of [...PluginService.availablePlugins, ...PluginService.availableContentPlugins]) {\n const descriptor = this.getPluginDescriptor(pluginComponent);\n if (descriptor?.requirements) {\n descriptor.requirements.licenses?.forEach((item) => licenseParts.add(item));\n }\n }\n\n return [...licenseParts];\n }\n\n /**\n * Get the licenses state (activated/deactivated) that are used inside the Web App\n *\n * @returns an object which keys correspond to the name of the license part and values to the state.\n */\n public getLicensesPartsState(): LicensePartsState {\n const licenseParts = this.getWebAppLicensesPartsFromPlugins();\n\n const license = this.securityCenterClientService?.scClient?.license;\n const result: LicensePartsState = {};\n if (license) {\n licenseParts.forEach((licensePart) => (result[licensePart] = license.hasLicense(licensePart)));\n }\n\n return result;\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async getInternalPluginsAsync(pluginType: IGuid, data?: unknown): Promise {\n if (this.pluginDescriptorsByPluginTypes.size === 0) {\n for (const pluginComponent of PluginService.availablePlugins.concat(PluginService.availableContentPlugins)) {\n const descriptor = this.getPluginDescriptor(pluginComponent);\n if (descriptor) {\n for (const resolvedPluginType of descriptor.pluginTypes) {\n const existingDescriptorsEntry = this.pluginDescriptorsByPluginTypes.get(resolvedPluginType);\n if (existingDescriptorsEntry) {\n existingDescriptorsEntry.push({ type: pluginComponent, descriptor });\n } else {\n this.pluginDescriptorsByPluginTypes.set(resolvedPluginType, [{ type: pluginComponent, descriptor }]);\n }\n }\n }\n }\n }\n\n const pluginItems: PluginItem[] = [];\n for (const entry of this.pluginDescriptorsByPluginTypes.get(pluginType) ?? []) {\n try {\n if ((await this.allRequirementsSatisfiedAsync(entry.descriptor.requirements)) && this.isSupported(entry.descriptor, data, pluginType)) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(entry.type);\n\n const subTaskPlugins: PluginItem[] = [];\n if (AccessControlFeatureFlags.General.isEnabled(this.advancedSettingsService) && entry.descriptor.exposure.subTaskPluginType != null) {\n const subTasks = await this.getPlugins(entry.descriptor.exposure.subTaskPluginType);\n subTasks.forEach((element) => {\n subTaskPlugins.push(element);\n });\n }\n\n pluginItems.push(new PluginItem(entry.type, factory, data, entry.descriptor.exposure, subTaskPlugins));\n }\n } catch (exception) {\n this.loggerService.traceError(exception);\n }\n }\n\n return pluginItems;\n }\n\n private isSupported(pluginDescriptor: PluginDescriptor | ContentPluginDescriptor, data: unknown, pluginType: IGuid): boolean {\n let isSupported = false;\n if ('isSupported' in pluginDescriptor) {\n const descriptor = pluginDescriptor;\n isSupported = descriptor.isSupported(data, pluginType, this.injector);\n } else if ('isContentSupported' in pluginDescriptor) {\n const descriptor = pluginDescriptor;\n isSupported = descriptor.isContentSupported(data as Content, pluginType, this.injector);\n }\n\n return isSupported;\n }\n\n private async getExternalPlugins(pluginType: IGuid, data?: unknown): Promise {\n // TODO: Left the body here to keep trace of the code, but reference to SystemJS (commented out) will need to be replaced.\n\n const pluginItems: PluginItem[] = [];\n // do not ask server if already processed plugins of this type\n let resolvedPluginDescriptors = this.resolvedExternalPluginDescriptors.get(pluginType.toString());\n try {\n if (resolvedPluginDescriptors === undefined) {\n try {\n const pluginsController = await this.securityCenterClientService?.scClient.getAsync(PluginsController);\n const pluginDescriptors = await pluginsController?.getExternalDescriptorsAsync(pluginType);\n if (pluginDescriptors) {\n resolvedPluginDescriptors = Array.from(pluginDescriptors);\n this.resolvedExternalPluginDescriptors.set(pluginType.toString(), resolvedPluginDescriptors);\n }\n } catch (exception) {\n resolvedPluginDescriptors = [];\n }\n }\n // Webpack bundles all modules into one or several chunks-a bunch of modules packaged in a single file.\n // SystemJS can also do that but in this respect it’s much more limited than Webpack.\n // Where they differ the most is when it comes to loading modules dynamically.\n // While SystemJS can load any module dynamically on demand during runtime, Webpack can only dynamically load chunks defined and created during build time.\n if (resolvedPluginDescriptors) {\n for (const descriptor of resolvedPluginDescriptors) {\n if (descriptor.dependencies !== null) {\n for (const dependency of descriptor.dependencies) {\n // SystemJS.config({\n // map: {\n // [dependency.key]: dependency.libraryName,\n // },\n // });\n }\n }\n const module = {} as Record>; // (await SystemJS.import(descriptor.packageFileName)) as Record>;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const moduleType = module[descriptor.pluginDescriptor.moduleClassType];\n const moduleWithFactories = await this.compiler.compileModuleAndAllComponentsAsync(moduleType);\n const ngModule = moduleWithFactories.ngModuleFactory.create(this.injector);\n const factory = moduleWithFactories.componentFactories.find((x) => x.componentType.name === descriptor.pluginDescriptor.componentType);\n if (factory !== undefined) {\n const pluginDescriptor = this.getPluginDescriptor(factory.componentType);\n if (pluginDescriptor && (await this.allRequirementsSatisfiedAsync(pluginDescriptor.requirements)) && this.isSupported(pluginDescriptor, data, pluginType)) {\n const subTaskPlugins: PluginItem[] = [];\n if (AccessControlFeatureFlags.General.isEnabled(this.advancedSettingsService) && pluginDescriptor.exposure.subTaskPluginType != null) {\n const subTasks = await this.getPlugins(pluginDescriptor.exposure.subTaskPluginType);\n subTasks.forEach((element) => {\n subTaskPlugins.push(element);\n });\n }\n pluginItems.push(new PluginItem(factory.componentType, factory, data, pluginDescriptor.exposure, subTaskPlugins, ngModule));\n }\n }\n }\n }\n } catch (exception) {\n this.loggerService.traceError(exception);\n }\n return pluginItems;\n }\n\n private async allRequirementsSatisfiedAsync(requirements: PluginComponentRequirements | undefined) {\n return (\n !requirements ||\n ((await this.isFeatureSupportedAsync(requirements.features)) &&\n this.isLicenseSupported(requirements?.licenses) &&\n this.isGlobalPrivilegeSupported(requirements?.globalPrivileges) &&\n this.areFeatureFlagsEnabled(requirements?.enabledFeatureFlags) &&\n this.areFeatureFlagsDisabled(requirements?.disabledFeatureFlags))\n );\n }\n\n private isLicenseSupported(licenseRequired: string[] | undefined): boolean {\n if (!licenseRequired || licenseRequired.length === 0) {\n return true;\n }\n\n const license = this.securityCenterClientService?.scClient?.license;\n return license ? licenseRequired.some((item) => license.hasLicense(item)) : true;\n }\n\n private async isFeatureSupportedAsync(featuresRequired: IGuid[] | undefined): Promise {\n // 1st check that some features are requested\n if (featuresRequired?.length && featuresRequired.length > 0) {\n // now retrieve the feature service (only needed if some features are requested)\n const featuresService = this.injector.get(FEATURES_SERVICE, null);\n const features = await featuresService?.getFeaturesAsync();\n if (features?.size && features.size > 0) {\n // check every feature in turn\n return featuresRequired.every((value) => {\n return features.has(value);\n });\n }\n // Make sure to return false if we don't have any feature available\n return false;\n }\n // unable to get any features or doesn't require any features\n return true;\n }\n\n private isGlobalPrivilegeSupported(globalPrivileges: IGuid[] | undefined): boolean {\n const scClient = this.securityCenterClientService?.scClient;\n\n if (!globalPrivileges || globalPrivileges.length === 0) {\n return true;\n }\n\n return globalPrivileges.some((value) => {\n if (scClient.isGlobalPrivilegeGranted(value)) {\n return true;\n }\n return false;\n });\n }\n\n private areFeatureFlagsEnabled(enabledFeatureFlags?: FeatureFlag[]): boolean {\n return enabledFeatureFlags ? enabledFeatureFlags.some((featureFlag) => featureFlag.isEnabled(this.advancedSettingsService)) : true;\n }\n\n private areFeatureFlagsDisabled(disabledFeatureFlags?: FeatureFlag[]): boolean {\n return disabledFeatureFlags ? disabledFeatureFlags.every((featureFlag) => !featureFlag.isEnabled(this.advancedSettingsService)) : true;\n }\n\n // supposed to be memoized... to verify\n private getPluginDescriptor(type: Type): PluginDescriptor | ContentPluginDescriptor | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n return Reflect.getMetadata(MetadataKey, type.prototype.constructor) as PluginDescriptor | ContentPluginDescriptor | undefined;\n } catch (e) {\n this.loggerService.traceError(`Unable to find plugin descriptor of plugin ${type.name}, details: ${(e as Error).message}`);\n }\n }\n\n //#endregion\n}\n","import 'reflect-metadata';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { PluginDescriptor, ContentPluginDescriptor, MetadataKey } from '../public/plugin-public.interface';\nimport { PluginService } from '../../../services/plugin/plugin.service';\nimport { Content } from '../public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n// This interface is used to create plugin inside this app directly\nexport interface InternalPluginDescriptor extends PluginDescriptor {\n /**\n * @deprecated PluginDescriptor now uses the class' the decorator is on as type, do not use this property.\n *\n * TODO: Remove all uses of type property in all modules.\n */\n type?: Constructor;\n}\n\nexport interface InternalContentPluginDescriptor extends ContentPluginDescriptor {\n /**\n * @deprecated PluginDescriptor now uses the class' the decorator is on as type, do not use this property.\n *\n * TODO: Remove all uses of type property in all modules.\n */\n type?: Constructor;\n}\n\ntype Constructor = new (...args: any[]) => T;\n\nconst PluginDescriptorImpl = (pluginDescriptor: InternalPluginDescriptor | InternalContentPluginDescriptor): ((constructor: Constructor) => void) => {\n return (constructor: Constructor) => {\n PluginService.availablePlugins.push(pluginDescriptor.type ?? constructor);\n Reflect.defineMetadata(MetadataKey, pluginDescriptor, constructor);\n };\n};\n\nexport const InternalPluginDescriptor = (pluginDescriptor: InternalPluginDescriptor): ((constructor: Constructor) => void) => PluginDescriptorImpl(pluginDescriptor);\n\nexport const InternalContentPluginDescriptor = (pluginDescriptor: InternalContentPluginDescriptor): ((constructor: Constructor) => void) => PluginDescriptorImpl(pluginDescriptor);\n\nexport interface ContentLoadingSupport {\n setLoadingMainContent(): void;\n}\n\nexport class ContentLoad implements Content {\n public static typeId = SafeGuid.parse('846FAC1E-63D6-4D82-9D45-EE10B33DA13E');\n public id: IGuid = SafeGuid.EMPTY;\n public type: IGuid = ContentLoad.typeId;\n public title = '';\n public description = '';\n public icon = '';\n public customIconId = SafeGuid.EMPTY;\n public customIconState = CustomIconState.All;\n public color = '';\n public source = '';\n public contextContent = null;\n public contextsubContents = [];\n public parameters = null;\n public grantedPrivileges = [];\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../../../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport const PluginTypes = Constants({\n /**\n * Plugins of this type will be rendered in the left hand side nav bar\n */\n Task: SafeGuid.parse('BCA27DB8-BB36-4AE4-A554-61BC6226F8C7'),\n\n /**\n * Plugins of this type will be rendered in the tasks's sidepane\n */\n AccessControlSubTask: SafeGuid.parse('1EE7BF28-70BC-4749-9526-E1CB2FBE88F9'),\n\n /**\n * Plugins of this type will be rendered in the top right corner of the app (application tray)\n */\n Tray: SafeGuid.parse('86DB5251-048E-492E-931C-9854C1AC3E7B'),\n\n /**\n * Plugins of this type will be rendered at the bottom of the left hand side nav bar\n */\n NavBarExtension: SafeGuid.parse('1E56B59F-C779-440D-9437-E04AB13F7DDD'),\n\n /**\n * Plugins of this type will be rendered in the tile task\n */\n Tile: SafeGuid.parse('500CF7EE-5F0B-4B78-A54C-4B925C549815'),\n\n /**\n * Plugins of this type will be rendered in the right hand side pane. sidepane plugins are called widgets.\n */\n Widget: SafeGuid.parse('BF6B5AF6-1F7F-4F47-A3AE-4E0200E10C05'),\n\n /**\n * Plugins of this type will be rendered inside the dashboard task\n */\n Dashboard: SafeGuid.parse('A2AA46CB-020E-4DEC-81DA-C77BE5AD158F'),\n\n /**\n * Plugins of this type will be rendered in the Options dialog as submenus\n */\n Option: SafeGuid.parse('15D0D94A-DF90-4CDB-A8EC-CB755436F063'),\n\n /**\n * Plugins of this type will be rendered in the reports task\n */\n Filter: SafeGuid.parse('F2F65026-8311-4C37-A7D4-9E7562147004'),\n\n /**\n * Plugins of this type will be rendered as soon as there is an event triggered on the map, or a mouse hover is issued.\n */\n MapPopupCompact: SafeGuid.parse('2C1B1BF8-F3FD-410B-BFF8-14CDFF193D77'),\n\n /**\n * Plugins of this type will replace the MapPopupCompact content on mouse hover.\n * When mouse out is issued, the content will be replaced back to MapPopupCompact.\n */\n MapPopupExpand: SafeGuid.parse('A801EAE0-1249-414A-A64F-49760B9C58B6'),\n\n /**\n * Plugins of this type will be rendered in the MapTaskTray (Left of Map Layers action icon).\n */\n MapTray: SafeGuid.parse('9D3E77A8-3B1E-4CE1-AA2A-F37A3B3D9095'),\n\n /**\n * Plugins of this type will be rendered on top of their supported Tile\n *\n * @example The app-door-entity-state displayed over as dragged door on a tile\n */\n TileHeader: SafeGuid.parse('523FF5CD-ED11-43AF-90EC-2963B0BA0FFE'),\n\n /**\n * Plugins of this type will be rendered on top of the side pane\n *\n * @example The watchlist-sidepane-header displayed when we open the event monitoring task in the side pane\n */\n SidePaneHeader: SafeGuid.parse('EF3F895B-DA54-4209-8B16-34F8831FEBE7'),\n});\n\n/**\n * Various \"tabs\" that appears on the left hand side of the options dialog.\n */\nexport const OptionSubSections = Constants({\n General: SafeGuid.parse('2E6D5B14-BBE1-4AE8-AA19-E68ABCD0C235'),\n Peripherals: SafeGuid.parse('E84E2CD6-5ADA-453A-89E2-E24C62ADBD86'),\n Advanced: SafeGuid.parse('01F32B50-9EAD-4890-8F6E-0928E21A8C26'),\n Video: SafeGuid.parse('B5163DCE-30D5-47FA-8D03-9C0B43E85E7E'),\n Events: SafeGuid.parse('22BE457C-E0DA-417A-AB59-119718015221'),\n Map: SafeGuid.parse('59E37707-C77E-C7F4-11CE-9A9449077EBB'),\n Tiles: SafeGuid.parse('44E0E750-8288-43B0-B138-41323A3F2DA0'),\n});\n\nexport const TraySubSections = Constants({\n /**\n * Default value when PluginType is Tray.\n */\n MainBar: SafeGuid.parse('13CD4507-7311-4B29-A49B-988F5EB2381C'),\n\n /**\n * Tray items displayed under a caret to preserve Tray real estate.\n */\n Secondary: SafeGuid.parse('1C252E13-EE3D-4C64-B570-1509DFAB3610'),\n});\n","/**\n * Coercing boolean properties means that the user can add the property \"gen-destructive\"\n * as a boolean input, instead of having to specify the boolean value like so \"gen-destructive='true'\".\n */\nexport const coerceBooleanProperty = (value: unknown): boolean => {\n return value !== null && `${value as boolean}` !== 'false';\n};\n","/* eslint-disable */\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Content, ContentGroup } from '../interfaces/plugins/public/plugin-public.interface';\n\nexport class ContentSerializer {\n public static deserializeContentGroup(json: string): ContentGroup | null {\n if (json) {\n const obj = JSON.parse(json);\n const mainContent = this.deserializeContent(obj.mainContent);\n const result: ContentGroup = { id: obj.id, mainContent: mainContent as Content, subContents: [] };\n\n return result;\n }\n return null;\n }\n\n public static deserializeContent(json: string): Content | null {\n if (json) {\n const obj = JSON.parse(json);\n\n const parameters = new FieldObject();\n parameters.fromJson(obj.parameters);\n const grantedPrivileges: IGuid[] = [];\n (obj.grantedPrivileges as string[]).forEach((x) => grantedPrivileges.push(SafeGuid.parse(x)));\n\n const result: Content = {\n id: SafeGuid.parse(obj.id),\n type: SafeGuid.parse(obj.type),\n title: obj.title,\n description: obj.description,\n icon: obj.icon,\n customIconId: obj.customIconId,\n source: obj.source,\n parameters,\n contextContent: null,\n contextsubContents: null,\n grantedPrivileges,\n color: obj.color,\n };\n\n return result;\n }\n return null;\n }\n\n public static serializeContentGroup(contentGroup: ContentGroup): string {\n if (contentGroup) {\n const mainContent = ContentSerializer.serializeContent(contentGroup.mainContent);\n const obj: { id: string; mainContent: string } = { id: contentGroup.id.toString(), mainContent };\n const data = JSON.stringify(obj);\n return data;\n }\n return '';\n }\n\n public static serializeContent(content: Content): string {\n if (content) {\n let parameters = '';\n if (content.parameters) {\n parameters = content.parameters.toString();\n }\n\n const grantedPrivileges: string[] = [];\n if (content.grantedPrivileges) {\n content.grantedPrivileges.forEach((x) => grantedPrivileges.push(x.toString()));\n }\n\n const obj: { id: string; type: string; title: string; description: string; icon: string; customIconId?: string, source: string; parameters: string; grantedPrivileges: string[] } = {\n id: content.id.toString(),\n type: content.type.toString(),\n title: content.title.toString(),\n description: content.description.toString(),\n icon: content.icon.toString(),\n customIconId: content.customIconId?.toString(),\n source: content.source.toString(),\n parameters,\n grantedPrivileges,\n };\n const data = JSON.stringify(obj);\n return data;\n }\n return '';\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const TilesConstants = Constants({\n TilesContentContextId: SafeGuid.parse('DB8C7286-07E1-41F6-B54B-037DF302C0F9'),\n});\n","import { Constants } from '../../shared/utilities/constants';\n\nexport const DragDropTypes = Constants({\n EntityId: 'sc-entityId',\n EntityBrowserItems: 'sc-entityBrowserItems',\n});\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { TileLayoutEntity } from 'RestClient/Client/Model/TileLayoutEntity';\nimport { ITilePattern } from 'RestClient/Client/Interface/ITileLayoutEntity';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { EntityBrowserItem } from '../../shared/components/entity-browser/items/entity-browser-item';\nimport { ContentProviderService } from '../../shared/services/content/content-provider.service';\nimport { ContentSerializer } from '../../shared/utilities/content.serializer';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { TilesConstants } from '../enumerations/tiles-constants';\nimport { DragDropTypes } from '../../shared/enumerations/drag-drop-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport enum DragDropEffect {\n None = 'none',\n Copy = 'copy',\n Link = 'link',\n Move = 'move',\n}\n\nexport interface TileDragDropData {\n // tile pattern to apply\n tilePattern: ITilePattern | undefined;\n\n // contents to apply\n contents: ContentGroup[] | null;\n}\n\nexport enum DragTarget {\n None = 1,\n Tile,\n TilesTask,\n}\n\nexport class DragDropHelper {\n private static dragData = new Map();\n private static dropEffect = DragDropEffect.None;\n\n public static async extractTileDragDropData(\n event: DragEvent,\n securityCenterProvider: SecurityCenterClientService,\n contentProviderService: ContentProviderService\n ): Promise {\n let tileContents: ContentGroup[] | null = null;\n let tilePattern: ITilePattern | undefined;\n\n // try to extract external data first\n let xml = this.dragData.get('text/plain') as string;\n if (!xml && event?.dataTransfer) {\n // no xml is found in the buffered data, try to extract it from th event (from Security Desk)\n xml = event.dataTransfer.getData('text/plain');\n }\n\n if (xml) {\n tileContents = await DragDropHelper.extractSecurityCenterDragContent(xml, contentProviderService);\n } else {\n const contentGroupJson = this.dragData.get('sc-content') as string;\n if (contentGroupJson) {\n const content = ContentSerializer.deserializeContentGroup(contentGroupJson);\n if (content) {\n content.id = SafeGuid.newGuid();\n content.mainContent.id = SafeGuid.newGuid();\n tileContents = [content];\n }\n } else {\n const entityIds = this.dragData.get(DragDropTypes.EntityId) as IGuid[];\n if (entityIds) {\n tileContents = [];\n\n const scClient = securityCenterProvider.scClient;\n\n if (scClient) {\n const entityQuery = new EntityQuery();\n entityIds.forEach((entity) => entityQuery.guids.add(entity));\n const entities = await scClient.getEntitiesAsync(Entity, entityQuery);\n for (const entity of entities) {\n // special case to handle when we drag a tile layout\n if (entity?.entityType === EntityTypes.TileLayouts) {\n // if the list contains a TileLayout entity, we override all the rest\n tileContents.length = 0;\n\n const tileLayout = entity as TileLayoutEntity;\n const content = await tileLayout.getContentAsync();\n if (content !== null) {\n tilePattern = content.pattern;\n const contents = await contentProviderService.getContentsAsync(Array.from(content.entities), TilesConstants.TilesContentContextId);\n if (contents) {\n tileContents = contents;\n }\n }\n break;\n }\n }\n }\n\n // not built from a tile layout, get the contents from the ids specified\n if (tileContents.length === 0) {\n const contentGroups = await contentProviderService.getContentsAsync(entityIds, TilesConstants.TilesContentContextId);\n if (contentGroups) {\n tileContents = contentGroups;\n }\n }\n }\n }\n }\n\n let result: TileDragDropData | null = null;\n if (tileContents) {\n result = { contents: tileContents, tilePattern };\n }\n return result;\n }\n\n // extract the public xml from Security Center's application\n public static async extractSecurityCenterDragContent(xml: string, contentProviderService: ContentProviderService): Promise {\n let tileContents: ContentGroup[] | null = null;\n\n if (xml) {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(xml, 'text/xml');\n const contents = xmlDoc.getElementsByTagName('Contents');\n if (contents) {\n if (contents.length === 1) {\n const children = contents[0].children;\n tileContents = [];\n\n for (const child of Array.from(children)) {\n const cameraIdString = child.getAttribute('Camera');\n if (cameraIdString && SafeGuid.isGuid(cameraIdString)) {\n const cameraId = SafeGuid.parse(cameraIdString);\n const contentGroup = await contentProviderService.getContentAsync(cameraId, TilesConstants.TilesContentContextId);\n if (contentGroup != null) {\n tileContents.push(contentGroup);\n }\n }\n }\n }\n }\n }\n\n return tileContents;\n }\n\n public static getDragData(dragType: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.dragData.get(dragType);\n }\n\n public static getDragTarget(event: DragEvent): DragTarget {\n // try to extract browser items first\n const items = DragDropHelper.getDragData(DragDropTypes.EntityBrowserItems) as EntityBrowserItem[];\n if (items) {\n // if we contain multiple items, let the tile task handle it\n if (items.length > 1) {\n return DragTarget.TilesTask;\n } else {\n // if we contain a TileLayout entity, let the tile task handle it\n const layouts = items.find((x) => x.model.entityType.type === EntityTypes.TileLayouts);\n if (layouts) {\n return DragTarget.TilesTask;\n }\n }\n }\n\n return DragTarget.Tile;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public static startDrag(dragType: string, dragData: any): void {\n this.dragData.clear();\n this.updateDragData(dragType, dragData);\n }\n\n public static endDrag(): void {\n this.dragData.clear();\n }\n\n public static supportType(supportedDragTypes: string[]): boolean {\n for (const supportedType of supportedDragTypes) {\n for (const type of this.dragData.keys()) {\n if (supportedType === type) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n public static getDropEffect(): string {\n return this.dropEffect;\n }\n\n public static setDropEffect(dropEffect: DragDropEffect, event?: DragEvent): void {\n this.dropEffect = dropEffect;\n if (event?.dataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public static updateDragData(dragType: string, dragData: any): void {\n this.dragData.set(dragType, dragData);\n }\n}\n","// Autogenerated: CodeGen/EntityTypeData?language=ts&InterfaceOnly=True on 2021-04-21 3:54:20 PM\n// Autogenerated: CodeGen/EntityTypeData?language=ts&InterfaceOnly=False on 2021-04-21 3:54:20 PM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\n\nexport interface IEntityTypeData extends IFieldObject {\n type: string;\n subType: string;\n subTypeGuid: IGuid | null;\n}\n\nexport class EntityTypeData extends FieldObject implements IEntityTypeData {\n // Type\n public get type(): string {\n return this.getField('Type');\n }\n public set type(value: string) {\n this.setField('Type', value);\n }\n // SubType\n public get subType(): string {\n return this.getField('SubType');\n }\n public set subType(value: string) {\n this.setField('SubType', value);\n }\n // SubTypeGuid\n public get subTypeGuid(): IGuid | null {\n return this.getNullableFieldGuid('SubTypeGuid');\n }\n public set subTypeGuid(value: IGuid | null) {\n this.setNullableFieldGuid('SubTypeGuid', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Type', '');\n this.setField('SubType', '');\n this.setFieldGuid('SubTypeGuid', SafeGuid.EMPTY);\n }\n\n //#region Custom Methods\n\n private _idString = \"\";\n\n // eslint-disable-next-line @typescript-eslint/member-ordering \n public get idString(): string {\n if(!this._idString) {\n this.updateStringId();\n }\n\n return this._idString;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n constructor(type?: string, subType?: string | IGuid) {\n super();\n\n if (this.setTypeField(type)) {\n if (isInstanceOfGuid(subType)) {\n this.setSubTypeGuidField(subType)\n } else {\n this.setSubTypeField(subType);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public static getEntityTypeData(entityType: EntityTypeData | IEntityTypeData | string, entitySubType?: string | IGuid): EntityTypeData {\n if (typeof entityType === 'string') {\n return new EntityTypeData(entityType, entitySubType);\n }\n\n return entityType as EntityTypeData;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public equals(other: EntityTypeData): boolean {\n return this.idString === other.idString;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public hasSubType(): boolean {\n return this.type !== this.idString;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public is(other: EntityTypeData): boolean {\n return this.type === other.type && !other.hasSubType();\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public loadFields(config: { [k: string]: any }): void {\n if (config) {\n this._fields = new Map();\n for (const key of Object.keys(config)) {\n // Key must be case insensitive\n const value = config[key];\n const lowerCaseKey = key.toLowerCase();\n if(lowerCaseKey === 'type') {\n this.setTypeField(value);\n } else if(lowerCaseKey === 'subtype') {\n this.setSubTypeField(value);\n } else if(lowerCaseKey === 'subtypeguid') {\n this.setSubTypeGuidField(value);\n }\n }\n }\n this.fieldLoaded();\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public setField(fieldId: string, newValue: T): void {\n if(fieldId === 'Type') {\n this.setTypeField(newValue);\n } else if(fieldId === 'SubType') {\n this.setSubTypeField(newValue);\n }else{\n super.setField(fieldId, newValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public setNullableFieldGuid(fieldId: string, newValue: IGuid | null): void {\n if(fieldId === 'SubTypeGuid') {\n this.setSubTypeGuidField(newValue);\n } else {\n super.setNullableFieldGuid(fieldId, newValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private setSubTypeField(value: any): boolean {\n if(isString(value) && value) {\n super.setField('SubType', value);\n return true;\n } else {\n this._fields.delete('SubType');\n }\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private setSubTypeGuidField(value: any): boolean {\n if(isInstanceOfGuid(value) && !value.isEmpty()) {\n super.setNullableFieldGuid('SubTypeGuid', value);\n return true;\n } else {\n this._fields.delete('SubTypeGuid');\n }\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private setTypeField(value: any): boolean {\n if(isString(value) && value) {\n super.setField('Type', value);\n return true;\n } else {\n this._fields.delete('Type');\n }\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private updateStringId(): void {\n if (this.hasField('Type')) {\n this._idString = this.type;\n\n if (this.hasField('SubType')) {\n if(this.subType) {\n this._idString += this.subType;\n }\n } else if (this.hasField('SubTypeGuid')) {\n if(this.subTypeGuid?.isEmpty() === false) {\n this._idString += this.subTypeGuid; \n }\n }\n }\n }\n\n //#endregion Custom Methods\n}\n","import { Injectable } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { CameraTypes } from 'RestClient/Client/Enumerations/CameraType';\nimport { AccessPointType } from 'RestClient/Client/Enumerations/AccessPointType';\nimport { DeviceType } from 'RestClient/Client/Enumerations/DeviceType';\nimport { EntityTypeData, IEntityTypeData } from '../models/entity-type-data';\n\n@Injectable({ providedIn: 'root' })\nexport class IconsService {\n public getEntityTypeIcon(entityType: IEntityTypeData | string, entitySubType?: string | IGuid): Icon {\n const entityTypeData = EntityTypeData.getEntityTypeData(entityType, entitySubType);\n\n switch (entityTypeData.type) {\n case EntityTypes.AccessPoints:\n if (entityTypeData.hasSubType()) {\n switch (entityTypeData.subType) {\n case AccessPointType.Floor:\n return Icon.Layers;\n case AccessPointType.CardReader:\n return Icon.Reader;\n }\n }\n return Icon.Io;\n case EntityTypes.Alarms:\n return Icon.Alarm;\n case EntityTypes.AnalogMonitors:\n return Icon.Monitor;\n case EntityTypes.Applications:\n return Icon.Applications;\n case EntityTypes.Areas:\n return Icon.Area;\n case EntityTypes.Cameras: {\n if (entityTypeData.hasSubType()) {\n switch (entityTypeData.subType) {\n case CameraTypes.Sequence:\n return Icon.CameraSequence;\n case CameraTypes.PanoramicCamera:\n case CameraTypes.PTZCamera:\n case CameraTypes.PTZVirtualCamera:\n return Icon.Dome;\n case CameraTypes.WearableCamera:\n return Icon.BodyCamera;\n case CameraTypes.GhostCamera:\n return Icon.CameraGhost;\n }\n }\n return Icon.Camera;\n }\n case EntityTypes.Cardholders:\n return Icon.Cardholder;\n case EntityTypes.CardholderGroups:\n return Icon.CardholderGroup;\n case EntityTypes.CashRegisters:\n return Icon.Money;\n case EntityTypes.Credentials:\n return Icon.Badge;\n case EntityTypes.CustomEntities:\n return Icon.Plugin;\n case EntityTypes.Devices:\n if (entityTypeData.hasSubType()) {\n switch (entityTypeData.subType) {\n case DeviceType.Lpr:\n return Icon.Sharp;\n }\n }\n return Icon.Io;\n case EntityTypes.Doors:\n return Icon.DoorClosed;\n case EntityTypes.Elevators:\n return Icon.Elevator;\n case EntityTypes.Hotlists:\n return Icon.Hotlist;\n case EntityTypes.IntrusionAreas:\n return Icon.Intrusion;\n case EntityTypes.LprUnits:\n return Icon.Sharp;\n case EntityTypes.Macros:\n return Icon.Script;\n case EntityTypes.Maps:\n return Icon.FoldedMap;\n case EntityTypes.ParkingZones:\n return Icon.Parking;\n case EntityTypes.Partitions:\n return Icon.Partition;\n case EntityTypes.Patrollers:\n return Icon.PoliceCar;\n case EntityTypes.Permits:\n case EntityTypes.PermitRules:\n return Icon.Permit;\n case EntityTypes.Roles:\n return Icon.Role;\n case EntityTypes.Sequences:\n return Icon.CameraSequence;\n case EntityTypes.SystemConfigurations:\n return Icon.Directory;\n case EntityTypes.TileLayouts:\n return Icon.TilePattern;\n case EntityTypes.TilePlugins:\n return Icon.Plugin;\n case EntityTypes.Units:\n return Icon.GenericUnit;\n case EntityTypes.UserGroups:\n return Icon.People;\n case EntityTypes.Users:\n return Icon.Person;\n case EntityTypes.VideoUnits:\n return Icon.GenericUnit;\n case EntityTypes.Visitors:\n return Icon.Visitor;\n case EntityTypes.Zones:\n return Icon.Perimeter;\n default:\n return Icon.None;\n }\n }\n\n public getEntityIcon(entity: IEntity): Icon {\n return this.getEntityTypeIcon(entity.entityType);\n }\n}\n","import { IFieldObject } from '../Client/Interface/IFieldObject';\n\nexport class FieldObjectOverloads {\n private static CONSTRUCTORS = new Map IFieldObject>();\n private static OVERLOADS = new Map>();\n private static LAST_OVERLOAD_TYPE: string;\n\n public static registerOverload(parentType: string, overloadType: string): void {\n let childTypes = this.OVERLOADS.get(parentType);\n if (childTypes) {\n childTypes.add(overloadType);\n } else {\n childTypes = new Set();\n childTypes.add(overloadType);\n this.OVERLOADS.set(parentType, childTypes);\n }\n\n FieldObjectOverloads.LAST_OVERLOAD_TYPE = overloadType;\n }\n\n public static registerConstructor(constructor: new (...args: any[]) => IFieldObject): void {\n FieldObjectOverloads.CONSTRUCTORS.set(FieldObjectOverloads.LAST_OVERLOAD_TYPE, constructor);\n }\n\n public static getConstructor(name: string): (new (...args: any[]) => IFieldObject) | undefined {\n return FieldObjectOverloads.CONSTRUCTORS.get(name);\n }\n\n public static getOverloads(parentType: string): Set | undefined {\n return FieldObjectOverloads.OVERLOADS.get(parentType);\n }\n}\n\nexport function RegisterFieldObjectConstructor IFieldObject>(constructor: T) {\n FieldObjectOverloads.registerConstructor(constructor);\n}\n\nexport function RegisterFieldObjectOverload(parentType: string, overloadType: string) {\n FieldObjectOverloads.registerOverload(parentType, overloadType);\n const constructor = function IFieldObject>(_: T) {\n return class extends _ {\n overloadTypeName = overloadType;\n };\n };\n\n return constructor;\n}\n","// Autogenerated: CodeGen/HierarchicalFieldObject?language=ts&InterfaceOnly=True on 2020-07-14 7:45:31 AM\n// Autogenerated: CodeGen/HierarchicalFieldObject?language=ts&InterfaceOnly=False on 2020-07-14 7:45:31 AM\n\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { FieldObjectOverloads } from 'RestClient/Helpers/FieldObjectOverloads';\n\nexport interface IHierarchicalFieldObject extends IFieldObject {\n overloadTypeName: string;\n}\n\nexport class HierarchicalFieldObject extends FieldObject implements IHierarchicalFieldObject {\n // OverloadTypeName\n public get overloadTypeName(): string {\n return this.getField('OverloadTypeName');\n }\n public set overloadTypeName(value: string) {\n this.setField('OverloadTypeName', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('OverloadTypeName', '');\n }\n\n // #region Custom Methods\n\n constructor() {\n super();\n this.overloadTypeName = 'HierarchicalFieldObject';\n }\n\n public getOverload(): T {\n if (this.overloadTypeName && this.overloadTypeName !== 'HierarchicalFieldObject') {\n const constructor = FieldObjectOverloads.getConstructor(this.overloadTypeName);\n if (constructor) {\n const overload = new constructor();\n overload.loadFrom(this);\n return overload as T;\n }\n }\n\n return (this as unknown) as T;\n }\n\n //#endregion Custom Methods\n}\n","// Autogenerated: CodeGen/ModelObject?language=ts&InterfaceOnly=False on 2020-07-14 7:45:32 AM\nimport { HierarchicalFieldObject } from './hierarchical-field-object';\nimport { IModelObject } from './interfaces/model-object.interface';\n\nexport class ModelObject extends HierarchicalFieldObject implements IModelObject {\n public initializeAllFields(): void {\n super.initializeAllFields();\n }\n}\n","// Autogenerated: CodeGen/EntityBrowserItemModel?language=ts&InterfaceOnly=False on 2021-09-13 2:38:04 PM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { ModelObject } from '../../models/model-object';\nimport { IEntityBrowserItemModel } from '../interfaces/items/entity-browser-item-model.interface';\nimport { IEntityTypeData, EntityTypeData } from '../../models/entity-type-data';\n\nexport class EntityBrowserItemModel extends ModelObject implements IEntityBrowserItemModel {\n // CanHaveChildren\n public get canHaveChildren(): boolean {\n return this.getField('CanHaveChildren');\n }\n public set canHaveChildren(value: boolean) {\n this.setField('CanHaveChildren', value);\n }\n // CustomIconId\n public get customIconId(): IGuid {\n return this.getFieldGuid('CustomIconId');\n }\n public set customIconId(value: IGuid) {\n this.setFieldGuid('CustomIconId', value);\n }\n // EntityType\n public get entityType(): IEntityTypeData {\n return this.getFieldObject(EntityTypeData, 'EntityType');\n }\n public set entityType(value: IEntityTypeData) {\n this.setFieldObject('EntityType', value);\n }\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // LogicalId\n public get logicalId(): number | null {\n return this.getNullableField('LogicalId');\n }\n public set logicalId(value: number | null) {\n this.setNullableField('LogicalId', value);\n }\n // Maintenance\n public get maintenance(): boolean {\n return this.getField('Maintenance');\n }\n public set maintenance(value: boolean) {\n this.setField('Maintenance', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // OwnerMasterRole\n public get ownerMasterRole(): IGuid {\n return this.getFieldGuid('OwnerMasterRole');\n }\n public set ownerMasterRole(value: IGuid) {\n this.setFieldGuid('OwnerMasterRole', value);\n }\n // OwnerMasterRoleTypeId\n public get ownerMasterRoleTypeId(): IGuid {\n return this.getFieldGuid('OwnerMasterRoleTypeId');\n }\n public set ownerMasterRoleTypeId(value: IGuid) {\n this.setFieldGuid('OwnerMasterRoleTypeId', value);\n }\n // Parents\n public get parents(): ObservableCollection {\n return this.getFieldArrayGuid('Parents');\n }\n public set parents(value: ObservableCollection) {\n this.setFieldArrayGuid('Parents', value);\n }\n // RunningState\n public get runningState(): string {\n return this.getField('RunningState');\n }\n public set runningState(value: string) {\n this.setField('RunningState', value);\n }\n // SortPriority\n public get sortPriority(): number {\n return this.getField('SortPriority');\n }\n public set sortPriority(value: number) {\n this.setField('SortPriority', value);\n }\n // Synchronised\n public get synchronised(): boolean {\n return this.getField('Synchronised');\n }\n public set synchronised(value: boolean) {\n this.setField('Synchronised', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('CanHaveChildren', false);\n this.setFieldGuid('CustomIconId', SafeGuid.EMPTY);\n const objEntityType = new EntityTypeData();\n objEntityType.initializeAllFields();\n this.setFieldObject('EntityType', objEntityType);\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('LogicalId', 0);\n this.setField('Maintenance', false);\n this.setField('Name', '');\n this.setFieldGuid('OwnerMasterRole', SafeGuid.EMPTY);\n this.setFieldGuid('OwnerMasterRoleTypeId', SafeGuid.EMPTY);\n this.setFieldArrayGuid('Parents', new ObservableCollection());\n this.setField('RunningState', '');\n this.setField('SortPriority', 0);\n this.setField('Synchronised', false);\n }\n}\n","// Autogenerated: CodeGen/AreaBrowserItemModel?language=ts&InterfaceOnly=True on 2023-01-10 2:23:02 PM\n// Autogenerated: CodeGen/AreaBrowserItemModel?language=ts&InterfaceOnly=False on 2023-01-10 2:23:02 PM\n\nimport { IEntityBrowserItemModel } from '@modules/shared/entity-browser/interfaces/items/entity-browser-item-model.interface';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { RegisterFieldObjectConstructor, RegisterFieldObjectOverload } from 'RestClient/Helpers/FieldObjectOverloads';\nimport { EntityBrowserItemModel } from '@modules/shared/entity-browser/Items/entity-browser-item-model';\n\nexport interface IAreaBrowserItemModel extends IEntityBrowserItemModel {\n map: IGuid;\n isFederatedDirectory: boolean;\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserItemModel', 'AreaBrowserItemModel')\nexport class AreaBrowserItemModel extends EntityBrowserItemModel implements IAreaBrowserItemModel {\n // Map\n public get map(): IGuid {\n return this.getFieldGuid('Map');\n }\n public set map(value: IGuid) {\n this.setFieldGuid('Map', value);\n }\n // IsFederatedDirectory\n public get isFederatedDirectory(): boolean {\n return this.getField('IsFederatedDirectory');\n }\n public set isFederatedDirectory(value: boolean) {\n this.setField('IsFederatedDirectory', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('Map', SafeGuid.EMPTY);\n this.setField('IsFederatedDirectory', false);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { IconsService } from '../services/icons.service';\nimport { AreaBrowserItemModel } from '../../general/entity-browser/items/area-browser-item-model';\nimport { EntityBrowserItemModel } from './Items/entity-browser-item-model';\n\n@Injectable({ providedIn: 'root' })\nexport class EntityBrowserItemService {\n constructor(public iconsService: IconsService) {}\n\n public getItemIcon(model: EntityBrowserItemModel): Icon {\n if (model instanceof AreaBrowserItemModel) {\n if (!model.map.isEmpty()) {\n return Icon.FoldedMap;\n }\n if (model.isFederatedDirectory) {\n return Icon.SecurityCenterFederation;\n }\n }\n return this.iconsService.getEntityTypeIcon(model.entityType);\n }\n}\n","import { GuidMap, IGuid, SafeGuid } from 'safeguid';\nimport { EntityBrowserItem } from '../components/entity-browser/items/entity-browser-item';\nimport { EntityBrowserItemModel } from './Items/entity-browser-item-model';\n\nexport class EntityBrowserSelection {\n private items = new GuidMap();\n\n public get allIds(): IGuid[] {\n return Array.from(this.items.keys());\n }\n\n public get allItems(): EntityBrowserItem[] {\n return Array.from(this.items.values());\n }\n\n public get hasMany(): boolean {\n return this.items.size > 1;\n }\n\n public get singleId(): IGuid {\n if (this.items.size > 0) {\n for (const guid of this.allIds) {\n return guid;\n }\n }\n\n return SafeGuid.EMPTY;\n }\n\n public get singleItem(): EntityBrowserItem | null {\n if (this.items.size > 0) {\n for (const item of this.allItems) {\n return item;\n }\n }\n\n return null;\n }\n\n constructor(items: EntityBrowserItem[]) {\n for (const item of items) {\n this.items.set(item.model.id, item);\n }\n }\n}\n\nexport class EntityBrowserCheckSelection {\n public exclusions: IGuid[] = [];\n private itemMap = new GuidMap();\n\n public get ids(): IGuid[] {\n return Array.from(this.itemMap.keys());\n }\n\n public get items(): EntityBrowserItemModel[] {\n return Array.from(this.itemMap.values());\n }\n\n constructor(items: EntityBrowserItemModel[], exclusions?: EntityBrowserItemModel[]) {\n for (const item of items) {\n this.itemMap.set(item.id, item);\n }\n\n if (exclusions) {\n for (const item of exclusions) {\n this.exclusions.push(item.id);\n }\n }\n }\n}\n","/* eslint-disable @typescript-eslint/prefer-regexp-exec, no-useless-escape */\n// translated from https://github.com/tedgreen29/typescript-natural-sort/blob/master/naturalSort.js\n\nexport const naturalSort = (item1: string | number, item2: string | number, caseSensitive = false): 0 | -1 | 1 => {\n const re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi;\n const sre = /(^[ ]*|[ ]*$)/g;\n const dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/;\n const hre = /^0x[0-9a-f]+$/i;\n const ore = /^0/;\n const i = (s: string | number) => (!caseSensitive && s.toString().toLowerCase()) || s.toString();\n // convert all to strings strip whitespace\n const x = i(item1).replace(sre, '') || '';\n const y = i(item2).replace(sre, '') || '';\n // chunk/tokenize\n const xN = x.replace(re, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n const yN = y.replace(re, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n // numeric, hex or date detection\n const xMatch = x.match(hre);\n const yMatch = y.match(hre);\n const xD = (xMatch && parseInt(xMatch[0], 16)) || (xN.length !== 1 && x.match(dre) && Date.parse(x));\n const yD = (yMatch && parseInt(yMatch[0], 16)) || (xD && y.match(dre) && Date.parse(y)) || null;\n let oFxNcL;\n let oFyNcL;\n // first try and sort Hex codes or Dates\n if (xD && yD) {\n if (xD < yD) {\n return -1;\n } else if (xD > yD) {\n return 1;\n }\n }\n // natural sorting through split numeric strings and default strings\n for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\n // find floats not starting with '0', string or 0 if not defined (Clint Priest)\n oFxNcL = (!(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc])) || xN[cLoc] || 0;\n oFyNcL = (!(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc])) || yN[cLoc] || 0;\n // handle numeric vs string comparison - number < string - (Kyle Adams)\n if ((typeof oFxNcL === 'number') !== (typeof oFyNcL === 'number')) {\n return typeof oFxNcL === 'number' ? -1 : 1;\n } else if (typeof oFxNcL !== typeof oFyNcL) {\n oFxNcL += '';\n oFyNcL += '';\n }\n if (oFxNcL < oFyNcL) {\n return -1;\n }\n if (oFxNcL > oFyNcL) {\n return 1;\n }\n }\n return 0;\n};\n","// Autogenerated: CodeGen/PageInfo?language=ts&InterfaceOnly=True on 2020-09-15 2:34:03 PM\n// Autogenerated: CodeGen/PageInfo?language=ts&InterfaceOnly=False on 2020-09-15 2:34:03 PM\n\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\n\nexport interface IPageInfo extends IFieldObject {\n lastEntityId: IGuid;\n page: number;\n pageSize: number;\n}\n\nexport class PageInfo extends FieldObject implements IPageInfo {\n // LastEntityId\n public get lastEntityId(): IGuid {\n return this.getFieldGuid('LastEntityId');\n }\n public set lastEntityId(value: IGuid) {\n this.setFieldGuid('LastEntityId', value);\n }\n // Page\n public get page(): number {\n return this.getField('Page');\n }\n public set page(value: number) {\n this.setField('Page', value);\n }\n // PageSize\n public get pageSize(): number {\n return this.getField('PageSize');\n }\n public set pageSize(value: number) {\n this.setField('PageSize', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('LastEntityId', SafeGuid.EMPTY);\n this.setField('Page', 0);\n this.setField('PageSize', 0);\n }\n\n //#region Custom Methods\n\n public clone(): PageInfo {\n const pageInfo = new PageInfo();\n pageInfo.page = this.page;\n pageInfo.pageSize = this.pageSize;\n pageInfo.lastEntityId = this.lastEntityId;\n return pageInfo;\n }\n\n //#endregion Custom Methods\n}\n","// Autogenerated: CodeGen/HierarchicalData?language=ts&InterfaceOnly=True on 2020-11-16 11:14:13 AM\n// Autogenerated: CodeGen/HierarchicalData?language=ts&InterfaceOnly=False on 2020-11-16 11:14:13 AM\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { FieldObjectOverloads } from 'RestClient/Helpers/FieldObjectOverloads';\n\nexport interface IHierarchicalData extends IFieldObject {\n overloadTypeName: string;\n}\n\nexport class HierarchicalData extends FieldObject implements IHierarchicalData {\n // OverloadTypeName\n public get overloadTypeName(): string {\n return this.getField('OverloadTypeName');\n }\n public set overloadTypeName(value: string) {\n this.setField('OverloadTypeName', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('OverloadTypeName', '');\n }\n\n // #region Custom Methods\n\n constructor() {\n super();\n this.overloadTypeName = 'HierarchicalData';\n }\n\n public getOverload(): T {\n if (this.overloadTypeName && this.overloadTypeName !== 'HierarchicalData') {\n const constructor = FieldObjectOverloads.getConstructor(this.overloadTypeName);\n if (constructor) {\n const overload = new constructor();\n overload.loadFrom(this);\n return overload as T;\n }\n }\n\n return (this as unknown) as T;\n }\n\n // #endregion Custom Methods\n}\n","// Autogenerated: CodeGen/FieldFilterData?language=ts&InterfaceOnly=True on 2020-12-11 6:54:37 AM\n// Autogenerated: CodeGen/FieldFilterData?language=ts&InterfaceOnly=False on 2020-12-11 6:54:37 AM\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { HierarchicalData, IHierarchicalData } from './hierarchical-data';\n\nexport interface IFieldFilterData extends IHierarchicalData {\n fieldName: string;\n values: ObservableCollection;\n}\n\nexport class FieldFilterData extends HierarchicalData implements IFieldFilterData {\n // FieldName\n public get fieldName(): string {\n return this.getField('FieldName');\n }\n public set fieldName(value: string) {\n this.setField('FieldName', value);\n }\n // Values\n public get values(): ObservableCollection {\n return this.getFieldArray('Values');\n }\n public set values(value: ObservableCollection) {\n this.setFieldArray('Values', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('FieldName', '');\n this.setFieldArray('Values', new ObservableCollection());\n }\n}\n","// Autogenerated: CodeGen/ExpanderFilterData?language=ts&InterfaceOnly=True on 2021-05-10 11:39:53 AM\n// Autogenerated: CodeGen/ExpanderFilterData?language=ts&InterfaceOnly=False on 2021-05-10 11:39:53 AM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { EntityTypeData, IEntityTypeData } from './entity-type-data';\n\nexport interface IExpanderFilterData extends IFieldObject {\n entityTypeData: IEntityTypeData;\n expanderType: IGuid;\n}\n\nexport class ExpanderFilterData extends FieldObject implements IExpanderFilterData {\n // EntityTypeData\n public get entityTypeData(): IEntityTypeData {\n return this.getFieldObject(EntityTypeData, 'EntityTypeData');\n }\n public set entityTypeData(value: IEntityTypeData) {\n this.setFieldObject('EntityTypeData', value);\n }\n // ExpanderType\n public get expanderType(): IGuid {\n return this.getFieldGuid('ExpanderType');\n }\n public set expanderType(value: IGuid) {\n this.setFieldGuid('ExpanderType', value);\n }\n\n public initializeAllFields(): void {\n const objEntityTypeData = new EntityTypeData();\n objEntityTypeData.initializeAllFields();\n this.setFieldObject('EntityTypeData', objEntityTypeData);\n this.setFieldGuid('ExpanderType', SafeGuid.EMPTY);\n }\n}\n","import { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n/* eslint-disable */\nexport interface ICustomFieldData extends IFieldObject {\n id: IGuid;\n valueType: string;\n value: any;\n}\n\nexport class CustomFieldData extends FieldObject implements ICustomFieldData {\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setField('Id', value);\n }\n public get valueType(): string {\n return this.getField('ValueType');\n }\n public set valueType(value: string) {\n this.setField('ValueType', value);\n }\n public get value(): any {\n return this.getField('Value');\n }\n public set value(value: any) {\n this.setField('Value', value);\n }\n}\n","// Autogenerated: CodeGen/EntityBrowserFilterData?language=ts&InterfaceOnly=False on 2021-05-10 11:54:25 AM\n// Autogenerated: CodeGen/HierarchicalEntityBrowserFilterData?language=ts&InterfaceOnly=False on 2021-05-10 11:54:25 AM\n// Autogenerated: CodeGen/FlatEntityBrowserFilterData?language=ts&InterfaceOnly=False on 2021-05-10 11:54:25 AM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { RegisterFieldObjectConstructor, RegisterFieldObjectOverload } from 'RestClient/Helpers/FieldObjectOverloads';\nimport { IEntityTypeData, EntityTypeData } from '../../models/entity-type-data';\nimport { IEntityBrowserFilterData, IHierarchicalEntityBrowserFilterData, IFlatEntityBrowserFilterData } from '../interfaces/filters/entity-browser-filter-data.interface';\nimport { IPageInfo, PageInfo } from '../interfaces/filters/page-info';\nimport { HierarchicalData } from '../../models/hierarchical-data';\nimport { FieldFilterData, IFieldFilterData } from '../../models/field-filter.data';\nimport { ExpanderFilterData, IExpanderFilterData } from '../../models/expander-filter-data';\nimport { CustomFieldData, ICustomFieldData } from './custom-field-data';\n\nexport class EntityBrowserFilterData extends HierarchicalData implements IEntityBrowserFilterData {\n // EntityIds\n public get entityIds(): ObservableCollection {\n return this.getFieldArrayGuid('EntityIds');\n }\n public set entityIds(value: ObservableCollection) {\n this.setFieldArrayGuid('EntityIds', value);\n }\n // EntityOwnerTypes\n public get entityOwnerTypes(): ObservableCollection {\n return this.getFieldArrayGuid('EntityOwnerTypes');\n }\n public set entityOwnerTypes(value: ObservableCollection) {\n this.setFieldArrayGuid('EntityOwnerTypes', value);\n }\n // EntityTypes\n public get entityTypes(): ObservableCollection {\n return this.getFieldObjectArray(EntityTypeData, 'EntityTypes');\n }\n public set entityTypes(value: ObservableCollection) {\n this.setFieldObjectArray('EntityTypes', value);\n }\n // ExcludedEntities\n public get excludedEntities(): ObservableCollection {\n return this.getFieldArrayGuid('ExcludedEntities');\n }\n public set excludedEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('ExcludedEntities', value);\n }\n // FieldFilters\n public get fieldFilters(): ObservableCollection {\n return this.getFieldObjectArray(FieldFilterData, 'FieldFilters');\n }\n public set fieldFilters(value: ObservableCollection) {\n this.setFieldObjectArray('FieldFilters', value);\n }\n // IncludedEntities\n public get includedEntities(): ObservableCollection {\n return this.getFieldArrayGuid('IncludedEntities');\n }\n public set includedEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('IncludedEntities', value);\n }\n // PageInfo\n public get pageInfo(): IPageInfo {\n return this.getFieldObject(PageInfo, 'PageInfo');\n }\n public set pageInfo(value: IPageInfo) {\n this.setFieldObject('PageInfo', value);\n }\n // RefresherType\n public get refresherType(): IGuid {\n return this.getFieldGuid('RefresherType');\n }\n public set refresherType(value: IGuid) {\n this.setFieldGuid('RefresherType', value);\n }\n // SearchLogicalIds\n public get searchLogicalIds(): boolean {\n return this.getField('SearchLogicalIds');\n }\n public set searchLogicalIds(value: boolean) {\n this.setField('SearchLogicalIds', value);\n }\n // TextFilter\n public get textFilter(): string {\n return this.getField('TextFilter');\n }\n public set textFilter(value: string) {\n this.setField('TextFilter', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldArrayGuid('EntityIds', new ObservableCollection());\n this.setFieldArrayGuid('EntityOwnerTypes', new ObservableCollection());\n this.setFieldArray('EntityTypes', new ObservableCollection());\n this.setFieldArrayGuid('ExcludedEntities', new ObservableCollection());\n this.setFieldArray('FieldFilters', new ObservableCollection());\n this.setFieldArrayGuid('IncludedEntities', new ObservableCollection());\n const objPageInfo = new PageInfo();\n objPageInfo.initializeAllFields();\n this.setFieldObject('PageInfo', objPageInfo);\n this.setFieldGuid('RefresherType', SafeGuid.EMPTY);\n this.setField('SearchLogicalIds', false);\n this.setField('TextFilter', '');\n }\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserFilterData', 'HierarchicalEntityBrowserFilterData')\nexport class HierarchicalEntityBrowserFilterData extends EntityBrowserFilterData implements IHierarchicalEntityBrowserFilterData {\n // IsRootExpanded\n public get isRootExpanded(): boolean {\n return this.getField('IsRootExpanded');\n }\n public set isRootExpanded(value: boolean) {\n this.setField('IsRootExpanded', value);\n }\n // ExpanderData\n public get expanderData(): ObservableCollection {\n return this.getFieldObjectArray(ExpanderFilterData, 'ExpanderData');\n }\n public set expanderData(value: ObservableCollection) {\n this.setFieldObjectArray('ExpanderData', value);\n }\n // ExpandedParents\n public get expandedParents(): ObservableCollection {\n return this.getFieldArrayGuid('ExpandedParents');\n }\n public set expandedParents(value: ObservableCollection) {\n this.setFieldArrayGuid('ExpandedParents', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('IsRootExpanded', false);\n this.setFieldArray('ExpanderData', new ObservableCollection());\n this.setFieldArrayGuid('ExpandedParents', new ObservableCollection());\n }\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserFilterData', 'FlatEntityBrowserFilterData')\nexport class FlatEntityBrowserFilterData extends EntityBrowserFilterData implements IFlatEntityBrowserFilterData {\n // CustomFieldValues\n public get customFieldValues(): ObservableCollection {\n return this.getFieldObjectArray(CustomFieldData, 'CustomFieldValues');\n }\n public set customFieldValues(value: ObservableCollection) {\n this.setFieldObjectArray('CustomFieldValues', value);\n }\n // OwnerRole\n public get ownerRole(): IGuid {\n return this.getFieldGuid('OwnerRole');\n }\n public set ownerRole(value: IGuid) {\n this.setFieldGuid('OwnerRole', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldArray('CustomFieldValues', new ObservableCollection());\n this.setFieldGuid('OwnerRole', SafeGuid.EMPTY);\n }\n}\n","// Autogenerated: CodeGen/EntityBrowserResult?language=ts&InterfaceOnly=True on 2022-07-12 12:36:21 PM\n// Autogenerated: CodeGen/EntityBrowserResult?language=ts&InterfaceOnly=False on 2022-07-12 12:36:21 PM\n// Autogenerated: CodeGen/HierarchicalEntityBrowserResult?language=ts&InterfaceOnly=True on 2022-07-12 12:36:21 PM\n// Autogenerated: CodeGen/HierarchicalEntityBrowserResult?language=ts&InterfaceOnly=False on 2022-07-12 12:36:21 PM\n\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IEntityBrowserItemModel } from './items/entity-browser-item-model.interface';\nimport { EntityBrowserItemModel } from '../Items/entity-browser-item-model';\nimport { GuidMap, IGuid, SafeGuid } from 'safeguid';\nimport { RegisterFieldObjectConstructor, RegisterFieldObjectOverload } from 'RestClient/Helpers/FieldObjectOverloads';\nimport { HierarchicalData, IHierarchicalData } from '../../models/hierarchical-data';\n\nexport interface IEntityBrowserResult extends IHierarchicalData {\n currentPage: number;\n includedEntityIds: ObservableCollection;\n isResultComplete: boolean;\n isValid: boolean;\n entityBrowserItemModels: ObservableCollection;\n lastEntityId: IGuid;\n}\n\nexport class EntityBrowserResult extends HierarchicalData implements IEntityBrowserResult {\n // CurrentPage\n public get currentPage(): number {\n return this.getField('CurrentPage');\n }\n public set currentPage(value: number) {\n this.setField('CurrentPage', value);\n }\n // IncludedEntityIds\n public get includedEntityIds(): ObservableCollection {\n return this.getFieldArrayGuid('IncludedEntityIds');\n }\n public set includedEntityIds(value: ObservableCollection) {\n this.setFieldArrayGuid('IncludedEntityIds', value);\n }\n // IsResultComplete\n public get isResultComplete(): boolean {\n return this.getField('IsResultComplete');\n }\n public set isResultComplete(value: boolean) {\n this.setField('IsResultComplete', value);\n }\n // IsValid\n public get isValid(): boolean {\n return this.getField('IsValid');\n }\n public set isValid(value: boolean) {\n this.setField('IsValid', value);\n }\n // EntityBrowserItemModels\n public get entityBrowserItemModels(): ObservableCollection {\n return this.getFieldObjectArray(EntityBrowserItemModel, 'EntityBrowserItemModels');\n }\n public set entityBrowserItemModels(value: ObservableCollection) {\n this.setFieldObjectArray('EntityBrowserItemModels', value);\n }\n // LastEntityId\n public get lastEntityId(): IGuid {\n return this.getFieldGuid('LastEntityId');\n }\n public set lastEntityId(value: IGuid) {\n this.setFieldGuid('LastEntityId', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('CurrentPage', 0);\n this.setFieldArrayGuid('IncludedEntityIds', new ObservableCollection());\n this.setField('IsResultComplete', false);\n this.setField('IsValid', false);\n this.setFieldArray('EntityBrowserItemModels', new ObservableCollection());\n this.setFieldGuid('LastEntityId', SafeGuid.EMPTY);\n }\n}\n\nexport interface IHierarchicalEntityBrowserResult extends IEntityBrowserResult {\n subResults: Map;\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserResult', 'HierarchicalEntityBrowserResult')\nexport class HierarchicalEntityBrowserResult extends EntityBrowserResult implements IHierarchicalEntityBrowserResult {\n // SubResults\n public get subResults(): Map {\n return this.getFieldObjectDictionary(\n HierarchicalEntityBrowserResult,\n 'SubResults',\n undefined,\n 'IGuid'\n );\n }\n public set subResults(value: Map) {\n this.setFieldObjectDictionary('SubResults', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldDictionary('SubResults', new GuidMap());\n }\n}\n","// Autogenerated: CodeGen/EntityBrowserController?language=ts&InterfaceOnly=True on 2021-06-21 12:13:15 PM\n// Autogenerated: CodeGen/EntityBrowserController?language=ts&InterfaceOnly=False on 2021-06-21 12:13:15 PM\n\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityBrowserFilterData } from '../../entity-browser/filters/entity-browser-filter.data';\nimport { IRestObject } from 'RestClient/Client/Interface/IRestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { IEntityBrowserResult, EntityBrowserResult } from '../../entity-browser/interfaces/entity-browser-result';\nimport { IEntityBrowserFilterData } from '../../entity-browser/interfaces/filters/entity-browser-filter-data.interface';\nimport { RegisterFieldObjectConstructor, RegisterFieldObjectOverload } from 'RestClient/Helpers/FieldObjectOverloads';\nimport { HierarchicalData, IHierarchicalData } from '../../models/hierarchical-data';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { EntityTypeData, IEntityTypeData } from '../../models/entity-type-data';\n\nexport interface IEntityBrowserData extends IHierarchicalData {\n componentId: IGuid;\n}\n\nexport interface IEntityBrowserExpandData extends IEntityBrowserData {\n entityId: IGuid;\n filter: IEntityBrowserFilterData;\n}\n\nexport interface IEntityBrowserRefreshData extends IEntityBrowserData {\n isFullRefresh: boolean;\n filter: IEntityBrowserFilterData;\n}\n\nexport class EntityBrowserData extends HierarchicalData implements IEntityBrowserData {\n // ComponentId\n public get componentId(): IGuid {\n return this.getFieldGuid('ComponentId');\n }\n public set componentId(value: IGuid) {\n this.setFieldGuid('ComponentId', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('ComponentId', SafeGuid.EMPTY);\n }\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserData', 'EntityBrowserExpandData')\nexport class EntityBrowserExpandData extends EntityBrowserData implements IEntityBrowserExpandData {\n // EntityId\n public get entityId(): IGuid {\n return this.getFieldGuid('EntityId');\n }\n public set entityId(value: IGuid) {\n this.setFieldGuid('EntityId', value);\n }\n // Filter\n public get filter(): IEntityBrowserFilterData {\n return this.getFieldObject(EntityBrowserFilterData, 'Filter');\n }\n public set filter(value: IEntityBrowserFilterData) {\n this.setFieldObject('Filter', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldGuid('EntityId', SafeGuid.EMPTY);\n const objFilter = new EntityBrowserFilterData();\n objFilter.initializeAllFields();\n this.setFieldObject('Filter', objFilter);\n }\n}\n\n@RegisterFieldObjectConstructor\n@RegisterFieldObjectOverload('EntityBrowserData', 'EntityBrowserRefreshData')\nexport class EntityBrowserRefreshData extends EntityBrowserData implements IEntityBrowserRefreshData {\n // IsFullRefresh\n public get isFullRefresh(): boolean {\n return this.getField('IsFullRefresh');\n }\n public set isFullRefresh(value: boolean) {\n this.setField('IsFullRefresh', value);\n }\n // Filter\n public get filter(): IEntityBrowserFilterData {\n return this.getFieldObject(EntityBrowserFilterData, 'Filter');\n }\n public set filter(value: IEntityBrowserFilterData) {\n this.setFieldObject('Filter', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setField('IsFullRefresh', false);\n const objFilter = new EntityBrowserFilterData();\n objFilter.initializeAllFields();\n this.setFieldObject('Filter', objFilter);\n }\n}\n\nexport interface IEntityBrowserController extends IRestObject {\n // #region Rest Methods\n\n getExpandAsync(query: IEntityBrowserExpandData, transaction?: ITransaction | null): Promise;\n getLogicalTypesAsync(transaction?: ITransaction | null): Promise | null>;\n getRefreshAsync(query: IEntityBrowserRefreshData, transaction?: ITransaction | null): Promise;\n\n // #endregion Rest Methods\n\n}\n\nexport class EntityBrowserController extends RestObject implements IEntityBrowserController {\n constructor() {\n super('api/EntityBrowser');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async getExpandAsync(query: IEntityBrowserExpandData, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(EntityBrowserResult, 'Expand' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n public async getLogicalTypesAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(EntityTypeData, 'LogicalTypes', 'Id', true, false, null, transaction);\n }\n\n public async getRefreshAsync(query: IEntityBrowserRefreshData, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(EntityBrowserResult, 'Refresh' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n // #endregion Rest Methods\n\n}\n","import { IGuid } from 'safeguid';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { EntityTypeData, IEntityTypeData } from '../models/entity-type-data';\nimport { IEntityTypeSet } from './interfaces/entity-type-set.interface';\n\nexport class EntityTypeSet implements IEntityTypeSet {\n public get [Symbol.toStringTag](): string {\n return this.entityTypes.values.toString();\n }\n\n public get size(): number {\n return this.entityTypes.size;\n }\n\n private entityTypes = new Map();\n\n constructor(entityTypes?: EntityTypeData[] | Iterable | string[] | Iterable) {\n this[Symbol.iterator] = this.values.bind(this);\n if (entityTypes) {\n this.addRange(entityTypes);\n }\n }\n\n public [Symbol.iterator](): IterableIterator {\n return this.values();\n }\n\n public addRange(entityTypes: EntityTypeData[] | Iterable | string[] | Iterable): void {\n if (entityTypes) {\n for (const entityType of entityTypes) {\n this.add(entityType as EntityTypeData);\n }\n }\n }\n\n public add(entityType: EntityTypeData | string, entitySubType?: string | IGuid): this {\n const entityTypeData = EntityTypeData.getEntityTypeData(entityType, entitySubType);\n if (!entityTypeData.hasSubType()) {\n const subTypes = EntityTypes.getSubTypes(entityTypeData.type);\n if (subTypes.length > 0) {\n for (const subType of subTypes) {\n const subTypeData = new EntityTypeData(entityTypeData.type, subType);\n this.entityTypes.set(subTypeData.idString, subTypeData);\n }\n } else {\n this.entityTypes.set(entityTypeData.idString, entityTypeData);\n }\n } else {\n this.entityTypes.set(entityTypeData.idString, entityTypeData);\n }\n return this;\n }\n\n public clear(): void {\n this.entityTypes.clear();\n }\n\n public delete(entityType: EntityTypeData | string, entitySubType?: string | IGuid): boolean {\n const entityTypeData = EntityTypeData.getEntityTypeData(entityType, entitySubType);\n let result = false;\n if (!entityTypeData.hasSubType()) {\n const subTypes = EntityTypes.getSubTypes(entityTypeData.type);\n if (subTypes.length > 0) {\n for (const subType of subTypes) {\n const subTypeData = new EntityTypeData(entityTypeData.type, subType);\n result = result || this.entityTypes.delete(subTypeData.idString);\n }\n } else {\n result = this.entityTypes.delete(entityTypeData.idString);\n }\n } else {\n result = this.entityTypes.delete(entityTypeData.idString);\n }\n\n return result;\n }\n\n public entries(): IterableIterator<[EntityTypeData, EntityTypeData]> {\n throw new Error('Method not implemented.');\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public forEach(callbackfn: (value: EntityTypeData, value2: EntityTypeData, set: Set) => void, thisArg?: any): void {\n if (thisArg) {\n callbackfn.bind(thisArg);\n }\n\n for (const entityType of this.values()) {\n callbackfn(entityType, entityType, this);\n }\n }\n\n public has(entityType: EntityTypeData | string, entitySubType?: string | IGuid): boolean {\n const entityTypeData = EntityTypeData.getEntityTypeData(entityType, entitySubType);\n\n return this.entityTypes.has(entityTypeData.idString);\n }\n\n public keys(): IterableIterator {\n return this.values();\n }\n\n public tryAdd(entityType: EntityTypeData | string, entitySubType?: string | IGuid): boolean {\n const entityTypeData = EntityTypeData.getEntityTypeData(entityType, entitySubType);\n\n if (this.has(entityTypeData)) {\n return false;\n }\n\n this.add(entityTypeData);\n return true;\n }\n\n public values(): IterableIterator {\n return this.entityTypes.values();\n }\n}\n","import { IFieldFilter } from './interfaces/field-filter.interface';\nimport { IFieldFilterSet } from './interfaces/field-filter-set.interface';\n\nexport class FieldFilterSet extends Set implements IFieldFilterSet {\n private _fieldFilters = new Map();\n\n public add(fieldFilter: IFieldFilter): this {\n const existingFilter = this.tryGet(fieldFilter);\n\n if (existingFilter !== undefined) {\n super.delete(existingFilter);\n }\n\n this._fieldFilters.set(fieldFilter.fieldName, fieldFilter);\n super.add(fieldFilter);\n\n return this;\n }\n\n public delete(fieldFilter: IFieldFilter): boolean {\n const existingFilter = this.tryGet(fieldFilter);\n\n if (existingFilter !== undefined) {\n super.delete(existingFilter);\n }\n\n return this._fieldFilters.delete(fieldFilter.fieldName);\n }\n\n public has(fieldFilter: IFieldFilter): boolean {\n return this._fieldFilters.has(fieldFilter.fieldName);\n }\n\n public clear(): void {\n super.clear();\n\n this._fieldFilters.clear();\n }\n\n private tryGet(fieldFilter: IFieldFilter): IFieldFilter | undefined {\n if (this._fieldFilters.has(fieldFilter.fieldName)) {\n for (const existingFilter of this) {\n if (existingFilter.fieldName === fieldFilter.fieldName) {\n return existingFilter;\n }\n }\n\n return undefined;\n }\n }\n}\n","import { GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IEntityBrowserFilter } from '../interfaces/filters/entity-browser-filter.interface';\nimport { EntityTypeSet } from '../entity-type-set';\nimport { FieldFilterSet } from '../../models/field-filter-set';\nimport { IFieldFilterData } from '../../models/field-filter.data';\nimport { IEntityTypeData } from '../../models/entity-type-data';\nimport { IEntityBrowserFilterData } from '../interfaces/filters/entity-browser-filter-data.interface';\nimport { PageInfo } from '../interfaces/filters/page-info';\nimport { IEntityTypeSet } from '../interfaces/entity-type-set.interface';\nimport { EntityBrowserFilterData } from './entity-browser-filter.data';\n\nexport class EntityBrowserFilter implements IEntityBrowserFilter {\n public checkedEntityIds?: Set;\n public entityIds = new GuidSet();\n public entityOwnerTypes = new GuidSet();\n public entityTypes: IEntityTypeSet;\n public selectableEntityTypes: IEntityTypeSet;\n public excludedCheckedEntityIds?: Set;\n public excludedEntities = new GuidSet();\n public fieldFilters = new FieldFilterSet();\n public includedEntities = new GuidSet();\n public pageInfo = new PageInfo();\n public refresherType = SafeGuid.EMPTY;\n public searchLogicalIds = false;\n public selectedEntityIds = new GuidSet();\n public textFilter = '';\n\n public get isHierarchical(): boolean {\n return false;\n }\n\n constructor(\n entityTypes?: IEntityTypeData | string | IEntityTypeData[] | Iterable | string[] | Iterable,\n selectableEntityTypes?: IEntityTypeData | string | IEntityTypeData[] | Iterable | string[] | Iterable\n ) {\n this.pageInfo.page = 1;\n this.pageInfo.pageSize = 100;\n this.pageInfo.lastEntityId = SafeGuid.EMPTY;\n\n this.entityTypes = new EntityTypeSet();\n if (entityTypes) {\n if (isString(entityTypes) || 'type' in entityTypes) {\n this.entityTypes.add(entityTypes);\n } else {\n this.entityTypes.addRange(entityTypes);\n }\n }\n\n this.selectableEntityTypes = new EntityTypeSet();\n if (selectableEntityTypes) {\n if (isString(selectableEntityTypes) || 'type' in selectableEntityTypes) {\n this.selectableEntityTypes.add(selectableEntityTypes);\n } else {\n this.selectableEntityTypes.addRange(selectableEntityTypes);\n }\n }\n }\n\n public clone(filter?: IEntityBrowserFilter): IEntityBrowserFilter {\n let clonedFilter = filter;\n if (!clonedFilter) {\n clonedFilter = this.createFilter();\n }\n clonedFilter.entityIds = new GuidSet(this.entityIds);\n clonedFilter.entityOwnerTypes = new GuidSet(this.entityOwnerTypes);\n clonedFilter.entityTypes = new EntityTypeSet(this.entityTypes);\n clonedFilter.selectableEntityTypes = new EntityTypeSet(this.selectableEntityTypes);\n clonedFilter.excludedEntities = new GuidSet(this.excludedEntities);\n clonedFilter.fieldFilters = new FieldFilterSet(this.fieldFilters);\n clonedFilter.includedEntities = new GuidSet(this.includedEntities);\n clonedFilter.pageInfo = this.pageInfo.clone();\n clonedFilter.refresherType = this.refresherType;\n clonedFilter.searchLogicalIds = this.searchLogicalIds;\n clonedFilter.textFilter = this.textFilter;\n return clonedFilter;\n }\n\n public extractRestParam(): IEntityBrowserFilterData {\n const param = this.createRestParam();\n this.fillRestParam(param);\n return param;\n }\n\n protected createFilter(): EntityBrowserFilter {\n return new EntityBrowserFilter();\n }\n\n protected createRestParam(): IEntityBrowserFilterData {\n return new EntityBrowserFilterData();\n }\n\n protected fillRestParam(param: IEntityBrowserFilterData): void {\n if (param instanceof EntityBrowserFilterData) {\n param.entityIds = new ObservableCollection();\n for (const guid of this.entityIds) {\n param.entityIds.add(guid);\n }\n\n param.entityOwnerTypes = new ObservableCollection();\n for (const guid of this.entityOwnerTypes) {\n param.entityOwnerTypes.add(guid);\n }\n\n param.entityTypes = new ObservableCollection();\n for (const entityType of this.entityTypes) {\n param.entityTypes.add(entityType);\n }\n\n param.excludedEntities = new ObservableCollection();\n for (const guid of this.excludedEntities) {\n param.excludedEntities.add(guid);\n }\n\n param.fieldFilters = new ObservableCollection();\n for (const filter of this.fieldFilters) {\n param.fieldFilters.add(filter.extractRestParam());\n }\n\n param.includedEntities = new ObservableCollection();\n for (const guid of this.includedEntities) {\n param.includedEntities.add(guid);\n }\n\n param.pageInfo = this.pageInfo;\n param.refresherType = this.refresherType;\n param.searchLogicalIds = this.searchLogicalIds;\n param.textFilter = this.formatText(this.textFilter);\n }\n }\n\n private formatText(textToFilter: string): string {\n const result = JSON.stringify(textToFilter);\n return encodeURIComponent(result.substring(1, result.length - 1));\n }\n}\n","import { GuidSet, IGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { EntityTypeData, IEntityTypeData } from '../../models/entity-type-data';\nimport { IHierarchicalEntityBrowserFilter } from '../interfaces/filters/hiearchical-entity-browser-filter.interface';\nimport { IEntityBrowserFilterData } from '../interfaces/filters/entity-browser-filter-data.interface';\nimport { ExpanderFilterData, IExpanderFilterData } from '../../models/expander-filter-data';\nimport { IEntityBrowserFilter } from '../interfaces/filters/entity-browser-filter.interface';\nimport { HierarchicalEntityBrowserFilterData } from './entity-browser-filter.data';\nimport { EntityBrowserFilter } from './entity-browser-filter';\n\nexport class HierarchicalEntityBrowserFilter extends EntityBrowserFilter implements IHierarchicalEntityBrowserFilter {\n public entityExpanderTypes = new Map();\n public expandedParents = new GuidSet();\n public isRootExpanded = true;\n\n public get isHierarchical(): boolean {\n return true;\n }\n\n constructor(entityTypes?: IEntityTypeData[] | Iterable | string[] | Iterable) {\n super(entityTypes);\n }\n\n public clone(filter?: IEntityBrowserFilter): IEntityBrowserFilter {\n const clonedFilter = super.clone(filter) as HierarchicalEntityBrowserFilter;\n clonedFilter.entityExpanderTypes = new Map(this.entityExpanderTypes);\n clonedFilter.expandedParents = new GuidSet(this.expandedParents);\n clonedFilter.isRootExpanded = this.isRootExpanded;\n return clonedFilter;\n }\n\n protected createFilter(): EntityBrowserFilter {\n return new HierarchicalEntityBrowserFilter();\n }\n\n protected createRestParam(): IEntityBrowserFilterData {\n return new HierarchicalEntityBrowserFilterData();\n }\n\n protected fillRestParam(param: IEntityBrowserFilterData): void {\n super.fillRestParam(param);\n\n if (param instanceof HierarchicalEntityBrowserFilterData) {\n const expanderDataCollection = new ObservableCollection();\n for (const [key, value] of this.entityExpanderTypes) {\n const expanderData = new ExpanderFilterData();\n expanderData.entityTypeData = key;\n expanderData.expanderType = value;\n expanderDataCollection.add(expanderData);\n }\n\n param.expanderData = expanderDataCollection;\n\n param.expandedParents = new ObservableCollection();\n for (const guid of this.expandedParents) {\n param.expandedParents.add(guid);\n }\n\n param.isRootExpanded = this.isRootExpanded;\n }\n }\n}\n","import { IGuid } from 'safeguid';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Injectable } from '@angular/core';\nimport { Mutex } from 'RestClient/Helpers/semaphore';\nimport { naturalSort } from '../utilities/natural-sort';\nimport { EntityBrowserController, EntityBrowserExpandData, EntityBrowserRefreshData, IEntityBrowserController } from '../controllers/entity-browser/entity-browser.controller';\nimport { EntityBrowserItem } from '../components/entity-browser/items/entity-browser-item';\nimport { EntityBrowserResult } from './interfaces/entity-browser-result';\nimport { IEntityBrowserFilter } from './interfaces/filters/entity-browser-filter.interface';\nimport { IEntityBrowserService } from './interfaces/entity-browser.service.interface';\nimport { IEntityTypeSet } from './interfaces/entity-type-set.interface';\nimport { EntityTypeSet } from './entity-type-set';\nimport { HierarchicalEntityBrowserFilter } from './filters/hierarchical-entity-browser-filter';\n\n@Injectable({ providedIn: 'root' })\nexport class EntityBrowserService implements IEntityBrowserService {\n private static defaultLogicalEntityTypes: IEntityTypeSet;\n\n private logicalTypesMutex = new Mutex();\n private scClient: ISecurityCenterClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n // always check availability since we use reflection to load this component\n this.scClient = securityCenterProvider?.scClient;\n\n this.retrieveLogicalTypesAsync().fireAndForget();\n }\n\n public cloneFilter(filter: IEntityBrowserFilter, isHierarchical = false): IEntityBrowserFilter {\n if (isHierarchical && !(filter instanceof HierarchicalEntityBrowserFilter)) {\n return filter.clone(new HierarchicalEntityBrowserFilter());\n }\n return filter.clone();\n }\n\n public compareItems(item1: EntityBrowserItem, item2: EntityBrowserItem, isHierarchical = false): number {\n if (isHierarchical) {\n if (item1.sortPriority > item2.sortPriority) {\n return -1;\n } else if (item1.sortPriority < item2.sortPriority) {\n return 1;\n }\n }\n\n return naturalSort(item1.text, item2.text);\n }\n\n public async getDefaultLogicalTypesAsync(): Promise {\n if (EntityBrowserService.defaultLogicalEntityTypes) {\n return EntityBrowserService.defaultLogicalEntityTypes;\n }\n\n const release = await this.logicalTypesMutex.acquire();\n try {\n //await this.retrieveLogicalTypesAsync();\n return EntityBrowserService.defaultLogicalEntityTypes;\n } finally {\n release();\n }\n }\n\n // public static createFilterFromTypes(entityTypes: EntityTypeData[] | Iterable | EntityTypeData): EntityBrowserFilter {\n // const types = entityTypes instanceof EntityTypeData ? [entityTypes] : entityTypes;\n // const hierarchicalTypes = this.getDefaultHierarchicalTypes();\n // let filter: EntityBrowserFilter | undefined;\n // for (const entityType of types) {\n // if (!hierarchicalTypes.has(entityType)) {\n // const subTypes = EntityTypes.getSubTypes(entityType.type);\n\n // let applyFlatFilter = subTypes.length === 0;\n // if (subTypes.length > 0) {\n // for (const subType of subTypes) {\n // if (!hierarchicalTypes.has(entityType.type + subType)) {\n // applyFlatFilter = true;\n // break;\n // }\n // }\n // }\n // if (applyFlatFilter) {\n // filter = new FlatEntityBrowserFilter();\n // break;\n // }\n // }\n // }\n\n // if (!filter) {\n // filter = new HierarchicalEntityBrowserFilter();\n // }\n\n // filter.entityTypes.addRange(types);\n // return filter;\n // }\n\n public async refreshAsync(componentId: IGuid, filter: IEntityBrowserFilter, isFullRefresh: boolean): Promise {\n if (!componentId || componentId.isEmpty()) {\n const result = new EntityBrowserResult();\n result.initializeAllFields();\n return new EntityBrowserResult();\n }\n\n const controller = await this.getController();\n const data = new EntityBrowserRefreshData();\n data.isFullRefresh = isFullRefresh;\n data.componentId = componentId;\n data.filter = filter.extractRestParam();\n return ((await controller.getRefreshAsync(data)) as EntityBrowserResult) ?? new EntityBrowserResult();\n }\n\n public async expandAsync(componentId: IGuid, entityId: IGuid, filter: IEntityBrowserFilter): Promise {\n if (!componentId || componentId.isEmpty()) {\n const result = new EntityBrowserResult();\n result.initializeAllFields();\n return new EntityBrowserResult();\n }\n\n const controller = await this.getController();\n const data = new EntityBrowserExpandData();\n data.componentId = componentId;\n data.entityId = entityId;\n data.filter = filter.extractRestParam();\n return ((await controller.getExpandAsync(data)) as EntityBrowserResult) ?? new EntityBrowserResult();\n }\n\n private async getController(): Promise {\n return (await this.scClient.getAsync(EntityBrowserController)) as EntityBrowserController;\n }\n\n private async retrieveLogicalTypesAsync(): Promise {\n const release = await this.logicalTypesMutex.acquire();\n try {\n const logicalTypes = await (await this.getController()).getLogicalTypesAsync();\n if (logicalTypes) {\n EntityBrowserService.defaultLogicalEntityTypes = new EntityTypeSet(logicalTypes);\n }\n } finally {\n release();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { Mutex } from 'RestClient/Helpers/semaphore';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ApiException, FeaturesClient } from '../../api/api';\nimport { LoggerService } from '../logger/logger.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({\n providedIn: 'root',\n})\nexport class FeaturesService {\n //#region Fields\n\n private featuresInternal = SafeGuid.createSet();\n private getFeaturesMutex = new Mutex();\n private getFeaturesMutexRelease: (() => void) | null = null;\n private scClient!: SecurityCenterClient;\n\n //#endregion\n\n //#region Constructors\n\n constructor(private featuresClient: FeaturesClient, scClientService: SecurityCenterClientService, private logger: LoggerService) {\n this.scClient = scClientService.scClient;\n if (this.scClient) {\n this.aquireGetFeaturesMutex().fireAndForget();\n if (this.scClient.isLoggedOn) {\n this.refreshFeatures().fireAndForget();\n }\n this.scClient.onLogonStateChanged(async (args) => {\n if (args.loggedOn()) {\n await this.refreshFeatures();\n } else {\n if (!this.getFeaturesMutexRelease) {\n await this.aquireGetFeaturesMutex();\n }\n\n this.featuresInternal.clear();\n }\n });\n }\n }\n\n //#endregion\n\n //#region Public Methods\n\n public async getFeaturesAsync(): Promise> {\n (await this.getFeaturesMutex.acquire())();\n return this.featuresInternal;\n }\n\n private async aquireGetFeaturesMutex() {\n this.getFeaturesMutexRelease = await this.getFeaturesMutex.acquire();\n }\n\n private async refreshFeatures(): Promise {\n try {\n this.featuresInternal = SafeGuid.createSet(await this.featuresClient.getAvailableFeatures().toPromise());\n this.logger.traceDebug(`There are ${this.featuresInternal.size} features enabled`);\n } catch (err) {\n if (err instanceof ApiException) {\n this.logger.traceError(`Failed to retrieve feature set : Code ${err.status}`, err.message);\n } else {\n this.logger.traceError('Failed to retrieve feature set : Unknown error', err);\n }\n } finally {\n if (this.getFeaturesMutexRelease) {\n this.getFeaturesMutexRelease();\n this.getFeaturesMutexRelease = null;\n }\n }\n }\n\n //#endregion\n}\n","import { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { CommandProvider, CommandContext, CommandsService } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { isEntityCommandProvider } from '../entity-command-provider';\nimport { CommandsUsage } from './commands-usage';\n\nexport class CommandsUsageManager {\n private commandsUsages: CommandsUsage[] = [];\n\n constructor(private commandsService: CommandsService) {}\n\n public invalidateCanExecuteForAllCommandsUsage(commandId: IGuid, canExecute?: boolean): void {\n this.commandsUsages.forEach((commandsUsage) => commandsUsage.invalidateCanExecute(commandId, canExecute));\n }\n\n public async createUsageAsync(\n scClient: ISecurityCenterClient,\n commandProviders: CommandProvider[],\n commandContext?: CommandContext,\n specificCommandIds?: IGuid[],\n onlyUseSpecificCommands = false,\n targetElement?: Element\n ): Promise {\n let context = commandContext;\n const target = targetElement ?? commandContext?.target;\n if (!context) {\n context = { type: SafeGuid.EMPTY, data: undefined } as CommandContext;\n }\n\n const existingUsage = this.commandsUsages.find((x) => x.represents(context as CommandContext, specificCommandIds, target));\n if (existingUsage) {\n return existingUsage;\n }\n\n const entityFields: string[] = [];\n for (const provider of commandProviders) {\n if (isEntityCommandProvider(provider)) {\n for (const field of provider.requiredEntityFields) {\n entityFields.push(field);\n }\n }\n }\n\n const entityCache = scClient.buildEntityCache(entityFields);\n const commandsUsage = new CommandsUsage(this.commandsService, context, entityCache, target, specificCommandIds);\n\n // Add in array right away even if missing commands to avoid creating duplicates of same usage while awaiting for commands\n this.commandsUsages.push(commandsUsage);\n const hasSpecificCommand = specificCommandIds && specificCommandIds.length > 0;\n\n if (specificCommandIds && hasSpecificCommand) {\n commandsUsage.addCommands(await this.commandsService.getCommandsAsync(specificCommandIds, true, commandsUsage.commandContext));\n }\n\n if (!hasSpecificCommand || !onlyUseSpecificCommands) {\n commandsUsage.addCommands(await this.commandsService.getAvailableCommandsAsync(commandsUsage.commandContext));\n }\n\n const usageDoneUnsubscribe = commandsUsage.usageDone.subscribe(() => {\n setTimeout(() => {\n const index = this.commandsUsages.indexOf(commandsUsage);\n if (index > -1 && commandsUsage.subscriberCount === 0) {\n usageDoneUnsubscribe();\n commandsUsage.dispose();\n this.commandsUsages.splice(index, 1);\n }\n }, 5000);\n });\n return commandsUsage;\n }\n}\n","import { IGuid } from 'safeguid';\nimport { CommandProvider } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { EntityCommandContext } from './entity-command-context';\n\nexport interface EntityCommandProvider extends CommandProvider {\n requiredEntityFields: Set;\n getAvailableCommandIdsAsync(commandContextArgs: EntityCommandContext): Promise;\n}\n\nexport const isEntityCommandProvider = (instance: unknown): instance is EntityCommandProvider => {\n return isOfType(instance, 'requiredEntityFields');\n};\n","import { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { GuidMap, IGuid } from 'safeguid';\nimport { SubscriptionCollection } from '../../../utilities/subscription-collection';\nimport { CommandUsage } from './command-usage';\nimport { CommandsUsage } from './commands-usage';\n\nexport class CommandsUsageCollection {\n private isReady$ = new BehaviorSubject(true);\n\n private commandsUsageReadySubscriptions = new SubscriptionCollection();\n private commandSubscriptions = new Map void>();\n\n public get length(): number {\n return this.commandSubscriptions.size;\n }\n\n private get isReady(): boolean {\n for (const commandsUsage of this.commandSubscriptions.keys()) {\n if (!commandsUsage.isReady$.getValue()) {\n return false;\n }\n }\n return true;\n }\n\n public get allCommandUsages(): CommandUsage[] {\n const filteredCommands = new GuidMap();\n for (const commandsUsage of this.commandSubscriptions.keys()) {\n for (const commandUsage of commandsUsage.commands) {\n if (!filteredCommands.has(commandUsage.id)) {\n filteredCommands.set(commandUsage.id, commandUsage);\n }\n }\n }\n\n return Array.from(filteredCommands.values());\n }\n\n public [Symbol.iterator](): IterableIterator {\n return this.commandSubscriptions.keys();\n }\n\n public addUsage(commandsUsage: CommandsUsage): void {\n if (!mapSome(this.commandSubscriptions, (x) => x[0].equals(commandsUsage))) {\n const commandSubscription = commandsUsage.subscribe();\n this.commandSubscriptions.set(commandsUsage, commandSubscription);\n if (!commandsUsage.isReady$.getValue()) {\n if (this.isReady$.getValue()) {\n this.isReady$.next(false);\n }\n\n const subscription = commandsUsage.isReady$.subscribe((isReady) => {\n if (!isReady) {\n return;\n }\n if (this.isReady) {\n this.isReady$.next(true);\n }\n this.commandsUsageReadySubscriptions.remove(subscription);\n subscription.unsubscribe();\n });\n this.commandsUsageReadySubscriptions.add(subscription);\n }\n }\n }\n\n public addUsages(commandsUsages: CommandsUsage[] | CommandsUsageCollection): void {\n for (const commandsUage of commandsUsages) {\n this.addUsage(commandsUage);\n }\n }\n\n public clear(): void {\n this.commandsUsageReadySubscriptions.unsubscribeAll();\n for (const subscription of this.commandSubscriptions.values()) {\n subscription();\n }\n this.commandSubscriptions.clear();\n }\n\n public async createContextMenuItemsAsync(): Promise {\n await this.waitToBeReady();\n return CommandsUsage.createContextMenuItems(this.allCommandUsages);\n }\n\n public invalidateCanExecute(commandId: IGuid): void {\n for (const commandsUsage of this.commandSubscriptions.keys()) {\n commandsUsage.invalidateCanExecute(commandId);\n }\n }\n\n public invalidateDisplay(commandId: IGuid): void {\n for (const commandsUsage of this.commandSubscriptions.keys()) {\n commandsUsage.invalidateDisplay(commandId);\n }\n }\n\n public removeUsages(commandsUsages: CommandsUsage[] | CommandsUsageCollection): void {\n for (const commandsUsage of commandsUsages) {\n const subscription = this.commandSubscriptions.get(commandsUsage);\n if (subscription) {\n subscription();\n this.commandSubscriptions.delete(commandsUsage);\n }\n }\n }\n\n private async waitToBeReady(): Promise {\n return this.isReady$\n .pipe(\n filter((isReady) => isReady),\n take(1),\n switchMap(() => of(undefined))\n )\n .toPromise();\n }\n}\n","// Import the core angular services.\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { NgZone } from '@angular/core';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { ElementRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { WINDOW } from '@utilities/common-helper';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport {\n CommandBindings,\n CommandsService,\n CommandSubscriptionOptions,\n CommandsSubscription,\n CommandEntry,\n CommandProvider,\n CommandContext,\n CommandDisplay,\n ExecuteCommandData,\n CommandRequirements,\n FEATURES_SERVICE,\n} from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginCommand } from '../../interfaces/plugins/public/plugin-public.interface';\nimport { SubscriptionCollection } from '../../utilities/subscription-collection';\nimport { FeaturesService } from '../features/features.service';\nimport { CommandsUsageManager } from './commands-usage/commands-usage-manager';\nimport { CommandsUsage } from './commands-usage/commands-usage';\nimport { CommandsUsageCollection } from './commands-usage/commands-usage-collection';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n// Based on Ban Naddel's code\n// https://www.bennadel.com/blog/3382-handling-global-keyboard-shortcuts-using-priority-and-terminality-in-angular-5-0-5.htm\n\ninterface Listener {\n priority: number;\n inputs: boolean;\n bindings: CommandBindings;\n}\n\ninterface NormalizedKeys {\n [key: string]: string;\n}\n\ninterface ValidationParameters {\n skipCommandValidation?: boolean;\n activeTargetOverride?: Element;\n commandContext?: CommandContext;\n}\n\nexport interface ContextMenuHandler {\n isContextMenuOpen: boolean;\n onContextMenuShow$: Observable;\n onContextMenuHide$: Observable;\n showContextMenu(event: MouseEvent, menuItems?: ContextMenuItem[], reference?: ElementRef | null): boolean;\n hideContextMenu(): void;\n}\n\n// --------------------------\n\n// Map to normalized keys across different browser implementations.\n// --\n// https://github.com/angular/angular/blob/5.0.5/packages/platform-browser/src/browser/browser_adapter.ts#L25-L42\nconst KEY_MAP: { [k: string]: string } = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n Del: 'Delete',\n Esc: 'Escape',\n Left: 'ArrowLeft',\n Right: 'ArrowRight',\n Up: 'ArrowUp',\n Down: 'ArrowDown',\n Menu: 'ContextMenu',\n Scroll: 'ScrollLock',\n Win: 'OS',\n ' ': 'Space',\n '.': 'Dot',\n};\n\n// NOTE: These will only be applied after the key has been lower-cased. As such, both the\n// alias and the final value (in this mapping) should also be lower-case.\nconst KEY_ALIAS: { [k: string]: string } = {\n command: 'meta',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n left: 'arrowleft',\n right: 'arrowright',\n up: 'arrowup',\n};\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class InternalCommandsService implements CommandsService, OnDestroy {\n // determine the currently active element for commands having a target (like tiles)\n public activeTarget: Element | undefined;\n public get isContextMenuOpen(): boolean {\n return this.contextMenuHandler?.isContextMenuOpen || false;\n }\n\n public onContextMenuShow$: Observable;\n public onContextMenuHide$: Observable;\n private onContextMenuShowSubject: Subject = new Subject();\n private onContextMenuHideSubject: Subject = new Subject();\n private activeCommandsUsages = new CommandsUsageCollection();\n private activeContextMenuCommandsUsages = new CommandsUsageCollection();\n private commandProviders: CommandProvider[] = [];\n private commands = SafeGuid.createMap();\n private commandsUsageManager = new CommandsUsageManager(this);\n private contextMenuHandler!: ContextMenuHandler;\n private knownShortcutCommands = SafeGuid.createMap();\n private listeners: Listener[];\n private normalizedKeys: NormalizedKeys = {};\n private scClient: WebAppClient;\n private zone: NgZone;\n private additionnalRequirements = SafeGuid.createMap();\n private subscriptions = new SubscriptionCollection();\n private commandHandlerSubscriptions = new SubscriptionCollection();\n\n // Initialize the keyboard shortcuts service.\n constructor(\n zone: NgZone,\n securityCenterClientService: SecurityCenterClientService,\n @Inject(FEATURES_SERVICE) private featuresService: FeaturesService,\n @Inject(WINDOW) window: Window\n ) {\n this.scClient = securityCenterClientService?.scClient;\n\n this.onContextMenuShow$ = this.onContextMenuShowSubject.asObservable();\n this.onContextMenuHide$ = this.onContextMenuHideSubject.asObservable();\n\n if (this.scClient) {\n this.subscriptions.add(this.scClient.onLogonStateChanged((args) => this.onLogonStateChanged(args)));\n }\n this.zone = zone;\n\n this.listeners = [];\n\n // Since we're going to create a root event-handler for the keydown event, we're\n // gonna do this outside of the NgZone. This way, we're not constantly triggering\n // change-detection for every key event - we'll only re-enter the Angular Zone\n // when we have an event that is actually being consumed by one of our components.\n this.zone.runOutsideAngular((): void => {\n window.addEventListener('keydown', (event) => this.handleKeyboardEvent(event));\n });\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.unsubscribeAll();\n }\n\n public addActiveCommandsUsages(commandsUsages: CommandsUsage[] | CommandsUsageCollection): void {\n this.activeCommandsUsages.addUsages(commandsUsages);\n }\n\n public appendRequirements(commandId: IGuid, commandRequirements: CommandRequirements): void {\n const currentRequirements = this.additionnalRequirements.get(commandId) ?? [];\n currentRequirements.push(commandRequirements);\n this.additionnalRequirements.set(commandId, currentRequirements);\n }\n\n public getAdditionnalRequirements(commandId: IGuid): CommandRequirements[] {\n return this.additionnalRequirements.get(commandId) ?? [];\n }\n\n public async canExecuteCommandAsync(commandId: IGuid, commandContext?: CommandContext): Promise {\n for (const listener of this.listeners) {\n const commandEntry = listener.bindings.getCommand(commandId);\n if (commandEntry && (await this.internalCanExecuteCommandAsync(commandEntry, commandContext))) {\n return true;\n }\n }\n return false;\n }\n\n public executeCommand(commandId: IGuid, commandContext?: CommandContext, event?: Event, targetElement?: Element): void {\n this.internalExecuteCommandAsync(commandId, false, commandContext, event, targetElement).fireAndForget();\n }\n\n public forceExecuteCommand(commandId: IGuid, commandContext?: CommandContext, event?: Event, targetElement?: Element): void {\n this.internalExecuteCommandAsync(commandId, true, commandContext, event, targetElement).fireAndForget();\n }\n\n public async getAvailableCommandsAsync(contextArgs: CommandContext): Promise {\n const commandIds = SafeGuid.createSet();\n if (contextArgs) {\n for (const provider of await this.getActiveCommandProvidersAsync()) {\n const supportedCommands = await provider.getAvailableCommandIdsAsync(contextArgs);\n supportedCommands.forEach((commandId) => {\n commandIds.add(commandId);\n });\n }\n }\n const pluginCommands = await this.getCommandsAsync(Array.from(commandIds), true, contextArgs);\n return pluginCommands;\n }\n\n public async getCommandAsync(commandId: IGuid, executable?: boolean, commandContext?: CommandContext): Promise {\n const commands = await this.getCommandsAsync([commandId], executable, commandContext);\n\n if (commands?.length > 0) {\n return commands[0];\n }\n return undefined;\n }\n\n public async getCommandDisplayAsync(commandId: IGuid, commandContext?: CommandContext): Promise {\n for (const listener of this.listeners) {\n const commandEntry = listener.bindings.getCommand(commandId);\n\n if (commandEntry) {\n const commandDisplay = await this.internalGetCommandDisplayAsync(commandEntry, commandContext);\n if (commandDisplay) {\n return commandDisplay;\n }\n }\n }\n\n const command = await this.getCommandAsync(commandId);\n if (command) {\n return { name: command.name, icon: command.icon, tooltip: command.tooltip };\n }\n }\n\n public async getCommandsAsync(commandIds: IGuid[], executable?: boolean, commandContext?: CommandContext, activeTargetOverriden?: Element): Promise {\n const result: PluginCommand[] = [];\n for (const commandId of commandIds) {\n const command = this.commands.get(commandId);\n if (command) {\n result.push(command);\n }\n }\n\n if (!executable) {\n return result;\n }\n\n const filteredCommands: PluginCommand[] = [];\n for (const command of result) {\n if (await this.isAnyAvailableAsync(command.id, { commandContext, activeTargetOverride: activeTargetOverriden })) {\n filteredCommands.push(command);\n }\n }\n return filteredCommands;\n }\n\n public getCommandShortcut(commandId: IGuid): string | undefined {\n return this.knownShortcutCommands.get(commandId);\n }\n\n public invalidateCanExecuteForAllCommandsUsage(commandId: IGuid, canExecute?: boolean): void {\n this.commandsUsageManager.invalidateCanExecuteForAllCommandsUsage(commandId, canExecute);\n }\n\n public async getCommandsUsage(commandContext: CommandContext, specificCommandIds?: IGuid[], onlyUserSpecificCommands = false, targetElement?: Element): Promise {\n return await this.commandsUsageManager.createUsageAsync(\n this.scClient,\n await this.getActiveCommandProvidersAsync(),\n commandContext,\n specificCommandIds,\n onlyUserSpecificCommands,\n targetElement\n );\n }\n\n // add the provider to the internal collection in DESCENDING priority order.\n public registerCommandProvider(commandProvider: CommandProvider): void {\n this.commandProviders.push(commandProvider);\n this.commandProviders.sort(this.compareByPriority.bind(this));\n }\n\n public registerCommands(commands: PluginCommand[]): void {\n if (commands) {\n for (const command of commands) {\n this.commands.set(command.id, command);\n if (command.keyBinding) {\n this.knownShortcutCommands.set(command.id, command.keyBinding);\n }\n }\n }\n }\n\n public registerCommandShortcut(commandId: IGuid, shortcut: string): void {\n this.knownShortcutCommands.set(commandId, shortcut);\n }\n\n public registerContextMenuHandler(handler: ContextMenuHandler): void {\n if (this.contextMenuHandler) {\n this.commandHandlerSubscriptions.unsubscribeAll();\n }\n this.contextMenuHandler = handler; // only one can be set\n this.commandHandlerSubscriptions.add(\n this.contextMenuHandler.onContextMenuShow$.pipe(untilDestroyed(this)).subscribe(() => {\n this.onContextMenuShowSubject.next.bind(this);\n }),\n this.contextMenuHandler.onContextMenuHide$.pipe(untilDestroyed(this)).subscribe(() => {\n this.onContextMenuHideSubject.next();\n })\n );\n }\n\n public removeActiveCommandsUsages(commandsUsages: CommandsUsage[] | CommandsUsageCollection): void {\n this.activeCommandsUsages.removeUsages(commandsUsages);\n }\n\n public async showContextMenuAsync(event: MouseEvent, contextArgs?: CommandContext, commandsUsages?: CommandsUsage[] | CommandsUsageCollection): Promise {\n this.clearActiveContextMenuCommandsUsage();\n\n if (commandsUsages) {\n this.activeContextMenuCommandsUsages.addUsages(commandsUsages);\n } else if (contextArgs) {\n this.activeContextMenuCommandsUsages.addUsage(\n await this.getCommandsUsage(contextArgs, undefined, undefined, event.target instanceof Element ? event.target : undefined)\n );\n }\n\n return this.showContextMenu(event, await this.activeContextMenuCommandsUsages.createContextMenuItemsAsync());\n }\n\n public showContextMenu(mouseEvent: MouseEvent, menuItems: ContextMenuItem[], reference?: ElementRef | null): boolean {\n if (menuItems.length > 0) {\n return this.contextMenuHandler.showContextMenu(mouseEvent, menuItems, reference);\n }\n return false;\n }\n\n public hideCurrentContextMenu(): void {\n this.clearActiveContextMenuCommandsUsage();\n }\n\n // configure key-event listener at the given priority. Returns a subscription that can\n // be used to unbind the listener.\n public subscribe(bindings: CommandBindings, options: CommandSubscriptionOptions): CommandsSubscription {\n this.normalizeBindings(bindings);\n\n const listener = this.addListener({\n priority: options.priority,\n inputs: false,\n bindings,\n });\n\n return {\n unsubscribe: () => {\n this.removeListener(listener);\n },\n };\n }\n\n // add the listener to the internal collection in DESCENDING priority order.\n private addListener(listener: Listener): Listener {\n this.listeners.push(listener);\n this.listeners.sort(this.compareByPriority.bind(this));\n\n return listener;\n }\n\n private async canExecuteAsync(commandEntry: CommandEntry, validationParams: ValidationParameters): Promise {\n return (\n this.isValidTargetForCommand(commandEntry, validationParams.activeTargetOverride) &&\n (validationParams.skipCommandValidation || (await this.internalCanExecuteCommandAsync(commandEntry, validationParams.commandContext)))\n );\n }\n\n private clearActiveContextMenuCommandsUsage(): void {\n this.activeContextMenuCommandsUsages.clear();\n this.contextMenuHandler.hideContextMenu();\n }\n\n private compareByPriority(a: Listener | CommandProvider, b: Listener | CommandProvider): number {\n // We want to sort in DESCENDING priority order so that the\n // higher-priority items are at the start of the collection - this will\n // make it easier to loop over later (highest priority first).\n if (a.priority < b.priority) {\n return 1;\n } else if (a.priority > b.priority) {\n return -1;\n } else {\n return 0;\n }\n }\n\n private async getActiveCommandProvidersAsync(): Promise {\n const features = await this.featuresService.getFeaturesAsync();\n return this.commandProviders.filter((commandProvider) => setEvery(commandProvider.requiredFeatures, (feature) => features.has(feature)));\n }\n\n // Get the normalized event-key from the given event.\n private getKeyFromEvent(event: KeyboardEvent): string {\n let key = event.key || 'Unidentified';\n\n if (key.startsWith('U+')) {\n key = String.fromCharCode(parseInt(key.slice(2), 16));\n }\n\n const parts = [KEY_MAP[key] || key];\n\n if (event.altKey) {\n parts.push('Alt');\n }\n if (event.ctrlKey) {\n parts.push('Control');\n }\n if (event.metaKey) {\n parts.push('Meta');\n }\n if (event.shiftKey) {\n parts.push('Shift');\n }\n\n return this.normalizeKey(parts.join('.')) ?? '';\n }\n\n // handle the keyboard events for the root handler (and delegate to the listeners).\n private async handleKeyboardEvent(event: KeyboardEvent): Promise {\n const key = this.getKeyFromEvent(event);\n const isInputEvent = this.isEventFromInput(event);\n\n // Iterate over the listeners in DESCENDING priority order.\n for (const listener of this.listeners) {\n const bindings = listener.bindings;\n const commandEntry = bindings.getCommandFromKey(key);\n if (commandEntry) {\n let commandContext = commandEntry.targetData;\n let targetElement: Element | undefined;\n\n for (const commandUsage of this.activeCommandsUsages.allCommandUsages) {\n if (commandUsage.id.equals(commandEntry.commandId)) {\n commandContext = commandUsage.commandContext;\n targetElement = commandUsage.targetElement;\n break;\n }\n }\n\n // if a target is specified, ensure it contains focus\n const canExecute = await this.canExecuteAsync(commandEntry, { commandContext, activeTargetOverride: targetElement });\n\n // Execute handler if this is NOT an input event that we need to ignore.\n if (canExecute && (!isInputEvent || listener.inputs)) {\n // Right now, we're executing outside of the NgZone. As such, we\n // have to re-enter the NgZone so that we can hook back into change-\n // detection. Plus, this will also catch errors and propagate them\n // through application properly.\n const executeCommandData: ExecuteCommandData = { commandContext, event };\n const isHandled = this.zone.runGuarded((): boolean | void | Promise => {\n try {\n if (commandEntry.executeHandler) {\n commandEntry.executeHandler(executeCommandData);\n return executeCommandData.isHandled;\n }\n } catch (error) {}\n });\n\n // If the command was handled, we're going to treat this listener as Terminal\n if (isHandled) {\n executeCommandData.event?.stopPropagation();\n executeCommandData.event?.preventDefault();\n return;\n\n // If the is marked as not handled, we're going to treat this listener as NOT Terminal\n } else {\n continue;\n }\n }\n }\n } // END: For-loop.\n }\n\n private async internalCanExecuteCommandAsync(commandEntry: CommandEntry, args?: CommandContext): Promise {\n return this.zone.runGuarded(async () => {\n try {\n const isAvailableHandler = commandEntry.isAvailableHandler;\n if (isAvailableHandler && !(await isAvailableHandler(args))) {\n return false;\n }\n const canExecuteHandler = commandEntry.canExecuteHandler;\n if (canExecuteHandler) {\n return await canExecuteHandler(args);\n }\n } catch (error) {\n return false;\n }\n return true;\n });\n }\n\n private async internalExecuteCommandAsync(\n commandId: IGuid,\n skipCommandValidation: boolean,\n commandContext?: CommandContext,\n event?: Event,\n targetElement?: Element\n ): Promise {\n for (const listener of this.listeners) {\n const entry = listener.bindings.getCommand(commandId);\n if (entry?.executeHandler) {\n // if a target is specified, ensure it contains focus\n const canExecute = await this.canExecuteAsync(entry, { skipCommandValidation, commandContext, activeTargetOverride: targetElement });\n if (canExecute) {\n try {\n const executeCommandData: ExecuteCommandData = { commandContext, event };\n entry.executeHandler(executeCommandData);\n if (executeCommandData.isHandled) {\n executeCommandData.event?.stopPropagation();\n executeCommandData.event?.preventDefault();\n return;\n }\n } catch (error) {}\n }\n }\n }\n }\n\n private async internalGetCommandDisplayAsync(commandEntry: CommandEntry, commandContext?: CommandContext): Promise {\n return this.zone.runGuarded(async () => {\n const displayHandler = commandEntry.getDisplayHandler;\n if (displayHandler) {\n try {\n return await displayHandler(commandContext);\n } catch (error) {\n return;\n }\n }\n return;\n });\n }\n\n private async internalIsCommandAvailableAsync(commandEntry: CommandEntry, commandContext?: CommandContext): Promise {\n return this.zone.runGuarded(async () => {\n try {\n const isAvailableHandler = commandEntry.isAvailableHandler;\n if (isAvailableHandler && !(await isAvailableHandler(commandContext))) {\n return false;\n }\n } catch (error) {\n return false;\n }\n return true;\n });\n }\n\n private async isAnyAvailableAsync(commandId: IGuid, validationParams: ValidationParameters): Promise {\n for (const listener of this.listeners) {\n const commandEntry = listener.bindings.getCommand(commandId);\n if (commandEntry && (await this.isAvailableAsync(commandEntry, validationParams))) {\n return true;\n }\n }\n return false;\n }\n\n private async isAvailableAsync(commandEntry: CommandEntry, validationParams: ValidationParameters): Promise {\n return (\n this.isValidTargetForCommand(commandEntry, validationParams.activeTargetOverride) &&\n (validationParams.skipCommandValidation || (await this.internalIsCommandAvailableAsync(commandEntry, validationParams.commandContext)))\n );\n }\n\n // determine if the given event originated from a form input element.\n private isEventFromInput(event: KeyboardEvent): boolean {\n if (event.target instanceof Node) {\n switch (event.target.nodeName) {\n case 'INPUT':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n }\n\n return false;\n }\n\n private isValidTargetForCommand(commandEntry: CommandEntry, activeTargetOverriden?: Element): boolean {\n const activeTarget = activeTargetOverriden ? activeTargetOverriden : this.activeTarget;\n\n // if a target is specified, ensure it contains focus\n const commandTarget = commandEntry.target;\n if (commandTarget) {\n if (!activeTarget) {\n return false;\n }\n return activeTarget === commandTarget || activeTarget.contains(commandTarget);\n }\n return true;\n }\n\n // modify a bindings collection in which the keys of the given bindings have been\n // normalized into a predictable format.\n private normalizeBindings(bindings: CommandBindings): void {\n const entries = bindings.getCommands();\n for (const entry of entries) {\n const shortcut = this.getCommandShortcut(entry.commandId);\n const normalizedKey = this.normalizeKey(shortcut);\n if (normalizedKey) {\n bindings.assignKey(entry.commandId, normalizedKey);\n }\n }\n }\n\n // return the given key in a normalized, predictable format.\n private normalizeKey(key: string | undefined): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (!this.normalizedKeys[key]) {\n this.normalizedKeys[key] = key\n .toLowerCase()\n .split('.')\n .map((segment): string => {\n return KEY_ALIAS[segment] || segment;\n })\n .sort()\n .join('.');\n }\n\n return this.normalizedKeys[key];\n }\n\n private onLogonStateChanged(args: LogonStateChangedArgs): void {\n if (!args.loggedOn()) {\n this.activeCommandsUsages.clear();\n this.clearActiveContextMenuCommandsUsage();\n this.contextMenuHandler.hideContextMenu();\n }\n }\n\n // remove the given listener from the internal collection.\n private removeListener(listenerToRemove: Listener): void {\n this.listeners = this.listeners.filter((listener: Listener): boolean => {\n return listener !== listenerToRemove;\n });\n }\n}\n","// Autogenerated: v2/help/enumerations/ApiRunningState?codegen=ts&showresources=False on 2020-07-23 3:40:07 PM\n\nexport class RunningState {\n public static NotRunning = 'NotRunning';\n public static Warning = 'Warning';\n public static Running = 'Running';\n\n public static readonly values = [\n RunningState.NotRunning,\n RunningState.Warning,\n RunningState.Running\n ];\n}\n","import { IGuid } from 'safeguid';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { EntityBrowserItemModel } from '../../../entity-browser/Items/entity-browser-item-model';\nimport { IEntityTypeData } from '../../../models/entity-type-data';\nimport { EntityBrowserItemService } from '../../../entity-browser/entity-browser-item.service';\nimport { StateItem } from '../../entity-state-item/state-item/state-item';\nimport { BrowserItem } from './browser-item';\n\nexport class EntityBrowserItem extends BrowserItem implements StateItem {\n public entityId: IGuid;\n public isIncludedItem = false;\n public model: EntityBrowserItemModel;\n public canSelect = false;\n\n public get hasWarnings(): boolean {\n return this.state === RunningState.Warning;\n }\n\n public get entityType(): IEntityTypeData {\n return this.model.entityType;\n }\n\n public get isInMaintenance(): boolean {\n return this.maintenance;\n }\n\n public get isOffline(): boolean {\n return this.state === RunningState.NotRunning;\n }\n\n public get state(): string {\n return this.model.runningState;\n }\n\n public get maintenance(): boolean {\n return this.model.maintenance;\n }\n\n public get name(): string {\n return this.model.name;\n }\n\n public get guid(): IGuid {\n return this.model.id;\n }\n\n constructor(model: EntityBrowserItemModel, isViewHierarchical: boolean, protected entityBrowserItemService: EntityBrowserItemService) {\n super();\n this.model = model;\n this.entityId = model.id;\n this.itemId = this.entityId.toString();\n this.children = null;\n this.sortPriority = model.sortPriority;\n this.canExpand = isViewHierarchical && model.canHaveChildren;\n\n this.setText();\n this.setIcon();\n }\n\n protected setIcon(): void {\n let iconName = this.entityBrowserItemService.getItemIcon(this.model) as string;\n\n if (iconName.startsWith('gen-ico-') === false) {\n iconName = 'gen-ico-' + iconName;\n }\n\n this.icon = iconName as MeltedIcon;\n\n if (this.model.hasField('customIconId')) {\n this.customIconId = this.model.customIconId;\n }\n }\n\n protected setText(): void {\n this.text = this.model.name;\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { IEntityBrowserResult } from '../../../entity-browser/interfaces/entity-browser-result';\nimport { BrowserItem } from './browser-item';\n\nexport class ShowMoreBrowserItem extends BrowserItem {\n public page!: number;\n public lastEntityId!: IGuid;\n public isQuerying = false;\n public isShowMore = true;\n\n constructor(result: IEntityBrowserResult) {\n super();\n\n this.page = result.currentPage;\n this.lastEntityId = result.lastEntityId;\n this.itemId = SafeGuid.newGuid().toString();\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport { ChangeDetectorRef } from '@angular/core';\nimport { Flavor, GenToastService, MeltedCheckboxState } from '@genetec/gelato-angular';\nimport { EntityBrowserItemService } from '@modules/shared/entity-browser/entity-browser-item.service';\nimport { EntityBrowserService } from '@modules/shared/entity-browser/entity-browser.service';\nimport {\n EntityBrowserResult,\n HierarchicalEntityBrowserResult,\n IEntityBrowserResult,\n IHierarchicalEntityBrowserResult,\n} from '@modules/shared/entity-browser/interfaces/entity-browser-result';\nimport { IEntityBrowserFilter } from '@modules/shared/entity-browser/interfaces/filters/entity-browser-filter.interface';\nimport { IEntityBrowserItemModel } from '@modules/shared/entity-browser/interfaces/items/entity-browser-item-model.interface';\nimport { EntityBrowserItemModel } from '@modules/shared/entity-browser/Items/entity-browser-item-model';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subject } from 'rxjs';\nimport { GuidMap, GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { BrowserItem } from '../items/browser-item';\nimport { EntityBrowserItem } from '../items/entity-browser-item';\nimport { ShowMoreBrowserItem } from '../items/show-more-browser-item';\n\nexport class EntityBrowserItemsSource {\n public allowMultiSelect = true;\n public checkedItemsChanged$!: Observable;\n public readonly items = new GuidMap>();\n public rootItems: BrowserItem[] = [];\n public selectedItemsChanged$!: Observable;\n public selectedItems: EntityBrowserItem[] = [];\n\n public set canSelectItemFunction(value: (model: EntityBrowserItemModel) => Promise) {\n this._canSelectItemFunction = value;\n }\n\n public get checkedEntityIds(): ReadonlySet {\n return this._checkedEntityIds;\n }\n\n public set createItemFunction(value: (model: EntityBrowserItemModel, entityBrowserItemService: EntityBrowserItemService) => EntityBrowserItem) {\n this._createItemFunction = value;\n }\n\n public get excludedCheckedEntityIds(): ReadonlySet {\n return this._excludedCheckedEntityIds;\n }\n\n public get isHierarchical(): boolean {\n return this._isHierarchical;\n }\n\n public lastSearchInstanceId = SafeGuid.EMPTY;\n\n private _canSelectItemFunction?: (model: EntityBrowserItemModel) => Promise;\n private _checkedEntityIds = new GuidSet();\n private _createItemFunction?: (model: EntityBrowserItemModel, entityBrowserItemService: EntityBrowserItemService) => EntityBrowserItem;\n private _excludedCheckedEntityIds = new GuidSet();\n private _isHierarchical = false;\n private areSourceEntitiesSet = false;\n private checkedItemsChangedSubject = new Subject();\n private entityBrowserFilter: IEntityBrowserFilter | undefined;\n private firstItemOfSelection: EntityBrowserItem | null = null;\n private itemEventUnsubscribes = new Map void)[]>();\n private lastItemOfSelection: EntityBrowserItem | null = null;\n private selectedItemsChangedSubject = new Subject();\n\n constructor(\n private entityBrowserService: EntityBrowserService,\n private entityBrowserItemService: EntityBrowserItemService,\n private translateService: TranslateService,\n private toastService: GenToastService,\n private entityBrowserId: IGuid,\n private changeDetectorRef: ChangeDetectorRef,\n private isFiltered = false\n ) {\n this.checkedItemsChanged$ = this.checkedItemsChangedSubject.asObservable();\n this.selectedItemsChanged$ = this.selectedItemsChangedSubject.asObservable();\n }\n\n public addCheckedEntityIds(checkedEntityIds: Iterable): void {\n for (const checkedEntityId of checkedEntityIds) {\n this._checkedEntityIds.add(checkedEntityId);\n }\n }\n\n public addExcludedCheckedEntityIds(excludedCheckedEntityIds: Iterable): void {\n for (const excludedCheckedEntityId of excludedCheckedEntityIds) {\n this._excludedCheckedEntityIds.add(excludedCheckedEntityId);\n }\n }\n\n public checkAll(): void {\n for (const item of this.rootItems) {\n if (item instanceof EntityBrowserItem) {\n this.setItemIsChecked(item, true);\n this._checkedEntityIds.add(item.entityId);\n }\n }\n this.onCheckedItemsChanged();\n }\n\n public clear(clearSelection = false): void {\n this.items.clear();\n this.rootItems = [];\n\n if (clearSelection) {\n this.clearSelection();\n }\n for (const unsubscribes of this.itemEventUnsubscribes.values()) {\n this.unsubscribeFromItemEvents(unsubscribes);\n }\n this.itemEventUnsubscribes.clear();\n }\n\n public clearSelection(): void {\n this.selectedItems.length = 0;\n this._checkedEntityIds.clear();\n this._excludedCheckedEntityIds.clear();\n }\n\n public dispose(): void {\n this.clear(true);\n\n for (const unsubscribes of this.itemEventUnsubscribes.values()) {\n this.unsubscribeFromItemEvents(unsubscribes);\n }\n this.itemEventUnsubscribes.clear();\n }\n\n public async expandItemAsync(item: EntityBrowserItem): Promise {\n item.isExpanding = true;\n try {\n if (this.entityBrowserFilter) {\n const result = await this.expandInternalAsync(item.entityId, this.entityBrowserFilter);\n if (result?.isValid && item.isExpanded) {\n const children: EntityBrowserItem[] = [];\n this.addItemsFromResult(children, result, item);\n item.children = children;\n if (children.length === 0) {\n this.setItemIsExpanded(item, false);\n item.canExpand = false;\n }\n } else {\n this.setItemIsExpanded(item, false);\n }\n }\n } finally {\n item.isExpanding = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n public getItemParentHierarchies(items: EntityBrowserItem[]): Set {\n const parentItems = new Set();\n for (const selectedItem of items) {\n this.getParentItemsRecursive(selectedItem, parentItems);\n }\n\n for (const checkedEntityId of this._checkedEntityIds) {\n this.getAllParentItemsRecursive(checkedEntityId, parentItems);\n }\n return parentItems;\n }\n\n public async refreshAsync(filter: IEntityBrowserFilter, isFullRefresh = false, searchInstanceId: IGuid = SafeGuid.EMPTY): Promise {\n this.entityBrowserFilter = filter;\n this.areSourceEntitiesSet = filter.entityIds.size > 0;\n\n const result = (await this.entityBrowserService.refreshAsync(this.entityBrowserId, filter, isFullRefresh)).getOverload();\n // Is a new search more recent in progress?\n if (!SafeGuid.EMPTY.equals(searchInstanceId) && !searchInstanceId.equals(this.lastSearchInstanceId)) {\n return null;\n }\n\n if (result.isValid) {\n this.insertResult(result);\n }\n return result;\n }\n\n public async selectItemAsync(item: BrowserItem, event?: MouseEvent | KeyboardEvent, ignoreEvents = false): Promise {\n if (!(item instanceof EntityBrowserItem)) {\n return false;\n }\n\n if (!(await this.canSelectItemAsync(item))) {\n return false;\n }\n\n let keepCurrentSelection = false;\n let fillSelection = false;\n const hasExistingSelection = this.selectedItems && this.selectedItems.length > 0;\n let setFirstItemOfSelection = false;\n if (this.allowMultiSelect) {\n if (event instanceof KeyboardEvent) {\n if (event.shiftKey) {\n fillSelection = true;\n } else if (event.ctrlKey) {\n return false;\n } else {\n setFirstItemOfSelection = true;\n }\n } else if (event instanceof MouseEvent) {\n setFirstItemOfSelection = true;\n if (event.ctrlKey) {\n keepCurrentSelection = true;\n }\n if (event.shiftKey) {\n fillSelection = true;\n setFirstItemOfSelection = false;\n }\n }\n } else {\n setFirstItemOfSelection = true;\n }\n\n if (setFirstItemOfSelection) {\n this.firstItemOfSelection = item;\n }\n\n if (fillSelection && this.firstItemOfSelection && hasExistingSelection) {\n const newSelection: EntityBrowserItem[] = [this.firstItemOfSelection];\n const positionOfSelection = this.compareItemsPosition(this.firstItemOfSelection, item);\n if (positionOfSelection < 0) {\n let nextItem = this.getNextItem(this.firstItemOfSelection);\n while (nextItem && nextItem !== item) {\n newSelection.push(nextItem);\n nextItem = this.getNextItem(nextItem);\n }\n newSelection.push(item);\n } else if (positionOfSelection > 0) {\n let previousItem = this.getPreviousItem(this.firstItemOfSelection);\n while (previousItem && previousItem !== item) {\n newSelection.push(previousItem);\n previousItem = this.getPreviousItem(previousItem);\n }\n newSelection.push(item);\n }\n await this.setSelectedItems(newSelection, ignoreEvents);\n this.lastItemOfSelection = newSelection[newSelection.length - 1];\n } else if (keepCurrentSelection && hasExistingSelection) {\n const newSelection = Array.from(this.selectedItems);\n const itemIndex = newSelection.indexOf(item);\n if (itemIndex > -1) {\n newSelection.splice(itemIndex, 1);\n } else {\n newSelection.push(item);\n }\n await this.setSelectedItems(newSelection, ignoreEvents);\n this.lastItemOfSelection = item;\n } else {\n await this.setSelectedItems(item, ignoreEvents);\n this.lastItemOfSelection = item;\n }\n\n return true;\n }\n\n public async selectNextItemAsync(item: BrowserItem, event?: KeyboardEvent): Promise {\n let itemToSelect: EntityBrowserItem | undefined;\n const startItem = this.lastItemOfSelection ?? item;\n\n itemToSelect = this.getNextItem(startItem);\n while (itemToSelect && !(await this.selectItemAsync(itemToSelect, event))) {\n itemToSelect = this.getNextItem(itemToSelect);\n }\n\n return itemToSelect;\n }\n\n public async selectPreviousItemAsync(item: BrowserItem, event?: KeyboardEvent): Promise {\n let itemToSelect: EntityBrowserItem | undefined;\n const startItem = this.lastItemOfSelection ?? item;\n\n itemToSelect = this.getPreviousItem(startItem);\n while (itemToSelect && !(await this.selectItemAsync(itemToSelect, event))) {\n itemToSelect = this.getPreviousItem(itemToSelect);\n }\n\n return itemToSelect;\n }\n\n public async selectScrollDownItemAsync(item: BrowserItem, event: KeyboardEvent, minTop: number, maxBottom: number): Promise {\n return await this.selectScrollingItemAsync(this.lastItemOfSelection ?? item, true, event, minTop, maxBottom);\n }\n\n public async selectScrollTopItemAsync(item: BrowserItem, event: KeyboardEvent, minTop: number, maxBottom: number): Promise {\n return await this.selectScrollingItemAsync(this.lastItemOfSelection ?? item, false, event, minTop, maxBottom);\n }\n\n public setItemIsExpanded(item: BrowserItem, isExpanded: boolean): void {\n if (!item.canExpand) {\n return;\n }\n\n const wasItemExpanded = item.isExpanded;\n item.isExpanded = isExpanded;\n\n if (!isExpanded && wasItemExpanded) {\n if (item.children) {\n item.children.forEach((child) => {\n child.isExpanded = false;\n this.setItemIsExpanded(child, isExpanded);\n });\n }\n }\n }\n\n public async setSelectedItems(items: EntityBrowserItem[] | EntityBrowserItem | null = null, ignoreEvent = false): Promise {\n const newSelection: EntityBrowserItem[] = [];\n if (items) {\n const entityBrowserItems = items instanceof EntityBrowserItem ? [items] : items;\n for (const item of entityBrowserItems) {\n if (await this.canSelectItemAsync(item)) {\n // prevent duplicates\n const existing = newSelection.find((x) => x.id === item.id);\n if (!existing) {\n newSelection.push(item);\n }\n }\n }\n }\n\n this.selectedItems = newSelection;\n if (!ignoreEvent) {\n this.selectedItemsChangedSubject.next();\n }\n }\n\n public async showMoreItems(item: ShowMoreBrowserItem): Promise {\n item.isQuerying = true;\n\n if (this.entityBrowserFilter) {\n const filter = this.entityBrowserService.cloneFilter(this.entityBrowserFilter);\n filter.pageInfo.page = item.page;\n filter.pageInfo.lastEntityId = item.lastEntityId;\n\n const parent = item.parent;\n if (!parent) {\n const result = await this.getResultAsync(filter);\n if (result?.isValid) {\n this.rootItems.splice(this.rootItems.indexOf(item), 1);\n this.insertResult(result);\n } else {\n this.toastService.show({ text: this.translateService.instant('STE_MESSAGE_ERROR_FAILEDTOLOADMOREITEMS') as string, flavor: Flavor.Toast.Error });\n }\n } else if (parent && parent instanceof EntityBrowserItem && parent.children) {\n const result = await this.expandInternalAsync(parent.entityId, filter);\n if (result?.isValid) {\n const index = parent.children.indexOf(item);\n if (index >= 0) {\n parent.children.splice(index, 1);\n }\n this.addItemsFromResult(parent.children, result, parent);\n }\n }\n }\n\n item.isQuerying = false;\n this.changeDetectorRef.markForCheck();\n }\n\n public toggleItemsCheckbox(items: EntityBrowserItem[], keyboardEventItem?: EntityBrowserItem): void {\n const itemsToCheck = items.slice();\n if (this._isHierarchical) {\n const parentItemIds = new GuidSet(items.filter((itemToCheck) => itemToCheck.isExpanded).map((parent) => parent.entityId));\n for (const itemToCheck of items) {\n const itemParentIds = new GuidSet();\n this.getAllParentIdsRecursive(itemToCheck.entityId, itemParentIds);\n for (const parentId of parentItemIds) {\n if (itemParentIds.has(parentId)) {\n itemsToCheck.remove(itemToCheck);\n break;\n }\n }\n }\n }\n\n const itemUsedForIsCheckedValue = keyboardEventItem ?? itemsToCheck[0];\n const isCheckedValue = !itemUsedForIsCheckedValue.isChecked || itemUsedForIsCheckedValue.isPartialChecked === true;\n for (const itemToCheck of itemsToCheck) {\n this.updateEntityIsChecked(itemToCheck.entityId, isCheckedValue, true);\n }\n\n this.onCheckedItemsChanged();\n }\n\n public uncheckAll(): void {\n if (this._isHierarchical) {\n for (const rootItem of this.rootItems) {\n this.updateEntityIsChecked((rootItem as EntityBrowserItem).entityId, false);\n }\n } else {\n for (const entityId of this._checkedEntityIds) {\n const items = this.items.get(entityId);\n if (items) {\n for (const item of items.values()) {\n this.setItemIsChecked(item, false);\n }\n }\n }\n }\n\n this._checkedEntityIds.clear();\n this._excludedCheckedEntityIds.clear();\n\n this.onCheckedItemsChanged();\n }\n\n public updateEntityIsChecked(id: IGuid, isChecked: boolean, updateParents = false): void {\n const items = this.items.get(id);\n this.updateItemsIsChecked(items, isChecked, updateParents);\n }\n\n private canSelectEntityType(item: EntityBrowserItem): boolean {\n if (!this.entityBrowserFilter?.selectableEntityTypes || !this.entityBrowserFilter.selectableEntityTypes.size) {\n return true;\n }\n return this.entityBrowserFilter.selectableEntityTypes.has(item.model.entityType.type);\n }\n\n private addChildren(items: ReadonlyArray, result: IHierarchicalEntityBrowserResult): void {\n for (const [id, subResult] of result.subResults) {\n const parent = items.find((x) => x instanceof EntityBrowserItem && x.entityId.equals(id));\n if (parent) {\n if (!parent.children) {\n parent.children = [];\n }\n parent.isExpanded = true;\n this.addItemsFromResult(parent.children, subResult, parent);\n\n this.addChildren(parent.children, subResult);\n }\n }\n }\n\n private addItem(item: EntityBrowserItem, parentItem?: BrowserItem) {\n const id = item.entityId;\n let existingItems = this.items.get(id);\n\n if (existingItems) {\n const firstItem = existingItems.values().next().value as EntityBrowserItem;\n if (firstItem) {\n this.setItemIsChecked(item, firstItem.isChecked, firstItem.isPartialChecked);\n }\n } else {\n existingItems = new Set();\n this.items.set(id, existingItems);\n\n if (parentItem?.isChecked === true) {\n this.setItemIsChecked(item, true);\n }\n }\n\n if (this._checkedEntityIds.has(item.entityId)) {\n this.updateItemIsChecked(item, true, true);\n } else if (this.excludedCheckedEntityIds.has(item.entityId)) {\n this.updateItemIsChecked(item, false, true);\n }\n\n existingItems.add(item);\n\n let itemUnsubscribes = this.itemEventUnsubscribes.get(item.id);\n if (!itemUnsubscribes) {\n itemUnsubscribes = [];\n this.itemEventUnsubscribes.set(item.id, itemUnsubscribes);\n }\n itemUnsubscribes.push(item.expanded.subscribe((browserItem) => this.onItemExpanded(browserItem as EntityBrowserItem)));\n itemUnsubscribes.push(item.collapsed.subscribe((browserItem) => this.onItemCollapsed(browserItem as EntityBrowserItem)));\n }\n\n private addItemsFromResult(array: BrowserItem[], result: IEntityBrowserResult, parent?: BrowserItem): void {\n let items: EntityBrowserItem[] = [];\n for (const model of result.entityBrowserItemModels) {\n const item = this.createBrowserItem(model, parent);\n items.push(item);\n }\n\n if (this.areSourceEntitiesSet) {\n items = items.sort(this.compareItems.bind(this));\n }\n\n const resulIncludedEntityIds = new GuidSet(result.includedEntityIds);\n for (let item of items) {\n item.isIncludedItem = resulIncludedEntityIds.has(item.entityId);\n const existingItem = array.find((x) => x instanceof EntityBrowserItem && x.entityId.equals(item.entityId)) as EntityBrowserItem;\n if (existingItem) {\n if (!existingItem.isIncludedItem || item.isIncludedItem) {\n continue;\n }\n\n // replace new item with existing one, but mark as non included\n array.remove(existingItem);\n item = existingItem;\n item.isIncludedItem = false;\n }\n\n array.push(item);\n }\n\n const inlcudedItems = array.filter((x) => x instanceof EntityBrowserItem && x.isIncludedItem) as EntityBrowserItem[];\n if (inlcudedItems.length > 0) {\n for (const includedItem of inlcudedItems) {\n array.remove(includedItem);\n }\n\n for (const includedItem of inlcudedItems) {\n let insertIndex: number;\n for (insertIndex = array.length - 1; insertIndex >= 0; insertIndex--) {\n const lastItem = array[insertIndex];\n if (lastItem instanceof EntityBrowserItem) {\n if (this.compareItems(lastItem, includedItem) < 0) {\n break;\n }\n }\n }\n array.splice(insertIndex + 1, 0, includedItem);\n }\n }\n\n if (!result.isResultComplete) {\n this.tryAddShowMoreButton(result, array, parent);\n }\n }\n\n private tryAddShowMoreButton(result: IEntityBrowserResult, array: BrowserItem[], parent?: BrowserItem): void {\n if (!array.some((item) => 'isShowMore' in item)) {\n const showMoreItem = new ShowMoreBrowserItem(result);\n if (parent) {\n showMoreItem.parent = parent;\n }\n array.push(showMoreItem);\n }\n }\n\n private async canSelectItemAsync(item: BrowserItem): Promise {\n if (!(item instanceof EntityBrowserItem) || !item.canSelect) {\n return false;\n }\n return this._canSelectItemFunction ? await this._canSelectItemFunction(item.model) : true;\n }\n\n private compareItems(item1: EntityBrowserItem, item2: EntityBrowserItem): number {\n return this.entityBrowserService.compareItems(item1, item2, this._isHierarchical);\n }\n\n // Compares the position of two items in the tree and returns:\n // 0: either item is not found or if they are the same\n // -1: item1 is before item2\n // 1: item1 is after item2\n private compareItemsPosition(item1: BrowserItem, item2: BrowserItem): number {\n if (item1 === item2) {\n return 0;\n }\n\n let item1Position = -1;\n let item2Position = -1;\n\n if (this.isHierarchical) {\n const item1Parents: BrowserItem[] = [];\n const item2Parents: BrowserItem[] = [];\n\n // get all parents of both items\n const getParentsFunc = (item: BrowserItem, parents: BrowserItem[]) => {\n let parent = item.parent;\n while (parent) {\n parents.splice(0, 0, parent);\n parent = parent.parent;\n }\n };\n\n getParentsFunc(item1, item1Parents);\n getParentsFunc(item2, item2Parents);\n\n // Find nearest common parent\n let commonParent = null;\n let parentIndex = 0;\n while (parentIndex < item1Parents.length && parentIndex < item2Parents.length) {\n if (item1Parents[parentIndex] !== item2Parents[parentIndex]) {\n break;\n }\n commonParent = item1Parents[parentIndex];\n parentIndex++;\n }\n\n // If common parent found, get the position of direct relative (either item itself or one of its parents)\n if (commonParent?.children) {\n const getPositionItem = (item: BrowserItem, itemParents: BrowserItem[]): BrowserItem => {\n if (parentIndex < itemParents.length) {\n return itemParents[parentIndex];\n }\n return item;\n };\n\n item1Position = commonParent.children.indexOf(getPositionItem(item1, item1Parents));\n item2Position = commonParent.children.indexOf(getPositionItem(item2, item2Parents));\n }\n } else {\n item1Position = this.rootItems.indexOf(item1);\n item2Position = this.rootItems.indexOf(item2);\n }\n\n if (item1Position === -1 || item2Position === -1) {\n return 0;\n } else if (item2Position > item1Position) {\n return -1;\n } else {\n return 1;\n }\n }\n\n private createBrowserItem(model: IEntityBrowserItemModel, parent?: BrowserItem): EntityBrowserItem {\n const castedModel = (model as EntityBrowserItemModel).getOverload();\n\n let item: EntityBrowserItem;\n if (this._createItemFunction) {\n item = this._createItemFunction(castedModel, this.entityBrowserItemService);\n } else {\n item = new EntityBrowserItem(castedModel, this._isHierarchical, this.entityBrowserItemService);\n }\n\n item.canSelect = this.canSelectEntityType(item);\n\n if (parent) {\n item.parent = parent;\n }\n\n this.addItem(item, parent);\n return item;\n }\n\n private doesItemHaveCheckedParent(item: EntityBrowserItem): boolean {\n const parentIds = new GuidSet();\n this.getAllParentIdsRecursive(item.entityId, parentIds);\n for (const parentId of parentIds) {\n if (this._checkedEntityIds.has(parentId)) {\n return true;\n }\n }\n return false;\n }\n\n private async expandInternalAsync(entityId: IGuid, filter: IEntityBrowserFilter): Promise {\n const result = await this.entityBrowserService.expandAsync(this.entityBrowserId, entityId, filter);\n\n if (!result.isValid) {\n this.toastService.show({ text: this.translateService.instant('STE_MESSAGE_ERROR_FAILEDTOLOADMOREITEMS') as string, flavor: Flavor.Toast.Error });\n }\n return result;\n }\n\n private getAllParentIdsRecursive(id: IGuid, parents: Set): void {\n const items = this.items.get(id);\n if (items) {\n for (const item of items) {\n if (item.parent instanceof EntityBrowserItem) {\n const parentId = item.parent.entityId;\n parents.add(parentId);\n this.getAllParentIdsRecursive(parentId, parents);\n }\n }\n }\n }\n\n private getAllParentItemsRecursive(id: IGuid, parents: Set): void {\n const items = this.items.get(id);\n if (items) {\n for (const item of items) {\n if (item.parent instanceof EntityBrowserItem) {\n parents.add(item.parent);\n this.getAllParentItemsRecursive(item.parent.entityId, parents);\n }\n }\n }\n }\n\n private getCheckboxStateFromChildren(node: EntityBrowserItem): MeltedCheckboxState {\n let checkedCount = 0;\n let indeterminateCount = 0;\n\n let childrenCount = 0;\n\n if (node.children) {\n node.children.forEach((child) => {\n if (child instanceof EntityBrowserItem) {\n childrenCount++;\n if (child.isChecked) {\n checkedCount++;\n }\n\n if (child.isPartialChecked) {\n indeterminateCount++;\n }\n } else if (child instanceof ShowMoreBrowserItem) {\n indeterminateCount++;\n }\n });\n }\n\n if (checkedCount === childrenCount && indeterminateCount === 0) {\n return this.isFiltered ? MeltedCheckboxState.Indeterminate : MeltedCheckboxState.Checked;\n } else if (indeterminateCount > 0 || checkedCount > 0) {\n return MeltedCheckboxState.Indeterminate;\n } else {\n return this.isFiltered ? MeltedCheckboxState.Indeterminate : MeltedCheckboxState.Unchecked;\n }\n }\n\n private getItemSiblings(item: BrowserItem) {\n if (item.parent) {\n if (item.parent.children) {\n return item.parent.children;\n }\n } else {\n return this.rootItems;\n }\n return undefined;\n }\n\n private getLastChild(item: BrowserItem): EntityBrowserItem | undefined {\n if (!item.isExpanded && item instanceof EntityBrowserItem) {\n return item;\n }\n\n const children = item.children;\n if (children && children.length > 0) {\n let lastChild: EntityBrowserItem | undefined;\n for (let index = children.length - 1; index >= 0; index--) {\n const child = children[index];\n if (child instanceof EntityBrowserItem) {\n lastChild = child;\n break;\n }\n }\n if (lastChild) {\n return this.getLastChild(lastChild);\n }\n }\n }\n\n private getNextChild(item: BrowserItem): EntityBrowserItem | undefined {\n const siblings = this.getItemSiblings(item);\n if (siblings) {\n const index = siblings.indexOf(item);\n if (index > -1 && index < siblings.length - 1) {\n const nextChild = siblings[index + 1];\n if (nextChild instanceof EntityBrowserItem) {\n return nextChild;\n }\n }\n }\n\n if (item.parent) {\n return this.getNextChild(item.parent);\n }\n }\n\n private getNextItem(item: BrowserItem) {\n if (item.isExpanded && item.children && item.children.length > 0) {\n const nextItem = item.children[0];\n if (nextItem instanceof EntityBrowserItem) {\n return nextItem;\n }\n }\n return this.getNextChild(item);\n }\n\n private getPreviousItem(item: BrowserItem) {\n const siblings = this.getItemSiblings(item);\n if (siblings) {\n const index = siblings.indexOf(item);\n if (index > 0) {\n return this.getLastChild(siblings[index - 1]);\n }\n return item.parent as EntityBrowserItem;\n }\n }\n\n private getParentItemsRecursive(item: BrowserItem, parents: Set): void {\n if (item?.parent instanceof EntityBrowserItem) {\n parents.add(item.parent);\n this.getParentItemsRecursive(item.parent, parents);\n }\n }\n\n private async getResultAsync(filter: IEntityBrowserFilter, isFullRefresh = false): Promise {\n return (await this.entityBrowserService.refreshAsync(this.entityBrowserId, filter, isFullRefresh)).getOverload();\n }\n\n private insertResult(result: EntityBrowserResult): void {\n this._isHierarchical = result instanceof HierarchicalEntityBrowserResult;\n\n this.addItemsFromResult(this.rootItems, result);\n\n if (result instanceof HierarchicalEntityBrowserResult) {\n this.addChildren(this.rootItems, result);\n }\n }\n\n private onCheckedItemsChanged(): void {\n this.checkedItemsChangedSubject.next();\n }\n\n private onItemCollapsed(item: EntityBrowserItem) {\n // if (!this.filter.textFilter || this.filter.textFilter === '') {\n // this.timeouts.push(\n // setTimeout(() => {\n // if (!item.isExpanded) {\n // this.clearItemChildren(item);\n // }\n // }, 5000)\n // );\n // }\n }\n\n private onItemExpanded(item: EntityBrowserItem) {\n this.expandItemAsync(item).fireAndForget();\n }\n\n private async selectScrollingItemAsync(item: BrowserItem, isDown: boolean, event: KeyboardEvent, minTop: number, maxBottom: number): Promise {\n let selectedItem: BrowserItem | undefined;\n const itemToSelect = isDown ? this.getNextItem(item) : this.getPreviousItem(item);\n if (itemToSelect) {\n const child = itemToSelect.htmlElement;\n if (child) {\n if ((isDown && child.getBoundingClientRect().bottom < maxBottom) || (!isDown && child.getBoundingClientRect().top > minTop)) {\n selectedItem = await this.selectScrollingItemAsync(itemToSelect, isDown, event, minTop, maxBottom);\n }\n }\n }\n\n return selectedItem ?? (await this.selectItemAsync(item, event)) ? item : undefined;\n }\n\n private setItemCheckboxState(item: EntityBrowserItem, state: MeltedCheckboxState) {\n switch (state) {\n case MeltedCheckboxState.Checked:\n this.setItemIsChecked(item, true, false);\n break;\n case MeltedCheckboxState.Unchecked:\n this.setItemIsChecked(item, false, false);\n break;\n case MeltedCheckboxState.Indeterminate:\n this.setItemIsChecked(item, item.isChecked, true);\n break;\n }\n }\n\n private setItemIsChecked(item: EntityBrowserItem, isChecked: boolean, isPartiallyChecked?: boolean): void {\n item.isChecked = isChecked;\n if (isPartiallyChecked !== undefined) {\n item.isPartialChecked = isPartiallyChecked;\n }\n }\n\n private unsubscribeFromItemEvents(unsubscribes: (() => void)[] | undefined) {\n if (unsubscribes) {\n for (const unsubscribe of unsubscribes) {\n unsubscribe();\n }\n }\n }\n\n private updateItemChilrendIsChecked(item: EntityBrowserItem) {\n if (item.children) {\n item.children.forEach((child) => {\n if (child instanceof EntityBrowserItem) {\n this.setItemIsChecked(child, item.isChecked, false);\n this.updateItemChilrendIsChecked(child);\n this._checkedEntityIds.delete(child.entityId);\n this._excludedCheckedEntityIds.delete(child.entityId);\n }\n });\n }\n }\n\n private updateItemIsChecked(item: EntityBrowserItem, isChecked: boolean, updateParents = false) {\n if (isChecked) {\n this._excludedCheckedEntityIds.delete(item.entityId);\n } else {\n this._checkedEntityIds.delete(item.entityId);\n }\n\n const parentItem = item.parent as EntityBrowserItem;\n if (parentItem) {\n if (isChecked) {\n if (!this.doesItemHaveCheckedParent(item)) {\n this._checkedEntityIds.add(item.entityId);\n }\n } else if (!isChecked && this.doesItemHaveCheckedParent(item)) {\n this._excludedCheckedEntityIds.add(item.entityId);\n }\n } else if (isChecked) {\n this._checkedEntityIds.add(item.entityId);\n }\n\n this.setItemIsChecked(item, isChecked, false);\n this.updateItemChilrendIsChecked(item);\n\n if (updateParents && parentItem) {\n this.updateItemParentIsChecked(item.entityId);\n }\n }\n\n private updateItemParentIsChecked(id: IGuid) {\n const items = this.items.get(id);\n if (items) {\n for (const item of items) {\n const parentItem = item.parent as EntityBrowserItem;\n if (parentItem) {\n // Set the parent node checkbox state to the new state\n const checkboxState = this.getCheckboxStateFromChildren(parentItem);\n let checkItem = false;\n let uncheckItem = false;\n if (checkboxState === MeltedCheckboxState.Checked && (!parentItem.isChecked || parentItem.isPartialChecked === true)) {\n checkItem = true;\n } else if (checkboxState === MeltedCheckboxState.Unchecked && (parentItem.isChecked || parentItem.isPartialChecked === true)) {\n uncheckItem = true;\n } else if (checkboxState === MeltedCheckboxState.Indeterminate && !parentItem.isChecked) {\n this._excludedCheckedEntityIds.delete(parentItem.entityId);\n }\n this.setItemCheckboxState(parentItem, checkboxState);\n\n // Compute the grandfather node checkbox state\n this.updateItemParentIsChecked(parentItem.entityId);\n\n if (checkItem) {\n this.updateItemIsChecked(parentItem, true, false);\n } else if (uncheckItem) {\n this.updateItemIsChecked(parentItem, false, false);\n }\n }\n }\n }\n }\n\n private updateItemsIsChecked(items: Iterable | undefined, isChecked: boolean, updateParents = false) {\n if (items) {\n for (const item of items) {\n this.updateItemIsChecked(item, isChecked, updateParents);\n }\n }\n }\n}\n","
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n
\n
\n
\n\n
\n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n \n
= 1 }\">\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n \n\n \n \n
    \n \n \n \n \n \n \n \n \n
\n
\n\n \n \n \n
\n {{ 'STE_ACTION_LOADMOREITEMS' | translate }}\n
\n
\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
\n
\n \n \n \n \n \n \n
\n\n \n \n \n \n \n \n \n
\n","/* eslint-disable no-underscore-dangle */\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor } from '@genetec/gelato';\nimport { GenToastService } from '@genetec/gelato-angular';\nimport { IEntityBrowserFilter } from '@modules/shared/entity-browser/interfaces/filters/entity-browser-filter.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { coerceBooleanProperty } from '@modules/shared/utilities/coerceBooleanProperty';\nimport { DragDropHelper } from '@modules/tiles/utilities/dragdrophelper';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Debouncer } from 'RestClient/Helpers/Debouncer';\nimport { GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { EntityBrowserItemService } from '../../../entity-browser/entity-browser-item.service';\nimport { EntityBrowserCheckSelection, EntityBrowserSelection } from '../../../entity-browser/entity-browser-selection';\nimport { EntityBrowserService } from '../../../entity-browser/entity-browser.service';\nimport { EntityBrowserFilter } from '../../../entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserResult } from '../../../entity-browser/interfaces/entity-browser-result';\nimport { EntityBrowserItemModel } from '../../../entity-browser/Items/entity-browser-item-model';\nimport { DragDropTypes } from '../../../enumerations/drag-drop-types';\nimport { ContextTypes } from '../../../interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '../../../services/commands/commands.service';\nimport { TrackingService } from '../../../services/tracking.service';\nimport { TrackedComponent } from '../../tracked/tracked.component';\nimport { BrowserItem } from '../items/browser-item';\nimport { EntityBrowserItem } from '../items/entity-browser-item';\nimport { ShowMoreBrowserItem } from '../items/show-more-browser-item';\nimport { EntityBrowserItemsSource } from './entity-browser-items-source';\n\n@UntilDestroy()\n@Component({\n selector: 'app-entity-browser',\n templateUrl: './entity-browser.component.html',\n styleUrls: ['./tree.scss', './entity-browser.component.scss'],\n})\nexport class EntityBrowserComponent extends TrackedComponent implements OnInit, OnChanges, OnDestroy {\n static ngAcceptInputType_dragAndDropEnabled: boolean | '';\n\n @Input() public set allowMultiSelect(value: boolean) {\n this.itemsSource.allowMultiSelect = value;\n }\n\n // To display checkboxes for multi-selection\n @Input() public areItemsCheckable = false;\n\n // The browser will automatically refresh when the filter changes\n @Input() public autoRefresh = true;\n\n // Display the footer or not (refresh / check / uncheckall / etc.)\n @Input() public showFooter = true;\n\n // Callback method used to determine if an item can be selected\n @Input() public set canSelectItemFunction(value: (model: EntityBrowserItemModel) => Promise) {\n this.itemsSource.canSelectItemFunction = value;\n this.filteredItemsSource.canSelectItemFunction = value;\n }\n\n @Input() public componentId!: string;\n\n // Callback method used to create a browser items from model\n @Input() public set createItemFunction(value: (model: EntityBrowserItemModel, entityBrowserItemService: EntityBrowserItemService) => EntityBrowserItem) {\n this.itemsSource.createItemFunction = value;\n this.filteredItemsSource.createItemFunction = value;\n }\n\n // EntityBrowserFilter that determines how and what the browser will display\n @Input() public filter?: EntityBrowserFilter;\n\n // Make show checked items button available even when working with a hierarchical view\n @Input() public alwaysShowCheckedItemsActions = false;\n\n // Enables / disables the drag and drop functionality.\n public get dragAndDropEnabled(): boolean {\n return this.isDragAndDropEnabled;\n }\n @Input()\n public set dragAndDropEnabled(value: boolean) {\n this.isDragAndDropEnabled = coerceBooleanProperty(value);\n }\n // Called when an item is double clicked (or enter was pressed when item has focus)\n @Output() public entityDoubleClicked: EventEmitter = new EventEmitter();\n\n // Called when checked entities changed when mutli-selection checkboxes are enabled\n @Output() public checkedEntitiesChanged: EventEmitter = new EventEmitter();\n\n // Called the browser is done refreshing\n @Output() public refreshed: EventEmitter = new EventEmitter();\n\n // Called when selected entities changed\n @Output() public selectedEntitiesChanged: EventEmitter = new EventEmitter();\n\n @ViewChild('browserTree', { read: ElementRef }) public browserTree!: ElementRef;\n\n @ViewChild('entitySearchInput', { read: ElementRef }) public entitySearchInput!: ElementRef;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n\n // Gets the currently checked items when mutli-selection checkboxes are enabled\n public get checkedEntities(): EntityBrowserCheckSelection {\n const checkedItemModels: EntityBrowserItemModel[] = [];\n const exlcludedCheckedItemModels: EntityBrowserItemModel[] = [];\n\n const checkedEntityIds = new GuidSet(this.itemsSource.checkedEntityIds);\n const excludedCheckedEntityIds = new GuidSet(this.itemsSource.excludedCheckedEntityIds);\n\n for (const entityId of checkedEntityIds) {\n let item = this.itemsSource.items.get(entityId)?.values()?.next()?.value as EntityBrowserItem;\n if (!item && this.isFiltered) {\n item = this.filteredItemsSource.items.get(entityId)?.values()?.next()?.value as EntityBrowserItem;\n }\n if (item) {\n checkedItemModels.push(item.model);\n }\n }\n\n for (const entityId of excludedCheckedEntityIds) {\n let item = this.itemsSource.items.get(entityId)?.values()?.next()?.value as EntityBrowserItem;\n if (!item && this.isFiltered) {\n item = this.filteredItemsSource.items.get(entityId)?.values()?.next()?.value as EntityBrowserItem;\n }\n if (item) {\n exlcludedCheckedItemModels.push(item.model);\n }\n }\n return new EntityBrowserCheckSelection(checkedItemModels, exlcludedCheckedItemModels);\n }\n public get currentItemsSource(): EntityBrowserItemsSource {\n return this.isFiltered ? this.filteredItemsSource : this.itemsSource;\n }\n\n public get currentTreeElementId(): string {\n if (this.onlyShowCheckedItems) {\n return this.checkedTreeId;\n } else if (this.filteredTreeId) {\n return this.filteredTreeId;\n }\n return this.treeId;\n }\n\n public get id(): string {\n return this.uniqueId.toString();\n }\n\n // Gets the currently selected items\n public get selectedEntities(): EntityBrowserSelection {\n return new EntityBrowserSelection(this.selectedItems);\n }\n\n public readonly checkedTreeId = 'entity-browser-checked-tree-id';\n public readonly filteredTreeId = 'entity-browser-filtered-tree-id';\n public emptyText = '';\n public readonly treeId = 'entity-browser-tree-id';\n public isFiltered = false;\n public isHierarchical = false;\n public isRefreshing = false;\n public onlyShowCheckedItems = false;\n public searchText = '';\n public sortedCheckedItems: EntityBrowserItem[] = [];\n public itemsSource!: EntityBrowserItemsSource;\n public filteredItemsSource!: EntityBrowserItemsSource;\n\n private entityIdsToSelect: Set | null = null;\n private filterChangeRefreshDebouncer = new Debouncer(false, () => this.refreshAsync(), 100, -1);\n private isDragAndDropEnabled = false;\n private isSelectingScrollItem = false;\n private isUpdatingCheckedItems = false;\n private refreshSelectedItemIds: Map | null = null;\n private readonly searchDebouncer = new Debouncer(true, () => this.searchAsync(), 1000, -1);\n private readonly timeouts: ReturnType[] = [];\n private readonly uniqueId = SafeGuid.newGuid();\n\n private get selectedItems(): EntityBrowserItem[] {\n return this.currentItemsSource.selectedItems;\n }\n\n private get treeElement(): HTMLElement {\n return this.browserTree?.nativeElement;\n }\n\n constructor(\n private entityBrowserService: EntityBrowserService,\n private entityBrowserItemService: EntityBrowserItemService,\n private translateService: TranslateService,\n private toastService: GenToastService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n private changeDetectionRef: ChangeDetectorRef\n ) {\n super(trackingService);\n\n this.itemsSource = new EntityBrowserItemsSource(\n this.entityBrowserService,\n this.entityBrowserItemService,\n this.translateService,\n this.toastService,\n this.uniqueId,\n changeDetectionRef\n );\n this.filteredItemsSource = new EntityBrowserItemsSource(\n this.entityBrowserService,\n this.entityBrowserItemService,\n this.translateService,\n this.toastService,\n this.uniqueId,\n changeDetectionRef,\n true\n );\n this.itemsSource.checkedItemsChanged$.pipe(untilDestroyed(this)).subscribe(() => this.onCheckedItemsChanged());\n this.itemsSource.selectedItemsChanged$.pipe(untilDestroyed(this)).subscribe(() => this.onSelectedItemsChanged());\n this.filteredItemsSource.checkedItemsChanged$.pipe(untilDestroyed(this)).subscribe(() => this.onCheckedItemsChanged());\n this.filteredItemsSource.selectedItemsChanged$.pipe(untilDestroyed(this)).subscribe(() => this.onSelectedItemsChanged());\n }\n\n public canCheckItem(item: BrowserItem): boolean {\n if (!(item instanceof EntityBrowserItem) || !item.canSelect) {\n return false;\n }\n return !this.isFiltered || (item.isIncludedItem && item.text.toLowerCase().includes(this.searchText.toLowerCase()));\n }\n\n public async clearSearch(): Promise {\n this.searchText = '';\n if (this.isFiltered) {\n await this.searchAsync();\n } else {\n this.searchDebouncer.suspend();\n this.searchDebouncer.resume();\n }\n }\n\n public getItemId(index: number, item: BrowserItem): string {\n return item.id;\n }\n\n public isItemSelected(item: BrowserItem): boolean {\n if (item instanceof EntityBrowserItem) {\n return this.selectedItems.includes(item);\n }\n return false;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.filter !== 'undefined') {\n const change = changes.filter;\n if (change.previousValue !== change.currentValue) {\n if (this.autoRefresh) {\n this.filterChangeRefreshDebouncer.trigger();\n }\n }\n }\n }\n\n public ngOnDestroy() {\n // Cancel timeouts\n this.timeouts.forEach((timeout) => {\n clearTimeout(timeout);\n });\n this.searchDebouncer.dispose();\n this.itemsSource.dispose();\n this.filteredItemsSource.dispose();\n this.filterChangeRefreshDebouncer.dispose();\n\n super.ngOnDestroy();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n this.resetItems(true);\n }\n\n public onBrowserDragEnd(event: DragEvent): void {\n DragDropHelper.endDrag();\n }\n\n public onCheckAllItemsClicked(): void {\n this.currentItemsSource.checkAll();\n }\n\n public async onItemArrowDownPressed(item: BrowserItem, event?: KeyboardEvent): Promise {\n if (event?.ctrlKey || event?.altKey) {\n return;\n }\n event?.preventDefault();\n event?.stopPropagation();\n\n const selecteditem = await this.currentItemsSource.selectNextItemAsync(item, event);\n if (selecteditem) {\n this.focusItem(selecteditem);\n }\n }\n\n public async onItemArrowLeftPressed(item: BrowserItem, event?: KeyboardEvent): Promise {\n if (event?.ctrlKey || event?.altKey) {\n return;\n }\n event?.preventDefault();\n event?.stopPropagation();\n\n if (item.isExpanded) {\n this.currentItemsSource.setItemIsExpanded(item, false);\n } else if (item.parent && item.parent instanceof EntityBrowserItem) {\n await this.currentItemsSource.selectItemAsync(item.parent, event, true);\n this.focusItem(item.parent);\n }\n }\n\n public async onItemArrowRightPressed(item: EntityBrowserItem, event?: KeyboardEvent): Promise {\n if (event?.ctrlKey || event?.altKey) {\n return;\n }\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!item.canExpand) {\n return;\n }\n\n if (!item.isExpanded) {\n this.currentItemsSource.setItemIsExpanded(item, true);\n } else if (item.children && item.children.length > 0) {\n let itemToSelect: EntityBrowserItem | undefined;\n for (const child of item.children) {\n if (child instanceof EntityBrowserItem) {\n itemToSelect = child;\n break;\n }\n }\n\n if (itemToSelect) {\n await this.currentItemsSource.selectItemAsync(itemToSelect, event, true);\n this.focusItem(itemToSelect);\n }\n }\n }\n\n public async onItemArrowUpPressed(item: BrowserItem, event?: KeyboardEvent): Promise {\n if (event?.ctrlKey || event?.altKey) {\n return;\n }\n event?.preventDefault();\n event?.stopPropagation();\n\n const selecteditem = await this.currentItemsSource.selectPreviousItemAsync(item, event);\n if (selecteditem) {\n this.focusItem(selecteditem);\n }\n }\n\n public onItemCheckboxToggled(item: BrowserItem, event?: MouseEvent | KeyboardEvent): void {\n if (this.canCheckItem(item) && this.areItemsCheckable && item instanceof EntityBrowserItem) {\n if (event) {\n event.preventDefault();\n }\n\n const isKeyboardEvent = event instanceof KeyboardEvent;\n let itemsToCheck = [item];\n if (this.selectedItems.includes(item) || isKeyboardEvent) {\n itemsToCheck = this.selectedItems;\n }\n if (isKeyboardEvent && this.selectedItems.length > 0) {\n // Reset focus to the last selected item so that checking selection with spacebar still works\n this.focusItem(this.selectedItems[this.selectedItems.length - 1]);\n }\n\n this.currentItemsSource.toggleItemsCheckbox(itemsToCheck, isKeyboardEvent ? item : undefined);\n }\n }\n\n public async onItemClicked(item: BrowserItem, event?: MouseEvent | KeyboardEvent): Promise {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event instanceof MouseEvent) {\n if (await this.currentItemsSource.selectItemAsync(item, event)) {\n this.focusItem(item);\n this.onItemCheckboxToggled(item, event);\n }\n }\n }\n }\n\n public async onItemContextMenu(item: BrowserItem, event: MouseEvent): Promise {\n await this.currentItemsSource.selectItemAsync(item, event);\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (item instanceof EntityBrowserItem) {\n this.commandsService.showContextMenuAsync(event, { type: ContextTypes.EntityId, data: item.entityId, target: event.target as Element }).fireAndForget();\n }\n }\n\n public onItemDoubleClicked(item: BrowserItem, event: MouseEvent | KeyboardEvent): void {\n if (event) {\n event.preventDefault();\n }\n\n if (item instanceof EntityBrowserItem) {\n this.entityDoubleClicked.emit(new EntityBrowserSelection([item]));\n }\n }\n\n public onItemEnter(item: BrowserItem, event: MouseEvent | KeyboardEvent): void {\n if (event) {\n event.preventDefault();\n }\n\n if (this.selectedItems && this.selectedItems.length > 0) {\n this.entityDoubleClicked.emit(new EntityBrowserSelection(this.selectedItems));\n } else if (item instanceof EntityBrowserItem) {\n this.entityDoubleClicked.emit(new EntityBrowserSelection([item]));\n }\n }\n\n public onItemDragDrop(item: EntityBrowserItem, event: DragEvent): void {\n if (this.isDragAndDropEnabled && item && event?.dataTransfer) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const dragData = DragDropHelper.getDragData(DragDropTypes.EntityBrowserItems);\n if (dragData) {\n // TODO FM: process drop\n }\n }\n }\n\n public async onItemDragStart(item: EntityBrowserItem, event: DragEvent): Promise {\n if (this.isDragAndDropEnabled && item) {\n if (this.selectedItems.includes(item) || (await this.currentItemsSource.selectItemAsync(item, undefined, true))) {\n // only drag if we have a selection\n if (this.selectedItems.length > 0) {\n DragDropHelper.startDrag(DragDropTypes.EntityBrowserItems, this.selectedItems);\n DragDropHelper.updateDragData(\n DragDropTypes.EntityId,\n this.selectedItems.map((x) => x.entityId)\n );\n } else {\n if (event) {\n event.preventDefault();\n }\n }\n }\n }\n }\n\n public onItemDragEnter(item: EntityBrowserItem, event: DragEvent): void {\n if (this.isDragAndDropEnabled && item && event?.dataTransfer) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const dragData = DragDropHelper.getDragData(DragDropTypes.EntityBrowserItems);\n if (dragData) {\n let dropEffect = '';\n if (event.ctrlKey) {\n dropEffect = 'copy';\n } else {\n dropEffect = 'move';\n }\n\n // TODO FM: process is drop supported\n event.dataTransfer.dropEffect = 'none';\n\n // when supported, stop the bubbling\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n public onItemExpanderToggled(item: BrowserItem, event: MouseEvent | KeyboardEvent): void {\n if (event) {\n //Checks if the mouse click was directly on the correct expander icon\n if (event instanceof MouseEvent) {\n const target = event.target as HTMLElement | null;\n if (target && event.offsetX > target.offsetLeft && target.offsetTop !== 0) {\n return;\n }\n }\n\n event.preventDefault();\n\n this.currentItemsSource.setItemIsExpanded(item, !item.isExpanded);\n }\n }\n\n public onItemKeyDown(item: BrowserItem, event: KeyboardEvent): void {\n if (event && !event.altKey && !event.ctrlKey) {\n event.preventDefault();\n\n if (event.code === 'Enter') {\n this.onItemEnter(item, event);\n event.cancelBubble = true;\n } else if (event.code === 'Space') {\n this.onItemCheckboxToggled(item, event);\n event.cancelBubble = true;\n } else if (event.code === 'PageDown') {\n this.selectScrollItem(item, true, event);\n event.cancelBubble = true;\n } else if (event.code === 'PageUp') {\n this.selectScrollItem(item, false, event);\n event.cancelBubble = true;\n }\n }\n }\n\n public async updateOnlyShowCheckedItemsAsync(): Promise {\n if (this.onlyShowCheckedItems) {\n if (this.isFiltered) {\n await this.clearSearch();\n }\n const items: EntityBrowserItem[] = [];\n for (const entityId of this.currentItemsSource.checkedEntityIds) {\n const item = this.currentItemsSource.items.get(entityId)?.values()?.next().value as unknown;\n if (item instanceof EntityBrowserItem) {\n items.push(item);\n }\n }\n this.sortedCheckedItems = items.sort(this.compareItems.bind(this));\n }\n }\n\n public onSearchTextChanged(): void {\n this.searchDebouncer.trigger();\n }\n\n public async onShowMoreItemClicked(item: ShowMoreBrowserItem): Promise {\n await this.currentItemsSource.showMoreItems(item);\n }\n\n public onUncheckAllItemsClicked(): void {\n if (this.onlyShowCheckedItems) {\n this.onlyShowCheckedItems = false;\n }\n\n this.currentItemsSource.uncheckAll();\n }\n\n // Refreshes the browser with the provided filter if speficied\n public async refreshAsync(filter?: EntityBrowserFilter, keepCurrentSelection = false): Promise {\n this.focusOnSearch();\n\n if (filter) {\n this.filter = filter;\n }\n if (this.filter) {\n if (!keepCurrentSelection) {\n this.itemsSource.clearSelection();\n if (this.filter.checkedEntityIds) {\n this.itemsSource.addCheckedEntityIds(this.filter.checkedEntityIds);\n if (this.filter.excludedCheckedEntityIds) {\n this.itemsSource.addExcludedCheckedEntityIds(this.filter.excludedCheckedEntityIds);\n }\n }\n\n if (this.filter.selectedEntityIds) {\n this.entityIdsToSelect = new GuidSet();\n for (const selectedEntityId of this.filter.selectedEntityIds) {\n this.entityIdsToSelect.add(selectedEntityId);\n }\n }\n }\n await this.refreshInternalAsync(this.filter, true);\n this.changeDetectionRef.markForCheck();\n this.refreshed.emit();\n }\n }\n\n public async searchAsync(event?: Event): Promise {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.filter || (!this.searchText && !this.isFiltered)) {\n return;\n }\n\n try {\n this.searchDebouncer.suspend();\n\n if (this.searchText) {\n this.clearFilteredItems();\n this.onlyShowCheckedItems = false;\n this.isFiltered = true;\n const currentSearchId = SafeGuid.newGuid();\n this.currentItemsSource.lastSearchInstanceId = currentSearchId;\n this.filteredItemsSource.addCheckedEntityIds(this.itemsSource.checkedEntityIds);\n this.filteredItemsSource.addExcludedCheckedEntityIds(this.itemsSource.excludedCheckedEntityIds);\n await this.refreshInternalAsync(this.filter, false, false, currentSearchId);\n } else {\n const selectionParentItems = this.filteredItemsSource.getItemParentHierarchies(this.selectedItems);\n this.filter.textFilter = '';\n this.isFiltered = false;\n await this.applyFilteredSelectionAsync(selectionParentItems);\n this.clearFilteredItems();\n }\n } finally {\n this.searchDebouncer.resume();\n }\n }\n\n public hasSelectedSomething(): boolean {\n return this.areItemsCheckable ? this.checkedEntities.ids.length === 0 : this.selectedEntities.allIds.length === 0;\n }\n\n private async applyFilteredSelectionAsync(selectionParentItems?: Set): Promise {\n if (!this.filter) {\n return;\n }\n\n const missingEntityIds = new GuidSet();\n let foundSelectedItems: EntityBrowserItem[] = [];\n let areSelectedItemsComplete = true;\n const itemsToSelect = Array.from(this.filteredItemsSource.selectedItems);\n for (const selectedItem of itemsToSelect) {\n let selectedItemFound = false;\n const items = this.itemsSource.items.get(selectedItem.entityId);\n if (items) {\n for (const item of items) {\n if (item.id === selectedItem.id) {\n selectedItemFound = true;\n foundSelectedItems.push(item);\n break;\n }\n }\n }\n\n if (!selectedItemFound) {\n missingEntityIds.add(selectedItem.entityId);\n areSelectedItemsComplete = false;\n }\n }\n\n for (const checkedEntityId of this.filteredItemsSource.checkedEntityIds) {\n const checkedItems = this.itemsSource.items.get(checkedEntityId);\n if (!checkedItems) {\n missingEntityIds.add(checkedEntityId);\n }\n }\n\n for (const excludedCheckedEntityId of this.filteredItemsSource.excludedCheckedEntityIds) {\n const excludedCheckedItems = this.itemsSource.items.get(excludedCheckedEntityId);\n if (!excludedCheckedItems) {\n missingEntityIds.add(excludedCheckedEntityId);\n }\n }\n\n let isRefreshRequired = missingEntityIds.size > 0;\n if (!isRefreshRequired && selectionParentItems) {\n for (const selectionParentItem of selectionParentItems) {\n const items = this.itemsSource.items.get(selectionParentItem.entityId);\n if (items) {\n let existingParent = false;\n for (const item of items) {\n if (item.id === selectionParentItem.id) {\n existingParent = selectionParentItem.children !== null;\n break;\n }\n }\n\n if (!existingParent) {\n isRefreshRequired = true;\n break;\n }\n } else {\n isRefreshRequired = true;\n break;\n }\n }\n }\n\n if (isRefreshRequired) {\n const clonedFilter = this.entityBrowserService.cloneFilter(this.filter);\n for (const missingEntityId of missingEntityIds) {\n clonedFilter.includedEntities.add(missingEntityId);\n }\n\n await this.refreshInternalAsync(clonedFilter, true, foundSelectedItems.length > 0);\n } else {\n if (selectionParentItems) {\n for (const selectionParentItem of selectionParentItems) {\n const parentItems = this.itemsSource.items.get(selectionParentItem.entityId);\n if (parentItems) {\n for (const parentItem of parentItems) {\n if (parentItem.id === selectionParentItem.id) {\n this.itemsSource.setItemIsExpanded(parentItem, true);\n break;\n }\n }\n }\n }\n }\n }\n\n const excludedCheckedEntityIds = Array.from(this.itemsSource.excludedCheckedEntityIds);\n\n for (const checkedEntityId of this.itemsSource.checkedEntityIds) {\n this.itemsSource.updateEntityIsChecked(checkedEntityId, true, true);\n }\n\n for (const excludedCheckedEntityId of excludedCheckedEntityIds) {\n this.itemsSource.updateEntityIsChecked(excludedCheckedEntityId, false, true);\n }\n\n if (!areSelectedItemsComplete) {\n foundSelectedItems = [];\n for (const selectedItem of itemsToSelect) {\n const items = this.itemsSource.items.get(selectedItem.entityId);\n if (items) {\n for (const item of items) {\n if (item.id === selectedItem.id) {\n foundSelectedItems.push(item);\n break;\n }\n }\n }\n }\n }\n\n if (foundSelectedItems.length > 0) {\n await this.itemsSource.setSelectedItems(foundSelectedItems, true);\n }\n }\n\n private compareItems(item1: EntityBrowserItem, item2: EntityBrowserItem): number {\n return this.entityBrowserService.compareItems(item1, item2, this.isHierarchical);\n }\n\n private clearFilteredItems() {\n this.filteredItemsSource.clear(true);\n }\n\n private focusItem(item: BrowserItem) {\n const child = item.htmlElement;\n if (child) {\n child.focus();\n if (this.treeElement) {\n const left = this.getScrollLeft(child);\n const resetLeftScroll = left === this.treeElement.scrollLeft;\n let scrollOperation: (() => void) | undefined;\n if (child.getBoundingClientRect().bottom < this.treeElement.getBoundingClientRect().top) {\n scrollOperation = () => {\n child.scrollIntoView({ behavior: 'auto', block: 'end', inline: 'start' });\n if (resetLeftScroll && this.treeElement.scrollLeft !== left) {\n this.treeElement.scroll({ top: this.treeElement.scrollTop, left });\n }\n };\n } else if (child.getBoundingClientRect().top > this.treeElement.getBoundingClientRect().bottom) {\n scrollOperation = () => {\n child.scrollIntoView({ behavior: 'auto', block: 'start', inline: 'start' });\n if (resetLeftScroll && this.treeElement.scrollLeft !== left) {\n this.treeElement.scroll({ top: this.treeElement.scrollTop, left });\n }\n };\n } else if (!resetLeftScroll) {\n scrollOperation = () => {\n this.treeElement.scroll({ top: this.treeElement.scrollTop, left });\n };\n }\n\n if (scrollOperation) {\n this.scrollTree(scrollOperation);\n }\n }\n }\n }\n\n private focusOnSearch() {\n // until genAutoFocus works fine...\n const element = this.entitySearchInput?.nativeElement as HTMLElement | undefined | null;\n if (element) {\n element.focus();\n\n // the first try might not work, in that case, try again will a slightly longer delay\n if (document.activeElement !== element) {\n const timeout = setTimeout(() => {\n element.focus();\n this.timeouts.remove(timeout);\n }, 500);\n this.timeouts.push(timeout);\n }\n }\n }\n\n private getScrollLeft(element: Element): number {\n const treeLeft = this.treeElement.getBoundingClientRect().left;\n const treeRight = this.treeElement.getBoundingClientRect().right;\n const elementLeft = element.getBoundingClientRect().left - (this.isHierarchical ? 24 : 0);\n let left = this.treeElement.scrollLeft;\n if (elementLeft < treeLeft) {\n left = this.treeElement.scrollLeft - (treeLeft - elementLeft);\n } else if (elementLeft > treeRight) {\n left = this.treeElement.scrollLeft + (elementLeft - treeRight);\n }\n return left;\n }\n\n private getScrollTop(isScrollingDown: boolean): number {\n const maxBottom = this.treeElement.getBoundingClientRect().bottom;\n const minTop = this.treeElement.getBoundingClientRect().top;\n\n const height = maxBottom - minTop;\n const treeTop = this.treeElement.scrollTop;\n return isScrollingDown ? treeTop + height : treeTop - height;\n }\n\n private includeSelectionInFilter(filter: IEntityBrowserFilter) {\n for (const checkedEntityId of this.itemsSource.checkedEntityIds) {\n filter.includedEntities.add(checkedEntityId);\n }\n\n for (const excludedCheckedEntityId of this.itemsSource.excludedCheckedEntityIds) {\n filter.includedEntities.add(excludedCheckedEntityId);\n }\n\n let selectedEntityIds: Set | undefined;\n if (this.entityIdsToSelect) {\n selectedEntityIds = new GuidSet(this.entityIdsToSelect);\n } else {\n this.refreshSelectedItemIds = new Map();\n selectedEntityIds = new GuidSet();\n for (const selectedItem of this.selectedItems) {\n const entityId = selectedItem.entityId;\n this.refreshSelectedItemIds.set(selectedItem.id, entityId);\n selectedEntityIds.add(entityId);\n }\n }\n\n if (selectedEntityIds) {\n for (const selectedEntityId of selectedEntityIds) {\n filter.includedEntities.add(selectedEntityId);\n }\n }\n }\n\n private onCheckedItemsChanged(): void {\n if (this.isUpdatingCheckedItems) {\n return;\n }\n\n this.isUpdatingCheckedItems = true;\n try {\n if (this.currentItemsSource.checkedEntityIds.size < 1 && this.onlyShowCheckedItems) {\n this.onlyShowCheckedItems = false;\n }\n\n if (this.isFiltered) {\n for (const checkedEntityId of this.itemsSource.checkedEntityIds) {\n if (!this.filteredItemsSource.checkedEntityIds.has(checkedEntityId)) {\n if (this.itemsSource.items.has(checkedEntityId)) {\n this.itemsSource.updateEntityIsChecked(checkedEntityId, false, true);\n } else {\n this.itemsSource.addExcludedCheckedEntityIds([checkedEntityId]);\n }\n }\n }\n\n for (const filteredCheckedEntityId of this.filteredItemsSource.checkedEntityIds) {\n if (!this.itemsSource.checkedEntityIds.has(filteredCheckedEntityId)) {\n if (this.itemsSource.items.has(filteredCheckedEntityId)) {\n this.itemsSource.updateEntityIsChecked(filteredCheckedEntityId, true, true);\n } else {\n this.itemsSource.addCheckedEntityIds([filteredCheckedEntityId]);\n }\n }\n }\n\n for (const excludedCheckedEntityId of this.itemsSource.excludedCheckedEntityIds) {\n if (!this.filteredItemsSource.excludedCheckedEntityIds.has(excludedCheckedEntityId)) {\n if (this.itemsSource.items.has(excludedCheckedEntityId)) {\n this.itemsSource.updateEntityIsChecked(excludedCheckedEntityId, true, true);\n } else {\n this.itemsSource.addCheckedEntityIds([excludedCheckedEntityId]);\n }\n }\n }\n\n for (const filteredExcludedCheckedEntityId of this.filteredItemsSource.excludedCheckedEntityIds) {\n if (!this.itemsSource.excludedCheckedEntityIds.has(filteredExcludedCheckedEntityId)) {\n if (this.itemsSource.items.has(filteredExcludedCheckedEntityId)) {\n this.itemsSource.updateEntityIsChecked(filteredExcludedCheckedEntityId, false, true);\n } else {\n this.itemsSource.addExcludedCheckedEntityIds([filteredExcludedCheckedEntityId]);\n }\n }\n }\n\n if (this.isHierarchical) {\n this.filteredItemsSource.uncheckAll();\n for (const checkedEntityId of this.itemsSource.checkedEntityIds) {\n this.filteredItemsSource.updateEntityIsChecked(checkedEntityId, true, true);\n }\n for (const checkedEntityId of this.itemsSource.excludedCheckedEntityIds) {\n this.filteredItemsSource.updateEntityIsChecked(checkedEntityId, false, true);\n }\n }\n }\n\n this.checkedEntitiesChanged.emit(this.checkedEntities);\n } finally {\n this.isUpdatingCheckedItems = false;\n }\n }\n\n private onSelectedItemsChanged(): void {\n this.isSelectingScrollItem = false;\n this.selectedEntitiesChanged.emit(this.selectedEntities);\n }\n\n private async refreshInternalAsync(\n filter: IEntityBrowserFilter,\n isFullRefresh = false,\n ignoreCurrentSelection = false,\n searchInstanceId: IGuid = SafeGuid.EMPTY\n ): Promise {\n const clonedFilter = this.entityBrowserService.cloneFilter(filter);\n if (this.searchText) {\n clonedFilter.textFilter = this.searchText;\n }\n\n if (isFullRefresh) {\n if (!ignoreCurrentSelection) {\n this.includeSelectionInFilter(clonedFilter);\n }\n\n this.resetItems();\n }\n this.isRefreshing = true;\n\n const result = await this.currentItemsSource.refreshAsync(clonedFilter, isFullRefresh, searchInstanceId);\n // Is a new search more recent in progress?\n if (!result) {\n return null;\n }\n\n if (result.isValid) {\n this.isHierarchical = this.currentItemsSource.isHierarchical;\n if (this.currentItemsSource.rootItems.length === 0) {\n this.emptyText = this.translateService.instant('STE_LABEL_NORESULTS') as string;\n } else {\n const itemsToSelect: EntityBrowserItem[] = [];\n if (this.refreshSelectedItemIds) {\n for (const pair of this.refreshSelectedItemIds.entries()) {\n const items = this.currentItemsSource.items.get(pair[1]);\n if (items) {\n for (const item of items) {\n if (item.id.toLowerCase() === pair[0].toLowerCase()) {\n itemsToSelect.push(item);\n break;\n }\n }\n }\n }\n } else if (this.entityIdsToSelect) {\n for (const entityIdToSelect of this.entityIdsToSelect) {\n const items = this.currentItemsSource.items.get(entityIdToSelect);\n if (items) {\n itemsToSelect.push(items.values()?.next()?.value as EntityBrowserItem);\n }\n }\n }\n\n if (itemsToSelect.length > 0) {\n await this.currentItemsSource.setSelectedItems(itemsToSelect, true);\n }\n }\n } else {\n this.emptyText = this.translateService.instant('STE_LABEL_ERROR') as string;\n }\n\n this.refreshSelectedItemIds = null;\n this.entityIdsToSelect = null;\n\n if (!this.isFiltered) {\n this.clearFilteredItems();\n }\n\n this.isRefreshing = false;\n this.changeDetectionRef.markForCheck();\n return result;\n }\n\n private resetItems(clearSelection = false): void {\n this.currentItemsSource.clear(clearSelection);\n\n if (clearSelection) {\n this.refreshSelectedItemIds?.clear();\n this.entityIdsToSelect = null;\n this.refreshSelectedItemIds = null;\n }\n }\n\n private scrollTree(scrollOperation: () => void): void {\n // Scroll left and top\n this.treeElement.style.scrollBehavior = 'auto';\n scrollOperation();\n this.treeElement.style.scrollBehavior = '';\n }\n\n private selectScrollItem(item: BrowserItem, isDown: boolean, event: KeyboardEvent): void {\n if (this.treeElement) {\n const maxBottom = this.treeElement.getBoundingClientRect().bottom;\n const minTop = this.treeElement.getBoundingClientRect().top;\n\n if (this.isSelectingScrollItem) {\n this.scrollTree(() => {\n this.treeElement.scroll({ top: this.getScrollTop(isDown), left: this.treeElement.scrollLeft });\n });\n }\n\n const timeout = setTimeout(async () => {\n let selectedItem: BrowserItem | undefined;\n // Do this in a timeout to make sure the scroll operation is over before we select the next item\n if (isDown) {\n selectedItem = await this.currentItemsSource.selectScrollDownItemAsync(item, event, minTop, maxBottom);\n } else {\n selectedItem = await this.currentItemsSource.selectScrollTopItemAsync(item, event, minTop, maxBottom);\n }\n\n if (selectedItem) {\n const left = this.getScrollLeft(selectedItem.htmlElement);\n if (left !== this.treeElement.scrollLeft) {\n this.scrollTree(() => {\n this.treeElement.scroll({ top: this.treeElement.scrollTop, left });\n });\n }\n }\n\n this.isSelectingScrollItem = true;\n this.timeouts.remove(timeout);\n }, 50);\n this.timeouts.push(timeout);\n }\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const SharedEntityBrowserRefreshTypes = Constants({\n FlatView: SafeGuid.parse('2F8E96C0-378B-4447-ADE7-4B0E94D6EF48'),\n LogicalView: SafeGuid.parse('8EC99F70-039F-4C2F-8952-9F55A0D44072'),\n FlatViewNoFederatedEntities: SafeGuid.parse('FECCBFC1-F39B-4220-8B58-36ACB0401C13'),\n});\n","import { Component, ViewChild, AfterViewInit, OnInit } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { InternalPluginDescriptor } from '../../../interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '../../../interfaces/plugins/public/plugin-types';\nimport { EntityBrowserComponent } from '../entity-browser/entity-browser.component';\nimport { EntityBrowserService } from '../../../entity-browser/entity-browser.service';\nimport { TrackedComponent } from '../../tracked/tracked.component';\nimport { TrackingService } from '../../../services/tracking.service';\nimport { EntityBrowserFilter } from '../../../entity-browser/filters/entity-browser-filter';\nimport { SharedEntityBrowserRefreshTypes } from '../../../entity-browser/enumerations/shared-entity-browser-refresher-types';\n\n@Component({\n selector: 'app-entity-browser-task',\n templateUrl: './entity-browser-task.component.html',\n styleUrls: ['./entity-browser-task.component.scss'],\n})\n@InternalPluginDescriptor({\n type: EntityBrowserTaskComponent,\n pluginTypes: [PluginTypes.Task],\n exposure: {\n id: EntityBrowserTaskComponent.pluginId,\n icon: MeltedIcon.Biohazard,\n priority: 1000,\n title: 'Entity browser test page',\n // tags: ['test'],\n },\n isSupported: () => false,\n})\nexport class EntityBrowserTaskComponent extends TrackedComponent implements AfterViewInit, OnInit {\n public static pluginId = SafeGuid.parse('C9C9674B-13B5-4C4C-935F-FC4BFB4F3F34');\n\n @ViewChild('entityBrowser')\n public entityBrowser!: EntityBrowserComponent;\n\n public areItemsCheckable = false;\n\n constructor(trackingService: TrackingService, private entityBrowserService: EntityBrowserService) {\n super(trackingService);\n }\n\n public ngOnInit(): void {\n this.areItemsCheckable = true;\n }\n\n public ngAfterViewInit(): void {\n // const filter = new EntityBrowserFilter(await this.entityBrowserService.getDefaultHierarchicalTypesAsync());\n\n // if (this.filter instanceof HierarchicalEntityBrowserFilter) {\n // filter.expandedParents.add(SafeGuid.parse('fd1fcc08-5b8f-47cc-a232-8eabd37b0318'));\n // }\n\n const filter = new EntityBrowserFilter();\n filter.entityTypes.add(EntityTypes.Cameras);\n this.entityBrowser.areItemsCheckable = false;\n filter.pageInfo.pageSize = 100;\n filter.refresherType = SharedEntityBrowserRefreshTypes.FlatView;\n //filter.excludedEntities.add(Guids.Administrators);\n\n setTimeout(async () => {\n if (this.entityBrowser) {\n await this.entityBrowser.refreshAsync(filter);\n }\n });\n }\n}\n","
\n \n
\n","export const stringFormat = (str: string, ...args: string[]): string => {\n return str.replace(/{(\\d+)}/g, (_match, index: number) => args[index] || '');\n};\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\n/**\n * Put the keyboard focus on the popup when it opens\n * To focus a specific element (ex : input) when the popup opens, add the \"open-focus\" class to your HTML element\n */\n@Directive({\n selector: '[appFocusPopupWhenOpen]',\n})\nexport class FocusPopupWhenOpenDirective implements OnInit, OnDestroy {\n private popup!: HTMLGenPopupElement;\n private oldFocus?: HTMLElement;\n private mutationObserver?: MutationObserver;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n this.popup = this.el.nativeElement as HTMLGenPopupElement;\n this.popup.addEventListener('didOpen', didOpenCallback);\n\n this.mutationObserver = new MutationObserver(() => {\n if (this.popup.open) {\n // Tabindex -1 will be focusable via .focus() but will not be accessible by keyboard\n if (!this.popup.hasAttribute('tabindex')) {\n this.popup.setAttribute('tabindex', '-1');\n }\n\n this.oldFocus = document.activeElement as HTMLElement;\n\n if (!this.popup.querySelector('.open-focus')) {\n this.popup?.focus();\n }\n } else if (this.oldFocus) {\n // Restore focus on active element before popup closes\n this.oldFocus.focus();\n this.oldFocus = undefined;\n }\n });\n\n this.mutationObserver.observe(this.el.nativeElement as HTMLGenPopupElement, { attributes: true });\n }\n\n ngOnDestroy(): void {\n this.mutationObserver?.disconnect();\n this.popup.removeEventListener('didOpen', didOpenCallback);\n }\n}\n\nfunction didOpenCallback(this: HTMLElement): void {\n this.querySelector('.open-focus')?.focus();\n}\n","
\n \n \n \n
\n {{ genPlaceholder }}\n
\n \n
\n \n {{ displayText }}\n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n {{ 'STE_BUTTON_CLEAR' | translate }}\n \n \n \n
\n
\n
\n\n","import { OnInit, Component, EventEmitter, Input, Output, ViewChild, OnChanges, SimpleChanges, ElementRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ComboboxFlavor, Gelato, GenPopup, LabelComplement } from '@genetec/gelato-angular';\nimport { ButtonFlavor, Icon, PopupPosition } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AccessPointEntityFields } from 'RestClient/Client/Interface/IAccessPointEntity';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { AccessPointEntity } from 'RestClient/Client/Model/AccessControl/AccessPointEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityBrowserCheckSelection, EntityBrowserSelection } from '../../../entity-browser/entity-browser-selection';\nimport { EntityBrowserService } from '../../../entity-browser/entity-browser.service';\nimport { EntityBrowserFilter } from '../../../entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserItemModel } from '../../../entity-browser/Items/entity-browser-item-model';\nimport { IconsService } from '../../../services/icons.service';\nimport { coerceBooleanProperty } from '../../../utilities/coerceBooleanProperty';\nimport { stringFormat } from '../../../utilities/StringFormat';\nimport { EntityBrowserComponent } from '../entity-browser/entity-browser.component';\nimport { EntityBrowserItem } from '../items/entity-browser-item';\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-entity-combo',\n templateUrl: './entity-combo.component.html',\n styleUrls: ['./entity-combo.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: EntityComboComponent,\n multi: true,\n },\n ],\n})\nexport class EntityComboComponent extends Gelato implements OnInit, OnChanges {\n //#region Fields\n\n @ViewChild('combo')\n public comboElement!: ElementRef;\n\n @ViewChild('entityBrowser')\n public entityBrowser!: EntityBrowserComponent;\n\n @ViewChild(GenPopup)\n public popup!: GenPopup;\n\n @Input()\n public entityId?: IGuid;\n\n @Input()\n public entityIds: IGuid[] = [];\n\n @Input() public entityBrowserCanSelectItemFunction!: (model: EntityBrowserItemModel) => Promise;\n @Input() public entityBrowserFilter!: EntityBrowserFilter;\n @Input() public showClearButton!: boolean;\n\n /**\n * Disallows user interaction\n */\n @Input() public disabled!: boolean;\n /**\n * Style of element\n *\n * Ex: Flavor.Combobox.Flat\n */\n @Input() public genFlavor = ComboboxFlavor.Solid;\n /**\n * String to xdescribe the accociated component\n */\n @Input() public genLabel!: string;\n\n /**\n * Label complement\n *\n * Ex: _Complement.Optional_\n */\n @Input() public genLabelComplement!: LabelComplement;\n\n /**\n * Give more information about the unit of the value\n */\n @Input() public genSuffix!: string;\n\n /**\n * Text to show when nothing is selected.\n */\n @Input() public genPlaceholder!: string;\n\n /**\n * Supports selecting multiple entities in 1 combo\n */\n @Input()\n public get multiSelect(): boolean {\n return this.isMultiSelect;\n }\n public set multiSelect(value: boolean) {\n this.isMultiSelect = coerceBooleanProperty(value);\n }\n\n /**\n * event triggers every time a selected entity guid change occurs\n */\n @Output() public entityIdChange = new EventEmitter();\n\n /**\n * event triggers every time a group of selected entities change occurs\n */\n @Output() public entityIdsChange = new EventEmitter();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly PopupPosition = PopupPosition;\n\n public icon: Icon | string | null = null;\n public displayText = 'N/A';\n public entityCustomId?: IGuid;\n\n #entityIds: IGuid[] = [];\n private isMultiSelect = false;\n private wasBrowserRefreshed = false;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n private iconsService: IconsService,\n private translateService: TranslateService,\n private entityBrowserService: EntityBrowserService\n ) {\n super();\n this.displayText = this.translateService.instant('STE_TOOLTIP_SELECTENTITY') as string;\n }\n\n //#endregion\n\n //#region Methods\n public async ngOnInit(): Promise {\n // if the user didn't supply a filter, use the \"default\" one\n if (!this.entityBrowserFilter) {\n this.entityBrowserFilter = new EntityBrowserFilter(await this.entityBrowserService.getDefaultLogicalTypesAsync());\n this.setEntitiesInFilter();\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.entityId && changes.entityId.previousValue !== changes.entityId.currentValue) {\n const guid = toGuid(changes.entityId.currentValue);\n this.refreshEntities(guid);\n this.entityIds = guid.isEmpty() ? [] : [guid];\n } else if (changes.entityIds) {\n const entityIds = this.toGuids(changes.entityIds.currentValue as IGuid[]);\n this.emitChangeEventIfNecessary(...entityIds);\n this.refreshEntities(...entityIds);\n delete this.entityId;\n }\n }\n\n public async toggleComboOpen(): Promise {\n await this.popup.toggle();\n // reload the entity browser with the applied filter & optionally the selected entity(s)\n if (this.popup.open && !this.wasBrowserRefreshed) {\n await this.entityBrowser.refreshAsync();\n this.wasBrowserRefreshed = true;\n }\n }\n\n public async clearSelection(): Promise {\n this.entityIds = [];\n delete this.entityId;\n\n this.resetItem();\n this.entityBrowser.onUncheckAllItemsClicked();\n\n this.entityIdChange.emit(SafeGuid.EMPTY);\n this.entityIdsChange.emit([]);\n\n await this.popup.close();\n }\n\n //#region Events\n\n public onEntitySelected(selection: EntityBrowserSelection): void {\n if (this.multiSelect || !selection.singleItem) {\n return;\n }\n\n this.setSelectedEntity(selection.singleItem);\n this.popup.close().fireAndForget();\n }\n\n public onEntityChecksChanged(selection: EntityBrowserCheckSelection): void {\n if (!this.multiSelect) return;\n this.entityIds = selection.items.map((model) => model.id);\n\n // ngOnChanges not called when this.entityIds changes...\n this.emitChangeEventIfNecessary(...this.entityIds);\n this.refreshEntities(...this.entityIds);\n }\n\n //#endregion\n\n private setSelectedEntity(entity: EntityBrowserItem) {\n // Don't need to refresh since we already have info from entityBrowser, properties set manually\n const entityGuid = toGuid(entity.itemId);\n this.emitChangeEventIfNecessary(entityGuid);\n this.displayText = entity.model.name;\n this.entityCustomId = entity.model.customIconId;\n this.icon = entity.icon as string;\n this.#entityIds = [toGuid(entity.itemId)];\n this.setEntitiesInFilter();\n }\n\n /**\n * Updates the selected entity ids and loads corresponding info, updating the selected item's text and icon\n *\n * @param entityIds - The new entity ids to refresh the combobox with\n */\n private refreshEntities(...entityIds: IGuid[]) {\n if (!entityIds?.length) {\n // there are no selected entities, reset the selection combo value\n this.displayText = this.translateService.instant('STE_TOOLTIP_SELECTENTITY') as string;\n this.icon = Icon.None;\n delete this.entityCustomId;\n } else if (!this.multiSelect || entityIds.length === 1) {\n this.loadEntityInfos(entityIds[0]).fireAndForget();\n } else {\n // there are > 1 entity, display the \"N entities selected\" text\n this.displayText = stringFormat(this.translateService.instant('STE_LABEL_N_ENTITIESSELECTED') as string, entityIds.length.toString());\n this.icon = Icon.CheckAll;\n }\n this.#entityIds = entityIds ?? [];\n this.setEntitiesInFilter();\n }\n\n private async loadEntityInfos(entityId: IGuid) {\n const previousEntityId = this.#entityIds[0];\n if (previousEntityId?.equals(entityId)) {\n // the guid hasn't changed, don't do any kind of refresh\n if (entityId.isEmpty()) {\n this.resetItem();\n }\n return;\n }\n\n // a refresh is needed, wipe the old information and gather the entity info\n // this.entityObject = null;\n this.displayText = '';\n let entity;\n if (!entityId.isEmpty()) {\n const entityFieldsToDownload = [\n EntityFields.entityTypeField,\n EntityFields.idField,\n EntityFields.nameField,\n EntityFields.descriptionField,\n EntityFields.customIconIdField,\n AccessPointEntityFields.accessPointTypeField,\n ];\n entity = await this.securityCenterClientService.scClient.getEntityAsync(Entity, entityId, null, null, ...entityFieldsToDownload);\n }\n\n if (entity) {\n this.displayText = entity.name;\n this.entityCustomId = entity.customIconId;\n // We need to get the subtype of the entity to display the correct icon\n if (entity.entityType === EntityTypes.AccessPoints) {\n const accessPoint = entity as AccessPointEntity;\n this.icon = this.iconsService.getEntityTypeIcon(accessPoint?.entityType, accessPoint.accessPointType);\n } else {\n this.icon = this.iconsService.getEntityIcon(entity);\n }\n } else {\n this.resetItem();\n }\n }\n\n private setEntitiesInFilter() {\n if (!this.entityBrowserFilter) {\n return;\n }\n\n if (this.multiSelect) {\n this.entityBrowserFilter.checkedEntityIds = SafeGuid.createSet(this.entityIds);\n } else {\n this.entityBrowserFilter.selectedEntityIds = SafeGuid.createSet(this.entityIds);\n }\n }\n\n private resetItem() {\n delete this.entityCustomId;\n this.displayText = this.translateService.instant('STE_TOOLTIP_SELECTENTITY') as string;\n this.icon = Icon.None;\n }\n\n private emitChangeEventIfNecessary(...entities: EntityBrowserItem[] | IGuid[]) {\n const previousEntityIds = this.#entityIds;\n const entityIds = this.toGuids(entities);\n // identify changes\n if (entityIds.length !== previousEntityIds.length || !entityIds.every((guid) => previousEntityIds.some((pguid) => pguid.equals(guid)))) {\n this.setEntitiesInFilter();\n\n if (this.isMultiSelect) {\n this.entityIdsChange.emit(entityIds);\n } else if (entityIds.length > 0) {\n this.entityIdChange.emit(entityIds[0]);\n this.entityIdsChange.emit(entityIds);\n } else {\n this.entityIdChange.emit(SafeGuid.EMPTY);\n this.entityIdsChange.emit([]);\n }\n }\n }\n\n private toGuids(entities: EntityBrowserItem[] | IGuid[]) {\n if (entities.length) {\n if (isGuid(entities[0])) {\n return entities as IGuid[];\n } else {\n return (entities as EntityBrowserItem[]).map((entity) => entity.model.id);\n }\n }\n return [];\n }\n\n //#endregion\n}\n","import { Filter } from '../../interfaces/plugins/public/plugin-services-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport { Filter };\n\n/**\n * Dictionary where the key is the filterId of the filter\n */\nexport type FiltersMap = Map;\n\n/**\n * Represents the current Filter user state\n */\nexport interface FilterState {\n /**\n * Indicates the status of the filter\n */\n status: 'Ok' | 'Error' | 'Warning';\n /**\n * Label displayed as quick information on the filter selection status\n */\n selection: string;\n /**\n * Additional tooltip message to be displayed in the case of a warning or an error\n */\n message: string;\n}\n\n/**\n * Represents the possible context where a filter can be found in\n */\nexport enum FilterContext {\n None,\n Reports,\n IncidentList,\n Correlation,\n CardholderList,\n}\n","export const MAX_INT32 = 2147483647;\n","import { EmitterAction, ɵc as InjectorAccessor } from '@ngxs-labs/emitter/';\nimport { StateContext } from '@ngxs/store';\n\ntype ClassPropertyDescriptor = (target: unknown, key: string | symbol, descriptor?: PropertyDescriptor) => void;\n\nexport const MethodEmitter = (receiver: (context: StateContext, action: EmitterAction) => void): ClassPropertyDescriptor => {\n return (target: unknown, key: string | symbol, descriptor?: PropertyDescriptor) => {\n const emitFunction = (...args: unknown[]) => {\n const store = InjectorAccessor.getEmitStore();\n return store.emitter(receiver).emit(args[0]);\n };\n if (descriptor) {\n descriptor.value = emitFunction;\n } else {\n Object.defineProperty(target, key, {\n value: emitFunction,\n });\n }\n\n return descriptor;\n };\n};\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n/*************************************************************************************\nSource code taken from https://github.com/ngxs-labs/immer-adapter\n*************************************************************************************/\nimport { StateContext, StateOperator } from '@ngxs/store';\nimport { createDraft, finishDraft } from 'immer';\nimport { Objectish } from 'immer/dist/internal';\nimport { Observable } from 'rxjs';\n\nexport class ImmutableStateContext implements StateContext {\n private frozenState: T | null = null;\n\n constructor(private ctx: StateContext) {\n ImmutableStateContext.autobindStateContext(this);\n }\n\n private static autobindStateContext(context: any): void {\n for (const prop of Object.getOwnPropertyNames(Object.getPrototypeOf(context))) {\n if (prop === 'constructor' || typeof context[prop] !== 'function') {\n continue;\n }\n\n context[prop] = context[prop].bind(context);\n }\n }\n\n public getState(): T {\n this.frozenState = createDraft(this.ctx.getState()) as T;\n return this.frozenState;\n }\n\n public setState(val: T | StateOperator): T {\n let state: T;\n\n if (typeof val === 'function') {\n let newState: T;\n const oldState: T = createDraft(this.ctx.getState()) as T;\n const operator: StateOperator = val as StateOperator;\n const mutatedOldState: T = operator(oldState);\n\n if (this.frozenState === mutatedOldState) {\n newState = finishDraft(mutatedOldState) as T;\n finishDraft(oldState);\n } else {\n const mutateOutsideOperator: boolean = oldState !== mutatedOldState;\n if (mutateOutsideOperator) {\n newState = mutatedOldState;\n finishDraft(oldState);\n } else {\n newState = finishDraft(mutatedOldState) as T;\n }\n }\n\n state = newState;\n } else {\n state = finishDraft(val) as T;\n }\n\n this.frozenState = null;\n return this.ctx.setState(state);\n }\n\n public patchState(val: Partial): T {\n return this.ctx.patchState(finishDraft(val) as Partial);\n }\n\n public dispatch(actions: any | any[]): Observable {\n return this.ctx.dispatch(actions);\n }\n}\n","import { Receiver as ngxsReceiver } from '@ngxs-labs/emitter';\nimport { ReceiverMetaData } from '@ngxs-labs/emitter/lib/core/internal/internals';\nimport { ImmutableContext } from '../immder-adapter';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function Receiver(options?: Partial): MethodDecorator {\n return (target: object, key: string | symbol, descriptor: TypedPropertyDescriptor) => {\n const immutable = ImmutableContext()(target, key, descriptor) as TypedPropertyDescriptor;\n return ngxsReceiver(options)(target, key, immutable);\n };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\n\n/*************************************************************************************\nSource code taken from https://github.com/ngxs-labs/immer-adapter\n*************************************************************************************/\nimport { StateContext } from '@ngxs/store';\nimport { ImmutableStateContext } from '../common/immutable-state-context';\n\nexport function ImmutableContext(): Function {\n return function (_target: Object, _key: string, descriptor: PropertyDescriptor): PropertyDescriptor {\n const method = descriptor.value;\n\n descriptor.value = function (ctx: StateContext, action: any, ...args: any[]) {\n return method.apply(this, [new ImmutableStateContext(ctx), action, ...args]);\n };\n\n return descriptor;\n };\n}\n","/* eslint-disable prefer-arrow/prefer-arrow-functions, @typescript-eslint/ban-types */\nimport { Selector as ngxsSelector } from '@ngxs/store';\nimport { SelectorSpec } from '@ngxs/store/src/decorators/selector/symbols';\nimport { ImmutableSelector } from '../immder-adapter';\n\nexport function Selector(selectors?: T[]): Function {\n return (target: any, key: string | symbol, descriptor: TypedPropertyDescriptor>): TypedPropertyDescriptor> | void => {\n const immutable = ImmutableSelector()(target, key, descriptor) as TypedPropertyDescriptor>;\n return ngxsSelector(selectors)(target, key, immutable);\n };\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\n\n/*************************************************************************************\nSource code taken from https://github.com/ngxs-labs/immer-adapter\n*************************************************************************************/\nimport { createDraft } from 'immer';\n\nexport function ImmutableSelector(): Function {\n return function (_target: Object, _key: string, descriptor: PropertyDescriptor): PropertyDescriptor {\n const method = descriptor.value;\n\n descriptor.value = function (state: any, ...args: any[]) {\n return method.apply(this, [createDraft(state), ...args]);\n };\n\n return descriptor;\n };\n}\n","import { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class SecurityCenterStateService {\n protected scClient: ISecurityCenterClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n this.scClient = securityCenterProvider.scClient;\n\n // always check availability since we use reflection to load this component\n this.scClient = securityCenterProvider?.scClient;\n this.scClient?.onLogonStateChanged((arg) => this.onLogonStateChanged(arg.state));\n }\n\n protected clearState(): void {\n // override to clear the state on logged off\n }\n\n protected loadState(): void {\n // override if you want to load a SecurityCenter state here\n }\n\n private onLogonStateChanged(state: LogonState) {\n if (state === LogonState.LoggedOff) {\n // clear the states of the tiles in case we switch systems\n this.clearState();\n } else if (state === LogonState.LoggedOn || state === LogonState.ReloggedOn) {\n this.loadState();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { State, StateContext } from '@ngxs/store';\nimport { Filter, FiltersMap } from '@shared/services/filters/filter';\nimport { Receiver, Selector } from '@src/app/store';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface FiltersStateModel {\n filters: FiltersMap;\n}\n\n@State({\n name: 'filtersState',\n defaults: { filters: new Map() },\n})\n@Injectable()\nexport class FiltersState {\n @Selector()\n public static filters(state: FiltersStateModel): FiltersMap {\n return state.filters;\n }\n\n @Receiver({ type: '[ReportFilters] set filters' })\n public static set({ setState }: StateContext, { payload: payload }: EmitterAction): void {\n setState((state: FiltersStateModel) => {\n if (state.filters) {\n state.filters.set(payload.filterId, payload);\n }\n return state;\n });\n }\n\n @Receiver({ type: '[ReportFilters] reset filters' })\n public static reset({ setState }: StateContext): void {\n setState((state: FiltersStateModel) => {\n state.filters = new Map();\n return state;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { Injectable } from '@angular/core';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Observable } from 'rxjs';\nimport { MethodEmitter } from '../../../store';\nimport { FiltersService } from '../interfaces/plugins/public/plugin-services-public.interface';\nimport { Filter, FiltersMap } from '../services/filters/filter';\nimport { SecurityCenterStateService } from '../services/state/security-center-state.service';\nimport { FiltersState } from './filters.state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({\n providedIn: 'root',\n})\nexport class FiltersContext extends SecurityCenterStateService implements FiltersService {\n @Select(FiltersState.filters)\n public filters$!: Observable;\n\n @SelectSnapshot(FiltersState.filters)\n public filters!: FiltersMap;\n\n constructor(securityCenterClientService: SecurityCenterClientService) {\n super(securityCenterClientService);\n }\n\n @MethodEmitter(FiltersState.set)\n public set(filter: Filter): void {}\n\n @MethodEmitter(FiltersState.reset)\n public reset(): void {}\n\n protected clearState(): void {\n super.clearState();\n\n this.reset();\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { FilterBaseComponent } from '@modules/shared/components/filters/common-filters/filter-base.component';\nimport { FiltersContext } from '@modules/shared/store/filters.context';\nimport { Debouncer } from 'RestClient/Helpers/Debouncer';\nimport { AdvancedSettingsService } from '../advanced-settings/advanced-settings.service';\nimport { FilterContext } from './filter';\n\ntype Filter = FilterBaseComponent;\n\nexport const FILTER_CONTEXT = new InjectionToken('Filter Context');\n\n/**\n * Service used to coordinate dynamically the interaction between a group of filters and their updates\n */\n@Injectable()\nexport class FilterCoordinatorService {\n //#region Public fields\n public allDefaulted = true;\n public allValid = true;\n //#endregion\n\n //#region Private fields\n private activeFilters: Filter[] = [];\n private debouncer?: Debouncer;\n private readonly defaultDebouncerTimeout = 2500;\n private readonly debouncerTimeout: number;\n private filtersToUpdate = new Set();\n //#endregion\n\n constructor(\n private advancedSettingService: AdvancedSettingsService,\n private reportFilterService: FiltersContext,\n @Optional() @Inject(FILTER_CONTEXT) public context = FilterContext.None\n ) {\n this.debouncerTimeout = this.advancedSettingService.get('FilterQueryDelay', this.defaultDebouncerTimeout); //Get timeout from the settings\n this.setDebouncerActivity(context === FilterContext.IncidentList); //Activate debouncer in IncidentList\n this.setDebouncerActivity(context === FilterContext.CardholderList); //Activate debouncer in CardholderList\n }\n\n //#region Public methods\n\n /**\n * Adds a filter into the group so it's now tracked by the service\n *\n * @param filter Filter component instance to register in\n */\n public register(filter: Filter): void {\n this.activeFilters.push(filter);\n filter.isPrimary = this.isPrimary(filter);\n }\n\n /**\n * Removes a filter from the group so it's not tracked anymore\n *\n * @param filter Filter component instance to unregister\n */\n public unregister(filter: Filter): void {\n this.activeFilters.remove(filter);\n }\n\n /**\n * Push an update for a potentially delayed update\n *\n * @param filter Filter to update\n */\n public pushUpdate(filter: Filter): void {\n if (this.debouncer) {\n //If the debouncer is active, push the update for later\n this.filtersToUpdate.add(filter);\n this.debouncer.trigger();\n } else {\n //If not, execute it right away\n filter.updateFilter();\n }\n this.performChecks();\n }\n\n /**\n * Toggles the debouncer and delayed updates\n *\n * @param active Enables or disables delayed updates\n * @param overrideTimeout Override the timeout found in Advanced Settings\n * @param extraCallback Calls an additional function upon delayed update completion\n */\n public setDebouncerActivity(active: boolean, overrideTimeout?: number, extraCallback?: () => void): void {\n if (active) {\n this.debouncer = new Debouncer(\n false,\n () => {\n this.onDebouncerTriggered();\n if (extraCallback) extraCallback();\n },\n overrideTimeout && overrideTimeout >= 0 ? overrideTimeout : this.debouncerTimeout,\n -1\n );\n } else {\n this.debouncer = undefined;\n }\n }\n\n /**\n * Applies all updates immediately\n */\n public applyAllUpdatesNow(): void {\n this.onDebouncerTriggered();\n }\n\n /**\n * Cancels all updates\n */\n public cancelAllUpdates(): void {\n this.filtersToUpdate.clear();\n }\n\n /**\n * Clears out all filters to their default values immediately\n */\n public resetAllFiltersToDefault(): void {\n this.activeFilters.forEach((f) => {\n f.clearFilter();\n });\n this.reportFilterService.reset();\n }\n\n //#endregion\n\n //#region Private methods\n\n private onDebouncerTriggered(): void {\n this.filtersToUpdate.forEach((filter) => filter.updateFilter());\n this.filtersToUpdate.clear();\n this.performChecks();\n }\n\n //Used to precompute widely used filters aggregate properties\n private performChecks(): void {\n this.allDefaulted = this.activeFilters.every((f) => f.isDefaulted());\n this.allValid = this.activeFilters.every((f) => f.state.status !== 'Error');\n }\n\n //Returns whether the provided filter is the first of its type\n private isPrimary(filter: T): boolean {\n const first = this.activeFilters.filter((f) => f.constructor === filter.constructor)[0];\n return first === filter;\n }\n\n //#endregion\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { PopupPosition } from '@genetec/gelato';\nimport { FilterClient } from '@modules/shared/api/api';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { FiltersService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { FilterState } from '@modules/shared/services/filters/filter';\nimport { FilterCoordinatorService } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { checkRequiredInputs } from '@src/app/utilities/common-helper';\nimport { Subscription } from 'rxjs';\nimport { FilterHostDescriptor } from '../filter-host/filter-host.component';\n\n/**\n * Base component for all child filter types\n *\n * @param T Type of the underlying data model for the filter\n */\n@Component({ template: '' })\nexport abstract class FilterBaseComponent extends TrackedComponent implements OnInit, OnDestroy {\n //#region Decorated fields\n @Input() public descriptor!: FilterHostDescriptor;\n @Input() public popupPosition = PopupPosition.BottomLeft;\n @Output() protected valueChange = new EventEmitter();\n\n //#endregion\n\n //#region Public fields\n\n public state: Readonly = { status: 'Ok', selection: this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string, message: '' };\n\n public get value(): T {\n return this.filterValue;\n }\n public set value(value: T) {\n this.filterValue = value;\n this.updateState();\n this.onValueChanged();\n }\n\n public dataContext!: FiltersService;\n public isPrimary = false;\n\n //#endregion\n\n //#region Protected and Private fields\n\n protected subscriptions: Subscription[] = [];\n\n private filterValue!: T;\n private storedValue: T | null = null;\n\n //#endregion\n\n constructor(\n trackingService: TrackingService,\n protected filterClient: FilterClient,\n protected filterCoordinatorService: FilterCoordinatorService,\n protected translateService: TranslateService\n ) {\n super(trackingService);\n }\n\n //#region Pulic Methods\n\n ngOnInit() {\n checkRequiredInputs({ filterId: this.descriptor.filterId, label: this.descriptor.label });\n this.filterCoordinatorService.register(this);\n }\n\n ngOnDestroy() {\n this.filterCoordinatorService.unregister(this);\n this.clearFilter();\n this.updateFilter();\n }\n\n public onFilterToggled(isFilterOpened: boolean): void {}\n\n /**\n * @example Can be used to update ngrx store or any services that catches the filter value before sending it to backend\n */\n public updateFilter(): void {\n if (this.storedValue && !this.isDirty(this.value, this.storedValue)) {\n return;\n }\n if (this.isDefaulted()) {\n this.valueChange.emit(null);\n } else {\n this.valueChange.emit(this.value);\n }\n }\n\n /**\n * A method that can be overriden by a subclass. By default, it will return true (we consider that any change to the filters is dirty)\n *\n * @returns a boolean representing the dirtiness of a filter (compared to its value in the ngxs store)\n */\n public isDirty(firstValue: T, secondValue: T): boolean {\n return true;\n }\n\n //#endregion\n\n //#region Private methods\n\n /**\n * Triggered automatically when the value of the filter changes and sends it to a service that handles delayed updates\n */\n private onValueChanged() {\n this.filterCoordinatorService.pushUpdate(this);\n }\n\n //#endregion\n\n //#region Abstracts methods\n public abstract clearFilter(): void;\n public abstract isDefaulted(): boolean;\n public abstract updateState(): void;\n public abstract getDefaultValue(): T;\n //#endregion\n}\n","/**\n * Different modes of a Date filter\n */\nexport enum DateFilterMode {\n Any = 'Any',\n DuringLastPeriod = 'DuringLastPeriod',\n ForNextPeriod = 'ForNextPeriod',\n Range = 'Range',\n}\n","import { unitOfTime } from 'moment';\nimport { Constants } from '@modules/shared/utilities/constants';\n\n/**\n * Different periods for a Date filter\n */\nexport const DateFilterPeriod = Constants({\n Seconds: 's' as unitOfTime.DurationConstructor,\n Minutes: 'm' as unitOfTime.DurationConstructor,\n Hours: 'h' as unitOfTime.DurationConstructor,\n Days: 'd' as unitOfTime.DurationConstructor,\n Weeks: 'w' as unitOfTime.DurationConstructor,\n Months: 'M' as unitOfTime.DurationConstructor,\n Years: 'y' as unitOfTime.DurationConstructor,\n});\n","
\n \n \n {{ label }}\n \n \n \n \n {{ state.status !== 'Error' ? state.selection : ('STE_LABEL_INVALIDFILTER' | translate) }}\n \n \n
\n\n \n \n \n\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ItemSlot, PopupPosition, IconSize } from '@genetec/gelato';\nimport { GenPopup } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { FilterState } from '@modules/shared/services/filters/filter';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid } from 'safeguid';\n\nexport interface FilterHostDescriptor {\n filterId: string;\n label: string;\n type?: IGuid;\n icon?: string;\n lazyLoad?: boolean;\n}\n\n/**\n * Component used as a host for filter display and state management\n */\n@Component({\n selector: 'app-filter-host',\n templateUrl: './filter-host.component.html',\n styleUrls: ['./filter-host.component.scss'],\n})\nexport class FilterHostComponent extends TrackedComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(GenPopup, { static: true }) popup!: GenPopup;\n @ViewChild(GenPopup, { read: ElementRef }) public popupHTMLRef!: ElementRef;\n\n @Input() public filterDescriptor!: FilterHostDescriptor;\n\n @Input() public state: FilterState = { status: 'Ok', selection: '', message: '' };\n\n @Input() public staysOpen = false;\n @Input() public popupPosition = PopupPosition.BottomLeft;\n @Output() public filterToggled: EventEmitter = new EventEmitter();\n\n public get filterType(): string {\n return (this.filterDescriptor && 'type' in this.filterDescriptor && this.filterDescriptor.type?.toString()) || '';\n }\n\n public readonly IconSize = IconSize;\n public readonly ItemSlot = ItemSlot;\n public readonly PopupPosition = PopupPosition;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n this.popupHTMLRef.nativeElement.addEventListener('didClose', this.onPopupClose);\n this.popupHTMLRef.nativeElement.addEventListener('didOpen', this.onPopupOpen);\n }\n\n ngOnDestroy(): void {\n this.popupHTMLRef.nativeElement.removeEventListener('didClose', this.onPopupClose);\n this.popupHTMLRef.nativeElement.removeEventListener('didOpen', this.onPopupOpen);\n }\n\n public async toggleFilter(): Promise {\n await this.popup.toggle();\n }\n\n private onPopupClose = () => {\n this.filterToggled.emit(false);\n };\n\n private onPopupOpen = () => {\n this.filterToggled.emit(true);\n };\n}\n","\n
    \n
  • \n \n {{ 'STE_LABEL_ANYTIME' | translate }}\n \n
  • \n
  • \n \n {{ 'STE_LABEL_DURINGTHELAST_X_YEARS_MONTHS_WEEKS_HOURS_MINUTES' | translate }}\n \n
    \n \n \n {{ durationWarning }}\n \n \n \n
    \n
  • \n
  • \n \n {{ 'STE_LABEL_FORTHENEXT_X_YEARS_MONTHS_WEEKS_HOURS_MINUTES' | translate }}\n \n
    \n \n \n {{ durationWarning }}\n \n \n \n
    \n
  • \n
  • \n \n {{ 'STE_LABEL_SPECIFICDATE' | translate }}\n \n
    \n \n \n \n \n\n \n {{ 'STE_MESSAGE_WARNING_INVALIDTIMERANGE' | translate }}\n \n
    \n
  • \n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CalendarFlavor, CalendarTimeFrame, GenMeltedItem } from '@genetec/gelato-angular';\nimport { FilterContext } from '@modules/shared/services/filters/filter';\nimport { stringFormat } from '@shared/utilities/StringFormat';\nimport moment from 'moment';\nimport { MAX_INT32 } from 'src/app/modules/shared/constants/numbers';\nimport { FilterBaseComponent } from '../filter-base.component';\nimport { DateFilterMode } from './enums/date-filter-mode.enum';\nimport { DateFilterPeriod } from './enums/date-filter-period.enum';\nimport { FilterDateModel } from './filter-date.model';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Filter restraining by date\n *\n * @example 3 modes are available : Any date, last period range, calendar time frame\n */\n@Component({\n selector: 'app-filter-date',\n templateUrl: './filter-date.component.html',\n styleUrls: ['./filter-date.component.scss'],\n})\nexport class FilterDateComponent extends FilterBaseComponent implements OnInit {\n //#region Statics\n private static readonly defaultDuration = 1;\n private static readonly defaultTimePeriod = DateFilterPeriod.Days;\n //#endregion\n\n //#region Decorated\n @Input() public calendarTimeFrame = CalendarTimeFrame.All;\n @Input() public calendarFlavor = CalendarFlavor.Date;\n\n //#endregion\n\n //#region Public fields\n public showDuringTheLastPeriod = false;\n public showForTheNextPeriod = false;\n\n public periodItems: Array = [];\n public dateFilterMode = DateFilterMode;\n public mode = DateFilterMode.Any;\n public duration = FilterDateComponent.defaultDuration;\n public period?: GenMeltedItem;\n public timeStart?: string;\n public timeEnd?: string;\n public invalidDateRange = false;\n public durationWarning = '';\n //#endregion\n\n //#region Public methods\n ngOnInit() {\n super.ngOnInit();\n this.initializePeriodItems();\n this.showDuringTheLastPeriod = this.calendarTimeFrame !== CalendarTimeFrame.Future;\n this.showForTheNextPeriod = this.calendarTimeFrame !== CalendarTimeFrame.Past;\n this.clearFilter();\n }\n\n public onFilterChange(newMode: DateFilterMode): void {\n this.mode = newMode;\n\n this.timeStart = undefined;\n this.timeEnd = undefined;\n\n switch (this.mode) {\n case DateFilterMode.Range:\n this.timeStart = moment.utc(moment().subtract(1, 'day').startOf('day')).toISOString();\n this.timeEnd = moment.utc(moment().endOf('day')).toISOString();\n break;\n }\n\n this.updateValue();\n }\n\n public onDurationChange(newDuration: number): void {\n this.duration = Math.min(newDuration, MAX_INT32);\n // Int32 is used in the web server so if we have a bigger period, it may result in an overflow\n this.durationWarning = this.duration === MAX_INT32 ? `${this.translateService.instant('STE_MESSAGE_WARNING_DURATION_USING_MAX_VALUE') as string}` : '';\n this.updateValue();\n }\n\n public onPeriodChange(newPeriod: GenMeltedItem): void {\n this.period = newPeriod;\n this.updateValue();\n }\n\n public onTimeStartChange(newDate: string): void {\n if (!moment(newDate).isValid()) return; // Gelato isValidDate is not working so we need to validate directly with moment\n this.timeStart = newDate;\n this.updateValue();\n }\n\n public onTimeEndChange(newDate: string): void {\n if (!moment(newDate).isValid()) return; // Same as previous comment\n this.timeEnd = newDate;\n this.updateValue();\n }\n\n public onSpecificDateTimeClicked(event: MouseEvent, isStart: boolean): void {\n const target = event.target as HTMLElement;\n const rowCount = target?.getAttribute('ng-reflect-gen-row-count');\n\n // Temporary until Gelato's bug is fixed (https://dev.azure.com/genetecux/UXDev/_workitems/edit/829)\n // Without this workaround, the calendar closes when the user clicks a year or a month.\n\n // 67 is the years view, and 4 is the months view\n if (rowCount === '67' || rowCount === '4') {\n event.stopPropagation();\n }\n }\n\n public updateState(): void {\n let selection = this.state.selection;\n\n switch (this.mode) {\n case DateFilterMode.Any:\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n break;\n case DateFilterMode.DuringLastPeriod:\n selection = stringFormat((this.translateService.instant('STE_LABEL_DURING_THE_LAST_X_Y') as string) ?? '', this.duration.toString(), this.period?.text || '');\n break;\n case DateFilterMode.ForNextPeriod:\n selection = stringFormat((this.translateService.instant('STE_LABEL_DURING_THE_NEXT_X_Y') as string) ?? '', this.duration.toString(), this.period?.text || '');\n break;\n case DateFilterMode.Range:\n selection = this.translateService.instant('STE_LABEL_SPECIFICDATE') as string;\n break;\n }\n\n // Error if invalid date; Warning if the filter covers all timeline\n const status = this.invalidDateRange ? 'Error' : this.isCoveringAllTimelineInReportsContext() ? 'Warning' : 'Ok';\n const message = status === 'Warning' ? (this.translateService.instant('STE_LABEL_WARNING_DATE_FILTER_SEARCH_TOO_LONG') as string) : '';\n\n this.state = { status, selection, message };\n }\n\n public clearFilter(): void {\n this.mode = DateFilterMode.Any;\n this.period = this.periodItems.find((x) => x.id === FilterDateComponent.defaultTimePeriod);\n this.timeStart = this.timeEnd = undefined;\n this.duration = FilterDateComponent.defaultDuration;\n this.updateValue();\n }\n\n public isDefaulted(): boolean {\n return this.mode === DateFilterMode.Any;\n }\n\n public override isDirty(firstValue: FilterDateModel, secondValue: FilterDateModel): boolean {\n if (firstValue.isAbsolute !== secondValue.isAbsolute) {\n return true;\n }\n\n if (firstValue.isAbsolute) {\n if (firstValue.timeEnd === secondValue.timeEnd && firstValue.timeStart === secondValue.timeStart) {\n return false;\n }\n } else {\n if (firstValue.quanta === secondValue.quanta && firstValue.timeUnit === secondValue.timeUnit) {\n return false;\n }\n }\n\n return true;\n }\n\n public override getDefaultValue(): FilterDateModel {\n return {\n // the default value of FilterDate is DateFilterMode.Any\n // DateFilterMode.Any corresponds to isAbsolute (true), timeStart (undefined) and timeEnd (undefined)\n isAbsolute: true,\n timeStart: undefined,\n timeEnd: undefined,\n quanta: -1, // can be anything\n };\n }\n\n //#endregion\n\n //#region Private methods\n\n private updateValue() {\n this.validateDateRange();\n\n const isAbsolute = this.mode === DateFilterMode.Range || this.mode === DateFilterMode.Any;\n\n this.value = {\n timeStart: this.timeStart,\n timeEnd: this.timeEnd,\n quanta: this.mode === DateFilterMode.DuringLastPeriod ? -this.duration : this.duration,\n isAbsolute,\n timeUnit: this.period?.id,\n };\n }\n\n private isCoveringAllTimelineInReportsContext() {\n return this.isPrimary && this.isDefaulted() && this.filterCoordinatorService.context === FilterContext.Reports;\n }\n\n private validateDateRange() {\n //Validate the date range according to current mode\n if (this.timeStart && this.timeEnd) {\n //In calendar mode, check if dates are ordered correctly\n this.invalidDateRange = Date.parse(this.timeStart) > Date.parse(this.timeEnd);\n } else if (this.mode === DateFilterMode.DuringLastPeriod || this.mode === DateFilterMode.ForNextPeriod) {\n //In Last/Next Period mode, check if the duration frame is strictly positive and an integer\n this.invalidDateRange = this.duration < 1 || this.duration % 1 !== 0;\n } else if (this.mode === DateFilterMode.Any) {\n this.invalidDateRange = false;\n }\n }\n\n private initializePeriodItems() {\n this.periodItems = [\n {\n id: DateFilterPeriod.Seconds,\n text: this.translateService.instant('STE_UNIT_SECONDS_LC') as string,\n },\n {\n id: DateFilterPeriod.Minutes,\n text: this.translateService.instant('STE_UNIT_MINUTES_LC') as string,\n },\n {\n id: DateFilterPeriod.Hours,\n text: this.translateService.instant('STE_UNIT_HOURS_LC') as string,\n },\n {\n id: DateFilterPeriod.Days,\n text: this.translateService.instant('STE_UNIT_DAYS_LC') as string,\n },\n {\n id: DateFilterPeriod.Weeks,\n text: this.translateService.instant('STE_UNIT_WEEKS_LC') as string,\n },\n {\n id: DateFilterPeriod.Months,\n text: this.translateService.instant('STE_UNIT_MONTHS_LC') as string,\n },\n {\n id: DateFilterPeriod.Years,\n text: this.translateService.instant('STE_UNIT_YEARS_LC') as string,\n },\n ];\n\n this.period = this.periodItems.find((x) => x.id === FilterDateComponent.defaultTimePeriod);\n }\n\n //#endregion\n}\n","import { delayAsPromise } from '../../../utilities/common-helper';\n\n/**\n * Focus an html element using a given selector\n *\n * @param selector CSS selector\n * @param source Source object from where we should query with the selector, default is document\n * @param forceFocus If yes, a tabindex=\"-1\" will be added to the element if there is no tabindex and the element is not natively focusable (ex:div)\n */\nexport const focusDomElement = (selector: string, source?: Element, forceFocus?: boolean): void => {\n // Delegate the next lines at the end of the stack to let the to be focus element appear\n if (!selector) {\n return;\n }\n setTimeout(() => {\n const from = (source ?? document) as HTMLElement;\n const el = from?.querySelector(selector) as HTMLElement;\n if (!el) throw Error(`No result with selector (${selector}) and from (${source ? `${from.tagName}.${from.className}` : 'document'})`);\n el.focus();\n if (document.activeElement !== el && forceFocus) {\n // Here, focus didn't work but forceFocus is true\n if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex', '-1');\n el.focus();\n }\n }, 10);\n};\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { EntityBrowserComponent } from '@modules/shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { EntityBrowserCheckSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { FilterContext } from '@modules/shared/services/filters/filter';\nimport { focusDomElement } from '@modules/shared/utilities/dom-helper';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FilterBaseComponent } from '../filter-base.component';\nimport { EntityFilterModel } from './filter-entity.model';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Filter restraining with an Entity Browser to select target entities\n */\n@Component({\n selector: 'app-filter-entity',\n templateUrl: './filter-entity.component.html',\n styleUrls: ['./filter-entity.component.scss'],\n})\nexport class FilterEntityComponent extends FilterBaseComponent implements OnInit {\n //#region Public fields\n @Input() public entityTypes: string[] = [];\n @Input() public refresherType?: IGuid;\n @Input() public alwaysShowCheckedItemsActions = false;\n @ViewChild('browser') public browser?: EntityBrowserComponent;\n\n @Input() public entityBrowserFilter?: EntityBrowserFilter;\n //#endregion\n\n //#region Private fields\n private isBrowserRefreshRequired = true;\n //#endregion\n\n //#region Public methods\n\n ngOnInit() {\n super.ngOnInit();\n this.value = {\n includedEntities: [],\n excludedEntities: [],\n };\n }\n\n public onBrowserCheckedEntitiesChanged(selectedEntities: EntityBrowserCheckSelection): void {\n this.value = {\n includedEntities: selectedEntities.ids.map((guid) => new SafeGuid(guid)),\n excludedEntities: selectedEntities.exclusions.map((guid) => new SafeGuid(guid)),\n };\n }\n\n public onFilterToggled(isFilterOpened: boolean): void {\n super.onFilterToggled(isFilterOpened);\n\n if (isFilterOpened) {\n focusDomElement('.entity-browser-wrapper .browser-search .gen-input');\n if (this.isBrowserRefreshRequired) {\n this.refreshEntityList();\n }\n }\n }\n\n public updateState(): void {\n const selectedItems = this?.browser?.checkedEntities.items;\n let selection = this.state.selection;\n\n if (!selectedItems?.length) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (selectedItems.length === 1) {\n selection = selectedItems[0].name;\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n\n //Apply warning message if necessary\n const message = this.isCoveringAllSystemInReportsContext() ? (this.translateService.instant('STE_LABEL_WARNING_ENTITY_FILTER_SEARCH_TOO_LONG') as string) : '';\n\n this.state = { status: this.isCoveringAllSystemInReportsContext() ? 'Warning' : 'Ok', selection, message };\n }\n\n public clearFilter(): void {\n this.browser?.onUncheckAllItemsClicked();\n }\n\n public isDefaulted(): boolean {\n return this.value.excludedEntities.length === 0 && this.value.includedEntities.length === 0;\n }\n\n public override isDirty(firstValue: EntityFilterModel, secondValue: EntityFilterModel): boolean {\n const arr1 = firstValue.includedEntities.map((guid: SafeGuid) => guid.toString());\n const arr2 = secondValue.includedEntities.map((guid: SafeGuid) => guid.toString());\n\n if (arr1.length !== arr2.length) {\n return true;\n }\n\n // compare each item\n return arr1.some((value, index) => arr2.indexOf(value) === -1);\n }\n\n public override getDefaultValue(): EntityFilterModel {\n return { includedEntities: [], excludedEntities: [] };\n }\n\n //#endregion\n\n //#region Private methods\n\n private isCoveringAllSystemInReportsContext() {\n return this.isPrimary && this.isDefaulted() && this.filterCoordinatorService.context === FilterContext.Reports;\n }\n\n private refreshEntityList() {\n const filter = new EntityBrowserFilter(this.entityTypes);\n if (this.refresherType && !this.refresherType.equals(SafeGuid.EMPTY)) {\n filter.refresherType = this.refresherType;\n }\n this.entityBrowserFilter = filter;\n this.isBrowserRefreshRequired = false;\n }\n\n //#endregion\n}\n","\n
\n \n
\n
\n","\n
\n
\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n \n \n {{ enumValue.text }}\n \n \n\n \n {{ 'STE_LABEL_NORESULTS' | translate }}\n \n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Icon, SelectionType } from '@genetec/gelato';\nimport { FilterContext, IFilterContent } from '@modules/shared/api/api';\nimport { FilterBaseComponent } from '../filter-base.component';\nimport { ListItem } from './../../../../interfaces/list-item';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n/**\n * Filter based on enum values as restraint\n */\n@Component({\n selector: 'app-filter-enum',\n templateUrl: './filter-enum.component.html',\n styleUrls: ['./filter-enum.component.scss'],\n})\nexport class FilterEnumComponent extends FilterBaseComponent implements OnInit, OnDestroy {\n //#region Public fields\n\n @Input() public filterContext?: FilterContext;\n @Input() set values(array: Array<{ id: string; text: string }> | undefined) {\n if (array) {\n array.forEach((value) => this.enumValues.push({ ...value, isChecked: false } as ListItem));\n this.isContentLoaded = true;\n }\n }\n\n @Output() public lazyLoadEvent = new EventEmitter();\n\n public readonly Icon = Icon;\n public readonly ListSelectionType = SelectionType;\n\n public enumValues: ListItem[] = [];\n\n public get selectedEnumValues(): ListItem[] {\n return this.enumValues.filter((value) => value.isChecked);\n }\n\n public get isFooterVisible(): boolean {\n return this.enumValues.length > 0;\n }\n\n public get isAllSelected(): boolean {\n return this.enumValues.length === this.selectedEnumValues.length;\n }\n\n public get isNothingSelected(): boolean {\n return this.selectedEnumValues.length === 0;\n }\n\n public isContentLoaded = false;\n public isContentLoading = false;\n\n //#endregion\n\n ngOnInit() {\n super.ngOnInit();\n this.value = [];\n }\n\n public onSelectedEnumValuesChanged(item: ListItem, isChecked: boolean): void {\n item.isChecked = isChecked;\n this.updateValue(this.selectedEnumValues);\n }\n\n public onFilterToggled(isFilterOpened: boolean): void {\n if (isFilterOpened && !this.isContentLoaded && !this.isContentLoading) {\n this.lazyLoadContent().fireAndForget();\n }\n\n super.onFilterToggled(isFilterOpened);\n }\n\n public onCheckAllItemsClicked(): void {\n this.enumValues.forEach((enumValue) => {\n enumValue.isChecked = true;\n });\n this.updateValue(this.selectedEnumValues);\n }\n\n public updateState(): void {\n const selectedItems = this.selectedEnumValues;\n\n let selection = this.state.selection;\n\n if (!selectedItems?.length) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (selectedItems.length === 1) {\n selection = selectedItems[0].text;\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.enumValues.forEach((enumValue) => {\n enumValue.isChecked = false;\n });\n this.updateValue(this.selectedEnumValues);\n }\n\n public isDefaulted(): boolean {\n return this.value.length === 0;\n }\n\n public override isDirty(firstValue: string[], secondValue: string[]): boolean {\n if (firstValue.length !== secondValue.length) {\n return true;\n }\n\n // compare each item\n return firstValue.some((value, index) => secondValue.indexOf(value) === -1);\n }\n\n public override getDefaultValue(): string[] {\n return [];\n }\n\n /**\n * Fetches the enum values from the server.\n *\n * @param context\n */\n private async lazyLoadContent(): Promise {\n this.isContentLoading = true;\n if (this.filterContext) {\n const content = await this.filterClient.getFilterContent(this.filterContext).toPromise();\n if (content) {\n this.lazyLoadEvent.emit(content);\n }\n }\n\n this.isContentLoading = false;\n }\n\n private updateValue(items: ListItem[]): void {\n this.value = items.map((x) => x.id);\n }\n}\n","\n
\n \n \n \n {{ visibleItemSource.text }}\n \n \n\n \n
\n
\n","import { ListItem } from '@modules/shared/interfaces/list-item';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Icon, SelectionType } from '@genetec/gelato';\nimport { FilterBaseComponent } from '../filter-base.component';\n\n/**\n * Filter restraining on element selection in a list\n */\n@Component({\n selector: 'app-filter-list',\n templateUrl: './filter-list.component.html',\n styleUrls: ['./filter-list.component.scss'],\n})\nexport class FilterListComponent extends FilterBaseComponent implements OnInit {\n @Input() public isSearchable = false;\n @Output() public reload = new EventEmitter();\n @Output() public searchChange = new EventEmitter();\n\n @Input() public set itemsSource(source: ListItem[] | null) {\n const itemSource = source ?? [];\n\n this.visibleItemsSource = [];\n\n for (const item of itemSource) {\n if (!this.itemSourceCatalog.has(item.id)) {\n this.itemSourceCatalog.set(item.id, item.isChecked ?? false);\n } else {\n //Already in catalog\n item.isChecked = this.itemSourceCatalog.get(item.id);\n }\n this.visibleItemsSource.push(item);\n }\n }\n\n public readonly Icon = Icon;\n public ListSelectionType = SelectionType;\n\n public searchText!: string;\n public visibleItemsSource: ListItem[] = [];\n\n private itemSourceCatalog = new Map();\n\n ngOnInit() {\n super.ngOnInit();\n this.value = [];\n }\n\n public onReload = (): void => this.reload.emit();\n\n public onSearchChange = (search: string): void => this.searchChange.emit(search);\n\n public onSelectedItemsChange(item: ListItem, isChecked: boolean): void {\n item.isChecked = isChecked;\n this.itemSourceCatalog.set(item.id, isChecked);\n\n this.computeValue();\n }\n\n public onSelectAll(): void {\n this.visibleItemsSource?.forEach((x) => (x.isChecked = true));\n this.itemSourceCatalog.forEach((_, key) => this.setItemCheckedStateIfVisible(key, true));\n this.computeValue();\n }\n\n public onUnselectAll(): void {\n this.visibleItemsSource?.forEach((x) => (x.isChecked = false));\n this.itemSourceCatalog.forEach((_, key) => this.setItemCheckedStateIfVisible(key, false));\n this.computeValue();\n }\n\n public updateState(): void {\n const selectedItems = this.value;\n\n let selection = this.state.selection;\n\n if (!selectedItems || selectedItems.length === 0) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (selectedItems.length === 1) {\n selection = this.visibleItemsSource.find((x) => x.isChecked)?.text ?? '';\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.itemSourceCatalog = new Map();\n this.onUnselectAll();\n this.searchText = '';\n }\n\n public isDefaulted(): boolean {\n return this.value.length === 0;\n }\n\n public override isDirty(firstValue: ListItem[], secondValue: ListItem[]): boolean {\n const arr1 = firstValue.map((listItem: ListItem) => listItem.id);\n const arr2 = secondValue.map((listItem: ListItem) => listItem.id);\n\n if (arr1.length !== arr2.length) {\n return true;\n }\n\n // compare each item\n return arr1.some((value) => arr2.indexOf(value) === -1);\n }\n\n public override getDefaultValue(): ListItem[] {\n return [];\n }\n\n private computeValue(): void {\n const items: ListItem[] = [];\n this.itemSourceCatalog.forEach((value, key) => items.push({ id: key, text: '', isChecked: value }));\n this.value = items.filter((x) => x.isChecked);\n }\n\n private setItemCheckedStateIfVisible(key: string, isChecked: boolean): void {\n if (this.visibleItemsSource.some((x) => x.id === key)) {\n this.itemSourceCatalog.set(key, isChecked);\n }\n }\n}\n","\n
\n
\n
\n \n {{ 'STE_LABEL_TIMERANGE_FROM' | translate }} \n \n \n {{ 'STE_LABEL_TIMERANGE_TO' | translate }} \n \n \n \n \n
\n\n \n {{ 'STE_LABEL_FORMAT_INVALID_RANGE_BETWEEN_X_AND_Y' | translate | stringFormat: min:max }}\n \n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { FilterBaseComponent } from '../filter-base.component';\nimport { NumericRangeModel } from './filter-numeric-range.model';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Filter restraining with a numeric range\n *\n * @example 0 to 255\n */\n@Component({\n selector: 'app-filter-numeric-range',\n templateUrl: './filter-numeric-range.component.html',\n styleUrls: ['./filter-numeric-range.component.scss'],\n})\nexport class FilterNumericRangeComponent extends FilterBaseComponent implements OnInit {\n //#region Public fields\n\n @Input() readonly min = Number.MIN_VALUE;\n @Input() readonly max = Number.MAX_VALUE;\n\n public readonly Icon = Icon;\n\n public from = 1;\n public to = 100;\n public invalidDateRange = false;\n\n //#endregion\n\n //#region Public methods\n\n ngOnInit(): void {\n super.ngOnInit();\n this.initFilter();\n }\n\n public onFromInputChange(newValue: number): void {\n this.from = newValue;\n this.updateRange();\n }\n\n public onToInputChange(newValue: number): void {\n this.to = newValue;\n this.updateRange();\n }\n\n public updateState(): void {\n let selection = this.state.selection;\n\n if (this.min === this.from && this.max === this.to) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else {\n selection = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_NUM_RANGE_FROM_X_TO_Y') as string, this.from.toString(), this.to.toString());\n }\n\n this.state = { ...this.state, selection, status: !this.isRangeValid() ? 'Error' : 'Ok' };\n }\n\n public clearFilter(): void {\n this.initFilter();\n }\n\n public isDefaulted(): boolean {\n return this.min === this.from && this.max === this.to;\n }\n\n public override isDirty(firstValue: NumericRangeModel, secondValue: NumericRangeModel): boolean {\n return firstValue.from !== secondValue.from || firstValue.to !== secondValue.to;\n }\n\n public override getDefaultValue(): NumericRangeModel {\n return {\n from: this.min === Number.MIN_VALUE ? 0 : this.min,\n to: this.max === Number.MAX_VALUE ? 100 : this.max,\n };\n }\n //#endregion\n\n //#region Private methods\n\n private initFilter(): void {\n const defaultValue = this.getDefaultValue();\n this.from = defaultValue.from;\n this.to = defaultValue.to;\n this.updateRange();\n }\n\n private updateRange(): void {\n this.value = { from: Math.min(this.from, this.to), to: Math.max(this.from, this.to) };\n }\n\n private isRangeValid(): boolean {\n this.invalidDateRange = !this.validateInputRespectsBounds(this.from) || !this.validateInputRespectsBounds(this.to);\n return !this.invalidDateRange;\n }\n\n private validateInputRespectsBounds(input: number): boolean {\n return input >= this.min && input <= this.max;\n }\n\n //#endregion\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FilterClient } from '@shared/api/api';\nimport { FilterCoordinatorService } from '@shared/services/filters/filter-coordinator-service';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FilterBaseComponent } from './filter-base.component';\n\n@Component({\n template: '',\n})\nexport abstract class FilterTextBaseComponent extends FilterBaseComponent implements OnInit {\n public actualText = '';\n\n constructor(\n trackingService: TrackingService,\n protected filterClient: FilterClient,\n protected filterCoordinatorService: FilterCoordinatorService,\n protected translateService: TranslateService\n ) {\n super(trackingService, filterClient, filterCoordinatorService, translateService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.value = '';\n }\n\n public onFilterChanged(text: string): void {\n this.actualText = text;\n this.value = text.trim();\n }\n\n public onFilterToggled(isFilterOpened: boolean): void {\n super.onFilterToggled(isFilterOpened);\n if (!isFilterOpened) {\n this.actualText = this.actualText.trim();\n }\n }\n\n public updateState(): void {\n let selection = this.state.selection;\n\n if (this.actualText.trim() === '') {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else {\n selection = this.value;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.onFilterChanged('');\n }\n\n public isDefaulted(): boolean {\n return this.value === '';\n }\n\n public override isDirty(firstValue: string, secondValue: string): boolean {\n return firstValue.trim() !== secondValue.trim();\n }\n\n public override getDefaultValue(): string {\n return '';\n }\n}\n","\n \n 0\" class=\"gen-input-group-append\" [flavor]=\"Flavor.Button.Flat\" (click)=\"onFilterChanged('')\">\n \n \n\n","import { Component } from '@angular/core';\nimport { FilterTextBaseComponent } from '../filter-text-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Filter restraining on simple text\n */\n@Component({\n selector: 'app-filter-text',\n templateUrl: './filter-text.component.html',\n styleUrls: ['./filter-text.component.scss'],\n})\nexport class FilterTextComponent extends FilterTextBaseComponent {}\n","/**\n * Different tree view filter options available\n */\nexport enum TreeViewFilterOptionTypes {\n SelectAll = 'SelectAll',\n Search = 'Search',\n ViewSelected = 'ViewSelected',\n}\n","import { MeltedIcon } from '@genetec/gelato-angular';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\n\nexport interface TreeViewDefinition {\n id: string;\n label: string;\n icon: string;\n children: TreeViewDefinition[];\n}\n\nexport class TreeViewItem {\n public uniqueId: string;\n public id: string;\n public label: string;\n public icon: string;\n public children: TreeViewItem[];\n\n public get hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n constructor(uniqueId: IGuid, id: string, label: string, children: TreeViewItem[], icon: string) {\n this.uniqueId = uniqueId.toString();\n this.id = id;\n this.label = label;\n this.icon = icon;\n this.children = children;\n }\n}\n\nexport class TreeView {\n private treeViewItems: TreeViewItem[];\n\n constructor(treeViewItems: TreeViewDefinition[]) {\n this.treeViewItems = this.mapITreeViewItemsToTreeViewItems(treeViewItems);\n }\n\n public getSelectedItemsRealIds(genTreeItems: TreeItem[]): string[] {\n return this.getTreeItemsIdsByUniqueIds(genTreeItems);\n }\n\n public generateTreeItems(): TreeItem[] {\n return this.mapTreeViewItemsToTreeItems(this.treeViewItems);\n }\n\n private mapITreeViewItemsToTreeViewItems(treeViewItems: TreeViewDefinition[]): TreeViewItem[] {\n return treeViewItems.map(\n (treeViewItem) =>\n new TreeViewItem(SafeGuid.newGuid(), treeViewItem.id, treeViewItem.label, this.mapITreeViewItemsToTreeViewItems(treeViewItem.children), treeViewItem.icon)\n );\n }\n\n private mapTreeViewItemsToTreeItems(treeViewItems: TreeViewItem[]): TreeItem[] {\n // If only one root, display as flat\n const singleRoot = treeViewItems.length === 1;\n\n return (singleRoot ? treeViewItems[0].children : treeViewItems).map((treeViewItem) => {\n return {\n id: treeViewItem.uniqueId,\n text: treeViewItem.label,\n children: treeViewItem.hasChildren ? this.mapTreeViewItemsToTreeItems(treeViewItem.children) : undefined,\n icon: treeViewItem.icon as MeltedIcon,\n isChecked: false,\n };\n });\n }\n\n private getTreeViewLeaves(treeViewItems: TreeViewItem[]): TreeViewItem[] {\n const leaves: TreeViewItem[] = [];\n\n treeViewItems.forEach((treeViewItem) => {\n if (!treeViewItem.hasChildren) leaves.push(treeViewItem);\n else leaves.push(...this.getTreeViewLeaves(treeViewItem.children));\n });\n\n return leaves;\n }\n\n private getTreeItemsIdsByUniqueIds(genTreeItems: TreeItem[]): string[] {\n const treeViewLeaves = this.getTreeViewLeaves(this.treeViewItems);\n return treeViewLeaves.filter((leaf) => genTreeItems.find((x) => x.id === leaf.uniqueId)).map((x) => x.id);\n }\n}\n","\n
\n \n \n \n\n
\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n
\n \n {{ 'STE_LABEL_NORESULTS' | translate }}\n \n
\n\n \n \n \n \n {{ item.text }}\n \n \n \n \n \n {{ child.text }} \n \n \n \n \n \n\n \n \n \n
\n\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ButtonFlavor, Icon, SelectionType } from '@genetec/gelato';\nimport { Flavor, GenMeltedListItem, SelectionType as MeltedSelectionType } from '@genetec/gelato-angular';\nimport { FilterContext, IFilterContent } from '@modules/shared/api/api';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\nimport { cloneDeep, intersectionBy } from 'lodash-es';\nimport { FilterBaseComponent } from '../filter-base.component';\nimport { TreeViewFilterOptionTypes } from './enums/tree-view-filter-option-types.enum';\nimport { TreeView, TreeViewDefinition } from './filter-tree-view.model';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Filter based on an hierarchical list selection\n */\n@Component({\n selector: 'app-filter-tree-view',\n templateUrl: './filter-tree-view.component.html',\n styleUrls: ['./filter-tree-view.component.scss'],\n})\nexport class FilterTreeViewComponent extends FilterBaseComponent implements OnInit {\n //#region Properties\n\n @Input() public set options(options: string[]) {\n if (options.length > 0) {\n this.applyOptions(options);\n }\n }\n @Input() public filterContext!: FilterContext;\n @Input() public set rootItems(items: unknown[] | undefined) {\n if (items) {\n this.treeView = new TreeView(this.convertToTreeViewDefinition(items));\n\n this.loadedTreeItems = this.treeView.generateTreeItems();\n\n this.nonFilteredTreeItems = cloneDeep(this.loadedTreeItems);\n\n this.displayedTreeItems = this.nonFilteredTreeItems;\n\n this.isTreeViewLoaded = true;\n this.deactivateSpinner();\n }\n }\n\n @Output() public updateRootItemsEvent = new EventEmitter();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly SelectionTypes = SelectionType;\n public readonly MeltedSelectionType = MeltedSelectionType;\n public readonly Flavor = Flavor;\n\n // ** Only used to feed Gelato ** //\n public displayedTreeItems: TreeItem[] = [];\n public displayedShowOnlySelectedTreeItems: GenMeltedListItem[] = [];\n public displayedSelectedTreeItems: TreeItem[] = [];\n public showOnlySelectedTreeItems: GenMeltedListItem[] = [];\n // ***************************** //\n\n public searchText = '';\n public isFiltered = false;\n public isAllChecked = false;\n public onlyShowCheckedItems = false;\n public isTreeViewLoading = false;\n\n public isSearchAvailable = false;\n public isSelectAllAvailable = false;\n public isViewSelectedAvailable = false;\n\n private isTreeViewLoaded = false;\n\n private loadedTreeItems: TreeItem[] = [];\n private selectedTreeItems: TreeItem[] = [];\n private nonFilteredTreeItems: TreeItem[] = [];\n private filteredTreeItems: TreeItem[] = [];\n private filteredSelectedItems: TreeItem[] = [];\n private oldShowOnlySelectedItems: TreeItem[] = [];\n\n private treeView?: TreeView;\n\n public get isOnlyShowSelectedItemsVisible(): boolean {\n return this.selectedTreeItems.length > 0;\n }\n\n public get isUncheckAllHidden(): boolean {\n if (this.onlyShowCheckedItems) {\n return this.selectedTreeItems.length === 0;\n } else {\n return this.displayedSelectedTreeItems.length === 0;\n }\n }\n\n public get isNoItemsFound(): boolean {\n return !this.isTreeViewLoading && this.displayedTreeItems.length === 0 && !this.onlyShowCheckedItems;\n }\n\n //#endregion\n\n //#region Life cycle hooks\n\n ngOnInit() {\n super.ngOnInit();\n this.value = [];\n }\n\n //#endregion\n\n //#region Public methods\n\n /**\n * Raised when the filter popup has been opened\n *\n * @param isFilterOpened\n */\n public async onFilterToggled(isFilterOpened: boolean): Promise {\n // Checks if the root items need to and can be loaded\n if (this.descriptor?.lazyLoad && isFilterOpened && !this.isTreeViewLoaded && !this.isTreeViewLoading) {\n await this.loadTreeViewItems();\n }\n\n super.onFilterToggled(isFilterOpened);\n }\n\n /**\n * \tRaised when the array of selected items changed.\n *\n * @param items\n */\n public onSelectedItemsChange(item: TreeItem, event: CustomEvent): void {\n item.isChecked = event.detail;\n this.updateSelectedItems(this.treeItemsToFlatList(this.displayedTreeItems).filter((i) => i.isChecked === true));\n this.updateIsAllChecked();\n this.updateValue(this.selectedTreeItems);\n }\n\n /**\n * Raised when show only selected items array changed.\n *\n * @param item\n */\n public onShowOnlySelectedItemsChange(items: TreeItem[]): void {\n this.showOnlySelectedTreeItems = items as GenMeltedListItem[];\n\n const difference = this.genTreeItemArrayDifference(this.oldShowOnlySelectedItems, items);\n\n if (difference.length > 0) {\n if (this.oldShowOnlySelectedItems.length > items.length) {\n const itemToRemoveIndex: number = this.displayedSelectedTreeItems.findIndex((x) => x.id === difference[0].id);\n\n if (itemToRemoveIndex > -1) {\n this.displayedSelectedTreeItems.splice(itemToRemoveIndex, 1);\n }\n } else this.displayedSelectedTreeItems.push(difference[0]);\n }\n\n this.oldShowOnlySelectedItems = cloneDeep(items);\n this.updateValue(this.displayedSelectedTreeItems);\n }\n\n /**\n * Raised when display checked items toggle changed\n */\n public onOnlyShowCheckedItemsClicked(): void {\n if (this.onlyShowCheckedItems) {\n this.showOnlySelectedTreeItems = this.selectedTreeItems.filter((x) => !x.children);\n this.displayedShowOnlySelectedTreeItems = this.showOnlySelectedTreeItems;\n this.oldShowOnlySelectedItems = this.showOnlySelectedTreeItems;\n } else this.updateIsAllChecked();\n }\n\n /**\n * Raised when check all items button clicked\n */\n public onCheckAllItemsClicked(): void {\n if (this.isFiltered) {\n this.addTreeItemsToSelectedTreeItems(this.filteredTreeItems);\n const filteredSelectedItems = this.treeItemsToFlatList(this.filteredTreeItems);\n this.displayedSelectedTreeItems = cloneDeep(filteredSelectedItems);\n this.filteredSelectedItems = filteredSelectedItems;\n } else {\n const nonFilteredSelectedItems = this.treeItemsToFlatList(this.nonFilteredTreeItems);\n this.displayedSelectedTreeItems = cloneDeep(nonFilteredSelectedItems);\n this.selectedTreeItems = nonFilteredSelectedItems;\n }\n\n this.isAllChecked = true;\n this.updateValue(this.selectedTreeItems);\n }\n\n /**\n * Raised when uncheck all items button clicked\n */\n public onUncheckAllItemsClicked(): void {\n this.selectedTreeItems = [];\n this.removeTreeItemsFromSelectedTreeItems(this.filteredTreeItems);\n\n this.displayedSelectedTreeItems = [];\n this.filteredSelectedItems = [];\n\n this.onlyShowCheckedItems = false;\n this.isAllChecked = false;\n this.updateValue([]);\n }\n\n /**\n * Raised on search text changed\n */\n public async onSearchTextChanged(newValue: string): Promise {\n this.searchText = newValue;\n await this.searchAsync(this.searchText);\n }\n\n public updateState(): void {\n const selectedItems = this.selectedTreeItems;\n let selection = this.state.selection;\n\n if (!selectedItems || selectedItems.length === 0) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (selectedItems.length === 1) {\n selection = selectedItems[0].text ?? '';\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.onUncheckAllItemsClicked();\n }\n\n public isDefaulted(): boolean {\n return this.value === undefined || this.value.length === 0;\n }\n\n public override isDirty(firstValue: string[], secondValue: string[]): boolean {\n if (firstValue.length !== secondValue.length) {\n return true;\n }\n\n // compare each item\n return firstValue.some((value, index) => secondValue.indexOf(value) === -1);\n }\n\n public override getDefaultValue(): string[] {\n return [];\n }\n\n //#endregion\n\n //#region Private methods\n\n /**\n * Raised when search debounce done.\n *\n * @param event\n */\n private async searchAsync(searchText: string): Promise {\n this.activateSpinner();\n\n if (searchText) {\n this.isFiltered = true;\n\n // TODO: Remove set timeout when GenTree will be loading faster\n // Only used to display a spinner while the GenTree component is being loaded.\n await new Promise((resolve) => setTimeout(resolve, 0));\n this.filteredTreeItems = this.filterTreeViewItems_CaseInsensitive(searchText, this.loadedTreeItems);\n\n this.displayedTreeItems = this.filteredTreeItems;\n this.filteredSelectedItems = intersectionBy(this.selectedTreeItems, this.treeItemsToFlatList(this.filteredTreeItems), 'id');\n this.displayedSelectedTreeItems = cloneDeep(this.filteredSelectedItems);\n } else {\n this.isFiltered = false;\n this.displayedTreeItems = this.nonFilteredTreeItems;\n\n // Force selected items refresh\n this.displayedSelectedTreeItems = cloneDeep(this.selectedTreeItems);\n }\n\n this.updateIsAllChecked();\n this.deactivateSpinner();\n }\n\n /**\n * Filters tree view items using the given search text.\n *\n * @param searchText\n * @param treeViewItems\n */\n private filterTreeViewItems_CaseInsensitive(searchText: string, treeViewItems: TreeItem[]): TreeItem[] {\n const filteredItems: TreeItem[] = cloneDeep(treeViewItems);\n const itemsToRemove: string[] = [];\n const searcTextUpper: string = searchText.toUpperCase();\n\n for (const item of filteredItems) {\n if (!item.children && item.text && !item.text.toUpperCase().includes(searcTextUpper)) {\n if (item.id) {\n itemsToRemove.push(item.id);\n }\n } else {\n const matchingChildren = this.filterTreeViewItems_CaseInsensitive(searchText, item.children ?? []);\n\n if (matchingChildren.length === 0) {\n if (item.text?.toUpperCase().includes(searcTextUpper)) {\n item.isExpanded = false;\n } else if (item.id) {\n itemsToRemove.push(item.id);\n }\n } else {\n item.isExpanded = true;\n item.children = matchingChildren;\n }\n }\n }\n\n itemsToRemove.forEach((id) => {\n const index: number = filteredItems.findIndex((x) => x.id === id);\n\n if (index !== -1) {\n filteredItems.splice(index, 1);\n }\n });\n\n return filteredItems;\n }\n\n /**\n * Updates is all checked property.\n */\n private updateIsAllChecked() {\n const nbDisplayedItems = this.getNbItems(this.displayedTreeItems);\n const nbSelectedItems = this.isFiltered ? this.filteredSelectedItems.length : this.selectedTreeItems.length;\n this.isAllChecked = nbDisplayedItems === nbSelectedItems;\n }\n\n /**\n * Updates selected items.\n *\n * @param newItems\n */\n private updateSelectedItems(newSelectedItems: TreeItem[]) {\n this.displayedSelectedTreeItems = newSelectedItems;\n\n if (this.isFiltered) {\n const difference = this.genTreeItemArrayDifference(this.filteredSelectedItems, newSelectedItems);\n\n if (difference.length > 0) {\n if (this.filteredSelectedItems.length > newSelectedItems.length) {\n difference.forEach((item) => {\n this.removeTreeItemFromSelectedTreeItems(item);\n });\n } else {\n difference.forEach((item) => {\n this.addTreeItemToSelectedTreeItems(item);\n });\n }\n }\n\n this.filteredSelectedItems = cloneDeep(newSelectedItems);\n } else {\n this.selectedTreeItems = cloneDeep(newSelectedItems);\n }\n }\n\n /**\n * Recursively counts the number of items inside of a given set of tree items.\n *\n * @param treeItems\n */\n private getNbItems(treeItems: TreeItem[]): number {\n let nbItems = 0;\n\n treeItems.forEach((x) => {\n nbItems++;\n\n if (x.children) {\n nbItems += this.getNbItems(x.children);\n }\n });\n\n return nbItems;\n }\n\n private addTreeItemsToSelectedTreeItems(treeItems: TreeItem[]) {\n treeItems.forEach((treeItem) => {\n this.addTreeItemToSelectedTreeItems(treeItem);\n\n if (treeItem.children) {\n this.addTreeItemsToSelectedTreeItems(treeItem.children);\n }\n });\n }\n\n private removeTreeItemsFromSelectedTreeItems(treeItems: TreeItem[]) {\n treeItems.forEach((treeItem) => {\n this.removeTreeItemFromSelectedTreeItems(treeItem);\n\n if (treeItem.children) {\n this.removeTreeItemsFromSelectedTreeItems(treeItem.children);\n }\n });\n }\n\n private addTreeItemToSelectedTreeItems(treeItem: TreeItem) {\n if (!this.selectedTreeItems.find((x) => x.id === treeItem.id)) {\n this.selectedTreeItems.push(treeItem);\n }\n }\n\n private removeTreeItemFromSelectedTreeItems(treeItem: TreeItem) {\n const index: number = this.selectedTreeItems.findIndex((x) => x.id === treeItem.id);\n\n if (index !== -1) {\n this.selectedTreeItems.splice(index, 1);\n }\n }\n\n /**\n * Converts a tree structure to a flat list.\n *\n * @param treeItem\n * @param flatList\n */\n private treeItemsToFlatList(treeItems: TreeItem[]): TreeItem[] {\n const flatList: TreeItem[] = [];\n\n treeItems.forEach((item) => {\n flatList.push(item);\n\n if (item.children) {\n flatList.push(...this.treeItemsToFlatList(item.children));\n }\n });\n\n return flatList;\n }\n\n /**\n * Returns the differences between the 2 arrays.\n *\n * @param array1\n * @param array2\n */\n private genTreeItemArrayDifference(array1: TreeItem[], array2: TreeItem[]): TreeItem[] {\n let a1: TreeItem[] = array1;\n let a2: TreeItem[] = array2;\n\n if (array1.length < array2.length) {\n a1 = array2;\n a2 = array1;\n }\n\n return a1.filter((item1) => !a2.some((item2) => item2.id === item1.id));\n }\n\n /**\n * Maps a TreeViewItem to a TreeItem.\n *\n * @param treeViewItem\n */\n private mapTreeViewItemToTreeItem(treeViewItem: TreeViewDefinition): TreeItem {\n return {\n id: treeViewItem.id,\n text: treeViewItem.label,\n children: treeViewItem.children.length > 0 ? treeViewItem.children.map((x) => this.mapTreeViewItemToTreeItem(x)) : undefined,\n } as TreeItem;\n }\n\n /**\n * Updates the currently displayed selection status and\n * adds the selected items to the filters values list.\n *\n * @param items\n */\n private updateValue(items: TreeItem[]) {\n const filteredSelectedItems = items.filter((x) => !x.children);\n\n // treeView becomes undefined when ngOnDestroy is called\n this.value = this.treeView?.getSelectedItemsRealIds(filteredSelectedItems) || this.getDefaultValue();\n }\n\n /**\n * Fetches the tree view root items.\n *\n * @param context\n */\n private async loadTreeViewItems() {\n this.activateSpinner();\n\n const content = await this.filterClient.getFilterContent(this.filterContext).toPromise();\n\n if (!content) {\n return;\n }\n\n this.updateRootItemsEvent.emit(content);\n }\n\n private applyOptions(options: string[]) {\n this.isSearchAvailable = options.includes(TreeViewFilterOptionTypes.Search);\n this.isSelectAllAvailable = options.includes(TreeViewFilterOptionTypes.SelectAll);\n this.isViewSelectedAvailable = options.includes(TreeViewFilterOptionTypes.ViewSelected);\n }\n\n private activateSpinner() {\n this.isTreeViewLoading = true;\n }\n\n private deactivateSpinner() {\n this.isTreeViewLoading = false;\n }\n\n private convertToTreeViewDefinition(treeViewDefinitions: any[]): TreeViewDefinition[] {\n return treeViewDefinitions.map((def) => {\n return {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */\n // TODO: Fix typing\n id: def.Id as string,\n label: def.Label as string,\n children: this.convertToTreeViewDefinition(def.Children),\n icon: def.Icon as string,\n } as TreeViewDefinition;\n });\n }\n\n //#endregion\n}\n","import { Directive, OnDestroy, ElementRef, AfterViewInit, Input } from '@angular/core';\n\n@Directive({\n selector: '[appClickActionOnSpaceEnter]',\n})\nexport class ClickActionOnSpaceEnterDirective implements AfterViewInit, OnDestroy {\n /**\n * Call the handler assigned to the click event whenn Space or Enter keyup\n */\n @Input() appClickActionOnSpaceEnter: boolean | string = false;\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.el?.nativeElement?.addEventListener('keyup', this.onKeyUp);\n }\n\n ngOnDestroy() {\n this.el?.nativeElement?.removeEventListener('keyup', this.onKeyUp);\n }\n\n private readonly onKeyUp = (e: KeyboardEvent): void => {\n if (e.code === 'Space' || e.key === 'Enter') {\n this.el?.nativeElement?.click();\n }\n\n e.stopPropagation();\n };\n}\n"," 0\">\n
\n
\n \n {{ 'STE_LABEL_SELECT_FILTERS' | translate }}\n
\n
\n \n
\n \n \n {{ filter.text }}\n \n \n
\n {{ 'STE_BUTTON_CANCEL' | translate }}\n \n {{ 'STE_BUTTON_APPLY' | translate }}\n
\n
\n \n
\n","/* eslint-disable no-underscore-dangle */\nimport { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { GenPopup } from '@genetec/gelato-angular';\nimport { PopupPosition, Orientation, SelectionType } from '@genetec/gelato';\nimport { isEqual } from 'lodash-es';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { ListItem } from '@modules/shared/interfaces/list-item';\n\n@Component({\n selector: 'app-hideable-filters-container',\n templateUrl: './hideable-filters-container.component.html',\n styleUrls: ['./hideable-filters-container.component.scss'],\n})\nexport class HideableFiltersContainerComponent extends TrackedComponent {\n @ViewChild(GenPopup) popup!: GenPopup;\n\n @Input() public filters: ListItem[] = [];\n @Output() public selectionChanged = new EventEmitter();\n\n public wasChecked: Array = [];\n public isDirty = false;\n\n public readonly PopupPosition = PopupPosition;\n public readonly Orientation = Orientation;\n public readonly ListSelectionType = SelectionType;\n\n private _isPopupOpen = false;\n public get isPopupOpen(): boolean {\n return this._isPopupOpen;\n }\n public set isPopupOpen(isOpen: boolean) {\n this._isPopupOpen = isOpen;\n if (isOpen) {\n // opening\n this.wasChecked = this.getCheckedItemsId();\n } else {\n // closing\n this.revert();\n }\n }\n\n public async apply(): Promise {\n await this.popup.close();\n this._isPopupOpen = false; // Close without reverting\n const checked = this.getCheckedItemsId();\n this.selectionChanged.emit(checked);\n this.wasChecked = checked;\n this.isDirty = false;\n }\n\n public async cancel(): Promise {\n await this.popup.close();\n this.isPopupOpen = false;\n this.isDirty = false;\n }\n\n public onSelectionChange(item: ListItem, isChecked: boolean): void {\n item.isChecked = isChecked;\n this.isDirty = !isEqual(this.getCheckedItemsId(), this.wasChecked);\n }\n\n public async togglePopup(): Promise {\n await this.popup.toggle();\n this.isPopupOpen = this.popup.open;\n }\n\n private getCheckedItemsId(): Array {\n return this.filters.filter((x) => x.isChecked).map((x) => x.id);\n }\n\n private revert(): void {\n this.filters.forEach((x) => (x.isChecked = this.wasChecked?.includes(x.id)));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Content } from '../interfaces/plugins/public/plugin-public.interface';\n\nexport const PLUGIN_CONTEXT = new InjectionToken('Plugin context');\nexport const PLUGIN_CONTENT = new InjectionToken('Plugin content');\n","import { Component, ElementRef, EventEmitter, HostListener, Inject, Injector, Input, OnDestroy, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { PLUGIN_CONTENT, PLUGIN_CONTEXT } from '@modules/shared/tokens';\nimport { ClassInstance } from '@modules/shared/utilities/types';\nimport { IGuid } from 'safeguid';\nimport { PluginItem } from '../../interfaces/plugins/internal/pluginItem';\nimport { ContextTypes } from '../../interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE, CommandsSubscription, PluginComponentCommandHandler, CommandsService } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { Content } from '../../interfaces/plugins/public/plugin-public.interface';\nimport { LoggerService } from '../../services/logger/logger.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Component({\n selector: 'app-plugin-host',\n template: '
',\n})\nexport class PluginHostComponent implements OnDestroy {\n @ViewChild('dynamicTemplate', { static: true, read: ViewContainerRef }) public pluginHost?: ViewContainerRef;\n\n @Output() public pluginClick = new EventEmitter();\n\n @Input()\n public set pluginItem(item: PluginItem | undefined) {\n this.setPluginItem(item);\n }\n\n @Input()\n public set dataContext(dataContext: unknown) {\n this.setDataContext(dataContext);\n }\n\n private componentInstance?: ClassInstance;\n private theDataContext: unknown;\n private initData: unknown;\n private commandsSubscription!: CommandsSubscription;\n\n constructor(\n private hostElement: ElementRef,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n private loggerService: LoggerService,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {}\n\n @HostListener('click', ['$event'])\n public onClickPressed(event: Event): void {\n const args: PluginHostClickEvent = { initData: this.initData, dataContext: this.theDataContext, handled: false };\n this.pluginClick.emit(args);\n if (args.handled) {\n event.stopPropagation();\n }\n }\n\n ngOnDestroy(): void {\n if (this.commandsSubscription) {\n this.commandsSubscription.unsubscribe();\n }\n }\n\n private setDataContext(dataContext: unknown) {\n this.theDataContext = dataContext;\n\n if (typeof this.componentInstance?.setDataContext === 'function') {\n this.componentInstance.setDataContext(dataContext);\n }\n }\n\n private setPluginItem(item: PluginItem | undefined) {\n if (this.pluginHost !== undefined) {\n this.pluginHost.clear();\n\n try {\n if (item !== undefined) {\n const componentRef = this.viewContainerRef.createComponent(item.type, {\n injector: Injector.create({\n providers: [\n {\n provide: PLUGIN_CONTENT,\n useValue: item.data,\n },\n {\n provide: PLUGIN_CONTEXT,\n useValue: this.dataContext,\n },\n ],\n parent: this.injector,\n }),\n });\n this.pluginHost.insert(componentRef.hostView);\n this.componentInstance = componentRef.instance as ClassInstance;\n this.initData = item.data;\n this.applyInitData(this.componentInstance);\n item.commandTarget = this.hostElement.nativeElement as HTMLElement | undefined;\n\n this.setDataContext(this.theDataContext);\n\n if (this.isCommandHandler(componentRef.instance)) {\n this.setCommandBindings(componentRef.instance, item.exposure.id);\n }\n }\n } catch (e) {\n this.loggerService.traceError('unable to insert plugin ' + (e as Error).message);\n }\n }\n }\n\n private setCommandBindings(commandHandler: PluginComponentCommandHandler, contextId: IGuid) {\n setTimeout(() => {\n const bindings = commandHandler.getCommandBindings();\n bindings.getCommands().forEach((command) => {\n command.target = this.hostElement.nativeElement as Element;\n command.targetData = { type: ContextTypes.Content, data: this.initData };\n });\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: 200,\n });\n });\n }\n\n private isCommandHandler(plugin: unknown): plugin is PluginComponentCommandHandler {\n return plugin !== null && typeof plugin === 'object' && 'getCommandBindings' in plugin;\n }\n\n private applyInitData(plugin: ClassInstance) {\n if ('setInitData' in plugin && typeof plugin.setInitData === 'function') {\n plugin.setInitData(this.initData);\n } else if ('setContent' in plugin && typeof plugin.setContent === 'function') {\n plugin.setContent(this.initData as Content);\n }\n }\n}\n\nexport interface PluginHostClickEvent {\n initData: unknown;\n dataContext: unknown;\n handled: boolean;\n}\n","
\n \n \n \n {{ 'STE_BUTTON_CLEARALLFILTERS' | translate }}\n \n
\n","import { ListItem } from '@modules/shared/interfaces/list-item';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { FiltersService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { FilterCoordinatorService } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { Item } from '@modules/shared/interfaces/item';\nimport { FilterDescriptor } from '@modules/general/components/filter-plugins/interfaces/filter-descriptor';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Component({\n selector: 'app-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss'],\n})\nexport class FiltersComponent extends TrackedComponent implements OnInit, OnDestroy {\n @Input() public filtersService?: FiltersService;\n\n @Input() public set filterDescriptors(value: FilterDescriptor[]) {\n if (value !== this.filterDescriptorsValue) {\n this.filterDescriptorsValue = value;\n this.onDescriptorChanged().fireAndForget();\n }\n }\n\n public get filterDescriptors(): FilterDescriptor[] {\n return this.filterDescriptorsValue;\n }\n\n public allFilterPlugins: PluginItem[] = [];\n public actualFilterPlugins: PluginItem[] = [];\n public hideableFilters: Item[] = [];\n\n private alwaysVisibleFilterPlugins: Map = new Map();\n private hideableFilterPlugins: Map = new Map();\n private filterDescriptorsValue!: FilterDescriptor[];\n private filtersLoaded = false;\n\n constructor(private pluginService: PluginService, trackingService: TrackingService, private filterCoordinatorService: FilterCoordinatorService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n this.filtersService?.reset();\n }\n\n public onHideableFiltersSelectionChanged(selectedItems: string[]): void {\n const displayedFilters: PluginItem[] = [];\n selectedItems.forEach((uniqueId) => {\n const plugin = this.hideableFilterPlugins.get(uniqueId);\n if (plugin) displayedFilters.push(plugin);\n });\n\n this.actualFilterPlugins = [...Array.from(this.alwaysVisibleFilterPlugins.values())];\n this.actualFilterPlugins.push(...displayedFilters);\n }\n\n public clearFilters(): void {\n this.filterCoordinatorService.resetAllFiltersToDefault();\n }\n\n public areFiltersCleared(): boolean {\n return this.filterCoordinatorService.allDefaulted;\n }\n\n private async loadFilters() {\n this.actualFilterPlugins = [];\n this.alwaysVisibleFilterPlugins = new Map();\n this.hideableFilterPlugins = new Map();\n\n // load filters only once\n if (!this.filtersLoaded) {\n this.allFilterPlugins = await this.pluginService.getPlugins(PluginTypes.Filter, null);\n this.filtersLoaded = true;\n }\n\n this.filterDescriptorsValue?.forEach((descriptor, index) => {\n const plugin = Object.assign(\n {},\n this.allFilterPlugins.find((x) => x.exposure.subSection?.equals(descriptor.type))\n );\n plugin.data = descriptor;\n\n if (plugin) {\n const uniqueId = SafeGuid.newGuid();\n\n if (descriptor.hideable) {\n this.hideableFilterPlugins.set(uniqueId.toString(), plugin);\n this.hideableFilters.push({ id: uniqueId.toString(), text: descriptor.label, isChecked: false } as ListItem);\n } else {\n this.alwaysVisibleFilterPlugins.set(uniqueId.toString(), plugin);\n }\n }\n });\n this.actualFilterPlugins = Array.from(this.alwaysVisibleFilterPlugins.values());\n }\n\n private async onDescriptorChanged() {\n await this.loadFilters();\n }\n}\n","\n
\n \n
\n {{ tickLabels[value] | translate }}\n
\n
\n
\n
\n {{ tick | translate }}\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { Gelato, MeltedIcon } from '@genetec/gelato-angular';\nimport { coerceBooleanProperty } from '@modules/shared/utilities/coerceBooleanProperty';\nimport { EnumAsString } from '@src/app/utilities/types';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-generic-slider',\n templateUrl: './generic-slider.component.html',\n styleUrls: ['./generic-slider.component.scss'],\n providers: [],\n})\nexport class GenericSliderComponent extends Gelato implements OnInit {\n @Input()\n public name: string;\n\n @Input()\n public valueEnumerationType: EnumAsString = MeltedIcon;\n\n @Input()\n public get sliderValue(): string {\n return this.tickLabels[this.value];\n }\n\n public set sliderValue(newValue: string) {\n const oldValue = this.value;\n\n // if needed, initialize the tick labels\n if (this.tickLabels.length === 0) {\n this.tickLabels = Object.values(this.valueEnumerationType);\n }\n\n this.value = this.tickLabels.findIndex((item) => item === newValue);\n if (this.value >= 0 && this.value !== oldValue) {\n this.updateValuePercentage();\n this.sliderValueChanged.emit(newValue);\n } else {\n // revert the change\n this.value = oldValue;\n }\n }\n\n @Output()\n public sliderValueChanged = new EventEmitter();\n\n /**\n * Whether a tooltip with the current value is displayed when hovering the knob.\n */\n @Input()\n public get genIsTooltipVisible(): boolean {\n return this.isTooltipVisible;\n }\n public set genIsTooltipVisible(value: boolean) {\n this.isTooltipVisible = coerceBooleanProperty(value);\n }\n\n public readonly TextFlavor = TextFlavor;\n\n public get tooltipPosition(): string {\n const val = this.value;\n const min = 0;\n const max = this.tickLabels.length - 1;\n const newVal = Number(((val - min) * 100) / (max - min));\n\n return `calc(${newVal}% + (${8 - newVal * 0.15}px))`;\n }\n\n public value = 0;\n\n // Fill Background\n public readonly normalFillColor = 'rgba(240, 240, 240, 0.3)'; // Background color of the fill in normal state\n public readonly hoverFillColor = 'rgb(0, 174, 239)'; // Background color of the fill when hovering\n public fillColor: string = this.normalFillColor; // Current fill background color\n public valuePercentage = 0; // Percentage used for the fill background\n\n public tickLabels: string[] = [];\n\n private isTooltipVisible = false;\n private readonly filterId: string = SafeGuid.newGuid().toString();\n\n constructor() {\n super();\n this.name = this.filterId;\n }\n\n public ngOnInit() {\n // initialize the slider payload information\n this.tickLabels = Object.values(this.valueEnumerationType);\n }\n public onPeriodSliderValueChanged(idx: number): void {\n if (idx && idx >= 0 && idx < this.tickLabels.length) {\n const currentTick = this.tickLabels[idx];\n this.sliderValue = currentTick;\n }\n }\n\n public onMouseEnter(): void {\n this.fillColor = this.hoverFillColor;\n }\n\n public onMouseLeave(): void {\n this.fillColor = this.normalFillColor;\n }\n\n private updateValuePercentage() {\n this.valuePercentage = (this.value * 100) / Math.max(this.tickLabels.length - 1, 1);\n }\n}\n","// Autogenerated: v2/help/enumerations/ApiLogonResult?codegen=ts&showresources=True on 2020-09-21 3:53:59 PM\n\nexport class LogonResult {\n public static Success = 'Success';\n public static Failure = 'Failure';\n public static InvalidServerVersion = 'InvalidServerVersion';\n public static ConnectionLost = 'ConnectionLost';\n public static NewConnection = 'NewConnection';\n public static NewBackupConnection = 'NewBackupConnection';\n public static InvalidCredentials = 'InvalidCredentials';\n public static InsufficientPrivileges = 'InsufficientPrivileges';\n public static InsufficientSecurityLevel = 'InsufficientSecurityLevel';\n public static ConnectionAttempt = 'ConnectionAttempt';\n public static OperationTimeout = 'OperationTimeout';\n public static LicenseError = 'LicenseError';\n public static UnableToRetrievePrivileges = 'UnableToRetrievePrivileges';\n public static UnableToIdentifyClientApplication = 'UnableToIdentifyClientApplication';\n public static NoAuthenticationAgent = 'NoAuthenticationAgent';\n public static TooManyAuthenticationAgents = 'TooManyAuthenticationAgents';\n public static AuthenticationAgentResponseTimeout = 'AuthenticationAgentResponseTimeout';\n public static AuthenticationAgentImportFailure = 'AuthenticationAgentImportFailure';\n public static UserAccountDisabledOrLocked = 'UserAccountDisabledOrLocked';\n public static UserAndSupervisorOnDifferentDomains = 'UserAndSupervisorOnDifferentDomains';\n public static AlreadyConnected = 'AlreadyConnected';\n public static PasswordExpired = 'PasswordExpired';\n public static SpecifyDomain = 'SpecifyDomain';\n public static DisallowedBySchedule = 'DisallowedBySchedule';\n public static ExceededNumberOfWorkstations = 'ExceededNumberOfWorkstations';\n public static CertificateRegistrationError = 'CertificateRegistrationError';\n public static PasswordComplexityInsufficient = 'PasswordComplexityInsufficient';\n public static InvalidSupervisor = 'InvalidSupervisor';\n public static SupervisorPasswordIsEmpty = 'SupervisorPasswordIsEmpty';\n public static CantSuperviseSelf = 'CantSuperviseSelf';\n public static DirectoryRedirect = 'DirectoryRedirect';\n public static LogonAborted = 'LogonAborted';\n public static MissingRequestUserChangePassordEvent = 'MissingRequestUserChangePassordEvent';\n public static LogonNegotiate = 'LogonNegotiate';\n public static DirectoryCertificateNotTrusted = 'DirectoryCertificateNotTrusted';\n public static SessionExpired = 'SessionExpired';\n public static InteractiveLogonRequired = 'InteractiveLogonRequired';\n public static InvalidServerEndpoint = 'InvalidServerEndpoint';\n public static BruteForceThrottling = 'BruteForceThrottling';\n public static DeniedByFirewall = 'DeniedByFirewall';\n public static ExternalPasswordExpired = 'ExternalPasswordExpired';\n\n public static readonly values = [\n LogonResult.Success,\n LogonResult.Failure,\n LogonResult.InvalidServerVersion,\n LogonResult.ConnectionLost,\n LogonResult.NewConnection,\n LogonResult.NewBackupConnection,\n LogonResult.InvalidCredentials,\n LogonResult.InsufficientPrivileges,\n LogonResult.InsufficientSecurityLevel,\n LogonResult.ConnectionAttempt,\n LogonResult.OperationTimeout,\n LogonResult.LicenseError,\n LogonResult.UnableToRetrievePrivileges,\n LogonResult.UnableToIdentifyClientApplication,\n LogonResult.NoAuthenticationAgent,\n LogonResult.TooManyAuthenticationAgents,\n LogonResult.AuthenticationAgentResponseTimeout,\n LogonResult.AuthenticationAgentImportFailure,\n LogonResult.UserAccountDisabledOrLocked,\n LogonResult.UserAndSupervisorOnDifferentDomains,\n LogonResult.AlreadyConnected,\n LogonResult.PasswordExpired,\n LogonResult.SpecifyDomain,\n LogonResult.DisallowedBySchedule,\n LogonResult.ExceededNumberOfWorkstations,\n LogonResult.CertificateRegistrationError,\n LogonResult.PasswordComplexityInsufficient,\n LogonResult.InvalidSupervisor,\n LogonResult.SupervisorPasswordIsEmpty,\n LogonResult.CantSuperviseSelf,\n LogonResult.DirectoryRedirect,\n LogonResult.LogonAborted,\n LogonResult.MissingRequestUserChangePassordEvent,\n LogonResult.LogonNegotiate,\n LogonResult.DirectoryCertificateNotTrusted,\n LogonResult.SessionExpired,\n LogonResult.InteractiveLogonRequired,\n LogonResult.InvalidServerEndpoint,\n LogonResult.BruteForceThrottling,\n LogonResult.DeniedByFirewall,\n LogonResult.ExternalPasswordExpired\n ];\n\n public static ResourceDict = new Map();\n static LogonResult() {\n this.ResourceDict.set('Success', 679);\n this.ResourceDict.set('Failure', 672);\n this.ResourceDict.set('InvalidServerVersion', 675);\n this.ResourceDict.set('ConnectionLost', 671);\n this.ResourceDict.set('NewConnection', 5144);\n this.ResourceDict.set('NewBackupConnection', 676);\n this.ResourceDict.set('InvalidCredentials', 674);\n this.ResourceDict.set('InsufficientPrivileges', 673);\n this.ResourceDict.set('InsufficientSecurityLevel', 9760);\n this.ResourceDict.set('ConnectionAttempt', 680);\n this.ResourceDict.set('OperationTimeout', 678);\n this.ResourceDict.set('LicenseError', 974);\n this.ResourceDict.set('UnableToRetrievePrivileges', 3958);\n this.ResourceDict.set('UnableToIdentifyClientApplication', 4193);\n this.ResourceDict.set('NoAuthenticationAgent', 2430);\n this.ResourceDict.set('TooManyAuthenticationAgents', 2429);\n this.ResourceDict.set('AuthenticationAgentResponseTimeout', 2431);\n this.ResourceDict.set('AuthenticationAgentImportFailure', 2438);\n this.ResourceDict.set('UserAccountDisabledOrLocked', 3936);\n this.ResourceDict.set('UserAndSupervisorOnDifferentDomains', 7785);\n this.ResourceDict.set('AlreadyConnected', 8536);\n this.ResourceDict.set('PasswordExpired', 7287);\n this.ResourceDict.set('SpecifyDomain', 7669);\n this.ResourceDict.set('DisallowedBySchedule', 7289);\n this.ResourceDict.set('ExceededNumberOfWorkstations', 7290);\n this.ResourceDict.set('CertificateRegistrationError', -1);\n this.ResourceDict.set('PasswordComplexityInsufficient', -1);\n this.ResourceDict.set('InvalidSupervisor', 7288);\n this.ResourceDict.set('SupervisorPasswordIsEmpty', 9437);\n this.ResourceDict.set('CantSuperviseSelf', 7576);\n this.ResourceDict.set('DirectoryRedirect', 8204);\n this.ResourceDict.set('LogonAborted', 8631);\n this.ResourceDict.set('MissingRequestUserChangePassordEvent', 8632);\n this.ResourceDict.set('LogonNegotiate', 11090);\n this.ResourceDict.set('DirectoryCertificateNotTrusted', 12097);\n this.ResourceDict.set('SessionExpired', -1);\n this.ResourceDict.set('InteractiveLogonRequired', 14028);\n this.ResourceDict.set('InvalidServerEndpoint', 14234);\n this.ResourceDict.set('BruteForceThrottling', 14397);\n this.ResourceDict.set('DeniedByFirewall', 14889);\n this.ResourceDict.set('ExternalPasswordExpired', 7287);\n }\n}\n","import { RestConnection } from '../../Connection/RestConnection';\n\nexport abstract class LogonInfo {\n public authorizationHeader = '';\n public directory = '';\n\n constructor(directory: string) {\n this.directory = directory;\n }\n}\n\nexport class BasicLogonInfo extends LogonInfo {\n public password: string;\n public username: string;\n\n constructor(directory: string, username: string, password: string) {\n super(directory);\n this.password = password;\n this.username = username;\n this.authorizationHeader = RestConnection.buildBasicAuthorizationHeader(username, password);\n }\n}\n\nexport class TokenLogonInfo extends LogonInfo {\n constructor(directory: string, token?: string) {\n super(directory);\n if (token && !token.startsWith('Token ') && !token.startsWith('LocalToken ')) {\n this.authorizationHeader = RestConnection.buildTokenAuthorizationHeader(token);\n } else {\n this.authorizationHeader = token ?? '';\n }\n }\n}\n","import 'reflect-metadata';\nimport { IGuid } from 'safeguid';\nimport { ModuleService } from '../../../services/module/module.service';\n\n/**\n * Used to identify and set properties for a module\n */\nexport interface ModuleDescriptor {\n type: Constructor;\n inclusions?: ModuleInclusions;\n}\n\ntype Constructor = new (...args: any[]) => T;\n\nexport interface ModuleInclusions {\n /**\n * Privileges that are included in the claims. Privileges are not mandatory for the module to be loaded.\n */\n globalPrivileges?: IGuid[];\n}\n\n// #region Decorators for modules\n/**\n * Metadata key to identify the data inserted using reflection for the ModuleDescriptor decorator\n */\nexport const MetadataKey = 'ModuleDescriptorMetadataKey';\nexport const ModuleDescriptor = (descriptor: ModuleDescriptor): ((constructor: new (...args: any[]) => any) => void) => {\n ModuleService.availableModules.push(descriptor.type);\n return (constructor: new (...args: any[]) => any) => {\n Reflect.defineMetadata(MetadataKey, descriptor, constructor);\n };\n};\n","import { Injectable, Type } from '@angular/core';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { MetadataKey, ModuleDescriptor } from '../../interfaces/modules/public/module-public.interface';\nimport { LoggerService } from '../logger/logger.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModuleService {\n //#region Fields\n\n public static availableModules: Type[] = [];\n\n //#endregion\n\n //#region Constructors\n\n constructor(private loggerService: LoggerService) {}\n\n //#endregion\n\n //#region Public Methods\n\n public getModulesGlobalPrivileges(): Set {\n const globalPrivileges = SafeGuid.createSet();\n\n for (const module of ModuleService.availableModules) {\n const descriptor = this.getModuleDescriptor(module);\n if (descriptor?.inclusions) {\n descriptor.inclusions.globalPrivileges?.forEach((item) => globalPrivileges.add(item));\n }\n }\n\n return globalPrivileges;\n }\n\n //#endregion\n\n //#region Private Methods\n\n private getModuleDescriptor(type: Type): ModuleDescriptor | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n return Reflect.getMetadata(MetadataKey, type.prototype.constructor) as ModuleDescriptor | undefined;\n } catch (e) {\n this.loggerService.traceError(`Unable to find module descriptor of module ${type.name}, details: ${(e as Error).message}`);\n }\n }\n\n //#endregion\n}\n","import { LogonResult } from 'RestClient/Client/Enumerations/LogonResult';\n\nexport class AuthenticationError extends Error {\n constructor(public type: LogonResult, message?: string) {\n super(message);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { LogonResult } from 'RestClient/Client/Enumerations/LogonResult';\nimport { BasicLogonInfo, LogonInfo, TokenLogonInfo } from 'RestClient/Client/Parameters/LogonInfo';\nimport * as Helpers from 'RestClient/Helpers/Helpers';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { Constants } from '@src/constants';\nimport { PasswordConstraints } from '@modules/shared/models/logon-result-password-constraints';\nimport { ModuleService } from '@modules/shared/services/module/module.service';\nimport { UserLogin } from '@src/app/components/login/user-login.model';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { WINDOW } from '@utilities/common-helper';\nimport { SecurityCenterClientService } from '../client/security-center-client.service';\nimport { AuthenticationError } from './models/authentication-error';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n public static readonly defaultTimeout = 20000;\n public loginRedirectUrl: string | undefined;\n public loginStatus = '';\n public isLoggingOn = false;\n public isExpired = false;\n public isLoggingIn = false;\n public passwordConstraint?: PasswordConstraints;\n public userDirectory = '';\n\n private isLoggingOut = false;\n\n public get loggedIn$(): Observable {\n return this.loggedIn.asObservable();\n }\n\n private securityCenterClient: WebAppClient;\n private loggedIn: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string,\n private router: Router,\n private scProvider: SecurityCenterClientService,\n moduleService: ModuleService,\n pluginService: PluginService,\n private translateService: TranslateService,\n @Inject(WINDOW) private window: Window\n ) {\n this.isLoggingOn = true;\n this.securityCenterClient = scProvider?.scClient;\n this.securityCenterClient.onLogonStateChanged((logonState) => {\n this.loggedIn.next(logonState.loggedOn());\n\n // we may re-logging in, and we only want to state we're not logging on if we're any of the other known states\n this.isLoggingOn = logonState.state === LogonState.ReloggingOn;\n\n if (logonState.state === LogonState.LoggedOff) {\n this.loginRedirectUrl = this.router.url; // Memorize current page path.\n }\n });\n\n this.securityCenterClient.requestedPrivileges = Array.from(pluginService.getPluginsGlobalPrivileges(), (item) => item.toString()).concat(\n Array.from(moduleService.getModulesGlobalPrivileges(), (item) => item.toString())\n );\n\n this.initialLoginLogic();\n }\n\n public initialLoginLogic(): void {\n this.logInWithTokenAsync().catch(() => {\n this.scProvider.resetToken(); // clear the local authentication token as it isn't valid\n this.loginStatus = ''; // even if it fails, first request must not show anything\n this.isLoggingOn = false;\n });\n\n this.pollSessionAlive();\n this.bypassTabDuplicateSessionStorage();\n }\n\n public getConnectionHeaders(): Map | null {\n try {\n if (this.securityCenterClient?.rest !== null) {\n const headers = new Map();\n headers.set('Authorization', this.securityCenterClient.rest.authorizationHeader);\n for (const [key, value] of this.securityCenterClient.rest.additionalHeaders) {\n headers.set(key, value);\n }\n return headers;\n }\n } catch {\n // for _some_ reason, we throw an exn if the rest property ^ is null, which is weird...\n }\n return null;\n }\n\n public logInWithCredentialsAsync(userLogin: UserLogin, cancelToken?: Helpers.CancellationToken): Promise {\n const loginInfo = new BasicLogonInfo(this.baseUrl, userLogin.username.value.trim(), userLogin.password.value);\n return this.logInAsync(loginInfo, cancelToken);\n }\n\n public logInWithTokenAsync(cancelToken?: Helpers.CancellationToken): Promise {\n const loginInfo = new TokenLogonInfo(this.baseUrl);\n return this.logInAsync(loginInfo, cancelToken);\n }\n\n public async logInAsync(userLogin: LogonInfo, cancelToken?: Helpers.CancellationToken): Promise {\n try {\n this.loginStatus = '';\n let token = cancelToken;\n // ensure we have a cancellation token\n if (!token) {\n token = new Helpers.CancellationToken();\n }\n const response = await this.securityCenterClient.logonAsync(userLogin, token);\n\n this.passwordConstraint = response.passwordConstraints as PasswordConstraints | undefined;\n this.userDirectory = userLogin.directory;\n\n if (response.cancelled === true) {\n const timeout = this.translateService.instant('STE_MESSAGE_ERROR_OPERATIONTIMEOUT') as string;\n this.loginStatus = timeout;\n throw new Error(timeout);\n }\n if (response.statusCode !== 200) {\n const error = this.getLogonResultErrorString(response.logonResult, response.statusCode, response.body as string);\n this.loginStatus = error;\n throw new AuthenticationError(response.logonResult, error);\n } else {\n // logon succeeded, clear the error\n this.loginStatus = '';\n }\n } catch (e: unknown) {\n this.scProvider.resetUniqueAppId();\n throw e instanceof Error ? e : new Error(typeof e === 'string' ? e : undefined);\n }\n\n if (this.loginRedirectUrl !== undefined) {\n await this.router.navigateByUrl(this.loginRedirectUrl);\n }\n }\n\n public async logOutAsync(): Promise {\n if (this.isLoggingOut) return;\n try {\n this.isLoggingOut = true;\n this.scProvider.resetUniqueAppId();\n this.scProvider.resetToken();\n this.loggedIn.next(false);\n if (await this.getIsAuthenticatedWithOpenIdAsync()) {\n window.location.href = `${this.baseUrl}api/Session/SignoutOpenid/?redirectUri=${encodeURIComponent(window.location.href)}`;\n } else {\n await this.securityCenterClient.logoffAsync();\n }\n } finally {\n this.isLoggingOut = false;\n }\n }\n\n public getIsAuthenticatedWithOpenIdAsync(): Promise {\n try {\n return this.securityCenterClient.getIsAuthenticatedWithOpenIdAsync();\n } catch (e) {\n return Promise.resolve(false);\n }\n }\n\n public isSigningIn(bool: boolean): void {\n this.isLoggingIn = bool;\n }\n\n private getLogonResultErrorString(logonResult: string, statusCode: number, responseBody: string): string {\n switch (logonResult) {\n case LogonResult.InvalidCredentials:\n return this.translateService.instant('STE_MESSAGE_ERROR_INVALIDCREDENTIALS') as string;\n\n case LogonResult.InsufficientPrivileges:\n return this.translateService.instant('STE_MESSAGE_ERROR_INSUFFICIENTPRIVILEGES') as string;\n\n case LogonResult.InvalidServerVersion:\n return this.translateService.instant('STE_MESSAGE_ERROR_INVALIDSERVERVERSION') as string;\n\n case LogonResult.OperationTimeout:\n return this.translateService.instant('STE_MESSAGE_ERROR_OPERATIONTIMEOUT') as string;\n\n case LogonResult.LicenseError:\n return this.translateService.instant('STE_MESSAGE_ERROR_LICENSEERROR') as string;\n\n case LogonResult.NoAuthenticationAgent:\n return this.translateService.instant('STE_MESSAGE_ERROR_NOAUTHENTICATIONAGENT') as string;\n\n case LogonResult.PasswordExpired:\n return this.translateService.instant('STE_MESSAGE_ERROR_PASSWORDEXPIRED') as string;\n\n case LogonResult.UserAccountDisabledOrLocked:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_ACCOUNT_DISABLED_OR_LOCKED') as string;\n\n case LogonResult.DisallowedBySchedule:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_DISALLOWEDBYSCHEDULE') as string;\n\n case LogonResult.InsufficientSecurityLevel:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_INSUFFICIENT_SECURITY_LEVEL') as string;\n\n case LogonResult.InvalidSupervisor:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_SUPERVISORREQUIRED') as string;\n\n case LogonResult.SupervisorPasswordIsEmpty:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_SUPERVISORPASSWORDEMPTY') as string;\n\n case LogonResult.CantSuperviseSelf:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_CANTSUPERVISESELF') as string;\n\n case LogonResult.ExceededNumberOfWorkstations:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_EXCEEDEDWORKSATIONS') as string;\n\n case LogonResult.TooManyAuthenticationAgents:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_TOO_MANY_AUTHENTICATION_AGENTS') as string;\n\n case LogonResult.UserAndSupervisorOnDifferentDomains:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_USERSUPERVISORDIFFERENTDOMAIN') as string;\n\n case LogonResult.SpecifyDomain:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_SPECIFYDOMAIN') as string;\n\n case LogonResult.InteractiveLogonRequired:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_INTERACTIVELOGONREQUIRED') as string;\n\n case LogonResult.DeniedByFirewall:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_OPERATION_DENIED_BY_FIREWALL') as string;\n\n case LogonResult.AuthenticationAgentResponseTimeout:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_AUTHENTICATION_AGENT_RESPONSE_TIMEOUT') as string;\n\n case LogonResult.BruteForceThrottling:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_USERTEMPORARYLOCKED') as string;\n\n case LogonResult.AlreadyConnected:\n return this.translateService.instant('STE_MESSAGE_ERROR_LOGIN_ALREADYCONNECTED') as string;\n\n default:\n if (responseBody === LogonResult.LicenseError) {\n return this.translateService.instant('STE_MESSAGE_ERROR_LICENSEERROR') as string;\n }\n\n return (this.translateService.instant('STE_LABEL_LOGONFAILED') as string) + ' (' + (logonResult ? logonResult + ', ' : '') + statusCode.toString() + ')';\n }\n }\n\n /** Gets a value from the local storage indicating if the authentication token was defined. The auth token is set in an httpOnly cookie, so the client cannot inspect the cookie.\n * Local storage is shared across the session, so if a user has more than 1 tab open, all tabs can rely on this value to know if they should log out or not.\n */\n private isAuthTokenSet(): boolean {\n return this.window.localStorage.getItem(Constants.isWebAppTokenSet) !== null;\n }\n\n /** Whenever local storage settings are modified, checks whether the WebApp token is set. If not, performs a logoff on all tabs, otherwise performs in implicit login (using auth token). */\n private pollSessionAlive(): void {\n this.window.addEventListener('storage', () => {\n this.loggedIn$.pipe(take(1)).subscribe(async (isLoggedIn: boolean) => {\n //If we're not logged on, but the token is valid, refresh the page to log back in (the user probably logged back on in another tab)\n if (!isLoggedIn && this.isAuthTokenSet() && !this.isLoggingOn && !this.isLoggingOut) {\n this.isLoggingOn = true;\n await this.logInWithTokenAsync();\n return;\n }\n\n //If we're already logged in, but the token is invalid, log out the user immediately\n if (!this.isAuthTokenSet() && isLoggedIn) {\n this.isLoggingOn = false;\n await this.logOutAsync();\n }\n });\n });\n }\n\n //Only on Chrome browser, duplicating a tab copies the session storage to the new tab, causing both tabs to have the same unique App ID\n //This causes the first user to be logged out, so to prevent it we need to reset the app id when duplicating a tab\n private bypassTabDuplicateSessionStorage() {\n const lockName = '__lock__unique__app__id';\n\n this.window.addEventListener('beforeunload', (event) => {\n sessionStorage.removeItem(lockName);\n });\n\n if (sessionStorage.getItem(lockName)) {\n this.scProvider.resetUniqueAppId();\n }\n\n sessionStorage.setItem(lockName, '1');\n }\n}\n","import { AfterViewInit, Input, ViewChild } from '@angular/core';\nimport { Component, OnInit, OnDestroy, Injector } from '@angular/core';\nimport { GenMeltedModal, GenMeltedModalComponent } from '@genetec/gelato-angular';\nimport { Subject } from 'rxjs';\nimport { TrackingService } from '../../services/tracking.service';\n\n@Component({\n selector: 'app-tracked-gen-modal-base-component',\n template: '',\n})\nexport class TrackedGenModalBaseComponent extends GenMeltedModal implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n @Input() hiddenOnInit?: boolean;\n\n public result$ = new Subject();\n protected name!: string;\n\n constructor(protected injector: Injector, protected trackingService: TrackingService) {\n super();\n\n this.name = this.constructor.name;\n }\n\n public getModalInstance(): GenMeltedModalComponent {\n return this.genModalComponent;\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n this.trackingService.addActiveComponent(this.name);\n }\n\n public ngAfterViewInit(): void {\n super.ngAfterViewInit();\n if (this.hiddenOnInit) {\n this.genModalComponent.hide();\n }\n }\n\n public ngOnDestroy(): void {\n this.trackingService.removeActiveComponent(this.name);\n }\n\n protected emitResult(result?: T): void {\n this.result$.next(result);\n }\n\n protected async logAction(actionDescription: string): Promise {\n await this.trackingService.logActionAsync({ name: actionDescription, originComponent: this.name });\n }\n}\n\n@Component({\n selector: 'app-tracked-gen-modal-component',\n template: '',\n})\nexport class TrackedGenModalComponent extends TrackedGenModalBaseComponent {}\n","import { AfterViewInit, Component, Injector, OnInit, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TrackedGenModalBaseComponent } from '@modules/shared/components/tracked/tracked-gen-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({ template: '' })\nexport abstract class TypedConnectionAwareModalComponent extends TrackedGenModalBaseComponent implements AfterViewInit, OnInit, OnDestroy {\n protected loggedIn$?: Observable;\n\n constructor(protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(injector, trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n if (!this.loggedIn$) {\n this.loggedIn$ = this.authService.loggedIn$;\n }\n // Lookout for loggedIn state change\n this.loggedIn$.pipe(untilDestroyed(this)).subscribe((isLoggedIn: boolean) => {\n if (!isLoggedIn) {\n // Close modal if no longer logged in\n this.hideModal();\n }\n });\n }\n\n public hideModal(): void {\n this.genModalComponent?.hide();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n@Component({ template: '' })\nexport abstract class ConnectionAwareModalComponent extends TypedConnectionAwareModalComponent {}\n","\n \n
\n \n
\n
\n\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { GenMeltedModalComponent } from '@genetec/gelato-angular';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ImageFit, ImageFlavor } from '@genetec/gelato';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { ConnectionAwareModalComponent } from '../tracked/connection-aware-modal.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-image-viewer-modal',\n templateUrl: './image-viewer-modal.component.html',\n styleUrls: ['./image-viewer-modal.component.scss'],\n})\nexport class ImageViewerModalComponent extends ConnectionAwareModalComponent implements OnInit {\n //#region Fields\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n @Input()\n public image: string | null = null;\n\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n\n //#endregion\n\n //#region Constructor\n\n constructor(protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n }\n\n //#endregion\n\n //#region Methods\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { SafeGuid } from 'safeguid';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PluginTypes } from '../../interfaces/plugins/public/plugin-types';\nimport { PluginService } from '../plugin/plugin.service';\nimport { GlobalSearchContext, ISearchResult, SearchClient, SearchContext, SearchResult, SearchResultItem } from '../../api/api';\n\nexport class SearchResultGroup {\n public header: string;\n public groupName: string;\n public results: SearchResultItem[] = [];\n\n constructor(result: ISearchResult) {\n this.groupName = result.groupName ?? '';\n\n result.results.forEach((x) => {\n // Recreate the SearchResultItem to ensure all the field are set\n const item = new SearchResultItem({\n id: x.id,\n title: x.title,\n priority: x.priority,\n navigation: x.navigation ?? '',\n icon: (x.icon as MeltedIcon) ?? MeltedIcon.None,\n });\n\n this.results.push(item);\n });\n\n const title = result.groupName;\n const total = result.total;\n const resultsCount = result.results.length;\n this.header = title ?? '';\n if (resultsCount > 0) {\n // build the header string\n if (resultsCount <= 5 || resultsCount === total) {\n this.header = title ?? '';\n } else if (result.hasMore) {\n this.header = `${title || ''} (${resultsCount} / ${total}+)`;\n } else {\n this.header = `${title || ''} (${resultsCount} / ${total})`;\n }\n }\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SearchService {\n private searchStartSubject = new Subject();\n //#region Constructors\n\n constructor(private translateService: TranslateService, private pluginService: PluginService, private searchClient: SearchClient) {}\n\n //#endregion\n\n //#region Public Methods\n\n public async getSearchResults(context: SearchContext): Promise {\n const results: SearchResultGroup[] = [];\n this.searchStartSubject.next();\n const searchResults = await this.searchClient.getSearchResults(context).pipe(takeUntil(this.searchStartSubject)).toPromise();\n\n // ensure we have a search results to fill the client-side results\n if (searchResults) {\n searchResults.forEach((x) => results.push(new SearchResultGroup(x)));\n }\n\n if (context instanceof GlobalSearchContext) {\n const text = context.text;\n const taskPlugins = await this.pluginService.getPlugins(PluginTypes.Task);\n if (taskPlugins !== null) {\n const taskResults: SearchResultItem[] = [];\n\n for (const plugin of taskPlugins) {\n const exposure = plugin.exposure;\n if (exposure !== null) {\n let contains = false;\n const key = text.toLowerCase();\n\n const tags = exposure.tags;\n if (tags != null) {\n // compare the tags\n for (const tag of tags) {\n // support translations\n // Since tags are not shown in the ui, use the 'startsWith' operator instead of 'includes'.\n // Otherwise, searching for 'al' would match the Tiles task that has the 'wall' tag.\n if ((tag.startsWith('STE_') ? (this.translateService.instant(tag) as string) : tag).toLowerCase().startsWith(key)) {\n contains = true;\n break;\n }\n }\n }\n\n let title = '';\n if (exposure.title) {\n title = this.translateService.instant(exposure.title) as string;\n\n // also check if we fit with the title\n if (title.toLocaleLowerCase().includes(key)) {\n contains = true;\n }\n }\n\n if (contains) {\n const item = new SearchResultItem();\n item.id = SafeGuid.from(exposure.id);\n item.title = title;\n item.navigation = `/task/${exposure.id.toString()}`;\n if (exposure.icon) {\n item.icon = exposure.icon;\n } else {\n item.icon = MeltedIcon.None;\n }\n taskResults.push(item);\n }\n }\n }\n\n // embed the client side results\n if (taskResults.length > 0) {\n const sr = new SearchResult();\n sr.groupName = this.translateService.instant('STE_LABEL_TASKS') as string;\n sr.hasMore = false;\n sr.total = taskResults.length;\n sr.results = Array.from(taskResults);\n results.push(new SearchResultGroup(sr));\n }\n }\n }\n\n return results;\n }\n\n //#endregion\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport const SharedCommands = Constants({\n // TODO YN: for now only one file for all, must be separated by modules\n AddBookmark: SafeGuid.parse('A25E9C64-487C-40BF-8A0A-CF2308E8C85D'),\n ClearTiles: SafeGuid.parse('840F2AE8-CD63-4CC2-B78E-F35E92D85995'),\n ClearTile: SafeGuid.parse('C8813FAF-9AB9-4824-9A42-98FEE439AF17'),\n DisplayEntities: SafeGuid.parse('D8603B2B-95E6-4728-A35A-060EFE6F40E2'),\n ExpandTile: SafeGuid.parse('F815358D-B9ED-4446-A1F6-D459B71F53BB'),\n ExportVideo: SafeGuid.parse('B8FBAF72-F7BA-4EF4-8082-6A196CB863B5'),\n FastForward: SafeGuid.parse('8940EDC3-F558-4637-9DC0-C2DA587D1F49'),\n MaximizeTileFullscreen: SafeGuid.parse('DFD9A3AF-60CD-4EE2-8526-232EFF9CCF23'),\n PauseVideo: SafeGuid.parse('5DFC0518-88F8-43B6-A50E-030E67567341'),\n PlayVideo: SafeGuid.parse('F92407D8-8E74-4FE3-A061-80889F7736BC'),\n PtzStartPanTilt: SafeGuid.parse('580E4C7F-BD2C-4F10-B66C-F5CE42EE0C2B'),\n PtzStopPanTilt: SafeGuid.parse('DFB8EDBC-5DD9-470A-8E8E-533ED1A3B5E9'),\n Rewind: SafeGuid.parse('249F3B04-6848-4737-86DD-FDD857ECD7B0'),\n SaveSnapshot: SafeGuid.parse('7D62085F-BDD7-479A-ADD7-9167DA79147A'),\n ShowVideoDiagnostics: SafeGuid.parse('A4E46E65-778B-4FA3-99B8-71C9F6DC59E6'),\n ShowOptions: SafeGuid.parse('BD68DF2F-38CB-4FFF-B794-B8EBADC49F89'),\n Search: SafeGuid.parse('70C4D823-FCD1-4D5D-8F85-2D352DF024EC'),\n SelectNextTile: SafeGuid.parse('CD9FEF50-57A1-4F60-8258-9F43B4D7DD6C'),\n SelectPreviousTile: SafeGuid.parse('E33463D5-C159-46AA-8E5C-03E2B3FA2DDA'),\n ShowMessage: SafeGuid.parse('C4D42245-BEC3-4893-9767-66110B699C9E'),\n SlowMotion: SafeGuid.parse('BACF9DE9-ABC2-4277-83D7-965C6636D011'),\n StartStopRecording: SafeGuid.parse('46D7A08B-BE2B-424F-A890-8F1422011258'),\n ToggleListen: SafeGuid.parse('44737E74-1FD5-4A93-9E69-DBE87F1D4385'),\n ShareEntity: SafeGuid.parse('2E13993E-8F7A-4CDA-ADF4-E3CD6F46052A'),\n SendMessage: SafeGuid.parse('3B009589-0527-43D1-913A-2BF4238102F4'),\n CloseNavBar: SafeGuid.parse('31DF55A0-103F-4114-B8F2-C4EF9B8908B9'),\n ToggleAddToWatchlist: SafeGuid.parse('9678DF87-3AA5-4788-90D2-3069AC9D6A2D'),\n ToggleMaximizeVideo: SafeGuid.parse('AFEB6FF4-B3EF-4E44-BB08-032743C573C1'),\n MinimizeVideo: SafeGuid.parse('9EB2FC41-715C-4DCF-AA2E-8CF74A978CAF'),\n});\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[appAutoFocus]',\n})\nexport class AutoFocusDirective implements AfterViewInit {\n constructor(private host: ElementRef) {}\n\n ngAfterViewInit() {\n setTimeout(() => {\n (this.host.nativeElement as HTMLElement).focus();\n }, 100);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { debounce, DebouncedFunc } from 'lodash-es';\n/**\n * Adds a debouncer to the _ngModelChange_ event.\n */\n@Directive({\n selector: '[ngModel][appDebounce]',\n providers: [\n {\n provide: NgControl,\n useExisting: NgModel,\n },\n ],\n})\nexport class DebounceDirective extends NgModel {\n public static ngAcceptInputType_appDebounce: string | number;\n public static DefaultDebounceTime = 1000;\n private debouncedViewToModelUpdate?: DebouncedFunc<(value: unknown) => void> = debounce(super.viewToModelUpdate.bind(this), DebounceDirective.DefaultDebounceTime);\n @Input()\n set appDebounce(debouncetime: number) {\n if (debouncetime > 0) {\n this.debouncedViewToModelUpdate = debounce(super.viewToModelUpdate.bind(this), debouncetime);\n } else {\n delete this.debouncedViewToModelUpdate;\n }\n }\n public viewToModelUpdate(newValue: unknown): void {\n if (this.debouncedViewToModelUpdate) {\n this.debouncedViewToModelUpdate(newValue);\n } else {\n super.viewToModelUpdate(newValue);\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appKeydownStopPropagation]',\n})\nexport class KeydownStopPropagationDirective {\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild, ElementRef, Inject } from '@angular/core';\nimport { GenSearchInputItem, GenTextInput, MeltedIcon } from '@genetec/gelato-angular';\nimport { Observable } from 'rxjs';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { SafeGuid } from 'safeguid';\nimport { SearchResultGroup, SearchService } from '../../services/search/search.service';\nimport { TrackingService } from '../../services/tracking.service';\nimport { TrackedComponent } from '../tracked/tracked.component';\nimport { COMMANDS_SERVICE } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '../../services/commands/commands.service';\nimport { SharedCommands } from '../../enumerations/shared-commands';\nimport { GlobalSearchContext } from '../../api/api';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-main-search',\n templateUrl: './main-search.component.html',\n styleUrls: ['./main-search.component.scss'],\n})\nexport class MainSearchComponent extends TrackedComponent implements OnInit {\n //#region Fields\n\n @Input() public clearText?: Observable;\n\n @Output() public searchResultsChange = new EventEmitter(); // Empty array means no results, whereas null means \"didn't search\" (search text is null)\n\n @Output() public isSearchingChange = new EventEmitter(); // In case the outside control wants to show loading feedback while searching\n\n @Output() public focusEvent = new EventEmitter();\n\n @ViewChild('mainTextInput') public mainTextInput!: GenTextInput;\n @ViewChild('mainTextInput', { read: ElementRef }) public mainTextInputElement!: ElementRef;\n\n public isMainSearchReady = false;\n\n public searchText = '';\n\n private lastSearchInstanceId = SafeGuid.EMPTY;\n\n //#endregion\n\n //#region Constructor\n\n constructor(private searchService: SearchService, trackingService: TrackingService, @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService) {\n super(trackingService);\n }\n\n //#endregion\n\n //#region Methods\n\n ngOnInit() {\n // Wait until other elements load before showing the main search so it gets the focus\n setTimeout(() => (this.isMainSearchReady = true));\n\n this.clearText?.pipe(untilDestroyed(this)).subscribe(() => {\n this.searchText = '';\n this.searchResultsChange.emit(null);\n });\n }\n\n public clear(): void {\n this.mainTextInput.value = '';\n }\n\n public focus(): void {\n setTimeout(() => {\n const element = this.mainTextInputElement?.nativeElement as HTMLElement | undefined | null;\n if (element) {\n element.focus();\n\n // the first try might not work, in that case, try again will a slightly longer delay\n if (document.activeElement !== element) {\n setTimeout(() => {\n element.focus();\n }, 500);\n }\n }\n }, 300);\n }\n\n public closeSidePane(): void {\n this.commandsService.executeCommand(SharedCommands.CloseNavBar);\n }\n\n public onFocus(): void {\n this.focusEvent.emit();\n }\n\n //#endregion\n\n //#region Event Handlers\n\n public async onSearchTextChange(searchText: string): Promise {\n this.searchText = searchText;\n if (searchText.length > 0) {\n const currentSearchId = SafeGuid.newGuid();\n this.lastSearchInstanceId = currentSearchId;\n\n this.isSearchingChange.emit(true);\n const searchResults = await this.search(searchText);\n\n if (currentSearchId.equals(this.lastSearchInstanceId)) {\n this.isSearchingChange.emit(false);\n this.searchResultsChange.emit(searchResults);\n }\n } else {\n this.searchResultsChange.emit(null);\n }\n }\n\n //#endregion\n\n //#region Private methods\n\n private async search(searchText: string): Promise> {\n let searchResults: Array = [];\n if (searchText.length > 0) {\n const context = new GlobalSearchContext();\n context.text = searchText;\n searchResults = await this.searchService.getSearchResults(context);\n }\n return searchResults;\n }\n}\n\nexport class SearchResultItem implements GenSearchInputItem {\n public text!: string;\n public id!: string;\n public icon?: MeltedIcon;\n public secondaryText?: string;\n public groupName?: string;\n public navigation?: string;\n}\n","
\n \n \n
\n","\n \n \n \n \n \n \n {{ item.text }} \n \n \n \n \n \n \n \n {{ child.text }}\n {{ child.secondaryText }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ item.text }}\n {{ item.secondaryText }}\n \n \n \n \n\n","/* eslint-disable no-underscore-dangle */\nimport { Component, Input } from '@angular/core';\nimport { ItemSlot, TextFlavor } from '@genetec/gelato';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { Separator } from '@shared/interfaces/context-menu-item/menu-separator';\n/**\n * This component is used to render inside a gen menu. You can either use the ContextMenuFactory to create your popup, or go the declarative way and\n * use .\n */\n@Component({\n selector: 'app-menu-item',\n templateUrl: './menu-item.component.html',\n})\nexport class MenuItemsComponent {\n @Input() public dataSource?: ContextMenuItem[];\n\n public readonly ItemSlot = ItemSlot;\n public readonly TextFlavor = TextFlavor;\n public readonly MeltedIcon = MeltedIcon;\n public readonly Separator = Separator;\n\n constructor() {}\n\n public getKeysIn(item: ContextMenuItem): string[] {\n return Object.keys(item);\n }\n\n /**\n * Attempts to extract the canExecute function of the actionItem. If there is none, defaults to true.\n *\n * @param item MenuItem on which to run the test\n * @returns whether or not the execute function can be called. Defaults to true.\n */\n public canExecute(item: ContextMenuItem): boolean {\n return item.actionItem?.canExecute?.() ?? true;\n }\n\n /**\n * Greys out the MenuItem if this returns false. Actives the MenuItem otherwise. Defaults to true.\n *\n * @param item MenuItem on which to run the test\n * @returns whether or not the user has sufficient privileges for the execute function to be called. Defaults to true.\n *\n */\n public isAllowed(item: ContextMenuItem): boolean {\n return item.actionItem?.isAllowed?.() ?? true;\n }\n\n /**\n * If the MenuItem has an execute function defined, AND if it isAllowed and canExecute, then call the execute function.\n *\n * @param item MenuItem on which to call the execute function.\n */\n public execute(item: ContextMenuItem): void {\n if (item.actionItem?.execute) {\n if (this.isAllowed(item) && this.canExecute(item)) {\n item.actionItem.execute(item);\n }\n }\n }\n}\n","
\n
\n \n
\n
\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Gelato } from '@genetec/gelato-angular';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { take } from 'rxjs/operators';\nimport { PluginItem } from '../../../interfaces/plugins/internal/pluginItem';\nimport { ContextTypes } from '../../../interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandsUsageCollection } from '../../../services/commands/commands-usage/commands-usage-collection';\nimport { InternalCommandsService } from '../../../services/commands/commands.service';\nimport { PluginHostClickEvent } from '../plugin-host.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-multi-plugin-host',\n templateUrl: './multi-plugin-host.component.html',\n styleUrls: ['./multi-plugin-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiPluginHostComponent extends Gelato implements OnInit, OnDestroy {\n @Input() public pluginItems: PluginItem[] | null = [];\n @Input() public dataContext: any;\n\n @Input() public maxWidth: number | undefined = undefined;\n @Input() public maxHeigth: number | undefined = undefined;\n @Input() public captureContextMenu = true;\n\n @Input() public mainClass = '';\n @Input() public pluginsHostClassName = '';\n @Input() public pluginHostClassName = '';\n\n @Input() public supportStackedPlugins = true;\n\n @Output() public pluginClick = new EventEmitter();\n /**\n * Emits **true** if the context menu for one of the plugin opens, emits **false** it closes.\n */\n @Output() public contextMenu = new EventEmitter();\n\n private commandsUsages = new CommandsUsageCollection();\n\n constructor(private hostElement: ElementRef, @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService) {\n super();\n }\n\n @HostListener('contextmenu', ['$event']) public onContextMenuRequested(mouseEvent: MouseEvent): void {\n if (this.captureContextMenu) {\n this.showCommands(mouseEvent).fireAndForget();\n\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n }\n\n ngOnDestroy(): void {\n this.commandsUsages.clear();\n }\n\n ngOnInit() {\n if (!this.maxHeigth) {\n this.pluginsHostClassName = this.supportStackedPlugins ? 'plugins-host' : 'plugins-host-no-stack';\n this.pluginHostClassName = 'plugin-host';\n }\n }\n\n public onClicked(clickEvent: PluginHostClickEvent): void {\n this.pluginClick.emit(clickEvent);\n }\n\n private async showCommands(mouseEvent: MouseEvent) {\n // Manage ourselves the context menu if capture context is on, since we want to gather all plugins commands by specifying a target\n // else, the active target (i.e. tiles) will receive the command if same plugin as been spawned there...\n this.commandsUsages.clear();\n\n for (const pluginItem of this.pluginItems ?? []) {\n this.commandsUsages.addUsage(\n await this.commandsService.getCommandsUsage(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n { type: ContextTypes.Content, data: pluginItem.data },\n pluginItem?.exposure?.availableCommands,\n false,\n this.hostElement.nativeElement\n )\n );\n }\n\n if (this.commandsService.showContextMenu(mouseEvent, await this.commandsUsages.createContextMenuItemsAsync())) {\n this.contextMenu.emit(true);\n\n // Emit context menu hide for this plugin host next time the context menu hides\n this.commandsService.onContextMenuHide$.pipe(take(1), untilDestroyed(this)).subscribe(() => {\n this.contextMenu.emit(false);\n });\n }\n }\n}\n","
\n
\n \n \n \n
\n\n \n\n
\n \n \n \n
\n
\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Icon, IconSize } from '@genetec/gelato';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { PluginItem } from '../../../interfaces/plugins/internal/pluginItem';\nimport { Content } from '../../../interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '../../../services/tracking.service';\nimport { TrackedComponent } from '../../tracked/tracked.component';\nimport { MultiPlugin } from '../multi-plugin';\nimport { PluginHostClickEvent } from '../plugin-host.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport interface ExpansionInfo {\n delay: number;\n isPermanent: boolean;\n notifyIfNotExpandedDelay: number | undefined;\n pluginType: IGuid;\n compactPluginType: IGuid;\n}\n\n@Component({\n selector: 'app-navigation-plugin-host',\n templateUrl: './navigation-plugin-host.component.html',\n styleUrls: ['./navigation-plugin-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavigationPluginHostComponent extends TrackedComponent implements OnInit {\n @Input() public contextDataPlugins: MultiPlugin[] | undefined = [];\n @Input() public dataContext: any;\n\n @Input() public mainClass = '';\n @Input() public pluginsHostClassName = '';\n @Input() public pluginHostClassName = '';\n @Input() public maxWidth: number | undefined = undefined;\n @Input() public maxHeigth: number | undefined = undefined;\n @Input() public captureContextMenu = true;\n @Input() public supportStackedPlugins = true;\n @Input() public hideNavigationArrows = false;\n\n @Output() public pluginClick = new EventEmitter();\n /**\n * Emits **true** if the context menu for one of the plugin opens, emits **false** it closes.\n */\n @Output() public contextMenu = new EventEmitter();\n @Output() public displayedPluginsChanged = new EventEmitter();\n\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n\n public displayedPlugins$: Observable;\n public leftNavigationTitle = '';\n public rightNavigationTitle = '';\n\n private selectedIndex = 0;\n private displayedPluginsSubject$ = new BehaviorSubject([]);\n\n constructor(trackingService: TrackingService, private changeDetectorRef: ChangeDetectorRef) {\n super(trackingService);\n this.displayedPlugins$ = this.displayedPluginsSubject$.asObservable();\n }\n\n ngOnInit() {\n if (this.contextDataPlugins) {\n this.setDisplayedPlugin(this.contextDataPlugins[this.selectedIndex]);\n }\n\n this.updateNavigationTitle();\n }\n\n public onNavigatePlugin(left: boolean, event: Event): void {\n if (event) {\n event.stopPropagation();\n }\n\n if (this.contextDataPlugins) {\n if (left) {\n this.selectedIndex -= 1;\n if (this.selectedIndex < 0) {\n this.selectedIndex = this.contextDataPlugins.length - 1;\n }\n } else {\n this.selectedIndex += 1;\n if (this.selectedIndex >= this.contextDataPlugins.length) {\n this.selectedIndex = 0;\n }\n }\n\n this.displayedPluginsSubject$.next([]);\n this.setDisplayedPlugin(this.contextDataPlugins[this.selectedIndex]);\n }\n\n this.updateNavigationTitle();\n }\n\n public canNavigate(): boolean {\n if (this.contextDataPlugins && this.contextDataPlugins.length > 1) {\n return true;\n }\n return false;\n }\n\n public onClicked(clickEvent: PluginHostClickEvent): void {\n this.pluginClick.emit(clickEvent);\n }\n\n public onContextMenu(shown: boolean): void {\n this.contextMenu.emit(shown);\n }\n\n private setDisplayedPlugin(multiPlugin: MultiPlugin) {\n const plugins = [multiPlugin.parentPlugin, ...multiPlugin.childPlugins];\n this.displayedPluginsSubject$.next(plugins);\n this.displayedPluginsChanged.emit(plugins);\n }\n\n private updateNavigationTitle() {\n if (this.contextDataPlugins?.length) {\n const leftIndex = this.selectedIndex - 1 < 0 ? this.contextDataPlugins.length - 1 : this.selectedIndex - 1;\n const rightIndex = this.selectedIndex + 1 >= this.contextDataPlugins.length ? 0 : this.selectedIndex + 1;\n\n const leftData = this.contextDataPlugins[leftIndex].parentPlugin.data as Content;\n const rightData = this.contextDataPlugins[rightIndex].parentPlugin?.data as Content;\n this.leftNavigationTitle = leftData?.title || '';\n this.rightNavigationTitle = rightData?.title || '';\n\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","// Autogenerated: v2/help/Entities/ApiSystemConfiguration?codegen=ts&InterfaceOnly=False&workflow=True on 2021-08-30 10:12:20 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EntityManager } from './EntityManager';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { ISystemConfigurationManager, IIncidentAttachedDataEntry, IIncidentAttachedKind, IIncidentData, IDisplayEntity } from '../Interface/ISystemConfigurationManager';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { ObservableCollection } from '../../Helpers/ObservableCollection';\n\n// #region Inner classes\n\nexport class IncidentAttachedDataEntry extends FieldObject implements IIncidentAttachedDataEntry {\n // Id\n public get id(): string {\n return this.getField('Id');\n }\n public set id(value: string) {\n this.setField('Id', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Id', '');\n this.setField('Data', '');\n }\n}\n\nexport class IncidentAttachedKind extends FieldObject implements IIncidentAttachedKind {\n // Kind\n public get kind(): string {\n return this.getField('Kind');\n }\n public set kind(value: string) {\n this.setField('Kind', value);\n }\n // AttachedData\n public get attachedData(): ObservableCollection {\n return this.getFieldObjectArray(IncidentAttachedDataEntry, 'AttachedData');\n }\n public set attachedData(value: ObservableCollection) {\n this.setFieldObjectArray('AttachedData', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Kind', '');\n this.setFieldArray('AttachedData', new ObservableCollection());\n }\n}\n\nexport class IncidentData extends FieldObject implements IIncidentData {\n // Guid\n public get guid(): IGuid | null {\n return this.getNullableFieldGuid('Guid');\n }\n public set guid(value: IGuid | null) {\n this.setNullableFieldGuid('Guid', value);\n }\n // AlarmInstance\n public get alarmInstance(): number | null {\n return this.getNullableField('AlarmInstance');\n }\n public set alarmInstance(value: number | null) {\n this.setNullableField('AlarmInstance', value);\n }\n // Category\n public get category(): string {\n return this.getField('Category');\n }\n public set category(value: string) {\n this.setField('Category', value);\n }\n // Data\n public get data(): string {\n return this.getField('Data');\n }\n public set data(value: string) {\n this.setField('Data', value);\n }\n // Event\n public get event(): string | null {\n return this.getNullableField('Event');\n }\n public set event(value: string | null) {\n this.setNullableField('Event', value);\n }\n // EventEntities\n public get eventEntities(): ObservableCollection {\n return this.getFieldArrayGuid('EventEntities');\n }\n public set eventEntities(value: ObservableCollection) {\n this.setFieldArrayGuid('EventEntities', value);\n }\n // FormattedText\n public get formattedText(): string {\n return this.getField('FormattedText');\n }\n public set formattedText(value: string) {\n this.setField('FormattedText', value);\n }\n // Notes\n public get notes(): string {\n return this.getField('Notes');\n }\n public set notes(value: string) {\n this.setField('Notes', value);\n }\n // References\n public get references(): ObservableCollection {\n return this.getFieldArrayGuid('References');\n }\n public set references(value: ObservableCollection) {\n this.setFieldArrayGuid('References', value);\n }\n // Source\n public get source(): IGuid | null {\n return this.getNullableFieldGuid('Source');\n }\n public set source(value: IGuid | null) {\n this.setNullableFieldGuid('Source', value);\n }\n // Template\n public get template(): IGuid | null {\n return this.getNullableFieldGuid('Template');\n }\n public set template(value: IGuid | null) {\n this.setNullableFieldGuid('Template', value);\n }\n // Timestamp\n public get timestamp(): Date | null {\n return this.getNullableFieldDate('Timestamp');\n }\n public set timestamp(value: Date | null) {\n this.setNullableFieldDate('Timestamp', value);\n }\n // Title\n public get title(): string {\n return this.getField('Title');\n }\n public set title(value: string) {\n this.setField('Title', value);\n }\n // Latitude\n public get latitude(): number | null {\n return this.getNullableField('Latitude');\n }\n public set latitude(value: number | null) {\n this.setNullableField('Latitude', value);\n }\n // Longitude\n public get longitude(): number | null {\n return this.getNullableField('Longitude');\n }\n public set longitude(value: number | null) {\n this.setNullableField('Longitude', value);\n }\n // AttachedData\n public get attachedData(): ObservableCollection {\n return this.getFieldObjectArray(IncidentAttachedKind, 'AttachedData');\n }\n public set attachedData(value: ObservableCollection) {\n this.setFieldObjectArray('AttachedData', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setField('AlarmInstance', 0);\n this.setField('Category', '');\n this.setField('Data', '');\n this.setField('Event', '');\n this.setFieldArrayGuid('EventEntities', new ObservableCollection());\n this.setField('FormattedText', '');\n this.setField('Notes', '');\n this.setFieldArrayGuid('References', new ObservableCollection());\n this.setFieldGuid('Source', SafeGuid.EMPTY);\n this.setFieldGuid('Template', SafeGuid.EMPTY);\n this.setFieldDate('Timestamp', new Date());\n this.setField('Title', '');\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setFieldArray('AttachedData', new ObservableCollection());\n }\n}\n\nexport class DisplayEntity extends FieldObject implements IDisplayEntity {\n // Recipients\n public get recipients(): ObservableCollection {\n return this.getFieldArrayGuid('Recipients');\n }\n public set recipients(value: ObservableCollection) {\n this.setFieldArrayGuid('Recipients', value);\n }\n // Entities\n public get entities(): ObservableCollection {\n return this.getFieldArrayGuid('Entities');\n }\n public set entities(value: ObservableCollection) {\n this.setFieldArrayGuid('Entities', value);\n }\n // ForceDisplay\n public get forceDisplay(): boolean {\n return this.getField('ForceDisplay');\n }\n public set forceDisplay(value: boolean) {\n this.setField('ForceDisplay', value);\n }\n // AnnotationMessage\n public get annotationMessage(): string {\n return this.getField('AnnotationMessage');\n }\n public set annotationMessage(value: string) {\n this.setField('AnnotationMessage', value);\n }\n // EnableAudio\n public get enableAudio(): boolean {\n return this.getField('EnableAudio');\n }\n public set enableAudio(value: boolean) {\n this.setField('EnableAudio', value);\n }\n // PlaybackTime\n public get playbackTime(): Date | null {\n return this.getNullableFieldDate('PlaybackTime');\n }\n public set playbackTime(value: Date | null) {\n this.setNullableFieldDate('PlaybackTime', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArrayGuid('Recipients', new ObservableCollection());\n this.setFieldArrayGuid('Entities', new ObservableCollection());\n this.setField('ForceDisplay', false);\n this.setField('AnnotationMessage', '');\n this.setField('EnableAudio', false);\n this.setFieldDate('PlaybackTime', new Date());\n }\n}\n\n// #endregion Inner classes\n\nexport class SystemConfigurationManager extends EntityManager implements ISystemConfigurationManager {\n // #region Constructor\n\n constructor() {\n super('v2/entities/SystemConfigurations');\n }\n\n // #endregion Constructor\n\n public async displayEntityAsync(value: IDisplayEntity, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('displayentity', 'POST', value, transaction, responseHandler);\n }\n\n public async addIncidentAsync(value: IIncidentData, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = SafeGuid.parse((response.body['id'] as string).toLowerCase());\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('incident', 'POST', value, transaction, responseHandler);\n }\n\n public async setIncidentAsync(value: IIncidentData, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('incident', 'PUT', value, transaction, responseHandler);\n }\n\n public async deleteIncidentAsync(guid: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('incident' + '/' + guid, 'DELETE', null, transaction, responseHandler);\n }\n\n public async throwCustomEventAsync(id: number, message: string, entitySourceId: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('id', id);\n inParam.setField('message', message);\n inParam.setFieldGuid('entitySourceId', entitySourceId);\n\n return this.executeRequestTransactionAsync('throwcustomevent', 'POST', inParam, transaction, responseHandler);\n }\n\n}\n\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\n\n/**\n * Put the keyboard focus on the modal when is open\n * To focus a specific element (ex : input) when the popup opens, add the \"open-focus\" class to your HTML element\n */\n@Directive({\n selector: '[appFocusModalWhenOpen]',\n})\nexport class FocusModalWhenOpenDirective implements OnInit {\n private oldFocus?: HTMLElement;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n const mutationObserver = new MutationObserver(() => {\n const modalComponent = this.el.nativeElement as HTMLElement;\n const genModal = modalComponent?.children[0] as HTMLElement;\n const genDialog = genModal?.children[0] as HTMLElement;\n // If genDialog is defined, modal is open\n if (genDialog) {\n this.oldFocus = document.activeElement as HTMLElement;\n const specificFocusElement = genDialog.querySelector('.open-focus');\n if (specificFocusElement) {\n //Temporary setTimeout until Gelato migrates gen-modal (https://dev.azure.com/GenetecCentral/UXDev/_workitems/edit/5435/)\n setTimeout(() => {\n specificFocusElement.focus();\n }, 100);\n } else {\n genDialog?.focus();\n }\n } else {\n // Restore focus on active element before modal opens\n this.oldFocus?.focus();\n }\n });\n mutationObserver.observe(this.el.nativeElement, { childList: true });\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { GenModalService, MeltedModalAction } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityBrowserCheckSelection, EntityBrowserSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IEntityTypeData } from '@modules/shared/models/entity-type-data';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, tap } from 'rxjs/operators';\nimport { EntityBrowserComponent } from '../entity-browser/entity-browser.component';\n\nexport class SelectedEntity {\n constructor(public id: IGuid, public name: string, public entityType: IEntityTypeData, public state: string, public maintenance: boolean, public customIconId: IGuid) {}\n}\n@Component({\n selector: 'app-modal-entities-selector',\n templateUrl: './modal-entities-selector.component.html',\n styleUrls: ['./modal-entities-selector.component.css'],\n})\nexport class ModalEntitiesSelectorComponent {\n @Input() title = '';\n @Input() filter?: EntityBrowserFilter;\n @Input() set allowMultiSelect(allowMultiSelect: boolean) {\n this.allowMultiSelectSubject$.next(allowMultiSelect);\n }\n @Input() public areItemsCheckable = false;\n // Display the footer or not (refresh / check / uncheckall / etc.)\n @Input() public showFooter = true;\n @Input() public defaultActionText = this.translateService.instant('STE_BUTTON_SELECT') as string;\n @Output() entitiesSelected = new EventEmitter();\n @Output() entityIdsSelected = new EventEmitter();\n @ViewChild('entityBrowser') entityBrowser!: EntityBrowserComponent;\n public defaultTitle = '';\n public id = SafeGuid.newGuid().toString();\n public allowMultiSelect$: Observable;\n public defaultAllowMultiSelect = true;\n\n private selectedEntities: SelectedEntity[] = [];\n private allowMultiSelectSubject$ = new BehaviorSubject(this.defaultAllowMultiSelect);\n\n constructor(private modalService: GenModalService, private translateService: TranslateService) {\n this.allowMultiSelect$ = this.allowMultiSelectSubject$.pipe(\n distinctUntilChanged(),\n tap((allowMultiSelect) => this.updateDefaultTitle(allowMultiSelect))\n );\n }\n\n public onAction(action: MeltedModalAction): void {\n switch (action) {\n case MeltedModalAction.Default:\n if (this.selectedEntities.length > 0) {\n this.entitiesSelected.emit(this.selectedEntities);\n this.entityIdsSelected.emit(this.selectedEntities.map((entity) => entity.id));\n }\n break;\n default:\n break;\n }\n }\n\n public onEntityDoubleClicked(selection: EntityBrowserSelection): void {\n this.onSelectedEntitiesChanged(selection);\n this.onAction(MeltedModalAction.Default);\n this.modalService.hide(this.id);\n }\n\n public onSelectedEntitiesChanged(selection: EntityBrowserSelection | EntityBrowserCheckSelection): void {\n if (selection instanceof EntityBrowserSelection) {\n this.selectedEntities = selection.allItems.map(\n (item) => new SelectedEntity(item.model.id, item.model.name, item.model.entityType, item.model.runningState, item.model.maintenance, item.model.customIconId)\n );\n } else if (selection instanceof EntityBrowserCheckSelection) {\n this.selectedEntities = selection.items.map((item) => new SelectedEntity(item.id, item.name, item.entityType, item.runningState, item.maintenance, item.customIconId));\n }\n }\n\n public show(): void {\n this.modalService.show(this.id);\n this.entityBrowser.refreshAsync(this.filter, false).fireAndForget();\n }\n\n private updateDefaultTitle(allowMultiSelect: boolean): void {\n this.defaultTitle = this.translateService.instant(allowMultiSelect ? 'STE_TOOLTIP_SELECTENTITIES' : 'STE_TOOLTIP_SELECTENTITY') as string;\n }\n}\n","\n \n \n \n \n\n","\n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
  • \n \n
  • \n
  • \n \n \n \n
  • \n
  • \n \n {{ 'STE_LABEL_BOOKMARK_MESSAGE' | translate }}\n \n
  • \n
\n
\n {{ 'STE_LABEL_SHARING_ENTITY' | translate }} \n
\n
\n\n\n \n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { GenAction, GenListActions, GenMeltedListItem, MeltedIcon } from '@genetec/gelato-angular';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { ISystemConfigurationManager } from 'RestClient/Client/Interface/ISystemConfigurationManager';\nimport { DisplayEntity, SystemConfigurationManager } from 'RestClient/Client/Managers/SystemConfigurationManager';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { EntityBrowserFilter } from '../../entity-browser/filters/entity-browser-filter';\nimport { TrackingService } from '../../services/tracking.service';\nimport { ModalEntitiesSelectorComponent } from '../entity-browser/modal-entities-selector/modal-entities-selector.component';\nimport { ConnectionAwareModalComponent } from '../tracked/connection-aware-modal.component';\n\n@Component({\n selector: 'app-share-entity-modal',\n templateUrl: './share-entity-modal.component.html',\n styleUrls: ['./share-entity-modal.component.scss'],\n})\nexport class ShareEntityModalComponent extends ConnectionAwareModalComponent implements OnInit {\n @Input() public entityId!: IGuid;\n @Input() public recipientId!: IGuid;\n @Input() public timestamp!: Date;\n\n @ViewChild('userEntitySelector') public userEntitySelector!: ModalEntitiesSelectorComponent;\n\n public scClient: WebAppClient;\n public selectedListItems: GenMeltedListItem[] = [];\n public message = '';\n public isLoading = true;\n public isShareButtonEnabled = false;\n public systemConfigurationManager!: ISystemConfigurationManager;\n public isCurrentlySharing = false;\n\n public userSelectionBrowserFilter = new EntityBrowserFilter([EntityTypes.Users, EntityTypes.UserGroups]);\n\n public selectedUsersActions: GenListActions;\n\n private addUserAction: GenAction = {\n id: SafeGuid.newGuid().toString(),\n execute: () => {\n this.userSelectionBrowserFilter.excludedEntities = this.excludedEntities;\n this.userEntitySelector.show();\n },\n };\n\n private deleteUserAction: GenAction = {\n id: SafeGuid.newGuid().toString(),\n canExecute: (items?: any) => {\n return !!this.selectedUser;\n },\n execute: () => {\n const index = this.selectedListItems.findIndex((user) => user.id === this.selectedUser?.id);\n if (index !== -1) {\n for (const excludedEntity of this.excludedEntities) {\n if (excludedEntity.equals(this.selectedUserEntities[index].id)) {\n this.excludedEntities.delete(excludedEntity);\n break;\n }\n }\n this.selectedListItems.splice(index, 1);\n this.selectedUserEntities.splice(index, 1);\n this.selectedUser = null;\n }\n this.validate();\n },\n };\n\n private selectedUserEntities: IEntity[] = [];\n private selectedUser: GenMeltedListItem | null = null;\n private excludedEntities = SafeGuid.createSet();\n\n constructor(securityCenterClientService: SecurityCenterClientService, protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n\n this.selectedUsersActions = {\n add: this.addUserAction,\n delete: this.deleteUserAction,\n };\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n this.systemConfigurationManager = await this.scClient?.getAsync(SystemConfigurationManager);\n\n if (this.recipientId) {\n await this.addRecipient(this.recipientId);\n }\n this.validate();\n this.isLoading = false;\n }\n\n public onSelectedEntityChanged(): void {\n this.validate();\n }\n\n public onEntityIdsSelected(ids: IGuid[]): void {\n this.addRecipients(ids).fireAndForget();\n }\n\n public onSelectedUserChange(selectedUser: GenMeltedListItem | null): void {\n this.selectedUser = selectedUser;\n }\n\n public onShareClick = async (): Promise => {\n this.isShareButtonEnabled = false;\n this.isCurrentlySharing = true;\n const value = new DisplayEntity();\n\n const recipients = ObservableCollection.From(this.selectedUserEntities.map((userEntity) => userEntity.id));\n const entities = ObservableCollection.From([this.entityId]);\n\n value.recipients = recipients;\n value.entities = entities;\n value.annotationMessage = this.message;\n value.forceDisplay = false;\n if (this.timestamp) {\n value.playbackTime = this.timestamp;\n }\n await this.systemConfigurationManager.displayEntityAsync(value);\n return true;\n };\n\n public onMessageChange(newMessage: string): void {\n this.message = newMessage;\n }\n\n private validate() {\n this.isShareButtonEnabled = this.selectedListItems.length > 0 && this.entityId && !this.entityId.isEmpty();\n }\n\n private addRecipient(recipientId: IGuid): Promise {\n return this.addRecipients([recipientId]);\n }\n\n private async addRecipients(recipientIds: IGuid[]): Promise {\n if (recipientIds.length > 0) {\n const users = await this.scClient.getEntitiesAsync(Entity, this.createRecipientsEntityQuery(recipientIds));\n this.addRecipientEntities(users);\n }\n this.validate();\n }\n\n private addRecipientEntities(recipients: IEntity[]): void {\n if (recipients.length > 0) {\n for (const recipient of recipients) {\n this.selectedListItems.push({\n id: recipient.id.toString(),\n text: recipient.name,\n icon: recipient.entityType === EntityTypes.UserGroups ? MeltedIcon.People : MeltedIcon.Person,\n });\n this.selectedUserEntities.push(recipient);\n this.excludedEntities.add(recipient.id);\n }\n }\n }\n\n private createRecipientsEntityQuery(entityIds: IGuid[]): EntityQuery {\n const entityQuery = new EntityQuery();\n entityQuery.guids = SafeGuid.createSet(entityIds);\n entityQuery.entityTypes = new Set([EntityTypes.Users, EntityTypes.UserGroups]);\n return entityQuery;\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const OptionTypes = Constants({\n LanguageAndTime: SafeGuid.parse('D9DE7474-7A7A-40AA-BD76-D13BE80FED69'),\n Peripherals: SafeGuid.parse('8DBE99B1-9E6A-44BE-A498-A9C9351E60AC'),\n Appearance: SafeGuid.parse('2B0D3C81-A7A1-49BC-A7C4-20E5D88D8590'),\n Events: SafeGuid.parse('65C854A3-02C4-4A00-A3CB-B0E768581843'),\n Maps: SafeGuid.parse('B3513C19-F7A5-411A-8657-FC4E2665570D'),\n});\n","import { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const GenAlerts = Constants({\n OptionsConfirmRefreshAlert: 'D9DE7474-7A7A-40AA-BD76-D13BE80FED69',\n});\n","import { Injectable } from '@angular/core';\nimport { State, StateContext } from '@ngxs/store';\nimport { Selector, Receiver } from '@src/app/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Settings, SettingsMap } from './settings';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface UserSettingsStateModel {\n settings: SettingsMap;\n refreshOnApply: boolean;\n}\n\n@State({\n name: 'userSettingsState',\n defaults: {\n settings: new Map(),\n refreshOnApply: false,\n },\n})\n@Injectable()\nexport class UserSettingsState {\n @Selector()\n public static settings(state: UserSettingsStateModel): SettingsMap {\n return state.settings;\n }\n\n @Selector()\n public static refreshOnApply(state: UserSettingsStateModel): boolean {\n return state.refreshOnApply;\n }\n\n @Receiver()\n public static setSettings({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: UserSettingsStateModel) => {\n state.settings = new Map(payload);\n return state;\n });\n }\n\n @Receiver()\n public static setRefreshOnApply({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: UserSettingsStateModel) => {\n state.refreshOnApply = payload;\n return state;\n });\n }\n}\n","// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class Settings {\n public isAvailable = true;\n public data: Map = new Map();\n\n public clone(): Settings {\n const holder = new Settings();\n holder.isAvailable = this.isAvailable;\n holder.data = new Map(this.data);\n return holder;\n }\n\n public get(key: string): T {\n return this.data.get(key.toLowerCase()) as T;\n }\n\n public set(key: string, value: T): void {\n this.data.set(key.toLowerCase(), value);\n }\n}\n\n// Dictionary where the key is the name of the setting\nexport type SettingsMap = Map;\n","import { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid } from 'safeguid';\nimport { Inject, Injectable } from '@angular/core';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Observable, Subject } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { GenAlertService } from '@genetec/gelato-angular';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter } from '@src/app/store';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { WINDOW } from '@utilities/common-helper';\nimport { OptionsClient } from '@modules/shared/api/api';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { SettingsService } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { SecurityCenterStateService } from '../state/security-center-state.service';\nimport { GenAlerts } from '../../enumerations/gen-alerts';\nimport { UserSettingsState } from './user-settings.state';\nimport { Settings, SettingsMap } from './settings';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class UserSettingsService extends SecurityCenterStateService implements SettingsService {\n /* eslint-disable @typescript-eslint/unbound-method */\n @Select(UserSettingsState.settings)\n public settings$!: Observable;\n\n public get onCancel$(): Observable {\n return this.onCancel.asObservable();\n }\n\n @SelectSnapshot(UserSettingsState.settings.bind(this))\n private settings!: SettingsMap;\n\n @SelectSnapshot(UserSettingsState.refreshOnApply.bind(this))\n private refreshOnApply!: boolean;\n\n public onSettingsChanged$: Observable;\n private onSettingsChangedSubject = new Subject();\n\n private optionsConfirmRefreshAlertId = GenAlerts.OptionsConfirmRefreshAlert;\n private onCancel: Subject = new Subject();\n private tempSettings: SettingsMap = new Map();\n\n constructor(\n securityCenterProvider: SecurityCenterClientService,\n private router: Router,\n private genAlertService: GenAlertService,\n @Inject(WINDOW) private window: Window,\n private optionsClient: OptionsClient\n ) {\n super(securityCenterProvider);\n\n // NgXs store not loaded right away after injection... Use setTimeout to prevent crash\n setTimeout(() => {\n this.settings$.pipe(untilDestroyed(this)).subscribe(() => {\n this.onSettingsChangedSubject.next();\n });\n }, 1);\n\n this.onSettingsChanged$ = this.onSettingsChangedSubject.asObservable();\n }\n\n @MethodEmitter(UserSettingsState.setSettings)\n private setSettings(settings?: SettingsMap) {}\n\n @MethodEmitter(UserSettingsState.setRefreshOnApply)\n private setRefreshOnApply(refreshOnApply: boolean) {}\n\n public async apply(): Promise> {\n const confirmApplySubject = new Subject();\n if (this.refreshOnApply) {\n this.genAlertService.show(this.optionsConfirmRefreshAlertId);\n const confirmRefreshAlert = this.genAlertService.getAlerts()?.find((x) => x.id === this.optionsConfirmRefreshAlertId);\n // TODO replace action: any for ModalAction once export is fixed in Gelato\n confirmRefreshAlert?.genAlertAction.pipe(untilDestroyed(this)).subscribe(async (action: any) => {\n if (action === 'default') {\n await this.onApplyConfirmed();\n confirmApplySubject.next(true);\n }\n\n confirmApplySubject.next(false);\n });\n } else {\n await this.onApplyConfirmed();\n\n // Wait after the subject is returned and the user subscribed\n setTimeout(() => {\n confirmApplySubject.next(true);\n });\n }\n\n return confirmApplySubject;\n }\n\n public async loadSettings(): Promise {\n const options = await this.optionsClient.getOptions().toPromise();\n\n if (options) {\n const settingsItems: SettingsMap = new Map();\n\n options.forEach((option) => {\n const settings = new Settings();\n\n settings.isAvailable = option.isAvailable;\n\n if (option.isAvailable) {\n if (option.localOnly) {\n // retrieve the local options\n const json = this.window.localStorage.getItem(option.id.toString());\n if (json) {\n const fieldObject = new FieldObject();\n fieldObject.fromJson(json);\n\n for (const key of fieldObject.AllFieldsKey) {\n settings.set(key, fieldObject.getField(key));\n }\n }\n } else {\n if (option.settings && typeof option.settings === 'object') {\n this.setNewSettings(settings, option.settings as Record);\n }\n }\n }\n settingsItems.set(option.id.toString(), settings);\n });\n\n this.setSettings(settingsItems);\n }\n }\n\n public cancel(): void {\n this.onCancel.next();\n this.resetState();\n }\n\n public set(settingSectionId: IGuid, settingId: string, value: unknown, refreshOnApply: boolean = false): void {\n let settings = new Settings();\n const sectionId = settingSectionId.toString().toLowerCase();\n if (this.tempSettings.has(sectionId)) {\n settings = this.tempSettings.get(sectionId) as Settings;\n }\n settings.set(settingId, value);\n\n // be sure to put saved values also\n if (this.settings.has(sectionId)) {\n const savedSettings = (this.settings.get(sectionId) as Settings).clone();\n savedSettings.data.forEach((v, k) => {\n if (!settings.data.has(k)) {\n settings.set(k, v);\n }\n });\n }\n this.tempSettings.set(sectionId, settings);\n\n // Specifies if the page needs to be refreshed when applying the settings\n this.setRefreshOnApply(this.refreshOnApply || refreshOnApply);\n }\n\n public get(settingSectionId: IGuid, sectionId: string, lookupTemp: boolean = true): T | undefined {\n const settings = this.getSectionSettings(settingSectionId, lookupTemp);\n return settings?.get(sectionId);\n }\n\n public getOptionAvailability(settingSectionId: IGuid): boolean {\n const settings = this.getSectionSettings(settingSectionId, false);\n return settings?.isAvailable ?? false;\n }\n\n public getIsRefreshRequired(): boolean {\n return this.refreshOnApply;\n }\n\n protected clearstate(): void {\n super.clearState();\n\n this.resetState();\n }\n\n protected async loadState(): Promise {\n super.loadState();\n await this.loadSettings();\n }\n\n private async onApplyConfirmed() {\n const options = await this.optionsClient.getOptions().toPromise();\n\n if (options) {\n for (const option of options) {\n const setting = this.tempSettings.get(option.id.toString().toLowerCase());\n if (setting !== undefined) {\n if (option.localOnly) {\n const fieldObject = new FieldObject();\n\n setting.data.forEach((value: any, key: string) => {\n fieldObject.setField(key, value);\n });\n\n // store the local options\n this.window.localStorage.setItem(option.id.toString(), fieldObject.toString());\n } else {\n const newSettings = this.getNewSettings(setting, option.settings as Record);\n await this.optionsClient.setOptions(option.id, newSettings).toPromise();\n }\n }\n }\n\n // success => update (only if settings were modified)\n if (this.tempSettings.size !== 0) {\n this.setSettings(this.tempSettings);\n }\n\n if (this.refreshOnApply) {\n this.resetState();\n this.reloadCurrentRoute();\n } else {\n this.resetState();\n }\n }\n }\n\n private getSectionSettings(settingSectionId: IGuid, lookupTemp: boolean = true): Settings | undefined {\n const sectionId = settingSectionId.toString().toLowerCase();\n if (lookupTemp && this.tempSettings.has(sectionId)) {\n return (this.tempSettings.get(sectionId) as Settings).clone();\n } else {\n if (this.settings.has(sectionId)) {\n return (this.settings.get(sectionId) as Settings).clone();\n }\n }\n return undefined;\n }\n\n private reloadCurrentRoute() {\n const currentUrl = this.router.url;\n // give a little for the detect changes of options take effect before reloading\n setTimeout(async () => {\n await this.router.navigateByUrl('/', { skipLocationChange: true }).then(async () => {\n await this.router.navigateByUrl(currentUrl);\n });\n }, 1000);\n }\n\n private resetState() {\n this.tempSettings = new Map();\n this.setRefreshOnApply(false);\n }\n\n private setNewSettings(settings: Settings, newSettings: Record): void {\n for (const key of Object.keys(newSettings)) {\n settings.set(key, newSettings[key]);\n }\n }\n\n private getNewSettings(updatedSettings: Settings, settings: Record): Record {\n const newSettings: Record = {};\n for (const key of Object.keys(settings)) {\n newSettings[key] = updatedSettings.get(key);\n }\n return newSettings;\n }\n}\n","import { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Injectable, Inject, Pipe, PipeTransform, Output, EventEmitter } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\nimport { GenTranslateService } from '@genetec/gelato-angular';\nimport { Constants } from '@src/constants';\nimport { Title } from '@angular/platform-browser';\nimport moment from 'moment';\nimport { take } from 'rxjs/operators';\nimport { Language, LanguageClient } from '@modules/shared/api/api';\nimport { WINDOW } from '@utilities/common-helper';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { UserSettingsService } from '../user-settings/user-settings.service';\nimport { USER_SETTINGS_SERVICE } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionTypes } from '../../enumerations/option-types';\n\nexport class StringEntry {\n // represent the key to retrieve from the resources (like STE_LABEL_)\n public key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n}\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class LanguageService {\n //#region Constants\n\n public static readonly DefaultLanguage = 'en';\n public static readonly supportedLocales = ['en', 'es', 'fr', 'de'];\n\n //#endregion\n\n //#region Fields\n\n @Output() public ready = new EventEmitter();\n @Output() public languageChanged = new EventEmitter();\n\n private downloaded: { [key: string]: boolean } = {};\n private languageBrowserTag = 'WebApp.Language';\n private selectedlanguageTag = 'selectedlanguage';\n private currentLanguage = LanguageService.DefaultLanguage;\n private copyrights: Map = new Map();\n private currentTitle: (string | StringEntry)[] = [];\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: UserSettingsService,\n securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService,\n private genTranslateService: GenTranslateService,\n private languageClient: LanguageClient,\n private titleService: Title,\n @Inject(WINDOW) private window: Window\n ) {\n // Try to retrieve the current language from the cache\n let language = LanguageService.DefaultLanguage;\n const currentLanguage = this.window.localStorage.getItem(this.languageBrowserTag);\n if (currentLanguage && currentLanguage !== '') {\n language = currentLanguage;\n }\n\n this.useLanguage(language);\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.fetchStrings(language);\n\n // NgXs store not loaded right away after injection... Use setTimeout to prevent crash\n setTimeout(() => {\n this.userSettingsService.settings$.pipe(untilDestroyed(this)).subscribe(() => {\n const selectedLanguage = this.userSettingsService.get(OptionTypes.LanguageAndTime, this.selectedlanguageTag, false);\n\n // Fall back to default language (en) if not specified.\n const effectiveLanguage = !selectedLanguage ? LanguageService.DefaultLanguage : selectedLanguage;\n\n // If the language has changed, set it\n this.setLanguage(effectiveLanguage).fireAndForget();\n });\n }, 1);\n\n securityCenterClientService?.scClient.addLogonInterceptCallback(async () => {\n this.translateService.use(securityCenterClientService.scClient.userLogonLanguage).pipe(take(1), untilDestroyed(this)).subscribe();\n await this.fetchStrings(securityCenterClientService.scClient.userLogonLanguage);\n });\n }\n\n //#endregion\n\n //#region Public Methods\n public async getAvailableLanguages(): Promise {\n let languages!: Language[];\n\n const result = await this.languageClient.getAvailableLanguages().toPromise();\n if (result) {\n languages = Array.from(result);\n }\n\n return languages;\n }\n\n public async fetchStrings(lang?: string): Promise {\n // fetch all the strings required by the WebClient\n\n const result = await this.languageClient.getAllWebClientStrings(lang).toPromise();\n if (result !== null) {\n // note that we downloaded this language\n this.downloaded[lang as string] = true;\n this.translateService.setTranslation(result.language ?? '', result.values ?? {});\n this.useLanguage(result.language ?? '');\n\n // send an event informing that we are ready\n this.ready.emit();\n }\n }\n\n public async retrieveCopyrightsAsync(): Promise {\n // look in the cache first\n const text = this.copyrights.get(this.currentLanguage);\n if (text) {\n return text;\n }\n\n const copyrightsInfo = await this.languageClient.getCopyrights(this.currentLanguage).toPromise();\n if (copyrightsInfo.copyrights) {\n this.copyrights.set(this.currentLanguage, copyrightsInfo.copyrights);\n return copyrightsInfo.copyrights;\n }\n return '';\n }\n\n public async setLanguage(lang: string): Promise {\n if (this.downloaded[lang] !== undefined) {\n this.useLanguage(lang);\n } else {\n await this.fetchStrings(lang);\n }\n\n // Set the current language in the cache\n this.window.localStorage.setItem(this.languageBrowserTag, lang);\n this.updateApplicationTitle();\n }\n\n public setTitle(title: string | StringEntry, ...args: (string | StringEntry)[]): void {\n // keep the current title in case of language change\n this.currentTitle = args;\n\n const array: (string | StringEntry)[] = [];\n if (title) {\n array.push(title);\n }\n\n if (args) {\n for (const arg of args) {\n array.push(arg);\n }\n }\n\n // ensure to wait the languages to be ready\n const baseTitleKey = 'STE_TITLE_SECURITYCENTERWEB';\n const baseTitle = this.translateService.instant(baseTitleKey) as string;\n\n // maybe the language are not ready yet\n if (baseTitle !== baseTitleKey) {\n array.push(baseTitle);\n\n const strings: string[] = [];\n for (const item of array) {\n if (item instanceof StringEntry) {\n strings.push(this.translateService.instant(item.key) as string);\n } else {\n strings.push(item);\n }\n }\n\n const fullTitle = strings.join(' - ');\n if (fullTitle) {\n this.titleService.setTitle(fullTitle);\n }\n }\n }\n\n public useLanguage(lang: string): void {\n const raiseEvent = this.currentLanguage !== lang;\n\n this.currentLanguage = lang;\n this.translateService\n .use(lang)\n .pipe(untilDestroyed(this))\n .subscribe(() => {\n // Set Gelato's language\n this.genTranslateService.init(lang);\n });\n // also apply the change to moment\n moment.locale(lang);\n\n if (raiseEvent) {\n this.languageChanged.emit();\n }\n }\n\n private updateApplicationTitle() {\n this.setTitle('', ...this.currentTitle);\n }\n\n //#endregion\n}\n\nexport class MissingTranslationHelper implements MissingTranslationHandler {\n public handle(params: MissingTranslationHandlerParams): string {\n if (params.interpolateParams) {\n const defaultString = (params.interpolateParams as Record).Default;\n return typeof defaultString === 'string' ? defaultString : params.key;\n }\n return params.key;\n }\n}\n\n@Pipe({\n name: 'translate',\n})\nexport class TranslatePipeMock implements PipeTransform {\n public name = 'translate';\n\n public transform(query: string, ...args: any[]): any {\n return query;\n }\n}\n","import { Inject, Injectable, OnDestroy, Output } from '@angular/core';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport moment, { Moment } from 'moment-timezone';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, withLatestFrom } from 'rxjs/operators';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ITimezoneInfo, TimezonesClient, ITimezoneAbbreviations } from '../../api/api';\nimport { OptionTypes } from '../../enumerations/option-types';\nimport { USER_SETTINGS_SERVICE } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '../language/language.service';\nimport { LoggerService } from '../logger/logger.service';\nimport { UserSettingsService } from '../user-settings/user-settings.service';\n@UntilDestroy()\n@Injectable({ providedIn: 'root' })\nexport class TimeService implements OnDestroy {\n //#region Fields\n\n @Output() public displayTimezone = false;\n\n @Output() public is24HourFormat = false;\n\n @Output() public isSmartTime = true; // do not display date if it's today\n\n // represent the local timezone to use\n @Output() public timezoneId!: string | null | undefined;\n @Output() public timezoneAbbreviation?: ITimezoneAbbreviations;\n\n @Output() public useDeviceTimezone = true;\n\n public timezone$: Observable;\n private timezone: BehaviorSubject = new BehaviorSubject(undefined);\n private timezones!: ITimezoneInfo[] | undefined;\n private timezonesMap = new Map();\n private systemTimezone: ITimezoneInfo | undefined;\n\n // Using the browser's culture to format dates.\n private readonly locale = navigator.language ?? LanguageService.DefaultLanguage;\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: UserSettingsService,\n private timezonesClient: TimezonesClient,\n private translateService: TranslateService,\n private loggerService: LoggerService,\n private authService: AuthService\n ) {\n this.userSettingsService.onSettingsChanged$.pipe(withLatestFrom(this.authService.loggedIn$), untilDestroyed(this)).subscribe(async ([_, loggedIn]) => {\n if (loggedIn) {\n await this.applySettings();\n await this.ensureTimezonesAsync();\n }\n });\n\n this.timezone$ = this.timezone.asObservable().pipe(shareReplay(1));\n }\n\n ngOnDestroy(): void {\n this.timezone.complete();\n }\n\n //#endregion\n\n //#region Methods\n\n /**\n * Convert the specified value to local time depending on the specified timezone\n *\n * @param value Value to convert\n * @param timezone Timezone to use for conversion\n * @returns Local time\n */\n public convertToLocal(value: Date | number | string | Moment, timezone?: string | ITimezoneInfo): Moment {\n let result = moment(value);\n\n const ianaTimezone = this.retrieveTimezoneIANA(timezone);\n if (ianaTimezone) {\n result = result.tz(ianaTimezone);\n }\n\n return result;\n }\n\n /**\n * Convert the specified value to universal time depending on the specified timezone\n *\n * @param value Value to convert\n * @param timezone Timezone to use for conversion\n * @returns Universal time\n */\n public convertToUTC(value: Date | number | string | Moment, timezone?: string | ITimezoneInfo): Moment {\n let result = moment(value);\n const ianaTimezone = this.retrieveTimezoneIANA(timezone);\n if (ianaTimezone) {\n result = result.tz(ianaTimezone).utc();\n }\n\n return result;\n }\n\n /**\n * Convert the specified value to the use the specified timezone\n *\n * @param value Value to convert\n * @param timezone Timezone to use for conversion\n * @returns Converted time\n */\n public convertToTimeZone(value: Date | number | string | Moment, timezone?: string | ITimezoneInfo): Moment {\n let result = moment(value);\n\n const ianaTimezone = this.retrieveTimezoneIANA(timezone);\n if (ianaTimezone) {\n // to perform conversion, we must set the flag to keep the local time\n result = result.tz(ianaTimezone, true);\n }\n\n return result;\n }\n\n /**\n * Format the specified duration as text\n *\n * @param milliseconds Duration in miliseconds\n * @param useAbbrev True to use abbreviations (m instead on minutes)\n * @param autoDetermineUnits True to automatically determine the units to use\n * @param years True to display the number of years\n * @param days True to display the number of days\n * @param hours True to display the number of hours\n * @param minutes True to display the number of minutes\n * @param seconds True to display the number of seconds\n * @returns Formatted text representing the duration\n */\n public formatDuration(milliseconds: number, useAbbrev = true, autoDetermineUnits = true, years = false, days = false, hours = false, minutes = false, seconds = false): string {\n const lst: string[] = [];\n\n const MILLIS_PER_SECOND = 1000;\n const MILLIS_PER_MINUTE = MILLIS_PER_SECOND * 60; // 60,000\n const MILLIS_PER_HOUR = MILLIS_PER_MINUTE * 60; // 3,600,000\n const MILLIS_PER_DAY = MILLIS_PER_HOUR * 24; // 86,400,000\n const MILLIS_PER_YEAR = MILLIS_PER_DAY * 365;\n\n let ms = milliseconds;\n // append the number of years\n const totalYears = Math.floor(ms / MILLIS_PER_YEAR);\n if (years || (autoDetermineUnits && totalYears > 0)) {\n ms -= totalYears * MILLIS_PER_YEAR;\n const abbr = useAbbrev ? 'y' : (this.translateService.instant('STE_UNIT_YEARS_LC') as string);\n lst.push(`${totalYears} ${abbr}`);\n }\n\n // append the number of days\n const totalDays = Math.floor(ms / MILLIS_PER_DAY);\n if (days || (autoDetermineUnits && totalDays > 0)) {\n ms -= totalDays * MILLIS_PER_DAY;\n const abbr = useAbbrev ? 'd' : (this.translateService.instant('STE_UNIT_DAYS_LC') as string);\n lst.push(`${totalDays} ${abbr}`);\n }\n\n // append the number of hours\n const totalHours = Math.floor(ms / MILLIS_PER_HOUR);\n if (hours || (autoDetermineUnits && totalHours > 0)) {\n ms -= totalHours * MILLIS_PER_HOUR;\n const abbr = useAbbrev ? 'h' : (this.translateService.instant('STE_UNIT_HOURS_LC') as string);\n lst.push(`${totalHours} ${abbr}`);\n }\n\n // append the number of minutes\n const totalMinutes = Math.floor(ms / MILLIS_PER_MINUTE);\n if (minutes || (autoDetermineUnits && totalMinutes > 0)) {\n ms -= totalMinutes * MILLIS_PER_MINUTE;\n const abbr = useAbbrev ? 'm' : (this.translateService.instant('STE_UNIT_MINUTES_LC') as string);\n lst.push(`${totalMinutes} ${abbr}`);\n }\n\n // append the number of seconds\n const totalSeconds = Math.floor(ms / MILLIS_PER_SECOND);\n if (seconds || (autoDetermineUnits && totalSeconds > 0)) {\n const abbr = useAbbrev ? 's' : (this.translateService.instant('STE_UNIT_SECONDS_LC') as string);\n if (totalSeconds === 0 && ms > 0) {\n lst.push(`1 ${abbr}`);\n } else {\n lst.push(`${totalSeconds} ${abbr}`);\n }\n }\n\n return lst.join(' ');\n }\n\n /**\n * Format the specfied time relative to now (5 minutes ago)\n *\n * @param value Value to format\n * @returns Relative time text\n */\n public formatRelative(value: Date | number | string | Moment): string {\n const time = moment(value).locale(this.translateService.currentLang).fromNow();\n return time;\n }\n\n /**\n * Format the specified value depending on the current user's timezone settings\n *\n * @param value Timestamp to convert\n * @param format Format to use\n * @param convertTimeZone True to convert the timestamp to the local timezone time\n * @param displayTimeZone True to display the timezone suffix\n * @param deviceTimezone Specific device timezone to use if needed\n * @param useSmartTimestamp True to use the smart timestamp, if it is activated in the time service\n * @returns Formatted time\n */\n public formatTime(\n value: Date | number | string | Moment,\n format = 'LTS',\n convertTimeZone = true,\n displayTimeZone = true,\n deviceTimezone?: ITimezoneInfo | string,\n useSmartTimestamp = true\n ): string {\n let time = '';\n let formatValue = format;\n\n let deviceTimezoneValue: ITimezoneInfo | undefined;\n if (deviceTimezone) {\n if (typeof deviceTimezone === 'string') {\n deviceTimezoneValue = this.timezonesMap.get(deviceTimezone);\n } else {\n deviceTimezoneValue = deviceTimezone;\n }\n }\n\n let timezoneIana = this.timezoneId;\n // if we received a specific timezone, use it\n if (this.useDeviceTimezone && deviceTimezoneValue) {\n timezoneIana = deviceTimezoneValue.iana;\n }\n\n // check smart time\n if (this.isSmartTime && useSmartTimestamp && this.isToday(value, timezoneIana, convertTimeZone)) {\n if (format === DateFormat.DateTime) {\n formatValue = DateFormat.Time;\n } else if (format === DateFormat.Date) {\n // if today, just display 'Today' instead of the date\n return this.translateService.instant('STE_LABEL_TODAY') as string;\n }\n }\n\n // ensure we are displaying valid dates\n if (moment(value).year() > 1) {\n if (convertTimeZone && timezoneIana) {\n time = moment(value, undefined, this.locale).tz(timezoneIana).format(formatValue);\n } else {\n time = moment(value, undefined, this.locale).format(formatValue);\n }\n } else {\n this.loggerService.traceDebug(`Invalid date specified: ${value.toString()}`);\n }\n\n // Append the timezone abbreviation based on the user settings if the time is not empty.\n if (displayTimeZone && this.displayTimezone && time) {\n const timezoneAbbreviations = this.useDeviceTimezone && deviceTimezoneValue ? deviceTimezoneValue.abbreviations : this.timezoneAbbreviation;\n\n if (timezoneAbbreviations) {\n // Concat the right TimeZone abbreviation based on Daylight Saving Time vs Standard Time\n const abbreviation = moment(value).isDST() ? timezoneAbbreviations.daylight : timezoneAbbreviations.standard;\n if (abbreviation) {\n time = time.concat(` ${abbreviation}`);\n }\n }\n }\n return time;\n }\n\n /**\n * Gets the list of available timezones\n *\n * @returns List of available timezones\n */\n public async getTimezonesAsync(): Promise {\n let results: ITimezoneInfo[] = [];\n\n // fetch the timezones on first use and cache the results\n if (!this.timezones || this.timezones.length === 0) {\n this.timezones = [];\n this.timezonesMap.clear();\n const timezones = await this.timezonesClient.getTimezones().toPromise();\n if (timezones) {\n for (const x of timezones) {\n if (this.timezones && x.id && x.iana && x.displayName) {\n this.timezones.push(x);\n\n // index the timezone but it's id & IANA name\n this.timezonesMap.set(x.id, x);\n this.timezonesMap.set(x.iana, x);\n }\n }\n results = this.timezones;\n }\n } else {\n results = this.timezones;\n }\n\n return results;\n }\n\n /**\n * Retrieve the browser timezone in IANA format\n *\n * @returns The browser's timezone (IANA format)\n */\n public getBrowserTimezone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /**\n * Retrieve the current local timezone (i.e. the default one)\n *\n * @returns The current local timezone\n */\n public async getLocalTimezone(): Promise {\n let result: ITimezoneInfo | undefined;\n\n // retrieve the browser timezone\n const browserTimezone = this.getBrowserTimezone();\n if (browserTimezone) {\n result = await this.timezonesClient.getTimezone(browserTimezone).toPromise();\n }\n\n // if we haven't been able to retrieve the browser timezone\n if (!result) {\n if (!this.systemTimezone) {\n this.systemTimezone = await this.timezonesClient.getSystemTimezone().toPromise();\n }\n result = this.systemTimezone;\n }\n\n return result;\n }\n\n /**\n * Retrieve the timezone from the specified id\n *\n * @param timezoneId Timezone's identifier (Windows or IANA)\n * @returns Timezone having the specified id\n */\n public async retrieveTimezoneAsync(timezoneId: string): Promise {\n await this.ensureTimezonesAsync();\n\n const result = this.timezonesMap.get(timezoneId);\n return result;\n }\n\n private async applySettings() {\n const localeData = moment().localeData();\n\n if (localeData) {\n const dateFormat = localeData.longDateFormat('LT');\n this.is24HourFormat = dateFormat.indexOf('HH') >= 0;\n }\n\n const displayTimezone = this.userSettingsService.get(OptionTypes.LanguageAndTime, 'DisplayTimezone');\n if (displayTimezone !== undefined) {\n this.displayTimezone = displayTimezone;\n }\n\n const useDeviceTimezone = this.userSettingsService.get(OptionTypes.LanguageAndTime, 'UseDeviceTimezone');\n if (useDeviceTimezone !== undefined) {\n this.useDeviceTimezone = useDeviceTimezone;\n }\n\n const timezoneId = this.userSettingsService.get(OptionTypes.LanguageAndTime, 'SelectedTimezone');\n let timezone;\n if (!useDeviceTimezone && timezoneId) {\n // Security Center set TimezoneInfo.Id, not the IANA so compare by id\n timezone = await this.retrieveTimezoneAsync(timezoneId);\n this.timezoneId = timezone?.iana;\n } else {\n // if no timezone is set or using device timezone, use the local one as fallback.\n const systemTimezone = await this.getLocalTimezone();\n timezone = systemTimezone;\n\n if (systemTimezone?.id) {\n this.timezoneId = systemTimezone.iana;\n }\n }\n if (timezone?.abbreviations) {\n this.timezoneAbbreviation = timezone?.abbreviations;\n }\n this.setMomentGlobalTimezone(this.timezoneId);\n this.timezone.next(timezone);\n }\n\n /**\n * Ensure the timezones are downloaded from the server\n */\n private async ensureTimezonesAsync() {\n try {\n if (!this.timezonesMap.size) {\n await this.getTimezonesAsync();\n }\n } catch (e: any) {\n this.loggerService.traceError(e);\n throw e;\n }\n }\n\n /**\n * Indicates if the date time is today\n *\n * @param dateTime date time\n * @param timezone time zone of the date time\n * @param convertTimeZone indicates if we need to convert the time zone\n * @returns date time is today or not\n */\n private isToday(dateTime: Date | number | string | Moment, timezone: string | null | undefined, convertTimeZone = true): boolean {\n const nowDate = moment().format('L');\n let valueDate = moment(dateTime).format('L');\n if (convertTimeZone && timezone) {\n valueDate = moment(dateTime).tz(timezone).format('L');\n }\n return nowDate === valueDate;\n }\n\n /**\n * Retrieve the timezone IANA name\n *\n * @param timezoneId Timezone's identifier (Windows or IANA)\n * @returns Timezone's IANA name\n */\n private retrieveTimezoneIANA(timezone?: string | ITimezoneInfo): string | null | undefined {\n let ianaTimezone = this.timezoneId;\n if (timezone) {\n if (typeof timezone === 'string') {\n const tzInfo = this.timezonesMap.get(timezone);\n if (tzInfo) {\n ianaTimezone = tzInfo.iana;\n }\n } else {\n ianaTimezone = timezone.iana;\n }\n }\n\n return ianaTimezone;\n }\n\n private setMomentGlobalTimezone(timezoneId?: string | null) {\n if (timezoneId) {\n this.loggerService.traceDebug(`setting default timezone to : ${timezoneId}`);\n moment.tz.setDefault(timezoneId);\n } else {\n moment.tz.setDefault(); // reset to default local timezone\n }\n }\n\n //#endregion\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IAnalyticsClient {\n /**\n * @return Success\n */\n getInitializationData(): Observable;\n /**\n * @return Success\n */\n postSendFeedback(): Observable;\n /**\n * @return Success\n */\n postAnalyticsTrackings(): Observable;\n}\n\n@Injectable()\nexport class AnalyticsClient implements IAnalyticsClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n getInitializationData(): Observable {\n let url_ = this.baseUrl + \"/Api/Analytics/InitializationData\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetInitializationData(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetInitializationData(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetInitializationData(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AnalyticsInitializationData.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n postSendFeedback(): Observable {\n let url_ = this.baseUrl + \"/Api/Analytics/SendFeedbackProxy/v2/track\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPostSendFeedback(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPostSendFeedback(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPostSendFeedback(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n postAnalyticsTrackings(): Observable {\n let url_ = this.baseUrl + \"/Api/Analytics/Proxy/v2/track\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPostAnalyticsTrackings(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPostAnalyticsTrackings(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPostAnalyticsTrackings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class AnalyticsInitializationData implements IAnalyticsInitializationData {\n userId?: string | null;\n systemId?: string | null;\n collectionPolicy?: string | null;\n licenseType?: string | null;\n features?: { [key: string]: boolean; } | null;\n\n constructor(data?: IAnalyticsInitializationData) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"] !== undefined ? _data[\"userId\"] : null;\n this.systemId = _data[\"systemId\"] !== undefined ? _data[\"systemId\"] : null;\n this.collectionPolicy = _data[\"collectionPolicy\"] !== undefined ? _data[\"collectionPolicy\"] : null;\n this.licenseType = _data[\"licenseType\"] !== undefined ? _data[\"licenseType\"] : null;\n if (_data[\"features\"]) {\n this.features = {} as any;\n for (let key in _data[\"features\"]) {\n if (_data[\"features\"].hasOwnProperty(key))\n (this.features)![key] = _data[\"features\"][key] !== undefined ? _guidConverters.toGuid(_data[\"features\"][key]) : null;\n }\n }\n else {\n this.features = null;\n }\n }\n }\n\n static fromJS(data: any): AnalyticsInitializationData {\n data = typeof data === 'object' ? data : {};\n let result = new AnalyticsInitializationData();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId !== undefined ? this.userId : null;\n data[\"systemId\"] = this.systemId !== undefined ? this.systemId : null;\n data[\"collectionPolicy\"] = this.collectionPolicy !== undefined ? this.collectionPolicy : null;\n data[\"licenseType\"] = this.licenseType !== undefined ? this.licenseType : null;\n if (this.features) {\n data[\"features\"] = {};\n for (let key in this.features) {\n if (this.features.hasOwnProperty(key))\n (data[\"features\"])[key] = this.features[key] !== undefined ? this.features[key] : null;\n }\n }\n return data;\n }\n\n clone(): AnalyticsInitializationData {\n const json = this.toJSON();\n let result = new AnalyticsInitializationData();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAnalyticsInitializationData {\n userId?: string | null;\n systemId?: string | null;\n collectionPolicy?: string | null;\n licenseType?: string | null;\n features?: { [key: string]: boolean; } | null;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","import { Injectable } from '@angular/core';\nimport { VersionClient, VersionInfo } from '../../api/api';\n\n@Injectable({ providedIn: 'root' })\nexport class VersionService {\n //#region Fields\n\n private versionInfo: VersionInfo | null = null;\n\n //#endregion\n\n //#region Constructors\n\n constructor(private versionApiController: VersionClient) {}\n\n //#endregion\n\n //#region Methods\n\n public async retrieveVersionAsync(): Promise {\n if (!this.versionInfo) {\n const result = await this.versionApiController.getVersionInfo().toPromise();\n this.versionInfo = result;\n }\n\n return this.versionInfo;\n }\n\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { SafeGuid } from 'safeguid';\nimport { PluginService } from '../plugin/plugin.service';\nimport { AnalyticsGeneralInfo } from './analytics.service';\n\ninterface EnvelopeExtTrace {\n name: string;\n}\n\n/**\n * A class that contains telemetry initializer functions to be used by an instance of ApplicationInsights\n *\n * @class TelemetryInitializers\n */\n\n@Injectable({ providedIn: 'root' })\nexport class TelemetryInitializers {\n // a regex used to capture the Guid from the url\n private readonly regexp = new RegExp(`/(.*)/task/(?[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})`, 'i');\n private readonly hostnameRegex = /(https?:\\/\\/)([^:/\\n\\r\\s]+)/gi;\n\n constructor(private pluginService: PluginService) {}\n\n /**\n * A method that will add a field to the telemetry log for the name of the visited page, whenever it is a PageviewData or PageviewPerformanceData log.\n *\n * @param envelope A telemetry item containing all the information that will be sent to Application Insights servers.\n */\n public addPluginNameToEnvelope(envelope: ITelemetryItem): void {\n if (envelope.baseType === 'PageviewData' || envelope.baseType === 'PageviewPerformanceData') {\n const uri = (envelope.ext?.trace as EnvelopeExtTrace | undefined)?.name;\n const matches = typeof uri === 'string' ? this.regexp.exec(uri) : null;\n const pluginId = matches?.groups?.guid;\n if (pluginId) {\n const pluginName = this.pluginService.getPluginName(SafeGuid.parse(pluginId));\n if (envelope.data) {\n envelope.data.pluginName = pluginName || 'N/A';\n envelope.data.pluginId = pluginId || 'N/A';\n }\n }\n }\n }\n\n /**\n * A method that goes through all baseData fields and anonymizes any strings that look like an absolute URL, replacing the hostname with dashes.\n *\n * @param envelope A telemetry item containing all the information that will be sent to Application Insights servers.\n */\n public anonymizeHostNames(envelope: ITelemetryItem): void {\n if (!envelope.baseData) {\n return;\n }\n\n const stringValue = JSON.stringify(envelope.baseData);\n\n if (this.hostnameRegex.exec(stringValue)) {\n envelope.baseData = JSON.parse(stringValue.replace(this.hostnameRegex, '$1--')) as { [key: string]: any };\n }\n }\n\n /**\n * A method that will add general information about the app to every log. This includes the following:\n * - Security Center version\n * - Web App version\n * - Licenses\n * - License type\n *\n * @param envelope A telemetry item containing all the information that will be sent to Application Insights servers.\n */\n public addGeneralInfoToEnvelope(envelope: ITelemetryItem, info: AnalyticsGeneralInfo): void {\n envelope.data = {\n ...envelope.data,\n ...info,\n };\n }\n\n /**\n * A method that will filter the telemetry items sent to Application Insights.\n *\n * @param envelope A telemetry item containing all the information that will be sent to Application Insights servers.\n * @returns will return false if the telemetry item is filtered\n */\n public filter(envelope: ITelemetryItem): boolean {\n if (envelope.name.endsWith('.RemoteDependency')) {\n return false;\n }\n return true;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ApplicationInsights, ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { LicensePartsState } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { Constants } from '@src/constants';\nimport { AnalyticsClient, AnalyticsInitializationData } from '../../../general/api/api';\nimport { PluginService } from '../plugin/plugin.service';\nimport { VersionService } from '../version/version.service';\nimport { TelemetryInitializers } from './telemetryInitializers';\n\nexport enum CollectionPolicy {\n On = 'On',\n Off = 'Off',\n Anonymous = 'Anonymous',\n}\n\nexport class AnalyticsGeneralInfo {\n securityCenterVersion?: string;\n appVersion?: string;\n licenses?: LicensePartsState;\n licenseType?: string;\n features?: { [key: string]: boolean };\n}\n\n/**\n * A singleton service that offers a wrapper around Application Insights SDK\n * and adds additional data to all analytics logs.\n *\n * @class AnalyticsService\n */\n\n@Injectable({ providedIn: 'root' })\nexport class AnalyticsService {\n private appInsights: ApplicationInsights | null = null;\n private collectionPolicy: CollectionPolicy = CollectionPolicy.Off;\n private userId?: string;\n private systemId?: string;\n private ingestionEndpoint?: string;\n private generalInfo: AnalyticsGeneralInfo = {};\n\n constructor(\n private versionService: VersionService,\n private pluginService: PluginService,\n private analyticsApiController: AnalyticsClient,\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string,\n private telemetryInitializers: TelemetryInitializers\n ) {}\n\n /**\n * Will create the singleton instance of Application Insights if the collection policy setting is On or Anonymous.\n */\n public setupAppInsightsAsync = async (): Promise => {\n // \"/v2/track\" will be added to the endpoint by the SDK\n this.ingestionEndpoint = `${this.baseUrl}Api/Analytics/Proxy`;\n if (this.appInsights) {\n return;\n }\n await this.retrieveInitializationDataAsync();\n\n if (this.collectionPolicy === CollectionPolicy.Off) {\n return;\n }\n\n this.generalInfo.licenses = this.pluginService.getLicensesPartsState();\n await this.retrieveVersionAsync();\n\n const appInsights = new ApplicationInsights({\n config: {\n connectionString: `InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=${this.ingestionEndpoint}`,\n enableAutoRouteTracking: true, // option to log all route changes\n },\n });\n\n appInsights.loadAppInsights();\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.filter(envelope));\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.addGeneralInfoToEnvelope(envelope, this.generalInfo));\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.addPluginNameToEnvelope(envelope));\n\n if (this.collectionPolicy === CollectionPolicy.Anonymous) {\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.anonymizeHostNames(envelope));\n appInsights.clearAuthenticatedUserContext();\n }\n\n appInsights.setAuthenticatedUserContext(this.userId as string, this.systemId as string, true);\n this.appInsights = appInsights;\n };\n\n public clearAppInsightsData = (): void => {\n if (this.appInsights) {\n this.appInsights.clearAuthenticatedUserContext();\n this.appInsights = null;\n }\n };\n\n // #region Public methods\n\n /**\n * Will track one page view event.\n *\n * @param name - a name for the tracking event\n * @param uri - the uri of the page to track\n */\n public logPageView(name?: string, uri?: string): void {\n // option to call manually\n if (!this.areAnalyticsEnabled()) {\n return;\n }\n this.appInsights?.trackPageView({\n name,\n uri,\n });\n }\n\n /**\n * Will track one custom event.\n *\n * @param name - a name for the tracking event\n * @param properties - an object that can contain any key, should be representative of the event we want to track\n */\n public logEvent(name: string, properties?: { [key: string]: any }): void {\n if (!this.areAnalyticsEnabled()) {\n return;\n }\n this.appInsights?.trackEvent({ name }, { customProperties: properties });\n }\n\n /**\n * Will track a custom metric event.\n *\n * @param name - a name for the tracking event\n * @param average - a value measured in the application that represents the name parameter\n * @param properties - an object that can contain any key, should be representative of the event we want to track\n */\n public logMetric(name: string, average: number, properties?: { [key: string]: any }): void {\n if (!this.areAnalyticsEnabled()) {\n return;\n }\n this.appInsights?.trackMetric({ name, average }, properties);\n }\n\n /**\n * Will track a custom exception event.\n *\n * @param exception - an exception generated by the app that we want to track\n * @param severityLevel - the severity level of the generated exception\n */\n public logException(exception: Error, severityLevel?: number): void {\n if (!this.areAnalyticsEnabled()) {\n return;\n }\n this.appInsights?.trackException({ exception, severityLevel });\n }\n\n /**\n * Will track a custom trace event.\n *\n * @param message - the message corresponding to the trace event\n * @param properties - an object that can contain any key, should be representative of the event we want to track\n */\n public logTrace(message: string, properties?: { [key: string]: any }): void {\n if (!this.areAnalyticsEnabled()) {\n return;\n }\n this.appInsights?.trackTrace({ message }, properties);\n }\n\n // #endregion\n\n // #region Private methods\n\n /**\n * Will retrieve the values for the security center version and web app version and assign them to the class' properties.\n */\n private async retrieveVersionAsync(): Promise {\n const versionInfo = await this.versionService.retrieveVersionAsync();\n if (versionInfo) {\n this.generalInfo.securityCenterVersion = versionInfo.securityCenterExactVersion;\n this.generalInfo.appVersion = versionInfo.buildVersion;\n }\n }\n\n /**\n * Will retrieve the values needed to initialize the Application Insights SDK\n * and assign them to the class' properties.\n */\n private async retrieveInitializationDataAsync(): Promise {\n const data: AnalyticsInitializationData = await this.analyticsApiController.getInitializationData().toPromise();\n if (data.userId) {\n this.userId = data.userId;\n }\n if (data.systemId) {\n this.systemId = data.systemId;\n }\n if (data.collectionPolicy) {\n this.collectionPolicy = this.stringToCollectionPolicy(data.collectionPolicy);\n }\n if (data.licenseType) {\n this.generalInfo.licenseType = data.licenseType;\n }\n if (data.features) {\n this.generalInfo.features = data.features;\n }\n }\n\n /**\n * A helper method to convert the collection policy in string to an enum.\n *\n * @param stringValue - a value of either \"on\", \"off\" or \"anonymous\" corresponding to the collection policy set by an administrator\n * @returns\n */\n private stringToCollectionPolicy(stringValue: string): CollectionPolicy {\n switch (stringValue.toLowerCase()) {\n case 'on':\n return CollectionPolicy.On;\n case 'off':\n return CollectionPolicy.Off;\n case 'anonymous':\n return CollectionPolicy.Anonymous;\n default:\n return CollectionPolicy.Off;\n }\n }\n\n /**\n * @returns true if collection policy is either \"On\" or \"Anonymous\" AND application insights is initialized. Otherwise, returns false.\n */\n private areAnalyticsEnabled(): boolean {\n return this.collectionPolicy !== CollectionPolicy.Off && !!this.appInsights;\n }\n\n // #endregion\n}\n","// Autogenerated: CodeGen/Content?language=ts&InterfaceOnly=True on 2021-09-14 3:37:12 PM\n// Autogenerated: CodeGen/Content?language=ts&InterfaceOnly=False on 2021-09-14 3:37:12 PM\n// Autogenerated: CodeGen/ContentGroup?language=ts&InterfaceOnly=True on 2021-09-14 3:37:12 PM\n// Autogenerated: CodeGen/ContentGroup?language=ts&InterfaceOnly=False on 2021-09-14 3:37:12 PM\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\n\nexport interface IContent extends IFieldObject {\n id: IGuid;\n type: IGuid;\n title: string;\n icon: string;\n customIconId: IGuid | null;\n color: string;\n description: string;\n source: string;\n parameters: IFieldObject;\n grantedPrivileges: ObservableCollection;\n}\n\nexport class Content extends FieldObject implements IContent {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Type\n public get type(): IGuid {\n return this.getFieldGuid('Type');\n }\n public set type(value: IGuid) {\n this.setFieldGuid('Type', value);\n }\n // Title\n public get title(): string {\n return this.getField('Title');\n }\n public set title(value: string) {\n this.setField('Title', value);\n }\n // Icon\n public get icon(): string {\n return this.getField('Icon');\n }\n public set icon(value: string) {\n this.setField('Icon', value);\n }\n // CustomIconId\n public get customIconId(): IGuid | null {\n return this.getNullableFieldGuid('CustomIconId');\n }\n public set customIconId(value: IGuid | null) {\n this.setNullableFieldGuid('CustomIconId', value);\n }\n // Color\n public get color(): string {\n return this.getField('Color');\n }\n public set color(value: string) {\n this.setField('Color', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Source\n public get source(): string {\n return this.getField('Source');\n }\n public set source(value: string) {\n this.setField('Source', value);\n }\n // Parameters\n public get parameters(): IFieldObject {\n return this.getFieldObject(FieldObject, 'Parameters');\n }\n public set parameters(value: IFieldObject) {\n this.setFieldObject('Parameters', value);\n }\n // GrantedPrivileges\n public get grantedPrivileges(): ObservableCollection {\n return this.getFieldArrayGuid('GrantedPrivileges');\n }\n public set grantedPrivileges(value: ObservableCollection) {\n this.setFieldArrayGuid('GrantedPrivileges', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setFieldGuid('Type', SafeGuid.EMPTY);\n this.setField('Title', '');\n this.setField('Icon', '');\n this.setFieldGuid('CustomIconId', SafeGuid.EMPTY);\n this.setField('Color', '');\n this.setField('Description', '');\n this.setField('Source', '');\n const objParameters = new FieldObject();\n objParameters.initializeAllFields();\n this.setFieldObject('Parameters', objParameters);\n this.setFieldArrayGuid('GrantedPrivileges', new ObservableCollection());\n }\n}\n\nexport interface IContentGroup extends IFieldObject {\n id: IGuid;\n mainContent: IContent;\n subContents: ObservableCollection;\n}\n\nexport class ContentGroup extends FieldObject implements IContentGroup {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // MainContent\n public get mainContent(): IContent {\n return this.getFieldObject(Content, 'MainContent');\n }\n public set mainContent(value: IContent) {\n this.setFieldObject('MainContent', value);\n }\n // SubContents\n public get subContents(): ObservableCollection {\n return this.getFieldObjectArray(Content, 'SubContents');\n }\n public set subContents(value: ObservableCollection) {\n this.setFieldObjectArray('SubContents', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n const objMainContent = new Content();\n objMainContent.initializeAllFields();\n this.setFieldObject('MainContent', objMainContent);\n this.setFieldArray('SubContents', new ObservableCollection());\n }\n}\n","// Autogenerated: CodeGen/ContentController?language=ts&InterfaceOnly=False on 2021-06-21 12:13:15 PM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { ContentGroup, IContentGroup } from './content.controller.data';\nimport { IContentController, IContentFieldSource, IContentMultiSource, IContentSource } from './content.controller.interfaces';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\n\nexport class ContentSource extends FieldObject implements IContentSource {\n // SourceId\n public get sourceId(): string {\n return this.getField('SourceId');\n }\n public set sourceId(value: string) {\n this.setField('SourceId', value);\n }\n // ContextId\n public get contextId(): IGuid {\n return this.getFieldGuid('ContextId');\n }\n public set contextId(value: IGuid) {\n this.setFieldGuid('ContextId', value);\n }\n\n public initializeAllFields(): void {\n this.setField('SourceId', '');\n this.setFieldGuid('ContextId', SafeGuid.EMPTY);\n }\n}\n\nexport class ContentFieldSource extends FieldObject implements IContentFieldSource {\n // Fields\n public get fields(): IFieldObject {\n return this.getFieldObject(FieldObject, 'Fields');\n }\n public set fields(value: IFieldObject) {\n this.setFieldObject('Fields', value);\n }\n // ContextId\n public get contextId(): IGuid {\n return this.getFieldGuid('ContextId');\n }\n public set contextId(value: IGuid) {\n this.setFieldGuid('ContextId', value);\n }\n\n public initializeAllFields(): void {\n const objFields = new FieldObject();\n objFields.initializeAllFields();\n this.setFieldObject('Fields', objFields);\n this.setFieldGuid('ContextId', SafeGuid.EMPTY);\n }\n}\n\nexport class ContentMultiSource extends FieldObject implements IContentMultiSource {\n // SourceIds\n public get sourceIds(): ObservableCollection {\n return this.getFieldArray('SourceIds');\n }\n public set sourceIds(value: ObservableCollection) {\n this.setFieldArray('SourceIds', value);\n }\n // ContextId\n public get contextId(): IGuid {\n return this.getFieldGuid('ContextId');\n }\n public set contextId(value: IGuid) {\n this.setFieldGuid('ContextId', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('SourceIds', new ObservableCollection());\n this.setFieldGuid('ContextId', SafeGuid.EMPTY);\n }\n}\n\nexport class ContentController extends RestObject implements IContentController {\n constructor() {\n super('api/Content');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async getContentAsync(query: IContentSource, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(ContentGroup, 'Content' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n public async getContentFromFieldsAsync(query: IContentFieldSource, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(ContentGroup, 'ContentFromField' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n public async getContentsAsync(query: IContentMultiSource, transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(ContentGroup, 'Contents' + '?' + query.toQueryString(), 'Id', true, false, null, transaction);\n }\n\n // #endregion Rest Methods\n\n}\n","import { Injectable } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { ContentController, ContentFieldSource, ContentMultiSource, ContentSource } from '../../controllers/content/content.controller';\nimport { ContentGroup, Content } from '../../interfaces/plugins/public/plugin-public.interface';\nimport { IContentGroup, IContent, ContentGroup as ControllerContentGroup } from '../../controllers/content/content.controller.data';\nimport { IContentController } from '../../controllers/content/content.controller.interfaces';\nimport { LoggerService } from '../logger/logger.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({\n providedIn: 'root',\n})\nexport class ContentProviderService {\n private contentsCache: Map = new Map();\n private readonly cacheDuration = 2000;\n\n constructor(private securityCenterProvider: SecurityCenterClientService, private loggerService: LoggerService) {}\n\n public async getContentAsync(sourceId: string | IGuid, contextId?: IGuid): Promise {\n // TODO: Check if contextId being undefined is properly handled, cacheKey could result in \"_undefined\";\n const cacheKey = `${sourceId.toString()}_${contextId?.toString() || 'undefined'}`;\n if (this.contentsCache.has(cacheKey)) {\n return new Deferred(this.contentsCache.get(cacheKey)).promise;\n }\n\n const contentController = await this.securityCenterProvider?.scClient.getAsync(ContentController);\n if (contentController) {\n const source = new ContentSource();\n source.sourceId = sourceId.toString();\n if (contextId) {\n source.contextId = contextId;\n }\n const contentGroup = await contentController.getContentAsync(source);\n const adapted = this.adaptGroup(contentGroup);\n this.contentsCache.set(cacheKey, adapted);\n\n setTimeout(() => {\n this.contentsCache.delete(cacheKey);\n }, this.cacheDuration);\n return adapted;\n }\n\n return null;\n }\n\n public async getContentsAsync(sourceIds: string[] | IGuid[], contextId?: IGuid): Promise {\n const contentController = await this.securityCenterProvider?.scClient.getAsync(ContentController);\n if (contentController) {\n const sources = new ObservableCollection();\n sourceIds.forEach((item: string | IGuid) => sources.add(item.toString()));\n const mutliSource = new ContentMultiSource();\n mutliSource.sourceIds = sources;\n if (contextId) {\n mutliSource.contextId = contextId;\n }\n const contentGroups = await contentController.getContentsAsync(mutliSource);\n\n if (contentGroups) {\n return Array.from(contentGroups, (contentGroup) => this.adaptGroup(contentGroup) as ContentGroup);\n }\n }\n\n return null;\n }\n\n public async getContentFromFieldsAsync(fields: IFieldObject, contextId?: IGuid): Promise {\n const contentController = await this.securityCenterProvider?.scClient.getAsync(ContentController);\n if (contentController) {\n const fieldSource = new ContentFieldSource();\n fieldSource.fields = fields;\n if (contextId) {\n fieldSource.contextId = contextId;\n }\n const contentGroup = await contentController.getContentFromFieldsAsync(fieldSource);\n return this.adaptGroup(contentGroup);\n }\n\n return null;\n }\n\n public getContentFromString(contentGroupString: string): ContentGroup | null {\n try {\n const contentGroup = new ControllerContentGroup();\n const json = JSON.parse(contentGroupString) as Record;\n contentGroup.loadFields(json);\n return this.adaptGroup(contentGroup);\n } catch (e) {\n this.loggerService.traceError('Unable to get a content from a string data', e);\n return null;\n }\n }\n\n private adaptGroup(contentGroup: IContentGroup | null): ContentGroup | null {\n if (!contentGroup) {\n return null;\n }\n\n const mainContentAdapted = this.adapt(contentGroup.mainContent);\n\n if (!mainContentAdapted) {\n return null;\n }\n\n const subContents = Array.from(contentGroup.subContents, (content) => this.adapt(content, mainContentAdapted)) as Content[];\n subContents.forEach((subContent) => {\n subContent.contextsubContents = Array.from(\n contentGroup.subContents.where((item) => item.id !== subContent.id),\n (subContentToAdapt) => this.adapt(subContentToAdapt, mainContentAdapted)\n ) as Content[];\n });\n\n return {\n id: contentGroup.id,\n mainContent: mainContentAdapted,\n subContents,\n };\n }\n\n private adapt(content: IContent | null, mainContent?: Content): Content | null {\n if (!content) {\n return null;\n }\n return {\n id: content.id,\n type: content.type,\n title: content.title,\n source: content.source,\n icon: content.icon,\n customIconId: content.customIconId ?? undefined,\n description: content.description,\n contextContent: mainContent ?? null,\n parameters: content.parameters,\n grantedPrivileges: Array.from(content.grantedPrivileges),\n color: content.color,\n contextsubContents: null, // will be set afterwards since content only doesn't know...\n };\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { Receiver, Selector } from '../../../../store';\n\nimport { ContentGroup } from '../../interfaces/plugins/public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface ContextDataStateModel {\n contents: ContentGroup[];\n currentContent: ContentGroup | null;\n}\n\n@State({\n name: 'contextDataState',\n defaults: { contents: [], currentContent: null },\n})\n@Injectable()\nexport class SideContextDataState {\n @Selector()\n public static currentContent(state: ContextDataStateModel): ContentGroup | null {\n return state.currentContent;\n }\n\n @Selector()\n public static contentCount(state: ContextDataStateModel): number {\n return state.contents.length;\n }\n\n @Receiver()\n public static setMainContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.length = 0;\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static pushContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static popContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.pop();\n state.currentContent = state.contents.length > 0 ? state.contents[state.contents.length - 1] : null;\n return state;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { Injectable } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ContentService } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { MethodEmitter } from '../../../../store';\nimport { SecurityCenterStateService } from '../state/security-center-state.service';\nimport { ContentLoad, ContentLoadingSupport } from '../../interfaces/plugins/internal/plugin-internal.interface';\nimport { ContentGroup, DisplayContext } from '../../interfaces/plugins/public/plugin-public.interface';\nimport { SideContextDataState } from './side-context-data.state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({\n providedIn: 'root',\n})\nexport class SideContextDataService extends SecurityCenterStateService implements ContentService, ContentLoadingSupport {\n @Select(SideContextDataState.currentContent)\n public currentContent$!: Observable;\n\n @SelectSnapshot(SideContextDataState.currentContent)\n public currentContent!: ContentGroup | null;\n\n @SelectSnapshot(SideContextDataState.contentCount)\n public contentCount!: number;\n\n displayContext: DisplayContext = DisplayContext.Sidepane;\n\n constructor(securityCenterClient: SecurityCenterClientService) {\n super(securityCenterClient);\n }\n\n @MethodEmitter(SideContextDataState.setMainContent)\n public setMainContent(content: ContentGroup | undefined | null): void {}\n\n @MethodEmitter(SideContextDataState.pushContent)\n public pushContent(content?: ContentGroup): void {}\n\n @MethodEmitter(SideContextDataState.popContent)\n public popContent(): void {}\n\n public setLoadingMainContent(): void {\n this.setMainContent({ id: SafeGuid.newGuid(), mainContent: new ContentLoad(), subContents: [] });\n }\n\n public clearMainContent(): void {\n this.setMainContent(null);\n }\n\n protected clearState(): void {\n super.clearState();\n\n this.setMainContent(null);\n }\n}\n","// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nimport { Constants } from '../../shared/utilities/constants';\n\nexport const SharedContentFields = Constants({\n DomainEventType: 'DomainEventType',\n EventType: 'EventType',\n SourceEntityGuid: 'SourceEntityGuid',\n SourceEntityName: 'SourceEntityName',\n Timestamp: 'Timestamp',\n Timezone: 'Timezone',\n EventId: 'EventId',\n ContextId: 'ContextId',\n});\n","import { Injectable, Inject } from '@angular/core';\nimport { NavigationStart, Params, Router } from '@angular/router';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { ContentProviderService } from '../content/content-provider.service';\nimport { COMMANDS_SERVICE, CommandsService, SIDE_CONTEXT_SERVICE } from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { SideContextDataService } from '../side-context-data/side-context-data.service';\nimport { SharedContentFields } from '../../enumerations/shared-content-fields';\nimport { ContextTypes } from '../../interfaces/plugins/public/context-types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigationService {\n public routeChanging$: Observable;\n private navigationContextId: IGuid = SafeGuid.parse('C40A73FB-D994-46A7-B4E1-EABFBB38FC31');\n\n constructor(\n private router: Router,\n private contentProviderService: ContentProviderService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n @Inject(SIDE_CONTEXT_SERVICE) private sideContextService: SideContextDataService\n ) {\n this.routeChanging$ = router.events.pipe(\n filter((event) => event instanceof NavigationStart),\n map(() => undefined)\n );\n }\n\n public getCurrentTask(): IGuid {\n const url = this.router.url;\n return SafeGuid.parse(this.router.parseUrl(url)?.root?.children?.primary?.segments[1]?.path);\n }\n\n public getCurrentTaskPath(): string {\n const task = this.getCurrentTask().toString();\n const taskIdPos = this.router.url.indexOf(task);\n return this.router.url.substr(0, taskIdPos + task.length);\n }\n\n public async navigate(navigation: string, keepContext = false, queryParams?: Params): Promise {\n if (navigation !== null) {\n const tokens = toLowerCaseGuids(navigation).split('?');\n const task = tokens[0];\n\n // Parse the navigation parameters\n const params = new Map();\n const routerParams: Params = queryParams ?? {};\n if (tokens.length > 1) {\n const queryString = tokens[1];\n const queries = queryString.split('&');\n\n queries.forEach((indexQuery: string) => {\n const indexPair = indexQuery.split('=');\n const queryKey = decodeURIComponent(indexPair[0]);\n const queryValue = decodeURIComponent(indexPair.length > 1 ? indexPair[1] : '');\n params.set(queryKey, queryValue);\n routerParams[queryKey] = queryValue;\n });\n }\n\n // navigate depending on the group name\n if (task === '/sidepane') {\n this.sideContextService.setLoadingMainContent();\n\n const id = params.get('id');\n if (id) {\n const content = await this.contentProviderService.getContentAsync(id, this.navigationContextId);\n if (content) {\n // push the parameters in the mainContent\n for (const [k, v] of params.entries()) {\n content.mainContent.parameters?.setField(k, v);\n }\n\n if (keepContext) {\n this.sideContextService.pushContent(content);\n } else {\n this.sideContextService.setMainContent(content);\n }\n }\n }\n } else if (task?.startsWith('/modal')) {\n // modal outlet navigation\n const modalTokens = task.split(':');\n if (modalTokens.length > 1) {\n const modalPath = modalTokens[1];\n await this.router.navigate([{ outlets: { modal: modalPath } }], { queryParams: routerParams, skipLocationChange: true });\n // const currentRoute = this.router.routerState.root;\n // await this.router.navigate([{ outlets: { modal: modalPath } }], { queryParams: params, skipLocationChange: true, relativeTo: currentRoute });\n }\n } else if (task?.startsWith('/command')) {\n // commands based navigation\n const commandTokens = task.split(':');\n if (commandTokens.length > 1) {\n const commandId = SafeGuid.parse(commandTokens[1]);\n this.commandsService.executeCommand(commandId, { type: ContextTypes.Specific, data: routerParams });\n }\n } else if (task?.startsWith('/event')) {\n // events based navigation\n const eventId = params.get('id');\n if (eventId) {\n const eventField = new FieldObject();\n eventField.setFieldGuid(SharedContentFields.EventId, SafeGuid.parse(eventId));\n\n const content = await this.contentProviderService.getContentFromFieldsAsync(eventField);\n if (content && !content.id.isEmpty()) {\n if (keepContext) {\n this.sideContextService.pushContent(content);\n } else {\n this.sideContextService.setMainContent(content);\n }\n }\n }\n } else if (task?.startsWith('/datum')) {\n // datum based navigation\n const sourceId = params.get('id');\n const typeId = params.get('type');\n const roleId = params.get('role');\n if (sourceId && typeId && roleId) {\n const fields = new FieldObject();\n fields.setField('SourceId', sourceId);\n fields.setField('DataType', typeId);\n fields.setField('SourceRole', roleId);\n const content = await this.contentProviderService.getContentFromFieldsAsync(fields, this.navigationContextId);\n if (content) {\n if (keepContext) {\n this.sideContextService.pushContent(content);\n } else {\n this.sideContextService.setMainContent(content);\n }\n }\n }\n } else {\n // navigate!\n await this.router.navigate([task], { queryParams: routerParams });\n }\n }\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AnalyticsService } from '../analytics/analytics.service';\nimport { NavigationService } from '../navigation/navigation.service';\n\n/**\n * @description\n * This service allows content to be set as a DOMportal to be displayed in a portal outlet.\n */\n@UntilDestroy()\n@Injectable()\nexport class ContentOverlayService {\n public contentOverlay$: Observable | null>;\n private contentOverlaySubject = new BehaviorSubject | null>(null);\n\n constructor(private analyticsService: AnalyticsService, private navigationService: NavigationService) {\n this.contentOverlay$ = this.contentOverlaySubject.asObservable();\n this.navigationService.routeChanging$.pipe(untilDestroyed(this)).subscribe(() => this.clearOverlay());\n }\n\n /**\n * @description\n * This method will set the the new content for the portal outlet and hide the content's widget in the side pane\n */\n public setOverlay(overlay: Element | ElementRef): void {\n this.contentOverlaySubject.next(new DomPortal(overlay));\n this.analyticsService.logEvent('Content overlay set');\n }\n\n /**\n * @description\n * This method will remove the DOMportal from the portal outlet and make the side pane widget visible again\n */\n public clearOverlay(): void {\n this.contentOverlaySubject.next(null);\n\n this.analyticsService.logEvent('Content overlay cleared');\n }\n\n /**\n * Returns whether or not content is currently in the content overlay.\n *\n * @returns **True** if the content overlay has been set a portal, **false** if not or is cleared.\n */\n public hasOverlay(): boolean {\n return !!this.contentOverlaySubject.getValue();\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { PluginItem } from '../../interfaces/plugins/internal/pluginItem';\nimport { MultiPlugin } from './multi-plugin';\nimport { VerticalPlugin } from './vertical-plugin';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class PluginsStack {\n /**\n * [] = Vertical\n * < > = Navigation\n * () = Multi\n *\n * Example of verticalPlugins:\n * [\n * < ( Video Player ) ( Video Control ) ( Video Expander ) >\n * < ( Video Player ) ( Video Control ) ( Video Expander ) >\n * ]\n * [ < ( Latest Events Widget ) > ]\n */\n public verticalPlugins?: VerticalPlugin[];\n public verticalPlugins$: Observable;\n\n private verticalPluginsSubject: BehaviorSubject = new BehaviorSubject(this.verticalPlugins);\n\n constructor() {\n this.verticalPlugins$ = this.verticalPluginsSubject.asObservable();\n }\n\n public empty(): void {\n if (this.verticalPlugins) {\n this.verticalPlugins.length = 0;\n this.verticalPluginsSubject.next(this.verticalPlugins);\n }\n }\n\n public fill(plugins: PluginItem[]): void {\n if (!this.verticalPlugins) this.verticalPlugins = [];\n\n // Compute navigable parent plugins (no parent)\n // e.g.:\n // [p1]<->[p2]\n // [p3]<->[p4]\n // [p5]\n for (const plugin of plugins) {\n if (!plugin.exposure.requiredParentPlugin) {\n // Look for the left most sibling of the same exposure id in the vertical list\n const leftSiblingGroup = this.verticalPlugins.find((p) => p.navigationPlugins[0].parentPlugin.exposure.id.equals(plugin.exposure.id));\n const newNavigationPlugin: MultiPlugin = {\n parentPlugin: plugin,\n childPlugins: [],\n };\n if (leftSiblingGroup && plugin.exposure.supportsCarousel) {\n leftSiblingGroup.navigationPlugins.push(newNavigationPlugin);\n } else {\n // Create the horizontal group if no left sibling is found or does not support carousel\n this.verticalPlugins.push({ navigationPlugins: [newNavigationPlugin] });\n }\n }\n }\n\n // Stacked plugins (no parent and left sibling of the same exposure id)\n // e.g.:\n // [p1]<->[p2]\n // [p3/p6]<->[p4/p7]\n // [p5]\n for (const plugin of plugins.filter((p) => p.exposure.requiredParentPlugin)) {\n // Loop through all vertical to find one with the same exposure id as required parent\n const parentVerticals = this.verticalPlugins.find((p) => p.navigationPlugins[0].parentPlugin.exposure.id.equals(plugin.exposure.requiredParentPlugin));\n if (!parentVerticals) {\n throw new Error(\n 'Parent plugin not found with child :\\n' +\n JSON.stringify({\n parentExposure: plugin.exposure.requiredParentPlugin,\n childExposure: plugin.exposure.id,\n })\n );\n }\n // Loop through all horizontal to find one with the same exposure id as the plugin\n for (const potentialParent of parentVerticals.navigationPlugins) {\n // If a plugin of the same exposure id is not already in the stack, add it\n if (!potentialParent.childPlugins.some((p) => p.exposure.id.equals(plugin.exposure.id))) {\n potentialParent.childPlugins.push(plugin);\n break;\n }\n }\n }\n\n this.verticalPluginsSubject.next(this.verticalPlugins);\n }\n\n /**\n * Replace the plugin stack, clear it and refilling it with\n \n \n {{ headerInfo?.title }}\n \n {{ headerInfo?.description }}\n {{ headerInfo?.timestamp }}\n\n","/**\n * Source: https://github.com/nigrosimone/ng-let\n * Author: Simone Nigro\n * License: MIT\n */\n\nimport { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\ninterface NgLetContext {\n /**\n * using `ngrxLet` to enable `as` syntax: `*ngLet=\"foo as bar\"`\n */\n ngLet: T;\n /**\n * using `$implicit` to enable `let` syntax: `*ngLet=\"foo; let bar\"`\n */\n $implicit: T;\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngLet]',\n})\nexport class NgLetDirective {\n /** @internal */\n public static ngLetUseIfTypeGuard: void;\n\n /**\n * Assert the correct type of the expression bound to the `NgLet` input within the template.\n *\n * The presence of this static field is a signal to the Ivy template type check compiler that\n * when the `NgLet` structural directive renders its template, the type of the expression bound\n * to `NgLet` should be narrowed in some way. For `NgLet`, the binding expression itself is used to\n * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgLet`.\n */\n static ngTemplateGuard_ngLet: 'binding';\n\n private context: NgLetContext = { ngLet: null, $implicit: null };\n private hasView = false;\n\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef>) {}\n\n @Input()\n set ngLet(value: T) {\n this.context.$implicit = this.context.ngLet = value;\n if (!this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n this.hasView = true;\n }\n }\n\n /**\n * Asserts the correct type of the context for the template that `NgLet` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgLet` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir: NgLetDirective, ctx: unknown): ctx is NgLetContext {\n return true;\n }\n}\n","\n
\n
\n
\n
\n \n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n \n \n \n \n\n \n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n
\n \"Girl\n {{ 'STE_MESSAGE_INFO_NO_CONTENT' | translate }}\n {{ 'STE_MESSAGE_INFO_CONTENT_UNAVAILABLE_OR_NON_EXISTING' | translate }}\n
\n
\n
\n
\n","import { ChangeDetectorRef, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ButtonFlavor, Icon, ItemSlot } from '@genetec/gelato';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { Content, ContentGroup } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentLoad } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { focusDomElement } from '@modules/shared/utilities/dom-helper';\nimport { SafeGuid } from 'safeguid';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ContentOverlayService } from '@modules/shared/services/content-overlay/content-overlay.service';\nimport { PluginsStack } from '../plugins/plugins-stack';\nimport { TrackedComponent } from '../tracked/tracked.component';\nimport { SidePaneHeaderInfo } from './sidepane-header/sidepane-header.component';\n\n// ==========================================================================\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@UntilDestroy()\n@Component({\n selector: 'app-side-pane',\n templateUrl: './side-pane.component.html',\n styleUrls: ['./side-pane.component.scss'],\n})\nexport class SidePaneComponent extends TrackedComponent implements OnInit {\n public static readonly WidthPx = 450;\n\n @Input()\n public elementId = 'appRightSidePane';\n\n @Input()\n public contextDataService!: ContentService;\n\n public pluginsStack: PluginsStack = new PluginsStack();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n\n public headerInfo?: SidePaneHeaderInfo;\n public timestamp?: string;\n public color = '';\n public contentCount$: Observable;\n\n public readonly defaultHeaderInfo: SidePaneHeaderInfo = {\n title: '',\n titleColor: '',\n titleIcon: '',\n titleCustomIconState: CustomIconState.All,\n description: '',\n };\n\n public isLoading = false;\n public hasContent = true;\n public hasCustomHeader = false;\n public sidePaneHeaderPluginItem?: PluginItem;\n\n private contentCountSubject = new BehaviorSubject(0);\n private mainContentTimestamp?: Date;\n private deviceTimezone?: string;\n\n constructor(\n private pluginService: PluginService,\n private timeService: TimeService,\n trackingService: TrackingService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(ContentOverlayService) @Optional() private contentOverlayService?: ContentOverlayService\n ) {\n super(trackingService);\n this.contentCount$ = this.contentCountSubject.asObservable();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.contextDataService?.currentContent$.pipe(untilDestroyed(this)).subscribe(async (content) => {\n // push count in subject\n this.contentCountSubject.next(this.contextDataService?.contentCount);\n await this.currentContentChanged(content);\n });\n\n this.contentCount$.pipe(untilDestroyed(this)).subscribe((count) => {\n if (this.headerInfo) {\n this.headerInfo.contentCount = count;\n }\n });\n\n this.timeService.timezone$.pipe(untilDestroyed(this)).subscribe((timezone) => {\n if (this.mainContentTimestamp) {\n this.timestamp = this.timeService.formatTime(\n this.mainContentTimestamp,\n DateFormat.DateTime,\n true,\n true,\n this.timeService.useDeviceTimezone ? this.deviceTimezone : timezone\n );\n if (this.headerInfo) {\n this.headerInfo.timestamp = this.timestamp;\n }\n }\n });\n }\n\n public closeSidePane(): void {\n this.contextDataService?.clearMainContent();\n this.contentOverlayService?.clearOverlay();\n }\n\n public onNavigateBack(): void {\n this.contextDataService?.popContent();\n }\n\n private async currentContentChanged(content: ContentGroup | null) {\n const sidepane = document.getElementById(this.elementId);\n\n let isLoadingContent = false;\n this.pluginsStack.empty();\n\n if (sidepane !== null) {\n if (content) {\n const mainContent = content.mainContent;\n\n isLoadingContent = mainContent.type.equals(ContentLoad.typeId);\n if (!isLoadingContent) {\n const plugins = await this.getPlugins(content);\n\n this.timestamp = this.getTimestamp(mainContent);\n this.color = this.getNoAlphaColor(mainContent.color);\n this.headerInfo = this.getHeaderInfo(mainContent);\n\n await this.setCustomHeader(mainContent);\n\n this.pluginsStack.fill(this.getSortedPlugins(plugins));\n }\n }\n\n this.isLoading = isLoadingContent;\n this.setAdditionalStyling(sidepane, content === null);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private getTimestamp(mainContent: Content) {\n if (mainContent.parameters?.hasField('timestamp')) {\n this.mainContentTimestamp = mainContent.parameters.getFieldDate('timestamp');\n this.deviceTimezone = mainContent.parameters.getFieldOrDefault('timezone');\n const useSmartTimestamp = mainContent.parameters.getFieldOrDefault('smartTimestamp', true);\n return this.timeService.formatTime(this.mainContentTimestamp, DateFormat.DateTime, true, true, this.deviceTimezone, useSmartTimestamp);\n }\n }\n\n private getNoAlphaColor(color: string) {\n if (color) {\n return `#' + ${color.slice(3)}`; // removes alpha\n } else {\n return 'black';\n }\n }\n\n private getHeaderInfo(mainContent: Content) {\n const header = {\n ...this.defaultHeaderInfo,\n title: mainContent.title,\n titleColor: mainContent.color,\n titleIcon: mainContent.icon,\n titleCustomIconId: mainContent.customIconId,\n description: mainContent.description,\n timestamp: this.timestamp,\n };\n\n const tryGuid = SafeGuid.tryParse(mainContent.source);\n // Take care, the Datum source might not necessarily be an entity\n if (tryGuid.success) {\n header.entityId = tryGuid.value;\n }\n\n return header;\n }\n\n private async getPlugins(contentGroup: ContentGroup) {\n const plugins = await this.pluginService.getPlugins(PluginTypes.Widget, contentGroup.mainContent);\n if (contentGroup.subContents) {\n for (const subContent of contentGroup.subContents) {\n const subPlugins = await this.pluginService.getPlugins(PluginTypes.Widget, subContent);\n subPlugins.forEach((item) => {\n plugins.push(item);\n });\n }\n }\n return plugins;\n }\n\n private async setCustomHeader(mainContent: Content) {\n if (mainContent.parameters?.hasField('customHeaderId')) {\n const customHeaderId = mainContent.parameters.getFieldGuid('customHeaderId');\n this.sidePaneHeaderPluginItem = (await this.pluginService.getPlugins(PluginTypes.SidePaneHeader, null)).find((plugin) =>\n plugin.exposure.subSection?.equals(customHeaderId)\n );\n if (this.sidePaneHeaderPluginItem) {\n this.sidePaneHeaderPluginItem.data = this.headerInfo;\n }\n this.hasCustomHeader = !!this.sidePaneHeaderPluginItem;\n } else {\n this.hasCustomHeader = false;\n }\n }\n\n private getSortedPlugins(plugins: PluginItem[]) {\n // Sort by priority\n return plugins.sort((p1, p2) => {\n const priority1 = p1 === undefined || p1.exposure.priority === undefined ? 0 : p1.exposure.priority;\n const priority2 = p2 === undefined || p2.exposure.priority === undefined ? 0 : p2.exposure.priority;\n\n return priority1 - priority2;\n });\n }\n\n private setAdditionalStyling(sidepane: HTMLElement, isContentEmpty: boolean) {\n // TODO YN: Do not hardcode context pan width...\n //A null content indicates to close the side pane right now, while undefined means that the content is unavailable and we should display an error message\n if ((this.pluginsStack.verticalPlugins && this.pluginsStack.verticalPlugins.length > 0) || this.isLoading) {\n sidepane.style.width = `${SidePaneComponent.WidthPx}px`;\n sidepane.style.opacity = '1';\n sidepane.classList.add('open');\n this.hasContent = true;\n focusDomElement('.sidepane-container', sidepane);\n // Keep this check (undefined can enter)\n } else if (isContentEmpty || !this.pluginsStack.verticalPlugins) {\n sidepane.style.width = '0px';\n sidepane.style.opacity = '0';\n sidepane.classList.remove('open');\n } else if (this.pluginsStack.verticalPlugins.length === 0 && !this.isLoading) {\n sidepane.style.width = `${SidePaneComponent.WidthPx}px`;\n sidepane.style.opacity = '1';\n sidepane.classList.add('open');\n this.hasContent = false;\n focusDomElement('.sidepane-container', sidepane);\n }\n }\n}\n","import { EventEmitter, NgZone } from '@angular/core';\n\nexport class RenderingHelper {\n public static onRefresh: EventEmitter = new EventEmitter();\n\n private static initialized = false;\n private static zone: NgZone;\n private static invalidated = false;\n\n // initialize the helper\n public static initialize(zone: NgZone): void {\n RenderingHelper.zone = zone;\n RenderingHelper.initialized = true;\n\n zone.runOutsideAngular(() => {\n setInterval(() => RenderingHelper.onTick(), 500);\n });\n }\n\n // inform the RenderingHelper that we received a frame\n public static invalidate(): void {\n if (!RenderingHelper.initialized) {\n throw new Error('Not initialized');\n }\n RenderingHelper.invalidated = true;\n }\n\n private static onTick() {\n if (RenderingHelper.invalidated) {\n // invoke the callback in the Angular zone\n this.zone.runGuarded(() => {\n RenderingHelper.onRefresh.emit();\n RenderingHelper.invalidated = false;\n });\n }\n }\n}\n","export class TimeSpan {\n public static readonly Zero: TimeSpan = new TimeSpan(0);\n\n private readonly m_milliseconds: number;\n\n public get InMs(): number {\n return this.m_milliseconds;\n }\n\n public static fromMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(milliseconds);\n }\n\n public static fromSeconds(seconds: number): TimeSpan {\n return new TimeSpan(seconds * 1000);\n }\n\n public static fromHours(hours: number): TimeSpan {\n return new TimeSpan(hours * 60 * 60 * 1000);\n }\n\n public static fromNowUntil(then: Date): TimeSpan {\n return TimeSpan.between(new Date(), then);\n }\n\n public constructor(milliseconds: number) {\n this.m_milliseconds = Math.trunc(milliseconds);\n }\n\n public toString(): string {\n if (this.m_milliseconds < 1000) {\n return `${this.m_milliseconds} ms`;\n } else if (this.m_milliseconds < 60 * 1000) {\n return `${(this.m_milliseconds / 1000).toFixed(3)} sec`;\n } else if (this.m_milliseconds < 60 * 60 * 1000) {\n return `${(this.m_milliseconds / (60 * 1000)).toFixed(2)} min`;\n } else if (this.m_milliseconds < 24 * 60 * 60 * 1000) {\n return `${(this.m_milliseconds / (60 * 60 * 1000)).toFixed(2)} hr`;\n }\n\n return `${(this.m_milliseconds / (24 * 60 * 60 * 1000)).toFixed(2)} days`;\n }\n\n public isGreaterThan(other: TimeSpan): boolean {\n return this.m_milliseconds > other.m_milliseconds;\n }\n\n public isLesserThan(other: TimeSpan): boolean {\n return this.m_milliseconds < other.m_milliseconds;\n }\n\n public divideBy(divider: number): TimeSpan {\n if (divider === 0) {\n throw new Error('Cannot divide by zero.');\n }\n\n return new TimeSpan(this.m_milliseconds / divider);\n }\n\n public static between(start: Date, end: Date): TimeSpan {\n return new TimeSpan(end.getTime() - start.getTime());\n }\n}\n","import { TimeSpan } from './TimeSpan';\n\nexport class Utils {\n public static readonly Indentation = 4;\n\n public static delay(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n public static delayFromTimeSpan(timeSpan: TimeSpan): Promise {\n return Utils.delay(timeSpan.InMs);\n }\n\n public static addMilliseconds(date: Date, milliseconds: number): Date {\n return new Date(date.getTime() + milliseconds);\n }\n\n public static addSeconds(date: Date, seconds: number): Date {\n return new Date(date.getTime() + seconds * 1000);\n }\n\n public static addHours(date: Date, hours: number): Date {\n return new Date(date.getTime() + (hours * 60 * 60 * 1000));\n }\n\n public static addDays(date: Date, days: number): Date {\n return new Date(date.getTime() + (days * 24 * 60 * 60 * 1000));\n }\n\n public static subtractMinutes(date: Date, minutes: number): Date {\n return Utils.addMilliseconds(date, -1 * minutes * 60 * 1000);\n }\n\n public static addTimeSpan(date: Date, timeSpan: TimeSpan): Date {\n return Utils.addMilliseconds(date, timeSpan.InMs);\n }\n\n public static spanBetweenDates(start: Date, end: Date): TimeSpan {\n return new TimeSpan(end.getTime() - start.getTime());\n }\n\n public static formatDateUTC(date: Date | undefined): string {\n if (date === undefined) {\n return 'undefined';\n }\n\n return Utils.pad(date.getUTCHours(), 2) + ':' +\n Utils.pad(date.getUTCMinutes(), 2) + ':' +\n Utils.pad(date.getUTCSeconds(), 2) + '.' +\n Utils.pad(date.getUTCMilliseconds(), 3) + ' ' +\n date.getUTCFullYear() + '-' +\n Utils.pad(date.getUTCMonth() + 1, 2) + '-' +\n Utils.pad(date.getUTCDate(), 2);\n }\n\n public static formatDate(date: Date | undefined) {\n if (date === undefined) {\n return 'undefined';\n }\n\n return Utils.pad(date.getHours(), 2) + ':' +\n Utils.pad(date.getMinutes(), 2) + ':' +\n Utils.pad(date.getSeconds(), 2) + '.' +\n Utils.pad(date.getMilliseconds(), 3) + ' ' +\n date.getFullYear() + '-' +\n Utils.pad(date.getMonth() + 1, 2) + '-' +\n Utils.pad(date.getDate(), 2);\n }\n\n public static pad(n: number, length: number) {\n let s = String(n);\n while (s.length < length) {\n s = '0' + s;\n }\n return s;\n }\n\n public static supportsMse(): boolean {\n return !!window.MediaSource && MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E\"');\n }\n\n private static readonly _1K: number = 1024;\n private static readonly _1M: number = Utils._1K * 1024;\n private static readonly _1G: number = Utils._1M * 1024;\n\n public static readableByteCount(byteCount: number): string {\n if (byteCount <= this._1K) {\n return `${byteCount} bytes`;\n }\n if (byteCount < this._1M) {\n return `${(byteCount / this._1K).toFixed(1)} KB`;\n }\n if (byteCount < this._1G) {\n return `${(byteCount / this._1M).toFixed(1)} MB`;\n }\n return `${(byteCount / this._1G).toFixed(1)} GB`;\n }\n\n public static clip(n: number, min: number, max: number) {\n if (min > max) {\n throw new Error(`Cannot clip with a minimum higher than the maximum ([${min}],[${max}])`);\n }\n return n < min ? min : n > max ? max : n;\n }\n\n public static indentNewLine(indentation: number) {\n return `\\r\\n${' '.repeat(indentation)}`;\n }\n}\n\nexport function assertUnreachable(_x: never): never {\n throw new Error('Did not expect to get here');\n}\n","import { Utils } from './Utils';\nimport { version } from '../gwp';\n\n// Display banner each time this library is loaded\n(function() {\n // For tests, version is not defined\n if (typeof version === 'function') {\n const v = version() === '[VERSION]' ? 'DEV' : version();\n console.info(`🐹 Genetec Web Player™ version ${v} loaded`);\n }\n})();\n\nexport interface ILogger {\n intense: ITracer | null;\n debug: ITracer | null;\n info: ITracer | null;\n warn: ITracer | null;\n error: ITracer | null;\n subLogger(prefix: string): ILogger;\n}\n\nexport interface ITracer {\n trace(...args: any[]): void;\n}\n\nexport class Logger implements ILogger {\n private static m_showDebug: boolean = false;\n private static m_showIntense: boolean = false;\n private static m_showInfo: boolean = false;\n private static m_showTimestamps: boolean = true;\n\n private readonly m_id: number;\n\n private readonly m_debugTracer: ITracer;\n private readonly m_infoTracer: ITracer;\n private readonly m_warnTracer: ITracer;\n private readonly m_errorTracer: ITracer;\n\n public static get timestampsEnabled(): boolean {\n return this.m_showTimestamps;\n }\n\n public constructor(id: number, name: string) {\n this.m_id = id;\n\n this.m_debugTracer = new DebugTracer(id, name);\n this.m_infoTracer = new InfoTracer(id, name);\n this.m_warnTracer = new WarnTracer(id, name);\n this.m_errorTracer = new ErrorTracer(id, name);\n }\n\n public static enableLogs(intense?: boolean) {\n Logger.m_showInfo = true;\n Logger.m_showDebug = true;\n Logger.m_showIntense = intense === true;\n }\n\n public static enableTimestamps(timestamps: boolean) {\n Logger.m_showTimestamps = timestamps;\n }\n\n public static disableLogs() {\n Logger.m_showInfo = false;\n Logger.m_showDebug = false;\n Logger.m_showIntense = false;\n }\n\n public get intense(): ITracer | null{\n if (Logger.m_showIntense) return this.m_debugTracer;\n return null;\n }\n\n public get debug(): ITracer | null {\n if (Logger.m_showDebug) return this.m_debugTracer;\n return null;\n }\n\n public get info(): ITracer | null {\n if (Logger.m_showInfo) return this.m_infoTracer;\n return null;\n }\n\n public get warn(): ITracer {\n return this.m_warnTracer;\n }\n\n public get error(): ITracer {\n return this.m_errorTracer;\n }\n\n public subLogger(name: string): ILogger {\n return new Logger(this.m_id, name);\n }\n}\n\nexport abstract class Tracer implements ITracer {\n private readonly m_id: number;\n\n private readonly m_name: string;\n\n public constructor(id: number, name: string) {\n this.m_id = id;\n this.m_name = name;\n }\n\n public abstract trace(...args: any[]): void\n\n protected get prefix(): string {\n if (Logger.timestampsEnabled) {\n const now = new Date();\n return `🐹 ${this.m_id} ${Utils.pad(now.getMinutes(), 2)}:${Utils.pad(now.getSeconds(), 2)}.${Utils.pad(now.getMilliseconds(), 3)} ${this.m_name}:`;\n } else {\n return `🐹 ${this.m_id} ${this.m_name}:`;\n }\n }\n}\n\nexport class DebugTracer extends Tracer {\n public trace(...args: any[]): void {\n console.log(this.prefix, ...args);\n }\n}\n\nexport class InfoTracer extends Tracer {\n public trace(...args: any[]): void {\n console.info(this.prefix, ...args);\n }\n}\n\nexport class WarnTracer extends Tracer {\n public trace(...args: any[]): void {\n console.warn(this.prefix, ...args);\n }\n}\n\nexport class ErrorTracer extends Tracer {\n public trace(...args: any[]): void {\n console.error(this.prefix, ...args);\n }\n}\n","/*\n * A simplified typed event handler :)\n * Taken from: https://stackoverflow.com/questions/12881212/does-typescript-support-events-on-classes\n *\n * USAGE EXAMPLE:\n * class Security{\n * private readonly onLogin = new LiteEvent();\n * private readonly onLogout = new LiteEvent();\n *\n * public get LoggedIn() { return this.onLogin.expose(); }\n * public get LoggedOut() { return this.onLogout.expose(); }\n *\n * // ... onLogin.trigger('bob');\n * }\n *\n * function Init() {\n * var security = new Security();\n *\n * var loggedOut = () => { ... }\n * security.LoggedIn.on((username?) => { ... });\n * security.LoggedOut.on(loggedOut);\n *\n * // ...\n *\n * security.LoggedOut.unregister(loggedOut);\n * }\n */\n\n/** Event you can register your event handlers on to receive callbacks. Allows multiple handlers for the same event.\n * @public */\nexport interface ILiteEvent {\n /** Register an event handler, don't forget to unregister it when you are done */\n register(handler: { (data: T): void }): void;\n /** Unregister the event handler to stop receiving callbacks */\n unregister(handler: { (data: T): void }): void;\n}\n\nexport class LiteEvent implements ILiteEvent {\n private m_isDisposed: boolean = false;\n\n private handlers: { (data: T): void; }[] = [];\n\n public register(handler: { (data: T): void }): void {\n this.throwIfDisposed();\n this.handlers.push(handler);\n }\n\n // Not sure about the .bind mechanics for event handler so for now, added a little check on handlers that should lower after unregister is called\n public unregister(handler: { (data: T): void }): void {\n this.throwIfDisposed();\n const previousCount = this.handlers.length;\n this.handlers = this.handlers.filter((h) => h !== handler);\n if (previousCount === this.handlers.length) {\n throw new Error('Was not registered');\n }\n }\n\n public trigger(data: T) {\n this.throwIfDisposed();\n this.handlers.slice(0).forEach((h) => h(data));\n }\n\n public boundTrigger = (data: T) => {\n this.throwIfDisposed();\n this.handlers.slice(0).forEach((h) => h(data));\n }\n\n public expose(): ILiteEvent {\n this.throwIfDisposed();\n return this;\n }\n\n public dispose() {\n this.handlers = [];\n this.m_isDisposed = true;\n }\n\n private throwIfDisposed(): void {\n if (this.m_isDisposed) {\n throw new Error('Object is disposed.');\n }\n }\n}\n","import { Base64Decoder } from '../utils/Base64Decoder';\nimport { Utils } from '../utils/Utils';\n\n/**\n * @beta\n* */\nexport class Token {\n private readonly m_token: string;\n\n private readonly m_expirationDate: Date;\n\n public get Value(): string {\n return this.m_token;\n }\n\n public get ExpirationDate(): Date {\n return this.m_expirationDate;\n }\n\n constructor(token: string) {\n this.m_token = token;\n\n const tokenParts = this.m_token.toString().split('.', 3);\n if (tokenParts.length !== 3) {\n throw new Error(`Token is not of a supported format. Only JWTs are accepted ${token}`);\n }\n // Second part is base64 JSON of the claims\n const jsonTokenString: string = Base64Decoder.decode(tokenParts[1]);\n const payload = JSON.parse(jsonTokenString);\n if (!payload.hasOwnProperty('exp')) {\n throw new Error('Token does not have an exp field for expiration');\n }\n if (typeof payload['exp'] !== 'number') {\n throw new Error('Token exp field is not a number');\n }\n\n const expireTime = payload['exp'] * 1000;\n this.m_expirationDate = new Date(expireTime);\n }\n\n public toString(): string {\n return `${this.m_token} expires at ${Utils.formatDate(this.m_expirationDate)}`;\n }\n}\n","export class Base64Decoder {\n public static decode(base64String: string): string {\n return window.atob(base64String);\n }\n}\n","import { Cancellation } from './CancellationToken';\n\nexport class PromiseCompletionSource {\n private readonly m_promise: Promise;\n private m_resolver: (arg: T) => void = () => {\n throw new Error('Constructor of PromiseCompletionSource failed');\n };\n\n public get Promise(): Promise {\n return this.m_promise;\n }\n\n constructor() {\n this.m_promise = new Promise((resolve) => this.m_resolver = resolve);\n }\n\n public resolve(arg: T): Promise {\n this.m_resolver(arg);\n return new Promise((resolve) => setTimeout(resolve));\n }\n}\n\nexport class PromiseCompletionSourceVoid extends PromiseCompletionSource {\n\n}\n\nexport class CancellablePromise extends PromiseCompletionSource {\n public cancel(reason?: string): void {\n this.resolve(new Cancellation(reason));\n }\n}\n\n//Prevent an error in the console by adding the catch before rejecting the promise\nexport function rejectedPromise(errorMessage: string): Promise {\n let rejecter: (reason?: any) => void = () => { };\n const p = new Promise((_, reject) => {\n rejecter = reject;\n });\n p.catch(() => { });\n if (rejecter !== undefined) {\n rejecter(new Error(errorMessage));\n }\n return p;\n}\n","import { PromiseCompletionSource } from './PromiseCompletionSource';\nimport { TimeSpan } from './TimeSpan';\n\nexport class Cancellation {\n private readonly m_reason: string;\n\n public get Reason(): string {\n return this.m_reason;\n }\n\n constructor(reason: string = '') {\n this.m_reason = reason;\n }\n}\n\nexport class CancellationToken {\n private readonly m_promise: PromiseCompletionSource = new PromiseCompletionSource();\n private m_isCancelled = false;\n\n public get IsCancelled(): boolean {\n return this.m_isCancelled;\n }\n\n constructor() {\n this.m_promise.Promise.then(() => this.m_isCancelled = true);\n }\n\n public get Cancellation(): Promise {\n return this.m_promise.Promise;\n }\n\n public cancel(reason: string): void {\n this.m_promise.resolve(new Cancellation(reason));\n }\n}\n\nexport async function withCancellation(cancellablePromise: Promise, cancellationToken: CancellationToken): Promise {\n return await Promise.race([cancellablePromise, cancellationToken.Cancellation]);\n}\n\nexport async function cancellableDelay(delay: TimeSpan, cancellationToken: CancellationToken): Promise {\n let timeoutId: number | null = null;\n const delayResult = await withCancellation(new Promise((resolve) => {\n timeoutId = window.setTimeout(resolve, delay.InMs);\n }), cancellationToken);\n\n if (delayResult instanceof Cancellation && timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n\n return delayResult;\n}\n","import { ILogger } from '../utils/logger';\nimport { TokenRetriever } from './TokenRetriever';\nimport { Camera } from '../players/camera';\nimport { Token } from './Token';\nimport { Utils } from '../utils/Utils';\nimport { TimeSpan } from '../utils/TimeSpan';\nimport { CancellationToken, cancellableDelay } from '../utils/CancellationToken';\n\nexport interface ITokenRenewer {\n readonly Token: Promise;\n readonly RenewalPromise: Promise\n\n dispose(): void;\n}\n\nexport class TokenRenewer {\n private static readonly SmallestRenewalDelay: TimeSpan = TimeSpan.fromSeconds(30);\n\n private readonly m_logger: ILogger;\n\n private readonly m_tokenRetriever: TokenRetriever;\n\n private readonly m_camera: Camera;\n\n private readonly m_renewCancel: CancellationToken;\n\n private m_isDisposed: boolean = false;\n\n private m_token: Token;\n\n private m_renewalPromise: Promise;\n\n public get Token(): Promise {\n return this.isValidLongEnough(this.m_token) ? Promise.resolve(this.m_token) : this.waitRenewal();\n }\n\n public get RenewalPromise(): Promise {\n if (this.m_isDisposed) {\n this.m_logger.warn?.trace('Trying to obtain a token from a disposed token renewer.');\n }\n return this.m_renewalPromise;\n }\n\n constructor(logger: ILogger, tokenRetriever: TokenRetriever, camera: Camera, token: Token) {\n this.m_logger = logger.subLogger('TokenRenewer');\n this.m_tokenRetriever = tokenRetriever;\n this.m_camera = camera;\n this.m_token = token;\n\n this.m_renewCancel = new CancellationToken();\n this.m_renewalPromise = this.doRenewal();\n }\n\n public dispose() {\n this.m_logger.debug?.trace('dispose()');\n this.m_isDisposed = true;\n this.m_renewCancel.cancel('dispose');\n }\n\n private async doRenewal(): Promise {\n const expirationDelay: TimeSpan = TimeSpan.fromNowUntil(this.m_token.ExpirationDate);\n let renewalDelay: TimeSpan = expirationDelay.divideBy(2);\n this.m_logger.info?.trace('New token for', this.m_camera.Id, 'expires at', Utils.formatDate(this.m_token.ExpirationDate), '(in', expirationDelay.toString(), ') renewing in', renewalDelay.toString());\n\n while (true) {\n await this.sleep(renewalDelay);\n\n if (this.m_isDisposed) {\n return null;\n }\n\n try {\n const newToken = await this.m_tokenRetriever.retrieveToken(this.m_camera);\n this.m_token = newToken;\n this.m_renewalPromise = this.doRenewal(); // Prepare renewal of the new token\n return newToken;\n } catch (error) {\n renewalDelay = TimeSpan.fromNowUntil(this.m_token.ExpirationDate).divideBy(2);\n this.m_logger.warn?.trace('Failed to renew access token for ', this.m_camera.toString(), error, `Will retry in ${renewalDelay.toString()}.`);\n }\n }\n }\n\n private async sleep(delay: TimeSpan) {\n if (delay.InMs > 0x7FFFFFFF) {\n // Browsers don't like timeouts above int32. This is also 24 days of token expiration\n // We'll just never renew those.\n this.m_logger.info?.trace(`Token duration is too long, disabling automatic renewal. Renewal was scheduled in ${delay.toString()}.`);\n await this.m_renewCancel.Cancellation;\n return;\n }\n\n if (delay.isLesserThan(TokenRenewer.SmallestRenewalDelay)) {\n // Always wait for 30 seconds at least\n this.m_logger.debug?.trace(`Renewal delay was ${delay.toString()}. Raising it to be ${TokenRenewer.SmallestRenewalDelay.toString()} from now`);\n delay = TokenRenewer.SmallestRenewalDelay;\n }\n\n await cancellableDelay(delay, this.m_renewCancel);\n }\n\n private isValidLongEnough(token: Token): boolean {\n return TimeSpan.fromNowUntil(token.ExpirationDate).isGreaterThan(TokenRenewer.SmallestRenewalDelay);\n }\n\n private async waitRenewal(): Promise {\n this.m_logger.info?.trace(`Token was expiring shortly (${TimeSpan.fromNowUntil(this.m_token.ExpirationDate).toString()}), awaiting new one.`);\n const token = await this.RenewalPromise;\n if (token === null) {\n throw new Error('Disposed');\n }\n\n return token;\n }\n}\n","import { Camera } from '../players/camera';\nimport { Token } from './Token';\nimport { ILogger, Logger } from '../utils/logger';\nimport { ITokenRenewer, TokenRenewer } from './TokenRenewer';\n\n/** Function that will be called by the GWP infrastructure when it requires an access token for a camera.\n * This will be called during the startup of a {@link IWebPlayer} or during the operation when a token renewal is required.\n * @public */\nexport type TokenRetrieverFct = (camera: string) => Promise;\n\nexport class TokenRetriever {\n private readonly m_logger: ILogger;\n\n private readonly m_tokenRetrieverFct: TokenRetrieverFct;\n\n constructor(tokenRetrieverFct: TokenRetrieverFct) {\n this.m_logger = new Logger(0, 'TokenRetriever');\n this.m_tokenRetrieverFct = tokenRetrieverFct;\n }\n\n public async retrieveToken(camera: Camera): Promise {\n this.m_logger.info?.trace('Requesting token for', camera.toString());\n const requestTime = new Date().getTime();\n const token = new Token(await this.m_tokenRetrieverFct(camera.Id));\n this.m_logger.debug?.trace('Request token for', camera.toString(), 'took', new Date().getTime() - requestTime, 'ms');\n return token;\n }\n\n public async acquireRenewer(logger: ILogger, camera: Camera): Promise {\n const initialToken = await this.retrieveToken(camera);\n //Cannot reuse our logger, it does not have the proper id.\n return new TokenRenewer(logger, this, camera, initialToken);\n }\n}\n","export class PlaySpeed {\n public static readonly _1x: PlaySpeed = new PlaySpeed(1);\n\n private readonly m_value: number;\n\n public get Value(): number {\n return this.m_value;\n }\n\n public get IsReverse(): boolean {\n return this.m_value < 0;\n }\n\n constructor(playbackRate: number) {\n if (playbackRate === 0) {\n throw new Error('Rate cannot be 0.');\n }\n this.m_value = playbackRate;\n }\n\n public toString(): string {\n return this.m_value + 'x';\n }\n\n public equals(other: PlaySpeed | undefined): boolean {\n if (other === undefined) {\n return false;\n }\n return this.m_value === other.m_value;\n }\n}\n","import { SegmentInfo, JpegInfo, ErrorDetails, SerializedPlayerState, StreamingStatus, TimelineContent } from './eventHub';\nimport { IEventHubProvider, IDataHub, IEventHub } from './eventHubDispatcher';\nimport { ILogger } from '../utils/logger';\nimport { PlaySpeed } from '../players/PlaySpeed';\nimport { TimeSpan } from '../utils/TimeSpan';\nimport { Utils } from '../utils/Utils';\n\nexport class UnregisteredHub implements IDataHub, IEventHub {\n private readonly m_timeBeforeUnregister: TimeSpan;\n private readonly m_logger: ILogger;\n private readonly m_streamId: string;\n private readonly m_eventHubProvider: IEventHubProvider;\n\n constructor(logger: ILogger, streamId: string, eventHubProvider: IEventHubProvider, timeBeforeUnregister: TimeSpan) {\n this.m_logger = logger.subLogger('UnregisteredHub');\n this.m_streamId = streamId;\n this.m_eventHubProvider = eventHubProvider;\n this.m_timeBeforeUnregister = timeBeforeUnregister;\n this.m_logger.debug?.trace(`UnregisteredHub created for streamId ${streamId}, will unregister itself in ${this.m_timeBeforeUnregister.toString()}`);\n this.unregisterAfterTimeout();\n }\n\n receiveSegment(_: SegmentInfo, __: Int8Array): void {\n this.m_logger.debug?.trace('receiveSegment()');\n }\n receiveJpeg(_: JpegInfo, __: Int8Array): void {\n this.m_logger.debug?.trace('receiveJpeg()');\n }\n receivePlayerState(_: SerializedPlayerState): void {\n this.m_logger.debug?.trace('receivePlayerState()');\n }\n receiveStreamingConnectionStatus(_: StreamingStatus): void {\n this.m_logger.debug?.trace('receiveStreamingConnectionStatus()');\n }\n receiveBufferingProgress(_: number): void {\n this.m_logger.debug?.trace('receiveBufferingProgress()');\n }\n receiveErrorDetails(_: ErrorDetails): void {\n this.m_logger.debug?.trace('receiveErrorDetails()');\n }\n receiveTimelineContent(_: TimelineContent): void {\n this.m_logger.debug?.trace('receiveTimelineContent()');\n }\n receivePlaySpeed(_: PlaySpeed): void {\n this.m_logger.debug?.trace('receivePlaySpeed()');\n }\n receiveAudioAvailable(_: boolean): void {\n this.m_logger.debug?.trace('receiveAudioAvailable()');\n }\n\n private async unregisterAfterTimeout(): Promise {\n await Utils.delayFromTimeSpan(this.m_timeBeforeUnregister);\n this.m_eventHubProvider.unregisterStream(this.m_streamId);\n this.m_logger.debug?.trace(`UnregisteredHub for stream ${this.m_streamId} has been unregistered`);\n }\n}\n","import { ErrorDetails, StreamingStatus, SegmentInfo, JpegInfo, SerializedPlayerState, TimelineContent, SerializedPlaySpeed } from './eventHub';\nimport { ILogger } from '../utils/logger';\nimport { PlaySpeed } from '../players/PlaySpeed';\nimport { UnregisteredHub } from './UnregisteredHub';\nimport { TimeSpan } from '../utils/TimeSpan';\n\n/**\n * @beta\n * */\nexport interface IDataHub {\n receiveSegment(info: SegmentInfo, buffer: Int8Array): void;\n receiveJpeg(info: JpegInfo, buffer: Int8Array): void;\n}\n\n/**\n * @beta\n */\nexport interface IEventHub {\n receivePlayerState(state: SerializedPlayerState): void;\n receiveStreamingConnectionStatus(status: StreamingStatus): void;\n receiveBufferingProgress(progress: number): void;\n receiveErrorDetails(errorDetails: ErrorDetails): void;\n receiveTimelineContent(content: TimelineContent): void;\n receivePlaySpeed(playSpeed: SerializedPlaySpeed): void;\n receiveAudioAvailable(isAudioAvailable: boolean): void;\n}\n\n/**\n * @beta\n */\nexport interface IEventDispatcher {\n receiveSegment(streamId: string, info: SegmentInfo, buffer: Int8Array): void;\n receiveJpeg(streamId: string, info: JpegInfo, buffer: Int8Array): void;\n receivePlayerState(streamId: string, state: SerializedPlayerState): void;\n receiveStreamingConnectionStatus(streamId: string, status: StreamingStatus): void;\n receiveBufferingProgress(streamId: string, progress: number): void;\n receiveErrorDetails(streamId: string, errorDetails: ErrorDetails): void;\n receiveTimelineContent(streamId: string, content: TimelineContent): void;\n receivePlaySpeedChange(streamId: string, playSpeed: SerializedPlaySpeed): void;\n receiveAudioAvailable(streamId: string, isAudioAvailable: boolean): void;\n}\n\nexport interface IEventHubProvider {\n registerStream(streamId: string, dataHub: IDataHub, eventHub: IEventHub): void;\n unregisterStream(streamId: string): void;\n}\n\nexport class EventHubDispatcher implements IEventHubProvider, IEventDispatcher {\n private readonly m_logger: ILogger;\n\n private readonly m_registered: { [id: string]: [IDataHub, IEventHub] };\n\n constructor(logger: ILogger) {\n this.m_logger = logger.subLogger('EventHubDispatcher');\n this.m_registered = {};\n }\n\n public registerStream(streamId: string, dataHub: IDataHub, eventHub: IEventHub): void {\n if (this.m_registered.hasOwnProperty(streamId)) {\n throw new Error(`streamId ${streamId} is already registered`);\n }\n\n this.m_registered[streamId] = [dataHub, eventHub];\n this.m_logger.debug?.trace(`Registered streamId ${streamId}`);\n }\n\n public unregisterStream(streamId: string) {\n if (!this.m_registered.hasOwnProperty(streamId)) {\n throw new Error(`streamId ${streamId} was not registered`);\n }\n if (this.m_registered[streamId][0] instanceof UnregisteredHub) {\n this.m_logger.debug?.trace(`Deleting UnregisteredHub from EventHubDispatcher for streamId ${streamId}`);\n delete this.m_registered[streamId];\n } else {\n this.m_logger.debug?.trace(`Creating new UnregisteredHub from EventHubDispatcher for streamId ${streamId}`);\n\n const unregisteredHub = new UnregisteredHub(this.m_logger, streamId, this, TimeSpan.fromSeconds(5));\n this.m_registered[streamId] = [unregisteredHub, unregisteredHub];\n }\n\n this.m_logger.debug?.trace(`Removed streamId ${streamId}`);\n }\n\n public receiveSegment(streamId: string, info: SegmentInfo, buffer: Int8Array) {\n this.findDataHub(streamId)?.receiveSegment?.(info, buffer);\n }\n\n public receiveJpeg(streamId: string, info: JpegInfo, buffer: Int8Array) {\n this.findDataHub(streamId)?.receiveJpeg?.(info, buffer);\n }\n\n public receivePlayerState(streamId: string, state: SerializedPlayerState) {\n this.findEventHub(streamId)?.receivePlayerState?.(state);\n }\n\n public receiveStreamingConnectionStatus(streamId: string, status: StreamingStatus) {\n this.findEventHub(streamId)?.receiveStreamingConnectionStatus?.(status);\n }\n\n public receiveBufferingProgress(streamId: string, progress: number) {\n this.findEventHub(streamId)?.receiveBufferingProgress?.(progress);\n }\n\n public receiveErrorDetails(streamId: string, errorDetails: ErrorDetails) {\n this.findEventHub(streamId)?.receiveErrorDetails?.(errorDetails);\n }\n\n public receiveTimelineContent(streamId: string, content: TimelineContent) {\n this.findEventHub(streamId)?.receiveTimelineContent?.(content);\n }\n\n public receivePlaySpeedChange(streamId: string, playSpeed: SerializedPlaySpeed) {\n this.findEventHub(streamId)?.receivePlaySpeed?.(new PlaySpeed(playSpeed.Value));\n }\n\n public receiveAudioAvailable(streamId: string, isAudioAvailable: boolean) {\n this.findEventHub(streamId)?.receiveAudioAvailable?.(isAudioAvailable);\n }\n\n private findDataHub(streamId: string): IDataHub | null {\n const hubTuple = this.find(streamId);\n if (hubTuple === null) {\n return null;\n }\n return hubTuple[0];\n }\n\n private findEventHub(streamId: string): IEventHub | null {\n const hubTuple = this.find(streamId);\n if (hubTuple === null) {\n return null;\n }\n return hubTuple[1];\n }\n\n private find(streamId: string): [IDataHub, IEventHub] | null {\n const hub = this.m_registered[streamId];\n if (hub === undefined) {\n this.m_logger.warn?.trace(`No session found for ${streamId}`);\n return null;\n }\n return hub;\n }\n}\n","import { IConnectionEvent } from './WsSessionV2';\nimport { WebSocketBuilder, IWebSocket } from './WebSocketBuilder';\nimport { ILogger } from '../../utils/logger';\nimport { LiteEvent } from '../../utils/liteEvents';\nimport { Utils } from '../../utils/Utils';\n\nexport interface ISocket extends IConnectionEvent {\n onmessage: ((arrayBuffer: ArrayBuffer) => any) | null;\n\n send(data: ArrayBuffer): void;\n\n dispose(): Promise;\n\n debugStatus(indent: number): string;\n}\n\nexport class AutoReconnectSocket implements ISocket {\n private static readonly ReconnectionAttemptDelay = 2000;\n\n private readonly m_webSocketBuilder: WebSocketBuilder;\n\n private readonly m_logger: ILogger;\n\n private m_isDisposed = false;\n\n private m_webSocket: IWebSocket;\n\n private m_isConnected: boolean = true; // We receive a connected socket on the constructor\n\n private readonly m_connectionReestablishedEvent = new LiteEvent();\n\n private readonly m_connectionLostEvent = new LiteEvent();\n\n public onmessage: ((arrayBuffer: ArrayBuffer) => any) | null;\n\n public get ConnectionReestablished() {\n return this.m_connectionReestablishedEvent.expose();\n }\n\n public get ConnectionLost() {\n return this.m_connectionLostEvent.expose();\n }\n\n constructor(logger: ILogger, webSocketBuilder: WebSocketBuilder, webSocket: IWebSocket) {\n this.m_logger = logger.subLogger('AutoReconnectSocket');\n this.m_webSocketBuilder = webSocketBuilder;\n this.m_webSocket = webSocket;\n\n this.onmessage = null;\n\n this.bind();\n }\n\n public static async build(logger: ILogger, webSocketBuilder: WebSocketBuilder) {\n const webSocket = await webSocketBuilder.establishWebSocket();\n return new AutoReconnectSocket(logger, webSocketBuilder, webSocket);\n }\n\n public send(data: ArrayBuffer): void {\n this.m_webSocket.send(data);\n }\n\n public async dispose(): Promise {\n this.m_isDisposed = true;\n // todo: add management to halt a reconnection attempt\n this.unbind();\n\n const closedPromise = new Promise((resolve, reject) => {\n this.m_webSocket.onclose = () => resolve();\n this.m_webSocket.onerror = (ev) => reject(ev);\n });\n\n this.m_webSocket.close(1000);\n\n await closedPromise;\n }\n\n private onSocketMessage(messageEvent: MessageEvent) {\n if (this.onmessage !== null) {\n this.onmessage(messageEvent.data);\n }\n }\n\n private onSocketClose(closeEvent: CloseEvent) {\n this.m_isConnected = false;\n this.m_logger.info?.trace('Socket closed');\n this.m_logger.info?.trace(closeEvent);\n this.m_connectionLostEvent.trigger();\n this.reconnect();\n }\n\n private onSocketError(event: Event): void {\n this.m_isConnected = false;\n this.m_logger.warn?.trace('Socket error');\n this.m_logger.warn?.trace(event);\n }\n\n private bind() {\n this.m_webSocket.onmessage = this.onSocketMessage.bind(this);\n this.m_webSocket.onclose = this.onSocketClose.bind(this);\n this.m_webSocket.onerror = this.onSocketError.bind(this);\n }\n\n private unbind() {\n this.m_webSocket.onmessage = null;\n this.m_webSocket.onclose = null;\n this.m_webSocket.onerror = null;\n }\n\n private async reconnect(): Promise {\n this.unbind();\n this.m_webSocket = await this.connectLoop();\n this.m_logger.info?.trace('Reconnected');\n this.bind();\n this.m_isConnected = true;\n this.m_connectionReestablishedEvent.trigger();\n }\n\n private async connectLoop(): Promise {\n while (!this.m_isDisposed) {\n try {\n const webSocket = await this.m_webSocketBuilder.establishWebSocket();\n return webSocket;\n } catch (e) {\n this.m_logger.warn?.trace('Socket error: ', e);\n }\n\n await Utils.delay(AutoReconnectSocket.ReconnectionAttemptDelay);\n }\n\n throw new Error('AutoConnection interrupted by dispose.');\n }\n\n public debugStatus(indent: number): string {\n return 'AutoReconnectSocket' + Utils.indentNewLine(indent) +\n (this.m_isDisposed ? `${Utils.indentNewLine(indent)}Disposed${Utils.indentNewLine(indent)}` : '') +\n (this.m_isConnected ? 'Connected' : 'Disconnected');\n }\n}\n","export class Deserializer {\n private readonly m_arrayBuffer: ArrayBuffer;\n\n private readonly m_dataView: DataView;\n\n private readonly m_hasNativeTextDecoder: boolean;\n\n private m_offset: number = 0;\n\n public get Offset(): number {\n return this.m_offset;\n }\n\n constructor(arrayBuffer: ArrayBuffer) {\n this.m_arrayBuffer = arrayBuffer;\n this.m_dataView = new DataView(this.m_arrayBuffer, 0);\n this.m_hasNativeTextDecoder = window.TextDecoder !== undefined && window.TextDecoder.toString().indexOf('[native code]') !== -1;\n }\n\n public getUint8(): number {\n return this.m_dataView.getUint8(this.m_offset++);\n }\n\n public getUint32(): number {\n const uint32 = this.m_dataView.getUint32(this.m_offset);\n this.m_offset += 4;\n return uint32;\n }\n\n public getInt32(): number {\n const int32 = this.m_dataView.getInt32(this.m_offset);\n this.m_offset += 4;\n return int32;\n }\n\n public getString(): string {\n const stringLength = this.getInt32();\n if (stringLength < 0) {\n throw new Error(`String length was negative ${stringLength}`);\n }\n\n if (this.m_hasNativeTextDecoder) {\n // We have a native TextDecoder implementation. We may rely on the DataView overload\n const dataView = new DataView(this.m_arrayBuffer, this.m_offset, stringLength);\n this.m_offset += stringLength;\n return new TextDecoder().decode(dataView);\n }\n\n // When we can't detect a native TextDecoder, we have to slice the array (copy it) instead of simply\n // creating a view to it. All TextEncoder/TextDecoder polyfills have trouble dealing with a DataView polyfill\n const subArray = this.m_arrayBuffer.slice(this.m_offset, this.m_offset + stringLength);\n this.m_offset += stringLength;\n return new TextDecoder().decode(subArray);\n }\n}\n","export class Serializer {\n private readonly m_dataView: DataView;\n\n private m_offset: number;\n\n public get arrayBuffer(): ArrayBuffer {\n return this.m_dataView.buffer;\n }\n\n public static build(size: number) {\n return new Serializer(new DataView(new ArrayBuffer(size)), 0);\n }\n\n constructor(dataView: DataView, offset: number) {\n this.m_dataView = dataView;\n this.m_offset = offset;\n }\n\n public writeUint8(byte: number) {\n this.m_dataView.setUint8(this.m_offset, byte);\n this.m_offset++;\n }\n\n public writeUint32(uint32: number) {\n this.m_dataView.setUint32(this.m_offset, uint32);\n this.m_offset += 4;\n }\n\n public writeString(s: string) {\n const bytes = new TextEncoder().encode(s);\n this.writeUint32(bytes.length);\n for (let i = 0; i < bytes.length; ++i) {\n this.writeUint8(bytes[i]);\n }\n }\n\n public static serializeString(s: string): ArrayBuffer {\n const bytes = new TextEncoder().encode(s);\n const serializer = Serializer.build(4 + bytes.length);\n serializer.writeUint32(bytes.length);\n for (let i = 0; i < bytes.length; ++i) {\n serializer.writeUint8(bytes[i]);\n }\n return serializer.m_dataView.buffer;\n }\n\n public static combineDataView(first: DataView, second: DataView) {\n const totalMessage = new ArrayBuffer(first.byteLength + second.byteLength);\n const totalMessageFirst = new DataView(totalMessage);\n const totalMessageSecond = new DataView(totalMessage, first.byteLength);\n\n for (let i = 0; i < first.byteLength; ++i) {\n totalMessageFirst.setUint8(i, first.getUint8(i));\n }\n\n for (let i = 0; i < second.byteLength; ++i) {\n totalMessageSecond.setUint8(i, second.getUint8(i));\n }\n\n return totalMessage;\n }\n}\n","import { Serializer } from '../../../utils/Serializer';\n\n/**\n * @beta\n * */\nexport class WebSocketMessageHeader {\n private static readonly versionSize = 1;\n\n private static readonly version = 1;\n\n private static readonly channelSize = 4;\n\n private readonly m_channel: number;\n\n private readonly m_messageType: string;\n\n public get channel(): number {\n return this.m_channel;\n }\n\n constructor(channel: number, messageType: string) {\n this.m_channel = WebSocketMessageHeader.toInteger(channel); // to make sure channel is not a floating point number\n this.m_messageType = messageType;\n }\n\n public serialize(): ArrayBuffer {\n const uint8Array = new TextEncoder().encode(this.m_messageType);\n const serializer = Serializer.build(WebSocketMessageHeader.versionSize + WebSocketMessageHeader.channelSize + 4 + uint8Array.length); // 4 for the string length\n serializer.writeUint8(WebSocketMessageHeader.version);\n serializer.writeUint32(this.m_channel);\n serializer.writeString(this.m_messageType);\n return serializer.arrayBuffer;\n }\n\n private static toInteger(float: number): number {\n return Math.trunc(float);\n }\n}\n","import { IWebSocketRequest } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\nimport { Camera } from '../../camera';\nimport { Token } from '../../../services/Token';\nimport { Serializer } from '../../../utils/Serializer';\nimport { VideoFormat, SupportedVideoFormats } from '../SupportedVideoFormats';\nimport { Utils } from '../../../utils/Utils';\n\n/**\n * @beta\n * */\nexport class CreateStreamRequest implements IWebSocketRequest {\n private static readonly command = 'CreateStream';\n\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: CreateStreamRequestBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get expectResponse() {\n return true;\n }\n\n public get body(): CreateStreamRequestBody {\n return this.m_body;\n }\n\n constructor(channel: number, cameraId: Camera, accessToken: Token, supportedFormats: SupportedVideoFormats, clientVersion: string) {\n this.m_header = new WebSocketMessageHeader(channel, CreateStreamRequest.command);\n this.m_body = new CreateStreamRequestBody(cameraId, accessToken, supportedFormats, clientVersion);\n }\n\n public serialize(): ArrayBuffer {\n const header = new DataView(this.m_header.serialize());\n const body = new DataView(this.m_body.serialize());\n\n return Serializer.combineDataView(header, body);\n }\n\n public debugStatus(indent: number): string {\n return this.m_body.debugStatus(indent);\n }\n}\n\n/**\n * @beta\n * */\nexport class CreateStreamRequestBody {\n public SupportedFormats: VideoFormat[];\n public CameraId: string;\n public AccessToken: string;\n public ClientVersion: string;\n\n constructor(cameraId: Camera, accessToken: Token, supportedFormats: SupportedVideoFormats, clientVersion: string) {\n this.SupportedFormats = supportedFormats.getAvailableFormats();\n this.CameraId = cameraId.Id;\n this.AccessToken = accessToken.Value;\n this.ClientVersion = clientVersion;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public debugStatus(indent: number): string {\n return 'CreateStreamRequest' + Utils.indentNewLine(indent) +\n 'SupportedVideoFormat: [' + this.SupportedFormats.join(', ') + ']' + Utils.indentNewLine(indent) +\n 'CameraId: ' + this.CameraId + Utils.indentNewLine(indent) +\n 'AccessToken: ' + this.AccessToken + Utils.indentNewLine(indent) +\n 'ClientVersion: ' + this.ClientVersion;\n }\n}\n\n/**\n * @beta\n * */\nexport enum StreamUsage {\n Live = 'Live',\n LowResolution = 'LowResolution',\n HighResolution = 'HighResolution',\n Remote = 'Remote',\n Recording = 'Recording',\n Automatic = 'Automatic' // review if we want another enum without automatic to prevent invalid enum values where it is not allowed\n}\n","import { IWebSocketRequest } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\nimport { Serializer } from '../../../utils/Serializer';\n\n/**\n * @beta\n * */\nexport class DeleteStreamRequest implements IWebSocketRequest {\n private static readonly command = 'DeleteStream';\n\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: DeleteStreamRequestBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get expectResponse() {\n return true;\n }\n\n constructor(channel: number) {\n this.m_header = new WebSocketMessageHeader(channel, DeleteStreamRequest.command);\n this.m_body = new DeleteStreamRequestBody();\n }\n\n public serialize(): ArrayBuffer {\n const header = new DataView(this.m_header.serialize());\n const body = new DataView(this.m_body.serialize());\n\n return Serializer.combineDataView(header, body);\n }\n\n public debugStatus(indent: number): string { // eslint-disable-line @typescript-eslint/no-unused-vars\n return 'DeleteStreamRequest';\n }\n}\n\n/**\n * @beta\n * */\nexport class DeleteStreamRequestBody {\n constructor() {\n\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n}\n","import { IWebSocketRequest } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\nimport { Serializer } from '../../../utils/Serializer';\n\n/**\n * @beta\n * */\nexport enum PtzSubCommand {\n PanTilt = 'PanTilt',\n Zoom = 'Zoom',\n GoTo = 'GoTo',\n GoToPreset = 'GoToPreset',\n GoHome = 'GoHome',\n Lock = 'Lock',\n Unlock = 'Unlock',\n RunPattern = 'RunPattern',\n Focus = 'Focus',\n Iris = 'Iris'\n}\n\n/**\n * @public\n * */\nexport enum PtzFocusDistance {\n Near,\n Far\n}\n\n/**\n * @public\n * */\nexport enum PtzIrisOperation {\n Open,\n Close\n}\n\n/**\n * @beta\n * */\nexport class PtzRequest implements IWebSocketRequest {\n private static readonly command = 'Ptz';\n\n private static readonly subCommandSeparator = ':';\n\n private readonly m_header: WebSocketMessageHeader;\n private readonly m_type: PtzSubCommand;\n private readonly m_requestBody: PtzRequestBody;\n\n public get body(): PtzRequestBody {\n return this.m_requestBody;\n }\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get expectResponse(): boolean {\n return false;\n }\n\n public get type(): PtzSubCommand {\n return this.m_type;\n }\n\n constructor(channel: number, subCommand: PtzSubCommand, requestBody: PtzRequestBody) {\n this.m_type = subCommand;\n this.m_requestBody = requestBody;\n this.m_header = new WebSocketMessageHeader(channel, PtzRequest.command + PtzRequest.subCommandSeparator + subCommand);\n }\n\n public serialize(): ArrayBuffer {\n const header = new DataView(this.m_header.serialize());\n const body = new DataView(this.m_requestBody.serialize());\n\n return Serializer.combineDataView(header, body);\n }\n\n public debugStatus(indent: number): string { // eslint-disable-line @typescript-eslint/no-unused-vars\n return 'PtzRequest';\n }\n}\n\n/**\n * @beta\n * */\nexport class PanTiltBody implements PtzRequestBody {\n public readonly Pan: number | null;\n public readonly Tilt: number | null;\n\n constructor(pan: number | null, tilt: number | null) {\n this.Pan = pan;\n this.Tilt = tilt;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Pan: ${this.Pan}, Tilt: ${this.Tilt}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class ZoomBody implements PtzRequestBody {\n public readonly Zoom: number | null;\n\n constructor(zoom: number | null) {\n this.Zoom = zoom;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Zoom: ${this.Zoom}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class GoToBody implements PtzRequestBody {\n public readonly IsAbsolute: boolean;\n public readonly Pan: number;\n public readonly Tilt: number;\n public readonly Zoom: number;\n\n constructor(isAbsolute: boolean, pan: number, tilt: number, zoom: number) {\n this.IsAbsolute = isAbsolute;\n this.Pan = pan;\n this.Tilt = tilt;\n this.Zoom = zoom;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `IsAbsolute: ${this.IsAbsolute}, Pan: ${this.Pan}, Tilt: ${this.Tilt}, Zoom: ${this.Zoom}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class GoToPresetBody implements PtzRequestBody {\n public readonly Preset: number;\n\n constructor(preset: number) {\n this.Preset = preset;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Preset: ${this.Preset}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class GoHomeBody implements PtzRequestBody {\n constructor() { }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return 'GoHomeBody';\n }\n}\n\n/**\n * @beta\n * */\nexport class RunPatternBody implements PtzRequestBody {\n public readonly Pattern: number;\n\n constructor(pattern: number) {\n this.Pattern = pattern;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Pattern: ${this.Pattern}`;\n }\n}\n\nexport class LockBody implements PtzRequestBody {\n constructor() { }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return 'LockBody';\n }\n}\n\nexport class UnlockBody implements PtzRequestBody {\n constructor() { }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return 'UnlockBody';\n }\n}\n\n/**\n * @beta\n * */\nexport class FocusBody implements PtzRequestBody {\n public readonly Distance: PtzFocusDistance | null;\n public readonly Speed: number | null;\n\n constructor(distance: PtzFocusDistance | null, speed: number | null) {\n this.Distance = distance;\n this.Speed = distance !== null ? speed : null;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Distance: ${this.Distance}, Speed: ${this.Speed}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class IrisBody {\n public readonly Operation: PtzIrisOperation | null;\n public readonly Speed: number | null;\n\n constructor(operation: PtzIrisOperation | null, speed: number | null) {\n this.Operation = operation;\n this.Speed = operation !== null ? speed : null;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Operation: ${this.Operation}, Speed: ${this.Speed}`;\n }\n}\n\n/**\n * Empty Interface to determine contract of throttledCommands\n */\nexport interface PtzRequestBody {\n serialize(): ArrayBuffer;\n toString(): string;\n}\n","import { IWebSocketRequest } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\nimport { PlaySpeed } from '../../PlaySpeed';\nimport { Token } from '../../../services/Token';\nimport { StreamUsage } from './CreateStream';\nimport { Serializer } from '../../../utils/Serializer';\nimport { PlayerMode } from '../../../enums';\nimport { VideoFormat, SupportedVideoFormats } from '../SupportedVideoFormats';\nimport { Utils } from '../../../utils/Utils';\n\n/**\n * @beta\n * */\nexport class UpdateStreamRequest implements IWebSocketRequest {\n private static readonly command = 'UpdateStream';\n\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: UpdateStreamRequestBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get body(): UpdateStreamRequestBody {\n return this.m_body;\n }\n\n public get expectResponse() {\n return true;\n }\n\n constructor(channel: number,\n parameters: {\n playerMode?: PlayerMode, seekTime?: Date, playSpeed?: PlaySpeed, pause?: boolean, timeLine?: TimeLine,\n token?: Token, audioEnabled?: boolean, supportedFormats?: SupportedVideoFormats, streamUsage?: StreamUsage\n }) {\n this.m_header = new WebSocketMessageHeader(channel, UpdateStreamRequest.command);\n this.m_body = new UpdateStreamRequestBody(parameters);\n }\n\n public serialize(): ArrayBuffer {\n const header = new DataView(this.m_header.serialize());\n const body = new DataView(this.m_body.serialize());\n\n return Serializer.combineDataView(header, body);\n }\n\n static buildTokenUpdate(channel: number, newToken: Token): IWebSocketRequest {\n return new UpdateStreamRequest(channel, { token: newToken });\n }\n\n public debugStatus(indent: number): string {\n return this.m_body.debugStatus(indent);\n }\n}\n\n/**\n * @beta\n * */\nexport class UpdateStreamRequestBody {\n public readonly PlayerMode?: PlayerMode;\n public readonly SeekTime?: Date;\n public readonly PlaySpeed?: number;\n public readonly Pause?: boolean;\n public readonly TimeLine?: TimeLine;\n public readonly Token?: string;\n public readonly AudioEnabled?: boolean;\n public readonly SupportedFormats?: VideoFormat[]\n public readonly StreamUsage?: StreamUsage;\n\n constructor(parameters: {\n playerMode?: PlayerMode, seekTime?: Date, playSpeed?: PlaySpeed, pause?: boolean, timeLine?: TimeLine,\n token?: Token, audioEnabled?: boolean, supportedFormats?: SupportedVideoFormats, streamUsage?: StreamUsage\n }) {\n this.PlayerMode = parameters.playerMode;\n this.SeekTime = parameters.seekTime;\n this.PlaySpeed = parameters.playSpeed !== undefined ? parameters.playSpeed.Value : undefined;\n this.Pause = parameters.pause;\n this.AudioEnabled = parameters.audioEnabled;\n this.TimeLine = parameters.timeLine;\n this.Token = parameters.token?.Value;\n this.SupportedFormats = parameters.supportedFormats?.getAvailableFormats();\n this.StreamUsage = parameters.streamUsage;\n }\n\n public serialize(): ArrayBuffer {\n const bodyJson = JSON.stringify(this);\n return Serializer.serializeString(bodyJson);\n }\n\n public toString(): string {\n return `Player Mode: ${this.PlayerMode}\n Seek Time: ${Utils.formatDate(this.SeekTime)}\n PlaySpeed: ${this.PlaySpeed}\n Pause: ${this.Pause}\n AudioEnabled: ${this.AudioEnabled}\n TimeLine: ${this.TimeLine?.toString()}\n Token: ${this.Token}\n Supported Formats: ${this.SupportedFormats?.toString()}\n Stream Usage: ${this.StreamUsage}`;\n }\n\n public debugStatus(indent: number): string {\n return 'UpdateStream' + Utils.indentNewLine(indent) +\n `Player Mode: ${this.PlayerMode}` + Utils.indentNewLine(indent) +\n `Seek Time: ${Utils.formatDate(this.SeekTime)}` + Utils.indentNewLine(indent) +\n `PlaySpeed: ${this.PlaySpeed}` + Utils.indentNewLine(indent) +\n `Pause: ${this.Pause}` + Utils.indentNewLine(indent) +\n `AudioEnabled: ${this.AudioEnabled}` + Utils.indentNewLine(indent) +\n `TimeLine: ${this.TimeLine?.toString()}` + Utils.indentNewLine(indent) +\n `Token: ${this.Token}` + Utils.indentNewLine(indent) +\n `Supported Formats: ${this.SupportedFormats?.toString()}` + Utils.indentNewLine(indent) +\n `Stream Usage: ${this.StreamUsage}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class TimeLine {\n public Start: Date;\n public End: Date;\n\n constructor(start: Date, end: Date) {\n this.Start = start;\n this.End = end;\n }\n\n public toString(): string {\n return `[${Utils.formatDate(this.Start)} - ${Utils.formatDate(this.End)}]`;\n }\n}\n","import { IWebSocketResponse } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\n\n/**\n * @beta\n * */\nexport class ErrorResponse implements IWebSocketResponse {\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: ErrorResponseBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get body(): ErrorResponseBody {\n return this.m_body;\n }\n\n constructor(header: WebSocketMessageHeader, body: ErrorResponseBody) {\n this.m_header = header;\n this.m_body = body;\n }\n}\n\n/**\n * @beta\n * */\nexport class ErrorResponseBody {\n public readonly ErrorMessage: string;\n\n constructor(errorMessage: string) {\n this.ErrorMessage = errorMessage;\n }\n\n public static deserialize(body: string): ErrorResponseBody {\n const errorResponseBody: ErrorResponseBody = JSON.parse(body);\n return errorResponseBody;\n }\n}\n","import { Utils } from './Utils';\n\n/**\n * @beta\n * */\nexport class VideoWatermarkConfig {\n /// \n /// From 0 (invisible)\n /// to 1 (fully opaque)\n /// \n public readonly Opacity: number;\n\n /// \n /// From 1 (minimum size)\n /// to 100 (maximum size)\n /// \n public readonly Size: number;\n\n /// \n /// From 0 (no rotation)\n /// to 45 (45°)\n /// \n public readonly Rotation: number;\n\n public readonly Position: number;\n\n public readonly IncludeUsername: boolean;\n\n public readonly IncludeWorkstation: boolean;\n\n public readonly IncludeCameraName: boolean;\n\n public readonly Username: string;\n\n public readonly CameraName: string;\n\n public readonly Workstation: string;\n\n public overlayText: string[] = [];\n\n public static readonly Disabled: VideoWatermarkConfig = new VideoWatermarkConfig(0, 0, 0, 0, false, false, false, '', '', '');\n\n private constructor(opacityOn255: number, size: number, position: number, rotation: number, includeUsername: boolean, includeWorkstation: boolean,\n includeCameraName: boolean, username: string, cameraName: string, workstation: string) {\n const MaxOpacityFromSecurityCenter = 255;\n this.Opacity = opacityOn255 / MaxOpacityFromSecurityCenter;\n this.Size = size;\n this.Position = position;\n this.Rotation = rotation;\n this.Username = username;\n this.CameraName = cameraName;\n this.Workstation = workstation;\n this.IncludeUsername = includeUsername;\n this.IncludeWorkstation = includeWorkstation;\n this.IncludeCameraName = includeCameraName;\n if (this.IncludeUsername) this.overlayText.push(this.Username);\n // if (this.IncludeWorkstation) this.overlayText.push(this.Workstation); // Currently, it is media gateway and it is not relevant\n if (this.IncludeCameraName) this.overlayText.push(this.CameraName);\n }\n\n public toString(): string {\n return this.debugStatus(0);\n }\n\n public static build(serialized: any): VideoWatermarkConfig {\n if (serialized === null) {\n return VideoWatermarkConfig.Disabled;\n }\n if (serialized === undefined || serialized.Opacity === undefined || serialized.Size === undefined || serialized.Rotation === undefined || serialized.Position === undefined || serialized.IncludeUsername === undefined || serialized.IncludeWorkstation === undefined || serialized.IncludeCameraName === undefined || serialized.Username === undefined || serialized.CameraName === undefined || serialized.Workstation === undefined) {\n throw new Error('VideoWatermarkConfig has incorrect format: ' + serialized);\n }\n\n const videoWatermarkConfig = new VideoWatermarkConfig(serialized.Opacity, serialized.Size, serialized.Position, serialized.Rotation, serialized.IncludeUsername, serialized.IncludeWorkstation, serialized.IncludeCameraName, serialized.Username, serialized.CameraName, serialized.Workstation);\n\n //We do not display the machine name. If userName and camerName are not displayed, there is nothing to display. Save computing by disabling videowatermark.\n return (videoWatermarkConfig.IncludeUsername || videoWatermarkConfig.IncludeCameraName) ? videoWatermarkConfig : VideoWatermarkConfig.Disabled;\n }\n\n public debugStatus(indent: number): string {\n if (this === VideoWatermarkConfig.Disabled) {\n return 'Video watermarking config: Disabled';\n }\n\n return 'Video watermarking config:' + Utils.indentNewLine(indent) +\n 'Opacity: ' + this.Opacity + Utils.indentNewLine(indent) +\n 'Size: ' + this.Size + Utils.indentNewLine(indent) +\n 'Position: ' + TextOverlayPosition[this.Position] + Utils.indentNewLine(indent) +\n 'Rotation: ' + this.Rotation + Utils.indentNewLine(indent) +\n 'Username: ' + this.Username + Utils.indentNewLine(indent) +\n 'CameraName: ' + this.CameraName + Utils.indentNewLine(indent) +\n 'Workstation: ' + this.Workstation + Utils.indentNewLine(indent) +\n 'IncludeUsername: ' + this.IncludeUsername + Utils.indentNewLine(indent) +\n 'IncludeWorkstation: ' + this.IncludeWorkstation + Utils.indentNewLine(indent) +\n 'IncludeCameraName: ' + this.IncludeCameraName + Utils.indentNewLine(indent) +\n 'OverlayText: ' + this.overlayText;\n }\n}\n\nexport enum TextOverlayPosition {\n Mosaic = 0,\n TopLeft = 1,\n Top = 2,\n TopRight = 3,\n CenterLeft = 4,\n Center = 5,\n CenterRight = 6,\n BottomLeft = 7,\n Bottom = 8,\n BottomRight = 9\n}\n","/**\n * @beta\n * */\nexport class Resolution {\n public static readonly None: Resolution = new Resolution(0, 0);\n\n public readonly Width: number;\n public readonly Height: number;\n\n public get IsNone(): boolean {\n return this.equals(Resolution.None);\n }\n\n private constructor(width: number, height: number) {\n this.Width = width;\n this.Height = height;\n }\n\n public static build(width: number, height: number): Resolution {\n if (width <= 0 || height <= 0) {\n return Resolution.None;\n }\n\n return new Resolution(width, height);\n }\n\n public isGreaterOrEqualThan(compared: Resolution): boolean {\n return this.Width >= compared.Width && this.Height >= compared.Height;\n }\n\n public equals(compared: Resolution): boolean {\n return this.Width === compared.Width && this.Height === compared.Height;\n }\n\n public toString(): string {\n return `${this.Width.toFixed(0)}x${this.Height.toFixed(0)}`;\n }\n\n public fitInto(destination: Resolution): Resolution {\n const scale = this.scaleToFitInto(destination);\n return Resolution.build(this.Width * scale, this.Height * scale);\n }\n\n public scaleToFitInto(destination: Resolution): number {\n const scaleW = destination.Width / this.Width;\n const scaleH = destination.Height / this.Height;\n\n return (scaleW > scaleH) ? scaleH : scaleW;\n }\n}\n","import { StreamUsage } from './Api/CreateStream';\nimport { Resolution } from '../../utils/Resolution';\n\n/**\n * @beta\n* */\nexport class DefaultStreamUsage {\n public readonly StreamUsage: StreamUsage;\n\n public readonly LowToLiveThreshold: Resolution | undefined;\n\n public readonly LiveToHighThreshold: Resolution | undefined;\n\n constructor(streamUsage: StreamUsage, lowToLiveThreshold?: Resolution, liveToHighThreshold?: Resolution) {\n if (streamUsage === StreamUsage.Automatic) {\n if (lowToLiveThreshold === undefined || liveToHighThreshold === undefined) {\n throw new Error('Automatic stream usage requires thresholds');\n }\n if (liveToHighThreshold.Width < lowToLiveThreshold.Width ||\n liveToHighThreshold.Height < lowToLiveThreshold.Height) {\n throw new Error(`LiveToHighThreshold (${liveToHighThreshold.toString()}) must be greater or equal to LowToLiveThreshold (${lowToLiveThreshold.toString()})`);\n }\n\n this.LowToLiveThreshold = lowToLiveThreshold;\n this.LiveToHighThreshold = liveToHighThreshold;\n }\n\n this.StreamUsage = streamUsage;\n }\n\n public toString(): string {\n return (this.StreamUsage !== StreamUsage.Automatic) ?\n this.StreamUsage :\n `Automatic: ${this.LowToLiveThreshold?.toString()} / ${this.LiveToHighThreshold?.toString()}`;\n }\n\n public getStreamUsage(resolution?: Resolution): StreamUsage {\n if (this.StreamUsage === StreamUsage.Automatic) {\n if (resolution === undefined || !resolution.isGreaterOrEqualThan(this.LowToLiveThreshold!)) {\n return StreamUsage.LowResolution;\n }\n if (!resolution.isGreaterOrEqualThan(this.LiveToHighThreshold!)) {\n return StreamUsage.Live;\n }\n return StreamUsage.HighResolution;\n }\n\n return this.StreamUsage;\n }\n\n public static build(serialized: any): DefaultStreamUsage {\n if (serialized === undefined || serialized === null) {\n throw new Error('Unserialization of DefaultStreamUsage failed');\n }\n\n const streamUsage: StreamUsage = serialized.StreamUsage;\n if (!Object.values(StreamUsage).includes(streamUsage)) {\n throw new Error(`Unknown stream usage ${streamUsage}`);\n }\n\n if (streamUsage === StreamUsage.Automatic) {\n const lowToLiveThreshold = this.deserializeResolution(serialized.LowToLiveThreshold);\n const liveToHighThreshold = this.deserializeResolution(serialized.LiveToHighThreshold);\n return new DefaultStreamUsage(streamUsage, lowToLiveThreshold, liveToHighThreshold);\n }\n\n return new DefaultStreamUsage(streamUsage);\n }\n\n private static deserializeResolution(serialized: any): Resolution {\n const width: number = serialized.Width;\n const height: number = serialized.Height;\n if (width === undefined || height === undefined) {\n throw new Error(`Unserialization of Resolution failed ${serialized}`);\n }\n\n return Resolution.build(width, height);\n }\n}\n","/** @beta */\nexport class Coords {\n public static readonly Origin = new Coords(0, 0);\n\n protected readonly m_x: number;\n\n protected readonly m_y: number;\n\n public get X() {\n return this.m_x;\n }\n\n public get Y() {\n return this.m_y;\n }\n\n public constructor(x: number, y: number) {\n this.m_x = x;\n this.m_y = y;\n }\n\n public toString(): string {\n return `(${this.m_x.toFixed(2)}, ${this.m_y.toFixed(2)})`;\n }\n}\n","import { Radian } from './Radian';\nimport { Vec2 } from './Vec2';\n\nexport class PolarVector {\n private readonly m_radius: number;\n private readonly m_angle: Radian;\n\n public get Radius(): number {\n return this.m_radius;\n }\n\n public get Angle(): Radian {\n return this.m_angle;\n }\n\n constructor(radius: number, angle: Radian) {\n this.m_radius = radius;\n this.m_angle = angle;\n }\n\n public toString(): string {\n return `[${this.m_radius}, ${this.m_angle.toString()}]`;\n }\n\n public rotate(pan: Radian): PolarVector {\n return new PolarVector(this.m_radius, this.m_angle.add(pan));\n }\n\n public tilt(tilt: number): PolarVector {\n return new PolarVector(this.m_radius + tilt, this.m_angle);\n }\n\n public toCartesian(): Vec2 {\n return new Vec2(this.m_radius * Math.cos(this.m_angle.InRadian), this.m_radius * Math.sin(this.m_angle.InRadian));\n }\n}\n","import { Radian } from './Radian';\n\nexport class Degree {\n private readonly m_angle: number;\n\n public get InDegree(): number {\n return this.m_angle;\n }\n\n constructor(angle: number) {\n this.m_angle = angle;\n }\n\n public toString(): string {\n return `${this.m_angle.toFixed(3)}°`;\n }\n\n public toRadian(): Radian {\n return new Radian(this.m_angle * Math.PI / 180);\n }\n}\n","import { Degree } from './Degree';\n\nexport class Radian {\n private readonly m_angle: number;\n\n public get InRadian(): number {\n return this.m_angle;\n }\n\n constructor(angle: number) {\n this.m_angle = angle;\n }\n\n public toString(): string {\n return `${this.m_angle}R (${this.toDegree().toString()})`;\n }\n\n public toDegree(): Degree {\n return new Degree(this.m_angle * 180 / Math.PI);\n }\n\n public add(radian: Radian): Radian {\n return new Radian(this.m_angle + radian.m_angle);\n }\n\n public subtract(radian: Radian): Radian {\n return new Radian(this.m_angle - radian.m_angle);\n }\n\n public opposite(): Radian {\n return new Radian(this.m_angle * -1);\n }\n\n public cos(): number {\n return Math.cos(this.m_angle);\n }\n\n public sin(): number {\n return Math.sin(this.m_angle);\n }\n}\n","import { Coords } from './Coords';\nimport { PolarVector } from './PolarVec2';\nimport { Radian } from './Radian';\nimport { Resolution } from './Resolution';\n\n//Coordinates (I think)\n//Screen:\n// origin: (0, 0) top left\n// directions: [left -] [right +] [up -] [down +]\n// scale: 1 is 1 pixel\n//Normalized:\n// origin: (0, 0) bottom left (as webgl handles its texture. Don't try to go against this)\n// directions: [left -] [right +] [up +] [down -]\n// scale: 1 is the entire region (resolution of the image, resolution of the circle, depends on the context)\n//cliped:\n// origin: (0, 0) center\n// directions: [left -] [right +] [up +] [down -]\n// scale: 1 is half of region in both direction (resolution of the image, resolution of the circle, depends on the context)\n\nexport class Vec2 {\n public static readonly Zero: Vec2 = new Vec2(0, 0);\n\n private readonly m_x: number;\n private readonly m_y: number;\n\n public get X(): number {\n return this.m_x;\n }\n\n public get Y(): number {\n return this.m_y;\n }\n\n constructor(x: number, y: number) {\n this.m_x = x;\n this.m_y = y;\n }\n\n public toString(): string {\n return `(${this.m_x.toFixed(3)}, ${this.m_y.toFixed(3)})`;\n }\n\n public equals(other: Vec2): boolean {\n return this.m_x === other.m_x && this.m_y === other.m_y;\n }\n\n public static build(value: number): Vec2 {\n return new Vec2(value, value);\n }\n\n //Angle between the positive X axis and the vector\n public angle(): Radian {\n return new Radian(Math.atan2(this.m_y, this.m_x));\n }\n\n public toPolar(): PolarVector {\n return new PolarVector(this.length(), this.angle());\n }\n\n public toClipSpace(screenSpace: Resolution): ClipSpaceVec2 {\n return ClipSpaceVec2.fromVec2(this, screenSpace);\n }\n\n public plus(right: Vec2): Vec2 {\n return new Vec2(this.m_x + right.m_x, this.m_y + right.m_y);\n }\n\n public minus(right: Vec2): Vec2 {\n return new Vec2(this.m_x - right.m_x, this.m_y - right.m_y);\n }\n\n public multiply(right: Vec2): Vec2 {\n return new Vec2(this.m_x * right.m_x, this.m_y * right.m_y);\n }\n\n public divide(right: Vec2): Vec2 {\n return new Vec2(this.m_x / right.m_x, this.m_y / right.m_y);\n }\n\n public plusC(right: number): Vec2 {\n return this.plus(Vec2.build(right));\n }\n\n public minusC(right: number): Vec2 {\n return this.minus(Vec2.build(right));\n }\n\n public multiplyC(right: number): Vec2 {\n return this.multiply(Vec2.build(right));\n }\n\n public divideC(right: number): Vec2 {\n return this.divide(Vec2.build(right));\n }\n\n public toNormalized(resolution: Resolution): NormalizedVec2 {\n if (resolution.equals(Resolution.None)) {\n throw new Error('Cannot convert to a normalized vector with Resolution.None');\n }\n return new NormalizedVec2(this.X / resolution.Width, this.Y / resolution.Height);\n }\n\n public static fromResolution(resolution: Resolution): Vec2 {\n return new Vec2(resolution.Width, resolution.Height);\n }\n\n public static fromCoords(coords: Coords): Vec2 {\n return new Vec2(coords.X, coords.Y);\n }\n\n private length(): number {\n return Math.sqrt(Math.pow(this.m_x, 2.0) + Math.pow(this.m_y, 2.0));\n }\n}\n\n// Just a tag type so we know when we are in [-1, 1]\n// As a regular cartesian plan:\n// - positive X are right of the origin\n// - positive Y are up of the origin\nexport class ClipSpaceVec2 extends Vec2 {\n public static readonly Origin: ClipSpaceVec2 = new ClipSpaceVec2(0, 0);\n\n private static readonly normalizedTranslation: Vec2 = new Vec2(1, -1);\n private static readonly normalizedScaled: Vec2 = new Vec2(2, -2);\n\n public static fromVec2(vec2: Vec2, resolution: Resolution): ClipSpaceVec2 {\n const normalized = NormalizedVec2.fromVec2(vec2, resolution);\n return ClipSpaceVec2.fromNormalized(normalized);\n }\n\n public static fromNormalized(normalized: NormalizedVec2): ClipSpaceVec2 {\n const cliped = normalized.multiply(this.normalizedScaled).minus(this.normalizedTranslation);\n return new ClipSpaceVec2(cliped.X, cliped.Y);\n }\n\n public constructor(x: number, y: number) {\n super(x, y);\n }\n\n public isInClipSpace(): boolean {\n return (-1 <= this.X && this.X <= 1.0 &&\n -1 <= this.Y && this.Y <= 1.0);\n }\n\n public toNormalized(): NormalizedVec2 {\n const normalized = this.plus(ClipSpaceVec2.normalizedTranslation).divide(ClipSpaceVec2.normalizedScaled);\n return new NormalizedVec2(normalized.X, normalized.Y);\n }\n\n public toScreenSpace(screenSpace: Resolution): Vec2 {\n const normalized = this.toNormalized();\n return normalized.toPixel(screenSpace);\n }\n\n public rotate(angle: Radian): ClipSpaceVec2 {\n return this.rotate2(angle.sin(), angle.cos());\n }\n\n public rotate2(sin: number, cos: number): ClipSpaceVec2 {\n return new ClipSpaceVec2(this.X * cos - this.Y * sin, this.X * sin + this.Y * cos);\n }\n\n public roundEspilonToZero(): ClipSpaceVec2 {\n const epsilon: number = 0.0000001;\n return new ClipSpaceVec2(\n Math.abs(this.X) < epsilon ? 0 : this.X,\n Math.abs(this.Y) < epsilon ? 0 : this.Y);\n }\n\n public clipLength(maxLength: number): ClipSpaceVec2 {\n const polar = this.toPolar();\n if (polar.Radius <= maxLength) {\n return this;\n }\n\n const cliped = new PolarVector(maxLength, polar.Angle).toCartesian();\n return new ClipSpaceVec2(cliped.X, cliped.Y);\n }\n}\n\n// Just a tag type so we know when we are in [0, 1]\n// 0, 0 is... top left\n// Maybe we don't even need this type but note that:\n// In windows, (0, 0) is top left. In WebGL, (0, 0) is bottom left...\nexport class NormalizedVec2 extends Vec2 {\n public static fromVec2(vec2: Vec2, resolution: Resolution) {\n const scaled = vec2.divide(Vec2.fromResolution(resolution));\n return new NormalizedVec2(scaled.X, scaled.Y);\n }\n\n public toPixel(screenSpace: Resolution): Vec2 {\n return this.multiply(Vec2.fromResolution(screenSpace));\n }\n}\n","import { Coords } from './Coords';\nimport { Resolution } from './Resolution';\nimport { ClipSpaceVec2, Vec2 } from './Vec2';\n\n//Coordinates in a [0, 1] space\nexport class NormalizedCoords extends Coords {\n public static readonly Origin = new NormalizedCoords(0, 0);\n\n public constructor(x: number, y: number) {\n super(x, y);\n }\n\n public toPixel(resolution: Resolution): Vec2 {\n return new Vec2(this.m_x * resolution.Width, this.m_y * resolution.Height);\n }\n\n public toClipSpaceVec2(): ClipSpaceVec2 {\n return new ClipSpaceVec2(this.m_x * 2 - 1, this.m_y * 2 - 1);\n }\n}\n","import { Degree } from '../utils/Degree';\nimport { Radian } from '../utils/Radian';\nimport { assertUnreachable } from '../utils/Utils';\nimport { ClipSpaceVec2 } from '../utils/Vec2';\nimport { CameraPosition } from './DewarperSourceImageParameters';\n\nexport interface ICameraPosition {\n getRotation(xy: ClipSpaceVec2): Radian;\n toString(): string;\n}\n\nexport class CameraPositionBuilder {\n public static build(cameraPosition: CameraPosition): ICameraPosition {\n switch (cameraPosition) {\n case CameraPosition.Wall:\n return new CameraPositionWall();\n case CameraPosition.Ceiling:\n return new CameraPositionCeiling();\n case CameraPosition.Floor:\n return new CameraPositionFloor();\n default:\n assertUnreachable(cameraPosition);\n }\n }\n}\n\nexport class CameraPositionWall implements ICameraPosition {\n public getRotation(xy: ClipSpaceVec2): Radian {\n return xy.toPolar().Angle.opposite(); //Todo: Find out why need to reverse here and not in prototype?\n }\n\n public toString(): string {\n return 'Wall';\n }\n}\n\nexport class CameraPositionCeiling implements ICameraPosition {\n private static readonly requiredRotation: Radian = new Degree(-90).toRadian();\n\n public getRotation(_: ClipSpaceVec2): Radian {\n return CameraPositionCeiling.requiredRotation;\n }\n\n public toString(): string {\n return 'Ceiling';\n }\n}\n\nexport class CameraPositionFloor implements ICameraPosition {\n private static readonly requiredRotation: Radian = new Degree(90).toRadian();\n\n public getRotation(_: ClipSpaceVec2): Radian {\n return CameraPositionFloor.requiredRotation;\n }\n\n public toString(): string {\n return 'Floor';\n }\n}\n","import { Radian } from './Radian';\nimport { ClipSpaceVec2 } from './Vec2';\n\nexport class Vec3 {\n public static readonly Zero: Vec3 = new Vec3(0, 0, 0);\n\n private readonly m_x: number;\n private readonly m_y: number;\n private readonly m_z: number;\n\n public get X(): number {\n return this.m_x;\n }\n\n public get Y(): number {\n return this.m_y;\n }\n\n public get Z(): number {\n return this.m_z;\n }\n\n constructor(x: number, y: number, z: number) {\n this.m_x = x;\n this.m_y = y;\n this.m_z = z;\n }\n\n public toString(): string {\n return `(${this.m_x.toFixed(3)}, ${this.m_y.toFixed(3)}, ${this.m_z.toFixed(3)})`;\n }\n\n public static build(value: number): Vec3 {\n return new Vec3(value, value, value);\n }\n\n public plus(right: Vec3): Vec3 {\n return new Vec3(this.m_x + right.m_x, this.m_y + right.m_y, this.m_z + right.m_z);\n }\n\n public minus(right: Vec3): Vec3 {\n return new Vec3(this.m_x - right.m_x, this.m_y - right.m_y, this.m_z - right.m_z);\n }\n\n public multiply(right: Vec3): Vec3 {\n return new Vec3(this.m_x * right.m_x, this.m_y * right.m_y, this.m_z * right.m_z);\n }\n\n public plusC(right: number): Vec3 {\n return this.plus(Vec3.build(right));\n }\n\n public multiplyC(right: number): Vec3 {\n return this.multiply(Vec3.build(right));\n }\n\n public dropZ(): ClipSpaceVec2 {\n return new ClipSpaceVec2(this.m_x, this.m_y);\n }\n\n //Angle vs Z axis\n public get PolarBeta(): Radian {\n return new Radian(Math.atan2(Math.sqrt(this.m_x * this.m_x + this.m_y * this.m_y), this.m_z));\n }\n\n //Angle on the X-Y plane\n public get PolarDelta(): Radian {\n return new Radian(Math.atan2(this.m_y, this.m_x));\n }\n}\n","import { Radian } from './Radian';\nimport { Vec3 } from './Vec3';\n\nexport class PolarVec3 {\n private readonly m_radius: number\n private readonly m_beta: Radian;\n private readonly m_delta: Radian;\n\n constructor(radius: number, beta: Radian, delta: Radian) {\n this.m_radius = radius;\n this.m_beta = beta;\n this.m_delta = delta;\n }\n\n public toString(): string {\n return `(R:${this.m_radius.toFixed(3)}, beta:${this.m_beta.toString()}, delta: ${this.m_delta.toString()})`;\n }\n\n public toCartesian(): Vec3 {\n const x = this.m_radius * this.m_beta.sin() * this.m_delta.cos();\n const y = this.m_radius * this.m_beta.sin() * this.m_delta.sin();\n const z = this.m_radius * this.m_beta.cos();\n return new Vec3(x, y, z);\n }\n}\n","import { PolarVec3 } from '../utils/PolarVec3';\nimport { Radian } from '../utils/Radian';\nimport { assertUnreachable } from '../utils/Utils';\nimport { ClipSpaceVec2 } from '../utils/Vec2';\nimport { Projection } from './DewarperSourceImageParameters';\n\nexport interface IProjection {\n apply(x: number): number;\n applyCode(): string; //to produce webgl code\n\n reverse(x: number): number;\n reverseCode(variableName: string): string; //to produce webgl code\n\n adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2;\n unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2;\n\n toString(): string;\n}\n\nexport class ProjectionBuilder {\n public static build(projection: Projection): IProjection {\n switch (projection) {\n case Projection.Orthographic:\n return new Orthographic();\n case Projection.Equisolid:\n return new Equisolid();\n case Projection.Equidistant:\n return new Equidistant();\n case Projection.Stereographic:\n return new Stereographic();\n case Projection.None:\n return new None();\n default:\n assertUnreachable(projection);\n }\n }\n}\n\nexport class Orthographic implements IProjection {\n public apply(beta: number): number {\n return Math.sin(beta);\n }\n\n public applyCode(): string {\n return '(sin(beta))';\n }\n\n public reverse(reverse: number): number {\n return Math.asin(reverse);\n }\n\n public reverseCode(variableName: string): string {\n return `(asin(${variableName}))`;\n }\n\n public adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.adjustXY(xy, this);\n }\n\n public unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.unadjustXY(xy, this);\n }\n\n public toString(): string {\n return 'Orthographic';\n }\n}\n\nexport class Stereographic implements IProjection {\n public apply(beta: number): number {\n return Math.tan(beta / 2.0);\n }\n\n public applyCode(): string {\n return '(tan(beta/2.0))';\n }\n\n public reverse(reverse: number): number {\n return Math.atan(reverse) * 2.0;\n }\n\n public reverseCode(variableName: string): string {\n return `(atan(${variableName}) * 2.0)`; //todo: watchout for atan2 (different quadrant problem)\n }\n\n public adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.adjustXY(xy, this);\n }\n\n public unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.unadjustXY(xy, this);\n }\n\n public toString(): string {\n return 'Stereographic';\n }\n}\n\nexport class Equisolid implements IProjection {\n private static readonly sqrtOf2 = Math.sqrt(2.0);\n\n public apply(beta: number): number {\n return Equisolid.sqrtOf2 * Math.sin(beta/ 2.0);\n }\n\n public applyCode(): string {\n return `(${toFloat(Equisolid.sqrtOf2)} * sin(beta/2.0))`;\n }\n\n public reverse(reverse: number): number {\n return 2.0 * Math.asin(reverse / Equisolid.sqrtOf2);\n }\n\n public reverseCode(variableName: string): string {\n return `(2.0 * asin(${variableName} / ${toFloat(Equisolid.sqrtOf2)}))`;\n }\n\n public adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.adjustXY(xy, this);\n }\n\n public unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.unadjustXY(xy, this);\n }\n\n public toString(): string {\n return 'Equisolid';\n }\n}\n\nexport class Equidistant implements IProjection {\n private static readonly twoOnPi = 2.0 / Math.PI;\n\n public apply(beta: number): number {\n return Equidistant.twoOnPi * beta;\n }\n\n public applyCode(): string {\n return `(${toFloat(Equidistant.twoOnPi)} * beta)`;\n }\n\n public reverse(reverse: number): number {\n return reverse / Equidistant.twoOnPi;\n }\n\n public reverseCode(variableName: string): string {\n return `(${variableName} / ${toFloat(Equidistant.twoOnPi)})`;\n }\n\n public adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.adjustXY(xy, this);\n }\n\n public unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return ProjectionBase.unadjustXY(xy, this);\n }\n\n public toString(): string {\n return 'Equidistant';\n }\n}\n\nexport class None implements IProjection {\n public apply(beta: number): number {\n return beta;\n }\n\n public applyCode(): string {\n return '(beta)';\n }\n\n public reverse(reverse: number): number {\n return reverse;\n }\n\n public reverseCode(variableName: string): string {\n return `(${variableName})`;\n }\n\n public adjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return xy;\n }\n\n public unadjustXY(xy: ClipSpaceVec2): ClipSpaceVec2 {\n return xy;\n }\n\n public toString(): string {\n return 'None';\n }\n}\n\nclass ProjectionBase {\n public static adjustXY(xy: ClipSpaceVec2, projection: IProjection): ClipSpaceVec2 {\n const requestedAngle = xy.toPolar().Angle;\n\n const polarPrimeXYZdelta: Radian = requestedAngle;\n let polarPrimeXYZbeta: Radian;\n if (xy.X === 0 && xy.Y !== 0) {\n polarPrimeXYZbeta = new Radian(projection.reverse(xy.Y) / requestedAngle.sin());\n } else {\n polarPrimeXYZbeta = new Radian(projection.reverse(xy.X) / requestedAngle.cos());\n }\n\n //The zoom does not matter when adjusting the goto location so we simplify it to 1\n const pPrimePolarXYZ = new PolarVec3(1.0, polarPrimeXYZbeta, polarPrimeXYZdelta);\n return pPrimePolarXYZ.toCartesian().dropZ();\n }\n\n //This reverses the computation done in the adjustXY\n //Made possible by knowing that the angle part of the polar coordinates will not change so the resulting atan(x, y) does not change and we can reverse the process\n public static unadjustXY(xy: ClipSpaceVec2, projection: IProjection): ClipSpaceVec2 {\n const atan = Math.atan2(xy.Y, xy.X);\n const x = projection.apply(Math.cos(atan) * Math.asin(xy.X / Math.cos(atan)));\n const y = Math.tan(atan) * x;\n return new ClipSpaceVec2(x, y);\n }\n}\n\nfunction toFloat(x: number): string {\n return Number.isInteger(x) ? x + '.0' : x.toString();\n}\n","import { Coords } from '../utils/Coords';\nimport { NormalizedCoords } from '../utils/NormalizedCoords';\nimport { Utils } from '../utils/Utils';\nimport { CameraPositionBuilder, ICameraPosition } from './CameraPosition';\nimport { IProjection, ProjectionBuilder } from './Projection';\n\n/** @beta */\nexport enum Projection {\n None = 'None',\n Orthographic = 'Orthographic',\n Equidistant = 'Equidistant',\n Equisolid = 'Equisolid',\n Stereographic = 'Stereographic',\n}\n\n/** @beta */\nexport enum CameraPosition {\n Wall = 'Wall',\n Ceiling = 'Ceiling',\n Floor = 'Floor'\n}\n\n/** @beta */\nexport class DewarperSourceImageParameters {\n public static readonly None: DewarperSourceImageParameters = new DewarperSourceImageParameters(Projection.Orthographic, CameraPosition.Wall, 0, 0, Coords.Origin);\n\n private readonly m_projection: Projection;\n private readonly m_cameraPosition: CameraPosition;\n private readonly m_fovInDegrees: number = 180;\n private readonly m_radiusRatio: number;\n private readonly m_circleCenter: Coords;\n\n public get Projection(): Projection {\n return this.m_projection;\n }\n\n public get CameraPosition(): CameraPosition {\n return this.m_cameraPosition;\n }\n\n public get FovInDegrees(): number {\n return this.m_fovInDegrees;\n }\n\n //Ratio of the radius according to the height of the image\n public get RadiusRatio(): number {\n return this.m_radiusRatio;\n }\n\n public get CircleCenter(): Coords {\n return this.m_circleCenter;\n }\n\n constructor(projection: Projection, cameraPosition: CameraPosition, fovInDegree: number, radiusRatio: number, circleCenter: Coords) {\n this.m_projection = projection;\n this.m_cameraPosition = cameraPosition;\n this.m_fovInDegrees = fovInDegree;\n\n this.m_radiusRatio = radiusRatio;\n this.m_circleCenter = circleCenter;\n }\n\n public toString(): string {\n return this.debugStatus(0);\n }\n\n public debugStatus(indent: number): string {\n return 'DewarperSourceImageParameters: ' + Utils.indentNewLine(indent) +\n 'Position: ' + this.m_cameraPosition.toString() + Utils.indentNewLine(indent) +\n 'Projection: ' + this.m_projection.toString() + ` fov: ${this.m_fovInDegrees}°` + Utils.indentNewLine(indent) +\n `Center and radius: ${this.m_circleCenter.toString()} ${this.m_radiusRatio}`;\n }\n\n // Expected dewarper configuration\n //{\n // \"DewarperConfiguration\": {\n // \"Projection\":\"Stereographic\",\n // \"CameraPosition\":\"Floor\",\n // \"Fov\":200,\n // \"RadiusRatio\":0.8,\n // \"CircleCenter\": {\n // \"X\": 0.5,\n // \"Y\": 0.6\n // }\n // }\n //}\n public static deserialize(serialized: any): DewarperSourceImageParameters {\n if (serialized === undefined || serialized === null) {\n return DewarperSourceImageParameters.None;\n }\n\n const projection: Projection = serialized.Projection;\n if (!Object.values(Projection).includes(projection)) {\n throw new Error(`Unknown projection ${projection}`);\n }\n\n const cameraPosition: CameraPosition = serialized.CameraPosition;\n if (!Object.values(CameraPosition).includes(cameraPosition)) {\n throw new Error(`Unknown camera position ${cameraPosition}`);\n }\n\n const fovInDegree: number = serialized.Fov;\n const radiusRatio: number = serialized.RadiusRatio;\n\n if (projection === undefined ||\n cameraPosition === undefined ||\n fovInDegree === undefined ||\n radiusRatio === undefined ||\n serialized.CircleCenter === undefined ||\n serialized.CircleCenter.X === undefined ||\n serialized.CircleCenter.Y === undefined) {\n throw new Error(`Incompatible dewarper configuration. Dewarping will not be available: ${serialized}`);\n }\n\n return new DewarperSourceImageParameters(projection, cameraPosition, fovInDegree, radiusRatio, new NormalizedCoords(serialized.CircleCenter.X, serialized.CircleCenter.Y));\n }\n}\n\nexport class InternalDewarperSourceImageParameters {\n public static readonly None: InternalDewarperSourceImageParameters = new InternalDewarperSourceImageParameters(Projection.Orthographic, CameraPosition.Wall, 0, 0, NormalizedCoords.Origin);\n\n private readonly m_projection: IProjection;\n private readonly m_cameraPosition: ICameraPosition;\n private readonly m_fovInDegrees: number = 180;\n private readonly m_radiusRatio: number;\n private readonly m_circleCenter: NormalizedCoords;\n\n public get Projection(): IProjection {\n return this.m_projection;\n }\n\n public get CameraPosition(): ICameraPosition {\n return this.m_cameraPosition;\n }\n\n public get FovInDegrees(): number {\n return this.m_fovInDegrees;\n }\n\n public get FovInRadians(): number {\n return this.m_fovInDegrees * Math.PI / 180.0;\n }\n\n //Ratio of the radius according to the height of the image\n public get RadiusRatio(): number {\n return this.m_radiusRatio;\n }\n\n public get CircleCenter(): NormalizedCoords {\n return this.m_circleCenter;\n }\n\n public static build(dewarperSourceImageParameters: DewarperSourceImageParameters) {\n return new InternalDewarperSourceImageParameters(dewarperSourceImageParameters.Projection, dewarperSourceImageParameters.CameraPosition, dewarperSourceImageParameters.FovInDegrees, dewarperSourceImageParameters.RadiusRatio,\n new NormalizedCoords(dewarperSourceImageParameters.CircleCenter.X, dewarperSourceImageParameters.CircleCenter.Y));\n }\n\n constructor(projection: Projection, cameraPosition: CameraPosition, fovInDegree: number, radiusRatio: number, circleCenter: NormalizedCoords) {\n this.m_projection = ProjectionBuilder.build(projection);\n this.m_cameraPosition = CameraPositionBuilder.build(cameraPosition);\n this.m_fovInDegrees = fovInDegree;\n\n this.m_radiusRatio = radiusRatio;\n this.m_circleCenter = circleCenter;\n }\n\n public toString(): string {\n return this.debugStatus(0);\n }\n\n public debugStatus(indent: number): string {\n return 'DewarperSourceImageParameters: ' + Utils.indentNewLine(indent) +\n 'Position: ' + this.m_cameraPosition.toString() + Utils.indentNewLine(indent) +\n 'Projection: ' + this.m_projection.toString() + ` fov: ${this.m_fovInDegrees}°` + Utils.indentNewLine(indent) +\n `Center and radius: ${this.m_circleCenter.toString()} ${this.m_radiusRatio}`;\n }\n}\n","import { IWebSocketResponse } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\nimport { VideoWatermarkConfig } from '../../../utils/VideoWatermarkingConfig';\nimport { DefaultStreamUsage } from '../DefaultStreamUsage';\nimport { DewarperSourceImageParameters } from '../../../dewarper/DewarperSourceImageParameters';\n\n/**\n * @beta\n * */\nexport class CreateStreamResponse implements IWebSocketResponse {\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: CreateStreamResponseBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get body(): CreateStreamResponseBody {\n return this.m_body;\n }\n\n constructor(header: WebSocketMessageHeader, body: CreateStreamResponseBody) {\n this.m_header = header;\n this.m_body = body;\n }\n}\n\n/**\n * @beta\n * */\nexport class CreateStreamResponseBody {\n public readonly videoWatermarkingConfig: VideoWatermarkConfig;\n public readonly transcodingAllowance: TranscodingAllowance;\n public readonly defaultStreamUsage: DefaultStreamUsage;\n public readonly serverVersion: string\n public readonly dewarperConfig: DewarperSourceImageParameters;\n\n constructor(videoWatermarkingConfig: VideoWatermarkConfig, dewarperConfig: DewarperSourceImageParameters, transcodingAllowance: TranscodingAllowance, defaultStreamUsage: DefaultStreamUsage, serverVersion: string) {\n this.videoWatermarkingConfig = videoWatermarkingConfig;\n this.dewarperConfig = dewarperConfig;\n this.transcodingAllowance = transcodingAllowance;\n this.defaultStreamUsage = defaultStreamUsage;\n this.serverVersion = serverVersion;\n }\n\n public static deserialize(body: string): CreateStreamResponseBody {\n const bodyContent: any = JSON.parse(body);\n const videoWatermarkingConfig = VideoWatermarkConfig.build(bodyContent.VideoWatermarkConfig);\n\n let dewarperConfig: DewarperSourceImageParameters = DewarperSourceImageParameters.None;\n try {\n dewarperConfig = DewarperSourceImageParameters.deserialize(bodyContent['DewarperConfiguration']);\n } catch (e) {\n console.warn('Failed to deserialize dewarper configuration. Dewarping will not be available.', e, body);\n }\n\n const transcodingAllowance = bodyContent.TranscodingAllowance;\n const defaultStreamUsage = DefaultStreamUsage.build(bodyContent.DefaultStreamUsage);\n const serverVersion = bodyContent.ServerVersion ?? '0.0.0.0'; //remove me when PR for server to send its version has been merged\n return new CreateStreamResponseBody(videoWatermarkingConfig, dewarperConfig, transcodingAllowance, defaultStreamUsage, serverVersion);\n }\n}\n\n/**\n * @beta\n * */\nexport enum TranscodingAllowance {\n Never = 0,\n ForPtzOnly = 1,\n Always = 2\n}\n","import { IWebSocketResponse } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\n\n/**\n * @beta\n * */\nexport class SuccessResponse implements IWebSocketResponse {\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: SuccessResponseBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get body(): SuccessResponseBody {\n return this.m_body;\n }\n\n constructor(header: WebSocketMessageHeader, body: SuccessResponseBody) {\n this.m_header = header;\n this.m_body = body;\n }\n}\n\n/**\n * @beta\n * */\nexport class SuccessResponseBody {\n constructor() {\n\n }\n\n public static deserialize(body: string): SuccessResponseBody {\n const successResponseBody: SuccessResponseBody = JSON.parse(body);\n return successResponseBody;\n }\n}\n","import { IWebSocketResponse } from './IWebSocketMessage';\nimport { WebSocketMessageHeader } from './WebSocketMessageHeader';\n\n/**\n * @beta\n * */\nexport class UpdateStreamResponse implements IWebSocketResponse {\n private readonly m_header: WebSocketMessageHeader;\n\n private readonly m_body: UpdateStreamResponseBody;\n\n public get channel(): number {\n return this.m_header.channel;\n }\n\n public get body(): UpdateStreamResponseBody {\n return this.m_body;\n }\n\n constructor(header: WebSocketMessageHeader, body: UpdateStreamResponseBody) {\n this.m_header = header;\n this.m_body = body;\n }\n}\n\n/**\n * @beta\n * */\nexport class UpdateStreamResponseBody {\n public readonly AudioAvailable: boolean;\n\n constructor(audioAvailable: boolean) {\n this.AudioAvailable = audioAvailable;\n }\n\n public static deserialize(body: string): UpdateStreamResponseBody {\n const updateStreamResponseBody: UpdateStreamResponseBody = JSON.parse(body);\n return updateStreamResponseBody;\n }\n}\n","import { WebSocketPayloadV2 } from '../../services/WebSocketTransportV2';\nimport { Deserializer } from '../../utils/Deserializer';\nimport { WebSocketMessageHeader, CreateStreamResponse, CreateStreamResponseBody, UpdateStreamResponse, SuccessResponse, ErrorResponse, SuccessResponseBody, UpdateStreamResponseBody, ErrorResponseBody } from './Messages';\n\nexport enum WebSocketMessageTypeV2 {\n Segment = 'H264',\n Jpeg = 'JPEG',\n PlaySpeed = 'PlaySpeed',\n Buffering = 'Buffering',\n Error = 'Error',\n StreamingStatus = 'StreamingStatus',\n PlayerState = 'PlayerState',\n TimelineUpdate = 'TimelineUpdate',\n SuccessResponse = 'SuccessResponse',\n ErrorResponse = 'ErrorResponse',\n CreateStreamResponse = 'CreateStreamResponse',\n UpdateStreamResponse = 'UpdateStreamResponse',\n}\n\nexport interface IMessageParser {\n parse(arrayBuffer: ArrayBuffer): WebSocketPayloadV2 | undefined;\n}\n\nexport class MessageParser implements IMessageParser {\n public parse(arrayBuffer: ArrayBuffer): WebSocketPayloadV2 | undefined {\n return new MessageParsing(arrayBuffer).parseMsg();\n }\n}\n\nclass MessageParsing {\n private static readonly version = 1; // Still kind of an hybrid between version 1 and 2. todo: put '2' here\n\n private static readonly SizeOfInt = 4;\n\n private readonly m_arrayBuffer: ArrayBuffer;\n\n private readonly m_deserializer: Deserializer;\n\n constructor(arrayBuffer: ArrayBuffer) {\n this.m_arrayBuffer = arrayBuffer;\n this.m_deserializer = new Deserializer(arrayBuffer);\n }\n\n public parseMsg(): WebSocketPayloadV2 | undefined {\n this.readVersion();\n const channelId = this.readChannel();\n const messageType = this.readMessageType();\n\n switch (messageType) {\n case WebSocketMessageTypeV2.Segment:\n case WebSocketMessageTypeV2.Jpeg:\n const streamEvent = this.readEvent();\n const payload = new Int8Array(this.m_arrayBuffer.slice(streamEvent.DataOffset + MessageParsing.SizeOfInt));\n return new WebSocketPayloadV2(messageType, channelId, streamEvent.Event, payload);\n\n case WebSocketMessageTypeV2.PlaySpeed:\n case WebSocketMessageTypeV2.Buffering:\n case WebSocketMessageTypeV2.Error:\n case WebSocketMessageTypeV2.StreamingStatus:\n case WebSocketMessageTypeV2.PlayerState:\n case WebSocketMessageTypeV2.TimelineUpdate:\n const event = this.readEvent();\n return new WebSocketPayloadV2(messageType, channelId, event.Event);\n\n case WebSocketMessageTypeV2.UpdateStreamResponse:\n const updateStreamResponseHeader = new WebSocketMessageHeader(channelId, messageType);\n const updateStreamResponseBody = this.readUpdateStreamResponseBody();\n return new WebSocketPayloadV2(messageType, channelId, new UpdateStreamResponse(updateStreamResponseHeader, updateStreamResponseBody));\n\n case WebSocketMessageTypeV2.SuccessResponse:\n const successHeader = new WebSocketMessageHeader(channelId, messageType);\n const successBody = this.readSuccessResponseBody();\n return new WebSocketPayloadV2(messageType, channelId, new SuccessResponse(successHeader, successBody));\n\n case WebSocketMessageTypeV2.ErrorResponse:\n const errorHeader = new WebSocketMessageHeader(channelId, messageType);\n const errorBody = this.readErrorResponseBody();\n return new WebSocketPayloadV2(messageType, channelId, new ErrorResponse(errorHeader, errorBody));\n\n case WebSocketMessageTypeV2.CreateStreamResponse:\n const responseHeader = new WebSocketMessageHeader(channelId, messageType);\n const responseBody = this.readCreateStreamResponseBody();\n return new WebSocketPayloadV2(messageType, channelId, new CreateStreamResponse(responseHeader, responseBody));\n\n // DH : Don't want console output on custom message\n // default:\n // console.error(`Message [${messageType}] isn\\'t supported by this version of marmot`);\n }\n return undefined;\n }\n\n private readSuccessResponseBody(): SuccessResponseBody {\n const text = this.m_deserializer.getString();\n return SuccessResponseBody.deserialize(text);\n }\n\n private readUpdateStreamResponseBody(): UpdateStreamResponseBody {\n const text = this.m_deserializer.getString();\n return UpdateStreamResponseBody.deserialize(text);\n }\n\n private readErrorResponseBody(): ErrorResponseBody {\n const text = this.m_deserializer.getString();\n return ErrorResponseBody.deserialize(text);\n }\n\n private readCreateStreamResponseBody(): CreateStreamResponseBody {\n const text = this.m_deserializer.getString();\n return CreateStreamResponseBody.deserialize(text);\n }\n\n private readVersion() {\n const version = this.m_deserializer.getUint8();\n if (version !== MessageParsing.version) {\n const msg = `WebSocket transport version ${version} isn\\'t supported`;\n console.error(msg);\n throw new Error(msg);\n }\n }\n\n private readChannel() {\n return this.m_deserializer.getUint32();\n }\n\n private readMessageType(): string {\n return this.m_deserializer.getString();\n }\n\n private readEvent() {\n const jsonString = this.m_deserializer.getString();\n const object = JSON.parse(jsonString);\n return { Event: object, DataOffset: this.m_deserializer.Offset };\n }\n}\n","import { IWebSocketRequest, IWebSocketResponse } from '../players/WebSocket/Messages';\nimport { Utils } from '../utils/Utils';\n\nexport class InFlightQueries {\n private readonly m_map = new Map();\n\n public add(channel: number, inFlightQuery: InFlightQuery) {\n if (this.m_map.has(channel)) {\n throw new Error(`A query is already in flight for channel ${channel}: ${this.m_map.get(channel)?.debugStatus(0)}`);\n }\n\n this.m_map.set(channel, inFlightQuery);\n }\n\n public complete(channel: number, response: IWebSocketResponse): boolean {\n const query = this.pop(channel);\n if (query !== undefined) {\n query?.complete(response);\n return true;\n }\n\n return false;\n }\n\n public fail(channel: number, reason: string) {\n const query = this.pop(channel);\n if (query !== undefined) {\n query?.fail(reason);\n return true;\n }\n\n return false;\n }\n\n public failAll(reason: string) {\n this.m_map.forEach((query: InFlightQuery, _) => {\n query.fail(reason);\n });\n this.m_map.clear();\n }\n\n private pop(channel: number): InFlightQuery | undefined {\n const query = this.m_map.get(channel);\n\n if (query !== undefined) {\n this.m_map.delete(channel);\n }\n\n return query;\n }\n\n public debugStatus(indent: number): string {\n if (this.m_map.size === 0) {\n return 'InFlightQueries: none';\n }\n\n let debugStatus = 'InFlightQueries: ' + this.m_map.size + Utils.indentNewLine(indent);\n this.m_map.forEach((inFlightQuery, channelId, _map) => {\n debugStatus += 'Channel: ' + channelId + Utils.indentNewLine(indent);\n debugStatus += inFlightQuery.debugStatus(indent + Utils.Indentation);\n });\n return debugStatus;\n }\n}\n\nexport class InFlightQuery {\n private readonly m_creation: Date;\n private readonly m_request: IWebSocketRequest;\n\n private readonly success: (value: IWebSocketResponse) => void;\n\n private readonly failure: (reason: string) => void;\n\n constructor(success: (value: IWebSocketResponse) => void, failure: (reason: string) => void, request: IWebSocketRequest) {\n this.m_creation = new Date();\n this.success = success;\n this.failure = failure;\n this.m_request = request;\n }\n\n public complete(response: IWebSocketResponse) {\n this.success(response);\n }\n\n public fail(reason: string) {\n this.failure(reason);\n }\n\n public debugStatus(indent: number): string {\n return 'InFlightQuery' + Utils.indentNewLine(indent) +\n 'Created: ' + Utils.formatDate(this.m_creation) + `(${Utils.spanBetweenDates(this.m_creation, new Date()).toString()} ago)` + Utils.indentNewLine(indent) +\n this.m_request.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { ILogger } from '../../utils/logger';\n\nexport interface IWebSocket {\n onopen: ((ev: Event) => any) | null;\n onmessage: ((ev: MessageEvent) => any) | null;\n onclose: ((ev: CloseEvent) => any) | null;\n onerror: ((ev: Event) => any) | null;\n\n send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;\n close(code?: number, reason?: string): void;\n}\n\nexport class WebSocketBuilder {\n private readonly m_logger: ILogger;\n\n private readonly m_webSocketEndpoint: URL;\n\n constructor(logger: ILogger, mediaGatewayUrl: string) {\n this.m_logger = logger.subLogger('WebSocketBuilder: ' + mediaGatewayUrl);\n\n this.m_webSocketEndpoint = new URL(mediaGatewayUrl);\n this.m_webSocketEndpoint.pathname += '/v2/ws';\n\n // JDT - Modif\n const isSecure = mediaGatewayUrl.toLowerCase().startsWith('wss');\n if (isSecure) {\n this.m_webSocketEndpoint.protocol = 'wss';\n } else {\n this.m_webSocketEndpoint.protocol = 'ws';\n }\n }\n\n public async establishWebSocket(): Promise {\n const webSocket = new WebSocket(this.m_webSocketEndpoint.toString());\n webSocket.binaryType = 'arraybuffer';\n\n const connectionPromise = new Promise((resolve, reject: (ev: CloseEvent) => void) => {\n webSocket.onopen = () => resolve();\n // error does not contain any information and onclose will be called afterward with more information\n webSocket.onclose = (ev) => reject(ev);\n });\n\n this.m_logger.info?.trace('Awaiting connection:', this.m_webSocketEndpoint.toString());\n\n await connectionPromise.catch((closeEvent: CloseEvent) => {\n webSocket.onopen = null;\n webSocket.onclose = null;\n const errorMessage = `Connection to ${this.m_webSocketEndpoint.toString()} failed: ${closeEvent.code} ${closeEvent.reason}`;\n this.m_logger.warn?.trace(errorMessage);\n throw new Error(errorMessage);\n });\n\n this.m_logger.info?.trace('Connection established:', this.m_webSocketEndpoint.toString());\n\n webSocket.onopen = null;\n webSocket.onclose = null;\n\n return webSocket;\n }\n}\n","import { EventHubDispatcher } from './eventHubDispatcher';\nimport { ErrorCode, PlayerState, StreamingConnectionStatus, TimelineEventKind } from '../enums';\n\nexport class EventHub {\n private readonly m_eventHubDispatcher: EventHubDispatcher;\n\n private readonly m_streamId: string;\n\n constructor(eventHubDispatcher: EventHubDispatcher, streamId: string) {\n this.m_eventHubDispatcher = eventHubDispatcher;\n this.m_streamId = streamId;\n }\n\n public dispose() {\n this.m_eventHubDispatcher.unregisterStream(this.m_streamId);\n\n this.receiveSegment = undefined;\n this.receiveJpeg = undefined;\n this.receivePlayerState = undefined;\n this.receiveStreamingConnectionStatus = undefined;\n this.receiveBufferingProgress = undefined;\n this.receiveErrorDetails = undefined;\n this.receiveTimelineContent = undefined;\n this.receivePlaySpeedChange = undefined;\n this.receiveAudioAvailable = undefined;\n }\n\n public receiveSegment?: (info: SegmentInfo, buffer: Int8Array) => void;\n public receiveJpeg?: (info: JpegInfo, buffer: Int8Array) => void;\n public receivePlayerState?: (state: SerializedPlayerState) => void;\n public receiveStreamingConnectionStatus?: (status: StreamingStatus) => void;\n public receiveBufferingProgress?: (progress: number) => void;\n public receiveErrorDetails?: (errorDetails: ErrorDetails) => void;\n public receiveTimelineContent?: (content: TimelineContent) => void;\n public receivePlaySpeedChange?: (playSpeed: SerializedPlaySpeed) => void;\n public receiveAudioAvailable?: (audioAvailable: boolean) => void;\n}\n\n/**\n * @beta\n * */\nexport class SegmentInfo {\n private m_frameTimeAsDate: Date | undefined;\n\n public readonly Id!: number;\n public readonly IsInit!: boolean;\n public readonly IsAudio!: boolean;\n public readonly TotalSeconds!: number;\n public readonly FrameTime!: string;\n public readonly SequenceId!: number;\n public readonly BaseDecodeTime!: number;\n public readonly MediaTime!: number;\n public readonly IsFrameHidden!: boolean;\n public readonly IsKeyFrame!: boolean;\n public readonly Generation!: number;\n\n public static build(id: number, isInit: boolean, isAudio: boolean, totalSeconds: number, frameTime: string, sequenceId: number, baseDecodeTime: number, mediaTime: number, isFrameHidden: boolean, isKeyFrame: boolean, generation: number): SegmentInfo {\n return new SegmentInfo({ Id: id, IsInit: isInit, IsAudio: isAudio, TotalSeconds: totalSeconds, FrameTime: frameTime, SequenceId: sequenceId, BaseDecodeTime: baseDecodeTime, MediaTime: mediaTime, IsFrameHidden: isFrameHidden, IsKeyFrame: isKeyFrame, Generation: generation });\n }\n\n constructor(event: any) {\n this.Id = event.Id;\n this.IsInit = event.IsInit;\n this.IsAudio = event.IsAudio;\n this.TotalSeconds = event.TotalSeconds;\n this.FrameTime = event.FrameTime;\n this.SequenceId = event.SequenceId;\n this.BaseDecodeTime = event.BaseDecodeTime;\n this.MediaTime = event.MediaTime;\n this.IsFrameHidden = event.IsFrameHidden;\n this.IsKeyFrame = event.IsKeyFrame;\n this.Generation = event.Generation;\n }\n\n public get TotalMilliseconds() {\n return this.TotalSeconds * 1000;\n }\n\n public get FrameTimeAsDate(): Date {\n if (this.m_frameTimeAsDate === undefined) {\n this.m_frameTimeAsDate = new Date(this.FrameTime);\n }\n return this.m_frameTimeAsDate;\n }\n\n public get IsVideo() {\n return !this.IsAudio;\n }\n\n public toString(): string {\n return `${this.Id} ${this.BaseDecodeTime}, ${this.FrameTimeAsDate} ${this.MediaTime}, Init: ${this.IsInit} Key: ${this.IsKeyFrame} Sequence: ${this.SequenceId} Gen: ${this.Generation} TotalSec: ${this.TotalSeconds}`;\n }\n}\n\n/**\n * @beta\n * */\nexport class JpegInfo {\n public readonly Timestamp!: string;\n public readonly Generation!: number;\n\n public constructor(timestamp: string, generation: number) {\n this.Timestamp = timestamp;\n this.Generation = generation;\n }\n}\n\n/**\n * @beta\n * */\nexport class ErrorDetails {\n public readonly ErrorCode!: ErrorCode;\n public readonly Value!: string;\n\n public constructor(errorCode: ErrorCode, detail: string) {\n this.ErrorCode = errorCode;\n this.Value = detail;\n }\n}\n\n/**\n * @beta\n * */\nexport class SerializedPlayerState {\n public readonly State!: PlayerState;\n public readonly Value!: string;\n\n public constructor(playerState: PlayerState, detail: string) {\n this.State = playerState;\n this.Value = detail;\n }\n}\n\n/**\n * @beta\n * */\nexport class StreamingStatus {\n public readonly Value!: string;\n public readonly State!: StreamingConnectionStatus;\n\n public constructor(streamingConnectionStatus: StreamingConnectionStatus, detail: string) {\n this.State = streamingConnectionStatus;\n this.Value = detail;\n }\n}\n\n/**\n * @beta\n * */\nexport class SerializedPlaySpeed {\n public readonly Value!: number;\n\n public constructor(value: number) {\n this.Value = value;\n }\n}\n\n/**\n * @beta\n * */\nexport class TimelineContent {\n public readonly Coverage!: DateTimeSpan;\n public readonly Events!: SerializedTimelineEvent[];\n\n public constructor(coverage: DateTimeSpan, events: SerializedTimelineEvent[]) {\n this.Coverage = coverage;\n this.Events = events;\n }\n}\n\n/**\n * @beta\n * */\nexport class DateTimeSpan {\n public readonly Start!: string;\n public readonly End!: string;\n\n public constructor(start: string, end: string) {\n this.Start = start;\n this.End = end;\n }\n}\n\n/**\n * @beta\n * */\nexport class SerializedTimelineEvent {\n public readonly Kind!: TimelineEventKind;\n public readonly EventTime!: string;\n public readonly Duration?: number;\n public readonly Details?: string;\n\n public constructor(kind: TimelineEventKind, eventTime: string, duration: number, details: string) {\n this.Kind = kind;\n this.EventTime = eventTime;\n this.Duration = duration;\n this.Details = details;\n }\n}\n","/** One of two player modes: live or playback\n * @public */\nexport enum PlayerMode {\n /** Live mode */\n live = 'live',\n /** Playback mode */\n playback = 'playback'\n}\n\n/** The player state\n * @public */\nexport enum PlayerState {\n /** Stopped: player not ready to accept commands */\n Stopped = 0,\n /** Player is buffering more data so it can start playing */\n Buffering = 1,\n /** Player is actively receving and decoding frames */\n Playing = 2,\n /** Player is starting */\n Starting = 3,\n /** Player was paused and is ready to resume playing */\n Paused = 4,\n /** Player is stopping */\n Stopping = 5,\n /** Player is playing in reverse */\n Rewinding = 6,\n /** Player is playing in reverse but there is nothing left to play */\n BeginReached = 7,\n /** Player is playing forward but there is nothing left to play */\n EndReached = 8,\n /** Player is waiting for the archiver to send its recoding */\n WaitingForArchiverData = 9,\n /** There is no video recorded this player can play */\n NoVideoSequenceAvailable = 10,\n /** Reserved for future use */\n AwaitingSynchronizedTime = 11,\n /** Player can't play because an error occured, a new command is required to try again */\n Error = 12,\n /** The stream is encrypted and cannot be decrypted */\n InsufficientSecurityInformation = 13\n}\n\n/** This status describes the connection between the player and the stream source\n * @public */\nexport enum StreamingConnectionStatus {\n /** Connection to Media Gateway is being established */\n ConnectingToMediaGateway = -1,\n /** Player is not initialized yet */\n Initializing = 0,\n /** Connecting to Media Router to establish stream route */\n ConnectingToMediaRouter = 1,\n /** Connecting to an Archiver */\n ConnectingToArchiver = 2,\n /** Waiting to receive live frames */\n RequestingLiveStream = 3,\n /** Waiting to receive a keyframe */\n AnalyzingStream = 4,\n /** Currently receiving a stream */\n Streaming = 5,\n /** Waiting for download */\n WaitingForDownload = 6,\n /** Waiting to receive playback stream */\n RequestingPlaybackStream = 7,\n /** Waiting for playback stream to start streaming again */\n ResumingPlaybackStream = 8,\n /** Connecting to a video unit */\n ConnectingToUnit = 9,\n /** Waiting for stream from video unit */\n GettingDataFromUnit = 10,\n /** Could not get data from Archivers */\n CouldNotGetData = 11,\n /** Could not get data from video units */\n CouldNotGetDataFromUnit = 12,\n /** Waiting for archive sequence list */\n SearchingArchives = 13,\n /** Reading archives */\n ReadingArchives = 14,\n /** Buffering */\n Buffering = 15,\n /** Buffering done */\n BufferingCompleted = 16,\n /** Unused here */\n VirtualCameraNoOutput = 17,\n /** Timeout */\n RequestTimedOut = 18,\n /** Stream was stopped because a bandwitdh limit was reached along its route */\n NotEnoughBandwidth = 19,\n /** Unused here */\n AwaitingSynchronizedTime = 20,\n /** Media Router needs a database upgrade */\n DatabaseUpgradeRequired = 21,\n /** Media Router did not find the stream */\n MediaRouterStreamNotFound = 22,\n /** Camera is offline */\n CameraNotRunning = 23,\n /** Archiver is offline */\n ArchiverNotRunning = 24,\n /** No route found for the stream */\n StreamUnreachable = 25,\n /** Another user blocked the stream */\n Blocked = 26,\n /** Stream got disconnected */\n StreamLost = 27,\n /** Waiting for decryption key */\n RequestingEncryption = 28,\n /** Unused here */\n DecodingStream = 29,\n /** Connection failed */\n ConnectionNotSuccessful = 30,\n /** Provided token was denied */\n UnauthorizedToken = 31\n}\n\n/** The various possible error codes\n * @public */\nexport enum ErrorCode {\n /** Unknown */\n Unknown = 0,\n /** Connection lost */\n ConnectionLost = 2,\n /** Server has disk space issues */\n InsufficientDiskSpace = 3,\n /** Connection failed */\n ConnectionFailed = 4,\n /** Stream not found */\n StreamNotFound = 6,\n /** Timeout */\n RequestTimedOut = 9,\n /** Video unit can't do playback */\n UnitPlaybackUnavailable = 11,\n /** A limit of live streams has been reached */\n LiveCapacityExceeded = 12,\n /** A limit of playback streams has been reached */\n PlaybackCapacityExceeded = 13,\n /** The stream has an unsupported codec */\n UnsupportedEncoding = 14,\n /** Media Router database needs upgrade */\n DatabaseUpgradeRequired = 15,\n /** Current user privilege doesn't allow the requested operation */\n InsufficientPrivilege = 16,\n /** Video unit cannot process the command */\n InsufficientCapability = 17,\n /** Cannot decrypt encrypted stream */\n MissingCertificate = 18,\n /** Command not supported */\n NotSupported = 20,\n /** The certificate to decrypt the stream is missing its private key */\n CantUsePrivateKey = 21,\n /** Unused here */\n Mp4CodecNotSupported = 22,\n /** Server has rejected the request */\n DeniedByServer = 23,\n /** Transcoding is prevented, see Media Gateway configuration page */\n NoTranscodingAllowed = 24,\n /** A configured stream transformation (like rotation) required transcoding, which is prevented */\n ForbiddenTransformation = 32,\n\n // Error codes with value 1000 or above are associated with local player errors.\n\n /** The requested stream state is invalid */\n UpdateSessionError = 1000\n}\n\n/** Types of timeline event, can be sequences or punctual\n * @public */\nexport enum TimelineEventKind {\n /** Sequence event describing available video archives */\n RecordingSequence = 0,\n /** Punctual event holding a user bookmark */\n Bookmark = 1\n}\n","import { ITransport, ITransportBuilder } from './ITransport';\nimport { ILogger } from '../utils/logger';\nimport { IEventDispatcher } from './eventHubDispatcher';\nimport { ISocket, AutoReconnectSocket } from '../players/WebSocket/AutoReconnectSocket';\nimport { IMessageParser, WebSocketMessageTypeV2, MessageParser } from '../players/WebSocket/MessageParser';\nimport { InFlightQueries, InFlightQuery } from './InFlightQueries';\nimport { LiteEvent } from '../utils/liteEvents';\nimport { IWebSocketRequest, IWebSocketResponse, CreateStreamResponse, UpdateStreamResponse, SuccessResponse, ErrorResponse } from '../players/WebSocket/Messages';\nimport { WebSocketBuilder } from '../players/WebSocket/WebSocketBuilder';\nimport { ErrorDetails, StreamingStatus, SegmentInfo } from './eventHub';\nimport { ErrorCode } from '../enums';\nimport { Utils } from '../utils/Utils';\n\nexport class WebSocketTransportBuilder implements ITransportBuilder {\n private readonly m_logger: ILogger;\n\n private readonly m_url: string;\n\n public constructor(logger: ILogger, url: string) {\n this.m_logger = logger;\n this.m_url = url;\n }\n\n public async build(eventDispatcher: IEventDispatcher): Promise {\n const autoReconnect = await AutoReconnectSocket.build(this.m_logger, new WebSocketBuilder(this.m_logger, this.m_url));\n return new WebSocketTransportV2(this.m_logger, eventDispatcher, autoReconnect, new MessageParser());\n }\n}\n\nexport class WebSocketTransportV2 implements ITransport {\n private readonly m_logger: ILogger;\n\n private readonly m_dispatcher: IEventDispatcher;\n\n private readonly m_socket: ISocket;\n\n private readonly m_messageParser: IMessageParser;\n\n private readonly m_inFlightQueries = new InFlightQueries();\n\n private readonly m_connectionReestablishedEvent = new LiteEvent();\n\n private readonly m_connectionLostEvent = new LiteEvent();\n\n public get ConnectionReestablished() {\n return this.m_connectionReestablishedEvent.expose();\n }\n\n public get ConnectionLost() {\n return this.m_connectionLostEvent.expose();\n }\n\n public constructor(marmotLogger: ILogger, dispatcher: IEventDispatcher, socket: ISocket, messageParser: IMessageParser) {\n this.m_logger = marmotLogger.subLogger('WebSocketTransportV2');\n this.m_dispatcher = dispatcher;\n\n this.m_socket = socket;\n this.m_socket.onmessage = this.onMessage.bind(this);\n this.m_socket.ConnectionLost.register(this.onConnectionLost);\n this.m_socket.ConnectionReestablished.register(this.onConnectionReestablished);\n this.m_messageParser = messageParser;\n }\n\n public async stop() {\n this.unbindEvents();\n await this.m_socket.dispose();\n this.m_inFlightQueries.failAll('Connection closed');\n }\n\n public async send(message: IWebSocketRequest): Promise {\n let p: Promise;\n\n if (message.expectResponse) {\n p = new Promise((win, fail) => {\n this.m_inFlightQueries.add(message.channel, new InFlightQuery(win, fail, message));\n this.m_socket.send(message.serialize());\n });\n } else {\n p = Promise.resolve({ channel: message.channel });\n this.m_socket.send(message.serialize());\n }\n\n return p;\n }\n\n private unbindEvents() {\n this.m_socket.onmessage = null;\n this.m_socket.ConnectionLost.unregister(this.onConnectionLost);\n this.m_socket.ConnectionReestablished.unregister(this.onConnectionReestablished);\n }\n\n private onMessage(arrayBuffer: ArrayBuffer) {\n const payload = this.m_messageParser.parse(arrayBuffer);\n if (payload === undefined) {\n return;\n }\n\n // Intercept responses to complete requests\n switch (payload?.MessageType) {\n case WebSocketMessageTypeV2.UpdateStreamResponse:\n const updateStreamResponse: UpdateStreamResponse = payload.Event;\n this.m_inFlightQueries.complete(updateStreamResponse.channel, updateStreamResponse);\n this.receiveEvent(payload);\n break;\n case WebSocketMessageTypeV2.SuccessResponse:\n const successResponse: SuccessResponse = payload.Event;\n this.m_inFlightQueries.complete(successResponse.channel, successResponse);\n break;\n case WebSocketMessageTypeV2.ErrorResponse:\n const errorResponse: ErrorResponse = payload.Event;\n this.m_logger.error?.trace('Received an error response:', errorResponse.body.ErrorMessage);\n this.m_inFlightQueries.fail(errorResponse.channel, errorResponse.body.ErrorMessage);\n break;\n case WebSocketMessageTypeV2.CreateStreamResponse:\n const createStreamResponse: CreateStreamResponse = payload.Event;\n this.m_inFlightQueries.complete(createStreamResponse.channel, createStreamResponse);\n break;\n default: // Code path for events\n this.receiveEvent(payload);\n }\n }\n\n private receiveEvent(payload: WebSocketPayloadV2) {\n switch (payload?.MessageType) {\n case WebSocketMessageTypeV2.Buffering:\n this.m_dispatcher.receiveBufferingProgress(payload.ChannelId.toString(), payload.Event);\n break;\n case WebSocketMessageTypeV2.Error:\n const errorDetails: ErrorDetails = payload.Event;\n if (errorDetails.ErrorCode === undefined) {\n this.m_logger.error?.trace('Failed to deserialize an error detail event:', payload);\n this.m_dispatcher.receiveErrorDetails(payload.ChannelId.toString(), new ErrorDetails(ErrorCode.Unknown, 'WebPlayer parsing error'));\n return;\n }\n\n this.m_dispatcher.receiveErrorDetails(payload.ChannelId.toString(), errorDetails);\n break;\n case WebSocketMessageTypeV2.Jpeg:\n this.m_dispatcher.receiveJpeg(payload.ChannelId.toString(), payload.Event, payload.Payload!);\n break;\n case WebSocketMessageTypeV2.PlayerState:\n this.m_dispatcher.receivePlayerState(payload.ChannelId.toString(), payload.Event);\n break;\n case WebSocketMessageTypeV2.PlaySpeed:\n this.m_dispatcher.receivePlaySpeedChange(payload.ChannelId.toString(), payload.Event);\n break;\n case WebSocketMessageTypeV2.Segment:\n this.m_dispatcher.receiveSegment(payload.ChannelId.toString(), new SegmentInfo(payload.Event), payload.Payload!);\n break;\n case WebSocketMessageTypeV2.StreamingStatus:\n const streamingStatus: StreamingStatus = payload.Event;\n if (streamingStatus.State === undefined) {\n this.m_logger.error?.trace('Failed to deserialize a streaming connection status event: ', payload);\n return;\n }\n this.m_dispatcher.receiveStreamingConnectionStatus(payload.ChannelId.toString(), streamingStatus);\n break;\n case WebSocketMessageTypeV2.TimelineUpdate:\n this.m_dispatcher.receiveTimelineContent(payload.ChannelId.toString(), payload.Event);\n break;\n case WebSocketMessageTypeV2.UpdateStreamResponse:\n this.m_dispatcher.receiveAudioAvailable(payload.ChannelId.toString(), (payload.Event).body.AudioAvailable);\n break;\n default:\n this.m_logger.error?.trace('Unsupported payload from Web Socket', payload);\n }\n }\n\n private readonly onConnectionLost = () => {\n this.m_inFlightQueries.failAll('Connection lost');\n this.m_connectionLostEvent.trigger();\n }\n\n private readonly onConnectionReestablished = () => {\n this.m_logger.info?.trace('Connection reestablished');\n this.m_connectionReestablishedEvent.trigger();\n }\n\n public debugStatus(indent: number): string {\n return 'WebSocketTransportV2' + Utils.indentNewLine(indent) +\n this.m_inFlightQueries.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_socket.debugStatus(indent + Utils.Indentation);\n }\n}\n\nexport class WebSocketPayloadV2 {\n public readonly MessageType: WebSocketMessageTypeV2;\n public readonly ChannelId: number;\n public readonly Event: any;\n public readonly Payload?: Int8Array\n\n constructor(msgType: WebSocketMessageTypeV2, channelId: number, event?: any, payload?: Int8Array) {\n this.MessageType = msgType;\n this.ChannelId = channelId;\n this.Event = event;\n this.Payload = payload;\n }\n}\n","import { PlayerMode } from '../../enums';\nimport { PlaySpeed } from '../PlaySpeed';\nimport { DesiredState } from './DesiredState';\nimport { StreamUsage } from './Api/CreateStream';\nimport { TimeLineRange } from '../../TimeLineRange';\nimport { Utils } from '../../utils/Utils';\n\nexport interface ISessionStateView {\n isPaused: boolean;\n isLivePaused: boolean;\n playSpeed: PlaySpeed;\n isAudioEnabled: boolean;\n isPtzMode: boolean;\n playerMode: PlayerMode | undefined;\n timelineRange: TimeLineRange | undefined;\n streamUsage: StreamUsage;\n\n getRestorePlaybackSeekTime(): Date;\n}\n\nexport enum Pause {\n NotPaused,\n Paused,\n LivePaused\n}\n\nexport class SessionState implements ISessionStateView {\n private m_playerMode: PlayerMode | undefined;\n\n private m_paused: Pause;\n\n private m_playSpeed: PlaySpeed;\n\n private m_audioEnabled: boolean;\n\n private m_timelineRange: TimeLineRange | undefined;\n\n private m_isPtzMode: boolean;\n\n private m_lastRenderedFrameTime: Date | undefined;\n\n private m_lastSeekTime: Date | undefined;\n\n // The time at which the request to play live was sent\n private m_timeOfPlayLive: Date | undefined;\n\n private m_streamUsage: StreamUsage;\n\n public get playerMode(): PlayerMode | undefined {\n return this.m_playerMode;\n }\n\n public get isPaused(): boolean {\n return this.m_paused !== Pause.NotPaused;\n }\n\n public get playSpeed(): PlaySpeed {\n return this.m_playSpeed;\n }\n\n public get isAudioEnabled(): boolean {\n return this.m_audioEnabled;\n }\n\n public get timelineRange(): TimeLineRange | undefined {\n return this.m_timelineRange;\n }\n\n public get isLivePaused(): boolean {\n return this.m_paused === Pause.LivePaused;\n }\n\n public get isPtzMode(): boolean {\n return this.m_isPtzMode;\n }\n\n public get streamUsage(): StreamUsage {\n return this.m_streamUsage;\n }\n\n public constructor(defaultStreamUsage: StreamUsage) {\n if (defaultStreamUsage === StreamUsage.Automatic) {\n throw new Error('Automatic is not a valid stream usage for the ServerState');\n }\n\n if (!Object.values(StreamUsage).includes(defaultStreamUsage)) {\n throw new Error(`Unknown stream usage ${defaultStreamUsage}`);\n }\n\n this.m_playerMode = undefined;\n this.m_paused = Pause.NotPaused;\n this.m_playSpeed = PlaySpeed._1x;\n this.m_audioEnabled = false;\n this.m_lastRenderedFrameTime = undefined;\n this.m_lastSeekTime = undefined;\n this.m_isPtzMode = false;\n this.m_streamUsage = defaultStreamUsage;\n }\n\n // When doing resume after playlive/pause, we go in playback at the last rendered frame.\n // if no frame could be rendered, we use the time at which play was done.\n public getResumeLiveSeekTime(): Date {\n if (this.m_lastRenderedFrameTime !== undefined) {\n return this.m_lastRenderedFrameTime;\n }\n\n if (this.m_timeOfPlayLive !== undefined) {\n return this.m_timeOfPlayLive;\n }\n\n throw new Error('Invalid operation. Playing live state was never reached.');\n }\n\n // When restoring a connection after connection lost. If we were in playback, we will restore the\n // session to a playback state seeking to the last rendered frame. If no frame had the time to be displayed, we will use the seek time.\n public getRestorePlaybackSeekTime(): Date {\n if (this.m_lastRenderedFrameTime !== undefined) {\n return this.m_lastRenderedFrameTime;\n }\n\n if (this.m_lastSeekTime !== undefined) {\n return this.m_lastSeekTime;\n }\n\n // Live -> pause, no frame rendered, lose connection\n // PlayerMode will be playback and lastSeekTime will be undefined. The time to seek is timeOfPlayLive in that case.\n if (this.m_timeOfPlayLive !== undefined) {\n return this.m_timeOfPlayLive;\n }\n\n throw new Error('Invalid operation. Trying to restore the player state when nothing was done.');\n }\n\n // Live -> reverse speed\n public getLiveToReverseSeekTime(): Date {\n // Usual case, we were playing live and switch to negative speed. Start at the last rendered frame\n if (this.m_lastRenderedFrameTime !== undefined) {\n return this.m_lastRenderedFrameTime;\n }\n // Live was requested but we no frame was rendered and now we switch to reverse speed.\n // Could be either because those command were queued rapidly or because server is slow to send frame\n // Start at the time we requested live.\n if (this.m_timeOfPlayLive !== undefined) {\n return this.m_timeOfPlayLive;\n }\n\n // Live was requested but we did not had the time to send it to server (maybe another query is in flight) and reverse speed was requested.\n return new Date();\n }\n\n public updateRenderedFrameTime(frameTime: Date) {\n this.m_lastRenderedFrameTime = frameTime;\n }\n\n public update(playerMode: PlayerMode | undefined, playSpeed: PlaySpeed | undefined, pause: boolean | undefined, seekTime: Date | undefined, audioEnabled: boolean | undefined, timelineRange: TimeLineRange | undefined, isPtzMode: boolean | undefined, streamUsage: StreamUsage | undefined) {\n // Very specific: live-paused handling\n if (this.m_playerMode === PlayerMode.live && playerMode === PlayerMode.playback && pause === true && seekTime === undefined) {\n this.m_paused = Pause.LivePaused;\n seekTime = this.getResumeLiveSeekTime();\n } else if (pause !== undefined) { // User changed pause value specifically, we are going into either pause or not paused. It cancels Live-Paused for sure.\n this.m_paused = pause ? Pause.Paused : Pause.NotPaused;\n } else if (seekTime !== undefined && this.m_paused === Pause.LivePaused) { // Seeking while Live-paussed cancels the LivePaused effects.\n this.m_paused = Pause.Paused;\n }\n\n switch (playerMode) {\n case PlayerMode.live:\n if (seekTime !== undefined) {\n throw new Error('Live cannot specify a seekTime');\n }\n this.m_playerMode = playerMode;\n this.m_timeOfPlayLive = new Date();\n this.m_lastSeekTime = undefined;\n this.m_lastRenderedFrameTime = undefined;\n break;\n\n case PlayerMode.playback:\n if (seekTime === undefined) {\n throw new Error('Playback requires a seekTime');\n }\n this.m_playerMode = playerMode;\n this.m_timeOfPlayLive = undefined;\n this.m_lastSeekTime = seekTime;\n this.m_lastRenderedFrameTime = undefined;\n break;\n\n case undefined:\n if (seekTime !== undefined) {\n if (this.m_playerMode === PlayerMode.live) {\n throw new Error('Specifying a seekTime requires to be in playback');\n }\n if (this.m_playerMode === undefined) {\n throw new Error('Cannot update seekTime when player mode is undefined');\n }\n //Updating seek time while in playback. It is a regular seek\n this.m_lastSeekTime = seekTime;\n this.m_lastRenderedFrameTime = undefined;\n }\n break;\n }\n\n if (playSpeed !== undefined) {\n this.m_playSpeed = playSpeed;\n }\n\n if (audioEnabled !== undefined) {\n this.m_audioEnabled = audioEnabled;\n }\n\n if (timelineRange !== undefined) {\n this.m_timelineRange = timelineRange;\n }\n\n if (isPtzMode !== undefined) {\n this.m_isPtzMode = isPtzMode;\n }\n\n if (streamUsage !== undefined) {\n this.m_streamUsage = streamUsage;\n }\n }\n\n public validateNewState(desiredState: DesiredState) {\n /** PtzMode cannot be request while in playback mode\n * CurrentState playerMode is playback & DesiredState playerMode is not live, ptz mode cannot be requested\n * DesiredState playerMode is playback, ptz mode cannot be requested\n **/\n if (desiredState.isPtzMode === true &&\n ((this.m_playerMode === PlayerMode.playback && desiredState.playerMode !== PlayerMode.live) || (desiredState.playerMode === PlayerMode.playback))) {\n throw new Error('Invalid command. Ptz mode cannot be activated because a request has already been made to pause or set to playback the web player.');\n }\n\n /** PlaySpeed cannot be different than 1 in live mode\n * CurrentState playerMode is live and DesiredState playermode is undefined, play speed cannot be different than 1\n * DesiredState playerMode is live, play speed cannot be different than 1\n **/\n if (desiredState.playSpeed !== undefined && !desiredState.playSpeed.equals(PlaySpeed._1x) &&\n (desiredState.playerMode === PlayerMode.live || (desiredState.playerMode === undefined && this.playerMode === PlayerMode.live))) {\n throw new Error('Invalid command. PlaySpeed must be of 1x in live mode');\n }\n }\n\n public debugStatus(indent: number): string {\n return 'SessionState: ' + Utils.indentNewLine(indent) +\n 'Mode: ' + this.m_playerMode + Utils.indentNewLine(indent) +\n 'Paused: ' + Pause[this.m_paused] + Utils.indentNewLine(indent) +\n 'Speed: ' + this.m_playSpeed + Utils.indentNewLine(indent) +\n 'Last seek: ' + Utils.formatDate(this.m_lastSeekTime) + Utils.indentNewLine(indent) +\n 'Audio: ' + this.m_audioEnabled + Utils.indentNewLine(indent) +\n 'Ptz mode: ' + this.m_isPtzMode + Utils.indentNewLine(indent) +\n 'Last rendered frame time: ' + Utils.formatDate(this.m_lastRenderedFrameTime) + Utils.indentNewLine(indent) +\n 'Time of Play live: ' + Utils.formatDate(this.m_timeOfPlayLive) + Utils.indentNewLine(indent) +\n 'Stream usage: ' + this.m_streamUsage + Utils.indentNewLine(indent) +\n 'TimeLine range: ' + this.m_timelineRange?.toString() + `(${this.m_timelineRange?.Span.toString()})`;\n }\n}\n","import { PlaySpeed } from '../PlaySpeed';\nimport { ISessionStateView } from './SessionState';\nimport { PlayerMode } from '../../enums';\nimport { StreamUsage } from './Api/CreateStream';\nimport { TimeLineRange } from '../../TimeLineRange';\nimport { Utils } from '../../utils/Utils';\n\nexport class DesiredStateStructure {\n public playerMode?: PlayerMode = undefined;\n public pause?: boolean = undefined;\n public playSpeed?: PlaySpeed = undefined;\n public seekTime?: Date = undefined;\n public audioEnabled?: boolean = undefined;\n public timelineRange?: TimeLineRange = undefined;\n public isPtzMode?: boolean = undefined;\n public streamUsage?: StreamUsage = undefined;\n\n public constructor(copy?: DesiredState) {\n if (copy === undefined) {\n return;\n }\n\n this.playerMode = copy.playerMode;\n this.pause = copy.pause;\n this.playSpeed = copy.playSpeed;\n this.audioEnabled = copy.audioEnabled;\n this.seekTime = copy.seekTime;\n this.isPtzMode = copy.isPtzMode;\n this.timelineRange = copy.timelineRange;\n this.streamUsage = copy.streamUsage;\n }\n}\n\nexport class DesiredStateBuilder {\n private temp: DesiredStateStructure;\n\n constructor(copy?: DesiredState) {\n this.temp = new DesiredStateStructure(copy);\n }\n\n public playerMode(playerMode: PlayerMode): DesiredStateBuilder {\n this.temp.playerMode = playerMode;\n return this;\n }\n\n public pause(pause: boolean): DesiredStateBuilder {\n this.temp.pause = pause;\n return this;\n }\n\n public playSpeed(playSpeed: PlaySpeed): DesiredStateBuilder {\n this.temp.playSpeed = playSpeed;\n return this;\n }\n\n public seekTime(seekTime: Date | undefined): DesiredStateBuilder {\n this.temp.seekTime = seekTime;\n return this;\n }\n\n public audioEnabled(audioEnabled: boolean): DesiredStateBuilder {\n this.temp.audioEnabled = audioEnabled;\n return this;\n }\n\n public timelineRange(timelineRange: TimeLineRange | undefined): DesiredStateBuilder {\n this.temp.timelineRange = timelineRange;\n return this;\n }\n\n public ptzMode(isPtzMode: boolean): DesiredStateBuilder {\n this.temp.isPtzMode = isPtzMode;\n return this;\n }\n\n public streamUsage(streamUsage: StreamUsage): DesiredStateBuilder {\n this.temp.streamUsage = streamUsage;\n return this;\n }\n\n public static copy(from: DesiredState): DesiredStateBuilder {\n return new DesiredStateBuilder(from);\n }\n\n public build(): DesiredState {\n return new DesiredState(this.temp.playerMode, this.temp.pause, this.temp.playSpeed, this.temp.seekTime, this.temp.audioEnabled, this.temp.timelineRange, this.temp.isPtzMode, this.temp.streamUsage);\n }\n}\n\nexport class DesiredState {\n public static readonly Empty: DesiredState = new DesiredState(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);\n\n private readonly m_playerMode?: PlayerMode;\n\n private readonly m_pause?: boolean;\n\n private readonly m_playSpeed?: PlaySpeed;\n\n private readonly m_seekTime?: Date;\n\n private readonly m_audioEnabled?: boolean;\n\n private readonly m_timelineRange?: TimeLineRange;\n\n private readonly m_isPtzMode?: boolean;\n\n private readonly m_streamUsage?: StreamUsage;\n\n public get playerMode(): PlayerMode | undefined {\n return this.m_playerMode;\n }\n\n public get pause(): boolean | undefined {\n return this.m_pause;\n }\n\n public get playSpeed(): PlaySpeed | undefined {\n return this.m_playSpeed;\n }\n\n public get seekTime(): Date | undefined {\n return this.m_seekTime;\n }\n\n public get audioEnabled(): boolean | undefined {\n return this.m_audioEnabled;\n }\n\n public get timelineRange(): TimeLineRange | undefined {\n return this.m_timelineRange;\n }\n\n public get isPtzMode(): boolean | undefined {\n return this.m_isPtzMode;\n }\n\n public get streamUsage(): StreamUsage | undefined {\n return this.m_streamUsage;\n }\n\n public get isNoRequest(): boolean {\n return this.m_playerMode === undefined &&\n this.m_pause === undefined &&\n this.m_playSpeed === undefined &&\n this.m_seekTime === undefined &&\n this.m_audioEnabled === undefined &&\n this.m_timelineRange === undefined &&\n this.m_isPtzMode === undefined &&\n this.m_streamUsage === undefined;\n }\n\n constructor(playerMode: PlayerMode | undefined, pause: boolean | undefined, playSpeed: PlaySpeed | undefined, seekTime: Date | undefined,\n audioEnabled: boolean | undefined, timelineRange: TimeLineRange | undefined, ptzMode: boolean | undefined, streamUsage: StreamUsage | undefined) {\n this.m_playerMode = playerMode;\n this.m_pause = pause;\n this.m_playSpeed = playSpeed;\n this.m_seekTime = seekTime;\n this.m_audioEnabled = audioEnabled;\n this.m_timelineRange = timelineRange;\n this.m_isPtzMode = ptzMode;\n this.m_streamUsage = streamUsage;\n }\n\n public withPlayLive(): DesiredState | undefined {\n if (this.m_playerMode === PlayerMode.live &&\n this.m_pause === false &&\n this.m_playSpeed !== undefined &&\n this.m_playSpeed.Value === 1) {\n return undefined;\n }\n\n return DesiredStateBuilder.copy(this)\n .playerMode(PlayerMode.live)\n .pause(false)\n .playSpeed(PlaySpeed._1x)\n .seekTime(undefined)\n .build();\n }\n\n public withSeek(seekTime: Date): DesiredState {\n return DesiredStateBuilder.copy(this)\n .playerMode(PlayerMode.playback)\n .seekTime(seekTime)\n .ptzMode(false)\n .build();\n }\n\n public withPause(): DesiredState | undefined {\n if (this.m_pause === true) return undefined;\n return DesiredStateBuilder.copy(this)\n .pause(true)\n .playerMode(PlayerMode.playback)\n .ptzMode(false)\n .build();\n }\n\n public withResume(): DesiredState | undefined {\n if (this.m_pause === false) return undefined;\n return DesiredStateBuilder.copy(this).pause(false).build();\n }\n\n public withPlaySpeed(playSpeed: PlaySpeed): DesiredState | undefined {\n if (playSpeed.equals(this.m_playSpeed)) return undefined;\n return DesiredStateBuilder.copy(this).playSpeed(playSpeed).build();\n }\n\n public withAudioEnabled(isAudioEnabled: boolean): DesiredState | undefined {\n if (this.m_audioEnabled === isAudioEnabled) return undefined;\n return DesiredStateBuilder.copy(this).audioEnabled(isAudioEnabled).build();\n }\n\n public withPtzMode(isPtzModeEnabled: boolean): DesiredState | undefined {\n if (this.m_isPtzMode === isPtzModeEnabled) return undefined;\n return DesiredStateBuilder.copy(this).ptzMode(isPtzModeEnabled).build();\n }\n\n public withStreamUsage(streamUsage: StreamUsage): DesiredState | undefined {\n if (this.m_streamUsage === streamUsage) return undefined;\n return DesiredStateBuilder.copy(this).streamUsage(streamUsage).build();\n }\n\n public withTimelineRange(timelineRange?: TimeLineRange): DesiredState | undefined {\n if (this.m_timelineRange === timelineRange) return undefined;\n return DesiredStateBuilder.copy(this).timelineRange(timelineRange).build();\n }\n\n public clearTimelineRange(): DesiredState {\n if (this.m_timelineRange === undefined) return this;\n return DesiredStateBuilder.copy(this).timelineRange(undefined).build();\n }\n\n public getDifferences(serverState: ISessionStateView): StateDifferences {\n return DesiredState.getDifferences(this, serverState);\n }\n\n // Needed to extract that method as a static one. Otherwise, unit test don't pass. Still don't understand why up to now...\n public static getDifferences(desiredState: DesiredState, serverState: ISessionStateView): StateDifferences {\n let playerMode: PlayerMode | undefined;\n let playSpeed: PlaySpeed | undefined;\n let paused: boolean | undefined;\n let audioEnabled: boolean | undefined;\n let timelineRange: TimeLineRange | undefined;\n let isPtzMode: boolean | undefined;\n let streamUsage: StreamUsage | undefined;\n\n if (desiredState.playerMode !== undefined && desiredState.playerMode !== serverState.playerMode) {\n playerMode = desiredState.playerMode;\n }\n\n if (desiredState.playSpeed !== undefined && !desiredState.playSpeed.equals(serverState.playSpeed)) {\n playSpeed = desiredState.playSpeed;\n }\n\n if (desiredState.pause !== undefined && desiredState.pause !== serverState.isPaused) {\n paused = desiredState.pause;\n }\n\n if (desiredState.audioEnabled !== undefined && desiredState.audioEnabled !== serverState.isAudioEnabled) {\n audioEnabled = desiredState.audioEnabled;\n }\n\n if (desiredState.timelineRange !== undefined && desiredState.timelineRange !== serverState.timelineRange) {\n timelineRange = desiredState.timelineRange;\n }\n\n if (desiredState.isPtzMode !== undefined && desiredState.isPtzMode !== serverState.isPtzMode) {\n isPtzMode = desiredState.isPtzMode;\n }\n\n if (desiredState.streamUsage !== undefined && desiredState.streamUsage !== serverState.streamUsage) {\n streamUsage = desiredState.streamUsage;\n }\n\n return new StateDifferences(playerMode, playSpeed, paused, audioEnabled, desiredState.seekTime, timelineRange, isPtzMode, streamUsage);\n }\n\n public debugStatus(indent: number): string {\n if (this === DesiredState.Empty) {\n return 'DesiredState: empty';\n }\n\n return 'DesiredState' + Utils.indentNewLine(indent) +\n 'Mode: ' + this.m_playerMode + Utils.indentNewLine(indent) +\n 'Paused: ' + this.m_pause + Utils.indentNewLine(indent) +\n 'Speed: ' + this.m_playSpeed + Utils.indentNewLine(indent) +\n 'Last seek: ' + Utils.formatDate(this.m_seekTime) + Utils.indentNewLine(indent) +\n 'Audio: ' + this.m_audioEnabled + Utils.indentNewLine(indent) +\n 'Ptz mode: ' + this.m_isPtzMode + Utils.indentNewLine(indent) +\n 'Stream usage: ' + this.m_streamUsage;\n }\n}\n\nexport class StateDifferences {\n public playerMode: PlayerMode | undefined;\n\n public playSpeed: PlaySpeed | undefined;\n\n public isPaused: boolean | undefined;\n\n public audioEnabled: boolean | undefined;\n\n public seekTime: Date | undefined;\n\n public timelineRange: TimeLineRange | undefined;\n\n public isPtzMode: boolean | undefined;\n\n public streamUsage: StreamUsage | undefined;\n\n public get isResuming(): boolean {\n return this.isPaused === false;\n }\n\n public get noDifference(): boolean {\n return this.playerMode === undefined &&\n this.playSpeed === undefined &&\n this.isPaused === undefined &&\n this.audioEnabled === undefined &&\n this.seekTime === undefined &&\n this.timelineRange === undefined &&\n this.isPtzMode === undefined &&\n this.streamUsage === undefined;\n }\n\n constructor(playerMode: PlayerMode | undefined, playSpeed: PlaySpeed | undefined, isPaused: boolean | undefined, audioEnabled: boolean | undefined, seekTime: Date | undefined, timelineRange: TimeLineRange | undefined, isPtzMode: boolean | undefined, streamUsage: StreamUsage | undefined) {\n this.playerMode = playerMode;\n this.playSpeed = playSpeed;\n this.isPaused = isPaused;\n this.audioEnabled = audioEnabled;\n this.seekTime = seekTime;\n this.timelineRange = timelineRange;\n this.isPtzMode = isPtzMode;\n this.streamUsage = streamUsage;\n }\n}\n","import { Utils } from '../../utils/Utils';\n\n/**\n * @beta\n * */\nexport enum VideoFormat {\n Mjpeg = 'Mjpeg',\n H264 = 'H264',\n RawH264 = 'RawH264',\n}\n\n/**\n * @beta\n * */\nexport class SupportedVideoFormats {\n private readonly m_supportedVideoFormats: VideoFormat[];\n\n private m_availableFormats: VideoFormat[];\n\n constructor(supportedFormats: VideoFormat[]) {\n this.m_supportedVideoFormats = this.m_availableFormats = supportedFormats;\n }\n\n public static getBrowserSupportedFormats(): SupportedVideoFormats {\n if (Utils.supportsMse()) {\n return new SupportedVideoFormats([VideoFormat.Mjpeg, VideoFormat.H264]);\n } else {\n return new SupportedVideoFormats([VideoFormat.Mjpeg]);\n }\n }\n\n public setPtzMode(isPtzMode: boolean): void {\n if (isPtzMode) {\n this.m_availableFormats = [VideoFormat.Mjpeg];\n } else {\n this.m_availableFormats = this.m_supportedVideoFormats;\n }\n }\n\n public getAvailableFormats(): VideoFormat[] {\n return this.m_availableFormats;\n }\n\n public toString(): string {\n return `Supported Video Formats: [${this.m_supportedVideoFormats.join(', ')}] | Available Video Formats: [${this.m_availableFormats.join(', ')}]`;\n }\n}\n","import { IWebSocketRequest, TranscodingAllowance } from './Messages';\nimport { ILogger } from '../../utils/logger';\nimport { DesiredState, StateDifferences } from './DesiredState';\nimport { UpdateStreamRequest } from './Messages';\nimport { ISessionStateView, SessionState } from './SessionState';\nimport { PlayerMode } from '../../enums';\nimport { VideoFormat, SupportedVideoFormats } from './SupportedVideoFormats';\n\nexport interface IBuildUpdateStreamRequestResult {\n updateStreamRequest: IWebSocketRequest | null;\n desiredState: DesiredState;\n}\n\nexport class UpdateStreamRequestBuilder {\n private readonly m_transcodingAllowance: TranscodingAllowance;\n\n private readonly m_logger: ILogger;\n\n private readonly m_channelId: number;\n\n private readonly m_supportedFormats: SupportedVideoFormats;\n\n constructor(logger: ILogger, channelId: number, transcodingAllowance: TranscodingAllowance, supportedFormats: SupportedVideoFormats) {\n this.m_logger = logger.subLogger('UpdateStreamRequestBuilder');\n this.m_channelId = channelId;\n this.m_supportedFormats = supportedFormats;\n this.m_transcodingAllowance = transcodingAllowance;\n }\n\n public build(serverState: SessionState, desiredState: DesiredState): IBuildUpdateStreamRequestResult {\n if (desiredState.isNoRequest) {\n this.m_logger.debug?.trace('No request');\n return { updateStreamRequest: null, desiredState: desiredState };\n }\n\n this.m_logger.debug?.trace('Building update stream request -> serverState: ', serverState, ' desiredState ', desiredState);\n\n const differences: StateDifferences = DesiredState.getDifferences(desiredState, serverState);\n\n // Was not started and is still not.\n if (serverState.playerMode === undefined && desiredState.playerMode === undefined) {\n //Handling the timeline range here so remove it from the desiredState we are going to return\n desiredState = desiredState.clearTimelineRange();\n\n if (differences.timelineRange !== undefined) {\n // Timeline updates are allowed when we have no state yet.\n const update = new UpdateStreamRequest(this.m_channelId, {\n timeLine: differences.timelineRange.toTimeLine(),\n });\n serverState.update(undefined, undefined, undefined, undefined, undefined, differences.timelineRange, undefined, undefined);\n this.m_logger.debug?.trace(`Timeline range request will be sent: ${differences.timelineRange}`);\n return { updateStreamRequest: update, desiredState };\n }\n\n this.m_logger.debug?.trace('Still no selection between live and playback. No command sent.');\n return { updateStreamRequest: null, desiredState };\n }\n\n // Things were requested but they are all equivalent to current state. Nothing to do\n if (differences.noDifference) {\n this.m_logger.debug?.trace('DesiredState did not change. No command sent.');\n return { updateStreamRequest: null, desiredState: DesiredState.Empty };\n }\n\n const videoFormatsRequested = this.determineRequestedVideoFormats(differences);\n const seekTimeRequested = this.getSeekTime(differences, serverState);\n const updateStreamRequest = new UpdateStreamRequest(this.m_channelId, {\n playerMode: differences.playerMode,\n playSpeed: differences.playSpeed,\n pause: differences.isPaused,\n audioEnabled: differences.audioEnabled,\n seekTime: seekTimeRequested,\n timeLine: differences.timelineRange?.toTimeLine(),\n supportedFormats: videoFormatsRequested,\n streamUsage: differences.streamUsage,\n });\n\n serverState.update(differences.playerMode, differences.playSpeed, differences.isPaused, differences.seekTime, differences.audioEnabled, differences.timelineRange, differences.isPtzMode, differences.streamUsage);\n\n return { updateStreamRequest: updateStreamRequest, desiredState: DesiredState.Empty };\n }\n\n private getSeekTime(differences: StateDifferences, serverState: SessionState): Date | undefined {\n if (differences.isPaused === true && differences.seekTime === undefined && serverState.playerMode === PlayerMode.live) {\n return serverState.getResumeLiveSeekTime();\n }\n return differences.seekTime;\n }\n\n private determineRequestedVideoFormats(differences: StateDifferences): SupportedVideoFormats | undefined {\n if (differences.isPtzMode === undefined) {\n return undefined;\n }\n\n if (this.m_transcodingAllowance === TranscodingAllowance.Never) {\n this.m_logger.debug?.trace('Cannot start ptz mode since Transcoding is not allowed on the server side');\n differences.isPtzMode = undefined;\n return undefined;\n }\n\n this.m_supportedFormats.setPtzMode(differences.isPtzMode);\n return this.m_supportedFormats;\n }\n\n public buildRestoreState(previousServerState: ISessionStateView) {\n this.m_logger.info?.trace('Reapply state:', previousServerState);\n switch (previousServerState.playerMode) {\n case PlayerMode.live:\n const supportedVideoFormats = previousServerState.isPtzMode ? new SupportedVideoFormats([VideoFormat.Mjpeg]) : this.m_supportedFormats;\n return new UpdateStreamRequest(this.m_channelId, { playerMode: PlayerMode.live, playSpeed: previousServerState.playSpeed, pause: previousServerState.isPaused, audioEnabled: previousServerState.isAudioEnabled, streamUsage: previousServerState.streamUsage, timeLine: previousServerState.timelineRange?.toTimeLine(), supportedFormats: supportedVideoFormats });\n case PlayerMode.playback:\n return new UpdateStreamRequest(this.m_channelId, { playerMode: PlayerMode.playback, playSpeed: previousServerState.playSpeed, pause: previousServerState.isPaused, seekTime: previousServerState.getRestorePlaybackSeekTime(), audioEnabled: previousServerState.isAudioEnabled, streamUsage: previousServerState.streamUsage, timeLine: previousServerState.timelineRange?.toTimeLine() });\n default:\n if (previousServerState.timelineRange !== undefined) {\n return new UpdateStreamRequest(this.m_channelId, { timeLine: previousServerState.timelineRange.toTimeLine() });\n }\n return null;\n }\n }\n}\n","import { IPtzControlSession, IConnectionEvent, ISession, WsSessionV2, WsSessionV2Builder } from './WsSessionV2';\nimport { ISessionStateView, SessionState } from './SessionState';\nimport { PlaySpeed } from '../PlaySpeed';\nimport { IWebSocketRequest, IWebSocketResponse, StreamUsage, UpdateStreamRequest } from './Messages';\nimport { ILogger } from '../../utils/logger';\nimport { LiteEvent, ILiteEvent } from '../../utils/liteEvents';\nimport { UpdateStreamRequestBuilder, IBuildUpdateStreamRequestResult } from './UpdateStreamRequestBuilder';\nimport { DesiredState } from './DesiredState';\nimport { DefaultStreamUsage } from './DefaultStreamUsage';\nimport { PlayerMode } from '../../enums';\nimport { TimeLineRange } from '../../TimeLineRange';\nimport { SessionCreationParameters, SessionParameters } from './SessionParameters';\nimport { IStreamUsageSelector, IStreamUsageSelectorBuilder } from '../StreamUsageSelector';\nimport { Utils } from '../../utils/Utils';\nimport { PromiseCompletionSource, rejectedPromise } from '../../utils/PromiseCompletionSource';\n\nexport interface IPtzControlSessionProvider {\n readonly ptzControlSession: IPtzControlSession;\n}\n\nexport interface IStatefulSession extends IConnectionEvent, IPtzControlSessionProvider {\n readonly sessionStateView: ISessionStateView;\n readonly sessionParameters: SessionParameters;\n\n SessionError: ILiteEvent;\n\n setLastFrameRendered(lastFrameRendered: Date): void;\n\n dispose(): Promise;\n playLive(): boolean;\n pause(): boolean;\n resume(): boolean;\n seek(seekTime: Date): boolean;\n setPlaySpeed(playSpeed: PlaySpeed): boolean;\n setAudioEnabled(audioEnabled: boolean): boolean;\n setTimelineRange(timelineRange: TimeLineRange): void;\n setPtzMode(ptzModeEnabled: boolean): boolean;\n\n restartSession(sessionCreationParameters: SessionCreationParameters): void;\n\n debugStatus(indent: number): string;\n}\n\n/*\n * When doing changes to the State management, try to keep in mind the following scenarios\n * Live -> Pause -> Live (returns to live)\n * Live -> Pause -> Resume (start playback at the time we did pause).\n * Live -> Reverse speed (starts playback in reverse at last rendered frame, time of play request if no frame was rendered yet)\n * Seeking while paused (ptz mode or not)\n * Disconnection -> Reconnection -> Reapply the state of our session.\n * - Restore ptz mode, audio, speed, stream usage, timeline, pause\n * - If in playback seek back to last frame rendered, time of seek if no frame was rendered, time playLive was requested if no seek was done (playlive, pause, lose connection)\n */\n\nexport class StatefulSession implements IStatefulSession {\n private static readonly DisconnectedSentinel = rejectedPromise('Disconnected sentinel should never be awaited');\n\n private readonly m_logger: ILogger;\n\n private m_isDisposed: boolean = false;\n\n private m_session: ISession;\n\n private m_renewTokenRequest: IWebSocketRequest | null = null;\n\n private readonly m_sessionBuilder: WsSessionV2Builder;\n\n private readonly m_streamUsageSelectorBuilder: IStreamUsageSelectorBuilder;\n\n private m_streamUsageSelector: IStreamUsageSelector;\n\n private readonly m_defaultStreamUsage: DefaultStreamUsage;\n\n private readonly m_serverState: SessionState;\n\n private readonly m_connectionReestablishedEvent = new LiteEvent();\n\n private readonly m_connectionLostEvent = new LiteEvent();\n\n private readonly m_sessionErrorEvent = new LiteEvent();\n\n private m_updateStreamRequestBuilder: UpdateStreamRequestBuilder;\n\n private m_desiredState: DesiredState;\n\n private m_queryInFlight?: Promise;\n\n private m_queryInFlightItself?: IWebSocketRequest;\n\n public get sessionStateView(): ISessionStateView {\n return this.m_serverState;\n }\n\n public get sessionParameters(): SessionParameters {\n return this.m_session.sessionParameters;\n }\n\n public get ConnectionReestablished() {\n return this.m_connectionReestablishedEvent.expose();\n }\n\n public get ConnectionLost() {\n return this.m_connectionLostEvent.expose();\n }\n\n public get SessionError(): ILiteEvent {\n return this.m_sessionErrorEvent.expose();\n }\n\n private constructor(logger: ILogger, sessionBuilder: WsSessionV2Builder, session: ISession, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder) {\n this.m_logger = logger.subLogger('StatefulSession');\n this.m_logger.debug?.trace(`Session Established with server version ${session.sessionParameters.serverVersion}`);\n this.m_session = session;\n this.m_sessionBuilder = sessionBuilder;\n this.m_streamUsageSelectorBuilder = streamUsageSelectorBuilder;\n this.m_defaultStreamUsage = session.sessionParameters.defaultStreamUsage;\n this.m_updateStreamRequestBuilder = new UpdateStreamRequestBuilder(logger, session.sessionParameters.channel, session.sessionParameters.transcodingAllowance, session.sessionParameters.supportedVideoFormats);\n this.m_desiredState = DesiredState.Empty;\n this.m_serverState = new SessionState(this.m_defaultStreamUsage.getStreamUsage(undefined));\n this.m_session.ConnectionReestablished.register(this.onConnectionReestablished);\n this.m_session.ConnectionLost.register(this.onConnectionLost);\n this.m_streamUsageSelector = this.m_streamUsageSelectorBuilder.build(this.m_defaultStreamUsage);\n this.m_streamUsageSelector.onRequiresStreamUsageUpdate.register(this.onRequiresStreamUsageUpdate);\n\n this.onRequiresStreamUsageUpdate(this.m_streamUsageSelector.streamUsage);\n this.tokenRenewalLoop();\n }\n\n public static async build(logger: ILogger, sessionBuilder: WsSessionV2Builder, sessionParameters: SessionCreationParameters, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder): Promise {\n const wsSessionV2: WsSessionV2 = await sessionBuilder.build(sessionParameters);\n return new StatefulSession(logger, sessionBuilder, wsSessionV2, streamUsageSelectorBuilder);\n }\n\n public async dispose(): Promise {\n if (this.m_isDisposed) {\n return;\n }\n this.m_isDisposed = true;\n\n this.m_renewTokenRequest = null;\n\n this.m_session.ConnectionReestablished.unregister(this.onConnectionReestablished);\n this.m_session.ConnectionLost.unregister(this.onConnectionLost);\n this.m_streamUsageSelector.onRequiresStreamUsageUpdate.unregister(this.onRequiresStreamUsageUpdate);\n\n // When query in flight finishes, it can automatically queue an other one. Wait until this possible loop is done.\n while (this.m_queryInFlight !== undefined && this.m_queryInFlight !== StatefulSession.DisconnectedSentinel) {\n this.m_logger.debug?.trace(`Waiting on ${this.m_queryInFlightItself?.debugStatus(0)}`);\n await this.m_queryInFlight;\n }\n\n this.m_queryInFlight = StatefulSession.DisconnectedSentinel; // Prevents other query to be tried\n\n await this.m_session.dispose();\n this.m_session.sessionParameters.tokenRenewer.dispose();\n this.m_logger.debug?.trace('session disposed');\n }\n\n public setLastFrameRendered(lastFrameRendered: Date) {\n this.m_serverState.updateRenderedFrameTime(lastFrameRendered);\n }\n\n public setPtzMode(isEnabled: boolean): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withPtzMode(isEnabled));\n }\n\n public playLive(): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withPlayLive());\n }\n\n public pause(): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withPause());\n }\n\n public resume(): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withResume());\n }\n\n public seek(seekTime: Date): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withSeek(seekTime));\n }\n\n public setPlaySpeed(playSpeed: PlaySpeed): boolean {\n // Management of Live -> reverse speed\n if (playSpeed.IsReverse &&\n this.m_serverState.playerMode === PlayerMode.live || this.m_desiredState.playerMode === PlayerMode.live) {\n this.m_desiredState = this.m_desiredState.withSeek(this.m_serverState.getLiveToReverseSeekTime());\n }\n\n return this.applyNewDesiredState(this.m_desiredState.withPlaySpeed(playSpeed));\n }\n\n public setAudioEnabled(audioEnabled: boolean): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withAudioEnabled(audioEnabled));\n }\n\n public setTimelineRange(timelineRange: TimeLineRange): boolean {\n return this.applyNewDesiredState(this.m_desiredState.withTimelineRange(timelineRange));\n }\n\n public get ptzControlSession(): IPtzControlSession {\n return this.m_session.ptzControlSession;\n }\n\n public async restartSession(sessionCreationParameters: SessionCreationParameters): Promise {\n // When query in flight finishes, it can automatically queue an other one. Wait until this possible loop is done.\n while (this.m_queryInFlight !== undefined) {\n if (this.m_queryInFlight === StatefulSession.DisconnectedSentinel) {\n return;\n }\n await this.m_queryInFlight;\n }\n\n const sessionRestarted = new PromiseCompletionSource();\n this.m_queryInFlight = sessionRestarted.Promise;\n\n this.m_session.ConnectionReestablished.unregister(this.onConnectionReestablished);\n this.m_session.ConnectionLost.unregister(this.onConnectionLost);\n await this.m_session.dispose();\n\n this.m_session = await this.m_sessionBuilder.build(sessionCreationParameters);\n this.m_session.ConnectionReestablished.register(this.onConnectionReestablished);\n this.m_session.ConnectionLost.register(this.onConnectionLost);\n this.replaceStreamUsageSelector();\n this.onRequiresStreamUsageUpdate(this.m_streamUsageSelector.streamUsage);\n this.m_updateStreamRequestBuilder = new UpdateStreamRequestBuilder(this.m_logger, this.m_session.sessionParameters.channel, this.m_session.sessionParameters.transcodingAllowance, this.m_session.sessionParameters.supportedVideoFormats);\n\n sessionRestarted.resolve(new FakeWebSocketResponse(this.m_session.sessionParameters.channel));\n\n this.onConnectionReestablished();\n }\n\n private replaceStreamUsageSelector(): void {\n this.m_streamUsageSelector.onRequiresStreamUsageUpdate.unregister(this.onRequiresStreamUsageUpdate);\n this.m_streamUsageSelector.dispose();\n\n this.m_streamUsageSelector = this.m_streamUsageSelectorBuilder.build(this.m_session.sessionParameters.defaultStreamUsage);\n this.m_streamUsageSelector.onRequiresStreamUsageUpdate.register(this.onRequiresStreamUsageUpdate);\n }\n\n private applyNewDesiredState(newDesiredState: DesiredState | undefined): boolean {\n if (newDesiredState === undefined) return false;\n this.m_serverState.validateNewState(newDesiredState);\n this.m_desiredState = newDesiredState;\n this.applyRequests();\n return true;\n }\n\n private applyRequests(fromSendCompletion: boolean = false): void {\n if (this.m_queryInFlight !== undefined) {\n this.m_logger.debug?.trace('query in flight. waiting on it to finish before sending the state change request.');\n return;\n }\n\n const result: IBuildUpdateStreamRequestResult = this.m_updateStreamRequestBuilder.build(this.m_serverState, this.m_desiredState);\n const updateStreamRequest = result.updateStreamRequest ?? this.processPendingRenewTokenRequest();\n this.m_desiredState = result.desiredState;\n if (updateStreamRequest === null) {\n if (!fromSendCompletion) {\n this.m_logger.debug?.trace('Current state represent the requested state. Nothing to do.');\n }\n return;\n }\n\n this.m_logger.debug?.trace('Sending ', updateStreamRequest);\n this.m_logger.debug?.trace('ServerState is now considered ', this.m_serverState);\n this.m_queryInFlightItself = updateStreamRequest;\n this.m_queryInFlight = this.m_session.sendCommand(updateStreamRequest);\n this.m_queryInFlight.then(() => {\n this.m_queryInFlightItself = undefined;\n this.m_queryInFlight = undefined;\n this.applyRequests(true);\n }).catch((e) => {\n this.m_logger.warn?.trace('Request to update stream failed.\\nRequested state:', updateStreamRequest?.debugStatus(0), '\\nError message:', e);\n this.m_queryInFlightItself = undefined;\n this.m_queryInFlight = undefined;\n if (updateStreamRequest !== null) {\n this.m_sessionErrorEvent.trigger(e);\n }\n });\n }\n\n private processPendingRenewTokenRequest(): IWebSocketRequest | null {\n const renewTokenRequest = this.m_renewTokenRequest;\n this.m_renewTokenRequest = null;\n return renewTokenRequest;\n }\n\n private readonly onConnectionReestablished = () => {\n this.m_logger.info?.trace('Connection restored');\n this.replaceStreamUsageSelector();\n this.m_serverState.update(undefined, undefined, undefined, undefined, undefined, undefined, undefined, this.m_streamUsageSelector.streamUsage);\n const restoreUpdateStreamRequest = this.m_updateStreamRequestBuilder.buildRestoreState(this.m_serverState);\n // if connection was lost before we had the chance to do anything, there might not be anything to send to the server.\n if (restoreUpdateStreamRequest !== null) {\n this.m_queryInFlightItself = restoreUpdateStreamRequest;\n this.m_queryInFlight = this.m_session.sendCommand(restoreUpdateStreamRequest);\n this.m_queryInFlight\n .then((_) => {\n this.m_queryInFlightItself = undefined;\n this.m_queryInFlight = undefined;\n this.applyRequests(true);\n this.m_connectionReestablishedEvent.trigger();\n })\n .catch((e) => {\n this.m_queryInFlightItself = undefined;\n this.m_queryInFlight = undefined;\n this.m_logger.error?.trace(`Failed to apply state ${e}`);\n this.m_sessionErrorEvent.trigger(e);\n });\n } else {\n this.m_connectionReestablishedEvent.trigger();\n }\n }\n\n private readonly onConnectionLost = () => {\n this.m_queryInFlight = StatefulSession.DisconnectedSentinel;\n this.m_connectionLostEvent.trigger();\n }\n\n private readonly onRequiresStreamUsageUpdate = (streamUsage: StreamUsage): boolean => {\n return this.applyNewDesiredState(this.m_desiredState.withStreamUsage(streamUsage));\n }\n\n private async tokenRenewalLoop() {\n while (!this.m_isDisposed) {\n const newToken = await this.m_session.sessionParameters.tokenRenewer.RenewalPromise; //Even if we restart a new session with different sessionParameters, the tokenRenewer is recycled so this await should complete\n if (newToken === null || this.m_isDisposed) {\n this.m_logger.debug?.trace('Token null or disposed. Stopping token renewal loop.');\n return;\n }\n\n this.m_renewTokenRequest = UpdateStreamRequest.buildTokenUpdate(this.m_session.sessionParameters.channel, newToken);\n this.applyRequests();\n }\n }\n\n public debugStatus(indent: number): string {\n return 'StatefulSession' + Utils.indentNewLine(indent) +\n this.m_desiredState.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_serverState.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n 'Request in flight: ' + (this.m_queryInFlight !== undefined ? 'yes' : 'no') + Utils.indentNewLine(indent + (this.m_queryInFlight !== undefined ? Utils.Indentation : 0)) +\n (this.m_queryInFlightItself !== undefined ? (this.m_queryInFlightItself.debugStatus(indent + Utils.Indentation + Utils.Indentation) + Utils.indentNewLine(indent)) : '') +\n 'Default stream usage: ' + this.m_defaultStreamUsage.StreamUsage + Utils.indentNewLine(indent) +\n (this.m_renewTokenRequest !== null ? ('Renew token request pending' + Utils.indentNewLine(indent)) : '') +\n this.m_session.debugStatus(indent + Utils.Indentation);\n }\n}\n\n\nclass FakeWebSocketResponse implements IWebSocketResponse {\n public readonly channel: number;\n\n public constructor(channel: number) {\n this.channel = channel;\n }\n}\n","import { ITokenRenewer } from '../../services/TokenRenewer';\nimport { Camera } from '../camera';\nimport { SupportedVideoFormats } from './SupportedVideoFormats';\nimport { TranscodingAllowance } from './Messages';\nimport { DefaultStreamUsage } from './DefaultStreamUsage';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { Utils } from '../../utils/Utils';\nimport { DewarperSourceImageParameters } from '../../dewarper/DewarperSourceImageParameters';\n\nexport class SessionCreationParameters {\n // Client side specification\n public readonly camera: Camera;\n public readonly channel: number;\n public readonly tokenRenewer: ITokenRenewer\n public readonly supportedVideoFormats: SupportedVideoFormats;\n public readonly clientVersion: string;\n\n constructor(channel: number, camera: Camera, tokenRenewer: ITokenRenewer, supportedVideoFormats: SupportedVideoFormats, clientVersion: string) {\n this.channel = channel;\n this.camera = camera;\n this.tokenRenewer = tokenRenewer;\n this.supportedVideoFormats = supportedVideoFormats;\n this.clientVersion = clientVersion;\n }\n}\n\nexport class SessionParameters {\n private readonly m_sessionCreationParameters: SessionCreationParameters;\n\n public get channel(): number {\n return this.m_sessionCreationParameters.channel;\n }\n public get camera(): Camera {\n return this.m_sessionCreationParameters.camera;\n }\n public get tokenRenewer(): ITokenRenewer {\n return this.m_sessionCreationParameters.tokenRenewer;\n }\n public get supportedVideoFormats(): SupportedVideoFormats {\n return this.m_sessionCreationParameters.supportedVideoFormats;\n }\n public get clientVersion(): string {\n return this.m_sessionCreationParameters.clientVersion;\n }\n\n // Server side specifications\n public readonly transcodingAllowance: TranscodingAllowance;\n public readonly defaultStreamUsage: DefaultStreamUsage;\n public readonly serverVersion: string;\n public readonly videoWatermarkConfig: VideoWatermarkConfig;\n public readonly dewarperConfig: DewarperSourceImageParameters;\n\n constructor(sessionCreationParameters: SessionCreationParameters, transcodingAllowance: TranscodingAllowance, defaultStreamUsage: DefaultStreamUsage, videoWatermarkConfig: VideoWatermarkConfig, dewarperConfig: DewarperSourceImageParameters, serverVersion: string) {\n this.m_sessionCreationParameters = sessionCreationParameters;\n this.transcodingAllowance = transcodingAllowance;\n this.defaultStreamUsage = defaultStreamUsage;\n this.videoWatermarkConfig = videoWatermarkConfig;\n this.dewarperConfig = dewarperConfig;\n this.serverVersion = serverVersion;\n }\n\n public withSupportedVideoFormats(newSupportedVideoFormat: SupportedVideoFormats): SessionParameters {\n return new SessionParameters(new SessionCreationParameters(\n this.channel,\n this.camera,\n this.tokenRenewer,\n newSupportedVideoFormat,\n this.clientVersion),\n this.transcodingAllowance,\n this.defaultStreamUsage,\n this.videoWatermarkConfig,\n this.dewarperConfig,\n this.serverVersion);\n }\n\n public withServerSideSessionParameters(transcodingAllowance: TranscodingAllowance, defaultStreamUsage: DefaultStreamUsage, videoWatermarkConfig: VideoWatermarkConfig, dewarpConfig: DewarperSourceImageParameters, serverVersion: string): SessionParameters {\n return new SessionParameters(this.m_sessionCreationParameters, transcodingAllowance, defaultStreamUsage, videoWatermarkConfig, dewarpConfig, serverVersion);\n }\n\n public debugStatus(indent: number): string {\n return 'SessionParameters' + Utils.indentNewLine(indent) +\n 'Channel: ' + this.channel + Utils.indentNewLine(indent) +\n 'Camera: ' + this.camera + Utils.indentNewLine(indent) +\n this.supportedVideoFormats.toString() + Utils.indentNewLine(indent) +\n 'Client version: ' + this.clientVersion + Utils.indentNewLine(indent) +\n 'Transcoding allowance: ' + TranscodingAllowance[this.transcodingAllowance] + Utils.indentNewLine(indent) +\n 'Default stream usage: ' + this.defaultStreamUsage.toString() + Utils.indentNewLine(indent) +\n 'Server version: ' + this.serverVersion + Utils.indentNewLine(indent) +\n this.videoWatermarkConfig.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.dewarperConfig.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { ILogger } from '../../utils/logger';\nimport { ITransport } from '../../services/ITransport';\nimport { IWebSocketRequest, IWebSocketResponse, CreateStreamRequest, DeleteStreamRequest, PtzRequest, CreateStreamResponse } from './Messages';\nimport { SessionCreationParameters, SessionParameters } from './SessionParameters';\nimport { Utils } from '../../utils/Utils';\nimport { WebSocketTransportV2 } from '../../services/WebSocketTransportV2';\n\n/**\n * @beta\n * */\nexport interface IConnectionEvent {\n ConnectionReestablished: ILiteEvent;\n ConnectionLost: ILiteEvent;\n}\n\nexport interface ISession extends IConnectionEvent {\n readonly ptzControlSession: IPtzControlSession;\n readonly sessionParameters: SessionParameters;\n\n dispose(): Promise;\n sendCommand(command: IWebSocketRequest): Promise;\n\n debugStatus(indent: number): string;\n}\n\nexport interface IPtzControlSession {\n sendCommand(command: PtzRequest): void\n}\n\nexport class WsSessionV2Builder {\n private readonly m_logger: ILogger;\n\n private readonly m_transport: ITransport;\n\n public constructor(logger: ILogger, transport: ITransport) {\n this.m_logger = logger.subLogger('WsSessionV2Builder');\n this.m_transport = transport;\n }\n\n public async build(sessionCreationParameters: SessionCreationParameters): Promise {\n const token = await sessionCreationParameters.tokenRenewer.Token;\n const createStreamRequest = new CreateStreamRequest(sessionCreationParameters.channel, sessionCreationParameters.camera, token, sessionCreationParameters.supportedVideoFormats, sessionCreationParameters.clientVersion);\n\n this.m_logger.debug?.trace('Sending create stream command');\n\n const createStreamResponse = await this.m_transport.send(createStreamRequest)\n .catch((reason) => {\n throw new Error(reason);\n }) as CreateStreamResponse;\n\n const sessionParameters = new SessionParameters(sessionCreationParameters, createStreamResponse.body.transcodingAllowance, createStreamResponse.body.defaultStreamUsage, createStreamResponse.body.videoWatermarkingConfig, createStreamResponse.body.dewarperConfig, createStreamResponse.body.serverVersion);\n return new WsSessionV2(this.m_logger, this.m_transport, sessionParameters);\n }\n}\n\nexport class WsSessionV2 implements ISession, IPtzControlSession {\n private readonly m_logger: ILogger;\n\n private readonly m_transport: ITransport;\n\n private m_sessionParameters: SessionParameters;\n\n private readonly m_connectionReestablishedEvent = new LiteEvent();\n\n private readonly m_connectionLostEvent = new LiteEvent();\n\n private m_isDisposed: boolean = false;\n\n private m_isConnected: boolean = true; //When connection is created, it is supplied an already connected transport\n\n public get ConnectionReestablished(): ILiteEvent {\n return this.m_connectionReestablishedEvent.expose();\n }\n\n public get ConnectionLost(): ILiteEvent {\n return this.m_connectionLostEvent.expose();\n }\n\n public get ptzControlSession(): IPtzControlSession {\n return this;\n }\n\n public get sessionParameters(): SessionParameters {\n return this.m_sessionParameters;\n }\n\n public constructor(logger: ILogger, transport: ITransport, sessionParameters: SessionParameters) {\n this.m_logger = logger.subLogger('WsSessionV2');\n this.m_transport = transport;\n this.m_sessionParameters = sessionParameters;\n\n this.m_transport.ConnectionReestablished.register(this.onConnectionReestablished);\n this.m_transport.ConnectionLost.register(this.onConnectionLost);\n }\n\n public async dispose(): Promise {\n if (this.m_isDisposed) {\n return;\n }\n this.m_isDisposed = true;\n\n this.m_transport.ConnectionReestablished.unregister(this.onConnectionReestablished);\n this.m_transport.ConnectionLost.unregister(this.onConnectionLost);\n\n if (this.m_isConnected) {\n const deleteStreamCommand = new DeleteStreamRequest(this.m_sessionParameters.channel);\n await this.sendCommand(deleteStreamCommand);\n }\n }\n\n public async sendCommand(command: IWebSocketRequest): Promise {\n return await this.m_transport.send(command);\n }\n\n private readonly onConnectionReestablished = async () => {\n this.m_logger.info?.trace('Socket connection reestablished, sending create stream command');\n\n const token = await this.m_sessionParameters.tokenRenewer.Token;\n const createStreamRequest = new CreateStreamRequest(this.m_sessionParameters.channel, this.m_sessionParameters.camera, token, this.m_sessionParameters.supportedVideoFormats, this.m_sessionParameters.clientVersion);\n this.m_transport.send(createStreamRequest)\n .then((response) => {\n const createStreamResponse = response as CreateStreamResponse;\n this.m_sessionParameters = this.sessionParameters.withServerSideSessionParameters(createStreamResponse.body.transcodingAllowance, createStreamResponse.body.defaultStreamUsage, createStreamResponse.body.videoWatermarkingConfig, createStreamResponse.body.dewarperConfig, createStreamResponse.body.serverVersion);\n\n this.m_logger.info?.trace(`Stream creation request completed with server version: ${createStreamResponse.body.serverVersion}. Raising connection reestablished`);\n\n this.m_isConnected = true;\n this.m_connectionReestablishedEvent.trigger();\n }, (error) => {\n this.m_logger.warn?.trace('Failed to recreate the stream connection:', error);\n });\n }\n\n private readonly onConnectionLost = () => {\n this.m_isConnected = false;\n this.m_connectionLostEvent.trigger();\n }\n\n public debugStatus(indent: number): string {\n let webSocketTransportV2: WebSocketTransportV2 | undefined;\n if (this.m_transport instanceof WebSocketTransportV2) {\n webSocketTransportV2 = this.m_transport;\n }\n\n return 'WsSessionV2' + Utils.indentNewLine(indent) +\n (this.m_isDisposed ? `${Utils.indentNewLine(indent)}Disposed${Utils.indentNewLine(indent)}` : '') +\n this.m_sessionParameters.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n webSocketTransportV2?.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { ILogger, Logger } from '../utils/logger';\nimport { TokenRetriever, TokenRetrieverFct } from './TokenRetriever';\nimport { EventHubDispatcher, IEventHubProvider } from './eventHubDispatcher';\nimport { ITransport, ITransportBuilder } from './ITransport';\nimport { WebSocketTransportBuilder } from './WebSocketTransportV2';\nimport { Camera } from '../players/camera';\nimport { IStatefulSession, StatefulSession } from '../players/WebSocket/StatefulSession';\nimport { SupportedVideoFormats } from '../players/WebSocket/SupportedVideoFormats';\nimport { SessionCreationParameters } from '../players/WebSocket/SessionParameters';\nimport { WsSessionV2Builder } from '../players/WebSocket/WsSessionV2';\nimport { IStreamUsageSelectorBuilder } from '../players/StreamUsageSelector';\nimport { version } from '../gwp';\n\n/**\n * @public\n * Create a new media gateway service that will coordinate requests and event with a media gateway server.\n * The service may be used to control one or more {@link IWebPlayer} instances.\n * @param url - URL to the media gateway instance you want to use. Must be in the form `https:///`\n * @param tokenRetriever - Function to use to resolve a new access token for the specified camera.\n * @returns Promise to a new Media Gateway Service instance.\n */\nexport async function buildMediaGatewayService(url: string, tokenRetriever: TokenRetrieverFct): Promise {\n const transportBuilder = new WebSocketTransportBuilder(new Logger(0, 'MediaGatewayService'), url);\n return await MediaGatewayService.build(transportBuilder, new TokenRetriever(tokenRetriever));\n}\n\n/**\n * @beta\n * */\nexport async function buildMediaGatewayServiceWithTransport(url: string, tokenRetriever: TokenRetrieverFct, transportBuilder: ITransportBuilder, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder | null): Promise {\n return await MediaGatewayService.build(transportBuilder, new TokenRetriever(tokenRetriever), streamUsageSelectorBuilder);\n}\n\n/**\n * @public\n * Represent the connection to a Media Gateway server.\n * May be used to initialize one of more {@link IWebPlayer} instances.\n * */\nexport interface IMediaGatewayService {\n}\n\n/** @internal */\nexport class MediaGatewayService implements IMediaGatewayService {\n private readonly m_logger: ILogger;\n private readonly _tokenRetriever: TokenRetriever;\n private readonly _eventDispatcher: EventHubDispatcher;\n private readonly _transport: ITransport;\n private readonly m_streamUsageSelectorBuilder: IStreamUsageSelectorBuilder | null;\n\n public get eventHubProvider(): IEventHubProvider {\n return this._eventDispatcher;\n }\n\n private constructor(logger: ILogger, tokenRetriever: TokenRetriever, eventDispatcher: EventHubDispatcher, transport: ITransport, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder | null = null) {\n this.m_logger = logger.subLogger('MediaGatewayService');\n this._tokenRetriever = tokenRetriever;\n this._eventDispatcher = eventDispatcher;\n this._transport = transport;\n this.m_streamUsageSelectorBuilder = streamUsageSelectorBuilder;\n this.m_logger.info?.trace('New MediaGatewayService created');\n }\n\n public static async build(transportBuilder: ITransportBuilder, tokenRetriever: TokenRetriever, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder | null = null): Promise {\n const logger: ILogger = new Logger(0, 'MediaGatewayService');\n const eventHubDispatcher = new EventHubDispatcher(logger);\n\n const transport = await transportBuilder.build(eventHubDispatcher);\n\n return new MediaGatewayService(logger, tokenRetriever, eventHubDispatcher, transport, streamUsageSelectorBuilder);\n }\n\n /* For testing */\n public static fromTransport(url: string, tokenRetriever: TokenRetriever, transport: ITransport): MediaGatewayService {\n const logger: ILogger = new Logger(0, 'MediaGatewayService');\n const eventHubDispatcher = new EventHubDispatcher(logger);\n return new MediaGatewayService(logger, tokenRetriever, eventHubDispatcher, transport);\n }\n\n public async startStream(logger: ILogger, channel: number, camera: Camera, supportedFormats: SupportedVideoFormats, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder): Promise {\n const tokenRenewer = await this._tokenRetriever.acquireRenewer(logger, camera);\n const sessionParameters = new SessionCreationParameters(channel, camera, tokenRenewer, supportedFormats, this.getVersion());\n const sessionBuilder = new WsSessionV2Builder(logger, this._transport);\n const session = await StatefulSession.build(logger, sessionBuilder, sessionParameters, this.m_streamUsageSelectorBuilder ?? streamUsageSelectorBuilder);\n return session;\n }\n\n public async stop() {\n this._transport.stop();\n }\n\n private getVersion(): string {\n let gwpVersion = version();\n\n if (gwpVersion === '[VERSION]') {\n gwpVersion = '999.999.99999';\n }\n\n return gwpVersion;\n }\n}\n","/**\n * The GWP package provide a way to view and control video streams coming from the Security Center infrastructure.\n * It relies on a Media Gateway Role within a given Security Center system to provide access to streams.\n * Current version: [VERSION]\n *\n * @packageDocumentation\n * */\n\n// JDT - Removed\n/** Polyfills */\n// import 'core-js/features/object/values';\n// import 'core-js/features/array/from';\n// import 'core-js/features/array/includes';\n// import 'core-js/features/array-buffer';\n// import 'core-js/features/data-view';\n// import 'core-js/features/math/trunc';\n// import 'core-js/features/promise';\n// import 'core-js/features/url';\n// import 'fastestsmallesttextencoderdecoder';\n/** End Polyfills */\n\nimport { Logger } from './utils/logger';\nimport { buildPlayer } from './PublicWebPlayer';\nimport { buildMediaGatewayService, buildMediaGatewayServiceWithTransport } from './services/mediaGatewayService';\nimport { Config } from './utils/Config';\nimport { internalBuildDewarper } from './dewarper/InternalDewarperBuilder';\nimport { PlayersList } from './Players';\n// import & load global declarations\nimport 'RestClient/Helpers/iterable-extensions';\n\nexport { IWebPlayer, buildPlayer } from './PublicWebPlayer';\nexport { IMediaGatewayService, buildMediaGatewayService } from './services/mediaGatewayService';\nexport { IPtzControl } from './ptzControl';\nexport { IDigitalZoomControl } from './digitalZoomControl/DigitalZoomControl';\nexport { IDigitalZoomPreview } from './digitalZoomControl/preview/DigitalZoomPreview';\nexport { ITimelineProvider } from './timelineProvider';\nexport { ILiteEvent } from './utils/liteEvents';\nexport { TokenRetrieverFct } from './services/TokenRetriever';\nexport * from './events';\nexport * from './enums';\n\n/* beta */\nexport { buildMediaGatewayServiceWithTransport } from './services/mediaGatewayService';\nexport { IDewarperControl, IDewarperPreview } from './dewarper/DewarperInterfaces';\nexport { ITransport, ITransportBuilder } from './services/ITransport';\nexport { IEventDispatcher } from './services/eventHubDispatcher';\nexport { IWebSocketMessage, IWebSocketRequest, IWebSocketResponse } from './players/WebSocket/Api/IWebSocketMessage';\nexport { IConnectionEvent } from './players/WebSocket/WsSessionV2';\nexport { SegmentInfo, JpegInfo, ErrorDetails, SerializedPlayerState, StreamingStatus, TimelineContent, DateTimeSpan, SerializedTimelineEvent, SerializedPlaySpeed } from './services/eventHub';\nexport { CreateStreamRequest, CreateStreamRequestBody, StreamUsage } from './players/WebSocket/Api/CreateStream';\nexport { CreateStreamResponse, CreateStreamResponseBody, TranscodingAllowance } from './players/WebSocket/Api/CreateStreamResponse';\nexport { DeleteStreamRequest, DeleteStreamRequestBody } from './players/WebSocket/Api/DeleteStream';\nexport { ErrorResponse, ErrorResponseBody } from './players/WebSocket/Api/ErrorResponse';\nexport { PtzRequest, PtzSubCommand, PanTiltBody, ZoomBody, GoToBody, GoToPresetBody, GoHomeBody, RunPatternBody, LockBody, UnlockBody, FocusBody, PtzFocusDistance, PtzIrisOperation, IrisBody } from './players/WebSocket/Api/Ptz';\nexport { SuccessResponse, SuccessResponseBody } from './players/WebSocket/Api/SuccessResponse';\nexport { UpdateStreamRequest, UpdateStreamRequestBody, TimeLine } from './players/WebSocket/Api/UpdateStream';\nexport { UpdateStreamResponse, UpdateStreamResponseBody } from './players/WebSocket/Api/UpdateStreamResponse';\nexport { WebSocketMessageHeader } from './players/WebSocket/Api/WebSocketMessageHeader';\nexport { VideoWatermarkConfig } from './utils/VideoWatermarkingConfig';\nexport { Camera } from './players/camera';\nexport { Token } from './services/Token';\nexport { VideoFormat, SupportedVideoFormats } from './players/WebSocket/SupportedVideoFormats';\nexport { DefaultStreamUsage } from './players/WebSocket/DefaultStreamUsage';\nexport { Resolution } from './utils/Resolution';\nexport { PlaySpeed } from './players/PlaySpeed';\nexport { IStreamUsageSelectorBuilder, IStreamUsageSelector } from './players/StreamUsageSelector';\nexport { DewarperSourceImageParameters, Projection, CameraPosition } from './dewarper/DewarperSourceImageParameters';\nexport { Coords } from './utils/Coords';\n\n/**\n* Enable logging for the WebPlayer instances.\n* @param intense - Enable advanced logging. This is much more verbose than the default option.\n* @public */\nexport function enableLogs(intense?: boolean): string {\n Logger.enableLogs(intense);\n return intense === true ? 'Logs enabled (intense)' : 'Logs enabled';\n}\n\n/**\n* Disable logging for the WebPlayer instances. This does not disable the warning and above logs.\n* @public */\nexport function disableLogs(): string {\n Logger.disableLogs();\n return 'Logs disabled';\n}\n\n/**\n* Get the current version for GWP library, useful for troubleshooting\n* @public */\nexport function version(): string {\n // This string is replaced with Nuget version when built in Azure DevOps - DO NOT CHANGE\n // The result looks like '1.0.166'\n return '[VERSION]';\n}\n\n/**\n * Provide global configurations to the gwp players\n * @internal */\nexport const config: any = Config.instance;\n\n/**\n * Provide the list of the gwp players\n * @internal*/\nexport const players: any = PlayersList.Instance;\n\n/**\n * @internal*/\nexport const buildDewarper: any = internalBuildDewarper;\n\n// The following part is required for compatibility for some module formats\n/** Entry point of the GWP. Allows you to create new players.\n * @public */\nexport default class gwp {\n /**\n * Instanciate a new GWP instance in the provided div element.\n * @param container - Div Element into which the player will place itself\n * @returns instance used to control the new player\n * @public\n */\n readonly buildPlayer = buildPlayer;\n\n /**\n * @public\n * Create a new media gateway service that will coordinate requests and event with a media gateway server.\n * The service may be used to control one or more {@link IWebPlayer} instances.\n * @param url - URL to the media gateway instance you want to use. Must be in the form `https:///`\n * @param tokenRetriever - Function to use to resolve a new access token for the specified camera.\n * @returns Promise to a new Media Gateway Service instance.\n */\n readonly buildMediaGatewayService = buildMediaGatewayService;\n\n /**\n * @beta\n * */\n readonly buildMediaGatewayServiceWithTransport = buildMediaGatewayServiceWithTransport;\n\n /**\n * Enable logging for the WebPlayer instances.\n * @param intense - Enable advanced logging. This is much more verbose than the default option.\n * @public */\n readonly enableLogs = enableLogs;\n\n /**\n * Disable logging for the WebPlayer instances. This does not disable the warning and above logs.\n * @public */\n readonly disableLogs = disableLogs;\n\n /**\n * Get the current version for GWP library, useful for troubleshooting\n * @public */\n readonly version = version;\n\n /**\n * Provide global configurations to the gwp players\n * @internal*/\n readonly config = config;\n\n /**\n * Provides a list of the players\n * @internal*/\n readonly players = players;\n}\n","import { LiteEvent, ILiteEvent } from '../utils/liteEvents';\nimport { Resolution } from '../utils/Resolution';\n\nexport interface ITileSizeObserver {\n readonly tileResolution: Resolution;\n readonly tileResizeEvent: ILiteEvent;\n dispose(): void;\n}\n\nexport interface ITileSizeObserverBuilder {\n build(): ITileSizeObserver;\n}\n\nexport class TileSizeObserverBuilder implements ITileSizeObserverBuilder {\n private readonly m_htmlDivElement: HTMLDivElement;\n\n constructor(htmlDivElement: HTMLDivElement) {\n this.m_htmlDivElement = htmlDivElement;\n }\n\n public build(): ITileSizeObserver {\n return new TileSizeObserver(this.m_htmlDivElement);\n }\n}\n\nexport class TileSizeObserver implements ITileSizeObserver {\n private readonly m_observedDivElement: HTMLDivElement;\n\n private readonly m_divElementResizeObserver?: ResizeObserver;\n\n private readonly m_resizeEvent: LiteEvent;\n\n public get tileResolution(): Resolution {\n return Resolution.build(this.m_observedDivElement.clientWidth, this.m_observedDivElement.clientWidth);\n }\n\n public get tileResizeEvent(): ILiteEvent {\n return this.m_resizeEvent.expose();\n }\n\n public constructor(htmlDivElement: HTMLDivElement) {\n this.m_observedDivElement = htmlDivElement;\n this.m_resizeEvent = new LiteEvent();\n\n // This is best effort, if the ResizeObserver feature is not supported (IE11) we'll never detect resizes.\n if (TileSizeObserver.supportsResizeObserver()) {\n this.m_divElementResizeObserver = new ResizeObserver(this.onResize);\n this.m_divElementResizeObserver.observe(htmlDivElement);\n }\n }\n\n public static supportsResizeObserver(): boolean {\n return window.ResizeObserver !== undefined;\n }\n\n public dispose(): void {\n this.m_divElementResizeObserver?.unobserve(this.m_observedDivElement);\n this.m_resizeEvent.dispose();\n }\n\n private readonly onResize = () => {\n if (this.m_observedDivElement.clientWidth !== 0 && this.m_observedDivElement.clientWidth !== 0) {\n const newResolution = Resolution.build(this.m_observedDivElement.clientWidth, this.m_observedDivElement.clientHeight);\n this.m_resizeEvent.boundTrigger(newResolution);\n }\n }\n}\n","import { ITileSizeObserverBuilder, TileSizeObserverBuilder } from './TileSizeProvider';\n\n// zIndex:\n// -- Main image --\n// 1: Dewarping canvas / Mjpeg-Vwo\n// 2: Dewarping Vwo overlay\n// -- Preview --\n// 10: Digital Zoom preview / Dewarping preview\n// 11: Dewarping area (rez zone)\n// -- Debug --\n// 100: Debug overlay\n\nexport class HtmlElements {\n private static m_areEventListenersRegistered: boolean = false;\n\n private static m_lastMouseDownTarget: EventTarget | null = null;\n\n private readonly GwpPlayerClassName: string = 'hasGwpPlayer';\n\n private m_divContainer?: HTMLDivElement;\n private m_canvasElement?: HTMLCanvasElement; //jpeg player rendering, video watermark overlay\n private m_debugOverlayCanvas?: HTMLCanvasElement; //ctrl+shift+A\n private m_videoElement?: HTMLVideoElement;\n private m_audioElement?: HTMLAudioElement;\n private m_digitalZoomPreviewDivContainer?: HTMLDivElement;\n private m_digitalZoomPreviewCanvas?: HTMLCanvasElement;\n\n private m_dewarpingCanvas?: HTMLCanvasElement; //Dewarping drawing area\n private m_dewarpingVwoCanvas?: HTMLCanvasElement; //Used to put Vwo overlay over the dewarper. Cannot use the m_canvasElement because it could be the source image of the dewarping\n private m_dewarpingPreviewDivContainer?: HTMLDivElement; //Div containing the preview and the dewarpedArea canvas\n private m_dewarpingPreviewCanvas?: HTMLCanvasElement; //Original warped image for preview\n private m_dewarpedAreaCanvas?: HTMLCanvasElement; //Dewarped area (red zone)\n\n public get DivContainer(): HTMLDivElement {\n if (this.m_divContainer === undefined) {\n throw new Error('object disposed');\n }\n\n return this.m_divContainer;\n }\n\n public get CanvasElement(): HTMLCanvasElement {\n if (this.m_canvasElement === undefined) {\n throw new Error('object disposed');\n }\n\n return this.m_canvasElement;\n }\n\n public get DebugOverlayCanvas(): HTMLCanvasElement {\n if (this.m_debugOverlayCanvas === undefined) {\n throw new Error('object disposed');\n }\n\n return this.m_debugOverlayCanvas;\n }\n\n public get VideoElement(): HTMLVideoElement {\n if (this.m_videoElement === undefined) {\n throw new Error('object disposed');\n }\n\n return this.m_videoElement;\n }\n\n public get AudioElement(): HTMLAudioElement {\n if (this.m_audioElement === undefined) {\n throw new Error('object disposed');\n }\n\n return this.m_audioElement;\n }\n\n public get DewarpingCanvas(): HTMLCanvasElement {\n if (this.m_dewarpingCanvas === undefined) {\n throw new Error('object disposed');\n }\n return this.m_dewarpingCanvas;\n }\n\n public get DewarpingVwoCanvas(): HTMLCanvasElement {\n if (this.m_dewarpingVwoCanvas === undefined) {\n throw new Error('object disposed');\n }\n return this.m_dewarpingVwoCanvas;\n }\n\n public get DewarpingPreviewDiv(): HTMLDivElement {\n if (this.m_dewarpingPreviewDivContainer === undefined) {\n throw new Error('object disposed');\n }\n return this.m_dewarpingPreviewDivContainer;\n }\n\n public get DewarpingPreviewCanvas(): HTMLCanvasElement {\n if (this.m_dewarpingPreviewCanvas === undefined) {\n throw new Error('object disposed');\n }\n return this.m_dewarpingPreviewCanvas;\n }\n\n public get DewarpedAreaCanvas(): HTMLCanvasElement {\n if (this.m_dewarpedAreaCanvas === undefined) {\n throw new Error('object disposed');\n }\n return this.m_dewarpedAreaCanvas;\n }\n\n public get DigitalZoomPreviewCanvas(): HTMLCanvasElement {\n if (this.m_digitalZoomPreviewCanvas === undefined) {\n throw new Error('object disposed');\n }\n return this.m_digitalZoomPreviewCanvas;\n }\n\n public get IsFocusOnVideo(): boolean {\n // When the video element is hidden (such as when digital zooming), the div container is the mouse down target\n return HtmlElements.m_lastMouseDownTarget === this.VideoElement ||\n HtmlElements.m_lastMouseDownTarget === this.DivContainer ||\n HtmlElements.m_lastMouseDownTarget === this.DewarpingCanvas ||\n HtmlElements.m_lastMouseDownTarget === this.DewarpingVwoCanvas;\n }\n\n public getTileSizeObserverBuilder(): ITileSizeObserverBuilder {\n if (this.m_divContainer === undefined) {\n throw new Error('object disposed');\n }\n\n return new TileSizeObserverBuilder(this.m_divContainer);\n }\n\n constructor(divContainer: HTMLDivElement) {\n // Check if there is already a marmot created in this canvas\n if (divContainer.classList.contains(this.GwpPlayerClassName)) {\n throw new Error('This HTMLDivElement already contains a player');\n }\n\n this.m_divContainer = divContainer;\n this.m_canvasElement = document.createElement('canvas');\n this.m_canvasElement.id = 'mjpeg-vwo';\n divContainer.appendChild(this.m_canvasElement);\n\n this.m_debugOverlayCanvas = document.createElement('canvas');\n this.m_debugOverlayCanvas.id = 'debug-overlay';\n divContainer.appendChild(this.m_debugOverlayCanvas);\n\n this.m_videoElement = document.createElement('video');\n // Chrome's autoplay policies can prevent the video from playing after refreshing the page. Autoplay/Muted ensures the video always plays.\n // For more info: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\n this.m_videoElement.autoplay = true;\n this.m_videoElement.muted = true;\n // Only available in the latest Typescript version so using any to bypass it\n (this.m_videoElement as any).disablePictureInPicture = true;\n divContainer.appendChild(this.m_videoElement);\n\n this.m_audioElement = document.createElement('audio');\n divContainer.appendChild(this.m_audioElement);\n\n this.m_dewarpingCanvas = document.createElement('canvas');\n this.m_dewarpingCanvas.id = 'dewarping';\n divContainer.appendChild(this.m_dewarpingCanvas);\n\n this.m_dewarpingVwoCanvas = document.createElement('canvas');\n this.m_dewarpingVwoCanvas.id = 'dewarping vwo';\n divContainer.appendChild(this.m_dewarpingVwoCanvas);\n\n this.m_dewarpingPreviewDivContainer = document.createElement('div');\n this.m_dewarpingPreviewDivContainer.id = 'preview-div';\n divContainer.appendChild(this.m_dewarpingPreviewDivContainer);\n\n this.m_dewarpingPreviewCanvas = document.createElement('canvas');\n this.m_dewarpingPreviewCanvas.id = 'dewarping-preview';\n this.m_dewarpingPreviewDivContainer.appendChild(this.m_dewarpingPreviewCanvas);\n\n this.m_dewarpedAreaCanvas = document.createElement('canvas');\n this.m_dewarpedAreaCanvas.id = 'dewarped-area';\n this.m_dewarpingPreviewDivContainer.appendChild(this.m_dewarpedAreaCanvas);\n\n this.m_digitalZoomPreviewDivContainer = document.createElement('div');\n divContainer.appendChild(this.m_digitalZoomPreviewDivContainer);\n this.m_digitalZoomPreviewCanvas = document.createElement('canvas');\n this.m_digitalZoomPreviewDivContainer.appendChild(this.m_digitalZoomPreviewCanvas);\n this.setMarmotStyle(divContainer, this.m_canvasElement, this.m_debugOverlayCanvas, this.m_videoElement, this.m_audioElement);\n this.setDewarperStyles(this.m_dewarpingPreviewDivContainer, this.m_dewarpingCanvas, this.m_dewarpingVwoCanvas, this.m_dewarpingPreviewCanvas, this.m_dewarpedAreaCanvas);\n\n this.setDigitalZoomStyle(this.m_digitalZoomPreviewDivContainer, this.m_digitalZoomPreviewCanvas);\n divContainer.classList.add(this.GwpPlayerClassName);\n\n this.disableVideoRightClick();\n this.registerEventListeners();\n }\n\n public dispose(): void {\n // We set the element to \"undefined\" to avoid leaking them (if the lib user kept reference to our MarmotPlayer objects)\n if (this.m_divContainer !== undefined && this.CanvasElement !== undefined && this.DebugOverlayCanvas !== undefined && this.m_videoElement !== undefined && this.m_audioElement !== undefined &&\n this.m_dewarpingCanvas !== undefined && this.m_dewarpingVwoCanvas !== undefined && this.m_dewarpingPreviewDivContainer !== undefined && this.m_dewarpingPreviewCanvas !== undefined && this.m_dewarpedAreaCanvas !== undefined && this.m_digitalZoomPreviewCanvas !== undefined && this.m_digitalZoomPreviewDivContainer !== undefined) {\n this.VideoElement.removeEventListener('contextmenu', this.onContextMenu, true);\n\n this.m_divContainer.removeChild(this.CanvasElement);\n this.m_divContainer.removeChild(this.DebugOverlayCanvas);\n this.m_divContainer.removeChild(this.m_videoElement);\n this.m_divContainer.removeChild(this.m_audioElement);\n this.m_divContainer.removeChild(this.DewarpingCanvas);\n this.m_divContainer.removeChild(this.DewarpingVwoCanvas);\n\n this.m_dewarpingPreviewDivContainer.removeChild(this.m_dewarpingPreviewCanvas);\n this.m_dewarpingPreviewDivContainer.removeChild(this.m_dewarpedAreaCanvas);\n this.m_divContainer.removeChild(this.m_dewarpingPreviewDivContainer);\n\n\n this.m_digitalZoomPreviewDivContainer.removeChild(this.m_digitalZoomPreviewCanvas);\n this.m_divContainer.removeChild(this.m_digitalZoomPreviewDivContainer);\n this.m_divContainer.classList.remove(this.GwpPlayerClassName);\n\n this.m_divContainer = undefined;\n this.m_canvasElement = undefined;\n this.m_debugOverlayCanvas = undefined;\n this.m_videoElement = undefined;\n this.m_audioElement = undefined;\n\n this.m_dewarpingCanvas = undefined;\n this.m_dewarpingVwoCanvas = undefined;\n this.m_dewarpingPreviewDivContainer = undefined;\n this.m_dewarpingPreviewCanvas = undefined;\n this.m_dewarpedAreaCanvas = undefined;\n this.m_digitalZoomPreviewCanvas = undefined;\n this.m_digitalZoomPreviewDivContainer = undefined;\n }\n }\n\n /*\n* Marmot HTML elements need custom style to behave properly.\n* Inject it here so the user won't need to do it\n*/\n private setMarmotStyle(divContainer: HTMLDivElement, canvas: HTMLCanvasElement, debugCanvas: HTMLCanvasElement, video: HTMLVideoElement, audio: HTMLAudioElement): void {\n // The div container\n divContainer.style.height = '100%';\n divContainer.style.position = 'relative';\n divContainer.style.backgroundColor = '#000000';\n divContainer.style.display = 'block';\n divContainer.style.flexDirection = 'column';\n divContainer.style.webkitUserSelect = 'none';\n divContainer.style.userSelect = 'none';\n divContainer.style.overflow = 'hidden';\n\n // The video element\n video.style.width = '100%';\n video.style.height = '100%';\n video.style.objectFit = 'contain';\n\n // The audio element\n audio.style.display = 'none';\n\n // The mjpeg/vwo canvas elements\n this.setCanvasStyle(canvas);\n canvas.style.zIndex = '1';\n\n // The debug overlay\n this.setCanvasStyle(debugCanvas);\n debugCanvas.style.zIndex = '100';\n }\n\n private setDigitalZoomStyle(divElement: HTMLDivElement, canvas: HTMLCanvasElement) {\n // div for preview area\n divElement.style.top = '0';\n divElement.style.bottom = '0';\n divElement.style.right = '0';\n divElement.style.left = '0';\n divElement.style.position = 'absolute';\n divElement.style.width = '20%';\n divElement.style.height = '20%';\n\n // The digital zoom preview\n canvas.style.top = '0';\n canvas.style.bottom = '0';\n canvas.style.right = '0';\n canvas.style.left = '0';\n canvas.style.pointerEvents = 'auto';\n canvas.style.position = 'absolute';\n canvas.style.zIndex = '10';\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n canvas.style.objectFit = 'contain';\n canvas.style.objectPosition = 'top left';\n canvas.style.display = 'none';\n }\n\n setCanvasStyle(canvas: HTMLCanvasElement) {\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n canvas.style.top = '0';\n canvas.style.bottom = '0';\n canvas.style.right = '0';\n canvas.style.left = '0';\n canvas.style.margin = 'auto';\n canvas.style.pointerEvents = 'none';\n canvas.style.position = 'absolute';\n }\n\n private setDewarperStyles(dewarpingPreviewDivContainer: HTMLDivElement, dewarping: HTMLCanvasElement, dewarpingVwo: HTMLCanvasElement, dewarpingPreview: HTMLCanvasElement, dewarpedArea: HTMLCanvasElement): void {\n // The dewarping\n this.setCanvasStyle(dewarping);\n dewarping.style.pointerEvents = 'auto'; //zoom listening\n dewarping.style.zIndex = '1';\n\n this.setCanvasStyle(dewarpingVwo);\n dewarpingVwo.style.pointerEvents = 'none'; //makes the click passthrough\n dewarpingVwo.style.zIndex = '2';\n\n\n // div for preview/dewarped area\n dewarpingPreviewDivContainer.style.top = '0';\n dewarpingPreviewDivContainer.style.bottom = '0';\n dewarpingPreviewDivContainer.style.right = '0';\n dewarpingPreviewDivContainer.style.left = '0';\n dewarpingPreviewDivContainer.style.position = 'absolute';\n dewarpingPreviewDivContainer.style.width = '20%';\n dewarpingPreviewDivContainer.style.height = '20%';\n\n // The dewarping preview\n dewarpingPreview.style.top = '0';\n dewarpingPreview.style.bottom = '0';\n dewarpingPreview.style.right = '0';\n dewarpingPreview.style.left = '0';\n dewarpingPreview.style.pointerEvents = 'auto';\n dewarpingPreview.style.position = 'absolute';\n dewarpingPreview.style.zIndex = '10';\n dewarpingPreview.style.width = '100%';\n dewarpingPreview.style.height = '100%';\n dewarpingPreview.style.objectFit = 'contain';\n dewarpingPreview.style.objectPosition = 'top left';\n\n // The dewarped area\n dewarpedArea.style.top = '0';\n dewarpedArea.style.bottom = '0';\n dewarpedArea.style.right = '0';\n dewarpedArea.style.left = '0';\n dewarpedArea.style.pointerEvents = 'none'; //makes the click event pass through and reach the preview canvas\n dewarpedArea.style.position = 'absolute';\n dewarpedArea.style.zIndex = '11';\n dewarpedArea.style.width = '100%';\n dewarpedArea.style.height = '100%';\n dewarpedArea.style.objectFit = 'contain';\n dewarpedArea.style.objectPosition = 'top left';\n dewarpedArea.style.color = 'rgba(90, 0, 0, 0.35)';\n dewarpedArea.style.borderColor = 'rgba(255, 0, 0, 1)';\n }\n\n private disableVideoRightClick() {\n this.VideoElement.addEventListener('contextmenu', this.onContextMenu, true);\n this.DewarpingPreviewCanvas.addEventListener('contextmenu', this.onContextMenu, true);\n }\n\n private registerEventListeners() {\n if (HtmlElements.m_areEventListenersRegistered) {\n return;\n }\n\n // TODO: unregister\n document.addEventListener('mousedown',\n function(event) {\n HtmlElements.m_lastMouseDownTarget = event.target; // We keep track of the last clicked element in the page\n }, false);\n\n HtmlElements.m_areEventListenersRegistered = true;\n }\n\n private readonly onContextMenu = (e: MouseEvent): void => {\n e.preventDefault();\n }\n}\n","import { ErrorCode, StreamingConnectionStatus, PlayerState, TimelineEventKind, PlayerMode } from './enums';\n\n/** Notification of a processing error within the player.\n * @public */\nexport class ErrorStatusEvent {\n /** Error code for the \"Error\" player state */\n public readonly errorCode: ErrorCode;\n /** Textual description of the error - not localized */\n public readonly value: string;\n /** Specifies whether the error is severe enough to stop the player */\n public get isFatal(): boolean {\n return this.errorCode === ErrorCode.UpdateSessionError;\n }\n /** @internal */\n constructor(errorCode: ErrorCode, details: string) {\n this.errorCode = errorCode;\n this.value = details;\n }\n}\n\n/**\n * Notification that the connection status of the player has changed.\n * Refer to the {@link StreamingConnectionStatus} enum for a description of the statuses.\n * @public */\nexport class StreamingConnectionStatusChangeEvent {\n /** New streaming connection status the player changed to */\n public readonly state: StreamingConnectionStatus;\n /** Textual description of the streaming connection status - not localized */\n public readonly value: string;\n /** @internal */\n constructor(streamStatus: StreamingConnectionStatus, details: string) {\n this.state = streamStatus;\n this.value = details;\n }\n}\n\n/**\n * Notification that the player state has changed.\n * Refer to the {@link PlayerState} enum for a description of the different states.\n * @public */\nexport class PlayerStateChangeEvent {\n /** New state the player changed to */\n public readonly playerState: PlayerState;\n /** Textual description of the player state - not localized */\n public readonly value: string;\n /** @internal */\n constructor(playerState: PlayerState, details: string) {\n this.playerState = playerState;\n this.value = details;\n }\n}\n\n/**\n * Notification that the play speed of the player has changed.\n * This might happen when the player processes a play speed command, or when the player update its play speed on its own.\n * @public */\nexport class PlaySpeedChangeEvent {\n /** New current playspeed */\n public readonly playSpeed: number;\n /** @internal */\n constructor(speed: number) {\n this.playSpeed = speed;\n }\n}\n\n/** Notification that a command to enable or disable the audio was processed.\n * @public */\nexport class AudioStateChangeEvent {\n /** If true, the player will request and play audio (if available) */\n public readonly isAudioEnabled: boolean;\n /** @internal */\n constructor(isAudioEnabled: boolean) {\n this.isAudioEnabled = isAudioEnabled;\n }\n}\n\n/** Notification that the audio availability has changed. The audio might have become unavailable, such as a camera with no microphone in live.\n * @public */\nexport class AudioAvailabilityChangeEvent {\n /** If true, the camera supports audio streaming */\n public readonly isAudioAvailable: boolean;\n /** @internal */\n constructor(isAudioAvailable: boolean) {\n this.isAudioAvailable = isAudioAvailable;\n }\n}\n\n/** Notification that the player transitionned from live to playback, or vice versa.\n * @public */\nexport class PlayerModeChangeEvent {\n /** The new player mode (live or playback) */\n public readonly playerMode: PlayerMode;\n /** @internal */\n constructor(playerMode: PlayerMode) {\n this.playerMode = playerMode;\n }\n}\n\n/** Notification of an update to the timeline coverage. This will contain a coverage range and all events included in that range.\n * Coverage range can be smaller than \"range of interest\". Anything outised the coverage range should be considered untouched.\n * @public */\nexport class TimelineContentEvent {\n /** Start time for the coverage of this timeline update */\n public readonly coverageStart: Date;\n /** End time for the coverage of this timeline update */\n public readonly coverageEnd: Date;\n /** Array of timeline events impacting the current coverage range */\n public readonly events: TimelineEvent[];\n /** @internal */\n constructor(coverageStart: Date, coverageEnd: Date, events: TimelineEvent[]) {\n this.coverageStart = coverageStart;\n this.coverageEnd = coverageEnd;\n this.events = events;\n }\n}\n\n/** A single timeline event.\n * @public */\nexport class TimelineEvent {\n /** Time at which the event occured or stated, if a duration is specified */\n public readonly time: Date;\n /** Duration of the event in seconds. If the duration is not specified, the event represent only a point in time. */\n public readonly duration: number | undefined;\n /** User provided details for this event. Optional, when it is present it is meant to help distinguish the event. */\n public readonly details: string | undefined;\n /** The type of event */\n public readonly kind: TimelineEventKind;\n /** @internal */\n constructor(time: Date, kind: TimelineEventKind, duration?: number, details?: string) {\n this.time = time;\n this.kind = kind;\n this.duration = duration;\n this.details = details;\n }\n}\n","import { ILogger } from '../utils/logger';\nimport { HtmlElements } from './htmlElements';\nimport { EventManager } from '../eventManager';\nimport { ISessionStateView } from './WebSocket/SessionState';\nimport { PlayerStateChangeEvent, StreamingConnectionStatusChangeEvent, ErrorStatusEvent } from '../events';\nimport { PlayerState, StreamingConnectionStatus, PlayerMode } from '../enums';\nimport { DigitalZoomControl } from '../digitalZoomControl/DigitalZoomControl';\n\nexport class DebugOverlay {\n private static m_debounceCtrlShiftA = false;\n\n private static m_areEventListenersRegistered: boolean = false;\n\n private readonly m_logger: ILogger;\n\n private readonly m_playerId: number;\n\n private readonly m_htmlElements: HtmlElements;\n\n private readonly m_digitalZoomControl: DigitalZoomControl;\n\n private readonly m_eventManager: EventManager;\n\n private readonly m_keyDownBinding: (event: KeyboardEvent) => void;\n\n private m_sessionStateView: ISessionStateView | undefined;\n\n private m_errorDetails: ErrorStatusEvent | undefined;\n\n private m_minWidthOverlay = 0;\n\n private m_playerState: PlayerStateChangeEvent = new PlayerStateChangeEvent(PlayerState.Starting, '');\n\n private m_streamingConnectionStatus: StreamingConnectionStatusChangeEvent = new StreamingConnectionStatusChangeEvent(StreamingConnectionStatus.Initializing, '');\n\n private isVisible = false;\n\n public set sessionStateView(sessionStateView: ISessionStateView) {\n this.m_sessionStateView = sessionStateView;\n }\n\n constructor(logger: ILogger, playerId: number, htmlElements: HtmlElements, digitalZoomControl: DigitalZoomControl, eventManager: EventManager) {\n this.m_logger = logger.subLogger('DebugOverlay');\n this.m_playerId = playerId;\n this.m_htmlElements = htmlElements;\n this.m_digitalZoomControl = digitalZoomControl;\n this.m_eventManager = eventManager;\n this.registerEventListeners();\n this.m_eventManager.frameRendered.register(this.render);\n this.m_eventManager.playerStateChanged.register(this.onPlayerStateChanged);\n this.m_eventManager.streamStatusChanged.register(this.onStreamingConnectionStatusChanged);\n this.m_eventManager.errorStateRaised.register(this.onError);\n this.m_keyDownBinding = this.onKeyDown.bind(this);\n document.addEventListener('keydown', this.m_keyDownBinding, false);\n }\n\n public dispose() {\n this.m_eventManager.frameRendered.unregister(this.render);\n this.m_eventManager.playerStateChanged.unregister(this.onPlayerStateChanged);\n this.m_eventManager.streamStatusChanged.unregister(this.onStreamingConnectionStatusChanged);\n document.removeEventListener('keydown', this.m_keyDownBinding, false);\n this.m_logger.debug?.trace('disposed');\n }\n\n public reset() {\n this.m_sessionStateView = undefined;\n this.m_playerState = new PlayerStateChangeEvent(PlayerState.Starting, '');\n this.m_streamingConnectionStatus = new StreamingConnectionStatusChangeEvent(StreamingConnectionStatus.Initializing, '');\n }\n\n public toggleShown(show: boolean) {\n this.isVisible = show;\n this.m_minWidthOverlay = 0;\n this.render();\n }\n\n private registerEventListeners() {\n // This event is registered only once for the whole application, no need to unregister\n if (DebugOverlay.m_areEventListenersRegistered) return;\n DebugOverlay.m_areEventListenersRegistered = true;\n\n document.addEventListener('keyup', (event) => {\n // Wait for the 'A' key to be released before allowing another overlay toggle\n if (event.key === 'A' || event.key === 'a') {\n DebugOverlay.m_debounceCtrlShiftA = false;\n }\n }, false);\n }\n\n private onKeyDown(event: KeyboardEvent) {\n // If our video element was the last clicked element and the Ctrl+Shift+A key combo is done, show/hide the debug overlay\n if (!DebugOverlay.m_debounceCtrlShiftA &&\n this.m_htmlElements.IsFocusOnVideo &&\n event.ctrlKey && (event.shiftKey || event.altKey) && (event.key === 'A' || event.key === 'a')) {\n this.isVisible = !this.isVisible;\n this.m_minWidthOverlay = 0;\n this.render(); // Force update to the canvas right now\n DebugOverlay.m_debounceCtrlShiftA = true; // Prevent multiple toggles if the user keeps the keys pressed\n }\n }\n\n private readonly onPlayerStateChanged = (playerState: PlayerStateChangeEvent) => {\n this.m_playerState = playerState;\n }\n\n private readonly onStreamingConnectionStatusChanged = (streamingConnectionStatus: StreamingConnectionStatusChangeEvent) => {\n this.m_streamingConnectionStatus = streamingConnectionStatus;\n }\n\n private readonly onError = (errorDetails: ErrorStatusEvent) => {\n this.m_errorDetails = errorDetails;\n }\n\n private readonly render = () => {\n const canvas = this.m_htmlElements.DebugOverlayCanvas;\n\n // Resize the canvas' buffer if we need to\n if (canvas.scrollWidth !== canvas.width || canvas.scrollHeight !== canvas.height) {\n canvas.width = canvas.scrollWidth;\n canvas.height = canvas.scrollHeight;\n }\n\n // Clear canvas\n const ctx = canvas.getContext('2d');\n ctx!.clearRect(0, 0, canvas.width, canvas.height);\n\n // Draw the overlay\n if (ctx === null || !this.isVisible) return;\n\n // Select data we would like to print, in the right order\n const interestingData = this.collectInterestingData();\n\n // Note: The canvas draw surface size is always resized to match the canvas actual display size\n const fontHeight = 11;\n ctx.font = fontHeight + 'px Roboto, sans-serif';\n ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';\n\n // Compute the required width and height to display every property\n let minWidthLeft = 0;\n let minWidthRight = 0;\n let minHeight = 0;\n let i;\n const numberOfProps = interestingData.length;\n for (i = 0; i < numberOfProps; i++) {\n interestingData[i][0] = interestingData[i][0] + ': ';\n const propNameSize = ctx.measureText(interestingData[i][0]);\n const propValueSize = ctx.measureText(interestingData[i][1]);\n if (propNameSize.width > minWidthLeft) {\n minWidthLeft = propNameSize.width;\n }\n if (propValueSize.width > minWidthRight) {\n minWidthRight = propValueSize.width;\n }\n minHeight += fontHeight + 5; // 5 px of padding between each line\n }\n\n // Center the overlay and draw, if it's too big we let it overflow down or right\n let minWidth = (minWidthRight < minWidthLeft ? minWidthLeft : minWidthRight) * 2;\n if (this.m_minWidthOverlay > minWidth) {\n minWidth = this.m_minWidthOverlay;\n } else {\n this.m_minWidthOverlay = minWidth;\n }\n let x = (canvas.width - (minWidth + 20)) / 2;\n if (x < 0) x = 0;\n let y = (canvas.height - (minHeight + 20)) / 2;\n if (y < 0) y = 0;\n this.roundRect(ctx, x, y, minWidth + 20, minHeight + 20, 12);\n\n /* JDT - Removed\n const hideText = '(hide with Ctrl+Alt+A)';\n const tempFont = ctx.font;\n ctx.font = (fontHeight - 2) + 'px Roboto, sans-serif';\n ctx.fillStyle = 'gold';\n ctx.fillText(hideText, x + 3, y + 10);\n\n //Restore font\n ctx.font = tempFont;\n */\n\n // Now print the text!\n const middlex = x + ((minWidth + 20) / 2);\n y += 10;\n for (i = 0; i < numberOfProps; i++) {\n y += fontHeight; // The text is drawn OVER the given position\n const propNameWidth = ctx.measureText(interestingData[i][0]).width;\n ctx.fillStyle = 'gold';\n ctx.fillText(interestingData[i][0], middlex - propNameWidth, y);\n ctx.fillStyle = 'yellow';\n ctx.fillText(interestingData[i][1], middlex, y);\n\n //After the first line draw a line. As to separate the 'title' from the rest\n if (i === 0) {\n y += 5;\n ctx.strokeStyle = 'gold';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(x + 10, y + 1);\n ctx.lineTo(x + 10 + minWidth, y + 1);\n ctx.closePath();\n ctx.stroke();\n }\n y += 5; // 5 px of padding between each line\n }\n }\n\n private collectInterestingData(): string[][] {\n const interestingData = [];\n\n if (this.m_sessionStateView === undefined) {\n interestingData.push(['Player state', 'Not started']);\n // JDT - Removed - interestingData.push(['Version', version()]);\n return interestingData;\n }\n\n interestingData.push(['Tile ID', 'GWP #' + this.m_playerId]);\n // JDT - Removed - interestingData.push(['Version', version()]);\n if (this.m_errorDetails !== undefined) {\n interestingData.push(['Last error', this.m_errorDetails.errorCode + ' (' + this.m_errorDetails.value + ')']);\n }\n\n\n interestingData.push(['Codec', this.m_eventManager.codec]);\n if (this.m_eventManager.codec === 'H264') {\n interestingData.push(['Resolution', this.m_htmlElements.VideoElement.videoWidth + ' x ' + this.m_htmlElements.VideoElement.videoHeight]);\n } else if (this.m_eventManager.codec.toUpperCase() === 'MJPEG') {\n interestingData.push(['Resolution', this.m_eventManager.lastJpegResolution.toString()]);\n }\n\n let playerMode: string = this.m_sessionStateView.playerMode !== undefined ? this.m_sessionStateView.playerMode.toString() : 'none';\n playerMode = `${playerMode}${this.m_sessionStateView.isPaused ? ' (paused)' : ''}${this.m_sessionStateView.isPtzMode ? ' (PTZ Mode)' : ''}`;\n interestingData.push(['Player mode', playerMode]);\n interestingData.push(['Player state', PlayerState[this.m_playerState.playerState] + ' (' + this.m_playerState.value + ')']);\n interestingData.push(['Streaming state', StreamingConnectionStatus[this.m_streamingConnectionStatus.state] + ' (' + this.m_streamingConnectionStatus.value + ')']);\n\n if (this.m_sessionStateView.playerMode === PlayerMode.live) {\n if (this.m_eventManager.networkLatency !== null) {\n interestingData.push(['Network Latency (s)', '' + this.m_eventManager.networkLatency]);\n }\n if (this.m_eventManager.globalLatency !== null && this.m_eventManager.codec !== 'MJPEG') {\n interestingData.push(['Global Latency (s)', '' + this.m_eventManager.globalLatency]);\n }\n }\n interestingData.push(['Speed', this.m_sessionStateView.playSpeed.toString()]);\n\n if (this.m_eventManager.lastFrameReceived.frameTime.getTime() !== 0) {\n interestingData.push(['Last frame received', this.m_eventManager.lastFrameReceived.toString()]);\n }\n\n if (this.m_eventManager.lastFrameRendered.frameTime.getTime() !== 0) {\n interestingData.push(['Last frame rendered', this.m_eventManager.lastFrameRendered.toString()]);\n }\n if (this.m_eventManager.codec === 'H264') {\n interestingData.push(['Media time', '' + Math.round(this.m_htmlElements.VideoElement.currentTime * 1000)]);\n }\n\n const bitRate = this.m_eventManager.bitRate;\n interestingData.push(['Bitrate', bitRate.toString()]);\n\n const frameRate = this.m_eventManager.frameRate;\n interestingData.push(['Framerate', frameRate.frameRateToString()]);\n\n const audioBitRate = this.m_eventManager.audioBitRate;\n interestingData.push(['Audio Bitrate', audioBitRate.toString()]);\n\n if (this.m_eventManager.codec === 'H264') {\n interestingData.push(['Key frame interval', frameRate.keyFrameRateToString()]);\n }\n\n if (this.m_digitalZoomControl.Zoom > 1) {\n interestingData.push(['Zoom Level', '' + this.m_digitalZoomControl.Zoom + 'x']);\n }\n\n //todo for dewarping:\n //Dewarping available\n //Dewarping enabled\n //Dewarping frame rate\n //Dewarping Parameters: -> debug command\n\n return interestingData;\n }\n\n /**\n * Draws a rounded rectangle using the current state of the canvas.\n * If you omit the last two params, it will draw a filled rectangle with no outlines\n * @param ctx - Rendering Context\n * @param x - The top left x coordinate\n * @param y - The top left y coordinate\n * @param width - The width of the rectangle\n * @param height - The height of the rectangle\n * @param radius - The corner radius;\n */\n private roundRect(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number) {\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n }\n}\n","export interface IBitRateProvider {\n getBitRate(): BitRate;\n}\n\nexport class BitRateComputer implements IBitRateProvider {\n private static readonly SamplesTimeDelta = 150;\n private static readonly MaxSamplesCount = 32;\n private static readonly MASK_SAMPLE_IDX = 0x1F;\n private static readonly TotalTimeSpanInBuffer = BitRateComputer.SamplesTimeDelta * BitRateComputer.MaxSamplesCount;\n\n private readonly m_ringBuffer = Array(BitRateComputer.MaxSamplesCount);\n\n private m_lastIdx: number = 0;\n\n public getBitRate(): BitRate {\n return this.compute();\n }\n\n public addBytes(byteCount: number) {\n const now = new Date();\n const num = Math.trunc(now.getTime() / BitRateComputer.SamplesTimeDelta);\n if (this.m_lastIdx === num) {\n this.m_ringBuffer[num & BitRateComputer.MASK_SAMPLE_IDX] += byteCount;\n } else if (num - this.m_lastIdx >= BitRateComputer.MaxSamplesCount) {\n this.resetBuffer();\n this.m_ringBuffer[num & BitRateComputer.MASK_SAMPLE_IDX] = byteCount;\n } else {\n for (let index = this.m_lastIdx + 1; index < num; ++index) {\n this.m_ringBuffer[index & BitRateComputer.MASK_SAMPLE_IDX] = 0;\n }\n this.m_ringBuffer[num & BitRateComputer.MASK_SAMPLE_IDX] = byteCount;\n }\n\n this.m_lastIdx = num;\n }\n\n public compute(): BitRate {\n const now = new Date();\n\n const idx = Math.trunc(now.getTime() / BitRateComputer.SamplesTimeDelta);\n if (idx === this.m_lastIdx) {\n // Use all the bytes\n } else if (idx - this.m_lastIdx >= BitRateComputer.MaxSamplesCount) {\n // We went full circle around the buffer\n this.resetBuffer();\n } else {\n // We must clear the timeranges in-between (for which we did not receive any bytes)\n for (let i = this.m_lastIdx + 1; i <= idx; ++i) {\n this.m_ringBuffer[i & BitRateComputer.MASK_SAMPLE_IDX] = 0;\n }\n }\n this.m_lastIdx = idx;\n\n // Actually compute the bitrate\n let sum = 0;\n for (let index = 0; index < BitRateComputer.MaxSamplesCount; ++index) {\n sum += this.m_ringBuffer[index];\n }\n\n return new BitRate(sum, BitRateComputer.TotalTimeSpanInBuffer);\n }\n\n private resetBuffer() {\n for (let index = 0; index < BitRateComputer.MaxSamplesCount; ++index) {\n this.m_ringBuffer[index] = 0;\n }\n }\n}\n\nexport class BitRate {\n private static readonly BitsPerByte = 8;\n\n private readonly m_bitCount: number;\n private readonly m_timeSpanInSeconds: number;\n\n public get BitsPerSecond(): number {\n return this.m_bitCount / this.m_timeSpanInSeconds;\n }\n\n constructor(byteCount: number, timeSpanInMs: number) {\n if (timeSpanInMs === 0) {\n throw new Error('time span cannot be 0');\n }\n\n this.m_bitCount = byteCount * BitRate.BitsPerByte;\n this.m_timeSpanInSeconds = timeSpanInMs / 1000;\n }\n\n public toString(): string {\n const bitsPerSec = this.BitsPerSecond;\n if (bitsPerSec <= 0) {\n return '0 kbps';\n }\n if (bitsPerSec < 1024 * 1024) {\n return `${(bitsPerSec / 1024.0).toFixed(1)} kbps`;\n }\n if (bitsPerSec < 1024 * 1024 * 1024) {\n return `${(bitsPerSec / 1024.0 / 1024.0).toFixed(1)} Mbps`;\n }\n return `${(bitsPerSec / 1024.0 / 1024.0 / 1024.0).toFixed(1)} Gbps`;\n }\n}\n","export class RingBuffer {\n private readonly m_ringBuffer: Array;\n\n private m_idx = 0;\n\n private m_totalItemAdded = 0;\n\n public get TotalItemAdded(): number {\n return this.m_totalItemAdded;\n }\n\n constructor(itemCount: number) {\n if (itemCount < 2) {\n throw new Error('Item count must be at least 2. Current value is ' + itemCount);\n }\n\n this.m_ringBuffer = new Array(itemCount);\n }\n\n public reset() {\n this.m_idx = 0;\n this.m_totalItemAdded = 0;\n }\n\n public add(item: T) {\n this.m_ringBuffer[this.m_idx] = item;\n this.m_idx = (this.m_idx + 1) % this.m_ringBuffer.length;\n this.m_totalItemAdded++;\n }\n\n public get(index: number): T {\n return this.m_ringBuffer[index];\n }\n\n public firstAndLast(): [T, T] {\n if (this.m_totalItemAdded === 0) {\n throw new Error('Empty ring buffer');\n }\n\n return [this.m_ringBuffer[this.firstIndex()], this.m_ringBuffer[this.lastIndex()]];\n }\n\n public getAll(): Array {\n if (this.m_totalItemAdded === 0) {\n return new Array(0);\n }\n\n const start = this.firstIndex();\n const end = this.lastIndex();\n\n const result = [];\n\n let i = start;\n while (true) {\n result.push(this.get(i));\n ++i;\n\n if (i === (end + 1)) {\n break;\n }\n\n if (i >= this.m_ringBuffer.length) {\n i = 0;\n }\n }\n\n\n return result;\n }\n\n //Retrieve the index of the oldest introduced item in the ring buffer\n private firstIndex(): number {\n return this.m_totalItemAdded > this.m_ringBuffer.length ? this.m_idx : 0;\n }\n\n //Retrieve the index of the most recently introduced item in the ring buffer\n private lastIndex(): number {\n return this.m_idx === 0 ? this.m_ringBuffer.length - 1 : this.m_idx - 1;\n }\n}\n","import { RingBuffer } from './RingBuffer';\n\nexport interface IFrameRateProvider {\n getFrameRate(): FrameRate;\n}\n\n// Todo: make a simpler version without keyframe rate computing for mjpeg and dewarper\nexport class FrameRateComputer implements IFrameRateProvider {\n private static readonly SampleCount = 60;\n private readonly m_frameTimes = new RingBuffer(FrameRateComputer.SampleCount);\n private m_lastKeyFrame: Date = new Date(0);\n private m_theOneBeforeThat: Date = new Date(0);\n private m_currentPFrameCount: number = 0;\n private m_lastPFrameCount: number = 0;\n\n public addFrame(frame: 'k' | 'p') {\n const now = new Date();\n this.m_frameTimes.add(now);\n if (frame === 'k') {\n this.m_theOneBeforeThat = this.m_lastKeyFrame;\n this.m_lastKeyFrame = now;\n\n this.m_lastPFrameCount = this.m_currentPFrameCount;\n this.m_currentPFrameCount = 0;\n } else {\n this.m_currentPFrameCount++;\n }\n }\n\n public getFrameRate(): FrameRate {\n if (this.m_frameTimes.TotalItemAdded < 2) {\n return new FrameRate(0, 0, 0);\n }\n\n const [first, last] = this.m_frameTimes.firstAndLast();\n const elapsedSeconds = (last.getTime() - first.getTime()) / 1000;\n const frameCount = Math.min(this.m_frameTimes.TotalItemAdded, FrameRateComputer.SampleCount);\n\n const frameRate = elapsedSeconds !== 0 ? frameCount / elapsedSeconds : 0;\n return new FrameRate(frameRate, this.m_lastPFrameCount, (this.m_lastKeyFrame.getTime() - this.m_theOneBeforeThat.getTime()) / 1000);\n }\n}\n\nexport class FrameRate {\n private readonly m_frameRate: number;\n private readonly m_pFrameCount: number;\n private readonly m_keyFrameIntervalInSeconds: number;\n\n public get frameRate(): number {\n return this.m_frameRate;\n }\n\n public get timeBetween2Frames(): number {\n return this.m_frameRate > 0 ?\n Math.min(1000 / this.m_frameRate, 1000) : //Protect against bad frame rate computation that could happens following a sequence jump\n 0;\n }\n\n constructor(frameRate: number, pFrameCount: number, keyFrameIntervalInSeconds: number) {\n this.m_frameRate = frameRate;\n this.m_pFrameCount = pFrameCount;\n this.m_keyFrameIntervalInSeconds = keyFrameIntervalInSeconds;\n }\n\n public frameRateToString(): string {\n return `${this.m_frameRate.toFixed(1)} fps`;\n }\n\n public keyFrameRateToString(): string {\n const keyFrameIntervalInSeconds = this.m_keyFrameIntervalInSeconds < 1 ? this.m_keyFrameIntervalInSeconds.toFixed(3) : this.m_keyFrameIntervalInSeconds.toFixed(1);\n return `${keyFrameIntervalInSeconds} sec / ${this.m_pFrameCount + 1} frames`;\n }\n}\n","import { IBitRateProvider, BitRateComputer, BitRate } from './BitRateComputer';\nimport { IFrameRateProvider, FrameRateComputer, FrameRate } from './FrameRateComputer';\n\nexport class StatisticProvider implements IBitRateProvider, IFrameRateProvider {\n private m_bitRateProvider: BitRateComputer;\n\n private m_audioBitRateProvider: BitRateComputer;\n\n private m_frameRateProvider: FrameRateComputer;\n\n constructor() {\n this.m_bitRateProvider = new BitRateComputer();\n this.m_audioBitRateProvider = new BitRateComputer();\n this.m_frameRateProvider = new FrameRateComputer();\n }\n\n public get bitRateProvider(): BitRateComputer {\n return this.m_bitRateProvider;\n }\n\n public get audioBitRateProvider(): BitRateComputer {\n return this.m_audioBitRateProvider;\n }\n\n public get frameRateProvider(): FrameRateComputer {\n return this.m_frameRateProvider;\n }\n\n reset() {\n this.m_bitRateProvider = new BitRateComputer();\n this.m_audioBitRateProvider = new BitRateComputer();\n this.m_frameRateProvider = new FrameRateComputer();\n }\n\n getBitRate(): BitRate {\n return this.m_bitRateProvider.getBitRate();\n }\n\n getAudioBitRate(): BitRate {\n return this.m_audioBitRateProvider.getBitRate();\n }\n\n getFrameRate(): FrameRate {\n return this.m_frameRateProvider.getFrameRate();\n }\n}\n","import { Utils } from './Utils';\nimport { PlaySpeed } from '../players/PlaySpeed';\n\nexport interface ITimeResolver {\n canResolve(generation: number): boolean;\n updateResolver(mediaTime: number, baseTime: Date): void;\n resolve(mediaTime: number): ResolvedFrameTime;\n setPlaySpeed(playSpeed: PlaySpeed): void;\n toString(): string;\n}\n\nexport class TimeResolver {\n private m_mediaBaseTime: number;\n\n private m_absoluteBaseTime: Date;\n\n private m_playSpeed: PlaySpeed;\n\n constructor(currentMediaTime: number, currentBaseTime: Date, playSpeed = PlaySpeed._1x) {\n this.m_mediaBaseTime = currentMediaTime;\n this.m_absoluteBaseTime = currentBaseTime;\n this.m_playSpeed = playSpeed;\n }\n\n public toString(): string {\n return `${Utils.formatDateUTC(this.m_absoluteBaseTime)} => ${this.m_mediaBaseTime}, PlaySpeed: ${this.m_playSpeed}`;\n }\n\n public updateResolver(mediaTime: number, baseTime: Date): void {\n this.m_absoluteBaseTime = baseTime;\n this.m_mediaBaseTime = mediaTime;\n }\n\n public resolve(mediaTime: number): ResolvedFrameTime {\n return new ResolvedFrameTime(Utils.addSeconds(this.m_absoluteBaseTime, (mediaTime - this.m_mediaBaseTime) / 1000 * this.m_playSpeed.Value), mediaTime);\n }\n\n public setPlaySpeed(playSpeed: PlaySpeed): void {\n this.m_playSpeed = playSpeed;\n }\n}\n\nexport class GenerationTimeResolver implements ITimeResolver {\n private readonly m_generation: number;\n\n private readonly m_timeResolver: TimeResolver;\n\n constructor(generation: number, mediaBaseTime: number, absoluteBaseTime: Date, playSpeed = PlaySpeed._1x) {\n this.m_generation = generation;\n this.m_timeResolver = new TimeResolver(mediaBaseTime, absoluteBaseTime, playSpeed);\n }\n\n public canResolve(generation: number): boolean {\n return this.m_generation === generation;\n }\n\n public toString(): string {\n return `Generation: ${this.m_generation} ${this.m_timeResolver.toString()}`;\n }\n\n public updateResolver(mediaTime: number, baseTime: Date): void {\n this.m_timeResolver.updateResolver(mediaTime, baseTime);\n }\n\n public resolve(mediaTime: number): ResolvedFrameTime {\n return this.m_timeResolver.resolve(mediaTime);\n }\n\n public setPlaySpeed(playSpeed: PlaySpeed): void {\n this.m_timeResolver.setPlaySpeed(playSpeed);\n }\n}\n\nexport class ResolvedFrameTime {\n private readonly m_mediaTime: number;\n\n private readonly m_frameTime: Date;\n\n public get mediaTime(): number {\n return this.m_mediaTime;\n }\n\n public get frameTime(): Date {\n return this.m_frameTime;\n }\n\n constructor(frameTime: Date, mediaTime: number = -1) {\n this.m_frameTime = frameTime;\n this.m_mediaTime = mediaTime;\n }\n\n public toString(): string {\n return this.m_mediaTime !== -1 ? `${Utils.formatDateUTC(this.m_frameTime)} (${Math.round(this.m_mediaTime)})` : `${Utils.formatDateUTC(this.m_frameTime)}`;\n }\n}\n","import { ILogger } from './utils/logger';\nimport { StatisticProvider } from './utils/StatisticProvider';\nimport { LiteEvent, ILiteEvent } from './utils/liteEvents';\nimport { StreamingConnectionStatusChangeEvent, PlayerStateChangeEvent, PlaySpeedChangeEvent, AudioStateChangeEvent, AudioAvailabilityChangeEvent, TimelineContentEvent, PlayerModeChangeEvent, TimelineEvent, ErrorStatusEvent } from './events';\nimport { ResolvedFrameTime } from './utils/TimeResolver';\nimport { BitRate } from './utils/BitRateComputer';\nimport { FrameRate } from './utils/FrameRateComputer';\nimport { ErrorDetails, SerializedPlayerState, StreamingStatus, TimelineContent } from './services/eventHub';\nimport { ErrorCode, StreamingConnectionStatus, PlayerMode } from './enums';\nimport { Resolution } from './utils/Resolution';\nimport { TimeSpan } from './utils/TimeSpan';\nimport { Utils } from './utils/Utils';\nimport { IEventHub } from './services/eventHubDispatcher';\nimport { PlaySpeed } from './players/PlaySpeed';\n\nexport class EventManager implements IEventHub {\n // The minimum time between each \"frame rendered\" event (in MS)\n private static readonly FrameRenderedEventFrequency = 250;\n\n private readonly m_logger: ILogger;\n private readonly m_statisticProvider: StatisticProvider;\n\n private readonly onError = new LiteEvent();\n private readonly onFrameRendered = new LiteEvent();\n private readonly onStreamStatusChange = new LiteEvent();\n private readonly onPlayerStateChange = new LiteEvent();\n private readonly onPlaySpeedChange = new LiteEvent();\n private readonly onAudioStateChange = new LiteEvent();\n private readonly onAudioAvailabilityChange = new LiteEvent();\n private readonly onTimelineContentUpdated = new LiteEvent();\n private readonly onPlayerModeChange = new LiteEvent();\n private readonly onBufferingProgress = new LiteEvent();\n\n private readonly m_intervalHandle: number;\n private m_lastFrameReceived?: ResolvedFrameTime;\n private m_lastFrameRendered?: ResolvedFrameTime;\n private m_videoCodec: Codec = Codec.None;\n private m_lastJpegResolution: Resolution = Resolution.None;\n private m_networkLatency: number | null = 0;\n private m_globalLatency: number | null = 0;\n private m_audioAvailable: boolean = false;\n\n // *** Events exposure\n public get errorStateRaised(): ILiteEvent {\n return this.onError.expose();\n }\n public get frameRendered(): ILiteEvent {\n return this.onFrameRendered.expose();\n }\n public get streamStatusChanged(): ILiteEvent {\n return this.onStreamStatusChange.expose();\n }\n public get playerStateChanged(): ILiteEvent {\n return this.onPlayerStateChange.expose();\n }\n public get playSpeedChanged(): ILiteEvent {\n return this.onPlaySpeedChange.expose();\n }\n public get audioStateChanged(): ILiteEvent {\n return this.onAudioStateChange.expose();\n }\n public get audioAvailabilityChanged(): ILiteEvent {\n return this.onAudioAvailabilityChange.expose();\n }\n public get timelineContentUpdated(): ILiteEvent {\n return this.onTimelineContentUpdated.expose();\n }\n public get playerModeChanged(): ILiteEvent {\n return this.onPlayerModeChange.expose();\n }\n public get bufferingProgress(): ILiteEvent {\n return this.onBufferingProgress.expose();\n }\n // *** Events\n\n public get codec(): string {\n return this.m_videoCodec;\n }\n\n public get lastJpegResolution(): Resolution {\n return this.m_lastJpegResolution;\n }\n\n public get networkLatency(): number | null {\n return this.m_networkLatency;\n }\n\n public get globalLatency(): number | null {\n return this.m_globalLatency;\n }\n\n public get lastFrameReceived(): ResolvedFrameTime {\n if (this.m_lastFrameReceived === undefined) {\n return new ResolvedFrameTime(new Date(0), 0);\n }\n return this.m_lastFrameReceived;\n }\n\n public get lastFrameRendered(): ResolvedFrameTime {\n if (this.m_lastFrameRendered === undefined) {\n return new ResolvedFrameTime(new Date(0), 0);\n }\n return this.m_lastFrameRendered;\n }\n\n public get bitRate(): BitRate {\n return this.m_statisticProvider.getBitRate();\n }\n\n public get audioBitRate(): BitRate {\n return this.m_statisticProvider.getAudioBitRate();\n }\n\n public get frameRate(): FrameRate {\n return this.m_statisticProvider.getFrameRate();\n }\n\n public get isAudioAvailable(): boolean {\n return this.m_audioAvailable;\n }\n\n constructor(logger: ILogger, statisticProvider: StatisticProvider, frameRenderedEventFrequency?: number) {\n this.m_logger = logger.subLogger('EventManager');\n this.m_statisticProvider = statisticProvider;\n\n // We have to raise the frame rendered event ourselves because the \"video\" element doesn't do it consistently\n frameRenderedEventFrequency = frameRenderedEventFrequency ?? EventManager.FrameRenderedEventFrequency;\n this.m_intervalHandle = window.setInterval(this.onTimeToRaiseFrameRendered.bind(this), frameRenderedEventFrequency);\n this.m_logger.debug?.trace(`Setting frame rendered event frequency to ${new TimeSpan(frameRenderedEventFrequency).toString()}`);\n }\n\n public dispose() {\n window.clearInterval(this.m_intervalHandle);\n this.onError.dispose();\n this.onFrameRendered.dispose();\n this.onStreamStatusChange.dispose();\n this.onPlayerStateChange.dispose();\n this.onPlaySpeedChange.dispose();\n this.onPlayerModeChange.dispose();\n }\n\n public reset() {\n this.m_videoCodec = Codec.None;\n this.m_lastJpegResolution = Resolution.None;\n this.m_networkLatency = 0;\n this.m_globalLatency = 0;\n this.m_lastFrameReceived = undefined;\n this.m_lastFrameRendered = undefined;\n this.m_lastRaisedFrameRendered = undefined;\n }\n\n public setLastFrameReceived(receivedFrameTime: ResolvedFrameTime, videoCodec: Codec) {\n this.m_lastFrameReceived = receivedFrameTime;\n this.m_videoCodec = videoCodec;\n\n // Keep track of live latency when possible\n const now = new Date().getTime();\n const frameTime = receivedFrameTime.frameTime.getTime();\n if (now < frameTime) { // Can happen if browser and MediaGateway clock are not synchronized\n this.m_networkLatency = 0;\n } else {\n this.m_networkLatency = (now - frameTime) / 1000;\n }\n }\n\n public setLastFrameRendered(renderedFrameTime: ResolvedFrameTime) {\n this.m_logger.intense?.trace(`Setting last frame rendered to ${Utils.formatDate(renderedFrameTime.frameTime)}`);\n this.m_lastFrameRendered = renderedFrameTime;\n\n const now = new Date().getTime();\n const frameTime = renderedFrameTime.frameTime.getTime();\n if (now < frameTime) { // Can happen if browser and MediaGateway clock are not synchronized\n this.m_globalLatency = 0;\n } else {\n this.m_globalLatency = (now - frameTime) / 1000;\n }\n }\n\n public setLastJpegFrameRendered(frameTime: Date, lastJpegResolution: Resolution) {\n this.m_logger.intense?.trace(`Setting last frame rendered by jpeg to ${Utils.formatDate(frameTime)}`);\n this.m_lastFrameRendered = new ResolvedFrameTime(frameTime);\n this.m_lastJpegResolution = lastJpegResolution;\n\n const now = new Date().getTime();\n const frameTimeMs = frameTime.getTime();\n if (now < frameTimeMs) { // Can happen if browser and MediaGateway clock are not synchronized\n this.m_globalLatency = 0;\n } else {\n this.m_globalLatency = (now - frameTimeMs) / 1000;\n }\n }\n\n public receiveAudioAvailable(isAudioAvailable: boolean) {\n this.m_logger.debug?.trace('SetAudioAvailable:', isAudioAvailable);\n this.m_audioAvailable = isAudioAvailable;\n this.onAudioAvailabilityChange.trigger(new AudioAvailabilityChangeEvent(isAudioAvailable));\n }\n\n public receiveErrorDetails(details: ErrorDetails) {\n this.m_logger.warn?.trace('server stream stopped. Received error details:', details);\n const errorCode: ErrorCode = details.ErrorCode ?? ErrorCode.Unknown;\n this.onError.trigger(new ErrorStatusEvent(errorCode, details.Value));\n }\n\n public receivePlayerState(playerState: SerializedPlayerState) {\n this.m_logger.info?.trace('Player state changed:', playerState);\n this.onPlayerStateChange.trigger(new PlayerStateChangeEvent(playerState.State, playerState.Value));\n }\n\n public receiveStreamingConnectionStatus = (streamingStatus: StreamingStatus) => {\n this.m_logger.intense?.trace('Streaming connection status update:', StreamingConnectionStatus[streamingStatus.State]);\n this.onStreamStatusChange.trigger(new StreamingConnectionStatusChangeEvent(streamingStatus.State, streamingStatus.Value));\n }\n\n public receivePlaySpeed = (videoSpeed: PlaySpeed) => {\n this.m_logger.info?.trace('Play speed changed:', videoSpeed);\n this.onPlaySpeedChange.trigger(new PlaySpeedChangeEvent(videoSpeed.Value));\n }\n\n public receivePlayerMode = (playerMode: PlayerMode) => {\n this.m_logger.info?.trace('Player mode changed:', playerMode);\n this.onPlayerModeChange.trigger(new PlayerModeChangeEvent(playerMode));\n }\n\n public receiveAudioState = (isAudioEnabled: boolean) => {\n this.m_logger.info?.trace('Audio state changed:', isAudioEnabled);\n this.onAudioStateChange.trigger(new AudioStateChangeEvent(isAudioEnabled));\n }\n\n public receiveTimelineContent = (timelineContent: TimelineContent) => {\n this.onTimelineContentUpdated.trigger(new TimelineContentEvent(new Date(timelineContent.Coverage.Start),\n new Date(timelineContent.Coverage.End),\n timelineContent.Events.map((e) => new TimelineEvent(new Date(e.EventTime), e.Kind, e.Duration, e.Details))));\n }\n\n public receiveBufferingProgress = (progress: number) => {\n this.onBufferingProgress.trigger(progress);\n };\n\n private m_lastRaisedFrameRendered: Date | undefined = undefined;\n\n private onTimeToRaiseFrameRendered() {\n if (this.m_lastFrameRendered === undefined || this.m_lastFrameRendered.frameTime === this.m_lastRaisedFrameRendered) {\n return; // No frame were rendered yet\n }\n\n this.m_lastRaisedFrameRendered = this.m_lastFrameRendered.frameTime;\n this.onFrameRendered.trigger(this.m_lastFrameRendered.frameTime);\n }\n}\n\nexport enum Codec {\n None = 'None',\n H264 = 'H264',\n Mjpeg = 'Mjpeg',\n}\n","import { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { ILogger } from '../../utils/logger';\nimport { MseHtmlVideoElement } from './MseHtmlVideoElement';\nimport { Utils } from '../../utils/Utils';\nimport { ZoomConfiguration } from '../ZoomConfiguration';\nimport { IRenderer } from '../IRenderer';\n\nexport interface IMseRenderer extends IRenderer {\n timeUpdated: ILiteEvent;\n errorOccurred: ILiteEvent;\n readonly FrameRendered: Promise;\n reset(): void;\n render(info: SegmentInfo, buffer: Int8Array): void;\n readonly initialization: Promise;\n}\n\nexport class MseRenderer implements IMseRenderer {\n private readonly m_logger: ILogger;\n\n private readonly m_videoElement: MseHtmlVideoElement;\n\n private readonly m_timeUpdateEvent = new LiteEvent();\n\n private readonly m_errorOccurred = new LiteEvent();\n\n public get timeUpdated() {\n return this.m_timeUpdateEvent.expose();\n }\n\n public get errorOccurred() {\n return this.m_errorOccurred.expose();\n }\n\n public get FrameRendered(): Promise {\n return this.m_videoElement.FrameRendered;\n }\n\n public get streamResolution() {\n return this.m_videoElement.streamResolution;\n }\n\n public get tileResolution() {\n return this.m_videoElement.tileResolution;\n }\n\n public get initialization(): Promise {\n return this.m_videoElement.initialization;\n }\n\n constructor(logger: ILogger, videoElement: MseHtmlVideoElement) {\n this.m_logger = logger.subLogger('MseRenderer');\n this.m_videoElement = videoElement;\n this.m_videoElement.timeUpdated.register(this.onTimeUpdated);\n this.m_videoElement.errorOccurred.register(this.onErrorOccurred);\n }\n\n private readonly onTimeUpdated = (mediaTime: number) => {\n this.m_timeUpdateEvent.trigger(mediaTime);\n }\n\n private readonly onErrorOccurred = () => {\n this.m_errorOccurred.trigger();\n }\n\n public dispose(): void {\n this.m_logger.info?.trace('dispose()');\n this.m_videoElement.timeUpdated.unregister(this.onTimeUpdated);\n this.m_videoElement.errorOccurred.unregister(this.onErrorOccurred);\n this.m_videoElement.dispose();\n }\n\n public async reset() {\n this.m_logger.info?.trace('reset()');\n await this.m_videoElement.reset();\n }\n\n public start(): void {\n this.m_logger.debug?.trace('start()');\n this.m_videoElement.play();\n }\n\n public stop(): void {\n this.m_logger.debug?.trace('stop()');\n this.m_videoElement.pause();\n }\n\n public render(info: SegmentInfo, buffer: Int8Array): void {\n this.m_logger.intense?.trace(info.IsKeyFrame ? 'K': 'P', 'Frame', info.FrameTime, 'converted to date: ', Utils.formatDateUTC(info.FrameTimeAsDate), 'mediaTime:', info.MediaTime, 'baseTime:', info.BaseDecodeTime);\n this.m_videoElement.decode(info, buffer);\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig) {\n this.m_videoElement.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n public updateZoomConfig(zoomConfig: ZoomConfiguration): void {\n this.m_videoElement.updateZoomConfig(zoomConfig);\n }\n\n public setPlayerActive(isPlayerActive: boolean): void {\n this.m_videoElement.setPlayerActive(isPlayerActive);\n }\n\n public getSnapshot(fromZoomedImage: boolean = false): ImageData | null {\n return this.m_videoElement.getSnapshot(fromZoomedImage);\n }\n\n public debugStatus(indent: number): string {\n return 'MseRenderer' + Utils.indentNewLine(indent) +\n this.m_videoElement.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { TextOverlayPosition } from './VideoWatermarkingConfig';\n\nexport class PositionFinder {\n private readonly m_position: TextOverlayPosition;\n\n private readonly m_blockWidth: number;\n\n private readonly m_blockHeight: number;\n\n constructor(position: TextOverlayPosition, blockWidth: number, blockHeight: number) {\n this.m_position = position;\n this.m_blockWidth = blockWidth;\n this.m_blockHeight = blockHeight;\n }\n\n public findPosition(width: number, height: number): [number, number] {\n switch (this.m_position) {\n case TextOverlayPosition.TopLeft:\n return [0, 0];\n case TextOverlayPosition.Top:\n return [width / 2 - this.m_blockWidth / 2, 0];\n case TextOverlayPosition.TopRight:\n return [width - this.m_blockWidth, 0];\n case TextOverlayPosition.CenterLeft:\n return [0, height / 2 - this.m_blockHeight / 2];\n case TextOverlayPosition.Center:\n return [width / 2 - this.m_blockWidth / 2, (height / 2 - this.m_blockHeight / 2)];\n case TextOverlayPosition.CenterRight:\n return [(width - this.m_blockWidth), (height / 2 - this.m_blockHeight / 2)];\n case TextOverlayPosition.BottomLeft:\n return [0, (height - this.m_blockHeight)];\n case TextOverlayPosition.Bottom:\n return [(width / 2 - this.m_blockWidth / 2), (height - this.m_blockHeight)];\n case TextOverlayPosition.BottomRight:\n return [(width - this.m_blockWidth), (height - this.m_blockHeight)];\n default:\n return [0, 0];\n }\n }\n}\n","import { VideoWatermarkConfig, TextOverlayPosition } from './VideoWatermarkingConfig';\nimport { PositionFinder } from './PositionFinder';\n\nexport class VideoWatermarkingOverlay {\n static readonly SpaceBetweenLines = 1;\n\n private readonly m_videoWatermarkingConfig: VideoWatermarkConfig;\n\n private readonly m_streamWidth: number;\n\n private readonly m_streamHeight: number;\n\n constructor(watermarkConfiguration: VideoWatermarkConfig, streamWidth: number, streamHeight: number) {\n this.m_streamWidth = streamWidth;\n this.m_streamHeight = streamHeight;\n this.m_videoWatermarkingConfig = watermarkConfiguration;\n }\n\n public createVideoWatermarkingOverlay(overlay: HTMLCanvasElement, overlayBlock: HTMLCanvasElement, blockWidth: number, blockHeight: number) {\n overlay.width = this.m_streamWidth;\n overlay.height = this.m_streamHeight;\n const overlayContext = overlay.getContext('2d');\n\n if (overlayContext !== null) {\n // Draw the overlayBlock containing the watermark info at the proper position on the overlay\n if (this.m_videoWatermarkingConfig.Position === TextOverlayPosition.Mosaic) {\n this.drawMosaic(overlayContext, overlayBlock, blockWidth, blockHeight);\n } else {\n const positionFinder = new PositionFinder(this.m_videoWatermarkingConfig.Position, blockWidth, blockHeight);\n const position = positionFinder.findPosition(this.m_streamWidth, this.m_streamHeight);\n overlayContext.drawImage(overlayBlock, position[0], position[1]);\n }\n }\n }\n\n // Creation of a transparent canvas with the username or/and the camera name or/and the workstation name.\n public createOverlayBlock(fontSize: number): HTMLCanvasElement {\n const overlayBlock = document.createElement('canvas');\n this.fillText(overlayBlock, fontSize);\n\n return overlayBlock;\n }\n\n // Specify a new width and height for the block; this resets the canvas context, and therefore the overlay text.\n public setOverlaySize(overlayBlock: HTMLCanvasElement, blockWidth: number, blockHeight: number) {\n overlayBlock.width = blockWidth;\n overlayBlock.height = blockHeight;\n }\n\n public fillText(overlayBlock: HTMLCanvasElement, fontSize: number) {\n const WatermarkFont = 'Segoe UI';\n const WatermarkColor = 'rgb(255, 255, 255)';\n\n const overlayBlockContext = overlayBlock.getContext('2d');\n if (overlayBlockContext !== null) {\n overlayBlockContext.font = fontSize.toString() + 'px ' + WatermarkFont;\n overlayBlockContext.fillStyle = WatermarkColor;\n\n // Remove the SpaceBetweenLines for the first iteration to start exactly at the top\n let yPosition = -VideoWatermarkingOverlay.SpaceBetweenLines;\n for (let i = 0; i < this.m_videoWatermarkingConfig.overlayText.length; i++) {\n yPosition += fontSize + VideoWatermarkingOverlay.SpaceBetweenLines;\n overlayBlockContext.fillText(this.m_videoWatermarkingConfig.overlayText[i], 0, yPosition);\n }\n }\n }\n\n private drawMosaic(canvasContext: CanvasRenderingContext2D, overlayBlock: HTMLCanvasElement, blockWidth: number, blockHeight: number) {\n const SpaceBetweenMosaicBlocks = 1;\n let xPosition = 0;\n let yPosition = 0;\n let isNextRowOffset = true;\n\n while (yPosition < this.m_streamHeight) {\n while (xPosition < this.m_streamWidth) {\n canvasContext.drawImage(overlayBlock, xPosition, yPosition);\n xPosition += (blockWidth + SpaceBetweenMosaicBlocks * this.m_videoWatermarkingConfig.Size);\n }\n\n xPosition = 0;\n // Remove the size of half a block for second line, fourth line, etc\n if (isNextRowOffset) {\n xPosition -= (blockWidth + SpaceBetweenMosaicBlocks * this.m_videoWatermarkingConfig.Size) / 2;\n isNextRowOffset = false;\n } else {\n isNextRowOffset = true;\n }\n\n yPosition += blockHeight + blockHeight / 2;\n }\n }\n\n public rotateOverlayBlock(overlayBlock: HTMLCanvasElement, blockWidth: number, blockHeight: number): [HTMLCanvasElement, number, number] {\n const PiOn180 = Math.PI / 180;\n const newOverlayBlock = document.createElement('canvas');\n const newOverlayBlockContext = newOverlayBlock.getContext('2d');\n\n if (newOverlayBlockContext !== null) {\n const radian = this.m_videoWatermarkingConfig.Rotation * PiOn180;\n const oppositeRadian = (90 + this.m_videoWatermarkingConfig.Rotation) * PiOn180;\n const radianForRotation = (360 - this.m_videoWatermarkingConfig.Rotation) * PiOn180;\n\n // Calculate size of the block with rotated text\n const beforeRotationHeight = blockHeight;\n const beforeRotationWidth = blockWidth;\n // Set the new height and width of the block with the rotated text\n blockHeight = Math.abs((beforeRotationWidth * Math.sin(radian))) + Math.abs(beforeRotationHeight * Math.sin(Math.PI / 2 - radian));\n blockWidth = Math.abs(beforeRotationWidth * Math.cos(radian)) + Math.abs(beforeRotationHeight * Math.cos(oppositeRadian));\n\n newOverlayBlock.height = blockHeight;\n newOverlayBlock.width = blockWidth;\n\n newOverlayBlockContext.translate(0, Math.abs((beforeRotationWidth * Math.sin(radian))));\n newOverlayBlockContext.rotate(radianForRotation);\n newOverlayBlockContext.drawImage(overlayBlock, 0, 0);\n }\n\n return [newOverlayBlock, blockWidth, blockHeight];\n }\n\n public calculateOverlayBlockSize(overlayBlock: HTMLCanvasElement, fontSize: number): [number, number] {\n let blockWidth = 0;\n let blockHeight = 0;\n const overlayBlockContext = overlayBlock.getContext('2d');\n if (overlayBlockContext !== null) {\n // For each line of text, add the height of the line + set the width if it is the longest line\n for (let i = 0; i < this.m_videoWatermarkingConfig.overlayText.length; i++) {\n blockHeight += fontSize + VideoWatermarkingOverlay.SpaceBetweenLines * this.m_videoWatermarkingConfig.Size;\n\n const textSize = overlayBlockContext.measureText(this.m_videoWatermarkingConfig.overlayText[i]);\n if (textSize.width > blockWidth) {\n blockWidth = textSize.width;\n }\n }\n }\n\n return [blockWidth, blockHeight];\n }\n\n public calculateFontSize(): number {\n const ReferenceWidth = 1920;\n return this.m_streamWidth * ((this.m_videoWatermarkingConfig.Size * 2) + 50) / ReferenceWidth;\n }\n}\n","import { VideoWatermarkConfig } from './VideoWatermarkingConfig';\nimport { VideoWatermarkingOverlay } from './VideoWatermarkingOverlay';\n\nexport class VideoWatermarkingRenderer {\n private readonly m_videoWatermarkingConfig: VideoWatermarkConfig;\n\n private m_watermarkOverlay: HTMLCanvasElement | undefined;\n\n constructor(watermarkConfiguration: VideoWatermarkConfig, width: number, height: number) {\n this.m_videoWatermarkingConfig = watermarkConfiguration;\n this.m_watermarkOverlay = (width !== 0 && height !== 0) ? this.createVideoWatermarkingOverlay(width, height, width, height) : undefined;\n }\n\n public drawVideoWatermarkingOverlay(canvasContext: CanvasRenderingContext2D, offsetX: number, offsetY: number) {\n if (this.m_watermarkOverlay === undefined) {\n return;\n }\n\n const previousGlobalAlpha = canvasContext.globalAlpha;\n canvasContext.globalAlpha = this.m_videoWatermarkingConfig.Opacity;\n\n try {\n canvasContext.drawImage(this.m_watermarkOverlay, offsetX, offsetY);\n } finally {\n canvasContext.globalAlpha = previousGlobalAlpha;\n }\n }\n\n public updateVideoWatermarkingOverlaySize(streamWidth: number, streamHeight: number) {\n this.updateVideoWatermarkingOverlaySizeWithSpecificDimensions(streamWidth, streamHeight, streamWidth, streamHeight);\n }\n\n public updateVideoWatermarkingOverlaySizeWithSpecificDimensions(streamWidth: number, streamHeight: number, fitWidth: number, fitHeight: number) {\n // Only create a new watermark overlay if the size has changed\n if (this.m_watermarkOverlay !== undefined && this.m_watermarkOverlay.width === fitWidth && this.m_watermarkOverlay.height === fitHeight) {\n return;\n }\n this.m_watermarkOverlay = this.createVideoWatermarkingOverlay(streamWidth, streamHeight, fitWidth, fitHeight);\n }\n\n private createVideoWatermarkingOverlay(streamWidth: number, streamHeight: number, overlayWidth: number, overlayHeight: number): HTMLCanvasElement {\n let videoWatermarkingOverlay = new VideoWatermarkingOverlay(this.m_videoWatermarkingConfig, streamWidth, streamHeight);\n\n const fontSize = videoWatermarkingOverlay.calculateFontSize();\n\n // If the overlay should have a different dimension than the stream dimension, use the font size calculated previously but with the new dimensions.\n if (overlayWidth !== streamWidth || overlayHeight !== streamHeight) {\n videoWatermarkingOverlay = new VideoWatermarkingOverlay(this.m_videoWatermarkingConfig, overlayWidth, overlayHeight);\n }\n\n // The overlay block size needs to be at least the size of the text itself, but that size is not known until after we create the block.\n // Setting the correct size is done in four steps.\n // 1. Create an overlayBlock and fill it with text; the text is needed for when we calculate the text size in the next step.\n let overlayBlock = videoWatermarkingOverlay.createOverlayBlock(fontSize);\n // 2. Calculate the text size, using the text filled in the last step.\n let overlayBlockSize = videoWatermarkingOverlay.calculateOverlayBlockSize(overlayBlock, fontSize);\n // 3. Set the overlayBlock's size to the text size. This resets the canvas context, and erases the text.\n videoWatermarkingOverlay.setOverlaySize(overlayBlock, overlayBlockSize[0], overlayBlockSize[1]);\n // 4. Fill the text a second time, knowing the overlayBlock is exactly the correct size to fit the text.\n videoWatermarkingOverlay.fillText(overlayBlock, fontSize);\n\n if (this.m_videoWatermarkingConfig.Rotation > 0) {\n const newOverlayBlockElements = videoWatermarkingOverlay.rotateOverlayBlock(overlayBlock, overlayBlockSize[0], overlayBlockSize[1]);\n overlayBlock = newOverlayBlockElements[0];\n overlayBlockSize = [newOverlayBlockElements[1], newOverlayBlockElements[2]];\n }\n\n const overlay = document.createElement('canvas');\n videoWatermarkingOverlay.createVideoWatermarkingOverlay(overlay, overlayBlock, overlayBlockSize[0], overlayBlockSize[1]);\n return overlay;\n }\n}\n","import { Resolution } from './Resolution';\nimport { NormalizedVec2, Vec2 } from './Vec2';\n\nexport class FitResolution {\n private readonly m_source: Resolution;\n\n private readonly m_destination: Resolution;\n\n private readonly m_scaled: Resolution;\n\n private readonly m_scale: number;\n\n private readonly m_offsetH: number;\n\n private readonly m_offsetV: number;\n\n public get Source(): Resolution {\n return this.m_source;\n }\n\n public get Destination(): Resolution {\n return this.m_destination;\n }\n\n public get Scaled(): Resolution {\n return this.m_scaled;\n }\n\n public get Scale(): number {\n return this.m_scale;\n }\n\n //In pixels\n public get OffsetH(): number {\n return this.m_offsetH;\n }\n\n //In pixels\n public get OffsetV(): number {\n return this.m_offsetV;\n }\n\n public get PixelOffset(): Vec2 {\n return new Vec2(this.OffsetH, this.OffsetV);\n }\n\n public get OffsetRatio(): NormalizedVec2 {\n return NormalizedVec2.fromVec2(this.PixelOffset, this.Scaled);\n }\n\n /**\n * Calculates the scaled resolution and the necessary offset in order\n * to entirely fit the source resolution into the destination resolution,\n * while maintaining both aspect ratios.\n */\n public constructor(source: Resolution, destination: Resolution) {\n this.m_source = source;\n this.m_destination = destination;\n\n const scaledWidth = destination.Width / source.Width;\n const scaledHeight = destination.Height / source.Height;\n\n //Carefull to reuse the destination value when building resolution instead of recomputing the value because of small floating point error that divide then remultiply introduces\n if (scaledWidth < scaledHeight) {\n this.m_scale = scaledWidth;\n this.m_scaled = Resolution.build(destination.Width, source.Height * this.m_scale);\n } else {\n this.m_scale = scaledHeight;\n this.m_scaled = Resolution.build(source.Width * this.m_scale, destination.Height);\n }\n\n this.m_offsetH = (destination.Width - this.m_scaled.Width) / 2;\n this.m_offsetV = (destination.Height - this.m_scaled.Height) / 2;\n }\n\n public toString(): string {\n return `${this.m_source.toString()} in ${this.m_destination.toString()} fitted as ${this.m_scaled.toString()} with offset [${this.m_offsetH},${this.m_offsetV}] (scale of ${this.m_scale})`;\n }\n}\n","export class Guard {\n //todo: isDate\n\n public static isNumber(x: any, parameterName: string) {\n if (typeof x !== 'number') {\n throw new Error(`${parameterName} must be a number`);\n }\n }\n\n public static isFiniteNumber(x: any, parameterName: string) {\n if (typeof x !== 'number') {\n throw new Error(`${parameterName} must be a number`);\n }\n if (isNaN(x)) {\n throw new Error(`${parameterName} must be a finite number`);\n }\n }\n\n public static isString(x: any, parameterName: string) {\n if (typeof x !== 'string') {\n throw new Error(`${parameterName} must be a string`);\n }\n }\n\n public static isInRangeInclusive(x: number, lowerBound: number, upperBound: number) {\n if (!(lowerBound <= x && x <= upperBound)) {\n throw new Error(`Value ${x} is not inside requested range: [${lowerBound}, ${upperBound}]`);\n }\n }\n}\n","import { Resolution } from '../gwp';\nimport { Guard } from './Guard';\nimport { ClipSpaceVec2 } from './Vec2';\n\n//Origin is top left\nexport class TopLeftCoords {\n private readonly m_x: number;\n\n private readonly m_y: number;\n\n public get X() {\n return this.m_x;\n }\n\n public get Y() {\n return this.m_y;\n }\n\n public constructor(x: number, y: number) {\n this.m_x = x;\n this.m_y = y;\n }\n\n public toString(): string {\n return `${this.m_x.toFixed(2)}, ${this.m_y.toFixed(2)}`;\n }\n\n public toClipSpaceVec2(resolution: Resolution): ClipSpaceVec2 {\n const clipX = (2 * this.m_x / resolution.Width) - 1;\n const clipY = -((2 * this.m_y / resolution.Height) - 1); //* -1 because since y = 0 is the top in coords, it translates to top = -1 and bottom = 1 and we want the opposite in clip space\n return new ClipSpaceVec2(clipX, clipY);\n }\n\n public equals(other: TopLeftCoords): boolean {\n return this.X === other.X && this.Y === other.Y;\n }\n}\n\nexport class NormalizedTopLeftCoords extends TopLeftCoords {\n public constructor(x: number, y: number) {\n Guard.isInRangeInclusive(x, 0, 1);\n Guard.isInRangeInclusive(y, 0, 1);\n super(x, y);\n }\n\n public toPixelTopLeftCoords(destRes: Resolution): TopLeftCoords {\n return new TopLeftCoords(this.X * destRes.Width, this.Y * destRes.Height);\n }\n}\n","import { FitResolution } from '../utils/FitResolution';\nimport { Guard } from '../utils/Guard';\nimport { Resolution } from '../utils/Resolution';\nimport { NormalizedTopLeftCoords, TopLeftCoords } from '../utils/TopLeftCoords';\n\nexport class ZoomConfiguration {\n public static readonly NoZoom: ZoomConfiguration = new ZoomConfiguration(new NormalizedTopLeftCoords(0, 0), 1);\n\n private readonly m_topLeftCoords: NormalizedTopLeftCoords;\n\n private readonly m_zoom: number;\n\n public get Zoom(): number {\n return this.m_zoom;\n }\n\n public get IsZoomed(): boolean {\n return this.m_zoom > 1;\n }\n\n public get X(): number {\n return this.m_topLeftCoords.X;\n }\n\n public get Y(): number {\n return this.m_topLeftCoords.Y;\n }\n\n public constructor(topLeftCoords: NormalizedTopLeftCoords, zoom: number) {\n Guard.isInRangeInclusive(topLeftCoords.X, 0, 1);\n Guard.isInRangeInclusive(topLeftCoords.Y, 0, 1);\n Guard.isInRangeInclusive(zoom, 1, 20);\n\n this.m_topLeftCoords = topLeftCoords;\n this.m_zoom = zoom;\n }\n\n public toString(): string {\n return `${this.m_topLeftCoords.X},${this.m_topLeftCoords.Y} at ${this.m_zoom}x`;\n }\n\n public toCanvasParameters(streamResolution: Resolution, tileResolution: Resolution): [number, TopLeftCoords] {\n //When we are not zooming, we are still stretching the image to a certain level to fill the tile while keeping the aspect ratio.\n //The digital requested zoom will apply on that scale:\n const fitResolution = new FitResolution(streamResolution, tileResolution);\n const pixelTopLeftCoords = this.m_topLeftCoords.toPixelTopLeftCoords(tileResolution);\n // Get the current offset\n const newOffsetX = ((tileResolution.Width - fitResolution.Scaled.Width) / 2 -\n // Displace the image by the calculated coordinates\n pixelTopLeftCoords.X) /\n // Apply the scale\n fitResolution.Scale;\n\n // Redo for Y\n const newOffsetY = ((tileResolution.Height - fitResolution.Scaled.Height) / 2 - pixelTopLeftCoords.Y) / fitResolution.Scale;\n\n const zoom = fitResolution.Scale * this.Zoom;\n\n return [zoom, new TopLeftCoords(newOffsetX, newOffsetY)];\n }\n\n public equals(zoomConfig: ZoomConfiguration): boolean {\n return this.X === zoomConfig.X && this.Y === zoomConfig.Y && this.Zoom === zoomConfig.Zoom;\n }\n}\n","import { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { ILogger } from '../../utils/logger';\nimport { VideoWatermarkingRenderer } from '../../utils/VideoWatermarkingRenderer';\nimport { Utils } from '../../utils/Utils';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { Resolution } from '../../utils/Resolution';\nimport { RingBuffer } from '../../utils/RingBuffer';\nimport { TimeSpan } from '../../utils/TimeSpan';\nimport { ZoomConfiguration } from '../ZoomConfiguration';\nimport { PromiseCompletionSourceVoid } from '../../utils/PromiseCompletionSource';\nimport { RenderingCanvas } from '../../utils/RenderingCanvas';\nimport { IRenderer } from '../IRenderer';\nexport interface IJpegRenderer extends IRenderer {\n timeUpdated: ILiteEvent;\n clear(): void;\n render(buffer: Int8Array, frameTime: Date): void;\n}\n\nexport class JpegRenderer implements IJpegRenderer {\n private readonly m_timeUpdateEvent = new LiteEvent();\n private readonly m_logger: ILogger;\n private readonly m_frameDropStatistic: FrameDropStatistic;\n private readonly m_renderingCanvas: RenderingCanvas;\n private m_lastTimeUpdatedRaised: number;\n private m_frameRenderedPromise: PromiseCompletionSourceVoid;\n private m_lastResolution: Resolution;\n private m_frameTime: Date | undefined;\n private m_image?: HTMLImageElement;\n private m_videoWatermarkingRenderer?: VideoWatermarkingRenderer;\n private m_zoomConfiguration: ZoomConfiguration = ZoomConfiguration.NoZoom;\n private m_isCleared: boolean;\n private m_isStarted = true; // Indicates if the player has been started and is ready to render\n private m_isPlayerActive = false; // Indicates if the player is currently receiving segments, and rendering them\n\n public get timeUpdated() {\n // Allows the audioPlayer to synchronize with the jpegPlayer\n return this.m_timeUpdateEvent.expose();\n }\n\n public get streamResolution(): Resolution {\n return this.m_lastResolution;\n }\n\n public get Image(): HTMLImageElement | undefined {\n return this.m_image;\n }\n\n public get FrameRendered(): Promise {\n return this.m_frameRenderedPromise.Promise;\n }\n\n public get tileResolution(): Resolution {\n if (this.m_renderingCanvas.canvasElement.scrollWidth === 0 || this.m_renderingCanvas.canvasElement.scrollHeight === 0) {\n return Resolution.None;\n }\n return Resolution.build(this.m_renderingCanvas.canvasElement.scrollWidth, this.m_renderingCanvas.canvasElement.scrollHeight);\n }\n\n constructor(logger: ILogger, renderingCanvas: RenderingCanvas) {\n this.m_logger = logger.subLogger('JpegRenderer');\n this.m_image = undefined;\n this.m_videoWatermarkingRenderer = undefined;\n this.m_lastTimeUpdatedRaised = 0;\n this.m_isCleared = true;\n this.m_lastResolution = Resolution.None;\n this.m_frameDropStatistic = new FrameDropStatistic();\n this.m_renderingCanvas = renderingCanvas;\n this.m_frameRenderedPromise = new PromiseCompletionSourceVoid();\n this.m_logger.debug?.trace('Created');\n }\n\n public dispose(): void {\n if (this.m_image !== undefined && this.m_image.src) {\n window.URL.revokeObjectURL(this.m_image.src);\n }\n this.m_image = undefined;\n\n this.clear();\n this.m_logger.debug?.trace('Disposed');\n }\n\n public start(): void {\n this.m_isStarted = true;\n this.m_logger.debug?.trace('Start');\n }\n\n public stop(): void {\n this.m_isStarted = false;\n this.m_frameDropStatistic.reset();\n this.m_logger.debug?.trace('Stop');\n }\n\n public clear(): void {\n if (!this.m_isCleared && this.m_isPlayerActive) {\n // Clear the picture from the canvas\n const context = this.m_renderingCanvas.canvasElement.getContext('2d');\n context?.clearRect(0, 0, this.m_renderingCanvas.canvasElement.width, this.m_renderingCanvas.canvasElement.height);\n this.m_isCleared = true;\n this.m_lastResolution = Resolution.None;\n this.m_frameDropStatistic.reset();\n this.m_logger.debug?.trace('Clear');\n }\n }\n\n public render(buffer: Int8Array, frameTime: Date): boolean {\n if (!this.m_isStarted) {\n this.m_logger.intense?.trace('Not rendering because not started');\n return false;\n }\n\n if (this.m_image === undefined) {\n this.m_image = this.createRenderer();\n } else if (!this.m_image.complete) { // IE reports false for broken or with no source images\n this.m_frameDropStatistic.frameDropped(frameTime);\n this.m_logger.intense?.trace('Dropping frame', Utils.formatDateUTC(frameTime), 'because the previous one was not rendered yet');\n return true;\n }\n\n const oldSrc = this.m_image.src;\n this.m_image.src = window.URL.createObjectURL(new Blob([buffer]));\n this.m_frameTime = frameTime;\n window.URL.revokeObjectURL(oldSrc);\n\n return true;\n }\n\n public getSnapshot(fromZoomedImage: boolean = false): ImageData | null {\n if (this.m_image === undefined) {\n this.m_logger.info?.trace('getSnapshot(): no image rendered yet');\n return null; //No image was rendered\n }\n\n if (fromZoomedImage && this.m_zoomConfiguration.IsZoomed) {\n return this.m_renderingCanvas.getSnapshot();\n } else {\n const snapshotCanvas = document.createElement('canvas');\n snapshotCanvas.width = this.m_lastResolution.Width;\n snapshotCanvas.height = this.m_lastResolution.Height;\n this.m_logger.debug?.trace(`getSnapshot(): Resolution ${this.m_lastResolution.toString()}`);\n\n const context = snapshotCanvas.getContext('2d');\n if (!context) {\n this.m_logger.warn?.trace('getSnapshot(): Failed to obtain the 2d context of the jpeg temporary snapshot canvas');\n throw new Error('Failed to obtain the 2d context of the jpeg temporary canvas');\n }\n context.drawImage(this.m_image, 0, 0, snapshotCanvas.width, snapshotCanvas.height);\n\n //Apply videowatermark if any\n this.m_videoWatermarkingRenderer?.updateVideoWatermarkingOverlaySize(snapshotCanvas.width, snapshotCanvas.height);\n this.m_videoWatermarkingRenderer?.drawVideoWatermarkingOverlay(context, 0, 0);\n\n this.m_logger.info?.trace(`getSnapshot(): returning a ${snapshotCanvas.width}x${snapshotCanvas.height} image`);\n return context.getImageData(0, 0, snapshotCanvas.width, snapshotCanvas.height);\n }\n }\n\n public updateZoomConfig(zoomConfig: ZoomConfiguration): void {\n if (this.m_zoomConfiguration.equals(zoomConfig)) {\n return;\n }\n this.m_zoomConfiguration = zoomConfig;\n this.completeRender();\n }\n\n private createRenderer(): HTMLImageElement {\n const image: HTMLImageElement = document.createElement('img');\n image.addEventListener('load',\n (() => {\n this.completeRender();\n this.m_logger.intense?.trace(`Frame rendered: ${Utils.formatDate(this.m_frameTime)}`);\n\n if (this.m_frameTime !== undefined) {\n this.raiseTimeUpdated(this.m_frameTime);\n }\n }));\n image.addEventListener('error',\n (() => {\n this.m_logger.warn?.trace('error decoding a Jpeg');\n }));\n\n return image;\n }\n\n private raiseTimeUpdated(frameTime: Date) {\n const now = new Date().getTime();\n if (now - this.m_lastTimeUpdatedRaised > 500) {\n this.m_timeUpdateEvent.trigger(frameTime);\n this.m_lastTimeUpdatedRaised = now;\n }\n }\n\n private completeRender(): void {\n const canvas = this.m_renderingCanvas.canvasElement;\n const ctx = canvas.getContext('2d'); // context is used to draw images, shapes and text\n\n if (ctx !== null && ctx !== undefined && this.m_image !== undefined && this.m_image.width !== 0 && this.m_image.height !== 0) {\n const img = this.m_image;\n if (this.m_lastResolution.Width !== img.width || this.m_lastResolution.Height !== img.height) {\n this.m_lastResolution = Resolution.build(img.width, img.height);\n }\n\n if (this.m_isPlayerActive) {\n // Only draw the image on the canvas if the mjpeg renderer is active.\n this.m_renderingCanvas.draw(this.m_image, Resolution.build(img.width, img.height), this.m_zoomConfiguration);\n this.triggerFrameRendered();\n }\n }\n\n this.m_isCleared = false;\n }\n\n private triggerFrameRendered(): void {\n const toResolve = this.m_frameRenderedPromise;\n this.m_frameRenderedPromise = new PromiseCompletionSourceVoid();\n toResolve.resolve();\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig) {\n this.m_renderingCanvas.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n // Only create the WatermarkRenderer if the config is enabled\n if (videoWatermarkingConfig !== VideoWatermarkConfig.Disabled) {\n this.m_logger.debug?.trace('Updating video watermark configuration');\n this.m_videoWatermarkingRenderer = new VideoWatermarkingRenderer(videoWatermarkingConfig, this.m_renderingCanvas.canvasElement.scrollWidth, this.m_renderingCanvas.canvasElement.scrollHeight);\n } else {\n this.m_logger.debug?.trace('Disabling video watermark');\n this.m_videoWatermarkingRenderer = undefined;\n }\n }\n\n public setPlayerActive(isPlayerActive: boolean): void {\n this.m_isPlayerActive = isPlayerActive;\n }\n\n public debugStatus(indent: number): string {\n const frameDroppedFrequency = this.m_frameDropStatistic.FrameDroppedInLastMinute;\n let frameDroppedMessage: string;\n if (frameDroppedFrequency[0] === 0) {\n frameDroppedMessage = 'No frame dropped';\n } else {\n frameDroppedMessage = `Dropped ${frameDroppedFrequency[0]} frame(s) over the last ${frameDroppedFrequency[1].toString()}`;\n }\n\n return 'JpegRenderer' + Utils.indentNewLine(indent) +\n 'Started: ' + this.m_isStarted + Utils.indentNewLine(indent) +\n 'Cleared: ' + this.m_isCleared + Utils.indentNewLine(indent) +\n 'Frame resolution: ' + this.m_lastResolution.toString() + Utils.indentNewLine(indent) +\n `Displayed resolution: ${this.m_renderingCanvas.canvasElement.scrollWidth}x${this.m_renderingCanvas.canvasElement.scrollHeight}` + Utils.indentNewLine(indent) +\n 'Last time update: ' + Utils.formatDate(this.m_frameTime) + Utils.indentNewLine(indent) +\n 'VideoWatermarking: ' + (this.m_videoWatermarkingRenderer === undefined ? 'off' : 'on') + Utils.indentNewLine(indent) +\n frameDroppedMessage;\n }\n}\n\n//Amount of frame rendered and dropped in the last minute\nexport class FrameDropStatistic {\n private static readonly SampleCount = 64;\n\n private readonly m_frameDropped = new RingBuffer(FrameDropStatistic.SampleCount);\n\n public get FrameDroppedInLastMinute(): [number, TimeSpan] {\n return this.frequencyOverLastMinuteOrLess(this.m_frameDropped);\n }\n\n public reset(): void {\n this.m_frameDropped.reset();\n }\n\n public frameDropped(frameTime: Date) {\n this.m_frameDropped.add(frameTime);\n }\n\n //Returns the number of frame dropped over a certain timespan. Will try to compute it over the last minute but the span might be smaller\n public frequencyOverLastMinuteOrLess(events: RingBuffer): [number, TimeSpan] {\n const allEvents = events.getAll();\n if (allEvents.length === 0) {\n //No frame dropped\n return [0, TimeSpan.Zero];\n }\n\n const now = new Date();\n const oneMinuteAgo = Utils.subtractMinutes(now, 1);\n\n let eventInLastMinute = 0;\n for (let i = 0; i < allEvents.length; ++i) {\n if (allEvents[i] > oneMinuteAgo) {\n ++eventInLastMinute;\n }\n }\n\n if (eventInLastMinute < allEvents.length) {\n return [eventInLastMinute, new TimeSpan(60000)];\n }\n\n //Filled the ring buffer capacity of event in less than a minute:\n //Filling period is between now and the first event\n return [eventInLastMinute, TimeSpan.between(allEvents[0], now)];\n }\n}\n","import { ILogger } from '../../utils/logger';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { Utils } from '../../utils/Utils';\nimport { MediaSourceReadyState } from './MseMediaSource';\n\nexport class MseSourceBuffer {\n private static readonly SecondsToKeepInCache: number = 5;\n\n private readonly m_logger: ILogger;\n\n private readonly m_sourceBuffer: SourceBuffer;\n\n private readonly m_parentMediaSource: MediaSource;\n\n public get isUpdating(): boolean {\n return this.m_sourceBuffer.updating;\n }\n\n constructor(logger: ILogger, sourceBuffer: SourceBuffer, parentMediaSource: MediaSource) {\n this.m_logger = logger.subLogger('MseSourceBuffer');\n this.m_sourceBuffer = sourceBuffer;\n this.m_parentMediaSource = parentMediaSource;\n }\n\n public dispose() {\n this.m_logger.debug?.trace('dispose()');\n if (this.m_parentMediaSource.readyState === MediaSourceReadyState.closed) {\n this.m_logger.warn?.trace('Parent media source is already closed');\n return;\n }\n try {\n this.m_parentMediaSource.removeSourceBuffer(this.m_sourceBuffer);\n } catch (e) {\n this.m_logger.error?.trace('Error removing the source buffer from the media source:', e);\n }\n }\n\n public async reset(): Promise {\n this.m_logger.debug?.trace('reset()');\n\n await this.abortAsync();\n\n if (this.m_sourceBuffer.buffered.length > 0) {\n this.m_sourceBuffer.remove(this.m_sourceBuffer.buffered.start(0), this.m_sourceBuffer.buffered.end(0));\n await SourceBufferExtensions.updateEndPromise(this.m_sourceBuffer);\n }\n this.m_logger.debug?.trace('reset() completed');\n }\n\n public decode(segmentInfo: SegmentInfo, buffer: Int8Array) {\n this.m_logger.intense?.trace('appendBuffer', segmentInfo.MediaTime, segmentInfo.FrameTime, buffer.length, 'bytes');\n const wasUpdating = this.m_sourceBuffer.updating;\n try {\n this.m_sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n this.m_logger.error?.trace('Failed to append buffer to SourceBuffer. Was updating:', wasUpdating, 'Is updating:', this.m_sourceBuffer.updating, e);\n }\n }\n\n public addEventListener(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, _options?: boolean | AddEventListenerOptions): void {\n this.m_sourceBuffer.addEventListener(type, listener);\n }\n\n public removeEventListener(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, _options?: boolean | EventListenerOptions): void {\n this.m_sourceBuffer.removeEventListener(type, listener);\n }\n\n public async updatingEnd(): Promise {\n if (!this.m_sourceBuffer.updating) {\n return Promise.resolve();\n }\n\n let updatingAwaitCount = 0;\n while (this.m_sourceBuffer.updating) {\n await SourceBufferExtensions.updateEndPromise(this.m_sourceBuffer);\n ++updatingAwaitCount;\n }\n\n if (updatingAwaitCount !== 0) {\n this.m_logger.debug?.trace('took', updatingAwaitCount, 'time get updating to false');\n }\n }\n\n // Note: the caller must ensure that the source buffer is not updating. I removed the check to make sure it throws if this condition is not respected.\n public emptyCache() {\n if (this.m_sourceBuffer.buffered.length > 0 && this.m_parentMediaSource.readyState === MediaSourceReadyState.open) {\n this.m_logger.intense?.trace('Cache removal requested, currently: ' + this.getCacheDurationInSec() + ' sec');\n const start = this.m_sourceBuffer.buffered.start(0);\n const end = this.m_sourceBuffer.buffered.end(this.m_sourceBuffer.buffered.length - 1);\n\n // Keep some video in cache otherwise it breaks stuff\n if (start < end - MseSourceBuffer.SecondsToKeepInCache) {\n this.m_sourceBuffer.remove(start, end - MseSourceBuffer.SecondsToKeepInCache);\n }\n } else {\n this.m_logger.intense?.trace('Cache removal skipped');\n }\n }\n\n private async abortAsync(): Promise {\n if (!this.m_sourceBuffer.updating) {\n this.m_logger.debug?.trace('Aborting synchronously');\n this.m_sourceBuffer.abort();\n return;\n }\n\n this.m_logger.debug?.trace('Aborting asynchronously');\n const abortEventAwaiter = SourceBufferExtensions.abortEventPromise(this.m_sourceBuffer);\n this.m_sourceBuffer.abort();\n await abortEventAwaiter;\n this.m_logger.debug?.trace('Aborting completed');\n }\n\n private getCacheDurationInSec(): number {\n let bufferedSeconds = 0;\n for (let i = 0; i < this.m_sourceBuffer.buffered.length; i++) {\n bufferedSeconds += this.m_sourceBuffer.buffered.end(i) - this.m_sourceBuffer.buffered.start(i);\n }\n return bufferedSeconds;\n }\n\n public debugStatus(indent: number): string {\n return 'MseSourceBuffer' + Utils.indentNewLine(indent) +\n 'IsUpdating: ' + this.isUpdating + Utils.indentNewLine(indent) +\n 'Buffered Time: ' + this.getCacheDurationInSec() + ' sec';\n }\n}\n\nexport class SourceBufferExtensions {\n public static abortEventPromise(sourceBuffer: SourceBuffer): Promise {\n return SourceBufferExtensions.eventPromise(sourceBuffer, SourceBufferEvent.abort);\n }\n\n public static updateEndPromise(sourceBuffer: SourceBuffer): Promise {\n return SourceBufferExtensions.eventPromise(sourceBuffer, SourceBufferEvent.updateEnd);\n }\n\n private static async eventPromise(sourceBuffer: SourceBuffer, eventName: string): Promise {\n return new Promise((resolve) => {\n sourceBuffer.addEventListener(eventName, () => resolve(), { once: true });\n });\n }\n}\n\nexport enum SourceBufferEvent {\n abort = 'abort',\n error = 'error',\n update = 'update',\n updateEnd = 'updateend',\n updateStart = 'updatestart',\n}\n","export class Config {\n public static readonly instance = {};\n}\n\nexport class DebugSwitch {\n // Next attempt to decode using Mse H264 decoder will fail and force fallback to mjpeg\n // Usage: in the console, type: \"gwp.config.breakMse = true\"\n private static readonly breakMse = 'breakMse';\n\n // Set the frequency at which we clean the mse cache for a given player (to reduce RAM usage)\n // Usage: in the console, type: \"gwp.config.mseCleanupFreqSeconds = 10\"\n private static readonly mseCleanupFreqSeconds = 'mseCleanupFreqSeconds';\n\n // Every 10 second is what the browser seems to do by default but we need to do it ourselves since the browser keeps 600 second of cache\n private static readonly DefaultMseCleanupFreqSeconds = 10;\n\n public static get IsMseBroken(): boolean {\n return DebugSwitch.isEnabled(DebugSwitch.breakMse);\n }\n\n public static get MseCleanupFreqSeconds(): number {\n return DebugSwitch.getValue(DebugSwitch.mseCleanupFreqSeconds) ?? DebugSwitch.DefaultMseCleanupFreqSeconds;\n }\n\n private static isEnabled(switchName: string): boolean {\n return Config.instance.hasOwnProperty(switchName) && (Config.instance)[switchName] === true;\n }\n\n private static getValue(switchName: string): number | null {\n return Config.instance.hasOwnProperty(switchName) ? (Config.instance)[switchName] : null;\n }\n}\n","import { ILogger } from '../../utils/logger';\nimport { BufferQueue } from './BufferQueue';\nimport { MseSourceBuffer, SourceBufferEvent } from './MseSourceBuffer';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { Utils } from '../../utils/Utils';\nimport { FrameRateComputer } from '../../utils/FrameRateComputer';\nimport { PromiseCompletionSourceVoid } from '../../utils/PromiseCompletionSource';\nimport { DebugSwitch } from '../../utils/Config';\n\nexport class MseMediaSource {\n private static readonly VideoSourceBufferType = 'video/mp4; codecs=\"avc1.42E01E\"';\n\n private static readonly AudioSourceBufferType = 'audio/mp4;codecs=\"mp4a.40.2\"';\n\n private static readonly VideoWebMSourceBufferType = 'video/webm; codecs=\"opus, vp09.00.10.08\"';\n\n private readonly m_logger: ILogger;\n\n private readonly m_mediaSource: MediaSource;\n\n private readonly m_queue: BufferQueue;\n\n private readonly m_decoderOutputFps = new FrameRateComputer();\n\n private readonly m_mediaSpecification: string;\n\n private readonly m_mediaSourceInitialization: Promise;\n\n private m_nextCleanupTime: number = 0;\n\n private m_resetInProgress: boolean = false;\n\n private m_mseSourceBuffer?: MseSourceBuffer;\n\n private m_isPaused: boolean = false;\n\n private m_frameRenderedPromise: PromiseCompletionSourceVoid;\n\n public get sourceBuffer(): MseSourceBuffer {\n if (this.m_mseSourceBuffer === undefined) {\n throw new Error('Wait for initialization to complete');\n }\n return this.m_mseSourceBuffer;\n }\n\n public get initialization(): Promise {\n return this.m_mediaSourceInitialization;\n }\n\n public get readyState(): ReadyState {\n return this.m_mediaSource.readyState;\n }\n\n public get FrameRendered(): Promise {\n return this.m_frameRenderedPromise.Promise;\n }\n\n constructor(logger: ILogger, mediaSource: MediaSource, mediaType: MediaType, bufferQueue: BufferQueue) {\n this.m_logger = logger.subLogger('MseMediaSource: ' + mediaType);\n switch (mediaType) {\n case MediaType.video:\n this.m_mediaSpecification = MseMediaSource.VideoSourceBufferType;\n break;\n case MediaType.audio:\n this.m_mediaSpecification = MseMediaSource.AudioSourceBufferType;\n break;\n case MediaType.video_webm:\n this.m_mediaSpecification = MseMediaSource.VideoWebMSourceBufferType;\n break;\n default:\n throw new Error(`Unknown media type: ${mediaType}`);\n }\n\n this.m_mediaSource = mediaSource;\n this.m_mediaSource.addEventListener(MediaSourceEvent.sourceClose, this.onSourceClosed);\n\n this.m_mediaSourceInitialization = this.open();\n this.m_queue = bufferQueue;\n\n this.m_frameRenderedPromise = new PromiseCompletionSourceVoid();\n }\n\n public dispose(): void {\n this.m_logger.debug?.trace('dispose()');\n\n if (this.m_mseSourceBuffer !== undefined) {\n this.m_mseSourceBuffer.removeEventListener(SourceBufferEvent.updateEnd, this.onUpdateEnded);\n this.m_mseSourceBuffer.dispose();\n }\n\n this.m_queue.dispose();\n this.m_mediaSource.removeEventListener(MediaSourceEvent.sourceClose, this.onSourceClosed);\n }\n\n public async reset() {\n this.m_resetInProgress = true;\n\n try {\n this.m_logger.debug?.trace('reset()');\n\n //important to clear the queue before the first await. Otherwise, we will clear the new stuff that is queued while we do the reset.\n this.m_queue.reset();\n\n if (this.m_mseSourceBuffer !== undefined) {\n await this.m_mseSourceBuffer.reset();\n await this.m_mseSourceBuffer.updatingEnd();\n if (this.m_mseSourceBuffer.isUpdating) {\n this.m_logger.warn?.trace('unexpected MseSourceBuffer.isUpdating flag is on');\n }\n }\n\n // clearLiveSeekableRange Not supported in IE11\n // To be removed may be because there is no setLiveSeekableRange\n if (MediaSource.prototype.clearLiveSeekableRange !== undefined) {\n this.m_mediaSource.clearLiveSeekableRange();\n }\n this.m_mediaSource.duration = 0;\n } finally {\n this.m_logger.debug?.trace('reset completed()');\n this.m_resetInProgress = false;\n\n //Try to dequeue in case buffers where\n if (!this.m_queue.isEmpty) {\n this.m_logger.debug?.trace('Dequeuing after reset()');\n this.onUpdateEnded();\n }\n }\n }\n\n public decode(segmentInfo: SegmentInfo, buffer: Int8Array) {\n if (this.sourceBuffer.isUpdating || !this.m_queue.isEmpty || this.m_resetInProgress || this.m_isPaused) {\n this.m_queue.enqueue(segmentInfo, buffer);\n return;\n }\n\n this.sourceBuffer.decode(segmentInfo, buffer);\n }\n\n public pause() {\n this.m_isPaused = true;\n }\n\n public play() {\n this.m_isPaused = false;\n this.onUpdateEnded();\n }\n\n private async open(): Promise {\n await MseMediaSourceExtensions.openEventPromise(this.m_mediaSource);\n this.m_mediaSource.duration = Infinity;\n this.m_mseSourceBuffer = new MseSourceBuffer(this.m_logger, this.m_mediaSource.addSourceBuffer(this.m_mediaSpecification), this.m_mediaSource);\n this.m_mseSourceBuffer.addEventListener(SourceBufferEvent.updateEnd, this.onUpdateEnded);\n this.m_logger.debug?.trace('MediaSource:', this.m_mediaSource.readyState, 'with', this.m_mediaSpecification);\n }\n\n private readonly onUpdateEnded = () => {\n const toResolve = this.m_frameRenderedPromise;\n this.m_frameRenderedPromise = new PromiseCompletionSourceVoid();\n toResolve.resolve();\n\n this.m_decoderOutputFps.addFrame('p');\n\n // It often happen that when this event is fired, the sourceBuffer is still in updating state. It will fire again.\n if (this.sourceBuffer.isUpdating || this.m_resetInProgress || this.m_isPaused || this.m_queue.isEmpty) {\n this.m_logger.intense?.trace('onUpdateEnded no dequeuing, IsUpdating:', this.sourceBuffer.isUpdating, 'IsEmpty:', this.m_queue.isEmpty, 'ResetInProgress:', this.m_resetInProgress, 'IsPaused:', this.m_isPaused);\n return;\n }\n\n // Periodically do the cache cleanup to avoid storing 10 minutes of video in RAM and add a bit of randomness to help spread this operation in time accross tiles.\n if (this.m_nextCleanupTime < Date.now()) {\n this.m_nextCleanupTime = Date.now() + ((DebugSwitch.MseCleanupFreqSeconds + Math.random()) * 1000);\n this.sourceBuffer.emptyCache();\n if (this.sourceBuffer.isUpdating) {\n return; // emptyCache may set \"isUpdating\" flag to true, in that case we can't append a buffer right now and need to retry later.\n }\n }\n\n const [segmentInfo, buffer] = this.m_queue.dequeue();\n this.m_logger.intense?.trace('onUpdateEnded will appendBuffer', segmentInfo.MediaTime, segmentInfo.FrameTime, buffer.length, 'bytes');\n\n try {\n this.sourceBuffer.decode(segmentInfo, buffer);\n } catch (e) {\n this.m_logger.error?.trace('Failed to append buffer to SourceBuffer. ReadyState:', this.m_mediaSource.readyState, e);\n }\n }\n\n private readonly onSourceClosed = (ev: Event) => {\n this.m_logger.error?.trace('Media source was closed', ev);\n }\n\n public debugStatus(indent: number): string {\n return `MseMediaSource ${this.m_mediaSpecification} ${this.m_decoderOutputFps.getFrameRate().frameRateToString()}` + Utils.indentNewLine(indent) +\n 'Paused: ' + this.m_isPaused + Utils.indentNewLine(indent) +\n 'Reset in progress: ' + this.m_resetInProgress + Utils.indentNewLine(indent) +\n 'Queue length: ' + this.m_queue.count + Utils.indentNewLine(indent) +\n (this.m_mseSourceBuffer?.debugStatus(indent + Utils.Indentation) ?? 'No mse source buffer');\n }\n}\n\nexport class MseMediaSourceExtensions {\n public static async openEventPromise(mediaSource: MediaSource): Promise {\n return MseMediaSourceExtensions.awaitEvent(mediaSource, 'sourceopen');\n }\n\n private static async awaitEvent(mediaSource: MediaSource, eventName: string): Promise {\n return new Promise((resolve) => {\n mediaSource.addEventListener(eventName, () => resolve(), { once: true });\n });\n }\n}\n\nexport enum MediaSourceReadyState {\n closed = 'closed',\n ended = 'ended',\n open = 'open'\n}\n\nenum MediaSourceEvent {\n sourceClose = 'sourceclose',\n sourceEnded = 'sourceended',\n sourceOpen = 'sourceopen'\n}\n\nexport enum MediaType {\n video = 'video',\n audio = 'audio',\n video_webm = 'video-webm'\n}\n","import { ResolvedFrameTime } from '../../utils/TimeResolver';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { Utils } from '../../utils/Utils';\n\nexport class SequenceInfo {\n private static readonly ENDTIME_TO_FRAMETIME_THRESHOLD = 200 // acceptable 200ms gap between endTime and frameTime\n\n public readonly StartResolvedTime!: ResolvedFrameTime;\n\n private readonly SequenceId: number;\n\n private SegmentId: number;\n\n private m_endResolvedTime: ResolvedFrameTime;\n\n constructor(segmentId: number, sequenceId: number, startResolvedTime: ResolvedFrameTime, endResolvedTime: ResolvedFrameTime) {\n this.SegmentId = segmentId;\n this.SequenceId = sequenceId;\n this.StartResolvedTime = startResolvedTime;\n this.m_endResolvedTime = endResolvedTime;\n this.EndResolvedTime = endResolvedTime;\n }\n\n public set EndResolvedTime(resolvedEndTime: ResolvedFrameTime) {\n this.m_endResolvedTime = resolvedEndTime;\n if (this.DurationMs <= 0) throw new Error('Invalid sequence duration; StartTime:' + Utils.formatDateUTC(this.StartResolvedTime.frameTime) + ', EndTime:' + Utils.formatDateUTC(this.EndResolvedTime.frameTime));\n }\n\n public get EndResolvedTime(): ResolvedFrameTime {\n return this.m_endResolvedTime;\n }\n\n public get DurationMs(): number {\n return this.m_endResolvedTime.frameTime.getTime() - this.StartResolvedTime.frameTime.getTime();\n }\n\n public static from(segmentInfo: SegmentInfo): SequenceInfo {\n const frameTime = segmentInfo.FrameTimeAsDate;\n const endTime = Utils.addSeconds(frameTime, segmentInfo.TotalSeconds);\n return new SequenceInfo(segmentInfo.Id, segmentInfo.SequenceId, new ResolvedFrameTime(frameTime, segmentInfo.MediaTime), new ResolvedFrameTime(endTime, segmentInfo.MediaTime + segmentInfo.TotalMilliseconds));\n }\n\n public add(segmentInfo: SegmentInfo): void {\n this.SegmentId = segmentInfo.Id;\n const segmentEndTime = Utils.addSeconds(segmentInfo.FrameTimeAsDate, segmentInfo.TotalSeconds);\n this.EndResolvedTime = new ResolvedFrameTime(segmentEndTime, segmentInfo.MediaTime + segmentInfo.TotalMilliseconds);\n }\n\n public isInSequence(segmentInfo: SegmentInfo): boolean {\n return this.SequenceId === segmentInfo.SequenceId && this.SegmentId + 1 === segmentInfo.Id && (Math.abs(segmentInfo.FrameTimeAsDate.getTime() - this.EndResolvedTime.frameTime.getTime()) <= SequenceInfo.ENDTIME_TO_FRAMETIME_THRESHOLD);\n }\n\n public debugStatus(indent: number): string {\n return 'SequenceInfo' + Utils.indentNewLine(indent) +\n 'SequenceId: ' + this.SequenceId + Utils.indentNewLine(indent) +\n 'SegmentId: ' + this.SegmentId + Utils.indentNewLine(indent) +\n 'StarTime: ' + this.StartResolvedTime.toString() + Utils.indentNewLine(indent) +\n 'EndTime: ' + this.EndResolvedTime.toString();\n }\n}\n","import { ILogger } from '../../utils/logger';\nimport { SegmentInfo } from '../../services/eventHub';\n\nexport class BufferQueue {\n private readonly m_logger: ILogger;\n\n private readonly m_queue: [SegmentInfo, Int8Array][];\n\n public get isEmpty(): boolean {\n return this.m_queue.length === 0;\n }\n\n public get count(): number {\n return this.m_queue.length;\n }\n\n constructor(logger: ILogger) {\n this.m_logger = logger.subLogger('BufferQueue');\n this.m_queue = new Array<[SegmentInfo, Int8Array]>(0);\n }\n\n public dispose() {\n this.m_logger.debug?.trace(`dispose() (dropping ${this.m_queue.length} buffers)`);\n this.m_queue.length = 0;\n }\n\n public reset() {\n this.m_logger.debug?.trace(`reset() (dropping ${this.m_queue.length} buffers)`);\n this.m_queue.length = 0;\n }\n\n public enqueue(info: SegmentInfo, buffer: Int8Array) {\n const queueLength = this.m_queue.push([info, buffer]);\n this.m_logger.intense?.trace('Queued buffer', info.FrameTime, info.MediaTime, buffer.length, 'bytes. Queue length:', queueLength);\n }\n\n public dequeue(): [SegmentInfo, Int8Array] {\n const dequeuedItem = this.m_queue.shift();\n if (dequeuedItem === undefined) {\n throw new Error('Check IsEmpty first');\n }\n\n return dequeuedItem;\n }\n}\n","import { TimeSpan } from './TimeSpan';\n\nexport class Timer {\n private readonly m_callback: () => void;\n private readonly m_frequency: TimeSpan;\n\n private m_timerId: number | undefined;\n\n constructor(callback: () => void, frequency: TimeSpan) {\n this.m_callback = callback;\n this.m_frequency = frequency;\n }\n\n public dispose(): void {\n this.stop();\n }\n\n public start() {\n if (this.m_timerId !== undefined) {\n return;\n }\n this.m_timerId = window.setInterval(this.m_callback, this.m_frequency.InMs);\n }\n\n public stop() {\n if (this.m_timerId !== undefined) {\n window.clearInterval(this.m_timerId);\n this.m_timerId = undefined;\n }\n }\n}\n","import { VideoWatermarkingRenderer } from '../../utils/VideoWatermarkingRenderer';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { ILogger } from '../../utils/logger';\nimport { Timer } from '../../utils/Timer';\nimport { TimeSpan } from '../../utils/TimeSpan';\n\nexport class MseWatermarkOverlay {\n private readonly m_htmlVideoElement: HTMLVideoElement;\n\n private readonly m_vwoRenderingCanvasElement: HTMLCanvasElement;\n\n private readonly m_logger: ILogger;\n\n private readonly m_timer: Timer;\n\n private readonly m_divContainer: HTMLDivElement;\n\n private m_watermarkRenderer?: VideoWatermarkingRenderer;\n\n private m_watermarkNeedsRefresh: boolean;\n\n public get watermarkRenderer(): VideoWatermarkingRenderer | undefined {\n return this.m_watermarkRenderer;\n }\n\n constructor(logger: ILogger, divContainer: HTMLDivElement, videoElement: HTMLVideoElement, vwoRenderingCanvasElement: HTMLCanvasElement) {\n this.m_logger = logger;\n this.m_divContainer = divContainer;\n this.m_htmlVideoElement = videoElement;\n this.m_vwoRenderingCanvasElement = vwoRenderingCanvasElement;\n this.m_watermarkRenderer = undefined;\n this.m_watermarkNeedsRefresh = true;\n this.m_timer = new Timer(this.drawWatermarkOverlay, new TimeSpan(500));\n }\n\n public dispose() {\n this.m_timer?.dispose();\n this.clearCanvas();\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig) {\n // Only create a new WatermarkRenderer if the config is enabled\n if (videoWatermarkingConfig !== VideoWatermarkConfig.Disabled) {\n this.m_watermarkRenderer = new VideoWatermarkingRenderer(videoWatermarkingConfig, this.m_vwoRenderingCanvasElement.scrollWidth, this.m_vwoRenderingCanvasElement.scrollHeight);\n this.m_watermarkNeedsRefresh = true;\n this.drawWatermarkOverlay();\n this.m_watermarkNeedsRefresh = true;\n } else {\n this.m_watermarkRenderer = undefined;\n this.clearCanvas();\n }\n }\n\n public toggleOverlay(enabled: boolean) {\n this.m_logger.debug?.trace(`Setting watermark overlay enabled to ${enabled}`);\n this.clearCanvas();\n if (enabled) {\n this.m_watermarkNeedsRefresh = true;\n this.drawWatermarkOverlay();\n this.m_watermarkNeedsRefresh = true;\n this.m_timer.start();\n } else {\n this.m_timer.stop();\n }\n }\n\n private clearCanvas() {\n const context = this.m_vwoRenderingCanvasElement.getContext('2d');\n if (!context) {\n throw new Error('Unable to get context for VWO rendering canvas');\n }\n context.clearRect(0, 0, this.m_vwoRenderingCanvasElement.width, this.m_vwoRenderingCanvasElement.height);\n this.m_watermarkNeedsRefresh = true;\n }\n\n private readonly drawWatermarkOverlay = () => {\n if (this.m_watermarkRenderer === undefined) {\n return;\n }\n const canvas = this.m_vwoRenderingCanvasElement;\n if (canvas.scrollWidth === canvas.width && canvas.scrollHeight === canvas.height && !this.m_watermarkNeedsRefresh) {\n return;\n }\n const video = this.m_htmlVideoElement;\n const ctx = canvas.getContext('2d');\n\n if (ctx !== null) {\n let width = video.videoWidth;\n let height = video.videoHeight;\n let drawnWithVideoDimensions = true;\n if (width === 0 || height === 0) {\n width = this.m_divContainer.scrollWidth;\n height = this.m_divContainer.scrollHeight;\n if (width === 0 || height === 0) {\n return;\n }\n drawnWithVideoDimensions = false;\n }\n\n // Handle resizing\n canvas.width = canvas.scrollWidth;\n canvas.height = canvas.scrollHeight;\n\n // Scale and draw the picture to the canvas buffer\n const scaleW = canvas.width / width;\n const scaleH = canvas.height / height;\n let scale; let offsetW = 0; let offsetH = 0;\n if (scaleW > scaleH) {\n scale = scaleH;\n offsetW = (canvas.width - (width * scale)) / 2 / scale;\n } else {\n scale = scaleW;\n offsetH = (canvas.height - (height * scale)) / 2 / scale;\n }\n ctx.scale(scale, scale);\n this.m_watermarkRenderer.updateVideoWatermarkingOverlaySize(width, height);\n this.m_watermarkRenderer.drawVideoWatermarkingOverlay(ctx, offsetW, offsetH);\n ctx.scale(1 / scale, 1 / scale); // always clean up! Reverse the scale\n this.m_watermarkNeedsRefresh = !drawnWithVideoDimensions;\n }\n }\n}\n","import { ILogger } from '../../utils/logger';\nimport { MseMediaSource, MediaType } from './MseMediaSource';\nimport { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { MseWatermarkOverlay } from './MseWatermarkOverlay';\nimport { PlaySpeed } from '../PlaySpeed';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { BufferQueue } from '../msePlayer';\nimport { IFrameRateProvider } from '../../utils/FrameRateComputer';\nimport { DebugSwitch } from '../../utils/Config';\nimport { Utils } from '../../utils/Utils';\nimport { ZoomConfiguration } from '../ZoomConfiguration';\nimport { Resolution } from '../../utils/Resolution';\nimport { RenderingCanvas } from '../../utils/RenderingCanvas';\n\nexport class MseHtmlVideoElement {\n private static readonly RenderingDelayToleranceMilliseconds = 5000; //for IE\n\n private readonly m_logger: ILogger;\n\n private readonly m_htmlVideoElement: HTMLVideoElement;\n\n private readonly m_renderingCanvas: RenderingCanvas;\n\n private readonly m_frameRateProvider: IFrameRateProvider;\n\n private readonly m_mseMediaSource: MseMediaSource;\n\n private readonly m_timeUpdateEvent = new LiteEvent();\n\n private readonly m_errorEvent = new LiteEvent();\n\n private readonly m_antiJitter = 200;\n\n private readonly m_watermarkOverlay: MseWatermarkOverlay;\n\n private m_renderInCanvas = false;\n\n private m_isPlayerActive = false;\n\n private m_zoomConfiguration: ZoomConfiguration = ZoomConfiguration.NoZoom;\n\n private get currentMediaTime(): number {\n return Math.trunc(this.m_htmlVideoElement.currentTime * 1000);\n }\n\n private set currentMediaTime(mediaTime: number) {\n // IE Complains when the same value is assigned (InvalidStateError)\n if (this.currentMediaTime !== mediaTime) {\n this.m_logger.info?.trace(`Setting video element media time to ${mediaTime}`);\n this.m_htmlVideoElement.currentTime = mediaTime / 1000;\n } else {\n this.m_logger.info?.trace(`About to set element media time to ${mediaTime} but was already that value`);\n }\n }\n\n public get readyState(): number {\n return this.m_htmlVideoElement.readyState;\n }\n\n public set playSpeed(playSpeed: PlaySpeed) {\n this.m_htmlVideoElement.playbackRate = playSpeed.Value;\n }\n\n public get timeUpdated(): ILiteEvent {\n return this.m_timeUpdateEvent.expose();\n }\n\n public get errorOccurred(): ILiteEvent {\n return this.m_errorEvent.expose();\n }\n\n public get FrameRendered(): Promise {\n return this.m_mseMediaSource.FrameRendered;\n }\n\n public get initialization(): Promise {\n return this.m_mseMediaSource.initialization;\n }\n\n public get streamResolution(): Resolution {\n if (this.m_htmlVideoElement.videoWidth === 0 || this.m_htmlVideoElement.videoHeight === 0) {\n return Resolution.None;\n }\n return Resolution.build(this.m_htmlVideoElement.videoWidth, this.m_htmlVideoElement.videoHeight);\n }\n\n public get tileResolution(): Resolution {\n if (this.m_htmlVideoElement.scrollWidth === 0 || this.m_htmlVideoElement.scrollHeight === 0) {\n return Resolution.None;\n }\n return Resolution.build(this.m_htmlVideoElement.scrollWidth, this.m_htmlVideoElement.scrollHeight);\n }\n\n constructor(logger: ILogger, divContainer: HTMLDivElement, videoElement: HTMLVideoElement, renderingCanvas: RenderingCanvas, frameRateProvider: IFrameRateProvider) {\n this.m_logger = logger.subLogger('MseHtmlVideoElement');\n this.m_htmlVideoElement = videoElement;\n this.m_renderingCanvas = renderingCanvas;\n this.m_frameRateProvider = frameRateProvider;\n\n // Periodic update of the media time the HTMLVideoElement. Will not fire if there is no more data to play.\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.timeupdate, this.onTimeUpdate, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.error, this.onError, false);\n\n // this.subscribeToEveryHtmlVideoElementEvents(); // When investigating HtmlVideoElements behavior\n\n const mediaSource = new MediaSource();\n this.m_htmlVideoElement.src = window.URL.createObjectURL(mediaSource);\n this.m_mseMediaSource = new MseMediaSource(logger, mediaSource, MediaType.video, new BufferQueue(logger));\n\n this.m_watermarkOverlay = new MseWatermarkOverlay(this.m_logger, divContainer, videoElement, this.m_renderingCanvas.canvasElement);\n }\n\n public dispose() {\n this.m_logger.debug?.trace('dispose()');\n this.m_watermarkOverlay.dispose();\n this.m_htmlVideoElement.removeEventListener(HtmlVideoElementEvents.timeupdate, this.onTimeUpdate, false);\n this.m_htmlVideoElement.removeEventListener(HtmlVideoElementEvents.error, this.onError, false);\n\n this.m_mseMediaSource.dispose();\n window.URL.revokeObjectURL(this.m_htmlVideoElement.src);\n this.m_htmlVideoElement.src = '';\n }\n\n public getSnapshot(fromZoomedImage: boolean): ImageData | null {\n if (fromZoomedImage && this.m_zoomConfiguration.IsZoomed) {\n return this.m_renderingCanvas.getSnapshot();\n } else {\n const snapshotCanvas = document.createElement('canvas');\n snapshotCanvas.width = this.m_htmlVideoElement.videoWidth;\n snapshotCanvas.height = this.m_htmlVideoElement.videoHeight;\n const context = snapshotCanvas.getContext('2d');\n if (context === null) {\n this.m_logger.warn?.trace('getSnapshot(): Failed to obtain the 2d context of the canvas');\n throw new Error('Failed to obtain the 2d context of the canvas');\n }\n\n context.drawImage(this.m_htmlVideoElement, 0, 0, snapshotCanvas.width, snapshotCanvas.height);\n\n this.m_logger.info?.trace(`getSnapshot(): returning a ${snapshotCanvas.width}x${snapshotCanvas.height} image`);\n\n const watermarkRenderer = this.m_watermarkOverlay.watermarkRenderer;\n if (watermarkRenderer !== undefined) {\n watermarkRenderer.updateVideoWatermarkingOverlaySize(snapshotCanvas.width, snapshotCanvas.height);\n watermarkRenderer.drawVideoWatermarkingOverlay(context, 0, 0);\n }\n\n return context.getImageData(0, 0, snapshotCanvas.width, snapshotCanvas.height);\n }\n }\n\n public async reset() {\n this.m_logger.debug?.trace('reset()');\n await this.m_mseMediaSource.reset();\n this.m_logger.debug?.trace('reset() - completed. ReadyState:', HtmlVideoElementReadyState[this.m_htmlVideoElement.readyState], this.state());\n }\n\n public play() {\n this.m_logger.debug?.trace('play()');\n // IE doesnt return a Promise\n const play = this.m_htmlVideoElement.play();\n if (play !== undefined) {\n play.catch((error) => {\n this.m_logger.intense?.trace(`play() command was interrupted by a call to pause(): ${error}`);\n });\n }\n this.m_mseMediaSource.play();\n }\n\n public pause() {\n this.m_logger.debug?.trace('pause()');\n this.m_htmlVideoElement.pause();\n this.m_mseMediaSource.pause();\n }\n\n public decode(segmentInfo: SegmentInfo, buffer: Int8Array) {\n this.m_mseMediaSource.decode(segmentInfo, buffer);\n\n //Debugging, force an error to provoke a request mjpeg transcoding from the server\n if (DebugSwitch.IsMseBroken) {\n this.onError();\n }\n\n const currentMediaTime = this.currentMediaTime;\n\n if (segmentInfo.MediaTime - currentMediaTime > MseHtmlVideoElement.RenderingDelayToleranceMilliseconds) {\n const timeFor2Frames = this.m_frameRateProvider.getFrameRate().timeBetween2Frames * 2;\n const minimumMediaTime = segmentInfo.MediaTime - Math.max(timeFor2Frames, this.m_antiJitter);\n const maximumSeekMediaTime = this.getMaximumSeekMediaTime();\n const seekMediaTime = Math.min(minimumMediaTime, maximumSeekMediaTime);\n\n // Readjust the video element's time if it drags behind the last frame received by over the tolerated amount of time. This happens when the webpage is no longer in focus.\n this.m_logger.debug?.trace('Out of sync with received frame. Current time:', currentMediaTime, ', Last frame received:', segmentInfo.MediaTime, 'Difference of:', segmentInfo.MediaTime - currentMediaTime, '>', MseHtmlVideoElement.RenderingDelayToleranceMilliseconds, 'Maximum seek time is', maximumSeekMediaTime, 'Jumping to: ', seekMediaTime);\n\n this.currentMediaTime = seekMediaTime;\n }\n }\n\n public updateZoomConfig(zoomConfig: ZoomConfiguration): void {\n if (this.m_zoomConfiguration.equals(zoomConfig)) {\n return;\n }\n this.m_zoomConfiguration = zoomConfig;\n if (this.m_isPlayerActive) {\n this.applyZoom();\n }\n }\n\n public setPlayerActive(isPlayerActive: boolean): void {\n if (isPlayerActive) {\n this.applyZoom();\n } else if (this.m_isPlayerActive) {\n this.m_renderInCanvas = false;\n }\n this.m_isPlayerActive = isPlayerActive;\n }\n\n private applyZoom() {\n // If we're switching to a zoomed view, hide the html video element and display the renderingCanvas on which the zoom is applied\n if (this.m_zoomConfiguration.IsZoomed) {\n if (!this.m_renderInCanvas) {\n this.m_renderInCanvas = true;\n // Only call updateCanvas once when doing the switch, as it will get called by requestAnimationFrame\n this.updateCanvas();\n // The VWO is drawn directly on the renderingCanvas when zoomed.\n // Disable the MseWatermarkOverlay.\n this.m_watermarkOverlay.toggleOverlay(false);\n }\n } else {\n this.m_renderInCanvas = false;\n this.m_watermarkOverlay.toggleOverlay(true);\n }\n }\n\n private getMaximumSeekMediaTime(): number {\n let maximumSeekTime = 0;\n for (let i = 0; i < this.m_htmlVideoElement.buffered.length; ++i) {\n maximumSeekTime = Math.max(maximumSeekTime, this.m_htmlVideoElement.buffered.end(i));\n }\n\n return maximumSeekTime * 1000; //The times supplied by htmlVideoElement are in seconds. We work in mediaTime (ms)\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig) {\n this.m_watermarkOverlay.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n this.m_renderingCanvas.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n private readonly onTimeUpdate = () => {\n const mediaTime = this.currentMediaTime;\n this.m_logger.intense?.trace('MediaTime update:', mediaTime, 'ReadyState:', HtmlVideoElementReadyState[this.m_htmlVideoElement.readyState], this.state());\n this.m_timeUpdateEvent.trigger(mediaTime);\n }\n\n private readonly onError = () => {\n this.m_logger.error?.trace('Error:', this.m_htmlVideoElement.error?.code, 'details:', this.m_htmlVideoElement.error?.message);\n this.m_errorEvent.trigger();\n }\n\n private readonly updateCanvas = () => {\n if (this.m_renderInCanvas) {\n // Only draw if we have content in the video element that we can pass to the canvas\n if (this.m_htmlVideoElement.videoWidth !== 0 && this.m_htmlVideoElement.videoHeight !== 0) {\n this.m_renderingCanvas.draw(this.m_htmlVideoElement, Resolution.build(this.m_htmlVideoElement.videoWidth, this.m_htmlVideoElement.videoHeight), this.m_zoomConfiguration);\n }\n requestAnimationFrame(this.updateCanvas);\n }\n }\n /*\n * We don't usually keep dead code but this is long to do and we keep redoing it each time we investigate something on the video so keeping it this time\n *\n private subscribeToEveryHtmlVideoElementEvents() {\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.timeupdate, () => {\n console.warn('HtmlVideoElement sent event timeupdate');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.waiting, () => {\n console.warn('HtmlVideoElement sent event waiting');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.abort, () => {\n console.warn('HtmlVideoElement sent event abort');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.canplay, () => {\n console.warn('HtmlVideoElement sent event canplay');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.canplaythrough, () => {\n console.warn('HtmlVideoElement sent event canplaythrough');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.durationchange, () => {\n console.warn('HtmlVideoElement sent event durationchange to ' + this.m_htmlVideoElement.duration + ' sec');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.emptied, () => {\n console.warn('HtmlVideoElement sent event emptied');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.ended, () => {\n console.warn('HtmlVideoElement sent event ended');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.error, () => {\n console.warn('HtmlVideoElement sent event error');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.loadeddata, () => {\n console.warn('HtmlVideoElement sent event loadeddata');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.loadedmetadata, () => {\n console.warn('HtmlVideoElement sent event loadedmetadata');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.loadstart, () => {\n console.warn('HtmlVideoElement sent event loadstart');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.pause, () => {\n console.warn('HtmlVideoElement sent event pause');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.play, () => {\n console.warn('HtmlVideoElement sent event play');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.playing, () => {\n console.warn('HtmlVideoElement sent event playing');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.progress, () => {\n console.warn('HtmlVideoElement sent event progress: ' + this.m_htmlVideoElement.buffered.length + ' ranges');\n for (let i = 0; i < this.m_htmlVideoElement.buffered.length; ++i) {\n console.warn('Range ' + i + ' ' + this.m_htmlVideoElement.buffered.start(i) + ' to ' + this.m_htmlVideoElement.buffered.end(i));\n }\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.ratechange, () => {\n console.warn('HtmlVideoElement sent event ratechange');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.seeked, () => {\n console.warn('HtmlVideoElement sent event seeked');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.seeking, () => {\n console.warn('HtmlVideoElement sent event seeking');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.stalled, () => {\n console.warn('HtmlVideoElement sent event stalled');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.suspend, () => {\n console.warn('HtmlVideoElement sent event suspend');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.timeupdate, () => {\n console.warn('HtmlVideoElement sent event timeupdate');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.volumechange, () => {\n console.warn('HtmlVideoElement sent event volumechange');\n }, false);\n this.m_htmlVideoElement.addEventListener(HtmlVideoElementEvents.waiting, () => {\n console.warn('HtmlVideoElement sent event waiting');\n }, false);\n }\n */\n\n public state(): string {\n return `current time: ${this.m_htmlVideoElement.currentTime} playbackRate: ${this.m_htmlVideoElement.playbackRate} duration: ${this.m_htmlVideoElement.duration} ended: ${this.m_htmlVideoElement.ended} error: ${this.m_htmlVideoElement.error} network state: ${this.m_htmlVideoElement.networkState} paused: ${this.m_htmlVideoElement.paused}`;\n }\n\n public debugStatus(indent: number): string {\n const frameRate = this.m_frameRateProvider.getFrameRate();\n\n return 'MseHtmlVideoElement' + Utils.indentNewLine(indent) +\n 'MediaTime: ' + this.currentMediaTime + Utils.indentNewLine(indent) +\n 'ReadyState: ' + this.readyState + Utils.indentNewLine(indent) +\n 'PlaySpeed: ' + this.playSpeed + Utils.indentNewLine(indent) +\n 'FrameRate: ' + frameRate.frameRateToString() + `(${frameRate.keyFrameRateToString()})` + Utils.indentNewLine(indent) +\n 'HtmlState: ' + this.state() + Utils.indentNewLine(indent) +\n this.m_mseMediaSource.debugStatus(indent + Utils.Indentation);\n }\n}\n\nexport enum HtmlVideoElementReadyState {\n Nothing = 0,\n MetaData = 1,\n CurrentData = 2,\n FutureData = 3,\n EnoughData = 4\n}\n\nexport enum HtmlVideoElementEvents {\n abort = 'abort',\n canplay = 'canplay',\n canplaythrough = 'canplaythrough',\n durationchange = 'durationchange',\n emptied = 'emptied',\n ended = 'ended',\n error = 'error',\n loadeddata = 'loadeddata',\n loadedmetadata = 'loadedmetadata',\n loadstart = 'loadstart',\n pause = 'pause',\n play = 'play',\n playing = 'playing',\n progress = 'progress',\n ratechange = 'ratechange',\n seeked = 'seeked',\n seeking = 'seeking',\n stalled = 'stalled',\n suspend = 'suspend',\n timeupdate = 'timeupdate',\n volumechange = 'volumechange',\n waiting = 'waiting'\n}\n","import { ILogger } from '../../utils/logger';\nimport { MseMediaSource, MediaType } from '../mse/MseMediaSource';\nimport { SequenceInfo } from './SequenceInfo';\nimport { SegmentInfo } from '../../services/eventHub';\nimport { PlaySpeed } from '../PlaySpeed';\nimport { BufferQueue } from '../msePlayer';\nimport { Utils } from '../../utils/Utils';\n\nexport class MseHtmlAudioElement {\n private static readonly AudioSyncToleranceMilliseconds = 200;\n\n private static readonly AudioSyncMaxDifferenceMilliseconds= 2000;\n\n private readonly m_logger: ILogger;\n\n private readonly m_htmlAudioElement: HTMLAudioElement;\n\n private readonly m_mseMediaSource: MseMediaSource;\n\n private m_currentSequence: SequenceInfo | undefined;\n\n private m_isMuted: boolean;\n\n private m_isPlayable: boolean;\n\n private m_isPaused: boolean;\n\n private m_playSpeed: PlaySpeed;\n\n public get isMuted(): boolean {\n return this.m_isMuted;\n }\n\n constructor(logger: ILogger, audioElement: HTMLAudioElement) {\n this.m_logger = logger.subLogger('MseHtmlAudioElement');\n this.m_htmlAudioElement = audioElement;\n\n this.m_isMuted = true;\n this.m_isPaused = false;\n this.m_isPlayable = false;\n this.m_playSpeed = PlaySpeed._1x;\n\n const mediaSource = new MediaSource();\n this.m_htmlAudioElement.src = window.URL.createObjectURL(mediaSource);\n this.m_mseMediaSource = new MseMediaSource(logger, mediaSource, MediaType.audio, new BufferQueue(logger));\n }\n\n public dispose() {\n this.m_logger.debug?.trace('dispose()');\n window.URL.revokeObjectURL(this.m_htmlAudioElement.src);\n this.m_mseMediaSource.dispose();\n this.m_htmlAudioElement.src = '';\n }\n\n public get initialization(): Promise {\n return this.m_mseMediaSource.initialization;\n }\n\n public async reset() {\n this.m_logger.debug?.trace('reset()');\n await this.m_mseMediaSource.reset();\n // IE Complains when the same value is assigned (InvalidStateError)\n if (this.m_htmlAudioElement.currentTime !== 0) {\n this.m_htmlAudioElement.currentTime = 0;\n }\n this.m_logger.debug?.trace('reset() - completed');\n }\n\n public playLive() {\n this.m_logger.debug?.trace('playLive()');\n this.m_playSpeed = PlaySpeed._1x;\n this.m_isPaused = false;\n this.evaluatePlayability();\n }\n\n public play() {\n this.m_logger.debug?.trace('play()');\n this.m_isPaused = false;\n this.evaluatePlayability();\n }\n\n public pause() {\n this.m_logger.debug?.trace('pause()');\n this.m_isPaused = true;\n this.evaluatePlayability();\n }\n\n public mute() {\n this.m_logger.debug?.trace('mute()');\n this.m_isMuted = true;\n this.evaluatePlayability();\n }\n\n public unmute() {\n this.m_logger.debug?.trace('unmute()');\n this.m_isMuted = false;\n this.evaluatePlayability();\n }\n\n public setPlaySpeed(playSpeed: PlaySpeed): void {\n this.m_logger.debug?.trace('setPlaySpeed(', playSpeed.Value, ')');\n this.m_playSpeed = playSpeed;\n this.evaluatePlayability();\n }\n\n public decode(segmentInfo: SegmentInfo, buffer: Int8Array) {\n this.m_mseMediaSource.decode(segmentInfo, buffer);\n\n // Keep track of the current sequence info, in order to synchronize audio\n if (this.m_currentSequence !== undefined && this.m_currentSequence.isInSequence(segmentInfo)) {\n this.m_currentSequence.add(segmentInfo);\n } else if (!segmentInfo.IsInit) { // Init segment won't have the frame information needed to create a sequence\n // Starting a new sequence\n this.m_logger.intense?.trace('Starting a new sequence, segment ID:', segmentInfo.Id, 'FrameTime:', segmentInfo.FrameTime, 'MediaTime:', segmentInfo.MediaTime, 'Duration:', segmentInfo.TotalMilliseconds);\n this.m_currentSequence = SequenceInfo.from(segmentInfo);\n const currentTime = segmentInfo.MediaTime / 1000;\n // IE Complains when the same value is assigned (InvalidStateError)\n if (this.m_htmlAudioElement.currentTime !== currentTime) {\n this.m_htmlAudioElement.currentTime = currentTime;\n }\n }\n }\n\n public sync(frameTime: Date): void {\n if (this.m_currentSequence === undefined) {\n return;\n } else if (!this.m_isPlayable) {\n this.m_logger.intense?.trace('SYNC - No sync because audio is not playing');\n return; // We are not playing any audio\n } else if (frameTime < this.m_currentSequence.StartResolvedTime.frameTime) {\n this.m_logger.intense?.trace('SYNC - No sync because frameTime is before sequence start time');\n return; // No mapping available\n } else if (this.m_currentSequence.EndResolvedTime.frameTime < frameTime) {\n return; // We are late, but we haven't received the audio to play yet\n }\n\n const syncDetails = MseHtmlAudioElement.calculateSyncParameters(this.m_logger, this.m_currentSequence, frameTime, this.m_htmlAudioElement.currentTime * 1000, this.m_htmlAudioElement.playbackRate);\n if (syncDetails === null) {\n return;\n }\n if (syncDetails.SeekTime !== undefined) {\n const seekTime = syncDetails.SeekTime / 1000;\n // IE Complains when the same value is assigned (InvalidStateError)\n if (this.m_htmlAudioElement.currentTime !== seekTime) {\n this.m_htmlAudioElement.currentTime = seekTime;\n }\n }\n if (syncDetails.PlaySpeed !== undefined && syncDetails.PlaySpeed !== this.m_htmlAudioElement.playbackRate) {\n this.m_htmlAudioElement.playbackRate = syncDetails.PlaySpeed;\n }\n if (syncDetails.ShouldPlay) {\n this.m_htmlAudioElement.play();\n } else {\n this.m_htmlAudioElement.pause();\n }\n }\n\n public static calculateSyncParameters(logger: ILogger, sequenceInfo: SequenceInfo, frameTime: Date, currentMediaTime: number, currentPlaySpeed: number): SynchronizationParameters | null {\n const targetRange = frameTime.getTime() - sequenceInfo.StartResolvedTime.frameTime.getTime();\n const targetMediaTime = sequenceInfo.StartResolvedTime.mediaTime + targetRange;\n const desyncMs = Math.abs(currentMediaTime - targetMediaTime);\n logger.intense?.trace('SYNC - Current media time:', currentMediaTime, 'target:', targetMediaTime, 'diff:', desyncMs);\n\n if (desyncMs < this.AudioSyncToleranceMilliseconds) {\n return new SynchronizationParameters(true, 1, undefined);\n }\n if (desyncMs > this.AudioSyncMaxDifferenceMilliseconds) {\n if (currentMediaTime > targetMediaTime) {\n logger.warn?.trace('SYNC - Audio is', desyncMs, 'ms early, pausing audio...', '(Curr media time:', currentMediaTime, 'target:', targetMediaTime, ')');\n return new SynchronizationParameters(false, 1, undefined);\n } else {\n logger.warn?.trace('SYNC - Audio is', desyncMs, 'ms late, forcing seek...', '(Curr media time:', currentMediaTime, 'target:', targetMediaTime, ')');\n return new SynchronizationParameters(true, 1, targetMediaTime);\n }\n } else {\n // Try to tinker with the playspeed to smoothly resync the streams\n if (currentMediaTime < targetMediaTime && currentPlaySpeed !== 1.1) {\n logger.info?.trace('SYNC - Audio is', desyncMs, 'ms late', '(Curr media time:', currentMediaTime, 'target:', targetMediaTime, 'current playspeed:', currentPlaySpeed, ')');\n return new SynchronizationParameters(true, 1.1, undefined);\n } else if (currentMediaTime > targetMediaTime && currentPlaySpeed !== 0.9) {\n logger.info?.trace('SYNC - Audio is', desyncMs, 'ms early', '(Curr media time:', currentMediaTime, 'target:', targetMediaTime, ')');\n return new SynchronizationParameters(true, 0.9, undefined);\n } else {\n return null; // We're either paused due to a delay > 2000ms, or already at the modified speed. No modifications to do.\n }\n }\n }\n\n private evaluatePlayability(): void {\n const playable = this.m_playSpeed.Value === PlaySpeed._1x.Value && !this.m_isPaused && !this.m_isMuted;\n if (this.m_isPlayable !== playable) {\n this.m_logger.debug?.trace('Audio is now', playable ? 'playable' : 'unplayable');\n this.m_isPlayable = playable;\n this.m_htmlAudioElement.muted = !playable;\n }\n }\n\n public debugStatus(indent: number): string {\n return 'MseAudioElementWrapper' + Utils.indentNewLine(indent) +\n 'Muted: ' + this.m_isMuted + Utils.indentNewLine(indent) +\n 'Is Playable: ' + this.m_isPlayable + Utils.indentNewLine(indent) +\n 'Is Paused: ' + this.m_isPaused + Utils.indentNewLine(indent) +\n 'PlaySpeed: ' + this.m_playSpeed + Utils.indentNewLine(indent) +\n (this.m_currentSequence !== undefined ? this.m_currentSequence?.debugStatus(indent + Utils.Indentation) : 'No Sequence') + Utils.indentNewLine(indent) +\n this.m_mseMediaSource.debugStatus(indent + Utils.Indentation);\n }\n}\n\nclass SynchronizationParameters {\n public readonly ShouldPlay: boolean;\n public readonly PlaySpeed?: number;\n public readonly SeekTime?: number;\n\n constructor(shouldPlay: boolean, playSpeed: number | undefined, seekTime: number | undefined) {\n this.ShouldPlay = shouldPlay;\n this.PlaySpeed = playSpeed;\n this.SeekTime = seekTime;\n }\n}\n","import {\n GoHomeBody,\n GoToPresetBody,\n PanTiltBody,\n PtzFocusDistance,\n PtzIrisOperation,\n PtzRequest,\n PtzRequestBody,\n RunPatternBody,\n ZoomBody,\n FocusBody,\n IrisBody,\n LockBody,\n UnlockBody,\n} from './players/WebSocket/Messages';\nimport { PtzRequestBuilder } from './players/WebSocket/PtzRequestBuilder';\nimport { IPtzControlSession } from './players/WebSocket/WsSessionV2';\nimport { ILogger } from './utils/logger';\n\n/** This class regroups methods to send PTZ commands to supported cameras\n * @public */\nexport interface IPtzControl {\n /**\n * Start panning (horizontal) and tilting (vertical) movement\n * @param panSpeed - Pan speed, between 0 and 100%\n * @param tiltSpeed - Tilt speed, between 0 and 100%\n */\n startPanTilt(panSpeed: number, tiltSpeed: number): void;\n /** Stop any pan or tilt movement */\n stopPanTilt(): void;\n /**\n * Start zooming movement (optical zoom)\n * @param zoomSpeed - zoom speed between 0 and 100%\n */\n startZoom(zoomSpeed: number): void;\n /** Stop any zooming movement */\n stopZoom(): void;\n /** Move the camera to a preset position */\n goToPreset(preset: number): void;\n /** Move camera to the home position */\n goHome(): void;\n /** Start moving following a pattern */\n runPattern(pattern: number): void;\n /** Stop any PTZ movement */\n stop(): void;\n /** Lock */\n lock(): void;\n /** Unlock */\n unlock(): void;\n /** Start focus */\n startFocus(distance: PtzFocusDistance, speed: number): void;\n /** Stop focus */\n stopFocus(): void;\n /** Start iris */\n startIris(operation: PtzIrisOperation, speed: number): void;\n /** Stop iris */\n stopIris(): void;\n}\n\nexport interface IPtzThrottlingService {\n /**\n * Sends a command in the queue. It will be processed only if it's different from the last one.\n * @param command - Throttled command\n */\n enqueue(command: ThrottledCommand): void;\n\n /**\n * Only use this when you know what you are doing.\n * @param cmd - Command to send straight to the session.\n */\n bypassQueue(command: PtzRequest): void;\n}\n\nexport class ThrottledCommand {\n public command: PtzRequest;\n public body: PtzRequestBody;\n\n constructor(command: PtzRequest, body: PtzRequestBody) {\n this.command = command;\n this.body = body;\n }\n}\n\nexport class PtzControl implements IPtzControl {\n private readonly m_logger: ILogger;\n\n private readonly m_ptzRequestBuilder: PtzRequestBuilder;\n\n private readonly m_session: IPtzControlSession;\n\n private m_ptzThrottlingService: IPtzThrottlingService | undefined;\n\n public set PtzThrottlingService(value: IPtzThrottlingService | undefined) {\n this.m_ptzThrottlingService = value;\n }\n\n public constructor(\n logger: ILogger,\n session: IPtzControlSession,\n ptzRequestBuilder: PtzRequestBuilder,\n ptzThrottlingService: IPtzThrottlingService | undefined,\n ) {\n this.m_logger = logger.subLogger('PtzControl');\n this.m_session = session;\n this.m_ptzRequestBuilder = ptzRequestBuilder;\n this.m_ptzThrottlingService = ptzThrottlingService;\n }\n\n public startPanTilt(panSpeed: number, tiltSpeed: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStartPanTilt(panSpeed, tiltSpeed),\n new PanTiltBody(panSpeed, tiltSpeed),\n );\n this.sendCommand(throttledCommand);\n }\n\n public stopPanTilt(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStopPanTilt(),\n new PanTiltBody(null, null),\n );\n this.sendCommand(throttledCommand, true);\n }\n\n public startZoom(zoomSpeed: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStartZoom(zoomSpeed),\n new ZoomBody(zoomSpeed),\n );\n this.sendCommand(throttledCommand);\n }\n\n public stopZoom(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStopZoom(),\n new ZoomBody(null),\n );\n this.sendCommand(throttledCommand);\n }\n\n public goToPreset(preset: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildGoToPreset(preset),\n new GoToPresetBody(preset),\n );\n this.sendCommand(throttledCommand);\n }\n\n public goHome(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildGoHome(),\n new GoHomeBody(),\n );\n this.sendCommand(throttledCommand);\n }\n\n public runPattern(pattern: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildRunPattern(pattern),\n new RunPatternBody(pattern),\n );\n this.sendCommand(throttledCommand);\n }\n\n public lock(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildLock(),\n new LockBody(),\n );\n this.sendCommand(throttledCommand, true);\n }\n\n public unlock(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildUnlock(),\n new UnlockBody(),\n );\n this.sendCommand(throttledCommand, true);\n }\n\n public stop() {\n this.stopPanTilt();\n this.stopZoom();\n }\n\n public startFocus(distance: PtzFocusDistance, speed: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStartFocus(distance, speed),\n new FocusBody(distance, speed),\n );\n this.sendCommand(throttledCommand);\n }\n\n public stopFocus(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStopFocus(),\n new FocusBody(null, null),\n );\n this.sendCommand(throttledCommand);\n }\n\n public startIris(operation: PtzIrisOperation, speed: number): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStartIris(operation, speed),\n new IrisBody(operation, speed),\n );\n this.sendCommand(throttledCommand);\n }\n\n public stopIris(): void {\n const throttledCommand = new ThrottledCommand(\n this.m_ptzRequestBuilder.buildStopIris(),\n new IrisBody(null, null),\n );\n this.sendCommand(throttledCommand);\n }\n\n private sendCommand(command: ThrottledCommand, bypass: boolean = false): void {\n if (this.m_ptzThrottlingService) {\n if (!bypass) {\n this.m_ptzThrottlingService.enqueue(command);\n } else {\n this.m_ptzThrottlingService.bypassQueue(command.command);\n }\n } else {\n try {\n this.m_session.sendCommand(command.command);\n } catch (error) {\n this.m_logger.error?.trace('Error while trying to send PTZ request:', error);\n throw error;\n }\n }\n }\n}\n","import { PtzRequest, PtzSubCommand, PanTiltBody, ZoomBody, GoToPresetBody, RunPatternBody, GoHomeBody, LockBody, UnlockBody, GoToBody, PtzFocusDistance, FocusBody, PtzIrisOperation, IrisBody } from './Messages';\n\nexport class PtzRequestBuilder {\n private readonly m_channelId: number;\n\n public constructor(channelId: number) {\n this.m_channelId = channelId;\n }\n\n public buildStartPanTilt(pan: number, tilt: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.PanTilt, new PanTiltBody(pan, tilt));\n }\n\n public buildStopPanTilt(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.PanTilt, new PanTiltBody(null, null));\n }\n\n public buildStartZoom(zoom: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Zoom, new ZoomBody(zoom));\n }\n\n public buildStopZoom(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Zoom, new ZoomBody(null));\n }\n\n public buildGoToPreset(preset: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.GoToPreset, new GoToPresetBody(preset));\n }\n\n public buildRunPattern(pattern: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.RunPattern, new RunPatternBody(pattern));\n }\n\n public buildGoHome(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.GoHome, new GoHomeBody());\n }\n\n public buildLock(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Lock, new LockBody());\n }\n\n public buildUnlock(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Unlock, new UnlockBody());\n }\n\n public buildGoToPosition(isAbsolute: boolean, pan: number, tilt: number, zoom: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.GoTo, new GoToBody(isAbsolute, pan, tilt, zoom));\n }\n\n public buildStartFocus(distance: PtzFocusDistance, speed: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Focus, new FocusBody(distance, speed));\n }\n\n public buildStopFocus(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Focus, new FocusBody(null, null));\n }\n\n public buildStartIris(operation: PtzIrisOperation, speed: number): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Iris, new IrisBody(operation, speed));\n }\n\n public buildStopIris(): PtzRequest {\n return new PtzRequest(this.m_channelId, PtzSubCommand.Iris, new IrisBody(null, null));\n }\n}\n","import { ILogger } from '../utils/logger';\nimport { ITileSizeObserver, ITileSizeObserverBuilder } from './TileSizeProvider';\nimport { StreamUsage } from './WebSocket/Api/CreateStream';\nimport { DefaultStreamUsage } from './WebSocket/DefaultStreamUsage';\nimport { LiteEvent, ILiteEvent } from '../utils/liteEvents';\nimport { Resolution } from '../utils/Resolution';\n\n/**\n * @beta\n* */\nexport interface IStreamUsageSelectorBuilder {\n build(defaultStreamUsage: DefaultStreamUsage): IStreamUsageSelector;\n}\n\n/**\n * @beta\n* */\nexport interface IStreamUsageSelector {\n readonly onRequiresStreamUsageUpdate: ILiteEvent;\n readonly streamUsage: StreamUsage;\n\n dispose(): void;\n}\n\nexport class StreamUsageSelectorBuilder implements IStreamUsageSelectorBuilder {\n private readonly m_logger: ILogger;\n\n private readonly m_tileSizeProviderBuilder: ITileSizeObserverBuilder;\n\n constructor(logger: ILogger, tileSizeProviderBuilder: ITileSizeObserverBuilder) {\n this.m_logger = logger;\n this.m_tileSizeProviderBuilder = tileSizeProviderBuilder;\n }\n\n public build(defaultStreamUsage: DefaultStreamUsage): IStreamUsageSelector {\n return new StreamUsageSelector(this.m_logger, defaultStreamUsage, this.m_tileSizeProviderBuilder.build());\n }\n}\n\nexport class StreamUsageSelector implements IStreamUsageSelector {\n private readonly m_logger: ILogger;\n\n private readonly m_tileSizeProvider: ITileSizeObserver;\n\n private readonly m_defaultStreamUsage: DefaultStreamUsage;\n\n private readonly m_requiresStreamUsageUpdateEvent: LiteEvent;\n\n private m_lastStreamUsageRaised: StreamUsage | undefined;\n\n private m_isDisposed: boolean = false;\n\n public get onRequiresStreamUsageUpdate(): ILiteEvent {\n this.throwIfDisposed();\n return this.m_requiresStreamUsageUpdateEvent;\n }\n\n public get streamUsage(): StreamUsage {\n this.throwIfDisposed();\n return this.determineStreamUsage();\n }\n\n constructor(logger: ILogger, defaultStreamUsage: DefaultStreamUsage, tileSizeProvider: ITileSizeObserver) {\n this.m_logger = logger.subLogger('StreamUsageSelector');\n this.m_logger.info?.trace('Default stream usage: ', defaultStreamUsage);\n this.m_requiresStreamUsageUpdateEvent = new LiteEvent();\n this.m_tileSizeProvider = tileSizeProvider;\n this.m_defaultStreamUsage = defaultStreamUsage;\n\n tileSizeProvider.tileResizeEvent.register(this.onTileResized);\n }\n\n public dispose() {\n this.m_tileSizeProvider.tileResizeEvent.unregister(this.onTileResized);\n this.m_tileSizeProvider.dispose();\n this.m_isDisposed = true;\n }\n\n private determineStreamUsage(): StreamUsage {\n return this.m_defaultStreamUsage.getStreamUsage(this.m_tileSizeProvider.tileResolution);\n }\n\n private readonly onTileResized = (resolution: Resolution) => {\n const streamUsage = this.m_defaultStreamUsage.getStreamUsage(resolution);\n if (streamUsage !== this.m_lastStreamUsageRaised) {\n this.m_logger.info?.trace(`${this.m_lastStreamUsageRaised}->${streamUsage} res: ${resolution.toString()}`);\n this.m_lastStreamUsageRaised = streamUsage;\n this.m_requiresStreamUsageUpdateEvent.trigger(streamUsage);\n }\n }\n\n private throwIfDisposed() {\n if (this.m_isDisposed) {\n throw new Error('StreamUsageSelector is disposed');\n }\n }\n}\n","import { Resolution } from '../../utils/Resolution';\nimport { Vec2 } from '../../utils/Vec2';\n\nexport class Uniformf {\n protected readonly m_gl: WebGL2RenderingContext;\n protected readonly m_program: WebGLProgram;\n protected readonly m_uniformLocation: WebGLUniformLocation;\n\n constructor(gl: WebGL2RenderingContext, program: WebGLProgram, uniformLocation: WebGLUniformLocation) {\n this.m_gl = gl;\n this.m_program = program;\n this.m_uniformLocation = uniformLocation;\n }\n\n protected getUniform(): Float32Array {\n return this.m_gl.getUniform(this.m_program, this.m_uniformLocation);\n }\n}\n\nexport class Uniform1f extends Uniformf {\n public toString(): string {\n return this.get().toFixed(3);\n }\n\n public set(value: number): void {\n this.m_gl.uniform1f(this.m_uniformLocation, value);\n }\n\n public get(): number {\n return this.m_gl.getUniform(this.m_program, this.m_uniformLocation);\n }\n}\n\nexport class Uniform2f extends Uniformf {\n public toString(): string {\n return `${this.getX()}, ${this.getY()}`;\n }\n\n public set(x: number, y: number) {\n this.m_gl.uniform2f(this.m_uniformLocation, x, y);\n }\n\n public setFromResolution(resolution: Resolution) {\n this.set(resolution.Width, resolution.Height);\n }\n\n public setFromVec2(vec2: Vec2) {\n this.set(vec2.X, vec2.Y);\n }\n\n public get(): [number, number] {\n const uniformValue: Float32Array = this.getUniform();\n return [uniformValue[0], uniformValue[1]];\n }\n\n public getX(): number {\n return this.get()[0];\n }\n\n public getY(): number {\n return this.get()[1];\n }\n}\n\nexport class Uniform3f extends Uniformf {\n public toString(): string {\n const uniformValue: Float32Array = this.getUniform();\n return `${uniformValue[0]}, ${uniformValue[1]}, ${uniformValue[2]}`;\n }\n\n public get(): [number, number, number] {\n const uniformValue: Float32Array = this.getUniform();\n return [uniformValue[0], uniformValue[1], uniformValue[2]];\n }\n\n public set(x: number, y: number, z: number) {\n this.m_gl.uniform3f(this.m_uniformLocation, x, y, z);\n }\n}\n\nexport class Uniform4f extends Uniformf {\n public toString(): string {\n const uniformValue: Float32Array = this.getUniform();\n return `${uniformValue[0]}, ${uniformValue[1]}, ${uniformValue[2]}, ${uniformValue[3]}`;\n }\n\n public get(): [number, number, number, number] {\n const uniformValue: Float32Array = this.getUniform();\n return [uniformValue[0], uniformValue[1], uniformValue[2], uniformValue[3]];\n }\n\n public set(x: number, y: number, z: number, w: number) {\n this.m_gl.uniform4f(this.m_uniformLocation, x, y, z, w);\n }\n}\n","import { Program } from './Program';\n\nexport class Attribute {\n protected readonly m_name: string;\n protected readonly m_attributeLocation: number;\n\n public get Location(): number {\n return this.m_attributeLocation;\n }\n\n public constructor(program: Program, name: string) {\n this.m_name = name;\n this.m_attributeLocation = program.getAttributeLocation(this.m_name);\n }\n}\n","import { Attribute } from './Attribute';\nimport { Program } from './Program';\n\nexport class Buffer {\n private readonly m_program: Program;\n private readonly m_buffer: WebGLBuffer;\n\n protected get gl(): WebGL2RenderingContext {\n return this.m_program.gl;\n }\n\n public get WebGLBuffer(): WebGLBuffer {\n return this.m_buffer;\n }\n\n public constructor(program: Program) {\n this.m_program = program;\n this.m_buffer = program.createWebGLBuffer();\n }\n\n public dispose() {\n this.m_program.deleteBuffer(this.m_buffer);\n }\n\n public bind() {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.m_buffer);\n }\n}\n\nexport class BufferWithAttribute extends Buffer {\n protected readonly m_attribute: Attribute;\n\n constructor(program: Program, attributeName: string) {\n super(program);\n this.m_attribute = new Attribute(program, attributeName);\n this.gl.enableVertexAttribArray(this.m_attribute.Location);\n }\n}\n","export class GLUtils {\n/* draw a rectangle using 2 triangles\n * (x1, y1) (x2, y1)\n * |-----------|\n * | /|\n * | / |\n * | / |\n * | / |\n * | / |\n * | / |\n * | / |\n * | / |\n * | / |\n * | / |\n * |/ |\n * |-----------|\n * (x1, y2) (x2, y2)\n */\n public static getRectangle12Points(x: number, y: number, width: number, height: number): Float32Array {\n const x1 = x;\n const x2 = x + width;\n const y1 = y;\n const y2 = y + height;\n return new Float32Array([\n x1, y1,\n x2, y1,\n x1, y2, //first triangle\n x1, y2,\n x2, y1,\n x2, y2, //second triangle\n ]);\n }\n\n public static getWebGL2Context(canvas: HTMLCanvasElement): WebGL2RenderingContext {\n const gl = canvas.getContext('webgl2');\n if (gl === null) {\n throw Error('No webgl2 support');\n }\n\n return gl;\n }\n}\n","import { Buffer } from './Buffer';\nimport { GLUtils } from './GLUtils';\n\nexport class Texture {\n private readonly m_gl: WebGL2RenderingContext;\n private readonly m_texture: WebGLTexture;\n private readonly m_textureCoordinatesBuffer: Buffer;\n\n public get CoordinatesBuffer(): Buffer {\n return this.m_textureCoordinatesBuffer;\n }\n\n public constructor(gl: WebGL2RenderingContext, buffer: Buffer) {\n this.m_gl = gl;\n this.m_textureCoordinatesBuffer = buffer;\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this.m_textureCoordinatesBuffer.WebGLBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, GLUtils.getRectangle12Points(0, 0, 1, 1), gl.STATIC_DRAW);\n\n const texture = gl.createTexture();\n if (texture === null) {\n throw new Error('Failed to create texture');\n }\n this.m_texture = texture;\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n const interpolation: GLenum = gl.LINEAR; //gl.NEAREST;\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, interpolation);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, interpolation);\n }\n\n public dispose() {\n this.m_gl.deleteTexture(this.m_texture);\n this.m_textureCoordinatesBuffer.dispose();\n }\n\n // Upload the image into the texture.\n public updateTexture(image: TexImageSource): void {\n const gl = this.m_gl;\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n }\n}\n","import { FragmentShader } from './FragmentShader';\nimport { VertexShader } from './VertexShader';\n\nexport class CompiledProgram {\n protected readonly m_gl: WebGL2RenderingContext;\n protected readonly m_program: WebGLProgram;\n private readonly m_vertexShader: VertexShader;\n private readonly m_fragmentShader: FragmentShader;\n\n public get Program(): WebGLProgram {\n return this.m_program;\n }\n\n public get VertexShaderSource(): string {\n return this.m_vertexShader.Source;\n }\n\n public get FragmentShaderSource(): string {\n return this.m_fragmentShader.Source;\n }\n\n public constructor(gl: WebGL2RenderingContext, program: WebGLProgram, vertexShader: VertexShader, fragmentShader: FragmentShader) {\n this.m_gl = gl;\n this.m_program = program;\n this.m_vertexShader = vertexShader;\n this.m_fragmentShader = fragmentShader;\n }\n\n public dispose() {\n this.m_vertexShader.dispose();\n this.m_fragmentShader.dispose();\n this.m_gl.deleteProgram(this.Program);\n }\n}\n","import { CompiledProgram } from './CompiledProgram';\nimport { FragmentShader } from './FragmentShader';\nimport { VertexShader } from './VertexShader';\n\nexport class ProgramLinker {\n public static link(gl: WebGL2RenderingContext, vertexShader: VertexShader, fragmentShader: FragmentShader) {\n const program = this.createProgram(gl);\n\n gl.attachShader(program, vertexShader.Shader);\n gl.attachShader(program, fragmentShader.Shader);\n gl.linkProgram(program);\n\n const success = ProgramLinker.getLinkStatus(gl, program);\n if (success) {\n gl.useProgram(program);\n return new CompiledProgram(gl, program, vertexShader, fragmentShader);\n }\n\n throw Error('Failed to link program');\n }\n\n private static createProgram(gl: WebGL2RenderingContext): WebGLProgram {\n const program = gl.createProgram();\n if (program === null) {\n throw Error('Failed to create gl program');\n }\n return program;\n }\n\n private static getLinkStatus(gl: WebGL2RenderingContext, program: WebGLProgram) {\n return gl.getProgramParameter(program, gl.LINK_STATUS);\n }\n}\n","import { VertexShader } from './VertexShader';\nimport { FragmentShader } from './FragmentShader';\nimport { Uniform1f, Uniform2f, Uniform3f, Uniform4f } from './Uniform';\nimport { Buffer } from './Buffer';\nimport { Texture } from './Texture';\nimport { ProgramLinker } from './ProgramLinker';\nimport { CompiledProgram } from './CompiledProgram';\n\nexport class Program {\n protected readonly m_gl: WebGL2RenderingContext;\n protected readonly m_compiledProgram: CompiledProgram;\n\n private get Program(): WebGLProgram {\n return this.m_compiledProgram.Program;\n }\n\n public get gl(): WebGL2RenderingContext {\n return this.m_gl;\n }\n\n constructor(gl: WebGL2RenderingContext, vertexShader: VertexShader, fragmentShader: FragmentShader) {\n this.m_gl = gl;\n this.m_compiledProgram = ProgramLinker.link(gl, vertexShader, fragmentShader);\n }\n\n public dispose() {\n this.m_compiledProgram.dispose();\n }\n\n public getAttributeLocation(attribute: string): number {\n return this.m_gl.getAttribLocation(this.Program, attribute);\n }\n\n public createWebGLBuffer(): WebGLBuffer {\n const buffer = this.m_gl.createBuffer();\n if (buffer === null) {\n throw Error('Failed to create buffer');\n }\n\n return buffer;\n }\n\n public deleteBuffer(buffer: WebGLBuffer) {\n this.m_gl.deleteBuffer(buffer);\n }\n\n protected buildUniform1f(uniformName: string): Uniform1f {\n return new Uniform1f(this.m_gl, this.Program, this.getUniformLocation(uniformName));\n }\n\n protected buildUniform2f(uniformName: string): Uniform2f {\n return new Uniform2f(this.m_gl, this.Program, this.getUniformLocation(uniformName));\n }\n\n protected buildUniform3f(uniformName: string): Uniform3f {\n return new Uniform3f(this.m_gl, this.Program, this.getUniformLocation(uniformName));\n }\n\n protected buildUniform4f(uniformName: string): Uniform4f {\n return new Uniform4f(this.m_gl, this.Program, this.getUniformLocation(uniformName));\n }\n\n private getUniformLocation(uniformName: string): WebGLUniformLocation {\n const uniformLocation = this.m_gl.getUniformLocation(this.Program, uniformName);\n if (uniformLocation === null) {\n console.error(this.m_compiledProgram.VertexShaderSource);\n console.error(this.m_compiledProgram.FragmentShaderSource);\n throw Error(`Could not get uniform location for ${uniformName}`);\n }\n\n return uniformLocation;\n }\n\n protected createTexture(): Texture {\n return new Texture(this.m_gl, this.createBuffer());\n }\n\n private createBuffer(): Buffer {\n return new Buffer(this);\n }\n}\n","export class ShaderBuilder {\n public static readonly m_version300es = '#version 300 es';\n\n protected readonly m_gl: WebGL2RenderingContext;\n\n constructor(webGLRenderingContext: WebGL2RenderingContext) {\n this.m_gl = webGLRenderingContext;\n }\n\n public buildVertexShader(source: string): WebGLShader {\n return this.buildShader(this.m_gl.VERTEX_SHADER, source);\n }\n\n public buildFragmentShader(source: string): WebGLShader {\n return this.buildShader(this.m_gl.FRAGMENT_SHADER, source);\n }\n\n private buildShader(type: number, source: string): WebGLShader {\n const shader = this.m_gl.createShader(type);\n if (shader === null) {\n throw new Error(`Failed to make shader ${type}`);\n }\n\n this.m_gl.shaderSource(shader, source);\n this.m_gl.compileShader(shader);\n const success = this.m_gl.getShaderParameter(shader, this.m_gl.COMPILE_STATUS);\n if (success) {\n return shader;\n }\n\n const shaderInfoLog = this.m_gl.getShaderInfoLog(shader);\n this.m_gl.deleteShader(shader);\n\n console.error(source);\n\n throw Error(shaderInfoLog ?? 'Failed to compile shader');\n }\n}\n","import { ShaderBuilder } from './ShaderBuilder';\n\nexport class VertexShader {\n private readonly m_gl: WebGL2RenderingContext;\n private readonly m_shader: WebGLShader;\n private readonly m_source: string;\n\n public get Source(): string {\n return this.m_source;\n }\n\n public get Shader(): WebGLShader {\n return this.m_shader;\n }\n\n constructor(gl: WebGL2RenderingContext, vertexShaderCode: string) {\n this.m_gl = gl;\n\n this.m_source =\n `${ShaderBuilder.m_version300es}\n${vertexShaderCode}`;\n\n const shaderBuilder = new ShaderBuilder(gl);\n this.m_shader = shaderBuilder.buildVertexShader(this.m_source);\n }\n\n public dispose() {\n this.m_gl.deleteShader(this.m_shader);\n }\n}\n","import { BufferWithAttribute } from './WebGL2/Buffer';\nimport { Program } from './WebGL2/Program';\nimport { VertexShader } from './WebGL2/VertexShader';\n\nexport class DewarperVertexShader extends VertexShader {\n private static readonly VertexShaderCode: string =\n `\nin vec2 a_position;\n\nvoid main() {\n gl_Position = vec4(a_position, 0, 1);\n}`;\n\n constructor(glContext: WebGL2RenderingContext) {\n super(glContext, DewarperVertexShader.VertexShaderCode);\n }\n}\n\nexport class PositionBuffer extends BufferWithAttribute {\n constructor(program: Program, name: string) {\n super(program, name);\n this.bind();\n this.gl.vertexAttribPointer(this.m_attribute.Location, 2, this.gl.FLOAT, false, 0, 0);\n }\n\n public setValue(values: Float32Array) {\n this.bind();\n this.gl.bufferData(this.gl.ARRAY_BUFFER, values, this.gl.STATIC_DRAW);\n }\n}\n","import { ShaderBuilder } from './ShaderBuilder';\n\nexport class FragmentShader {\n private readonly m_gl: WebGL2RenderingContext;\n private readonly m_shader: WebGLShader;\n private readonly m_source: string;\n\n public get Source(): string {\n return this.m_source;\n }\n\n public get Shader(): WebGLShader {\n return this.m_shader;\n }\n\n constructor(gl: WebGL2RenderingContext, fragmentShaderCode: string, floatPrecision: FloatPrecision) {\n this.m_gl = gl;\n\n this.m_source = `${ShaderBuilder.m_version300es}\n${this.buildFloatPrecision(floatPrecision)}\n${fragmentShaderCode}`;\n\n const shaderBuilder = new ShaderBuilder(gl);\n this.m_shader = shaderBuilder.buildFragmentShader(this.m_source);\n }\n\n public dispose() {\n this.m_gl.deleteShader(this.m_shader);\n }\n\n private buildFloatPrecision(floatPrecision: FloatPrecision): string {\n return `precision ${floatPrecision} float;`;\n }\n}\n\nexport enum FloatPrecision {\n low = 'lowp',\n medium = 'mediump',\n high = 'highp'\n}\n","import { InternalDewarperSourceImageParameters } from './DewarperSourceImageParameters';\nimport { FloatPrecision, FragmentShader } from './WebGL2/FragmentShader';\n\nexport class DewarperFragmentShader extends FragmentShader {\n public constructor(glContext: WebGL2RenderingContext, dewarperParameters: InternalDewarperSourceImageParameters, floatPrecision: FloatPrecision) {\n super(glContext, new DewarperFragmentShaderCodeBuilder(dewarperParameters).build(), floatPrecision);\n }\n}\n\nexport class DewarperFragmentShaderCodeBuilder {\n private readonly m_dewarperParameters: InternalDewarperSourceImageParameters;\n\n constructor(dewarperParameters: InternalDewarperSourceImageParameters) {\n this.m_dewarperParameters = dewarperParameters;\n }\n\n public build(): string {\n return `${DewarperFragmentShaderCodeBuilder.Variables}\n\n${this.getToPolar()}\n\n${this.main()}\n`;\n }\n\n private static readonly Variables: string =\n `\n\nuniform vec4 u_outsideColor; // When accessing outside of the warped image area, what color shall the pixel be\n\nuniform vec2 u_warpedImageResolution;\nuniform vec2 u_canvasResolutionAdjustedToSrcAspectRatio;\nuniform vec2 u_canvasResolutionAspectRatioOverflow;\n\nuniform vec2 u_cropping;\n\n// warped image\nuniform sampler2D u_warpedImage;\n\n// The output color of the fragment shader execution\nout vec4 outputColor;\n\nuniform vec3 u_pPrime; //Vector/Normal to origin of the dewarping plane\nuniform vec3 u_uHat; //Horizontal normalized vector of the dewarping plane (equivalent of x-Axis)\nuniform vec3 u_vHat; //Vertical normalized vector of the dewarping plane (equivalent of y-Axis)\n\n`;\n\n private getToPolar(): string {\n return `\n\n// Inputs : (cartesian) : Cartesian coordinates\n// Output : Polar coordinates (x: radius, y: angle)\nvec2 toPolar(vec2 cartesian) {\n return vec2(\n sqrt(cartesian.x * cartesian.x + cartesian.y * cartesian.y),\n atan(cartesian.y, cartesian.x));\n}\n\nfloat polarBeta(vec3 cartesian) {\n return atan(sqrt(cartesian.x * cartesian.x + cartesian.y * cartesian.y), cartesian.z);\n}\n\nfloat polarDelta(vec3 cartesian) {\n return atan(cartesian.y, cartesian.x);\n}\n\n`;\n }\n\n private main(): string {\n return `\n\nvoid main()\n{\n // Will be called from (0, 0) to viewPort (which should be the canvas resolution)\n // gl_FragCoord (0, 0) is lower left and is in pixel.\n vec2 v = gl_FragCoord.xy;\n\n v = v - u_canvasResolutionAspectRatioOverflow; //rest of the canvas resolution adjustment to src aspect ratio\n\n //To ClipSpace\n v = v / u_canvasResolutionAdjustedToSrcAspectRatio * vec2(2.0, 2.0) - vec2(1.0, 1.0);\n\n //To 3D\n vec3 xyz = u_pPrime + (u_uHat * v.x) + (u_vHat * v.y);\n float beta = polarBeta(xyz);\n float delta = polarDelta(xyz);\n\n float r_p = ${this.m_dewarperParameters.Projection.applyCode()}; //* m_R which is always 1 up to now\n\n v = r_p * vec2(cos(delta), sin(delta));\n\n //answer 'v' is in cliped circle coordinates. Fetch it from the warped image\n //normalize\n v = (v + vec2(1.0, -1.0)) / vec2(2.0, -2.0);\n\n //to circle resolution\n v = v * ${toFloat(this.m_dewarperParameters.RadiusRatio * 2.0)} * u_warpedImageResolution.y;\n\n //translate for the cropping\n v = v + u_cropping;\n\n if (v.x >= 0.0 && v.x < u_warpedImageResolution.x &&\n v.y >= 0.0 && v.y < u_warpedImageResolution.y) \n {\n //scale to 0 to 1 for fetching pixel on texture\n v = v / u_warpedImageResolution; \n outputColor = texture(u_warpedImage, v);\n }\n else\n {\n outputColor = u_outsideColor;\n }\n}\n\n`;\n }\n}\n\nfunction toFloat(x: number): string {\n return Number.isInteger(x) ? x + '.0' : x.toString();\n}\n","import { ClipSpaceVec2, Vec2 } from '../utils/Vec2';\nimport { Vec3 } from '../utils/Vec3';\nimport { DewarpingParameters } from './DewarpingParameters';\nimport { DewarpingPlane } from './DewarpingPlane';\n\n//This is the dewarping algorithm but only for a single pixel. It can obtain the coordinates of the the warped pixel for a pixel in the dewarped image\nexport class DewarpedPointSourceFinder {\n private static readonly m_R: number = 1.0; //Radius of warped image. Normalized to 1.\n\n private readonly m_dewarpingParameters: DewarpingParameters;\n private readonly m_dewarpingPlane: DewarpingPlane;\n\n constructor(dewarpingParameters: DewarpingParameters, dewarpingPlane: DewarpingPlane) {\n this.m_dewarpingParameters = dewarpingParameters;\n this.m_dewarpingPlane = dewarpingPlane;\n }\n\n public find(dewarpedPixel: Vec2): ClipSpaceVec2 {\n const dewarpedPixelInFitResolutionSpace = dewarpedPixel.minus(this.m_dewarpingParameters.FitResolution.PixelOffset);\n const dewarpedCliped = dewarpedPixelInFitResolutionSpace.toClipSpace(this.m_dewarpingParameters.FitResolution.Scaled);\n\n return this.mapInput(dewarpedCliped);\n }\n\n private mapInput(clipSpaceVec2: ClipSpaceVec2): ClipSpaceVec2 {\n const pXYZ: Vec3 = this.m_dewarpingPlane.to3D(clipSpaceVec2);\n\n const polarBeta = pXYZ.PolarBeta;\n const polarDelta = pXYZ.PolarDelta;\n\n const r_p = DewarpedPointSourceFinder.m_R * this.m_dewarpingParameters.Projection.apply(polarBeta.InRadian);\n const result = new Vec2(polarDelta.cos(), polarDelta.sin()).multiplyC(r_p);\n return new ClipSpaceVec2(result.X, result.Y);\n }\n}\n","import { Radian } from '../utils/Radian';\nimport { ClipSpaceVec2 } from '../utils/Vec2';\nimport { Vec3 } from '../utils/Vec3';\nimport { ZoomFactor } from './ZoomFactor';\n\nexport class DewarpingPlane {\n private static readonly m_R = 1.0;\n\n private static readonly u = new ClipSpaceVec2(1, 0);\n private static readonly v = new ClipSpaceVec2(0, 1);\n\n private readonly m_toString: string;\n\n private readonly m_pPrimeXYZ: Vec3;\n private readonly m_uHat: Vec3;\n private readonly m_vHat: Vec3;\n\n private readonly m_equation: PlaneEquation;\n\n public get pPrime(): Vec3 {\n return this.m_pPrimeXYZ;\n }\n\n public get uHat(): Vec3 {\n return this.m_uHat;\n }\n\n public get vHat(): Vec3 {\n return this.m_vHat;\n }\n\n public get Equation(): PlaneEquation {\n return this.m_equation;\n }\n\n public constructor(warpedPoi: ClipSpaceVec2, zoom: ZoomFactor, cameraPositionRotation: Radian) {\n const poiPolar = warpedPoi.toPolar();\n const beta = new Radian(Math.asin(poiPolar.Radius / DewarpingPlane.m_R));\n const delta = poiPolar.Angle;\n\n const pPrimeX = delta.cos() * beta.sin();\n const pPrimeY = delta.sin() * beta.sin();\n const pPrimeZ = beta.cos();\n\n this.m_pPrimeXYZ = new Vec3(pPrimeX, pPrimeY, pPrimeZ).multiplyC(DewarpingPlane.m_R * zoom.Value);\n\n this.m_uHat = this.dewarpingPlaneToHemisphere(DewarpingPlane.u, cameraPositionRotation, beta, delta);\n this.m_vHat = this.dewarpingPlaneToHemisphere(DewarpingPlane.v, cameraPositionRotation, beta, delta);\n\n //pPrimeXYZ is the origin of our 2d plane so it is a point of it and it is also the normal of the plane\n this.m_equation = PlaneEquation.buildFromNormalAndPoint(this.m_pPrimeXYZ, this.m_pPrimeXYZ);\n\n this.m_toString = `Built from ${warpedPoi.toString()} zoom:${zoom.toString()} rotation: ${cameraPositionRotation.toString()}\\r\\npPrime:${this.m_pPrimeXYZ.toString()} û:${this.m_uHat.toString()} v̂:${this.m_vHat.toString()}\\r\\nbeta: ${beta.toString()} delta: ${delta.toString()}`;\n }\n\n public toString(): string {\n return this.m_toString;\n }\n\n public to3D(vec2: ClipSpaceVec2): Vec3 {\n return this.m_pPrimeXYZ.plus(this.m_uHat.multiplyC(vec2.X)).plus(this.m_vHat.multiplyC(vec2.Y));\n }\n\n public BackTo2D(vec3: Vec3): ClipSpaceVec2 {\n //We want to go back to the 2D dewarping plane, reverse the To3D method:\n // (x, y) = m_pPrimeXYZ + (m_uHat * vec2.X) + (m_vHat * vec2.Y);\n // and find the value of vec2\n\n vec3 = vec3.minus(this.m_pPrimeXYZ);\n\n const a = this.m_uHat.X;\n const b = this.m_vHat.X;\n const c = vec3.X;\n const d = this.m_uHat.Y;\n const e = this.m_vHat.Y;\n const f = vec3.Y;\n\n const [x, y] = DewarpingPlane.twoEquationsTwoUnknownResolve(a, b, c, d, e, f);\n\n return new ClipSpaceVec2(x, y);\n }\n\n private dewarpingPlaneToHemisphere(v: ClipSpaceVec2, cameraPositionRotation: Radian, beta: Radian, delta: Radian): Vec3 {\n //Floating point errors when bouncing back and forth between degree/radian, sometimes,\n // something that should give exactly zero and becomes a very small number (e.g.1E-16)\n // those values instead of 0 breaks the algorithm\n const a = v.rotate(cameraPositionRotation).roundEspilonToZero();\n const b = new ClipSpaceVec2(a.X, 0).rotate(beta.opposite()).roundEspilonToZero();\n const c = new ClipSpaceVec2(b.X, a.Y).rotate(delta).roundEspilonToZero();\n return new Vec3(c.X, c.Y, b.Y);\n }\n\n // ax + by = c\n // dx + ey = f\n // This does not work as a general equation resolver, there are too many edge case of division by 0.\n // So for now, its stays as a private function here.\n // One could improve it and make it a general purpose 2 equations 2 unknown resolvers if he was to handle all those possible case.\n // -> b == 0 or d == 0 when a == 0\n // -> a*e == d*b when a != 0\n private static twoEquationsTwoUnknownResolve(a: number, b: number, c: number, d: number, e: number, f: number): [number, number] {\n if (a === 0.0) {\n //The general algorithm would divide by zero. Change the approach:\n // ax + by = c\n // dx + ey = f\n //becomes\n // by = c, so y = c/b\n // And knowing y, we can do the second equation. Isolate 'x'\n // dx + ey = f\n // dx = f - ey\n // x = (f - ey)/d\n\n const y = c / b;\n const x = (f - e * y) / d;\n return [x, y];\n } else {\n //isolating x in first equation gives\n // x = (c - by)/a\n\n //Replacing x by [(c - by)/a] in second equation gives\n // (d((c - by)/a) + ey = f\n\n //isolating y in second equation gives\n //y = (af - dc)/(ae - db)\n const y = (a * f - d * c) / (a * e - d * b);\n const x = (c - b * y) / a;\n return [x, y];\n }\n }\n}\n\nexport class PlaneEquation {\n public readonly A: number;\n public readonly B: number;\n public readonly C: number;\n public readonly D: number;\n\n //The plane equation can be found by using a normal vector n (perpendicular to the plane) and point p\n //nx(x - px) + ny(y - py) + nz(z - pz) = 0\n //nx(x) + ny(y) + nz(z) - (nx(px) + ny(py) + nz(pz)) = 0\n //The generalized plane equation is Ax + By + Cz = D\n //so\n // A = nx\n // B = ny\n // C = nz\n // D = -(nx(px) + ny(py) + nz(pz))\n public static buildFromNormalAndPoint(normal: Vec3, point: Vec3): PlaneEquation {\n const a = normal.X;\n const b = normal.Y;\n const c = normal.Z;\n const d = -(normal.X * point.X + normal.Y * point.Y + normal.Z * point.Z);\n return new PlaneEquation(a, b, c, d);\n }\n\n constructor(a: number, b: number, c: number, d: number) {\n this.A = a;\n this.B = b;\n this.C = c;\n this.D = d;\n }\n\n public toString(): string {\n return `${this.A}(x) +${this.B}(y) + ${this.C}(z) -${this.D} = 0`;\n }\n}\n","import { Radian } from '../utils/Radian';\nimport { Resolution } from '../utils/Resolution';\nimport { ClipSpaceVec2, Vec2 } from '../utils/Vec2';\nimport { DewarpingParameters } from './DewarpingParameters';\nimport { ZoomFactor } from './ZoomFactor';\n\nexport class ImageGeometry {\n private readonly m_dewarpingParameters: DewarpingParameters\n\n private get Fov(): Radian {\n return new Radian(this.m_dewarpingParameters.FovInRadians);\n }\n\n private get StreamResolution(): Resolution {\n return this.m_dewarpingParameters.StreamResolution;\n }\n\n constructor(dewarpingParameters: DewarpingParameters) {\n this.m_dewarpingParameters = dewarpingParameters;\n }\n\n public rotateAroundCircle(xy: ClipSpaceVec2, pan: Radian): ClipSpaceVec2 {\n //Since circle might not be centered, we need to go into screenspace. We can't stay in clipSpace and just circle around the center of the whole image\n return xy.toScreenSpace(this.StreamResolution)\n .minus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toPolar()\n .rotate(pan)\n .toCartesian()\n .plus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toClipSpace(this.StreamResolution);\n }\n\n public tiltInCircle(xy: ClipSpaceVec2, tilt: Radian): ClipSpaceVec2 {\n const tiltInPixel = (tilt.InRadian / (this.Fov.InRadian / 2)) * this.m_dewarpingParameters.RadiusInPixels;\n return xy.toScreenSpace(this.StreamResolution)\n .minus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toPolar()\n .tilt(tiltInPixel)\n .toCartesian()\n .plus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toClipSpace(this.StreamResolution);\n }\n\n public panFrom(imageXY: ClipSpaceVec2): Radian {\n //todo: review this in other mode than ceiling\n return imageXY.toScreenSpace(this.StreamResolution)\n .minus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toPolar()\n .Angle;\n }\n\n public tiltFrom(xy: ClipSpaceVec2): Radian {\n //todo: review this in other mode than ceiling\n const radius = xy.toScreenSpace(this.StreamResolution)\n .minus(this.m_dewarpingParameters.CircleCenterInPixels)\n .toPolar()\n .Radius;\n\n return new Radian((radius / this.m_dewarpingParameters.RadiusInPixels) * (this.Fov.InRadian / 2));\n }\n\n public limitToWarpedCircle(imageXY: ClipSpaceVec2, zoom: ZoomFactor): [ClipSpaceVec2, ClipSpaceVec2] {\n //Limit dewarping plane to circle by computing the minimum angle at which the dewarping plane touches the limit of the dewarping sphere\n const angleMin = Math.atan((1.0 + this.m_dewarpingParameters.FitResolution.OffsetRatio.Y * 2.0) / zoom.Value);\n const onXYPlane = Math.cos(angleMin);\n\n const circleXY = this.imageToCircle(imageXY);\n\n const circleClipedXY = circleXY.clipLength(1.0); //this might seems superfluous as we will reclip later in this method but the intermediate manipulations will have errors/wraparounds if input is above 1.0\n const adjustedXY: ClipSpaceVec2 = this.m_dewarpingParameters.Projection.adjustXY(circleClipedXY);\n\n const adjustedAndCliped = adjustedXY.clipLength(onXYPlane);\n\n //For the user X/Y coords\n const unadjustedLimitedImg: ClipSpaceVec2 = this.circleToImage(this.m_dewarpingParameters.Projection.unadjustXY(adjustedAndCliped)).toClipSpace(this.m_dewarpingParameters.StreamResolution);\n\n return [adjustedAndCliped, unadjustedLimitedImg];\n }\n\n public circleToImage(circleCoordinates: ClipSpaceVec2): Vec2 {\n return circleCoordinates.toScreenSpace(this.m_dewarpingParameters.CircleResolution).plus(this.m_dewarpingParameters.Cropping);\n }\n\n public imageToCircle(imageCoordinates: ClipSpaceVec2): ClipSpaceVec2 {\n return this.imagePixelToCircle(imageCoordinates.toScreenSpace(this.StreamResolution));\n }\n\n private imagePixelToCircle(imagePixelCoordinates: Vec2): ClipSpaceVec2 {\n const circleCoordinates = imagePixelCoordinates.minus(this.m_dewarpingParameters.Cropping);\n return circleCoordinates.toClipSpace(this.m_dewarpingParameters.CircleResolution);\n }\n}\n","import { Guard } from '../utils/Guard';\nimport { Utils } from '../utils/Utils';\n\nexport class ZoomFactor {\n private static readonly Min: number = 1.0;\n private static readonly Max: number = 20.0;\n public static readonly Default: ZoomFactor = new ZoomFactor(1);\n\n private static readonly Steps: number = 0.5;\n\n private readonly m_value: number;\n\n public get Value(): number {\n return this.m_value;\n }\n\n public get IsMinimum(): boolean {\n return this.m_value === ZoomFactor.Min;\n }\n\n public constructor(zoomFactor: number) {\n Guard.isInRangeInclusive(zoomFactor, ZoomFactor.Min, ZoomFactor.Max);\n this.m_value = zoomFactor;\n }\n\n public toString(): string {\n return this.m_value.toFixed(2);\n }\n\n public increase(): ZoomFactor {\n return new ZoomFactor(Utils.clip(this.m_value + ZoomFactor.Steps, ZoomFactor.Min, ZoomFactor.Max));\n }\n\n public decrease(): ZoomFactor {\n return new ZoomFactor(Utils.clip(this.m_value - ZoomFactor.Steps, ZoomFactor.Min, ZoomFactor.Max));\n }\n}\n","import { Degree } from '../utils/Degree';\nimport { DragInfo } from '../utils/DragObserver';\nimport { ILiteEvent, LiteEvent } from '../utils/liteEvents';\nimport { ILogger } from '../utils/logger';\nimport { PolarVector } from '../utils/PolarVec2';\nimport { Radian } from '../utils/Radian';\nimport { Utils } from '../utils/Utils';\nimport { ClipSpaceVec2, Vec2 } from '../utils/Vec2';\nimport { CameraPositionCeiling, CameraPositionFloor, CameraPositionWall } from './CameraPosition';\nimport { ControllerUniforms } from './ControllerUniforms';\nimport { DewarpedPointSourceFinder } from './DewarpedPointSourceFinder';\nimport { IInternalDewarperControl } from './DewarperInterfaces';\nimport { InternalDewarperSourceImageParameters } from './DewarperSourceImageParameters';\nimport { DewarpingParameters } from './DewarpingParameters';\nimport { DewarpingPlane, PlaneEquation } from './DewarpingPlane';\nimport { ImageGeometry } from './ImageGeometry';\nimport { ZoomFactor } from './ZoomFactor';\n\nexport class DewarperController implements IInternalDewarperControl {\n private readonly m_logger: ILogger;\n private readonly m_dewarperSourceImageParameters: InternalDewarperSourceImageParameters;\n private m_imageGeometry: ImageGeometry | null; //Will be null until we have an image source to have a resolution to work with\n private m_dewarpingParameters: DewarpingParameters | null = null;\n\n private readonly m_controllerUniform: ControllerUniforms;\n\n private m_requestedImageXY: ClipSpaceVec2 = ClipSpaceVec2.Origin;\n private m_requestedZoom: ZoomFactor = ZoomFactor.Default;\n private m_dewarpingPlane: DewarpingPlane | null = null;\n\n private readonly m_sceneUpdatedEvent: LiteEvent;\n\n public get sceneUpdated(): ILiteEvent {\n return this.m_sceneUpdatedEvent.expose();\n }\n\n public get XY(): ClipSpaceVec2 {\n return this.m_requestedImageXY;\n }\n\n public get ZoomFactor(): ZoomFactor {\n return this.m_requestedZoom;\n }\n\n public get Pan(): Degree {\n return this.m_imageGeometry?.panFrom(this.m_requestedImageXY).toDegree() ?? new Degree(0);\n }\n\n public get Tilt(): Degree {\n return this.m_imageGeometry?.tiltFrom(this.m_requestedImageXY).toDegree() ?? new Degree(0);\n }\n\n public set DewarpingParameters(dewarpingParameters: DewarpingParameters) {\n this.m_dewarpingParameters = dewarpingParameters;\n this.m_imageGeometry = new ImageGeometry(dewarpingParameters);\n this.gotoXY(this.m_requestedImageXY);\n }\n\n constructor(logger: ILogger, dewarperSourceImageParameters: InternalDewarperSourceImageParameters, controllerUniform: ControllerUniforms) {\n this.m_logger = logger;\n this.m_dewarperSourceImageParameters = dewarperSourceImageParameters;\n this.m_imageGeometry = null;\n\n this.m_controllerUniform = controllerUniform;\n this.m_sceneUpdatedEvent = new LiteEvent();\n }\n\n public gotoXY(requestedImageXY: ClipSpaceVec2): void {\n this.m_requestedImageXY = requestedImageXY;\n this.m_logger.intense?.trace(`gotoXY(${requestedImageXY.toString()}) [Image coordinates]`);\n this.createScene();\n }\n\n public gotoPanTilt(pan: Radian, tilt: Radian): void {\n if (this.m_imageGeometry === null) {\n this.m_logger.info?.trace(`gotoPanTilt(${pan.InRadian.toFixed(2)}R, ${tilt.InRadian.toFixed(2)}R) aborted. No image to work on.`);\n return;\n }\n\n this.m_logger.debug?.trace(`gotoPanTilt(${pan.InRadian.toFixed(2)}R, ${tilt.InRadian.toFixed(2)}R)`);\n\n switch (this.m_dewarperSourceImageParameters.CameraPosition.constructor) {\n case CameraPositionWall:\n {\n const panRatio = pan.InRadian / (this.m_dewarperSourceImageParameters.FovInRadians / 2);\n const tiltRatio = tilt.InRadian / (this.m_dewarperSourceImageParameters.FovInRadians / 2);\n\n const translated = this.m_requestedImageXY.plus(new Vec2(panRatio, tiltRatio));\n this.gotoXY(new ClipSpaceVec2(translated.X, translated.Y));\n }\n break;\n case CameraPositionCeiling:\n {\n const rotated = this.m_imageGeometry.rotateAroundCircle(this.m_requestedImageXY, pan);\n const rotatedAndTilted = this.m_imageGeometry.tiltInCircle(rotated, tilt);\n\n this.gotoXY(rotatedAndTilted);\n }\n break;\n case CameraPositionFloor:\n {\n const rotated = this.m_imageGeometry.rotateAroundCircle(this.m_requestedImageXY, pan.opposite());\n const rotatedAndTilted = this.m_imageGeometry.tiltInCircle(rotated, tilt.opposite());\n\n this.gotoXY(rotatedAndTilted);\n }\n break;\n default:\n throw new Error(`Unexpected camera position: ${this.m_dewarperSourceImageParameters}`);\n }\n\n this.triggerSceneChanged();\n }\n\n public zoom(zoomFactor: ZoomFactor): void {\n this.m_logger.info?.trace(`gotoZoom(${zoomFactor.toString()})`);\n this.m_requestedZoom = zoomFactor;\n this.createScene();\n }\n\n private m_crossCenter: boolean = false;\n\n public drag(dragInfo: DragInfo): void {\n if (dragInfo.StartOfDrag) {\n this.m_crossCenter = false;\n }\n this.m_logger.intense?.trace(`Drag (${dragInfo.toString()})`);\n\n if (this.m_imageGeometry === null) {\n this.m_logger.warn?.trace('Failed to drag while no frame has been rendered.');\n //Cannot work without the image source resolution. (or can we? using only ratio, it should be possible...)\n return;\n }\n\n //todo: put dewarping plane inside m_imageGeometry ?\n if (this.m_dewarpingParameters === null) {\n this.m_logger.warn?.trace('Failed to drag while no dewarping parameters was received. This should not happen if m_imageGeometry is set');\n //Cannot work without the image source resolution. (or can we? using only ratio, it should be possible...)\n return;\n }\n\n if (this.m_dewarpingPlane === null) {\n this.m_logger.warn?.trace('Failed to drag while no dewarping plane was created. This should not happen if m_imageGeometry is set');\n return;\n }\n\n const pointFinder = new DewarpedPointSourceFinder(this.m_dewarpingParameters, this.m_dewarpingPlane);\n const startImage = pointFinder.find(dragInfo.Start);\n const endImage = pointFinder.find(dragInfo.Stop);\n const startPolar = this.m_imageGeometry.imageToCircle(startImage).toPolar();\n const endPolar = this.m_imageGeometry.imageToCircle(endImage).toPolar();\n\n const radianMovement = endPolar.Angle.subtract(startPolar.Angle);\n const radiusMovement = this.m_crossCenter ? startPolar.Radius - endPolar.Radius : endPolar.Radius - startPolar.Radius;\n\n const requestedPolar = this.m_imageGeometry.imageToCircle(this.m_requestedImageXY).toPolar();\n\n const newRequestedPolar = new PolarVector(requestedPolar.Radius - radiusMovement, requestedPolar.Angle.subtract(radianMovement));\n\n if (radiusMovement > requestedPolar.Radius) {\n this.m_crossCenter = true;\n }\n\n const newRequestCartesian = newRequestedPolar.toCartesian();\n\n const newImageXY = this.m_imageGeometry.circleToImage(new ClipSpaceVec2(newRequestCartesian.X, newRequestCartesian.Y)).toClipSpace(this.m_dewarpingParameters.StreamResolution);\n this.gotoXY(newImageXY);\n }\n\n private triggerSceneChanged(): void {\n this.m_sceneUpdatedEvent.trigger();\n }\n\n private createScene(): void {\n if (this.m_imageGeometry === null) {\n this.m_logger.warn?.trace('Failed to build scene while no frame has been rendered.');\n //Cannot work without the image source resolution. (or can we? using only ratio, it should be possible...)\n return;\n }\n\n const [limitedUnprojectedXY, userlimitedInput] = this.m_imageGeometry.limitToWarpedCircle(this.m_requestedImageXY, this.m_requestedZoom);\n this.m_requestedImageXY = userlimitedInput;\n\n this.m_dewarpingPlane = new DewarpingPlane(limitedUnprojectedXY, this.m_requestedZoom, this.m_dewarperSourceImageParameters.CameraPosition.getRotation(limitedUnprojectedXY));\n\n this.m_controllerUniform.pPrime = this.m_dewarpingPlane.pPrime;\n this.m_controllerUniform.uHat = this.m_dewarpingPlane.uHat;\n this.m_controllerUniform.vHat = this.m_dewarpingPlane.vHat;\n this.m_controllerUniform.PlaneEquation = PlaneEquation.buildFromNormalAndPoint(this.m_dewarpingPlane.pPrime, this.m_dewarpingPlane.pPrime);\n\n this.triggerSceneChanged();\n }\n\n public debugStatus(indent: number): string {\n let planeEquationString: string = '';\n\n if (this.m_controllerUniform.PlaneEquation !== null) {\n planeEquationString = Utils.indentNewLine(indent) + `PlaneEquation: ${this.m_controllerUniform.PlaneEquation.toString()}`;\n }\n\n return 'DewarperController: ' + Utils.indentNewLine(indent) +\n `Requested XY: ${this.m_requestedImageXY.toString()}` + Utils.indentNewLine(indent) +\n `Zoom factor: ${this.m_requestedZoom.toString()}` + Utils.indentNewLine(indent) +\n `pPrime: ${this.m_controllerUniform.pPrime} û:${this.m_controllerUniform.uHat} v̂:${this.m_controllerUniform.vHat}` +\n planeEquationString;\n }\n}\n\nexport class DewarpingRoi {\n private readonly m_imageXY: ClipSpaceVec2;\n private readonly m_zoomFactor: ZoomFactor;\n\n constructor(imageXY: ClipSpaceVec2, zoomFactor: ZoomFactor) {\n this.m_imageXY = imageXY;\n this.m_zoomFactor = zoomFactor;\n }\n}\n","import { Vec3 } from '../utils/Vec3';\nimport { PlaneEquation } from './DewarpingPlane';\nimport { Uniform3f, Uniform4f } from './WebGL2/Uniform';\n\nexport class ControllerUniforms {\n private readonly m_pPrime: Uniform3f;\n private readonly m_uHat: Uniform3f;\n private readonly m_vHat: Uniform3f;\n private readonly m_dewarpingPlaneEquation: Uniform4f | null;\n\n public get pPrime(): Vec3 {\n return this.toVec3(this.m_pPrime);\n }\n\n public set pPrime(pPrime: Vec3) {\n this.m_pPrime.set(pPrime.X, pPrime.Y, pPrime.Z);\n }\n\n public get uHat(): Vec3 {\n return this.toVec3(this.m_uHat);\n }\n\n public set uHat(uHat: Vec3) {\n this.m_uHat.set(uHat.X, uHat.Y, uHat.Z);\n }\n\n public get vHat(): Vec3 {\n return this.toVec3(this.m_vHat);\n }\n\n public set vHat(vHat: Vec3) {\n this.m_vHat.set(vHat.X, vHat.Y, vHat.Z);\n }\n\n public get PlaneEquation(): PlaneEquation {\n if (this.m_dewarpingPlaneEquation === null) {\n return new PlaneEquation(0, 0, 0, 0);\n }\n const planeEquation = this.m_dewarpingPlaneEquation.get();\n return new PlaneEquation(planeEquation[0], planeEquation[1], planeEquation[2], planeEquation[3]);\n }\n\n public set PlaneEquation(dewarpingPlaneEquation: PlaneEquation) {\n if (this.m_dewarpingPlaneEquation === null) {\n return;\n }\n\n this.m_dewarpingPlaneEquation.set(dewarpingPlaneEquation.A, dewarpingPlaneEquation.B, dewarpingPlaneEquation.C, dewarpingPlaneEquation.D);\n }\n\n public constructor(pPrime: Uniform3f, uHat: Uniform3f, vHat: Uniform3f, dewarpingPlaneEquation: Uniform4f | null) {\n this.m_pPrime = pPrime;\n this.m_uHat = uHat;\n this.m_vHat = vHat;\n this.m_dewarpingPlaneEquation = dewarpingPlaneEquation;\n }\n\n private toVec3(uniform3: Uniform3f): Vec3 {\n const xyz = uniform3.get();\n return new Vec3(xyz[0], xyz[1], xyz[2]);\n }\n}\n","import { Program } from './WebGL2/Program';\nimport { DewarperVertexShader, PositionBuffer } from './DewarperVertexShader';\nimport { DewarperFragmentShader } from './DewarperFragmentShader';\nimport { GLUtils } from './WebGL2/GLUtils';\nimport { Texture } from './WebGL2/Texture';\nimport { Uniform2f, Uniform4f } from './WebGL2/Uniform';\nimport { InternalDewarperSourceImageParameters } from './DewarperSourceImageParameters';\nimport { DewarperController } from './DewarperController';\nimport { IInternalDewarperControl } from './DewarperInterfaces';\nimport { ILogger } from '../utils/logger';\nimport { FloatPrecision } from './WebGL2/FragmentShader';\nimport { IVideoFrame } from '../players/VideoFrameSource';\nimport { Utils } from '../utils/Utils';\nimport { NormalizedColor } from '../utils/Color';\nimport { ControllerUniforms } from './ControllerUniforms';\nimport { DewarpingParameters } from './DewarpingParameters';\n\nexport class DewarperProgram extends Program {\n private readonly m_logger: ILogger;\n\n private readonly m_dewarperController: DewarperController;\n\n private readonly m_positionBuffer: PositionBuffer;\n private readonly m_texture: Texture;\n\n private readonly m_outsideColor: Uniform4f;\n\n private readonly m_warpedImageResolution: Uniform2f;\n private readonly m_canvasResolutionAdjustedToSrcAspectRatio: Uniform2f;\n private readonly m_canvasResolutionAspectRatioOverflow: Uniform2f;\n private readonly m_cropping: Uniform2f;\n\n public get Controller(): IInternalDewarperControl {\n return this.m_dewarperController;\n }\n\n public set OutsideColor(color: NormalizedColor) {\n this.m_outsideColor.set(color.R, color.G, color.B, color.A);\n }\n\n public constructor(logger: ILogger, gl: WebGL2RenderingContext, dewarperSourceImageParameters: InternalDewarperSourceImageParameters) {\n const vertexShader = new DewarperVertexShader(gl);\n const fragmentShader = new DewarperFragmentShader(gl, dewarperSourceImageParameters, FloatPrecision.high);\n super(gl, vertexShader, fragmentShader);\n\n this.m_logger = logger.subLogger('DewarperProgram');\n\n this.m_logger.intense?.trace(`vertex shader: ${this.m_compiledProgram.VertexShaderSource}`);\n this.m_logger.intense?.trace(`fragment shader: ${this.m_compiledProgram.FragmentShaderSource}`);\n\n this.m_positionBuffer = new PositionBuffer(this, 'a_position');\n this.m_warpedImageResolution = this.buildUniform2f('u_warpedImageResolution');\n this.m_canvasResolutionAdjustedToSrcAspectRatio = this.buildUniform2f('u_canvasResolutionAdjustedToSrcAspectRatio');\n this.m_canvasResolutionAspectRatioOverflow = this.buildUniform2f('u_canvasResolutionAspectRatioOverflow');\n this.m_cropping = this.buildUniform2f('u_cropping');\n\n this.m_outsideColor = this.buildUniform4f('u_outsideColor');\n\n this.m_dewarperController = this.buildController(dewarperSourceImageParameters);\n\n this.m_texture = this.createTexture();\n this.m_logger.debug?.trace(`original gl canvas: ${gl.canvas.width}x${gl.canvas.height}`);\n }\n\n public dispose() {\n this.m_texture.dispose();\n this.m_positionBuffer.dispose();\n\n super.dispose();\n }\n\n public setDewarpingParameters(dewarpingParameters: DewarpingParameters) {\n this.m_logger.info?.trace(`New dewarping parameters: ${dewarpingParameters.debugStatus(0)}`);\n\n this.m_logger.info?.trace(`Stream resolution changed from ${this.m_warpedImageResolution.toString()} to ${dewarpingParameters.StreamResolution.toString()}`);\n this.m_warpedImageResolution.setFromResolution(dewarpingParameters.StreamResolution);\n\n //canvas resolution management\n const canvasResolution = dewarpingParameters.DewarpedResolution;\n\n // set the resolution -> Tell WebGL how to convert from clip space to pixels\n this.m_gl.viewport(0, 0, canvasResolution.Width, canvasResolution.Height);\n\n this.m_canvasResolutionAdjustedToSrcAspectRatio.setFromResolution(dewarpingParameters.FitResolution.Scaled);\n this.m_canvasResolutionAspectRatioOverflow.setFromVec2(dewarpingParameters.FitResolution.PixelOffset);\n\n this.m_cropping.setFromVec2(dewarpingParameters.Cropping);\n\n this.m_logger.info?.trace(`Viewport resolution changed from ${this.m_gl.canvas.width}x${this.m_gl.canvas.height} to ${canvasResolution.toString()} dewarping at ${dewarpingParameters.FitResolution.Scaled.toString()} with an offset of ${dewarpingParameters.FitResolution.PixelOffset.toString()}. Cropping of ${dewarpingParameters.Cropping.toString()}`);\n\n this.m_dewarperController.DewarpingParameters = dewarpingParameters;\n }\n\n public dewarp(imageSource: IVideoFrame) {\n //todo: assert that imageSource is expected size instead...\n\n this.m_positionBuffer.setValue(GLUtils.getRectangle12Points(-1, -1, 2, 2)); //TODO: Try to do this only once\n\n this.m_texture.updateTexture(imageSource.Image);\n\n // Draw the rectangle (2 triangles)\n this.m_gl.drawArrays(this.m_gl.TRIANGLES, 0, 6);\n }\n\n private buildController(dewarperSourceImageParameters: InternalDewarperSourceImageParameters): DewarperController {\n const controller = new DewarperController(\n this.m_logger.subLogger('DewarperController - Program'),\n dewarperSourceImageParameters,\n new ControllerUniforms(\n this.buildUniform3f('u_pPrime'),\n this.buildUniform3f('u_uHat'),\n this.buildUniform3f('u_vHat'),\n null),\n );\n\n return controller;\n }\n\n public debugStatus(indent: number): string {\n const viewport: Int32Array = this.m_gl.getParameter(this.m_gl.VIEWPORT);\n\n return 'Dewarper Program:' + Utils.indentNewLine(indent) +\n 'Uniforms: ' + Utils.indentNewLine(indent) +\n `Warped image resolution: ${this.m_warpedImageResolution.getX()}x${this.m_warpedImageResolution.getY()}` + Utils.indentNewLine(indent) +\n 'Canvas resolution adjusted to src aspect ratio: ' + this.m_canvasResolutionAdjustedToSrcAspectRatio.toString() + Utils.indentNewLine(indent) +\n 'Canvas resolution aspect ratio overflow: ' + this.m_canvasResolutionAspectRatioOverflow.toString() + Utils.indentNewLine(indent) +\n `gl viewport: ${viewport[0]}, ${viewport[1]} ${viewport[2]}x${viewport[3]}` + Utils.indentNewLine(indent) +\n 'Outside color: ' + this.m_outsideColor.toString() + Utils.indentNewLine(indent) +\n this.m_dewarperController.debugStatus(indent + Utils.Indentation);\n // + Utils.indentNewLine(indent) +\n // 'Source: ' + Utils.indentNewLine(indent) +\n // this.m_compiledProgram.FragmentShaderSource;\n }\n}\n","import { Degree } from '../utils/Degree';\nimport { DragInfo } from '../utils/DragObserver';\nimport { Guard } from '../utils/Guard';\nimport { ILiteEvent, LiteEvent } from '../utils/liteEvents';\nimport { Radian } from '../utils/Radian';\nimport { ClipSpaceVec2 } from '../utils/Vec2';\nimport { Dewarper } from './Dewarper';\nimport { ZoomFactor } from './ZoomFactor';\n\n/**\n * Interface used to control the dewarping of the video stream\n * @public\n * */\nexport interface IDewarperControl {\n /** Is the webplayer currently dewarping a stream */\n readonly isDewarping: boolean;\n\n /** Stops the dewarping of the stream and return to the warped image.\n Does nothing if the stream was not currently being dewarped.*/\n stopDewarping(): void;\n\n /** Places the center of the dewarped area at the requested coordinates.\n * Requires values in the [-1, 1] range, (0, 0) being the center of the warped image.\n * Based on the resolution of the whole image, not only the warped circle.\n * The dewarper will cap requests at the edges of the circle.\n * @param x - X coordinate of the desired dewarped area\n * @param y - Y coordinate of the desired dewarped area\n * */\n gotoXY(x: number, y: number): void;\n\n /** X coordinate in the whole image for the center of the currently dewarped area */\n readonly X: number;\n /** Y coordinate in the whole image for the center of the currently dewarped area */\n readonly Y: number;\n\n /**\n * Move the dewarped area according taking into account the camera position using values into degree.\n * @param panDegrees - The amount of degrees to pan\n * @param tiltDegrees - The amount of degrees to tilt\n */\n gotoPanTilt(panDegrees: number, tiltDegrees: number): void;\n /** The amount of pan degrees the currently dewarped area is from the center */\n readonly PanDegrees: number;\n /** The amount of tilt degrees the currently dewarped area is from the center */\n readonly TiltDegrees: number;\n\n /**\n * Zoom on the center of the currently dewarped area.\n * Request to zoom outside of the supported range will raise an error.\n * @param zoomFactor - The zoom factor. Must be between 1 and 20, 1 being not zoomed and 20 being the maximum zoom available.\n */\n gotoZoom(zoomFactor: number): void;\n\n /** The currently used zoom factor. */\n readonly ZoomFactor: number;\n\n /** Obtain the interface to manipulate the dewarping preview control */\n readonly Preview: IDewarperPreview;\n\n /** Obtain a snapshot of the currently dewarped view */\n //getSnapshot(): ImageData | null;\n}\n\nexport class DewarperControl implements IDewarperControl {\n private readonly m_dewarper: Dewarper;\n private readonly m_dewarperPreview: IDewarperPreview;\n private readonly m_dewarperControl: IInternalDewarperControl;\n\n public get isDewarping(): boolean {\n return this.m_dewarper.isDewarping;\n }\n\n public stopDewarping(): void {\n this.m_dewarper.stopDewarping();\n }\n\n public gotoXY(x: number, y: number): void {\n Guard.isFiniteNumber(x, 'x');\n Guard.isFiniteNumber(y, 'y');\n\n this.m_dewarperControl.gotoXY(new ClipSpaceVec2(x, y));\n }\n\n public get X(): number {\n return this.m_dewarperControl.XY.X;\n }\n\n public get Y(): number {\n return this.m_dewarperControl.XY.Y;\n }\n\n public gotoPanTilt(panDegrees: number, tiltDegrees: number): void {\n Guard.isFiniteNumber(panDegrees, 'panDegrees');\n Guard.isFiniteNumber(tiltDegrees, 'tiltDegrees');\n\n this.m_dewarperControl.gotoPanTilt(new Degree(panDegrees).toRadian(), new Degree(tiltDegrees).toRadian());\n }\n\n public get PanDegrees(): number {\n return this.m_dewarperControl.Pan.InDegree;\n }\n\n public get TiltDegrees(): number {\n return this.m_dewarperControl.Tilt.InDegree;\n }\n\n public gotoZoom(zoomFactor: number): void {\n Guard.isFiniteNumber(zoomFactor, 'zoomFactor');\n return this.m_dewarperControl.zoom(new ZoomFactor(zoomFactor));\n }\n\n public get ZoomFactor(): number {\n return this.m_dewarperControl.ZoomFactor.Value;\n }\n\n public get Preview(): IDewarperPreview {\n return this.m_dewarperPreview;\n }\n\n public constructor(dewarper: Dewarper, dewarperPreview: IDewarperPreview, dewarperControl: IInternalDewarperControl) {\n this.m_dewarper = dewarper;\n this.m_dewarperPreview = dewarperPreview;\n this.m_dewarperControl = dewarperControl;\n }\n}\n\n/**\n * Interface to manipulate the dewarping preview control\n * @public\n * */\nexport interface IDewarperPreview {\n /** Enable or disable the preview control */\n Enabled: boolean;\n /** Obtain to do manipulation on the dewarper preview canvas such as resize and reposition it.\n The color of the dewarped area and its border can also be changed by setting the css color and border-color properties*/\n readonly Canvas: HTMLCanvasElement;\n}\n\nexport interface IInternalDewarperControl {\n readonly sceneUpdated: ILiteEvent;\n\n gotoXY(xy: ClipSpaceVec2): void;\n readonly XY: ClipSpaceVec2;\n\n gotoPanTilt(pan: Radian, tilt: Radian): void;\n readonly Pan: Degree;\n readonly Tilt: Degree;\n\n zoom(zoomFactor: ZoomFactor): void;\n readonly ZoomFactor: ZoomFactor;\n\n drag(dragInfo: DragInfo): void;\n}\n\nexport class ControllerAggregate implements IInternalDewarperControl {\n private readonly m_internalControl: IInternalDewarperControl;\n private readonly m_secondListener: IInternalDewarperControl | null;\n private readonly m_sceneUpdatedEvent: LiteEvent;\n\n public get sceneUpdated(): ILiteEvent {\n return this.m_sceneUpdatedEvent.expose();\n }\n\n public get XY(): ClipSpaceVec2 {\n return this.m_internalControl.XY;\n }\n\n public get Pan(): Degree {\n return this.m_internalControl.Pan;\n }\n\n public get Tilt(): Degree {\n return this.m_internalControl.Tilt;\n }\n\n public get ZoomFactor(): ZoomFactor {\n return this.m_internalControl.ZoomFactor;\n }\n\n constructor(internalControl: IInternalDewarperControl, secondListener: IInternalDewarperControl | null) {\n this.m_internalControl = internalControl;\n this.m_secondListener = secondListener;\n this.m_sceneUpdatedEvent = new LiteEvent();\n }\n\n public gotoXY(xy: ClipSpaceVec2): void {\n this.m_internalControl.gotoXY(xy);\n this.m_secondListener?.gotoXY(xy);\n this.triggerSceneChanged();\n }\n\n public gotoPanTilt(pan: Radian, tilt: Radian): void {\n this.m_internalControl.gotoPanTilt(pan, tilt);\n this.m_secondListener?.gotoPanTilt(pan, tilt);\n this.triggerSceneChanged();\n }\n\n public zoom(zoomFactor: ZoomFactor): void {\n this.m_internalControl.zoom(zoomFactor);\n this.m_secondListener?.zoom(zoomFactor);\n this.triggerSceneChanged();\n }\n\n public drag(dragInfo: DragInfo): void {\n this.m_internalControl.drag(dragInfo);\n this.m_secondListener?.drag(dragInfo);\n this.triggerSceneChanged();\n }\n\n private triggerSceneChanged(): void {\n this.m_sceneUpdatedEvent.trigger();\n }\n}\n","import { Guard } from './Guard';\n\nexport class Color {\n //0 - 255 components\n private readonly m_r: number;\n private readonly m_g: number;\n private readonly m_b: number;\n private readonly m_a: number;\n\n public get R(): number {\n return this.m_r;\n }\n\n public get G(): number {\n return this.m_g;\n }\n\n public get B(): number {\n return this.m_b;\n }\n\n public get A(): number {\n return this.m_a;\n }\n\n public static fromCSSColor(str: string): Color {\n const canvas = document.createElement('canvas');\n canvas.height = 1;\n canvas.width = 1;\n const ctx = canvas.getContext('2d');\n if (ctx === null) {\n throw new Error('Failed to obtain a canvas to translate the color.');\n }\n\n ctx.fillStyle = str;\n ctx.fillRect(0, 0, 1, 1);\n\n const rgba = ctx.getImageData(0, 0, 1, 1).data;\n const color = new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n return color;\n }\n\n public constructor(r: number, g: number, b: number, a: number) {\n Guard.isInRangeInclusive(r, 0, 255);\n Guard.isInRangeInclusive(g, 0, 255);\n Guard.isInRangeInclusive(b, 0, 255);\n Guard.isInRangeInclusive(a, 0, 255);\n\n this.m_r = r;\n this.m_g = g;\n this.m_b = b;\n this.m_a = a;\n }\n\n public toString(): string {\n return `R:${this.m_r} G:${this.m_g} B:${this.m_b} A:${this.m_a}`;\n }\n}\n\nexport class NormalizedColor {\n //0 - 1 components\n private readonly m_r: number;\n private readonly m_g: number;\n private readonly m_b: number;\n private readonly m_a: number;\n\n public get R(): number {\n return this.m_r;\n }\n\n public get G(): number {\n return this.m_g;\n }\n\n public get B(): number {\n return this.m_b;\n }\n\n public get A(): number {\n return this.m_a;\n }\n\n public static fromColor(color: Color) {\n return new NormalizedColor(color.R / 255, color.G / 255, color.B / 255, color.A / 255);\n }\n\n public constructor(r: number, g: number, b: number, a: number) {\n Guard.isInRangeInclusive(r, 0, 1);\n Guard.isInRangeInclusive(g, 0, 1);\n Guard.isInRangeInclusive(b, 0, 1);\n Guard.isInRangeInclusive(a, 0, 1);\n\n this.m_r = r;\n this.m_g = g;\n this.m_b = b;\n this.m_a = a;\n }\n\n public equals(color: NormalizedColor): boolean {\n return this.m_r === color.m_r &&\n this.m_g === color.m_g &&\n this.m_b === color.m_b &&\n this.m_a === color.m_a;\n }\n\n public toString(): string {\n return `R:${this.m_r.toFixed(2)} G:${this.m_g.toFixed(2)} B:${this.m_b.toFixed(2)} A:${this.m_a.toFixed(2)}`;\n }\n}\n","import { InternalDewarperSourceImageParameters } from '../DewarperSourceImageParameters';\nimport { FloatPrecision, FragmentShader } from '../WebGL2/FragmentShader';\n\nexport class DewarpedAreaFragmentShader extends FragmentShader {\n constructor(gl: WebGL2RenderingContext, dewarperSourceImageParameters: InternalDewarperSourceImageParameters) {\n super(gl, new DewarpedAreaFragmentShaderCodeBuilder(dewarperSourceImageParameters).build(), FloatPrecision.medium);\n }\n}\n\nexport class DewarpedAreaFragmentShaderCodeBuilder {\n private readonly m_dewarperSourceImageParameters: InternalDewarperSourceImageParameters;\n\n constructor(dewarperSourceImageParameters: InternalDewarperSourceImageParameters) {\n this.m_dewarperSourceImageParameters = dewarperSourceImageParameters;\n }\n\n public build(): string {\n return `${DewarpedAreaFragmentShaderCodeBuilder.Variables}\n\n${this.getToPolar()}\n\n${this.toCartesian()}\n\n${this.main()}\n`;\n }\n\n private static readonly Variables: string =\n `\n\nuniform vec4 u_dewarpedAreaColor; // The dewarped area color\nuniform vec4 u_dewarpedAreaBorderColor; // The dewarped area border color\n\nuniform vec2 u_viewportResolution; // Resolution of this viewport\nuniform vec2 u_viewportOffset; // vertical viewport offset. Will influence the gl_FragCoord\n\nuniform vec2 u_warpedImageResolution; // Resolution of the warped image\n\nuniform vec2 u_lowerDewarpedLimit;\nuniform vec2 u_higherDewarpedLimit;\n\nuniform float u_borderWidthRatio;\n\n// The output color of the fragment shader execution\nout vec4 outputColor;\n\nuniform vec4 u_dewarpingPlane; //stored in this order: (A, B, C, D)\n\nuniform vec3 u_pPrime; //Vector/Normal to origin of the dewarping plane\nuniform vec3 u_uHat; //Horizontal normalized vector of the dewarping plane (equivalent of x-Axis)\nuniform vec3 u_vHat; //Vertical normalized vector of the dewarping plane (equivalent of y-Axis)\n\n`;\n\n private getToPolar(): string {\n return `\n\n// Inputs : Cartesian coordinates\n// Output : Polar coordinates (x: radius, y: angle)\nvec2 toPolar(vec2 cartesian) {\n return vec2(\n sqrt(pow(cartesian.x, 2.0) + pow(cartesian.y, 2.0)),\n atan(cartesian.y, cartesian.x));\n}\n\n`;\n }\n\n private toCartesian(): string {\n return `\n\n// Inputs : Polar coordinates (x: radius, y: beta, z: delta) beta: angle vs z axis, delta: angle on the x-y plane\n// Output : Cartesian coordinates\nvec3 toCartesian(vec3 polar) {\n float sinBeta = sin(polar.y);\n float cosBeta = cos(polar.y);\n float sinDelta = sin(polar.z);\n float cosDelta = cos(polar.z);\n vec3 cartesian = vec3(sinBeta * cosDelta, sinBeta * sinDelta, cosBeta);\n return cartesian * polar.x;\n}\n`;\n }\n\n private getReversedRdFunction(variableName: string): string {\n return this.m_dewarperSourceImageParameters.Projection.reverseCode(variableName);\n }\n\n\n private main(): string {\n return `\n\nvoid main()\n{\n // Will be called from (0, 0) to viewPort (which should be the canvas resolution)\n // gl_FragCoord (0, 0) is lower left and is in pixel. <-- Maybe not so true with the viewport being set on the 'y' axis value and the aspectRatio overflow computation\n vec2 v = gl_FragCoord.xy - u_viewportOffset;\n\n // scale view port pixels to the warped image resolution\n v = v * u_warpedImageResolution;\n v = v / u_viewportResolution;\n\n //Translate to circle center\n v = v - (vec2(${toFloat(this.m_dewarperSourceImageParameters.CircleCenter.X)}, ${toFloat(this.m_dewarperSourceImageParameters.CircleCenter.Y)}) * u_warpedImageResolution);\n\n //Scale to circle resolution\n v = v / (${toFloat(this.m_dewarperSourceImageParameters.RadiusRatio)} * u_warpedImageResolution.y);\n\n vec2 polar = toPolar(v);\n\n //Early exit for outside of dewarping circle\n if (polar.x > 1.0)\n {\n return;\n }\n\n float delta = polar.y;\n\n //reversed projection\n vec3 polarXYZ = vec3(1.0, ${this.getReversedRdFunction('(polar.x)')}, delta);\n\n vec3 v3 = toCartesian(polarXYZ);\n float t = -u_dewarpingPlane[3] / (u_dewarpingPlane[0] * v3.x + u_dewarpingPlane[1] * v3.y + u_dewarpingPlane[2] * v3.z);\n\n v3 = v3 * t;\n\n //back to 2D:\n v3 = v3 - u_pPrime;\n\n //a = u_uHat.x;\n //b = u_vHat.x;\n //c = v3.x;\n //d = u_uHat.y;\n //e = u_vHat.y;\n //f = v3.y;\n //float y = (a * f - d * c) / (a * e - d * b);\n //float x = (c - b * y) / a;\n\n float y = 0.0;\n float x = 0.0;\n if (u_uHat.x == 0.0) {\n // ax + by = c\n // dx + ey = f\n // when a == 0 becomes\n // by = c\n // y = c/b\n // And knowing y, we can do the second equation. Isolate 'x'\n // dx + ey = f\n // dx = f - ey\n // x = (f - ey)/d\n\n y = v3.x / u_vHat.x;\n x = (v3.y - u_vHat.y * y) / u_uHat.y;\n } else {\n //isolating x in first equation gives\n // x = (c - by)/a\n\n //Replacing x by [(c - by)/a] in second equation gives\n // (d((c - by)/a) + ey = f\n\n //isolating y in second equation gives\n //y = (af - dc)/(ae - db)\n y = (u_uHat.x * v3.y - u_uHat.y * v3.x) / (u_uHat.x * u_vHat.y - u_uHat.y * u_vHat.x);\n x = (v3.x - u_vHat.x * y) / u_uHat.x;\n }\n\n if (u_lowerDewarpedLimit.x <= x && x <= u_higherDewarpedLimit.x &&\n u_lowerDewarpedLimit.y <= y && y <= u_higherDewarpedLimit.y)\n {\n if (u_lowerDewarpedLimit.x + u_borderWidthRatio < x && x < u_higherDewarpedLimit.x - u_borderWidthRatio &&\n u_lowerDewarpedLimit.y + u_borderWidthRatio < y && y < u_higherDewarpedLimit.y - u_borderWidthRatio)\n {\n //Inside the border\n outputColor = u_dewarpedAreaColor;\n }\n else\n {\n //The border itself\n outputColor = u_dewarpedAreaBorderColor;\n }\n }\n}\n\n`;\n }\n}\n\nfunction toFloat(x: number): string {\n return Number.isInteger(x) ? x + '.0' : x.toString();\n}\n","import { VertexShader } from '../WebGL2/VertexShader';\n\nexport class DewarpedAreaVertexShader extends VertexShader {\n private static readonly VertexShaderCode: string =\n `\n\nin vec2 a_position;\n\nvoid main() {\n gl_Position = vec4(a_position, 0, 1);\n}`;\n\n constructor(gl: WebGL2RenderingContext) {\n super(gl, DewarpedAreaVertexShader.VertexShaderCode);\n }\n}\n","import { NormalizedColor } from '../../utils/Color';\nimport { ILogger } from '../../utils/logger';\nimport { Resolution } from '../../utils/Resolution';\nimport { Utils } from '../../utils/Utils';\nimport { ControllerUniforms } from '../ControllerUniforms';\nimport { DewarperController } from '../DewarperController';\nimport { IInternalDewarperControl } from '../DewarperInterfaces';\nimport { InternalDewarperSourceImageParameters } from '../DewarperSourceImageParameters';\nimport { PositionBuffer } from '../DewarperVertexShader';\nimport { DewarpingParameters } from '../DewarpingParameters';\nimport { GLUtils } from '../WebGL2/GLUtils';\nimport { Program } from '../WebGL2/Program';\nimport { Uniform1f, Uniform2f } from '../WebGL2/Uniform';\nimport { DewarpedAreaFragmentShader } from './DewarpedAreaFragmentShader';\nimport { DewarpedAreaVertexShader } from './DewarpedAreaVertexShader';\n\nexport interface IDewarpedAreaProgram {\n DewarpedAreaColor: NormalizedColor;\n DewarpedAreaBorderColor: NormalizedColor;\n readonly Controller: IInternalDewarperControl;\n\n setDewarpingParameters(dewarpingParameters: DewarpingParameters): void;\n dispose(): void;\n canvasResolutionChanged(): void;\n debugStatus(indent: number): string;\n}\n\nexport class DewarpedAreaProgram extends Program implements IDewarpedAreaProgram {\n private readonly m_logger: ILogger;\n\n private readonly m_dewarperController: DewarperController;\n\n private readonly m_positionBuffer: PositionBuffer;\n\n private readonly m_warpedImageResolution: Uniform2f;\n\n private readonly m_lowerDewarpedLimit: Uniform2f;\n private readonly m_higherDewarpedLimit: Uniform2f;\n private readonly m_borderWidthRatio: Uniform1f;\n\n private readonly m_viewportResolution: Uniform2f;\n private readonly m_viewportOffset: Uniform2f;\n\n private m_dewarpingParameters: DewarpingParameters | null = null;\n\n private get DewarpingParameters(): DewarpingParameters {\n if (this.m_dewarpingParameters === null) {\n throw new Error('Unexpected null dewarping parameters');\n }\n\n return this.m_dewarpingParameters;\n }\n\n public set DewarpedAreaColor(newColor: NormalizedColor) {\n const dewarpedAreaColor = this.buildUniform4f('u_dewarpedAreaColor');\n const currentColorValues = dewarpedAreaColor.get();\n const currentColor = new NormalizedColor(currentColorValues[0], currentColorValues[1], currentColorValues[2], currentColorValues[3]);\n\n if (currentColor.equals(newColor)) {\n return;\n }\n\n this.m_logger.debug?.trace(`Setting dewarped area color from ${currentColor.toString()} to ${newColor.toString()}`);\n dewarpedAreaColor.set(newColor.R, newColor.G, newColor.B, newColor.A);\n this.render();\n }\n\n public set DewarpedAreaBorderColor(newBorderColor: NormalizedColor) {\n const dewarpedAreaBorderColor = this.buildUniform4f('u_dewarpedAreaBorderColor');\n const currentBorderColorValues = dewarpedAreaBorderColor.get();\n const currentBorderColor = new NormalizedColor(currentBorderColorValues[0], currentBorderColorValues[1], currentBorderColorValues[2], currentBorderColorValues[3]);\n\n if (currentBorderColor.equals(newBorderColor)) {\n return;\n }\n\n this.m_logger.debug?.trace(`Setting dewarped area border color from ${currentBorderColor.toString()} to ${newBorderColor.toString()}`);\n dewarpedAreaBorderColor.set(newBorderColor.R, newBorderColor.G, newBorderColor.B, newBorderColor.A);\n this.render();\n }\n\n public get Controller(): IInternalDewarperControl {\n return this.m_dewarperController;\n }\n\n constructor(logger: ILogger, gl: WebGL2RenderingContext, dewarperSourceImageParameters: InternalDewarperSourceImageParameters) {\n super(gl, new DewarpedAreaVertexShader(gl), new DewarpedAreaFragmentShader(gl, dewarperSourceImageParameters));\n\n this.m_logger = logger.subLogger('DewarpedAreaProgram');\n\n this.m_logger.intense?.trace(`vertex shader: ${this.m_compiledProgram.VertexShaderSource}`);\n this.m_logger.intense?.trace(`fragment shader: ${this.m_compiledProgram.FragmentShaderSource}`);\n\n this.m_positionBuffer = new PositionBuffer(this, 'a_position');\n this.m_positionBuffer.setValue(GLUtils.getRectangle12Points(-1, -1, 2, 2));\n\n this.m_warpedImageResolution = this.buildUniform2f('u_warpedImageResolution');\n\n this.m_lowerDewarpedLimit = this.buildUniform2f('u_lowerDewarpedLimit');\n this.m_higherDewarpedLimit = this.buildUniform2f('u_higherDewarpedLimit');\n this.m_borderWidthRatio = this.buildUniform1f('u_borderWidthRatio');\n\n this.m_viewportResolution = this.buildUniform2f('u_viewportResolution');\n this.m_viewportOffset = this.buildUniform2f('u_viewportOffset');\n\n this.m_dewarperController = this.buildController(dewarperSourceImageParameters);\n this.m_dewarperController.sceneUpdated.register(this.onSceneChanged);\n\n this.m_borderWidthRatio.set(0.05);\n }\n\n public dispose() {\n this.m_positionBuffer.dispose();\n this.m_dewarperController.sceneUpdated.unregister(this.onSceneChanged);\n super.dispose();\n }\n\n // Handle change of the canvas displayed resolution\n public canvasResolutionChanged(): void {\n this.setViewport();\n }\n\n // Set the dewarped resolution so the dewarped area can reflect dewarping into an area that does not respect the initial aspect ratio\n public setDewarpingParameters(dewarpingParameters: DewarpingParameters): void {\n this.m_dewarpingParameters = dewarpingParameters;\n\n this.setViewport();\n\n this.m_warpedImageResolution.setFromResolution(this.m_dewarpingParameters.StreamResolution);\n\n this.computeAspectRatioOverflow();\n\n this.m_dewarperController.DewarpingParameters = this.m_dewarpingParameters;\n }\n\n private computeAspectRatioOverflow() {\n const fitResolution = this.DewarpingParameters.FitResolution;\n\n this.m_lowerDewarpedLimit.set(\n -1.0 - (fitResolution.OffsetH * 2.0 / fitResolution.Scaled.Width),\n -1.0 - (fitResolution.OffsetV * 2.0 / fitResolution.Scaled.Height),\n );\n\n this.m_higherDewarpedLimit.set(\n 1.0 + (fitResolution.OffsetH * 2.0 / fitResolution.Scaled.Width),\n 1.0 + (fitResolution.OffsetV * 2.0 / fitResolution.Scaled.Height),\n );\n\n this.render();\n }\n\n private setViewport(): void {\n const canvasResolution = Resolution.build(this.m_gl.canvas.width, this.m_gl.canvas.height);\n\n // set the resolution -> Tell WebGL how to convert from clip space to pixels\n if (this.m_dewarpingParameters === null) {\n this.m_gl.viewport(0, 0, canvasResolution.Width, canvasResolution.Height);\n this.m_viewportResolution.setFromResolution(canvasResolution);\n this.m_logger.info?.trace(`Viewport resolution changed to ${canvasResolution.toString()}. No frame rendered. Changed viewport to ${canvasResolution.toString()}`);\n } else {\n const viewportResolution = this.m_dewarpingParameters.StreamResolution.fitInto(canvasResolution);\n const viewportVerticalOffset = canvasResolution.Height - viewportResolution.Height; //viewport position (0, 0) is lower left corner. We want to render upper left corner\n this.m_gl.viewport(0, viewportVerticalOffset, viewportResolution.Width, viewportResolution.Height);\n this.m_viewportResolution.setFromResolution(viewportResolution);\n this.m_viewportOffset.set(0, viewportVerticalOffset);\n this.m_logger.info?.trace(`Viewport resolution changed to ${canvasResolution.toString()}. Last frame rendered: ${this.m_dewarpingParameters.StreamResolution.toString()}. Changed viewport to ${viewportResolution.toString()} translation to (0,${viewportVerticalOffset})`);\n\n this.render();\n }\n }\n\n private render(): void {\n // Draw the rectangle (2 triangles)\n this.m_gl.drawArrays(this.m_gl.TRIANGLES, 0, 6);\n }\n\n private buildController(dewarperSourceImageParameters: InternalDewarperSourceImageParameters): DewarperController {\n const controller = new DewarperController(\n this.m_logger.subLogger('DewarperController - Area'),\n dewarperSourceImageParameters,\n new ControllerUniforms(\n this.buildUniform3f('u_pPrime'),\n this.buildUniform3f('u_uHat'),\n this.buildUniform3f('u_vHat'),\n this.buildUniform4f('u_dewarpingPlane')),\n );\n\n return controller;\n }\n\n private readonly onSceneChanged = (): void => {\n this.render();\n }\n\n public debugStatus(indent: number): string {\n const viewport: Int32Array = this.m_gl.getParameter(this.m_gl.VIEWPORT);\n\n return 'DewarpedAreaProgram:' + Utils.indentNewLine(indent) +\n 'Dewarping Parameters:' + Utils.indentNewLine(indent) +\n (this.m_dewarpingParameters === null ? (' '.repeat(Utils.Indentation) + 'none') : this.m_dewarpingParameters?.debugStatus(indent + Utils.Indentation)) + Utils.indentNewLine(indent) +\n 'Dewarped resolution: ' + (this.m_dewarpingParameters?.DewarpedResolution.toString() ?? 'none') + Utils.indentNewLine(indent) +\n 'Warped image resolution: ' + this.m_warpedImageResolution.toString() + Utils.indentNewLine(indent) +\n 'lower limit: ' + this.m_lowerDewarpedLimit.toString() + Utils.indentNewLine(indent) +\n 'upper limit: ' + this.m_higherDewarpedLimit.toString() + Utils.indentNewLine(indent) +\n 'border width: ' + this.m_borderWidthRatio.toString() + Utils.indentNewLine(indent) +\n 'Viewport resolution and offset: ' + this.m_viewportResolution.toString() + ' ' + this.m_viewportOffset.toString() + Utils.indentNewLine(indent) +\n `gl viewport: ${viewport[0]}, ${viewport[1]} ${viewport[2]}x${viewport[3]}` + Utils.indentNewLine(indent) +\n this.m_dewarperController.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { Cancellation } from '../../utils/CancellationToken';\nimport { ILogger } from '../../utils/logger';\nimport { Utils } from '../../utils/Utils';\nimport { IInternalDewarperControl } from '../DewarperInterfaces';\nimport { InternalDewarperSourceImageParameters } from '../DewarperSourceImageParameters';\nimport { DewarpingParameters } from '../DewarpingParameters';\nimport { IDewarpedAreaCanvas } from './DewarpedAreaCanvas';\nimport { DewarpedAreaProgram, IDewarpedAreaProgram } from './DewarpedAreaProgram';\n\n// The area that was read to produce the dewarped image\nexport class DewarpedArea {\n private readonly m_logger: ILogger;\n private readonly m_canvas: IDewarpedAreaCanvas;\n\n private readonly m_program: IDewarpedAreaProgram;\n\n private m_isEnabled: boolean = false; // Dewarped area display in preview is configured to be displayed\n private m_isDewarping: boolean = false; // Indicate if we are currently dewarping\n\n public setDewarpingParameters(dewarpingParameters: DewarpingParameters) {\n this.m_program.setDewarpingParameters(dewarpingParameters);\n }\n\n public get Controller(): IInternalDewarperControl {\n return this.m_program.Controller;\n }\n\n public set IsDewarping(value: boolean) {\n if (this.m_isDewarping !== value) {\n this.m_isDewarping = value;\n this.setVisibility();\n }\n }\n\n public set Enabled(value: boolean) {\n if (this.m_isEnabled !== value) {\n this.m_isEnabled = value;\n this.setVisibility();\n }\n }\n\n public static build(logger: ILogger, dewarpedAreaCanvas: IDewarpedAreaCanvas, dewarperSourceImageParameters: InternalDewarperSourceImageParameters): DewarpedArea | null {\n try {\n const program = new DewarpedAreaProgram(logger, dewarpedAreaCanvas.getWebGL2Context(), dewarperSourceImageParameters);\n return new DewarpedArea(logger, program, dewarpedAreaCanvas);\n } catch (e) {\n logger.error?.trace('Failed to create dewarped area.', e);\n }\n\n return null;\n }\n\n public constructor(logger: ILogger, program: IDewarpedAreaProgram, dewarpedAreaCanvas: IDewarpedAreaCanvas) {\n this.m_logger = logger.subLogger('DewarpedArea');\n this.m_canvas = dewarpedAreaCanvas;\n\n this.m_program = program;\n this.m_program.DewarpedAreaColor = this.m_canvas.DewarpedAreaColor;\n this.m_program.DewarpedAreaBorderColor = this.m_canvas.DewarpedAreaBorderColor;\n\n this.m_canvas.Resized.register(this.onCanvasResized);\n this.observeCanvasStyleLoop();\n }\n\n public dispose(): void {\n this.m_canvas.Resized.unregister(this.onCanvasResized);\n this.m_canvas.dispose();\n this.m_program.dispose();\n this.m_logger.debug?.trace('dispose');\n }\n\n private setVisibility(): void {\n const show = this.m_isDewarping && this.m_isEnabled;\n this.m_logger.debug?.trace(`${(show ? 'showing' : 'hiding')} dewarping area [Dewarping: ${this.m_isDewarping}, Enabled: ${this.m_isEnabled}]`);\n this.m_canvas.Show = show;\n }\n\n private readonly onCanvasResized = () => {\n this.m_program.canvasResolutionChanged();\n }\n\n private async observeCanvasStyleLoop() {\n let styleChangeAwaitingResult = await this.m_canvas.StyleChange;\n while (!(styleChangeAwaitingResult instanceof Cancellation)) {\n this.m_program.DewarpedAreaColor = this.m_canvas.DewarpedAreaColor;\n this.m_program.DewarpedAreaBorderColor = this.m_canvas.DewarpedAreaBorderColor;\n\n styleChangeAwaitingResult = await this.m_canvas.StyleChange;\n }\n this.m_logger.debug?.trace('End of canvas style observation loop');\n }\n\n public debugStatus(indent: number): string {\n return `Dewarped Area: (${this.m_isEnabled ? 'enabled' : 'disabled'})` + Utils.indentNewLine(indent) +\n 'Is dewarping: ' + this.m_isDewarping + Utils.indentNewLine(indent) +\n this.m_canvas.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_program.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { Cancellation, CancellationToken } from '../utils/CancellationToken';\nimport { ILogger } from '../utils/logger';\nimport { PromiseCompletionSource } from '../utils/PromiseCompletionSource';\nimport { Resolution } from '../utils/Resolution';\nimport { Utils } from '../utils/Utils';\nimport { JpegRenderer } from './jpeg/JpegRenderer';\nimport { IMseRenderer } from './msePlayer';\n\nexport interface IVideoFrameSource {\n getImage(): Promise;\n dispose(): void;\n}\n\n//Aggregates the jpeg and mse as video frame source\nexport class VideoFrameSources implements IVideoFrameSource {\n private readonly m_jpegFrameSource: MjpegFrameSource;\n private readonly m_videoElementFrameSource: VideoElementFrameSource | null;\n\n private m_frameResolver: (result: IVideoFrame | Cancellation) => void = (_) => { };\n\n constructor(jpegRenderer: JpegRenderer, mseRenderer: IMseRenderer | undefined, htmlVideoElement: HTMLVideoElement) {\n this.m_jpegFrameSource = new MjpegFrameSource(jpegRenderer);\n this.m_videoElementFrameSource = mseRenderer !== undefined ? new VideoElementFrameSource(mseRenderer, htmlVideoElement) : null;\n }\n\n public dispose(): void {\n this.m_jpegFrameSource.dispose();\n this.m_videoElementFrameSource?.dispose();\n }\n\n private m_jpegSubscribed = false;\n private m_mseSubscribed = false;\n\n public getImage(): Promise {\n if (this.m_videoElementFrameSource === null) {\n return this.m_jpegFrameSource.getImage();\n }\n\n const videoElementFrameSource = this.m_videoElementFrameSource;\n const codecRace = new Promise((resolve) => {\n this.m_frameResolver = resolve;\n if (!this.m_jpegSubscribed) {\n this.m_jpegSubscribed = true;\n this.m_jpegFrameSource.getImage().then((frame) => {\n this.m_jpegSubscribed = false;\n this.m_frameResolver(frame);\n });\n }\n\n if (!this.m_mseSubscribed) {\n this.m_mseSubscribed = true;\n videoElementFrameSource.getImage().then((frame) => {\n this.m_mseSubscribed = false;\n this.m_frameResolver(frame);\n });\n }\n });\n\n return codecRace;\n }\n}\n\nexport class VideoElementFrameSource implements IVideoFrameSource {\n private readonly m_mseRenderer: IMseRenderer;\n private readonly m_htmlVideoElement: HTMLVideoElement;\n\n private readonly m_disposeToken: CancellationToken;\n private m_interupt: ((cancellation: Cancellation) => void) = () => { };\n\n public constructor(mseRenderer: IMseRenderer, htmlVideoElement: HTMLVideoElement) {\n this.m_mseRenderer = mseRenderer;\n this.m_htmlVideoElement = htmlVideoElement;\n this.m_disposeToken = new CancellationToken;\n\n this.m_disposeToken.Cancellation.then((cancellation) => this.m_interupt(cancellation));\n }\n\n public dispose(): void {\n this.m_disposeToken.cancel('dispose');\n }\n\n public async getImage(): Promise {\n if (this.m_disposeToken.IsCancelled) {\n return new Cancellation('Disposed');\n }\n\n while (true) {\n const result = await new Promise((resolve) => {\n this.m_mseRenderer.FrameRendered.then(() => resolve());\n this.m_interupt = resolve;\n });\n\n if (result instanceof Cancellation) {\n return result;\n }\n\n if (this.m_mseRenderer !== undefined) {\n const videoFrame = VideoElementFrame.build(this.m_htmlVideoElement);\n if (videoFrame !== null) {\n return videoFrame;\n }\n }\n }\n }\n}\n\nexport class MjpegFrameSource implements IVideoFrameSource {\n private readonly m_jpegRenderer: JpegRenderer;\n\n private readonly m_disposeToken: CancellationToken;\n private m_interupt: ((cancellation: Cancellation) => void) = () => { };\n\n public constructor(jpegRenderer: JpegRenderer) {\n this.m_jpegRenderer = jpegRenderer;\n\n this.m_disposeToken = new CancellationToken;\n\n this.m_disposeToken.Cancellation.then((cancellation) => this.m_interupt(cancellation));\n }\n\n public dispose(): void {\n this.m_disposeToken.cancel('dispose');\n }\n\n public async getImage(): Promise {\n if (this.m_disposeToken.IsCancelled) {\n return new Cancellation('Disposed');\n }\n\n while (true) {\n const result = await new Promise((resolve) => {\n this.m_jpegRenderer.FrameRendered.then(() => resolve());\n this.m_interupt = resolve;\n });\n\n if (result instanceof Cancellation) {\n return result;\n }\n\n const htmlImageElement = this.m_jpegRenderer.Image;\n if (htmlImageElement !== undefined) {\n const mjpegFrame = MjpegFrame.build(htmlImageElement);\n if (mjpegFrame !== null) {\n return mjpegFrame;\n }\n }\n }\n }\n}\n\n/**\n * @beta\n * */\nexport interface IVideoFrame {\n readonly Resolution: Resolution;\n readonly Image: HTMLImageElement | HTMLVideoElement;\n toString(): string;\n}\n\nexport class MjpegFrame implements IVideoFrame {\n private readonly m_imageSource: HTMLImageElement;\n private readonly m_resolution: Resolution;\n\n public get Image(): HTMLImageElement | HTMLVideoElement {\n return this.m_imageSource;\n }\n\n public get Resolution(): Resolution {\n return this.m_resolution;\n }\n\n public static build(imageSource: HTMLImageElement): IVideoFrame | null {\n if (imageSource.width === 0 || imageSource.height === 0) {\n return null;\n }\n return new MjpegFrame(imageSource);\n }\n\n private constructor(imageSource: HTMLImageElement) {\n this.m_imageSource = imageSource;\n this.m_resolution = Resolution.build(imageSource.width, imageSource.height);\n }\n\n public toString(): string {\n return `Mjpeg ${this.m_resolution.toString()}`;\n }\n}\n\nexport class VideoElementFrame implements IVideoFrame {\n private readonly m_imageSource: HTMLVideoElement;\n private readonly m_resolution: Resolution;\n\n public get Image(): HTMLImageElement | HTMLVideoElement {\n return this.m_imageSource;\n }\n\n public get Resolution(): Resolution {\n return this.m_resolution;\n }\n\n public static build(imageSource: HTMLVideoElement): IVideoFrame | null {\n if (imageSource.videoWidth === 0 || imageSource.videoHeight === 0) {\n return null;\n }\n return new VideoElementFrame(imageSource);\n }\n\n private constructor(imageSource: HTMLVideoElement) {\n this.m_imageSource = imageSource;\n this.m_resolution = Resolution.build(imageSource.videoWidth, imageSource.videoHeight);\n }\n\n public toString(): string {\n return `VideoElement ${this.m_resolution.toString()}`;\n }\n}\n\nexport class ThrottledVideoSource implements IVideoFrameSource {\n private readonly m_logger: ILogger;\n private readonly m_videoFrameSource: IVideoFrameSource;\n private readonly m_minMsBetweenFrames: number;\n private m_started: boolean;\n private m_getFramePromise: PromiseCompletionSource;\n\n public get IsStarted(): boolean {\n return this.m_started;\n }\n\n public constructor(logger: ILogger, videoFrameSource: IVideoFrameSource, maxFps: number) {\n this.m_logger = logger.subLogger('ThrottledVideoSource');\n this.m_videoFrameSource = videoFrameSource;\n this.m_minMsBetweenFrames = 1000 / maxFps;\n this.m_started = false;\n this.m_getFramePromise = new PromiseCompletionSource();\n\n this.m_logger.debug?.trace(`Created to throttle at ${this.m_minMsBetweenFrames}ms between frames (${maxFps} fps)`);\n }\n\n public dispose(): void {\n this.stop();\n this.m_videoFrameSource.dispose();\n this.m_logger.debug?.trace('Disposed');\n }\n\n public start(): void {\n if (this.m_started) {\n this.m_logger.intense?.trace('Already started');\n return;\n }\n\n this.m_logger.info?.trace('start()');\n this.m_started = true;\n this.videoFrameSourceListenLoop();\n }\n\n public stop(): void {\n this.m_logger.info?.trace('stop()');\n this.m_started = false;\n }\n\n public getImage(): Promise {\n return this.m_getFramePromise.Promise;\n }\n\n private async videoFrameSourceListenLoop() {\n this.m_logger.debug?.trace('Start of videoFrameSourceListenLoop()');\n\n while (this.m_started) {\n const result = await this.m_videoFrameSource.getImage();\n const currentFrameReception = new Date().getTime();\n const nextFrameMinTime = currentFrameReception + this.m_minMsBetweenFrames;\n this.m_logger.intense?.trace(`Received a frame at: ${currentFrameReception}`);\n\n const toResolve = this.m_getFramePromise;\n this.m_getFramePromise = new PromiseCompletionSource();\n toResolve.resolve(result);\n\n //Throttle if necessary\n const toWait = nextFrameMinTime - new Date().getTime();\n this.m_logger.intense?.trace(`NextFrame not until: ${nextFrameMinTime} Sleeping ${toWait}`);\n if (toWait > 0) {\n await Utils.delay(toWait);\n if (!this.m_started) {\n return;\n }\n this.m_logger.intense?.trace(`Sleeping done. It is now : ${new Date().getTime()}. Ready for a new frame`);\n }\n }\n\n this.m_logger.debug?.trace('End of videoFrameSourceListenLoop()');\n }\n}\n","import { IVideoFrame } from '../../players/VideoFrameSource';\nimport { Cancellation } from '../../utils/CancellationToken';\nimport { ILogger } from '../../utils/logger';\nimport { Utils } from '../../utils/Utils';\nimport { ClipSpaceVec2 } from '../../utils/Vec2';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { DewarpedArea } from '../DewarpedArea/DewarpedArea';\nimport { IDewarperPreview, IInternalDewarperControl } from '../DewarperInterfaces';\nimport { DewarpingParameters } from '../DewarpingParameters';\nimport { IPreviewCanvas } from './PreviewCanvas';\n\nexport class DewarperPreview implements IDewarperPreview {\n private readonly m_logger: ILogger;\n\n private m_lastImageSource: IVideoFrame | null = null;\n\n private readonly m_previewCanvas: IPreviewCanvas;\n private readonly m_dewarperControl: IInternalDewarperControl;\n\n private m_isEnabled: boolean = false; // Preview is configured to be displayed when dewarping is occuring\n private m_isDewarping: boolean = false; // Indicate if we are currently dewarping\n\n private readonly m_dewarpedArea: DewarpedArea | null;\n\n public setDewarpingParameters(dewarpingParameters: DewarpingParameters) {\n if (this.m_dewarpedArea !== null) {\n this.m_dewarpedArea.setDewarpingParameters(dewarpingParameters);\n }\n }\n\n public get Enabled(): boolean {\n return this.m_isEnabled;\n }\n\n public set Enabled(value: boolean) {\n if (this.m_isEnabled !== value) {\n this.m_isEnabled = value;\n //For now we link enabling the dewarpedArea with enabling the preview.\n //If computing the dewarped area is ever a performance problem or whatever other reason, it could be on its own property\n if (this.m_dewarpedArea !== null) {\n this.m_dewarpedArea.Enabled = value;\n }\n this.setPreviewVisibility();\n }\n }\n\n public set IsDewarping(value: boolean) {\n if (this.m_isDewarping !== value) {\n this.m_isDewarping = value;\n if (this.m_dewarpedArea !== null) {\n this.m_dewarpedArea.IsDewarping = value;\n }\n this.setPreviewVisibility();\n }\n }\n\n // So the user can reposition/resize or do anything else with the preview\n public get Canvas(): HTMLCanvasElement {\n return this.m_previewCanvas.Canvas;\n }\n\n public constructor(logger: ILogger, previewCanvas: IPreviewCanvas, dewarperControl: IInternalDewarperControl, dewarpedArea: DewarpedArea | null) {\n this.m_logger = logger.subLogger('DewarperPreview');\n this.m_previewCanvas = previewCanvas;\n this.m_dewarperControl = dewarperControl;\n\n this.m_previewCanvas.Clicked.register(this.onClick);\n this.m_previewCanvas.Resized.register(this.onPreviewCanvasResize);\n\n this.m_dewarpedArea = dewarpedArea;\n\n this.observeMouseWheelLoop();\n }\n\n public dispose() {\n this.m_logger.debug?.trace('dispose');\n this.m_previewCanvas.Clicked.unregister(this.onClick);\n this.m_previewCanvas.Resized.unregister(this.onPreviewCanvasResize);\n this.m_previewCanvas.dispose();\n\n this.m_dewarpedArea?.dispose();\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n this.m_previewCanvas.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n public render(imageSource: IVideoFrame): void {\n this.m_lastImageSource = imageSource;\n this.m_previewCanvas.render(imageSource);\n }\n\n private setPreviewVisibility(): void {\n const show = this.m_isDewarping && this.m_isEnabled;\n this.m_logger.debug?.trace(`${(show ? 'showing' : 'hiding')} dewarper preview [Dewarping: ${this.m_isDewarping}, Enabled: ${this.m_isEnabled}]`);\n this.m_previewCanvas.Show = show;\n }\n\n private readonly onPreviewCanvasResize = (): void => {\n if (this.m_lastImageSource !== null) {\n this.m_previewCanvas.render(this.m_lastImageSource);\n }\n }\n\n private readonly onClick = (clipSpaceCoordinates: ClipSpaceVec2): void => {\n this.m_dewarperControl.gotoXY(clipSpaceCoordinates);\n this.refresh();\n }\n\n private async observeMouseWheelLoop() {\n let mouseWheeled = await this.m_previewCanvas.MouseWheel;\n while (!(mouseWheeled instanceof Cancellation)) {\n const decrease: boolean = (mouseWheeled > 0);\n\n const newZoom = decrease ?\n this.m_dewarperControl.ZoomFactor.decrease() :\n this.m_dewarperControl.ZoomFactor.increase();\n\n this.m_dewarperControl.zoom(newZoom);\n\n mouseWheeled = await this.m_previewCanvas.MouseWheel;\n }\n this.m_logger.debug?.trace('End of mouse wheel observation loop');\n }\n\n private refresh(): void {\n if (this.m_lastImageSource !== null) {\n this.render(this.m_lastImageSource);\n }\n }\n\n public debugStatus(indent: number): string {\n return `Dewarper preview: (${this.m_isEnabled ? 'enabled' : 'disabled'})` + Utils.indentNewLine(indent) +\n 'Is dewarping: ' + this.m_isDewarping + Utils.indentNewLine(indent) +\n this.m_previewCanvas.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n (this.m_dewarpedArea !== null ? this.m_dewarpedArea.debugStatus(indent + Utils.Indentation) : 'No dewarped area');\n }\n}\n","import { Resolution } from '../gwp';\nimport { Coords } from './Coords';\nimport { ClipSpaceVec2 } from './Vec2';\n\n//Origin (0, 0) is top left\nexport class TopLeftPixelCoords extends Coords {\n private readonly m_resolution: Resolution;\n\n public constructor(x: number, y: number, resolution: Resolution) {\n super(x, y);\n this.m_resolution = resolution;\n }\n\n public toClipSpaceVec2(): ClipSpaceVec2 {\n const clipX = (2 * this.m_x / this.m_resolution.Width) - 1;\n const clipY = -((2 * this.m_y / this.m_resolution.Height) - 1); //* -1 because since y = 0 is the top in coords, it translates to top = -1 and bottom = 1 and we want the opposite in clip space\n return new ClipSpaceVec2(clipX, clipY);\n }\n}\n","export class SafeResizeObserver {\n private readonly m_resizeObserver: ResizeObserver | null;\n private readonly m_observedElement: HTMLElement;\n\n constructor(htmlElement: HTMLElement, fct: () => void) {\n this.m_observedElement = htmlElement;\n\n if (window.ResizeObserver === undefined) {\n this.m_resizeObserver = null;\n return;\n }\n\n this.m_resizeObserver = new ResizeObserver(fct);\n this.m_resizeObserver.observe(htmlElement);\n }\n\n public dispose(): void {\n if (this.m_resizeObserver !== null) {\n this.m_resizeObserver.unobserve(this.m_observedElement);\n }\n }\n}\n","import { Cancellation, CancellationToken } from './CancellationToken';\nimport { PromiseCompletionSourceVoid } from './PromiseCompletionSource';\n\nexport class StyleObserver {\n private readonly m_styleObserver: MutationObserver;\n\n private m_styleChangePromise: PromiseCompletionSourceVoid;\n private readonly m_disposeToken: CancellationToken;\n\n public get StyleChange(): Promise {\n return Promise.race([this.m_styleChangePromise.Promise, this.m_disposeToken.Cancellation]);\n }\n\n constructor(htmlElement: HTMLElement) {\n this.m_styleObserver = new MutationObserver(this.onStyleChanged);\n this.m_styleObserver.observe(htmlElement, { attributes: true, attributeFilter: ['style'] });\n\n this.m_disposeToken = new CancellationToken();\n this.m_styleChangePromise = new PromiseCompletionSourceVoid();\n }\n\n public dispose() {\n this.m_styleObserver.disconnect();\n this.m_disposeToken.cancel('dispose');\n }\n\n private readonly onStyleChanged = () => {\n const toResolve = this.m_styleChangePromise;\n this.m_styleChangePromise = new PromiseCompletionSourceVoid();\n toResolve.resolve();\n }\n}\n","import { Cancellation } from '../utils/CancellationToken';\nimport { Color, NormalizedColor } from '../utils/Color';\nimport { ILiteEvent, LiteEvent } from '../utils/liteEvents';\nimport { ILogger } from '../utils/logger';\nimport { Resolution } from '../utils/Resolution';\nimport { SafeResizeObserver } from '../utils/SafeResizeObserver';\nimport { StyleObserver } from '../utils/StyleObserver';\n\nexport class CanvasWrapper {\n private readonly m_logger: ILogger\n private readonly m_friendlyName: string;\n private readonly m_canvas: HTMLCanvasElement;\n private readonly m_resizeObserver: SafeResizeObserver;\n private readonly m_styleObserver: StyleObserver;\n private readonly m_resizeEvent: LiteEvent;\n\n protected get Logger(): ILogger {\n return this.m_logger;\n }\n\n public get Canvas(): HTMLCanvasElement {\n return this.m_canvas;\n }\n\n public set Show(show: boolean) {\n this.m_canvas.style.display = show ? 'block' : 'none';\n }\n\n public get Resolution(): Resolution {\n return Resolution.build(this.m_canvas.width, this.m_canvas.height);\n }\n\n public get StyleChange(): Promise {\n return this.m_styleObserver.StyleChange;\n }\n\n public get Color(): NormalizedColor {\n const color = this.Canvas.style.color;\n const colorObj = Color.fromCSSColor(color);\n this.Logger.debug?.trace(`Converted ${color} to ${colorObj.toString()}`);\n return NormalizedColor.fromColor(colorObj);\n }\n\n public get Resized(): ILiteEvent {\n return this.m_resizeEvent.expose();\n }\n\n constructor(logger: ILogger, friendlyName: string, htmlCanvasElement: HTMLCanvasElement) {\n this.m_logger = logger.subLogger(friendlyName);\n this.m_friendlyName = friendlyName;\n this.m_canvas = htmlCanvasElement;\n this.m_resizeObserver = new SafeResizeObserver(htmlCanvasElement, this.onResizeCanvas);\n this.m_resizeEvent = new LiteEvent();\n this.m_styleObserver = new StyleObserver(htmlCanvasElement);\n }\n\n public dispose(): void {\n this.m_resizeObserver.dispose();\n this.m_styleObserver.dispose();\n this.m_logger.debug?.trace('dispose');\n }\n\n private readonly onResizeCanvas = (): void => {\n const canvas = this.m_canvas;\n\n if (canvas.clientWidth === 0 || canvas.clientHeight === 0) {\n return;\n }\n\n if (canvas.width === canvas.clientWidth && canvas.height === canvas.clientHeight) {\n this.m_logger.intense?.trace(`Resolution did not changed from ${canvas.width}x${canvas.height} to ${canvas.clientWidth}x${canvas.clientHeight}`);\n return;\n }\n\n this.Logger.info?.trace(`Update canvas resolution from ${canvas.width}x${canvas.height} to ${canvas.clientWidth}x${canvas.clientHeight}`);\n\n // Make the canvas drawing buffer size (canvas.width/height) the same as the displayed resolution (canvas.clientWidth/clientHeight)\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n this.m_resizeEvent.trigger(Resolution.build(canvas.width, canvas.height));\n }\n\n public debugStatus(_: number): string {\n const show: string = (this.m_canvas.style.display === 'none') ? 'hidden' : 'visible';\n return `Canvas [${this.m_friendlyName}] ${show} ${this.m_canvas.width}x${this.m_canvas.height} client:${this.m_canvas.clientWidth}x${this.m_canvas.clientHeight}`;\n }\n}\n","import { Cancellation, CancellationToken } from './CancellationToken';\nimport { PromiseCompletionSource } from './PromiseCompletionSource';\n\nexport class MouseWheelObserver {\n private readonly m_htmlElement: HTMLElement;\n private readonly m_disposeToken: CancellationToken;\n private m_mouseWheelPromise: PromiseCompletionSource;\n\n private m_listening: boolean = false;\n\n public get MouseWheel(): Promise {\n if (!this.m_listening) {\n this.m_htmlElement.addEventListener('wheel', this.onMouseWheel, false);\n this.m_listening = true;\n }\n return Promise.race([this.m_mouseWheelPromise.Promise, this.m_disposeToken.Cancellation]);\n }\n\n public constructor(htmlCanvasElement: HTMLElement) {\n this.m_htmlElement = htmlCanvasElement;\n\n this.m_disposeToken = new CancellationToken();\n this.m_mouseWheelPromise = new PromiseCompletionSource();\n }\n\n public dispose(): void {\n if (this.m_listening) {\n this.m_htmlElement.removeEventListener('wheel', this.onMouseWheel);\n }\n this.m_disposeToken.cancel('dispose');\n }\n\n private readonly onMouseWheel = (mouseEvent: MouseEvent): void => {\n const toResolve = this.m_mouseWheelPromise;\n this.m_mouseWheelPromise = new PromiseCompletionSource();\n toResolve.resolve((mouseEvent).deltaY);\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n}\n","import { IVideoFrame } from '../../players/VideoFrameSource';\nimport { TopLeftPixelCoords } from '../../utils/TopLeftPixelCoords';\nimport { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { ILogger } from '../../utils/logger';\nimport { Resolution } from '../../utils/Resolution';\nimport { ClipSpaceVec2 } from '../../utils/Vec2';\nimport { CanvasWrapper } from '../CanvasWrapper';\nimport { Utils } from '../../utils/Utils';\nimport { Cancellation } from '../../utils/CancellationToken';\nimport { MouseWheelObserver } from '../../utils/MouseWheelObserver';\nimport { VideoWatermarkingRenderer } from '../../utils/VideoWatermarkingRenderer';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\n\nexport interface IPreviewCanvas {\n readonly Clicked: ILiteEvent;\n readonly Resized: ILiteEvent;\n readonly MouseWheel: Promise;\n\n readonly Canvas: HTMLCanvasElement;\n Show: boolean;\n\n dispose(): void;\n render(imageSource: IVideoFrame): void;\n updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void;\n\n debugStatus(indent: number): string\n}\n\nexport class PreviewCanvas extends CanvasWrapper implements IPreviewCanvas {\n private readonly m_context: CanvasRenderingContext2D;\n private readonly m_divElement: HTMLDivElement;\n private readonly m_mouseWheelObserver: MouseWheelObserver;\n\n private readonly m_onClick = new LiteEvent();\n\n //The warped image scaled resolution to proper aspect ratio\n private m_displayedResolution: Resolution = Resolution.None;\n\n private m_watermarkRenderer: VideoWatermarkingRenderer | null = null;\n\n private m_videoWatermarkConfig = VideoWatermarkConfig.Disabled;\n\n public get Clicked(): ILiteEvent {\n return this.m_onClick.expose();\n }\n\n public get MouseWheel(): Promise {\n return this.m_mouseWheelObserver.MouseWheel;\n }\n\n constructor(logger: ILogger, previewHtmlDiv: HTMLDivElement, previewCanvas: HTMLCanvasElement) {\n super(logger, 'PreviewCanvas', previewCanvas);\n this.m_context = this.getCanvasRenderingContext2D();\n this.m_divElement = previewHtmlDiv;\n\n this.m_divElement.addEventListener('pointerdown', this.onPointerDown, false);\n this.m_divElement.addEventListener('pointerup', this.onPointerUp, false);\n this.m_divElement.addEventListener('pointermove', this.onPointerMove, false);\n this.m_mouseWheelObserver = new MouseWheelObserver(this.m_divElement);\n\n this.Canvas.width = 640;\n this.Canvas.height = 480;\n }\n\n public dispose() {\n super.dispose();\n\n this.m_divElement.removeEventListener('pointerdown', this.onPointerDown);\n this.m_divElement.addEventListener('pointerup', this.onPointerUp, false);\n this.m_divElement.removeEventListener('pointermove', this.onPointerMove);\n this.m_mouseWheelObserver.dispose();\n }\n\n public render(imageSource: IVideoFrame): void {\n //Do not try to render in an empty space\n if (this.isCanvasEmpty()) {\n return;\n }\n\n const displayedResolution = imageSource.Resolution.fitInto(this.Resolution);\n\n if (this.m_videoWatermarkConfig !== VideoWatermarkConfig.Disabled &&\n (!displayedResolution.equals(this.m_displayedResolution) || this.m_watermarkRenderer === null)) {\n this.Logger.debug?.trace(`Updating dewarper videowatermark config: ${this.m_videoWatermarkConfig} in ${displayedResolution.toString()}`);\n this.m_watermarkRenderer = new VideoWatermarkingRenderer(this.m_videoWatermarkConfig,\n displayedResolution.Width,\n displayedResolution.Height);\n }\n\n this.m_displayedResolution = displayedResolution;\n\n this.Logger.intense?.trace(`Preview from ${(imageSource instanceof HTMLVideoElement ? 'Video' : 'Jpeg')} at ${imageSource.Resolution.toString()} rendered in ${this.Canvas.width}x${this.Canvas.height}, scalling to ${this.m_displayedResolution.toString()}`);\n\n this.m_context.drawImage(imageSource.Image, 0, 0, this.m_displayedResolution.Width, this.m_displayedResolution.Height);\n this.m_watermarkRenderer?.drawVideoWatermarkingOverlay(this.m_context, 0, 0);\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n this.Logger.debug?.trace(`Updating dewarper videowatermark config: ${videoWatermarkingConfig.toString()}`);\n this.m_videoWatermarkConfig = videoWatermarkingConfig;\n if (this.m_videoWatermarkConfig === VideoWatermarkConfig.Disabled) {\n this.m_watermarkRenderer = null;\n }\n }\n\n private readonly onPointerDown = (pointerEvent: PointerEvent): void => {\n //Do not try to render in an empty space\n if (this.isCanvasEmpty()) {\n return;\n }\n //We can't compute the clipSpaceCoordinates if no image was ever rendered\n if (this.m_displayedResolution.IsNone) {\n return;\n }\n\n const clickCoords = new TopLeftPixelCoords(pointerEvent.offsetX, pointerEvent.offsetY, this.m_displayedResolution);\n const clipSpaceCoords = clickCoords.toClipSpaceVec2();\n if (clipSpaceCoords.isInClipSpace()) {\n // Capture the mouse to ensure we can move even outside the box\n this.m_divElement.setPointerCapture(pointerEvent.pointerId);\n\n this.Logger.info?.trace(`click at ${clickCoords.toString()} on image ${this.m_displayedResolution.toString()}. Translates to ${clipSpaceCoords.toString()}`);\n this.m_onClick.trigger(clipSpaceCoords);\n pointerEvent.stopPropagation();\n }\n }\n\n private readonly onPointerUp = (pointerEvent: PointerEvent): void => {\n this.Canvas.releasePointerCapture(pointerEvent.pointerId);\n pointerEvent.stopPropagation();\n }\n\n private readonly onPointerMove = (pointerEvent: PointerEvent): void => {\n if (this.isCanvasEmpty()) {\n return;\n }\n //We can't compute the clipSpaceCoordinates if no image was ever rendered\n if (this.m_displayedResolution.IsNone) {\n return;\n }\n\n //Is main mouse button down\n if ((pointerEvent.buttons & 1) !== 1) {\n return;\n }\n\n const clickCoords = new TopLeftPixelCoords(pointerEvent.offsetX, pointerEvent.offsetY, this.m_displayedResolution);\n const clipSpaceCoords = clickCoords.toClipSpaceVec2();\n this.Logger.intense?.trace(`dragging at ${clickCoords.toString()} on image ${this.m_displayedResolution.toString()}. Translates to ${clipSpaceCoords.toString()}`);\n this.m_onClick.trigger(clipSpaceCoords);\n pointerEvent.stopPropagation();\n }\n\n private getCanvasRenderingContext2D(): CanvasRenderingContext2D {\n const context = this.Canvas.getContext('2d'/*, { alpha: false }*/); //Might help performance but leaves a black area when we don't use the whole canvas\n if (context === null) {\n throw new Error('Failed to obtain dewarping preview 2d context');\n }\n return context;\n }\n\n private isCanvasEmpty(): boolean {\n return this.Canvas.clientWidth === 0 || this.Canvas.clientHeight === 0;\n }\n\n public debugStatus(indent: number): string {\n return super.debugStatus(indent) + Utils.indentNewLine(indent) +\n 'Preview displayed resolution: ' + this.m_displayedResolution.toString();\n }\n}\n","import { NormalizedColor } from '../utils/Color';\nimport { ILiteEvent } from '../utils/liteEvents';\nimport { ILogger } from '../utils/logger';\nimport { Resolution } from '../utils/Resolution';\nimport { CanvasWrapper } from './CanvasWrapper';\nimport { GLUtils } from './WebGL2/GLUtils';\nimport { Cancellation } from '../utils/CancellationToken';\n\nexport interface IDewarperCanvas {\n readonly Resolution: Resolution;\n readonly Color: NormalizedColor;\n\n readonly Resized: ILiteEvent;\n readonly StyleChange: Promise;\n\n Show: boolean;\n\n dispose(): void;\n getWebGL2Context(): WebGL2RenderingContext;\n\n debugStatus(indent: number): string;\n}\n\nexport class DewarperCanvas extends CanvasWrapper implements IDewarperCanvas {\n private readonly m_gl: WebGL2RenderingContext;\n\n constructor(logger: ILogger, htmlCanvasElement: HTMLCanvasElement) {\n super(logger, 'DewarperCanvas', htmlCanvasElement);\n this.m_gl = GLUtils.getWebGL2Context(htmlCanvasElement);\n }\n\n public getWebGL2Context(): WebGL2RenderingContext {\n return this.m_gl;\n }\n}\n\n","import { Color, NormalizedColor } from '../../utils/Color';\nimport { ILogger } from '../../utils/logger';\nimport { CanvasWrapper } from '../CanvasWrapper';\nimport { IDewarperCanvas } from '../DewarperCanvas';\nimport { GLUtils } from '../WebGL2/GLUtils';\n\nexport interface IDewarpedAreaCanvas extends IDewarperCanvas {\n readonly DewarpedAreaColor: NormalizedColor;\n readonly DewarpedAreaBorderColor: NormalizedColor;\n}\n\nexport class DewarpedAreaCanvas extends CanvasWrapper implements IDewarpedAreaCanvas {\n private static readonly DefaultDewarpedAreaColor: NormalizedColor = new NormalizedColor((90.0/255.0), 0, 0, 0.35);\n private static readonly DefaultDewarpedAreaBorderColor: NormalizedColor = new NormalizedColor(1, 0, 0, 1);\n\n private readonly m_gl: WebGL2RenderingContext;\n\n constructor(logger: ILogger, htmlCanvasElement: HTMLCanvasElement) {\n super(logger, 'DewarperAreaCanvas', htmlCanvasElement);\n this.m_gl = GLUtils.getWebGL2Context(this.Canvas);\n }\n\n public getWebGL2Context(): WebGL2RenderingContext {\n return this.m_gl;\n }\n\n public get DewarpedAreaColor(): NormalizedColor {\n try {\n return this.Color;\n } catch (e) {\n this.Logger.warn?.trace('Failed to obtain canvas color. Fallbacking to default color. ' + e);\n return DewarpedAreaCanvas.DefaultDewarpedAreaColor;\n }\n }\n\n public get DewarpedAreaBorderColor(): NormalizedColor {\n try {\n const color = this.Canvas.style.borderColor;\n const colorObj = Color.fromCSSColor(color);\n this.Logger.debug?.trace(`Border color ${color} converted to ${colorObj.toString()}`);\n return NormalizedColor.fromColor(colorObj);\n } catch (e) {\n this.Logger.warn?.trace('Failed to obtain canvas border color. Fallbacking to default color. ' + e);\n return DewarpedAreaCanvas.DefaultDewarpedAreaBorderColor;\n }\n }\n}\n","import { FitResolution } from '../utils/FitResolution';\nimport { ILogger } from '../utils/logger';\nimport { Resolution } from '../utils/Resolution';\nimport { Utils } from '../utils/Utils';\nimport { Vec2 } from '../utils/Vec2';\nimport { ICameraPosition } from './CameraPosition';\nimport { InternalDewarperSourceImageParameters } from './DewarperSourceImageParameters';\nimport { IProjection } from './Projection';\n\nexport class DewarpingParameters {\n private readonly m_dewarperSourceImageParameters: InternalDewarperSourceImageParameters;\n private readonly m_streamResolution: Resolution;\n private readonly m_dewarpedResolution: Resolution;\n private readonly m_fitResolution: FitResolution;\n\n public get CircleCenterInPixels(): Vec2 {\n return this.m_dewarperSourceImageParameters.CircleCenter.toPixel(this.m_streamResolution);\n }\n\n public get RadiusInPixels(): number {\n return this.m_dewarperSourceImageParameters.RadiusRatio * this.m_streamResolution.Height;\n }\n\n public get FovInRadians(): number {\n return this.m_dewarperSourceImageParameters.FovInRadians;\n }\n\n public get Projection(): IProjection {\n return this.m_dewarperSourceImageParameters.Projection;\n }\n\n public get CameraPosition(): ICameraPosition {\n return this.m_dewarperSourceImageParameters.CameraPosition;\n }\n\n public get StreamResolution(): Resolution {\n return this.m_streamResolution;\n }\n\n public get DewarpedResolution(): Resolution {\n return this.m_dewarpedResolution;\n }\n\n public get FitResolution(): FitResolution {\n return this.m_fitResolution;\n }\n\n public get CircleResolution(): Resolution {\n const diameter = this.RadiusInPixels * 2.0;\n return Resolution.build(diameter, diameter);\n }\n\n //In pixels\n public get Cropping(): Vec2 {\n return this.CircleCenterInPixels.minusC(this.RadiusInPixels);\n }\n\n constructor(dewarperSourceImageParameters: InternalDewarperSourceImageParameters, streamResolution: Resolution, dewarpedResolution: Resolution) {\n if (streamResolution === Resolution.None) {\n throw new Error('DewarpingParameters requires a valid stream resolution');\n }\n\n if (dewarpedResolution === Resolution.None) {\n throw new Error('DewarpingParameters requires a valid dewarped resolution');\n }\n\n this.m_dewarperSourceImageParameters = dewarperSourceImageParameters;\n this.m_streamResolution = streamResolution;\n this.m_dewarpedResolution = dewarpedResolution;\n\n this.m_fitResolution = new FitResolution(this.CircleResolution, this.m_dewarpedResolution);\n }\n\n public debugStatus(indent: number): string {\n return 'DewarpingParameters: ' + Utils.indentNewLine(indent) +\n this.m_dewarperSourceImageParameters.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n `Stream resolution: ${this.m_streamResolution?.toString()}` + Utils.indentNewLine(indent) +\n `Dewarped resolution: ${this.m_dewarpedResolution.toString()}` + Utils.indentNewLine(indent) +\n `Fit resolution: ${this.m_fitResolution.toString()}`;\n }\n}\n\nexport class DewarpingParametersBuilder {\n private readonly m_logger: ILogger;\n private readonly m_dewarperSourceImageParameters: InternalDewarperSourceImageParameters;\n private m_streamResolution: Resolution = Resolution.None;\n private m_dewarpedResolution: Resolution;\n\n private m_dewarpingParameters: DewarpingParameters | null = null;\n\n public get StreamResolution(): Resolution {\n return this.m_streamResolution;\n }\n\n public get DewarpingParameters(): DewarpingParameters | null {\n return this.m_dewarpingParameters;\n }\n\n constructor(logger: ILogger, dewarperSourceImageParameters: InternalDewarperSourceImageParameters, dewarpedResolution: Resolution) {\n this.m_logger = logger.subLogger('DewarpingParametersBuilder');\n this.m_dewarperSourceImageParameters = dewarperSourceImageParameters;\n this.m_dewarpedResolution = dewarpedResolution;\n this.m_logger.debug?.trace(`Created: ${this.debugStatus(0)}`);\n }\n\n public withDewarpedResolution(dewarpedResolution: Resolution): DewarpingParameters | null {\n if (!dewarpedResolution.IsNone && !dewarpedResolution.equals(this.m_dewarpedResolution)) {\n this.m_logger.debug?.trace(`Dewarped resolution changed from ${this.m_dewarpedResolution.toString()} to ${dewarpedResolution.toString()}`);\n this.m_dewarpedResolution = dewarpedResolution;\n this.m_dewarpingParameters = this.build();\n }\n\n return this.m_dewarpingParameters;\n }\n\n public withStreamResolution(streamResolution: Resolution): DewarpingParameters | null {\n if (!streamResolution.IsNone && !streamResolution.equals(this.m_streamResolution)) {\n this.m_logger.debug?.trace(`Stream resolution changed from ${this.m_streamResolution.toString()} to ${streamResolution.toString()}`);\n this.m_streamResolution = streamResolution;\n this.m_dewarpingParameters = this.build();\n }\n\n return this.m_dewarpingParameters;\n }\n\n public build(): DewarpingParameters | null {\n if (this.m_streamResolution.IsNone) {\n this.m_logger.debug?.trace('build did not work. Still missing stream resolution');\n return null;\n }\n\n return new DewarpingParameters(this.m_dewarperSourceImageParameters, this.m_streamResolution, this.m_dewarpedResolution);\n }\n\n public debugStatus(indent: number): string {\n return 'DewarpingParametersBuilder: ' + Utils.indentNewLine(indent) +\n this.m_dewarperSourceImageParameters.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n `Stream resolution: ${this.m_streamResolution?.toString()}` + Utils.indentNewLine(indent) +\n `Dewarped resolution: ${this.m_dewarpedResolution.toString()}` + Utils.indentNewLine(indent) +\n (this.m_dewarpingParameters === null ? (' '.repeat(Utils.Indentation) + 'Dewarping Parameters: null') : this.m_dewarpingParameters.debugStatus(indent + Utils.Indentation));\n }\n}\n\n","import { ILogger } from '../utils/logger';\nimport { DewarperProgram } from './DewarperProgram';\nimport { DewarperSourceImageParameters, InternalDewarperSourceImageParameters } from './DewarperSourceImageParameters';\nimport { FrameRateComputer, FrameRate } from '../utils/FrameRateComputer';\nimport { ControllerAggregate, DewarperControl, IDewarperControl, IInternalDewarperControl } from './DewarperInterfaces';\nimport { DewarpedArea } from './DewarpedArea/DewarpedArea';\nimport { IVideoFrame, IVideoFrameSource, ThrottledVideoSource } from '../players/VideoFrameSource';\nimport { DewarperPreview } from './Preview/DewarperPreview';\nimport { IPreviewCanvas, PreviewCanvas } from './Preview/PreviewCanvas';\nimport { DewarperCanvas, IDewarperCanvas } from './DewarperCanvas';\nimport { Resolution } from '../utils/Resolution';\nimport { Utils } from '../utils/Utils';\nimport { NormalizedColor } from '../utils/Color';\nimport { DewarpedAreaCanvas, IDewarpedAreaCanvas } from './DewarpedArea/DewarpedAreaCanvas';\nimport { Cancellation } from '../utils/CancellationToken';\nimport { DragInfo, DragObserver } from '../utils/DragObserver';\nimport { DewarpingParametersBuilder } from './DewarpingParameters';\nimport { MouseWheelObserver } from '../utils/MouseWheelObserver';\nimport { VideoWatermarkConfig } from '../utils/VideoWatermarkingConfig';\nimport { IDewarperVwoOverlay } from './DewarperVwoOverlay';\n\n/**\n * @beta\n * */\nexport class Dewarper {\n /*\n * todo:\n * draging accross center, fix the rotation and when mouse is released, then, do the rotation\n * dewarp where the mouse is instead of staying centered\n * unit tests\n * ctrl+alt+a -> frame rate, dewarper settings, coordinates\n * boolean on interface to disable user interaction\n * lower gpu usage mode? mode for pixel extrapolation gl_linear or something like that on texture I think?\n * search for other place we could save gpu? disable dewarped area shader? automatically lower input frame rate?\n * snapshot\n * use DewarpingRoi\n * expose max frame rate in interface?\n *\n * Test:\n * cpu usage (idle/moving) and memory consumption\n * Change of stream resolution\n * Change of tile resolution\n * Change of preview resolution\n * pan tilt operations\n * should block when limit is reached (tilt)\n * Canvas interaction\n * mouse wheel to zoom on both tile and preview (beyond 20x lower than 1x)\n * dragging on both tile and preview (validate precision and crossing center especially on tile)\n * single click on preview (validate precision)\n * Operations while stream is paused\n * Dewarping with preview on/off\n * Try to go beyond the circle with different zoom, camera position, projection, dewarping resolution (aspect ratio taller than wide), stream that has circle cropping to do\n * Beyond circle attempt should not add up.\n * Try to enable on a non fisheye camera\n * ctrl+shift+a -> show some details about dewarper (dewarping frame rate?)\n * debugStatus should show a lot of detail for dewarper\n *\n*/\n\n private static readonly DefaultOutsideColor: NormalizedColor = new NormalizedColor(0, 1, 0, 1);\n\n private readonly m_dewarperControl: IDewarperControl;\n\n private readonly m_logger: ILogger;\n private readonly m_canvas: IDewarperCanvas;\n private readonly m_dewarperVwoOverlay: IDewarperVwoOverlay;\n private readonly m_program: DewarperProgram;\n private readonly m_preview: DewarperPreview;\n private readonly m_controllers: IInternalDewarperControl;\n private readonly m_videoFrameSource: ThrottledVideoSource;\n private readonly m_dewarpingParametersBuilder: DewarpingParametersBuilder;\n\n private m_lastImageSource: IVideoFrame | null = null;\n\n private readonly m_frameRateComputer: FrameRateComputer = new FrameRateComputer();\n\n public get dewarperControl(): IDewarperControl {\n return this.m_dewarperControl;\n }\n\n public getFrameRate(): FrameRate {\n return this.m_frameRateComputer.getFrameRate();\n }\n\n public get isDewarping(): boolean {\n return this.m_videoFrameSource.IsStarted;\n }\n\n public static build(logger: ILogger, dewarperHtmlCanvas: HTMLCanvasElement, dewarperVwoOverlay: IDewarperVwoOverlay, previewHtmlDiv: HTMLDivElement,\n previewHtmlCanvas: HTMLCanvasElement, dewarpedAreaHtmlCanvas: HTMLCanvasElement,\n dewarperParameters: DewarperSourceImageParameters,\n videoFrameSource: IVideoFrameSource, mouseWheelObserver: MouseWheelObserver, dragObserver: DragObserver): Dewarper {\n const dewarperSourceImageParameters: InternalDewarperSourceImageParameters = InternalDewarperSourceImageParameters.build(dewarperParameters);\n const dewarperCanvas: IDewarperCanvas = new DewarperCanvas(logger, dewarperHtmlCanvas);\n const previewCanvas: IPreviewCanvas = new PreviewCanvas(logger, previewHtmlDiv, previewHtmlCanvas);\n const dewarpedAreaCanvas: IDewarpedAreaCanvas = new DewarpedAreaCanvas(logger, dewarpedAreaHtmlCanvas);\n const dewarpedArea: DewarpedArea | null = DewarpedArea.build(logger, dewarpedAreaCanvas, dewarperSourceImageParameters);\n\n return new Dewarper(logger, dewarperCanvas, dewarperVwoOverlay, previewCanvas, dewarpedArea, dewarperSourceImageParameters, videoFrameSource, mouseWheelObserver, dragObserver);\n }\n\n constructor(logger: ILogger, dewarperCanvas: IDewarperCanvas, dewarperVwoOverlay: IDewarperVwoOverlay, previewCanvas: IPreviewCanvas, dewarpedArea: DewarpedArea | null, dewarperParameters: InternalDewarperSourceImageParameters, videoFrameSource: IVideoFrameSource, mouseWheelObserver: MouseWheelObserver, dragObserver: DragObserver) {\n this.m_logger = logger.subLogger('Dewarper');\n this.m_canvas = dewarperCanvas;\n this.m_dewarperVwoOverlay = dewarperVwoOverlay;\n this.m_canvas.Resized.register(this.onCanvasResized);\n this.m_videoFrameSource = new ThrottledVideoSource(logger, videoFrameSource, 10);\n\n const gl = this.m_canvas.getWebGL2Context();\n this.logVersion(gl);\n\n this.m_program = new DewarperProgram(logger, gl, dewarperParameters);\n this.m_program.OutsideColor = this.getOutsideColor();\n this.m_controllers = new ControllerAggregate(this.m_program.Controller, dewarpedArea?.Controller ?? null);\n this.m_preview = new DewarperPreview(logger, previewCanvas, this.m_controllers, dewarpedArea);\n\n this.m_dewarperControl = new DewarperControl(this, this.m_preview, this.m_controllers);\n\n this.m_controllers.sceneUpdated.register(this.onSceneChanged);\n this.observeCanvasStyleLoop();\n this.observeMouseWheelLoop(mouseWheelObserver);\n this.observeDragLoop(dragObserver);\n\n this.videoFrameSourceListenLoop();\n\n this.m_dewarpingParametersBuilder = new DewarpingParametersBuilder(this.m_logger, dewarperParameters, Resolution.build(gl.canvas.width, gl.canvas.height));\n this.m_logger.debug?.trace('Dewarper constructor done');\n }\n\n public dispose(): void {\n this.m_videoFrameSource.dispose();\n this.stopDewarping();\n\n this.m_canvas.Resized.unregister(this.onCanvasResized);\n this.m_canvas.dispose();\n\n this.m_controllers.sceneUpdated.unregister(this.onSceneChanged);\n\n this.m_program.dispose();\n this.m_preview.dispose();\n\n this.m_logger.debug?.trace('Dewarper disposed');\n }\n\n public stopDewarping(): void {\n this.m_logger.debug?.trace('stopDewarping()');\n this.m_videoFrameSource.stop();\n this.m_lastImageSource = null;\n this.m_preview.IsDewarping = false;\n this.m_dewarperVwoOverlay.Show = false;\n this.m_canvas.Show = false;\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n this.m_dewarperVwoOverlay.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n this.m_preview.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n private dewarpImageSource(imageSource: IVideoFrame): void {\n if (imageSource.Resolution.IsNone) {\n this.m_logger.intense?.trace(`Not dewarping. Image source resolution is ${imageSource.Resolution.toString()}.`);\n return;\n }\n\n const imageElementCheck = imageSource.Image;\n if (imageElementCheck instanceof HTMLImageElement && !imageElementCheck.complete) {\n return;\n }\n\n this.m_lastImageSource = imageSource;\n\n const canvasResolution = this.m_canvas.Resolution;\n if (canvasResolution.IsNone) {\n this.m_logger.intense?.trace(`Not dewarping. Canvas resolution is ${this.m_canvas.Resolution.toString()}.`);\n return;\n }\n\n this.m_logger.intense?.trace(`Dewarping a frame: ${imageSource.toString()}`);\n\n if (!this.m_dewarpingParametersBuilder.StreamResolution.equals(imageSource.Resolution)) {\n const dewarpingParameters = this.m_dewarpingParametersBuilder.withStreamResolution(imageSource.Resolution);\n if (dewarpingParameters === null) {\n this.m_logger.error?.trace(`Update to dewarping parameters stream resolution to ${imageSource.Resolution.toString()} gave null dewarping parameters.`);\n return;\n }\n\n this.m_preview.setDewarpingParameters(dewarpingParameters);\n this.m_program.setDewarpingParameters(dewarpingParameters);\n }\n\n this.m_preview.render(imageSource);\n this.m_program.dewarp(imageSource);\n\n this.m_dewarperVwoOverlay.drawVwo();\n\n this.m_logger.intense?.trace('Dewarping done');\n }\n\n private readonly onCanvasResized = (canvasResolution: Resolution): void => {\n const dewarpingParameters = this.m_dewarpingParametersBuilder.withDewarpedResolution(canvasResolution);\n if (dewarpingParameters !== null) {\n this.m_logger.debug?.trace(`Canvas resized to ${canvasResolution.toString()}. Sending new dewarping parameters`);\n this.m_preview.setDewarpingParameters(dewarpingParameters);\n this.m_program.setDewarpingParameters(dewarpingParameters);\n }\n\n this.refresh(); //So even if we are paused, we still apply changes (either of the environment as canvas resolution or user requests, change of position/zoom etc)\n }\n\n private readonly onSceneChanged = (): void => {\n this.ensureEnabled();\n this.refresh();\n }\n\n private ensureEnabled(): void {\n this.m_videoFrameSource.start();\n this.m_preview.IsDewarping = true;\n this.m_canvas.Show = true;\n this.m_dewarperVwoOverlay.Show = true;\n }\n\n private refresh(): void {\n if (this.m_lastImageSource !== null) {\n this.dewarpImageSource(this.m_lastImageSource);\n }\n }\n\n private logVersion(gl: WebGL2RenderingContext) {\n this.m_logger.debug?.trace(`webgl2 version ${gl.getParameter(gl.VERSION)} shading language version ${gl.getParameter(gl.SHADING_LANGUAGE_VERSION)} ${gl.getParameter(gl.VENDOR)}`);\n // try to get the extensions\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n // if the extension exists, find out the info.\n if (ext !== null) {\n this.m_logger.debug?.trace(`Extension graphic information: ${gl.getParameter(ext.UNMASKED_VENDOR_WEBGL)} ${gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)}`);\n }\n }\n\n private getOutsideColor(): NormalizedColor {\n try {\n return this.m_canvas.Color;\n } catch (e) {\n this.m_logger.warn?.trace('Failed to parse color. Fallbacking to default outside color.', e);\n return Dewarper.DefaultOutsideColor;\n }\n }\n\n private async observeCanvasStyleLoop() {\n let styleChangeAwaitingResult = await this.m_canvas.StyleChange;\n while (!(styleChangeAwaitingResult instanceof Cancellation)) {\n this.m_program.OutsideColor = this.getOutsideColor();\n styleChangeAwaitingResult = await this.m_canvas.StyleChange;\n }\n this.m_logger.debug?.trace('End of canvas style observation loop');\n }\n\n private async observeMouseWheelLoop(mouseWheelObserver: MouseWheelObserver) {\n let mouseWheeled = await mouseWheelObserver.MouseWheel;\n while (!(mouseWheeled instanceof Cancellation)) {\n const decrease: boolean = (mouseWheeled > 0);\n\n if (decrease && this.m_controllers.ZoomFactor.IsMinimum) {\n this.stopDewarping();\n } else {\n const newZoom =\n decrease ?\n this.m_controllers.ZoomFactor.decrease() :\n this.m_controllers.ZoomFactor.increase();\n this.m_controllers.zoom(newZoom);\n }\n\n mouseWheeled = await mouseWheelObserver.MouseWheel;\n }\n this.m_logger.debug?.trace('End of mouse wheel observation loop');\n }\n\n private async observeDragLoop(dragObserver: DragObserver) {\n let dragged = await dragObserver.Drag;\n while (!(dragged instanceof Cancellation)) {\n const dragInfo = dragged;\n this.m_controllers.drag(dragInfo);\n\n dragged = await dragObserver.Drag;\n }\n this.m_logger.debug?.trace('End of drag observation loop');\n }\n\n private async videoFrameSourceListenLoop(): Promise {\n this.m_logger.debug?.trace('Start of videoFrameSourceListenLoop()');\n while (true) {\n const result = await this.m_videoFrameSource.getImage();\n if (result instanceof Cancellation) {\n break;\n }\n\n this.dewarpImageSource(result);\n this.m_frameRateComputer.addFrame('p'); //Saves processing by having just 'p' frames, todo: a simpler version of framerate computer that does not compute keyframe rate\n }\n this.m_logger.debug?.trace('End of videoFrameSourceListenLoop');\n }\n\n public debugStatus(indent: number): string {\n const gl = this.m_canvas.getWebGL2Context();\n let extendedInfo: string = 'Extended information not available';\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n // if the extension exists, find out the info.\n if (ext !== null) {\n extendedInfo = `Extension graphic information: ${gl.getParameter(ext.UNMASKED_VENDOR_WEBGL)} ${gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)}`;\n }\n\n return 'Dewarper' + Utils.indentNewLine(indent) +\n `webgl2 version ${gl.getParameter(gl.VERSION)} shading language version ${gl.getParameter(gl.SHADING_LANGUAGE_VERSION)} ${gl.getParameter(gl.VENDOR)}` + Utils.indentNewLine(indent) +\n extendedInfo + Utils.indentNewLine(indent) +\n 'Is dewarping: ' + this.m_videoFrameSource.IsStarted + ' ' + this.m_frameRateComputer.getFrameRate().frameRateToString() + Utils.indentNewLine(indent) +\n 'Last dewarped image: ' + (this.m_lastImageSource?.toString() ?? 'none') + Utils.indentNewLine(indent) +\n this.m_canvas.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_program.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_preview.debugStatus(indent + Utils.Indentation);\n }\n}\n","export class FeatureFlag {\n // ** template **\n // private static s_superFeatureFlag = false;\n\n // public static get IsSuperFeature() : boolean {\n // return FeatureFlag.s_superFeatureFlag;\n //}\n\n // public static ToggleSuperFeature(): string {\n // FeatureFlag.s_superFeatureFlag = !FeatureFlag.s_superFeatureFlag;\n // return FeatureFlag.s_superFeatureFlag ? 'Using new super feature' : 'Using old crappy feature';\n // }\n\n private static s_dewarperEnabled = true;\n\n public static get IsDewarperEnabled(): boolean {\n return FeatureFlag.s_dewarperEnabled;\n }\n\n public static ToggleDewarper(): string {\n FeatureFlag.s_dewarperEnabled = !FeatureFlag.s_dewarperEnabled;\n return FeatureFlag.s_dewarperEnabled ? 'Using dewarper' : 'Dewarper disabled';\n }\n}\n","import { ZoomConfiguration } from '../players/ZoomConfiguration';\nimport { Guard } from '../utils/Guard';\nimport { ILogger } from '../utils/logger';\nimport { NormalizedTopLeftCoords } from '../utils/TopLeftCoords';\nimport { Utils } from '../utils/Utils';\nimport { Tile } from '../players/Tile';\nimport { Cancellation, CancellationToken } from '../utils/CancellationToken';\nimport { PromiseCompletionSourceVoid } from '../utils/PromiseCompletionSource';\nimport { IDigitalZoomPreview, DigitalZoomPreview } from './preview/DigitalZoomPreview';\nimport { DragObserver } from '../utils/DragObserver';\nimport { VideoWatermarkConfig } from '../utils/VideoWatermarkingConfig';\nimport { ILiteEvent, LiteEvent } from '../utils/liteEvents';\n\n/** This interface regroups the control and preview for the DigitalZoom\n * @public */\nexport interface IDigitalZoomControl {\n /** Get the current zoom factor. The zoom factor is constrained between 1 (no zoom), and 20 */\n readonly Zoom: number;\n /**\n * Get the normalized (between 0 and 1) x-coordinate of the current view's midpoint, with respect to the original image.\n * Can be negative, or larger than 1.0, when centered on the black bars around the image (when the video aspect ratio does not fit the tile)\n */\n readonly X: number;\n /**\n * Get the normalized (between 0 and 1) y-coordinate of the current view's midpoint, with respect to the original image.\n * Can be negative, or larger than 1.0, when centered on the black bars around the image (when the video aspect ratio does not fit the tile)\n */\n readonly Y: number;\n\n /**\n * Get the preview for the Digital Zoom\n */\n readonly Preview: IDigitalZoomPreview;\n\n /** Event raised when the digital zoom position has changed */\n readonly onPositionChanged: ILiteEvent;\n\n /**\n * Go to a specific point on the original image\n * @param x - normalized x-coordinate where the middle of the zoomed image should be, with respect to the original image\n * @param y - normalized y-coordinate where the middle of the zoomed image should be, with respect to the original image\n * @param zoomFactor - Desired zoom factor\n */\n goTo(x: number, y: number, zoomFactor: number): void;\n /**\n * Zoom into the middle of the current view\n * @param zoomFactor - Absolute value representing the desired zoom factor\n */\n zoom(zoomFactor: number): void;\n /**\n * Move around the image at the current zoom level\n * @param x - normalized value [-1, 1] representing how much to move the current view in the horizontal axis, with respect to the current view\n * @param y - normalized value [-1, 1] representing how much to move the current view in the vertical axis, with respect to the current view\n */\n move(x: number, y: number): void;\n /**\n * Zoom on the current view while keeping the provided coordinates in their current location in the view\n * @param x - normalized x-coordinate representing the relative position of the point of interest, with respect to the current view\n * @param x - normalized y-coordinate representing the relative position of the point of interest, with respect to the current view\n * @param zoomFactor - Absolute value representing the desired zoom factor\n */\n zoomWithFocus(x: number, y: number, zoomFactor: number): void;\n /**\n * Reset the zoom and show the full image\n */\n stop(): void;\n /**\n * Take a snapshot of the current view\n */\n snapshot(): ImageData | null;\n}\n\nexport class DigitalZoomControl implements IDigitalZoomControl {\n private readonly m_digitalZoom: DigitalZoom;\n\n private readonly m_digitalZoomPreview: DigitalZoomPreview;\n\n public get Zoom(): number {\n return this.m_digitalZoom.Zoom;\n }\n\n public get X(): number {\n return this.m_digitalZoom.X;\n }\n\n public get Y(): number {\n return this.m_digitalZoom.Y;\n }\n\n public get Preview(): IDigitalZoomPreview {\n return this.m_digitalZoomPreview;\n }\n\n public get onPositionChanged(): ILiteEvent {\n return this.m_digitalZoom.onPositionChanged.expose();\n }\n\n constructor(digitalZoom: DigitalZoom, preview: DigitalZoomPreview) {\n this.m_digitalZoom = digitalZoom;\n this.m_digitalZoomPreview = preview;\n }\n\n public dispose(): void {\n this.m_digitalZoom.dispose();\n this.m_digitalZoomPreview.dispose();\n }\n\n public goTo(x: number, y: number, zoomFactor: number): void {\n this.m_digitalZoom.goTo(x, y, zoomFactor);\n }\n\n public zoom(zoomFactor: number): void {\n this.m_digitalZoom.zoom(zoomFactor);\n }\n\n public move(x: number, y: number): void {\n this.m_digitalZoom.move(x, y);\n }\n\n public zoomWithFocus(x: number, y: number, zoomFactor: number): void {\n this.m_digitalZoom.zoomWithFocus(x, y, zoomFactor);\n }\n\n public stop(): void {\n this.m_digitalZoom.stop();\n }\n\n public snapshot(): ImageData | null {\n return this.m_digitalZoom.snapshot();\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkConfig: VideoWatermarkConfig): void {\n this.m_digitalZoomPreview.updateVideoWatermarkingConfig(videoWatermarkConfig);\n }\n\n public debugStatus(indent: number): string {\n return 'DigitalZoom' + Utils.indentNewLine(indent) +\n this.m_digitalZoom.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n this.m_digitalZoomPreview.debugStatus(indent + Utils.Indentation);\n }\n}\n\nexport interface IDigitalZoom {\n /** Get the current zoom factor. The zoom factor is constrained between 1 (no zoom), and 20 */\n readonly Zoom: number;\n /**\n * Get the normalized (between 0 and 1) x-coordinate of the current view's midpoint, with respect to the original image.\n * Can be negative, or larger than 1.0, when centered on the black bars around the image (when the video aspect ratio does not fit the tile)\n */\n readonly X: number;\n /**\n * Get the normalized (between 0 and 1) y-coordinate of the current view's midpoint, with respect to the original image.\n * Can be negative, or larger than 1.0, when centered on the black bars around the image (when the video aspect ratio does not fit the tile)\n */\n readonly Y: number;\n\n /**\n * Go to a specific point on the original image\n * @param x - normalized x-coordinate where the middle of the zoomed image should be, with respect to the original image\n * @param y - normalized y-coordinate where the middle of the zoomed image should be, with respect to the original image\n * @param zoomFactor - Desired zoom factor\n */\n goTo(x: number, y: number, zoomFactor: number): void;\n /**\n * Zoom into the middle of the current view\n * @param zoomFactor - Absolute value representing the desired zoom factor\n */\n zoom(zoomFactor: number): void;\n /**\n * Move around the image at the current zoom level\n * @param x - normalized value [-1, 1] representing how much to move the current view in the horizontal axis, with respect to the current view\n * @param y - normalized value [-1, 1] representing how much to move the current view in the vertical axis, with respect to the current view\n */\n move(x: number, y: number): void;\n /**\n * Zoom on the current view while keeping the provided coordinates in their current location in the view\n * @param x - normalized x-coordinate representing the relative position of the point of interest, with respect to the current view\n * @param x - normalized y-coordinate representing the relative position of the point of interest, with respect to the current view\n * @param zoomFactor - Absolute value representing the desired zoom factor\n */\n zoomWithFocus(x: number, y: number, zoomFactor: number): void;\n /**\n * Reset the zoom and show the full image\n */\n stop(): void;\n /**\n * Take a snapshot of the current view\n */\n snapshot(): ImageData | null;\n}\n\nexport class DigitalZoom implements IDigitalZoom {\n private readonly m_logger: ILogger;\n private readonly m_tile: Tile;\n private readonly m_dragObserver: DragObserver;\n private readonly m_positionChanged = new LiteEvent();\n private m_coords = new NormalizedTopLeftCoords(0, 0); // Normalized TopLeft coords of the current viewing rectangle, with respect to the canvas\n private m_zoomFactor: number = 1.0; // Zoom factor of the current viewing rectangle\n private m_viewOffset = new NormalizedTopLeftCoords(0, 0); // Normalized TopLeft coords representing where the image starts in the canvas, when the image is surrounded by black bars.\n\n private m_zoomConfigUpdatedPromise: PromiseCompletionSourceVoid;\n private readonly m_disposeToken: CancellationToken;\n\n public get Zoom(): number {\n return this.m_zoomFactor;\n }\n\n public get X(): number {\n return (this.m_coords.X + 1 / this.m_zoomFactor / 2 - this.m_viewOffset.X) / (1 - 2 * this.m_viewOffset.X);\n }\n\n public get Y(): number {\n return (this.m_coords.Y + 1 / this.m_zoomFactor / 2 - this.m_viewOffset.Y) / (1 - 2 * this.m_viewOffset.Y);\n }\n\n public get IsZoomed(): boolean {\n return this.m_zoomFactor > 1.0;\n }\n\n public get ZoomConfigChange(): Promise {\n return Promise.race([this.m_zoomConfigUpdatedPromise.Promise, this.m_disposeToken.Cancellation]);\n }\n\n public get onPositionChanged(): LiteEvent {\n return this.m_positionChanged;\n }\n\n constructor(logger: ILogger, tile: Tile, dragObserver: DragObserver) {\n this.m_logger = logger.subLogger('DigitalZoom');\n this.m_tile = tile;\n\n this.m_zoomConfigUpdatedPromise = new PromiseCompletionSourceVoid();\n this.m_disposeToken = new CancellationToken();\n\n this.m_dragObserver = dragObserver;\n this.observeTileDimensionsChange();\n this.observeDragChange();\n }\n\n public dispose(): void {\n this.stop();\n this.m_dragObserver.dispose();\n this.m_disposeToken.cancel('dispose');\n }\n\n public goTo(x: number, y: number, zoomFactor: number): void {\n Guard.isInRangeInclusive(x, 0, 1);\n Guard.isInRangeInclusive(y, 0, 1);\n Guard.isInRangeInclusive(zoomFactor, 1, 20);\n\n this.m_logger.debug?.trace(`goTo (${x.toFixed(3)}, ${y.toFixed(3)}), ${zoomFactor}x (offset ${this.m_viewOffset.toString()})`);\n\n if (zoomFactor === 1.0) {\n this.stop();\n return;\n }\n\n // Should there be black bars on both sides at the current zoom level, center the image regardless of the input coordinates\n const newX = 1 / zoomFactor >= (1 - 2 * this.m_viewOffset.X) ?\n (1 - 1 / zoomFactor) / 2 :\n Utils.clip((this.m_viewOffset.X + x * (1 - 2 * this.m_viewOffset.X)) - 1 / zoomFactor / 2,\n this.m_viewOffset.X, 1 - 1 / zoomFactor - this.m_viewOffset.X);\n\n const newY = 1 / zoomFactor >= (1 - 2 * this.m_viewOffset.Y) ?\n (1 - 1 / zoomFactor) / 2 :\n Utils.clip((this.m_viewOffset.Y + y * (1 - 2 * this.m_viewOffset.Y)) - 1 / zoomFactor / 2,\n this.m_viewOffset.Y, 1 - 1 / zoomFactor - this.m_viewOffset.Y);\n\n this.m_coords = new NormalizedTopLeftCoords(newX, newY);\n\n this.m_zoomFactor = zoomFactor;\n\n this.updateZoomConfig();\n }\n\n public zoom(zoomFactor: number): void {\n Guard.isInRangeInclusive(zoomFactor, 1, 20);\n\n this.m_logger.debug?.trace(`zoom ${zoomFactor}x`);\n\n this.zoomWithFocus(0.5, 0.5, zoomFactor);\n }\n\n public move(x: number, y: number): void {\n Guard.isInRangeInclusive(x, -1, 1);\n Guard.isInRangeInclusive(y, -1, 1);\n\n this.m_logger.debug?.trace(`move (${x}, ${y})`);\n\n let newX: number;\n\n if (1 / this.m_zoomFactor >= (1 - 2 * this.m_viewOffset.X)) {\n // The entire image is visible, surrounded by black bars on both sides. Center the image.\n newX = (1 - 1 / this.m_zoomFactor) / 2;\n } else if (this.m_coords.X < this.m_viewOffset.X) {\n // We have a black bar on the left side of the image; prevent the movement going left\n newX = x <= 0 ? this.m_coords.X : Utils.clip(this.m_coords.X + (x / this.m_zoomFactor), 0, 1 - 1 / this.m_zoomFactor);\n } else if ((this.m_coords.X + 1 / this.m_zoomFactor) > (1 - this.m_viewOffset.X)) {\n // Black bar to the right of the image; prevent the movement going right.\n newX = x > 0 ? this.m_coords.X : Utils.clip(this.m_coords.X + (x / this.m_zoomFactor), this.m_viewOffset.X, 1 - 1 / this.m_zoomFactor);\n } else {\n // Within the image and won't have to deal with black bars\n newX = Utils.clip(this.m_coords.X + (x / this.m_zoomFactor), this.m_viewOffset.X, 1 - 1 / this.m_zoomFactor - this.m_viewOffset.X);\n }\n\n let newY: number;\n\n if (1 / this.m_zoomFactor >= (1 - 2 * this.m_viewOffset.Y)) {\n newY = (1 - 1 / this.m_zoomFactor) / 2;\n } else if (this.m_coords.Y < this.m_viewOffset.Y) {\n newY = y <= 0 ? this.m_coords.Y : Utils.clip(this.m_coords.Y + (y / this.m_zoomFactor), 0, 1 - 1 / this.m_zoomFactor);\n } else if ((this.m_coords.Y + 1 / this.m_zoomFactor) > (1 - this.m_viewOffset.Y)) {\n newY = y > 0 ? this.m_coords.Y : Utils.clip(this.m_coords.Y + (y / this.m_zoomFactor), this.m_viewOffset.Y, 1 - 1 / this.m_zoomFactor);\n } else {\n newY = Utils.clip(this.m_coords.Y + (y / this.m_zoomFactor), this.m_viewOffset.Y, 1 - 1 / this.m_zoomFactor - this.m_viewOffset.Y);\n }\n\n this.m_coords = new NormalizedTopLeftCoords(newX, newY);\n this.updateZoomConfig();\n }\n\n public zoomWithFocus(x: number, y: number, zoomFactor: number): void {\n Guard.isInRangeInclusive(x, 0, 1);\n Guard.isInRangeInclusive(y, 0, 1);\n Guard.isInRangeInclusive(zoomFactor, 1, 20);\n\n this.m_logger.debug?.trace(`zoomWithFocus (${x}, ${y}), ${zoomFactor}x`);\n\n if (zoomFactor === 1.0) {\n this.stop();\n return;\n }\n if (zoomFactor >= this.m_zoomFactor) {\n if (this.m_coords.X + x / this.m_zoomFactor < this.m_viewOffset.X || this.m_coords.Y + y / this.m_zoomFactor < this.m_viewOffset.Y ||\n this.m_coords.X + x / this.m_zoomFactor > 1 - this.m_viewOffset.X || this.m_coords.Y + y / this.m_zoomFactor > 1 - this.m_viewOffset.Y) {\n // Trying to zoom into the black bars; do not zoom\n return;\n }\n // In the zoomed image, the provided coordinates should be exactly in the same position on the canvas as they were before the zoom.\n this.m_coords = new NormalizedTopLeftCoords(\n Utils.clip(this.m_coords.X + (x / this.m_zoomFactor) - (x / zoomFactor), 0, 1),\n Utils.clip(this.m_coords.Y + (y / this.m_zoomFactor) - (y / zoomFactor), 0, 1));\n } else {\n // When zooming out, the offset ratio needs to be maintained\n this.m_coords = new NormalizedTopLeftCoords(\n (this.m_coords.X / (1 - (1 / this.m_zoomFactor))) * (1 - 1 / zoomFactor),\n (this.m_coords.Y / (1 - (1 / this.m_zoomFactor))) * (1 - 1 / zoomFactor));\n }\n this.m_zoomFactor = zoomFactor;\n this.updateZoomConfig();\n }\n\n public stop(): void {\n this.m_logger.debug?.trace('stop()');\n this.m_coords = new NormalizedTopLeftCoords(0, 0);\n this.m_zoomFactor = 1.0;\n this.updateZoomConfig();\n }\n\n public snapshot(): ImageData | null {\n return this.m_tile.getSnapshot(true);\n }\n\n private updateZoomConfig() {\n this.m_tile.applyDigitalZoomConfig(new ZoomConfiguration(this.m_coords, this.m_zoomFactor));\n\n const toResolve = this.m_zoomConfigUpdatedPromise;\n this.m_zoomConfigUpdatedPromise = new PromiseCompletionSourceVoid();\n toResolve.resolve();\n this.m_positionChanged.trigger();\n }\n\n private async observeTileDimensionsChange() {\n let tileDimensionsChange = await this.m_tile.TileDimensionsChange;\n while (!(tileDimensionsChange instanceof Cancellation)) {\n this.updateTileResolution();\n tileDimensionsChange = await this.m_tile.TileDimensionsChange;\n }\n this.m_logger.debug?.trace('End of tile dimension observation loop');\n }\n\n private async observeDragChange() {\n let dragChange = await this.m_dragObserver.Drag;\n while (!(dragChange instanceof Cancellation)) {\n const drag = dragChange.StartNormalized.minus(dragChange.StopNormalized);\n this.move(drag.X, drag.Y);\n dragChange = await this.m_dragObserver.Drag;\n }\n this.m_logger.debug?.trace('End of drag observation loop');\n }\n\n private readonly updateTileResolution = () => {\n const fitResolution = this.m_tile.fitResolution;\n\n if (fitResolution === null) {\n return; // Happens if no video is currently playing\n }\n\n const x = fitResolution.Destination.Width === 0 ? 0 : fitResolution.OffsetH / fitResolution.Destination.Width;\n const y = fitResolution.Destination.Height === 0 ? 0 : fitResolution.OffsetV / fitResolution.Destination.Height;\n this.m_viewOffset = new NormalizedTopLeftCoords(x, y);\n }\n\n public debugStatus(indent: number): string {\n return 'CurrentPosX: ' + this.X + Utils.indentNewLine(indent) +\n 'CurrentPosY: ' + this.Y + Utils.indentNewLine(indent) +\n 'CurrentZoom: ' + this.Zoom + Utils.indentNewLine(indent);\n }\n}\n","import { IMseRenderer } from './mse/MseRenderer';\nimport { IJpegRenderer } from './jpeg/JpegRenderer';\nimport { ILogger } from '../utils/logger';\nimport { Codec } from '../eventManager';\nimport { Resolution } from '../utils/Resolution';\nimport { ITileSizeObserver } from './TileSizeProvider';\nimport { ZoomConfiguration } from './ZoomConfiguration';\nimport { IRenderer } from './IRenderer';\nimport { PromiseCompletionSourceVoid } from '../utils/PromiseCompletionSource';\nimport { CancellationToken, Cancellation } from '../utils/CancellationToken';\nimport { FitResolution } from '../utils/FitResolution';\nimport { VideoWatermarkConfig } from '../utils/VideoWatermarkingConfig';\n\nexport class Tile {\n private readonly m_logger: ILogger;\n\n private readonly m_mseRenderer: IMseRenderer | null;\n\n private readonly m_jpegRenderer: IJpegRenderer;\n\n private readonly m_tileSizeObserver: ITileSizeObserver;\n\n private m_streamResolution = Resolution.None;\n\n private m_codec = Codec.None;\n\n private m_tileDimensionsChangePromise: PromiseCompletionSourceVoid;\n private readonly m_disposeToken: CancellationToken;\n\n private get activeRenderer(): IRenderer {\n return this.m_codec === Codec.H264 && this.m_mseRenderer !== null ? this.m_mseRenderer : this.m_jpegRenderer;\n }\n\n public get TileDimensionsChange(): Promise {\n return Promise.race([this.m_tileDimensionsChangePromise.Promise, this.m_disposeToken.Cancellation]);\n }\n\n public get fitResolution(): FitResolution | null {\n if (this.activeRenderer.streamResolution.equals(Resolution.None)) {\n return null;\n }\n return new FitResolution(this.activeRenderer.streamResolution, this.activeRenderer.tileResolution);\n }\n\n constructor(logger: ILogger, mseRenderer: IMseRenderer | null, jpegRenderer: IJpegRenderer, tileSizeObserver: ITileSizeObserver) {\n this.m_logger = logger.subLogger('Tile');\n this.m_mseRenderer = mseRenderer;\n this.m_jpegRenderer = jpegRenderer;\n this.m_tileSizeObserver = tileSizeObserver;\n this.m_tileSizeObserver.tileResizeEvent.register(this.onTileResized);\n\n this.m_tileDimensionsChangePromise = new PromiseCompletionSourceVoid();\n this.m_disposeToken = new CancellationToken();\n }\n\n public dispose() {\n this.m_tileSizeObserver.tileResizeEvent.unregister(this.onTileResized);\n this.m_disposeToken.cancel('dispose');\n }\n\n public setCodec(codec: Codec) {\n if (codec !== this.m_codec) {\n this.m_logger.debug?.trace('Switching codec to', codec);\n this.m_codec = codec;\n this.m_mseRenderer?.setPlayerActive(codec === Codec.H264);\n this.m_jpegRenderer.setPlayerActive(codec === Codec.Mjpeg);\n }\n this.refreshTileSize();\n }\n\n public getSnapshot(fromZoomedImage: boolean): ImageData | null {\n return this.activeRenderer.getSnapshot(fromZoomedImage);\n }\n\n public applyDigitalZoomConfig(zoomConfig: ZoomConfiguration) {\n this.m_jpegRenderer.updateZoomConfig(zoomConfig);\n this.m_mseRenderer?.updateZoomConfig(zoomConfig);\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig) {\n this.m_jpegRenderer.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n this.m_mseRenderer?.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n private readonly onTileResized = () => {\n this.m_streamResolution = this.activeRenderer.streamResolution;\n const toResolve = this.m_tileDimensionsChangePromise;\n this.m_tileDimensionsChangePromise = new PromiseCompletionSourceVoid();\n toResolve.resolve();\n }\n\n private refreshTileSize(): void {\n if (this.m_streamResolution === Resolution.None) {\n this.m_logger.info?.trace(`Setting the tile resolution to ${this.activeRenderer.tileResolution.toString()}`);\n this.onTileResized();\n }\n }\n}\n","import { Resolution } from './Resolution';\nimport { TopLeftCoords } from './TopLeftCoords';\n\nexport class Rectangle {\n private readonly m_topLeftCoords: TopLeftCoords;\n\n private readonly m_dimensions: Resolution;\n\n get TopLeftCoords(): TopLeftCoords {\n return this.m_topLeftCoords;\n }\n\n get Dimensions(): Resolution {\n return this.m_dimensions;\n }\n get X(): number {\n return this.m_topLeftCoords.X;\n }\n\n get Y(): number {\n return this.m_topLeftCoords.Y;\n }\n\n get Width(): number {\n return this.m_dimensions.Width;\n }\n\n get Height(): number {\n return this.m_dimensions.Height;\n }\n\n constructor(topLeftCoords: TopLeftCoords, dimensions: Resolution) {\n if (dimensions === Resolution.None) {\n throw new Error('Resolution cannot be 0x0');\n }\n this.m_topLeftCoords = topLeftCoords;\n this.m_dimensions = dimensions;\n }\n\n public clip(other: Rectangle): Rectangle {\n if (this.isNotOverlapping(other)) {\n throw new Error('Rectangle does not overlap destination rectangle.');\n }\n const right = this.X + this.Width;\n const bottom = this.Y + this.Height;\n const otherRight = other.X + other.Width;\n const otherBottom = other.Y + other.Height;\n\n const intersectLeft = Math.max(this.X, other.X);\n const intersectRight = Math.min(right, otherRight);\n const intersectTop = Math.max(this.Y, other.Y);\n const intersectBottom = Math.min(bottom, otherBottom);\n\n const newX = intersectLeft;\n const newWidth = intersectRight - intersectLeft;\n const newY = intersectTop;\n const newHeight = intersectBottom - intersectTop;\n\n return new Rectangle(new TopLeftCoords(newX, newY), Resolution.build(newWidth, newHeight));\n }\n\n public equals(other: Rectangle) {\n return this.m_dimensions.equals(other.m_dimensions) && this.m_topLeftCoords.equals(other.TopLeftCoords);\n }\n\n private isNotOverlapping(other: Rectangle): boolean {\n return (this.X >= other.X + other.Width ||\n this.Y >= other.Y + other.Height ||\n this.X + this.Width <= other.X ||\n this.Y + this.Height <= other.Y);\n }\n}\n","import { ILogger } from '../../utils/logger';\nimport { IPreviewCanvas } from './PreviewCanvas';\nimport { Coords } from '../../utils/Coords';\nimport { DigitalZoom } from '../DigitalZoomControl';\nimport { IVideoFrameSource, IVideoFrame } from '../../players/VideoFrameSource';\nimport { Cancellation } from '../../utils/CancellationToken';\nimport { Resolution } from '../../utils/Resolution';\nimport { FitResolution } from '../../utils/FitResolution';\nimport { Rectangle } from '../../utils/Rectangle';\nimport { TopLeftCoords } from '../../utils/TopLeftCoords';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { Utils } from '../../utils/Utils';\n\n/**\n * Interface to manipulate the Digital Zoom preview control\n * @public\n * */\nexport interface IDigitalZoomPreview {\n /**\n * Get or set whether the digital zoom preview is displayed when zoomed\n */\n Enabled: boolean;\n\n /**\n * The canvas to draw the preview on\n */\n Canvas: HTMLCanvasElement;\n}\n\nexport class DigitalZoomPreview implements IDigitalZoomPreview {\n private readonly m_logger: ILogger;\n private readonly m_previewCanvas: IPreviewCanvas;\n private readonly m_digitalZoom: DigitalZoom;\n private readonly m_videoFrameSource: IVideoFrameSource;\n\n private m_videoFrameSourceListenLoopStarted = false;\n private m_isEnabled = false;\n private m_lastImageSource: IVideoFrame | null = null;\n\n private get CanvasResolution(): Resolution {\n return this.m_previewCanvas.Resolution;\n }\n\n public get Canvas(): HTMLCanvasElement {\n return this.m_previewCanvas.Canvas;\n }\n\n public get Enabled(): boolean {\n return this.m_isEnabled;\n }\n\n public set Enabled(value: boolean) {\n if (this.m_isEnabled !== value) {\n this.m_isEnabled = value;\n this.videoFrameSourceListenLoop();\n this.render();\n }\n }\n\n public constructor(logger: ILogger, previewCanvas: IPreviewCanvas, digitalZoom: DigitalZoom, videoFrameSource: IVideoFrameSource) {\n this.m_logger = logger.subLogger('DigitalZoomPreview');\n this.m_previewCanvas = previewCanvas;\n this.m_previewCanvas.Clicked.register(this.onClicked);\n this.m_previewCanvas.Resized.register(this.onResized);\n this.m_digitalZoom = digitalZoom;\n this.m_videoFrameSource = videoFrameSource;\n\n this.zoomConfigUpdateListenLoop();\n }\n\n public dispose(): void {\n this.m_logger.debug?.trace('dispose');\n this.m_previewCanvas.Clicked.unregister(this.onClicked);\n this.m_previewCanvas.Resized.unregister(this.onResized);\n this.m_previewCanvas.Show = false;\n this.m_previewCanvas.dispose();\n this.m_videoFrameSource.dispose();\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n this.m_previewCanvas.updateVideoWatermarkingConfig(videoWatermarkingConfig);\n }\n\n private async videoFrameSourceListenLoop(): Promise {\n if (this.m_videoFrameSourceListenLoopStarted) {\n return;\n }\n this.m_logger.debug?.trace('Start of videoFrameSourceListenLoop()');\n this.m_videoFrameSourceListenLoopStarted = true;\n while (this.m_isEnabled && this.m_digitalZoom.IsZoomed) {\n const result = await this.m_videoFrameSource.getImage();\n if (result instanceof Cancellation) {\n break;\n }\n\n this.m_lastImageSource = result;\n this.render();\n }\n this.m_videoFrameSourceListenLoopStarted = false;\n this.m_logger.debug?.trace('End of videoFrameSourceListenLoop()');\n }\n\n private async zoomConfigUpdateListenLoop(): Promise {\n this.m_logger.debug?.trace('Start of zoomConfigUpdateListenLoop()');\n while (true) {\n const result = await this.m_digitalZoom.ZoomConfigChange;\n if (result instanceof Cancellation) {\n break;\n }\n\n this.videoFrameSourceListenLoop();\n this.render();\n }\n this.m_logger.debug?.trace('End of zoomConfigUpdateListenLoop()');\n }\n\n private render(): void {\n if (this.m_lastImageSource === null) {\n return;\n }\n\n if (this.m_digitalZoom.IsZoomed && this.m_isEnabled) {\n this.m_previewCanvas.Show = true;\n this.m_previewCanvas.render(this.m_lastImageSource);\n this.drawRectangle();\n } else {\n this.m_previewCanvas.Show = false;\n }\n }\n\n private drawRectangle(): void {\n if (this.m_lastImageSource === null) {\n return;\n }\n const rectDimensions = Resolution.build(this.CanvasResolution.Width / this.m_digitalZoom.Zoom,\n this.CanvasResolution.Height / this.m_digitalZoom.Zoom);\n\n const fitRes = new FitResolution(this.m_lastImageSource.Resolution, Resolution.build(this.CanvasResolution.Width, this.CanvasResolution.Height));\n\n const rectCoords = new TopLeftCoords(\n fitRes.Scaled.Width * (this.m_digitalZoom.X - 1 / this.m_digitalZoom.Zoom / 2) - fitRes.OffsetH / this.m_digitalZoom.Zoom,\n fitRes.Scaled.Height * (this.m_digitalZoom.Y - 1 / this.m_digitalZoom.Zoom / 2) - fitRes.OffsetV / this.m_digitalZoom.Zoom);\n\n this.m_previewCanvas.drawRectangle(new Rectangle(rectCoords, rectDimensions));\n }\n\n private readonly onClicked = (data: Coords) => {\n if (this.m_lastImageSource === null) {\n return;\n }\n const imageRes = new FitResolution(this.m_lastImageSource.Resolution, Resolution.build(this.CanvasResolution.Width, this.CanvasResolution.Height)).Scaled;\n if (data.X < 0 || data.X > imageRes.Width || data.Y < 0 || data.Y > imageRes.Height) {\n return; // Clicking outside the image\n }\n this.m_digitalZoom.goTo(data.X / imageRes.Width, data.Y / imageRes.Height, this.m_digitalZoom.Zoom);\n this.render();\n }\n\n private readonly onResized = (_: Resolution) => {\n this.render();\n }\n\n public debugStatus(indent: number): string {\n return `Digital Zoom preview: (${this.m_isEnabled ? 'enabled' : 'disabled'})` + Utils.indentNewLine(indent) +\n 'Is zoomed: ' + this.m_digitalZoom.IsZoomed + Utils.indentNewLine(indent) +\n this.m_previewCanvas.debugStatus(indent + Utils.Indentation);\n }\n}\n","import { ILiteEvent, LiteEvent } from '../../utils/liteEvents';\nimport { Resolution } from '../../utils/Resolution';\nimport { IVideoFrame } from '../../players/VideoFrameSource';\nimport { CanvasWrapper } from '../CanvasWrapper';\nimport { ILogger } from '../../utils/logger';\nimport { Utils } from '../../utils/Utils';\nimport { Coords } from '../../utils/Coords';\nimport { TopLeftPixelCoords } from '../../utils/TopLeftPixelCoords';\nimport { VideoWatermarkingRenderer } from '../../utils/VideoWatermarkingRenderer';\nimport { VideoWatermarkConfig } from '../../utils/VideoWatermarkingConfig';\nimport { Rectangle } from '../../utils/Rectangle';\nimport { TopLeftCoords } from '../../utils/TopLeftCoords';\n\nexport interface IPreviewCanvas {\n readonly Clicked: ILiteEvent;\n readonly Resized: ILiteEvent;\n readonly Resolution: Resolution;\n\n Canvas: HTMLCanvasElement;\n\n Show: boolean;\n\n dispose(): void;\n render(imageSource: IVideoFrame): void;\n drawRectangle(rectangle: Rectangle): void;\n clear(): void;\n\n updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void;\n\n debugStatus(indent: number): string;\n}\n\nexport class PreviewCanvas extends CanvasWrapper implements IPreviewCanvas {\n private static readonly m_rectangleColor = 'Red';\n\n private readonly m_context: CanvasRenderingContext2D;\n\n private readonly m_onClick = new LiteEvent();\n\n private m_watermarkRenderer: VideoWatermarkingRenderer | null;\n\n private m_videoWatermarkConfig = VideoWatermarkConfig.Disabled;\n\n private m_displayedResolution: Resolution = Resolution.None;\n\n public get Clicked(): ILiteEvent {\n return this.m_onClick.expose();\n }\n\n constructor(logger: ILogger, previewCanvas: HTMLCanvasElement) {\n super(logger, 'PreviewCanvas', previewCanvas);\n this.m_context = this.getCanvasRenderingContext2D();\n\n this.Canvas.addEventListener('click', this.onClick, false);\n this.Canvas.addEventListener('pointermove', this.onPointerMove, false);\n this.Canvas.addEventListener('pointerdown', this.onPointerDown, false);\n this.Canvas.addEventListener('pointerup', this.onPointerUp, false);\n this.Canvas.width = 640;\n this.Canvas.height = 480;\n\n this.m_watermarkRenderer = null;\n }\n\n public dispose() {\n super.dispose();\n this.Canvas.removeEventListener('click', this.onClick);\n this.Canvas.removeEventListener('pointermove', this.onPointerMove);\n this.Canvas.removeEventListener('pointerdown', this.onPointerDown, false);\n this.Canvas.removeEventListener('pointerup', this.onPointerUp, false);\n }\n\n public render(imageSource: IVideoFrame): void {\n //Do not try to render in an empty space\n if (this.isCanvasEmpty()) {\n return;\n }\n\n const displayedResolution = imageSource.Resolution.fitInto(this.Resolution);\n\n if (this.m_videoWatermarkConfig !== VideoWatermarkConfig.Disabled &&\n (!displayedResolution.equals(this.m_displayedResolution) || this.m_watermarkRenderer === null)) {\n this.m_watermarkRenderer = new VideoWatermarkingRenderer(this.m_videoWatermarkConfig,\n displayedResolution.Width,\n displayedResolution.Height);\n }\n this.m_displayedResolution = displayedResolution;\n this.m_context.drawImage(imageSource.Image, 0, 0, this.m_displayedResolution.Width, this.m_displayedResolution.Height);\n\n this.m_watermarkRenderer?.drawVideoWatermarkingOverlay(this.m_context, 0, 0);\n }\n\n public drawRectangle(rectangle: Rectangle): void {\n // Sets the color of the rectangle outer edge to red\n this.m_context.strokeStyle = PreviewCanvas.m_rectangleColor;\n\n const fillRect = rectangle.clip(new Rectangle(new TopLeftCoords(0, 0), this.m_displayedResolution));\n\n // 1 pixel is removed from the width and height of the rectangle because the coordinates represent the middle of the line (which is 1px wide).\n // Without this removal, half the stroke exceeds the image we're drawing on, and leaves a red artifact on the image.\n this.m_context.strokeRect(fillRect.X, fillRect.Y, fillRect.Width - 1, fillRect.Height - 1);\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n this.m_videoWatermarkConfig = videoWatermarkingConfig;\n if (this.m_videoWatermarkConfig === VideoWatermarkConfig.Disabled) {\n this.m_watermarkRenderer = null;\n }\n }\n\n public clear(): void {\n this.m_context.clearRect(0, 0, this.Canvas.width, this.Canvas.height);\n }\n\n private readonly onClick = (mouseEvent: MouseEvent): void => {\n //Do not try to render in an empty space\n if (this.isCanvasEmpty()) {\n this.Logger.warn?.trace('Returning due to empty canvas');\n return;\n }\n\n const coords = new Coords(mouseEvent.offsetX, mouseEvent.offsetY);\n this.m_onClick.trigger(coords);\n }\n\n private readonly onPointerDown = (event: PointerEvent): void => {\n //The displayed image can sometime not fill the canvas. Let the event pass to the ctrl under it.\n if (event.offsetX > this.m_displayedResolution.Width ||\n event.offsetY > this.m_displayedResolution.Height) {\n return;\n }\n\n // Capture the mouse to ensure we can move even outside the box\n this.Canvas.setPointerCapture(event.pointerId);\n\n // Prevent the DragObserver to process the event in double\n event.stopPropagation();\n }\n\n private readonly onPointerUp = (event: PointerEvent): void => {\n this.Canvas.releasePointerCapture(event.pointerId);\n\n // Prevent the DragObserver to process the event in double\n event.stopPropagation();\n }\n\n private readonly onPointerMove = (event: PointerEvent): void => {\n if (this.isCanvasEmpty()) {\n return;\n }\n //We can't compute the clipSpaceCoordinates if no image was ever rendered\n if (this.m_displayedResolution.IsNone) {\n return;\n }\n\n //Is main mouse button down\n if ((event.buttons & 1) !== 1) {\n return;\n }\n\n // Constraint the location inside the box\n const x = Math.min(Math.max(0, event.offsetX), this.m_displayedResolution.Width);\n const y = Math.min(Math.max(0, event.offsetY), this.m_displayedResolution.Height);\n\n const clickCoords = new TopLeftPixelCoords(x, y, this.m_displayedResolution);\n const clipSpaceCoords = clickCoords.toClipSpaceVec2();\n this.Logger.debug?.trace(`dragging at ${clickCoords.toString()} on image ${this.m_displayedResolution.toString()}. Translates to ${clipSpaceCoords.toString()}`);\n this.m_onClick.trigger(new Coords(x, y));\n\n // Prevent the DragObserver to process the event in double\n event.stopPropagation();\n }\n\n private getCanvasRenderingContext2D(): CanvasRenderingContext2D {\n const context = this.Canvas.getContext('2d'/*, { alpha: false }*/); //Might help performance but leaves a black area when we don't use the whole canvas\n if (context === null) {\n throw new Error('Failed to obtain preview 2d context');\n }\n return context;\n }\n\n private isCanvasEmpty(): boolean {\n return this.Canvas.clientWidth === 0 || this.Canvas.clientHeight === 0;\n }\n\n public debugStatus(indent: number): string {\n return super.debugStatus(indent) + Utils.indentNewLine(indent) +\n 'Preview displayed resolution: ' + this.m_displayedResolution.toString();\n }\n}\n","import { LiteEvent, ILiteEvent } from '../utils/liteEvents';\nimport { ILogger } from '../utils/logger';\nimport { SafeResizeObserver } from '../utils/SafeResizeObserver';\nimport { StyleObserver } from '../utils/StyleObserver';\nimport { Resolution } from '../utils/Resolution';\nimport { Cancellation } from '../utils/CancellationToken';\nimport { NormalizedColor, Color } from '../utils/Color';\n\nexport class CanvasWrapper {\n private readonly m_logger: ILogger\n private readonly m_friendlyName: string;\n private readonly m_canvas: HTMLCanvasElement;\n private readonly m_resizeObserver: SafeResizeObserver;\n private readonly m_styleObserver: StyleObserver;\n private readonly m_resizeEvent: LiteEvent;\n\n protected get Logger(): ILogger {\n return this.m_logger;\n }\n\n public get Canvas(): HTMLCanvasElement {\n return this.m_canvas;\n }\n\n public set Show(show: boolean) {\n this.m_canvas.style.display = show ? 'block' : 'none';\n }\n\n public get Resolution(): Resolution {\n return Resolution.build(this.m_canvas.width, this.m_canvas.height);\n }\n\n public get StyleChange(): Promise {\n return this.m_styleObserver.StyleChange;\n }\n\n public get Color(): NormalizedColor {\n const color = this.Canvas.style.color;\n const colorObj = Color.fromCSSColor(color);\n this.Logger.debug?.trace(`Converted ${color} to ${colorObj.toString()}`);\n return NormalizedColor.fromColor(colorObj);\n }\n\n public get Resized(): ILiteEvent {\n return this.m_resizeEvent.expose();\n }\n\n constructor(logger: ILogger, friendlyName: string, htmlCanvasElement: HTMLCanvasElement) {\n this.m_logger = logger.subLogger(friendlyName);\n this.m_friendlyName = friendlyName;\n this.m_canvas = htmlCanvasElement;\n this.m_resizeObserver = new SafeResizeObserver(htmlCanvasElement, this.onResizeCanvas);\n this.m_resizeEvent = new LiteEvent();\n this.m_styleObserver = new StyleObserver(htmlCanvasElement);\n }\n\n public dispose(): void {\n this.m_resizeObserver.dispose();\n this.m_styleObserver.dispose();\n this.m_logger.debug?.trace('dispose');\n }\n\n private readonly onResizeCanvas = (): void => {\n const canvas = this.m_canvas;\n\n if (canvas.clientWidth === 0 || canvas.clientHeight === 0) {\n return;\n }\n\n if (canvas.width === canvas.clientWidth && canvas.height === canvas.clientHeight) {\n this.m_logger.intense?.trace(`Resolution did not changed from ${canvas.width}x${canvas.height} to ${canvas.clientWidth}x${canvas.clientHeight}`);\n return;\n }\n\n // Make the canvas drawing buffer size (canvas.width/height) the same as the displayed resolution (canvas.clientWidth/clientHeight)\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n this.m_resizeEvent.trigger(Resolution.build(canvas.width, canvas.height));\n }\n\n public debugStatus(_: number): string {\n const show: string = (this.m_canvas.style.display === 'none') ? 'hidden' : 'visible';\n return `Canvas ${this.m_friendlyName} ${show} ${this.m_canvas.width}x${this.m_canvas.height} client:${this.m_canvas.clientWidth}x${this.m_canvas.clientHeight}`;\n }\n}\n","import { ZoomConfiguration } from '../players/ZoomConfiguration';\nimport { Resolution } from './Resolution';\nimport { FitResolution } from './FitResolution';\nimport { VideoWatermarkingRenderer } from './VideoWatermarkingRenderer';\nimport { VideoWatermarkConfig } from './VideoWatermarkingConfig';\nimport { ILogger } from './logger';\n\nexport class RenderingCanvas {\n private readonly m_logger: ILogger;\n\n private readonly m_canvas: HTMLCanvasElement;\n\n private m_watermarkRenderer: VideoWatermarkingRenderer | null;\n\n public get canvasElement(): HTMLCanvasElement {\n return this.m_canvas;\n }\n\n constructor(logger: ILogger, canvas: HTMLCanvasElement) {\n this.m_logger = logger.subLogger('RenderingCanvas');\n this.m_canvas = canvas;\n this.m_watermarkRenderer = null;\n }\n\n public draw(image: CanvasImageSource, streamResolution: Resolution, zoomConfiguration: ZoomConfiguration): void {\n const ctx = this.m_canvas.getContext('2d'); // context is used to draw images, shapes and text\n\n if (!ctx) {\n throw new Error('Unable to get the 2D context for the canvas');\n }\n\n // Handle resizing\n if (this.m_canvas.scrollWidth > 0 && this.m_canvas.scrollHeight > 0 && (this.m_canvas.scrollWidth !== this.m_canvas.width || this.m_canvas.scrollHeight !== this.m_canvas.height)) {\n this.m_canvas.width = this.m_canvas.scrollWidth;\n this.m_canvas.height = this.m_canvas.scrollHeight;\n }\n\n ctx.fillStyle = 'black';\n ctx.fillRect(0, 0, this.m_canvas.width, this.m_canvas.height);\n\n const [zoom, drawingCoordinates] = zoomConfiguration.toCanvasParameters(streamResolution, Resolution.build(this.m_canvas.width, this.m_canvas.height));\n ctx.scale(zoom, zoom);\n ctx.drawImage(image, drawingCoordinates.X, drawingCoordinates.Y);\n ctx.scale(1 / zoom, 1 / zoom); // always clean up! Reverse the scale\n\n const fitRes = new FitResolution(streamResolution, Resolution.build(this.m_canvas.width, this.m_canvas.height));\n\n // The portion of the watermark overlay overlapping the black bars on the canvas when zoomed\n const clipX = this.m_canvas.width - fitRes.Scaled.Width * zoomConfiguration.Zoom - drawingCoordinates.X * zoom;\n const clipY = this.m_canvas.height - fitRes.Scaled.Height * zoomConfiguration.Zoom - drawingCoordinates.Y * zoom;\n\n // The overlay size is the size of the scaled image if it fully fits in the canvas,\n // or the canvas size minus the clipped portion. This ensures the black bars on the right/bottom of the image\n // do not have the overlay when zoomed.\n const overlaySizeX = Math.min(fitRes.Scaled.Width * zoomConfiguration.Zoom, this.m_canvas.width - Math.max(0, clipX));\n const overlaySizeY = Math.min(fitRes.Scaled.Height * zoomConfiguration.Zoom, this.m_canvas.height - Math.max(0, clipY));\n\n this.m_watermarkRenderer?.updateVideoWatermarkingOverlaySizeWithSpecificDimensions(fitRes.Scaled.Width, fitRes.Scaled.Height, overlaySizeX, overlaySizeY);\n this.m_watermarkRenderer?.drawVideoWatermarkingOverlay(ctx, Math.max(drawingCoordinates.X * zoom, 0), Math.max(drawingCoordinates.Y * zoom, 0));\n }\n\n public getSnapshot(): ImageData {\n const context = this.m_canvas.getContext('2d');\n\n if (!context) {\n this.m_logger.warn?.trace('getSnapshot(): Failed to obtain the 2d context of the snapshot canvas');\n throw new Error('Failed to obtain the 2d context of the snapshot canvas');\n }\n this.m_logger.info?.trace(`getSnapshot(): returning a ${this.m_canvas.width}x${this.m_canvas.height} image`);\n return context.getImageData(0, 0, this.m_canvas.width, this.m_canvas.height);\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n // Only create the WatermarkRenderer if the config is enabled\n if (videoWatermarkingConfig !== VideoWatermarkConfig.Disabled) {\n this.m_logger.debug?.trace('Updating video watermark configuration');\n this.m_watermarkRenderer = new VideoWatermarkingRenderer(videoWatermarkingConfig, this.m_canvas.scrollWidth, this.m_canvas.scrollHeight);\n } else {\n this.m_logger.debug?.trace('Disabling video watermark');\n this.m_watermarkRenderer = null;\n }\n }\n}\n","import { Cancellation, CancellationToken } from './CancellationToken';\nimport { PromiseCompletionSource } from './PromiseCompletionSource';\nimport { Vec2, NormalizedVec2 } from './Vec2';\nimport { Resolution } from './Resolution';\n\nexport class DragObserver {\n private readonly m_htmlElement: HTMLElement;\n private readonly m_disposeToken: CancellationToken;\n\n private m_dragging: boolean = false;\n private m_firstMovement: boolean = false;\n private m_startDragCoordinates: Vec2 = new Vec2(0, 0);\n private m_pointerDownTimeStamp: number = 0;\n private m_draggingPromise: PromiseCompletionSource;\n\n public get Drag(): Promise {\n return Promise.race([this.m_draggingPromise.Promise, this.m_disposeToken.Cancellation]);\n }\n\n constructor(htmlElement: HTMLElement) {\n this.m_htmlElement = htmlElement;\n\n this.m_htmlElement.addEventListener('pointerdown', this.onPointerDown, false);\n this.m_htmlElement.addEventListener('pointerup', this.onPointerUp, false);\n this.m_htmlElement.addEventListener('pointerover', this.onPointerOver, false);\n this.m_htmlElement.addEventListener('pointermove', this.onPointerMove, false);\n\n this.m_disposeToken = new CancellationToken();\n this.m_draggingPromise = new PromiseCompletionSource();\n }\n\n public dispose(): void {\n this.m_htmlElement.removeEventListener('pointerdown', this.onPointerDown);\n this.m_htmlElement.removeEventListener('pointerup', this.onPointerUp);\n this.m_htmlElement.removeEventListener('pointerover', this.onPointerOver);\n this.m_htmlElement.removeEventListener('pointermove', this.onPointerMove);\n this.m_disposeToken.cancel('dispose');\n }\n\n private readonly onPointerDown = (event: PointerEvent): void => {\n if (this.m_dragging || !this.isMouseMainButtonDown(event)) {\n return;\n }\n this.m_pointerDownTimeStamp = event.timeStamp;\n this.m_startDragCoordinates = new Vec2(event.offsetX, event.offsetY);\n this.m_dragging = true;\n this.m_firstMovement = true;\n\n // Capture the mouse to ensure we can move even outside the player\n this.m_htmlElement.setPointerCapture(event.pointerId);\n event.stopPropagation();\n }\n\n private readonly onPointerMove = (event: PointerEvent): void => {\n if (!this.m_dragging || event.timeStamp - this.m_pointerDownTimeStamp <= 200) {\n return;\n }\n\n const newPosition = new Vec2(event.offsetX, event.offsetY);\n\n const dragEvent = new DragInfo(this.m_firstMovement, this.m_startDragCoordinates, newPosition, Resolution.build(this.m_htmlElement.scrollWidth, this.m_htmlElement.scrollHeight));\n\n this.m_firstMovement = false;\n this.m_startDragCoordinates = newPosition;\n\n const toResolve = this.m_draggingPromise;\n this.m_draggingPromise = new PromiseCompletionSource();\n toResolve.resolve(dragEvent);\n\n event.stopPropagation();\n }\n\n private readonly onPointerUp = (event: PointerEvent): void => {\n this.m_htmlElement.releasePointerCapture(event.pointerId);\n\n if (!this.isMouseMainButtonDown(event)) {\n this.m_dragging = false;\n event.stopPropagation();\n }\n }\n\n private readonly onPointerOver = (event: PointerEvent): void => {\n if (!this.isMouseMainButtonDown(event)) {\n this.m_dragging = false;\n }\n }\n\n private isMouseMainButtonDown(event: PointerEvent): boolean {\n return ((event.buttons & 1) === 1);\n }\n}\n\nexport class DragInfo {\n //Is this the first movement since the drag started. Will help give a better experience while crossing the center\n private readonly m_startOfDrag: boolean;\n private readonly m_start: Vec2;\n private readonly m_stop: Vec2;\n private readonly m_resolution: Resolution;\n\n public get StartOfDrag(): boolean {\n return this.m_startOfDrag;\n }\n\n public get Start(): Vec2 {\n return this.m_start;\n }\n\n public get Stop(): Vec2 {\n return this.m_stop;\n }\n\n public get StartNormalized(): NormalizedVec2 {\n return this.m_start.toNormalized(this.m_resolution);\n }\n\n public get StopNormalized(): NormalizedVec2 {\n return this.m_stop.toNormalized(this.m_resolution);\n }\n\n public constructor(startOfDrag: boolean, start: Vec2, stop: Vec2, resolution: Resolution) {\n this.m_startOfDrag = startOfDrag;\n this.m_start = start;\n this.m_stop = stop;\n this.m_resolution = resolution;\n }\n\n public toString(): string {\n return `${this.m_start.toString()} -> ${this.m_stop.toString()}`;\n }\n}\n","import { ILogger } from '../utils/logger';\nimport { VideoWatermarkConfig } from '../utils/VideoWatermarkingConfig';\nimport { VideoWatermarkingRenderer } from '../utils/VideoWatermarkingRenderer';\n\nexport interface IDewarperVwoOverlay {\n Show: boolean;\n\n updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void;\n drawVwo(): void;\n}\n\nexport class DewarperVwoOverlay implements IDewarperVwoOverlay {\n private readonly m_logger: ILogger;\n private readonly m_canvas: HTMLCanvasElement;\n\n private m_watermarkRenderer: VideoWatermarkingRenderer | null = null;\n private m_watermarkNeedsRefresh: boolean = true;\n\n public set Show(show: boolean) {\n this.m_canvas.style.display = show ? 'block' : 'none';\n }\n\n public constructor(logger: ILogger, canvas: HTMLCanvasElement) {\n this.m_logger = logger.subLogger('DewarperVwoOverlay');\n this.m_canvas = canvas;\n }\n\n public updateVideoWatermarkingConfig(videoWatermarkingConfig: VideoWatermarkConfig): void {\n // Only create the WatermarkRenderer if the config is enabled\n if (videoWatermarkingConfig !== VideoWatermarkConfig.Disabled) {\n this.m_logger.debug?.trace('Updating video watermark configuration');\n this.m_watermarkRenderer = new VideoWatermarkingRenderer(videoWatermarkingConfig, this.m_canvas.scrollWidth, this.m_canvas.scrollHeight);\n this.m_watermarkNeedsRefresh = true;\n } else {\n this.m_logger.debug?.trace('Disabling video watermark');\n this.m_watermarkRenderer = null;\n }\n }\n\n public drawVwo(): void {\n if (this.m_watermarkRenderer === null) {\n return;\n }\n const canvas = this.m_canvas;\n if (canvas.scrollWidth === canvas.width && canvas.scrollHeight === canvas.height && !this.m_watermarkNeedsRefresh) {\n return;\n }\n\n // Make the canvas drawing buffer size (canvas.width/height) the same as the displayed resolution (canvas.clientWidth/clientHeight)\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n if (canvas.width === 0 || canvas.height === 0) {\n this.m_logger.info?.trace('VWO canvas has size zero, won\\'t be drawn');\n return;\n }\n\n //const video = this.m_htmlVideoElement;\n const ctx = canvas.getContext('2d');\n if (ctx !== null) {\n this.m_watermarkRenderer.updateVideoWatermarkingOverlaySize(canvas.width, canvas.height);\n this.m_watermarkRenderer.drawVideoWatermarkingOverlay(ctx, 0, 0);\n this.m_watermarkNeedsRefresh = false;\n } else {\n this.m_logger.error?.trace('Failed to obtain canvas context to draw VWO on dewarping canvas.');\n }\n }\n}\n","import { ILogger, Logger } from '../utils/logger';\nimport { HtmlElements } from './htmlElements';\nimport { DebugOverlay } from './debugOverlay';\nimport { StatisticProvider } from '../utils/StatisticProvider';\nimport { IStatefulSession } from './WebSocket/StatefulSession';\nimport { JpegInfo, SegmentInfo, StreamingStatus, ErrorDetails } from '../services/eventHub';\nimport { Codec, EventManager } from '../eventManager';\nimport { IMseRenderer, MseRenderer } from './mse/MseRenderer';\nimport { JpegRenderer } from './jpeg/JpegRenderer';\nimport { MseHtmlAudioElement } from './audio/MseAudioElementWrapper';\nimport { PtzControl, IPtzControl, IPtzThrottlingService } from '../ptzControl';\nimport { ITimeResolver, ResolvedFrameTime, GenerationTimeResolver } from '../utils/TimeResolver';\nimport { ILiteEvent } from '../utils/liteEvents';\nimport { StreamingConnectionStatusChangeEvent, PlayerStateChangeEvent, PlaySpeedChangeEvent, AudioStateChangeEvent, AudioAvailabilityChangeEvent, TimelineContentEvent, PlayerModeChangeEvent, ErrorStatusEvent } from '../events';\nimport { Camera } from './camera';\nimport { MediaGatewayService } from '../services/mediaGatewayService';\nimport { MseHtmlVideoElement } from './mse/MseHtmlVideoElement';\nimport { PtzRequestBuilder } from './WebSocket/PtzRequestBuilder';\nimport { PlaySpeed } from './PlaySpeed';\nimport { Utils } from '../utils/Utils';\nimport { StreamingConnectionStatus, PlayerMode, ErrorCode } from '../enums';\nimport { SupportedVideoFormats, VideoFormat } from './WebSocket/SupportedVideoFormats';\nimport { StreamUsageSelectorBuilder } from './StreamUsageSelector';\nimport { version } from '../gwp';\nimport { TimeLineRange } from '../TimeLineRange';\nimport { Dewarper } from '../dewarper/Dewarper';\nimport { FeatureFlag } from '../utils/FeatureFlag';\nimport { DewarperSourceImageParameters } from '../dewarper/DewarperSourceImageParameters';\nimport { DebugSwitch } from '../utils/Config';\nimport { DigitalZoomControl, IDigitalZoomControl, DigitalZoom } from '../digitalZoomControl/DigitalZoomControl';\nimport { Tile } from './Tile';\nimport { DigitalZoomPreview } from '../digitalZoomControl/preview/DigitalZoomPreview';\nimport { PreviewCanvas } from '../digitalZoomControl/preview/PreviewCanvas';\nimport { VideoFrameSources } from './VideoFrameSource';\nimport { TileSizeObserver } from './TileSizeProvider';\nimport { RenderingCanvas } from '../utils/RenderingCanvas';\nimport { IDataHub, IEventHubProvider } from '../services/eventHubDispatcher';\nimport { IDewarperControl } from '../dewarper/DewarperInterfaces';\nimport { DragObserver } from '../utils/DragObserver';\nimport { MouseWheelObserver } from '../utils/MouseWheelObserver';\nimport { DewarperVwoOverlay } from '../dewarper/DewarperVwoOverlay';\n\nexport interface ITimelineEventSource {\n readonly timelineContentUpdated: ILiteEvent;\n setTimelineRange(timeLine: TimeLineRange): void;\n}\n\nexport class WebPlayer implements ITimelineEventSource, IDataHub {\n public readonly PlayerId: number;\n\n private readonly m_camera: Camera;\n\n private readonly m_logger: ILogger;\n\n private readonly m_htmlElements: HtmlElements;\n\n private readonly m_debugOverlay: DebugOverlay;\n\n private readonly m_statisticProvider: StatisticProvider;\n\n private readonly m_digitalZoomControl: DigitalZoomControl;\n\n private m_sessionEstablishment: Promise;\n\n private readonly m_eventManager: EventManager;\n\n private m_mseRenderer?: IMseRenderer;\n\n private readonly m_jpegRenderer: JpegRenderer;\n\n private readonly m_audioPlayer?: MseHtmlAudioElement;\n\n private readonly m_tile: Tile;\n\n private m_dewarper: Dewarper | null = null;\n\n private readonly m_eventHubProvider: IEventHubProvider;\n\n private m_session?: IStatefulSession;\n\n private m_ptzControl?: PtzControl;\n\n private m_timeResolver?: ITimeResolver;\n\n private m_ptzThrottlingService: IPtzThrottlingService | undefined;\n\n private m_isDisposed = false;\n\n private get session(): IStatefulSession {\n this.throwIfDisposed();\n if (this.m_session === undefined) {\n throw new Error('Player session must be established first');\n }\n return this.m_session;\n }\n\n public get SessionEstablishment(): Promise {\n return this.m_sessionEstablishment;\n }\n\n public get PtzControl(): IPtzControl {\n if (this.m_ptzControl === undefined) {\n throw new Error('Player session must be established first');\n }\n return this.m_ptzControl;\n }\n\n public get DigitalZoomControl(): IDigitalZoomControl | null {\n if (!TileSizeObserver.supportsResizeObserver()) {\n // Digital Zoom is not supported by IE\n this.m_logger.info?.trace('Digital zoom is not supported by your browser.');\n return null;\n }\n if (this.m_dewarper !== null) {\n // Dewarper is enabled, we want to disable the Digital Zoom\n this.m_logger.info?.trace('Digital zoom is disabled when the dewarper is enabled.');\n return null;\n }\n return this.m_digitalZoomControl;\n }\n\n public get Dewarper(): IDewarperControl | null {\n if (this.m_session === undefined) {\n throw new Error('Player session must be established first');\n }\n return this.m_dewarper?.dewarperControl ?? null;\n }\n\n public set PtzThrottlingService(value: IPtzThrottlingService | undefined) {\n this.m_ptzThrottlingService = value;\n\n if (this.m_ptzControl) {\n this.m_ptzControl.PtzThrottlingService = value;\n }\n }\n\n public get isLive(): boolean {\n return this.m_session?.sessionStateView.playerMode === PlayerMode.live;\n }\n\n public get isPaused(): boolean {\n return this.m_session?.sessionStateView.isPaused ?? false;\n }\n\n public get playSpeed(): PlaySpeed {\n return this.m_session?.sessionStateView.playSpeed ?? PlaySpeed._1x;\n }\n\n public get lastFrameTime(): Date {\n return this.m_eventManager.lastFrameReceived.frameTime;\n }\n\n public get isAudioEnabled(): boolean {\n return (this.m_session?.sessionStateView.isAudioEnabled && !this.m_audioPlayer?.isMuted) ?? false;\n }\n\n public get isAudioAvailable(): boolean {\n return this.m_eventManager.isAudioAvailable;\n }\n\n public get isPlayerStarted(): boolean {\n return this.m_session !== undefined;\n }\n\n //* ** Public event handlers ***\n public get errorStateRaised(): ILiteEvent {\n return this.m_eventManager.errorStateRaised;\n }\n public get frameRendered(): ILiteEvent {\n return this.m_eventManager.frameRendered;\n }\n public get streamStatusChanged(): ILiteEvent {\n return this.m_eventManager.streamStatusChanged;\n }\n public get playerStateChanged(): ILiteEvent {\n return this.m_eventManager.playerStateChanged;\n }\n public get playSpeedChanged(): ILiteEvent {\n return this.m_eventManager.playSpeedChanged;\n }\n public get audioStateChanged(): ILiteEvent {\n return this.m_eventManager.audioStateChanged;\n }\n public get audioAvailabilityChanged(): ILiteEvent {\n return this.m_eventManager.audioAvailabilityChanged;\n }\n public get timelineContentUpdated(): ILiteEvent {\n return this.m_eventManager.timelineContentUpdated;\n }\n public get playerModeChanged(): ILiteEvent {\n return this.m_eventManager.playerModeChanged;\n }\n public get bufferingProgress(): ILiteEvent {\n return this.m_eventManager.bufferingProgress;\n }\n // *** End of event handlers ***\n\n constructor(id: number, htmlElements: HtmlElements, camera: Camera, mediaGatewayService: MediaGatewayService, enableH264: boolean) {\n this.m_logger = new Logger(id, 'WebPlayer');\n\n this.PlayerId = id;\n this.m_htmlElements = htmlElements;\n this.m_camera = camera;\n\n this.m_statisticProvider = new StatisticProvider();\n\n this.m_eventManager = new EventManager(this.m_logger, this.m_statisticProvider);\n\n const renderingCanvas = new RenderingCanvas(this.m_logger, this.m_htmlElements.CanvasElement);\n if (Utils.supportsMse()) {\n this.m_mseRenderer = new MseRenderer(this.m_logger, new MseHtmlVideoElement(this.m_logger, this.m_htmlElements.DivContainer, this.m_htmlElements.VideoElement, renderingCanvas, this.m_statisticProvider.frameRateProvider));\n this.m_audioPlayer = new MseHtmlAudioElement(this.m_logger, this.m_htmlElements.AudioElement);\n this.m_mseRenderer.timeUpdated.register(this.onTimeUpdated);\n this.m_mseRenderer.errorOccurred.register(this.onMseErrorOccurred);\n } else {\n this.m_logger.warn?.trace('MSE is not supported by this browser.');\n }\n\n this.m_jpegRenderer = new JpegRenderer(this.m_logger, renderingCanvas);\n this.m_jpegRenderer.timeUpdated.register(this.onJpegTimeUpdated);\n\n this.m_tile = new Tile(this.m_logger, this.m_mseRenderer ?? null, this.m_jpegRenderer, this.m_htmlElements.getTileSizeObserverBuilder().build());\n\n const digitalZoom = new DigitalZoom(this.m_logger, this.m_tile, new DragObserver(this.m_htmlElements.DivContainer));\n const digitalZoomPreview = new DigitalZoomPreview(this.m_logger, new PreviewCanvas(this.m_logger, this.m_htmlElements.DigitalZoomPreviewCanvas), digitalZoom, new VideoFrameSources(this.m_jpegRenderer, this.m_mseRenderer, this.m_htmlElements.VideoElement));\n this.m_digitalZoomControl = new DigitalZoomControl(digitalZoom, digitalZoomPreview);\n\n this.m_debugOverlay = new DebugOverlay(this.m_logger, this.PlayerId, this.m_htmlElements, this.m_digitalZoomControl, this.m_eventManager);\n\n // Create the eventHub before the session to be able to catch the create stream response\n this.m_eventHubProvider = mediaGatewayService.eventHubProvider;\n this.m_eventHubProvider.registerStream(this.PlayerId.toString(), this, this.m_eventManager);\n\n // DH\n if ( enableH264 === true) {\n this.m_sessionEstablishment = this.establishSession(mediaGatewayService, SupportedVideoFormats.getBrowserSupportedFormats());\n } else {\n // MJPEG Only\n this.m_sessionEstablishment = this.establishSession(mediaGatewayService, new SupportedVideoFormats([VideoFormat.Mjpeg]));\n }\n\n this.m_logger.debug?.trace('Player', this.PlayerId, 'created (Genetec Web Player v' + version() + ')');\n }\n\n private establishSession(mediaGatewayService: MediaGatewayService, supportedVideoFormats: SupportedVideoFormats): Promise {\n const streamUsageSelectorBuilder = new StreamUsageSelectorBuilder(this.m_logger, this.m_htmlElements.getTileSizeObserverBuilder());\n this.m_sessionEstablishment = mediaGatewayService.startStream(this.m_logger, this.PlayerId, this.m_camera, supportedVideoFormats, streamUsageSelectorBuilder);\n this.m_sessionEstablishment.then(\n (establishedSession) => {\n this.m_session = establishedSession;\n this.m_session.ConnectionReestablished.register(this.onSessionRecovered);\n this.m_session.ConnectionLost.register(this.onSessionLost);\n this.m_session.SessionError.register(this.onSessionError);\n this.m_ptzControl = new PtzControl(this.m_logger, this.session.ptzControlSession, new PtzRequestBuilder(this.PlayerId), this.m_ptzThrottlingService);\n this.m_debugOverlay.sessionStateView = this.m_session.sessionStateView;\n\n this.m_tile?.updateVideoWatermarkingConfig(this.session.sessionParameters.videoWatermarkConfig);\n this.m_digitalZoomControl.updateVideoWatermarkingConfig(this.session.sessionParameters.videoWatermarkConfig);\n\n if (FeatureFlag.IsDewarperEnabled) {\n if (this.session.sessionParameters.dewarperConfig !== DewarperSourceImageParameters.None) {\n this.m_logger.debug?.trace(`Creating a dewarper: ${this.session.sessionParameters.dewarperConfig.toString()}`);\n\n const mouseWheelObserver = new MouseWheelObserver(this.m_htmlElements.DivContainer);\n const dragObserver = new DragObserver(this.m_htmlElements.DivContainer);\n\n const dewarperVwoOverlay = new DewarperVwoOverlay(this.m_logger, this.m_htmlElements.DewarpingVwoCanvas);\n\n this.m_dewarper = Dewarper.build(this.m_logger, this.m_htmlElements.DewarpingCanvas, dewarperVwoOverlay, this.m_htmlElements.DewarpingPreviewDiv, this.m_htmlElements.DewarpingPreviewCanvas, this.m_htmlElements.DewarpedAreaCanvas,\n this.session.sessionParameters.dewarperConfig,\n new VideoFrameSources(this.m_jpegRenderer, this.m_mseRenderer, this.m_htmlElements.VideoElement),\n mouseWheelObserver, dragObserver);\n this.m_dewarper.updateVideoWatermarkingConfig(this.session.sessionParameters.videoWatermarkConfig);\n } else {\n this.m_logger.debug?.trace('Dewarper config: none');\n }\n } else {\n this.m_logger.debug?.trace('no dewarper feature flag');\n }\n\n this.m_logger.debug?.trace(`Session ${this.PlayerId} established`);\n },\n (reason) => {\n this.m_logger.warn?.trace('Session establishement failure: ', reason);\n });\n\n return this.m_sessionEstablishment;\n }\n\n public async disposeAsync(): Promise {\n this.m_logger.debug?.trace('dispose');\n\n if (this.m_isDisposed) {\n return;\n }\n this.m_isDisposed = true;\n\n this.m_debugOverlay.reset();\n this.m_debugOverlay.dispose();\n\n this.m_eventManager.reset();\n this.m_eventManager.dispose();\n\n if (this.m_session !== undefined) {\n this.m_session.ConnectionReestablished.unregister(this.onSessionRecovered);\n this.m_session.ConnectionLost.unregister(this.onSessionLost);\n this.m_session.SessionError.unregister(this.onSessionError);\n }\n\n this.m_digitalZoomControl.dispose();\n\n this.m_mseRenderer?.timeUpdated.unregister(this.onTimeUpdated);\n this.m_mseRenderer?.errorOccurred.unregister(this.onMseErrorOccurred);\n this.m_jpegRenderer.timeUpdated.unregister(this.onJpegTimeUpdated);\n\n this.m_statisticProvider.reset();\n\n this.m_mseRenderer?.dispose();\n this.m_jpegRenderer.dispose();\n this.m_audioPlayer?.dispose();\n\n if (this.m_session !== undefined) {\n try {\n await this.m_session.dispose();\n this.m_logger.debug?.trace('Session deleted succesfully from the media gateway.');\n } catch (e) {\n this.m_logger.warn?.trace('Session failed to delete from the media gateway.', e);\n }\n\n this.m_session = undefined;\n }\n\n this.m_eventHubProvider.unregisterStream(this.PlayerId.toString());\n this.m_dewarper?.dispose();\n }\n\n public async initialization(): Promise {\n if (this.m_mseRenderer !== undefined) {\n await this.m_mseRenderer.initialization;\n }\n if (this.m_audioPlayer !== undefined) {\n await this.m_audioPlayer.initialization;\n }\n }\n\n public getSnapshot(): ImageData | null {\n return this.m_tile.getSnapshot(false);\n }\n\n public playLive(): void {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Going to Live');\n if (this.session.playLive()) {\n this.m_mseRenderer?.start();\n this.m_audioPlayer?.playLive();\n this.m_jpegRenderer.start();\n this.m_eventManager.receivePlaySpeed(PlaySpeed._1x);\n this.m_eventManager.receivePlayerMode(PlayerMode.live);\n }\n }\n\n public pause(): void {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Pausing');\n if (this.session.pause()) {\n this.m_mseRenderer?.stop();\n this.m_jpegRenderer.stop();\n this.m_audioPlayer?.pause();\n this.m_eventManager.receivePlayerMode(PlayerMode.playback);\n }\n }\n\n public resume(): void {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Resuming');\n if (this.session.resume()) {\n this.m_mseRenderer?.start();\n this.m_audioPlayer?.play();\n this.m_jpegRenderer.start();\n }\n }\n\n public seek(seekTime: Date): void {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Seeking to', Utils.formatDateUTC(seekTime));\n this.session.seek(seekTime);\n this.m_mseRenderer?.start();\n this.m_jpegRenderer.start();\n this.m_eventManager.receivePlayerMode(PlayerMode.playback);\n }\n\n public setPlaySpeed(playSpeed: PlaySpeed) {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Setting playspeed to', playSpeed.Value);\n if (this.session.setPlaySpeed(playSpeed)) {\n this.m_eventManager.receivePlaySpeed(playSpeed);\n this.m_audioPlayer?.setPlaySpeed(playSpeed);\n this.m_timeResolver?.setPlaySpeed(playSpeed);\n }\n }\n\n public setAudioEnabled(isAudioEnabled: boolean) {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Setting Audio Enabled to', isAudioEnabled);\n isAudioEnabled ? this.m_audioPlayer?.unmute() : this.m_audioPlayer?.mute();\n // We only toggle the audio once server-side, when we enable it the first time:\n // this is to make it faster for audio to play after it's been muted.\n if (isAudioEnabled) {\n this.session.setAudioEnabled(isAudioEnabled);\n }\n this.m_eventManager.receiveAudioState(isAudioEnabled);\n }\n\n public setTimelineRange(timeLineRange: TimeLineRange) {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Setting timeline range to', timeLineRange.toString());\n this.session.setTimelineRange(timeLineRange);\n }\n\n public setPtzMode(isEnabled: boolean) {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Setting PtzMode to', isEnabled);\n this.session.setPtzMode(isEnabled);\n }\n\n public showDebugOverlay(show: boolean) {\n this.throwIfDisposed();\n this.m_logger.info?.trace('Setting DebugOverlay to', show);\n this.m_debugOverlay.toggleShown(show);\n }\n\n public receiveJpeg(info: JpegInfo, buffer: Int8Array) {\n if (this.m_isDisposed) {\n this.m_logger.intense?.trace(`Disposed - Dropped video frame ${info.Timestamp} Gen: ${info.Generation} Size: ${Utils.readableByteCount(buffer.byteLength)}}`);\n return;\n }\n\n this.m_logger.intense?.trace(`Received video frame ${info.Timestamp} Gen: ${info.Generation} Size: ${Utils.readableByteCount(buffer.byteLength)}}`);\n\n this.m_statisticProvider.bitRateProvider.addBytes(buffer.length);\n this.m_statisticProvider.frameRateProvider.addFrame('k');\n\n this.m_eventManager.setLastFrameReceived(new ResolvedFrameTime(new Date(info.Timestamp)), Codec.Mjpeg);\n this.m_jpegRenderer.render(buffer, new Date(info.Timestamp));\n\n this.m_tile?.setCodec(Codec.Mjpeg);\n }\n\n public receiveSegment(info: SegmentInfo, buffer: Int8Array) {\n if (this.m_isDisposed) {\n this.m_logger.intense?.trace(`Disposed - Dropping segment #${info.Id} MediaTime: ${info.BaseDecodeTime}`);\n return;\n }\n\n if (info.IsVideo) {\n this.onVideoSegmentReceived(info, buffer);\n } else {\n this.onAudioSegmentReceived(info, buffer);\n }\n }\n\n private onVideoSegmentReceived(info: SegmentInfo, buffer: Int8Array) {\n this.m_logger.intense?.trace(`Received video frame #${info.Id} MediaTime: ${info.BaseDecodeTime}, ${Utils.formatDate(info.FrameTimeAsDate)} ${info.MediaTime}, Init: ${info.IsInit} Key: ${info.IsKeyFrame} Sequence: ${info.SequenceId} Gen: ${info.Generation} TotalSec: ${info.TotalSeconds} Size: ${Utils.readableByteCount(buffer.byteLength)}}`);\n\n // When doing live-pause, and in ptz mode\n if (!this.session.sessionStateView.isLivePaused) {\n this.m_jpegRenderer.clear();\n }\n\n if (info.IsInit) {\n if (this.m_timeResolver !== undefined) {\n //looking at timeresolver !== undefined to know if this is the very first packet.\n this.m_logger.info?.trace('Init segment. Resetting the MsePlayer');\n this.m_mseRenderer?.reset();\n this.m_mseRenderer?.updateVideoWatermarkingConfig(this.session.sessionParameters.videoWatermarkConfig);\n }\n }\n\n if (this.m_timeResolver === undefined || (!this.m_timeResolver.canResolve(info.Generation) || info.IsInit)) {\n this.m_timeResolver = new GenerationTimeResolver(info.Generation, info.BaseDecodeTime, info.FrameTimeAsDate, this.playSpeed);\n this.m_logger.info?.trace(`New time resolver based on => Id: ${info.Id} Init: ${info.IsInit} Key: ${info.IsKeyFrame} Sequence: ${info.SequenceId} Gen: ${info.Generation} TotalSec: ${info.TotalSeconds} -> ${this.m_timeResolver.toString()}`);\n }\n\n this.m_statisticProvider.bitRateProvider.addBytes(buffer.length);\n this.m_statisticProvider.frameRateProvider.addFrame(info.IsKeyFrame ? 'k' : 'p');\n\n this.m_timeResolver.updateResolver(info.BaseDecodeTime, info.FrameTimeAsDate);\n\n this.m_eventManager.setLastFrameReceived(new ResolvedFrameTime(info.FrameTimeAsDate, info.BaseDecodeTime), Codec.H264);\n this.m_mseRenderer?.render(info, buffer);\n\n this.m_tile?.setCodec(Codec.H264);\n }\n\n private onAudioSegmentReceived(info: SegmentInfo, buffer: Int8Array) {\n this.m_logger.intense?.trace(`Received audio frame: ${info.Id} ${info.BaseDecodeTime}, ${Utils.formatDate(info.FrameTimeAsDate)} ${info.MediaTime}, Init: ${info.IsInit} Key: ${info.IsKeyFrame} Sequence: ${info.SequenceId} Gen: ${info.Generation} TotalSec: ${info.TotalSeconds} Size: ${Utils.readableByteCount(buffer.byteLength)}}`);\n\n if (info.IsInit) {\n this.m_audioPlayer?.reset();\n }\n\n this.m_audioPlayer?.decode(info, buffer);\n this.m_statisticProvider.audioBitRateProvider.addBytes(buffer.length);\n }\n\n private readonly onTimeUpdated = (mediaTime: number) => {\n if (this.m_timeResolver !== undefined) {\n const lastFrameRendered = this.m_timeResolver.resolve(mediaTime);\n this.session.setLastFrameRendered(lastFrameRendered.frameTime);\n this.m_audioPlayer?.sync(lastFrameRendered.frameTime);\n this.m_eventManager.setLastFrameRendered(lastFrameRendered);\n }\n }\n\n private readonly onMseErrorOccurred = () => {\n this.m_logger.warn?.trace('Mse error occured. Retrying with Mjpeg transcoding.');\n\n this.m_mseRenderer?.timeUpdated.unregister(this.onTimeUpdated);\n this.m_mseRenderer?.errorOccurred.unregister(this.onMseErrorOccurred);\n this.m_mseRenderer?.dispose();\n this.m_mseRenderer = undefined;\n\n this.session.restartSession(this.session.sessionParameters.withSupportedVideoFormats(new SupportedVideoFormats([VideoFormat.Mjpeg])));\n }\n\n private readonly onJpegTimeUpdated = (frameTime: Date) => {\n this.session.setLastFrameRendered(frameTime);\n this.m_audioPlayer?.sync(frameTime);\n this.m_eventManager.setLastJpegFrameRendered(frameTime, this.m_jpegRenderer.streamResolution);\n }\n\n private readonly onSessionRecovered = () => {\n this.m_logger.debug?.trace('Session re-established');\n this.m_mseRenderer?.reset();\n this.m_timeResolver = undefined;\n }\n\n private readonly onSessionLost = () => {\n this.m_logger.info?.trace('Session was lost');\n this.m_eventManager.receiveStreamingConnectionStatus(new StreamingStatus(StreamingConnectionStatus.ConnectingToMediaGateway, ''));\n }\n\n private readonly onSessionError = (error: string) => {\n this.m_logger.error?.trace('An error occurred updating the SessionState, player is no longer usable:', error);\n this.m_eventManager.receiveErrorDetails(new ErrorDetails(ErrorCode.UpdateSessionError, error));\n }\n\n private throwIfDisposed() {\n if (this.m_isDisposed) {\n throw new Error('WebPlayer is disposed');\n }\n }\n\n public debugStatus(indent: number): string {\n return 'WebPlayer' + Utils.indentNewLine(indent) +\n (this.m_isDisposed ? `${Utils.indentNewLine(indent)}Disposed${Utils.indentNewLine(indent)}` : '') +\n 'Camera: ' + this.m_camera.Id + Utils.indentNewLine(indent) +\n 'Codec: ' + this.m_eventManager.codec + Utils.indentNewLine(indent) +\n this.m_statisticProvider.frameRateProvider.getFrameRate().frameRateToString() + ' (KeyFrame interval: ' + this.m_statisticProvider.frameRateProvider.getFrameRate().keyFrameRateToString() + ')' + Utils.indentNewLine(indent) +\n this.m_statisticProvider.bitRateProvider.getBitRate() + Utils.indentNewLine(indent) +\n '--- MsePlayer ---' + Utils.indentNewLine(indent) +\n 'Mse: ' + (Utils.supportsMse() ? 'supported' : 'not supported') + ' ' + (DebugSwitch.IsMseBroken ? 'Broken by config' : '') + Utils.indentNewLine(indent) +\n this.m_mseRenderer?.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n '--- Jpeg ---' + Utils.indentNewLine(indent) +\n this.m_jpegRenderer.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) +\n '--- Audio ---' + Utils.indentNewLine(indent) +\n 'Audio available: ' + this.m_eventManager.isAudioAvailable + Utils.indentNewLine(indent) +\n 'Audio bitrate: ' + this.m_statisticProvider.getAudioBitRate().toString() + Utils.indentNewLine(indent) +\n (this.m_audioPlayer !== undefined ? (this.m_audioPlayer?.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent)) : '') +\n '--- Session ---' + Utils.indentNewLine(indent) +\n (this.m_session !== undefined ? this.m_session.debugStatus(indent + Utils.Indentation) : 'No session') + Utils.indentNewLine(indent) +\n '--- Zoom ---' + Utils.indentNewLine(indent) +\n this.m_digitalZoomControl.debugStatus(indent + Utils.Indentation) +\n (this.m_dewarper !== null ?\n '--- Dewarper ---' + Utils.indentNewLine(indent) +\n this.m_dewarper.debugStatus(indent + Utils.Indentation) + Utils.indentNewLine(indent) :\n '');\n }\n}\n","/**\n * @beta\n * */\nexport class Camera {\n public readonly Id: string;\n\n constructor(id: string) {\n this.Id = id;\n }\n\n public toString(): string {\n return this.Id;\n }\n}\n","import { Utils } from './utils/Utils';\nimport { TimeLine } from './players/WebSocket/Messages';\nimport { TimeSpan } from './utils/TimeSpan';\n\nexport class TimeLineRange {\n private readonly m_startTime: Date;\n\n private readonly m_endTime: Date;\n\n public get Span(): TimeSpan {\n return new TimeSpan(this.m_endTime.getTime() - this.m_startTime.getTime());\n }\n\n public constructor(startTime: Date, endTime: Date) {\n if (endTime.getTime() <= startTime.getTime()) {\n throw new Error(`Timeline range end time must be after start time. ${Utils.formatDate(startTime)} - ${Utils.formatDate(endTime)}`);\n }\n\n this.m_startTime = startTime;\n this.m_endTime = endTime;\n }\n\n public toString(): string {\n return `[${Utils.formatDate(this.m_startTime)} - ${Utils.formatDate(this.m_endTime)}]`;\n }\n\n public toTimeLine(): TimeLine {\n return new TimeLine(this.m_startTime, this.m_endTime);\n }\n}\n","import { ILiteEvent, LiteEvent } from './utils/liteEvents';\nimport { TimelineContentEvent } from './events';\nimport { ITimelineEventSource } from './players/webPlayer';\nimport { TimeLineRange } from './TimeLineRange';\nimport { TimeSpan } from './utils/TimeSpan';\n\n/**\n * This class regroups methods and events used to query the timeline events.\n * @public */\nexport interface ITimelineProvider {\n /**\n * Set the range of interest of the timeline events. You will receive TimelineContentEvent for bookmarks and sequences based on the range you provided.\n * This method may be called before calling playLive() or seek().\n *\n * @remarks\n * If the endTime parameter is in the future, you will periodically receive updates for the new Live events. The sequences provided via the event will not\n * overlap in the same update, but will overlap between updates. You will have to merge overlapping sequences to build the timeline.\n * Important: The range of interest (between start and end time) cannot be larger than 72 hours. We do not recommend displaying a timeline larger than 24h.\n * @param startTime - Start of the range of interest.\n * @param endTime - End of the range of interest.\n */\n setTimelineRange(startTime: Date, endTime: Date): void;\n\n /**\n * This event is fired every time there is new data to display in the timeline \"range of interest\"\n * @public */\n readonly onTimelineContentUpdated: ILiteEvent;\n}\n\n/**\n * This class is actually just a facade to isolate the members and methods related to timeline events.\n * @internal */\nexport class TimelineProvider implements ITimelineProvider {\n public static readonly TimelineRangeLimit: TimeSpan = TimeSpan.fromHours(72);\n\n private readonly m_timelineContentEvent: LiteEvent = new LiteEvent();\n\n private m_timelineEventSource?: ITimelineEventSource;\n private m_timeLine?: TimeLineRange;\n\n public get onTimelineContentUpdated(): ILiteEvent {\n return this.m_timelineContentEvent;\n }\n\n public dispose() {\n if (this.m_timelineEventSource !== undefined) {\n this.unregister(this.m_timelineEventSource);\n }\n this.m_timelineContentEvent.dispose();\n }\n\n public register(timelineEventSource: ITimelineEventSource) {\n if (this.m_timelineEventSource !== undefined) {\n throw new Error('You need to unregister the current timelineEventSource first.');\n }\n\n this.m_timelineEventSource = timelineEventSource;\n timelineEventSource.timelineContentUpdated.register(this.m_timelineContentEvent.boundTrigger);\n\n // We handle setting the timeline range before the player is intialized\n if (this.m_timeLine !== undefined) {\n timelineEventSource.setTimelineRange(this.m_timeLine);\n }\n }\n\n public unregister(timelineEventSource: ITimelineEventSource) {\n if (timelineEventSource !== this.m_timelineEventSource) {\n throw new Error('Unexpected timelineEventSource instance supplied');\n }\n\n this.m_timelineEventSource = undefined;\n timelineEventSource.timelineContentUpdated.unregister(this.m_timelineContentEvent.boundTrigger);\n }\n\n public setTimelineRange(startTime: Date, endTime: Date): void {\n const newRange = new TimeLineRange(startTime, endTime);\n if (newRange.Span.isGreaterThan(TimelineProvider.TimelineRangeLimit)) {\n throw new Error(`Requested Timeline range of interest is ${newRange.Span.toString()}. It cannot be more than ${TimelineProvider.TimelineRangeLimit.toString()}.`);\n }\n\n this.m_timeLine = newRange;\n\n if (this.m_timelineEventSource !== undefined) {\n this.m_timelineEventSource.setTimelineRange(this.m_timeLine);\n }\n }\n}\n","import { IWebPlayer } from './PublicWebPlayer';\n\ndeclare class WeakRef {\n constructor(target?: T);\n deref(): T | undefined;\n}\n\n//Keeps weak references of all created PublicWebPlayer.\n//Accessible in the console with gwp.players.players()\n//to obtain the count of players:\n//gwp.players.players().Count\n//to obtain the status of player 42\n//gwp.players.players()[42].debugStatus()\nexport class PlayersList {\n private static readonly m_isWeakRefDefined: boolean = typeof WeakRef !== 'undefined';\n\n public static readonly Instance: PlayersList = new PlayersList();\n\n private readonly m_players: WeakRef[] = [];\n\n private get WeakRefIsDefined(): boolean {\n return PlayersList.m_isWeakRefDefined;\n }\n\n public get Count(): number {\n if (!this.WeakRefIsDefined) {\n console.warn('Weak reference not supported. Debug map is not available.');\n return 0;\n }\n\n let activeCount = this.m_players.filter((weakRef) => weakRef.deref() !== undefined).length;\n\n if (activeCount !== this.m_players.length) {\n this.cleanup();\n activeCount = this.m_players.filter((weakRef) => weakRef.deref() !== undefined).length;\n }\n\n if (this.m_players.length !== activeCount) {\n console.warn(`Unable to clean player weak references: ${this.m_players.length} player references vs ${activeCount} active references.`);\n }\n\n return this.m_players.length;\n }\n\n public players(): IWebPlayer[] {\n const players: IWebPlayer[] = [];\n if (!this.WeakRefIsDefined) {\n console.warn('Weak reference not supported. Debug map is not available.');\n return players;\n }\n\n this.m_players.forEach((weakRef) => {\n const maybeStillAlive = weakRef.deref();\n if (maybeStillAlive !== undefined) {\n players.push(maybeStillAlive);\n }\n });\n\n this.cleanup();\n\n return players;\n }\n\n public add(player: IWebPlayer) {\n if (!this.WeakRefIsDefined) {\n return;\n }\n\n this.m_players.push(new WeakRef(player));\n\n this.cleanup();\n }\n\n public remove(player: IWebPlayer) {\n if (!this.WeakRefIsDefined) {\n return;\n }\n\n const index = this.m_players.findIndex((weakRef) => weakRef.deref() === player);\n if (index > -1) {\n this.m_players.splice(index, 1);\n } else {\n console.warn(`Could not remove the player from the players list. List length is now ${this.m_players.length}`);\n }\n\n this.cleanup();\n }\n\n private cleanup() {\n const playersCopy: WeakRef[] = [];\n\n this.m_players.forEach((weakRef) => playersCopy.push(weakRef));\n\n let cleanedUp = 0;\n playersCopy.forEach((weakRef) => {\n if (weakRef.deref() === undefined) {\n const index = this.m_players.indexOf(weakRef, 0);\n this.m_players.splice(index, 1);\n ++cleanedUp;\n }\n });\n\n if (cleanedUp !== 0) {\n console.warn(`${cleanedUp} gwp player(s) were not disposed.`);\n }\n }\n}\n","import { IPtzControl } from './ptzControl';\nimport { IDigitalZoomControl } from './digitalZoomControl/DigitalZoomControl';\nimport { ILiteEvent, LiteEvent } from './utils/liteEvents';\nimport { StreamingConnectionStatusChangeEvent, PlayerStateChangeEvent, PlaySpeedChangeEvent, AudioStateChangeEvent, AudioAvailabilityChangeEvent, PlayerModeChangeEvent, ErrorStatusEvent } from './events';\nimport { TokenRetrieverFct } from './services/TokenRetriever';\nimport { MediaGatewayService, buildMediaGatewayService, IMediaGatewayService } from './services/mediaGatewayService';\nimport { ILogger, Logger } from './utils/logger';\nimport { HtmlElements } from './players/htmlElements';\nimport { WebPlayer } from './players/webPlayer';\nimport { Camera } from './players/camera';\nimport { PlaySpeed } from './players/PlaySpeed';\nimport { ITimelineProvider, TimelineProvider } from './timelineProvider';\nimport { IDewarperControl } from './dewarper/DewarperInterfaces';\nimport { PlayersList } from './Players';\nimport { Utils } from './utils/Utils';\n\nlet m_nextId: number = 1;\n\n/**\n * Instanciate a new GWP instance in the provided div element.\n * @param container - Div Element into which the player will place itself\n * @returns instance used to control the new player\n */\nexport function buildPlayer(container: HTMLDivElement): IWebPlayer {\n if (container?.tagName?.toLowerCase() !== 'div') {\n // This check is required because a user calling us from javascript could ignore the type required\n throw new TypeError('container must be a *div* HTMLElement');\n }\n return new PublicWebPlayer(m_nextId++, container);\n}\n\n/** Primary interface use to control the GWP.\n * @public\n * */\nexport interface IWebPlayer {\n /** Is this player already started. */\n readonly isStarted: boolean;\n\n /** Acquire the interface used to send PTZ commands to the active player */\n readonly ptzControl: IPtzControl;\n\n /** Acquire the interface used to digitally zoom on the active player and to interact with the preview. Null if not supported by the browser */\n readonly digitalZoomControl: IDigitalZoomControl | null;\n\n /** Acquire the interface used to control the dewarper of the active player. Will be null if dewarping is not available */\n readonly dewarperControl: IDewarperControl | null;\n\n /** Acquire the interface used to get timeline events for the displayed camera, player must be started */\n readonly timelineProvider: ITimelineProvider;\n\n /** Is the player currently playing in live mode */\n readonly isLive: boolean;\n\n /** Is the player currently paused */\n readonly isPaused: boolean;\n\n /** Current play speed */\n readonly playSpeed: number\n\n /** Time of the last frame received */\n readonly lastFrameTime: Date;\n\n /** Is there an audio stream supported by the camera */\n readonly isAudioAvailable: boolean;\n\n /** Is audio playback currently enabled */\n readonly isAudioEnabled: boolean;\n\n /** Event raised when the player gets into an Error state */\n readonly onErrorStateRaised: ILiteEvent;\n /** Event raised periodically (not every time) when a frame is rendered */\n readonly onFrameRendered: ILiteEvent;\n /** Event raised when the streaming connection status changes */\n readonly onStreamStatusChanged: ILiteEvent;\n /** Event raised when the player state changes */\n readonly onPlayerStateChanged: ILiteEvent;\n /** Event raised when play speed changes */\n readonly onPlaySpeedChanged: ILiteEvent;\n /** Event raised when audio playback state changes */\n readonly onAudioStateChanged: ILiteEvent;\n /** Event raised when audio playback availability changes */\n readonly onAudioAvailabilityChanged: ILiteEvent;\n /** Event raised when player mode changes between live and playback */\n readonly onPlayerModeChanged: ILiteEvent;\n /** Event raised periodically while player needs to buffer before it can start playing */\n readonly onBufferingProgress: ILiteEvent;\n\n /**\n * Prepare the player to play the specified camera. This will establish a session with the Media Gateway server.\n * @param camera - Camera GUID to request from the Media Gateway.\n * @param mediaGatewayEndpoint - Uri of the Media Gateway. Must be in the form `https:///`.\n * @param tokenRetriever - Callback to use to retrieve a security token for the camera. It will be called during the start process and for each token renewal while the session is active.\n */\n start(camera: string, mediaGatewayEndpoint: string, tokenRetriever: TokenRetrieverFct): Promise;\n\n /**\n * Prepare the player to play the specified camera using an already created Media Gateway service.\n * The player will establish its session within the already existing transport of the Media Gateway Service. This can be used to multiplex many players into the same socket.\n * @param camera - Camera GUID to request from the Media Gateway.\n * @param mediaGatewayService - Existing Media Gateway service to use for communications.\n */\n startWithService(camera: string, mediaGatewayService: IMediaGatewayService): Promise;\n\n /**\n * Stop the current session on this player. This clears the running state for the current camera and prepares the player to be started for a new camera.\n * */\n stop(): void;\n\n /**\n * Stop and release the player, it will be removed from its containing \"div\" element.\n * */\n dispose(): void;\n\n /**\n * Obtain a snapshot of the currently displayed video. Returns null if no image is available.\n * */\n getSnapshot(): ImageData | null;\n\n /** Request to start playing the live stream. */\n playLive(): void;\n\n /** Pause the player.\n * @remarks\n * Pause may be called in playback or live mode.\n * */\n pause(): void;\n\n /** Resume the player. Must be called after a pause to resume the player on the last frame played.\n * @remarks\n * If the player was in live when pause was called, the resume will switch to playback at the last frame that was played.\n * If you want to restart the live stream, you must call {@link IWebPlayer.playLive} instead.\n * */\n resume(): void;\n\n /**\n * Seek the player to the specified time.\n * @param seekTime - Time to start the playback.\n *\n * @remarks\n * If no recording is available at the seek time, the player will start playing at the first available recording past the seek time depending on the play speed direction.\n */\n seek(seekTime: Date): void;\n\n /**\n * Set the play speed of the player. Any value between 0.01 to 100 is acceptable. Reverse values are also accepted between 0.01 and 100.\n * @param playSpeed - Playspeed to use. Acceptable values must be between -100 and -0.01 or between 0.01 and 100.\n *\n * @remarks\n * Reverse speeds will play only the key frames in the stream. If the key frame interval is too large, we recommend using at least -6x to have a smooth experience.\n * Higher speeds will also switch to using key frames only for playback.\n */\n setPlaySpeed(playSpeed: number): void;\n\n /**\n * Plays or mute the audio stream (if available)\n * @param isAudioEnabled - Set to true to enable the audio. False to disable.\n */\n setAudioEnabled(isAudioEnabled: boolean): void;\n\n /**\n * Set the video player in ptz mode. This mode attempts to favorize low latency over stream quality at the expense of being more expensive on server resources.\n * It has to be enabled in the media gateway configuration.\n * @param ptzMode - Enable (true) or Disable (false)\n */\n setPtzMode(ptzMode: boolean): void;\n\n /**\n * Show or Hide the debug overlay to help diagnostic of issues with the player.\n * The diagnostic can also be toggled by using the Ctrl+Shift+A shortcut.\n * @param show - Show (true) or Hide (false)\n */\n showDebugOverlay(show: boolean): void;\n}\n\n/**\n * Represents a single media player\n * @internal\n */\nclass PublicWebPlayer implements IWebPlayer {\n private readonly m_logger: ILogger;\n private readonly m_playerId: number;\n\n private readonly m_htmlElements: HtmlElements;\n\n // Will be set only if we created it and are responsible to dispose it.\n private m_mediaGatewayService?: MediaGatewayService;\n private m_webPlayer: WebPlayer | undefined;\n private m_isDisposed: boolean = false;\n\n private readonly m_timelineProvider = new TimelineProvider();\n\n private readonly errorEvent = new LiteEvent();\n private readonly frameRenderedEvent = new LiteEvent();\n private readonly streamStatusEvent = new LiteEvent();\n private readonly playerStateEvent = new LiteEvent();\n private readonly playSpeedEvent = new LiteEvent();\n private readonly audioEvent = new LiteEvent();\n private readonly audioAvailabilityEvent = new LiteEvent();\n private readonly playerModeEvent = new LiteEvent();\n private readonly bufferingProgress = new LiteEvent();\n\n public get playerId(): number {\n this.throwIfDisposed();\n return this.m_playerId;\n }\n\n public get ptzControl(): IPtzControl {\n return this.webPlayer.PtzControl;\n }\n\n public get digitalZoomControl(): IDigitalZoomControl | null {\n return this.webPlayer.DigitalZoomControl;\n }\n\n public get dewarperControl(): IDewarperControl | null {\n return this.webPlayer.Dewarper;\n }\n\n public get timelineProvider(): ITimelineProvider {\n this.throwIfDisposed();\n return this.m_timelineProvider;\n }\n\n public get isLive(): boolean {\n return this.webPlayer.isLive;\n }\n\n public get isPaused(): boolean {\n return this.webPlayer.isPaused;\n }\n\n public get playSpeed(): number {\n return this.webPlayer.playSpeed.Value;\n }\n\n public get lastFrameTime(): Date {\n return this.webPlayer.lastFrameTime;\n }\n\n public get isAudioAvailable(): boolean {\n return this.webPlayer.isAudioAvailable;\n }\n\n public get isAudioEnabled(): boolean {\n return this.webPlayer.isAudioEnabled;\n }\n\n public get isStarted(): boolean {\n return this.m_webPlayer !== undefined;\n }\n\n public get onErrorStateRaised(): ILiteEvent {\n return this.errorEvent.expose();\n }\n public get onFrameRendered(): ILiteEvent {\n return this.frameRenderedEvent.expose();\n }\n public get onStreamStatusChanged(): ILiteEvent {\n return this.streamStatusEvent.expose();\n }\n public get onPlayerStateChanged(): ILiteEvent {\n return this.playerStateEvent.expose();\n }\n public get onPlaySpeedChanged(): ILiteEvent {\n return this.playSpeedEvent.expose();\n }\n public get onAudioStateChanged(): ILiteEvent {\n return this.audioEvent.expose();\n }\n public get onAudioAvailabilityChanged(): ILiteEvent {\n return this.audioAvailabilityEvent.expose();\n }\n public get onPlayerModeChanged(): ILiteEvent {\n return this.playerModeEvent.expose();\n }\n public get onBufferingProgress(): ILiteEvent {\n return this.bufferingProgress.expose();\n }\n\n constructor(playerId: number, divContainer: HTMLDivElement) {\n PlayersList.Instance.add(this);\n this.m_playerId = playerId;\n this.m_logger = new Logger(playerId, 'WebPlayer');\n this.m_htmlElements = new HtmlElements(divContainer);\n }\n\n public dispose(): void {\n if (this.m_isDisposed) return;\n\n this.m_logger.debug?.trace('dispose');\n PlayersList.Instance.remove(this);\n\n if (this.isStarted) {\n this.stop();\n }\n\n this.errorEvent.dispose();\n this.frameRenderedEvent.dispose();\n this.streamStatusEvent.dispose();\n this.playerStateEvent.dispose();\n this.playSpeedEvent.dispose();\n this.audioEvent.dispose();\n this.audioAvailabilityEvent.dispose();\n this.playerModeEvent.dispose();\n this.bufferingProgress.dispose();\n this.m_timelineProvider.dispose();\n\n this.m_webPlayer?.disposeAsync().then(() => this.m_mediaGatewayService?.stop());\n this.m_htmlElements.dispose();\n\n this.m_isDisposed = true;\n }\n\n public getSnapshot(): ImageData | null {\n return this.webPlayer.getSnapshot();\n }\n\n public async start(camera: string, mediaGatewayEndpoint: string, tokenRetriever: TokenRetrieverFct): Promise {\n this.throwIfDisposed();\n if (this.isStarted) {\n throw new Error(`Player ${this.m_playerId} is already started`);\n }\n\n this.m_logger.debug?.trace('Starting with its own MediaGatewayService');\n this.m_mediaGatewayService = await buildMediaGatewayService(mediaGatewayEndpoint, tokenRetriever) as MediaGatewayService;\n try {\n await this.startWithService(camera, this.m_mediaGatewayService);\n } catch (error) {\n this.m_logger.error?.trace('Couldnt start web player: ', error);\n this.m_mediaGatewayService?.stop();\n throw error;\n }\n }\n\n public async startWithService(camera: string, mediaGatewayService: IMediaGatewayService): Promise {\n this.throwIfDisposed();\n if (this.isStarted) {\n throw new Error(`Player ${this.m_playerId} is already started`);\n }\n if (!(mediaGatewayService instanceof MediaGatewayService)) {\n throw new Error('The provided MediaGatewayService is not of the expected type');\n }\n\n const webPlayer = new WebPlayer(this.m_playerId, this.m_htmlElements, new Camera(camera), mediaGatewayService, true);\n try {\n await webPlayer.initialization();\n await webPlayer.SessionEstablishment;\n } catch (error) {\n await webPlayer.disposeAsync();\n throw error;\n }\n this.subscribeToPlayerEvent(webPlayer);\n this.m_webPlayer = webPlayer;\n }\n\n public stop() {\n this.m_logger.debug?.trace('stop()');\n this.throwIfDisposed();\n if (this.m_webPlayer !== undefined) { // isStarted\n this.unsubscribeToPlayerEvent(this.m_webPlayer);\n const mgService = this.m_mediaGatewayService;\n this.m_mediaGatewayService = undefined;\n const player = this.m_webPlayer;\n this.m_webPlayer = undefined;\n player.disposeAsync().then(() => mgService?.stop());\n }\n }\n\n public playLive(): void {\n this.webPlayer.playLive();\n }\n\n public pause(): void {\n this.webPlayer.pause();\n }\n\n public resume(): void {\n this.webPlayer.resume();\n }\n\n public seek(seekTime: Date): void {\n if (!(seekTime instanceof Date) || isNaN(seekTime.valueOf())) {\n throw new Error('Invalid Seek Time was requested');\n }\n this.webPlayer.seek(seekTime);\n }\n\n public setPlaySpeed(playSpeed: number): void {\n this.webPlayer.setPlaySpeed(new PlaySpeed(playSpeed));\n }\n\n public setAudioEnabled(isAudioEnabled: boolean): void {\n this.webPlayer.setAudioEnabled(isAudioEnabled);\n }\n\n public setPtzMode(ptzMode: boolean): void {\n this.webPlayer.setPtzMode(ptzMode);\n }\n\n public showDebugOverlay(show: boolean): void {\n this.webPlayer.showDebugOverlay(show);\n }\n\n private throwIfDisposed() {\n if (this.m_isDisposed) {\n throw new Error('PublicWebPlayer is disposed');\n }\n }\n\n private throwIfDisposedOrNotStarted() {\n this.throwIfDisposed();\n if (this.m_webPlayer === undefined) {\n throw new Error('Player need to be started first.');\n }\n }\n\n private get webPlayer(): WebPlayer {\n this.throwIfDisposedOrNotStarted();\n return this.m_webPlayer!;\n }\n\n private readonly onErrorState = (errorStatus: ErrorStatusEvent): void => {\n if (errorStatus.isFatal) {\n this.stop();\n }\n this.errorEvent.trigger(errorStatus);\n }\n\n private subscribeToPlayerEvent(webPlayer: WebPlayer): void {\n webPlayer.errorStateRaised.register(this.onErrorState);\n webPlayer.frameRendered.register(this.frameRenderedEvent.boundTrigger);\n webPlayer.streamStatusChanged.register(this.streamStatusEvent.boundTrigger);\n webPlayer.playerStateChanged.register(this.playerStateEvent.boundTrigger);\n webPlayer.playSpeedChanged.register(this.playSpeedEvent.boundTrigger);\n webPlayer.audioStateChanged.register(this.audioEvent.boundTrigger);\n webPlayer.audioAvailabilityChanged.register(this.audioAvailabilityEvent.boundTrigger);\n webPlayer.playerModeChanged.register(this.playerModeEvent.boundTrigger);\n webPlayer.bufferingProgress.register(this.bufferingProgress.boundTrigger);\n this.m_timelineProvider.register(webPlayer);\n }\n\n private unsubscribeToPlayerEvent(webPlayer: WebPlayer): void {\n webPlayer.errorStateRaised.unregister(this.onErrorState);\n webPlayer.frameRendered.unregister(this.frameRenderedEvent.boundTrigger);\n webPlayer.streamStatusChanged.unregister(this.streamStatusEvent.boundTrigger);\n webPlayer.playerStateChanged.unregister(this.playerStateEvent.boundTrigger);\n webPlayer.playSpeedChanged.unregister(this.playSpeedEvent.boundTrigger);\n webPlayer.audioStateChanged.unregister(this.audioEvent.boundTrigger);\n webPlayer.audioAvailabilityChanged.unregister(this.audioAvailabilityEvent.boundTrigger);\n webPlayer.playerModeChanged.unregister(this.playerModeEvent.boundTrigger);\n webPlayer.bufferingProgress.unregister(this.bufferingProgress.boundTrigger);\n this.m_timelineProvider.unregister(webPlayer);\n }\n\n public debugStatus(): string {\n const indent = 1;\n return `PublicWebPlayer${Utils.indentNewLine(indent)}` +\n `PlayerId: ${this.m_playerId}${Utils.indentNewLine(indent)}` +\n (this.m_isDisposed ? `${Utils.indentNewLine(indent)}Disposed${Utils.indentNewLine(indent)}` : '') +\n (this.m_webPlayer?.debugStatus(indent + Utils.Indentation) ?? 'WebPlayer undefined');\n }\n}\n","export {};\n\ndeclare global {\n // interface Map {\n // filter (predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V][];\n // }\n\n function mapEvery(map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): boolean;\n function mapFilter(map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V][];\n function mapFind(map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V] | undefined;\n function mapSome(map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): boolean;\n function setEvery(set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;\n function setFilter(set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];\n function setFind(set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T | undefined;\n function setSome(set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;\n}\n\n// if (!Map.prototype.filter) {\n// Map.prototype.filter = function (this: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K, V][] {\n// return Array.from(this.entries()).filter(predicate);\n// };\n// }\n\n globalThis.mapEvery = (map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): boolean => {\n return Array.from(map.entries()).every(predicate);\n };\n\n globalThis.mapFilter = (map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V][] => {\n return Array.from(map.entries()).filter(predicate);\n };\n\n globalThis.mapFind = (map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V] | undefined => {\n return Array.from(map.entries()).find(predicate);\n };\n\n globalThis.mapSome = (map: Map, predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): boolean => {\n return Array.from(map.entries()).some(predicate);\n };\n\n globalThis.setEvery = (set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean => {\n return Array.from(set.values()).every(predicate);\n };\n\n globalThis.setFilter = (set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[] => {\n return Array.from(set.values()).filter(predicate);\n };\n\n globalThis.setFind = (set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T | undefined => {\n return Array.from(set.values()).find(predicate);\n };\n\n globalThis.setSome = (set: Set, predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean => {\n return Array.from(set.values()).some(predicate);\n };","// Autogenerated: CodeGen/TimelineController?language=ts&InterfaceOnly=False on 2021-06-21 12:13:18 PM\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITimelineController, ITimelineProvider } from './timeline.controller.interfaces';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\n\nexport class TimelineProvider extends FieldObject implements ITimelineProvider {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Title\n public get title(): string {\n return this.getField('Title');\n }\n public set title(value: string) {\n this.setField('Title', value);\n }\n // Icon\n public get icon(): string {\n return this.getField('Icon');\n }\n public set icon(value: string) {\n this.setField('Icon', value);\n }\n // IsEnabledDefault\n public get isEnabledDefault(): boolean {\n return this.getField('IsEnabledDefault');\n }\n public set isEnabledDefault(value: boolean) {\n this.setField('IsEnabledDefault', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Title', '');\n this.setField('Icon', '');\n this.setField('IsEnabledDefault', false);\n }\n}\n\nexport class TimelineController extends RestObject implements ITimelineController {\n constructor() {\n super('api/Timeline');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async getProvidersAsync(transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(TimelineProvider, 'Providers', 'Id', true, false, null, transaction);\n }\n\n // #endregion Rest Methods\n\n}\n","import { EventEmitter, Inject, Injectable, Output } from '@angular/core';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { isEqual } from 'lodash-es';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TimelineController } from '../../shared/controllers/timeline/timeline.controller';\nimport { ITimelineController, ITimelineProvider } from '../../shared/controllers/timeline/timeline.controller.interfaces';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionTypes } from '../../shared/enumerations/option-types';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class TimelineService {\n //#region Constants\n\n private static readonly bookmarksProvider = SafeGuid.parse('156F26CE-B014-4992-8186-E70344A4D794');\n\n //#endregion\n\n //#region Fields\n\n @Output() public activeProviders: IGuid[] = [];\n @Output() public bookmarksVisible = true;\n\n @Output() public providersChanged = new EventEmitter();\n\n private scClient: SecurityCenterClient;\n\n private activeProvidersString: string[] = [];\n private providers: ITimelineProvider[] | undefined;\n\n //#endregion\n\n //#region Constructors\n\n constructor(securityCenterClientService: SecurityCenterClientService, @Inject(USER_SETTINGS_SERVICE) private userSettingsService: SettingsService) {\n this.scClient = securityCenterClientService?.scClient;\n\n userSettingsService.onSettingsChanged$.pipe(untilDestroyed(this)).subscribe(() => this.onSettingsChanged());\n\n this.init().fireAndForget();\n\n this.scClient.onLogonStateChanged((args) => {\n if (!args.loggedOn()) {\n this.activeProviders.length = 0;\n this.providers = undefined;\n } else {\n this.applyDefaultSettingsIfNotSet().fireAndForget();\n }\n });\n }\n\n //#endregion\n\n public async applyDefaultSettingsAsync(): Promise {\n let settings = '';\n\n // if none, be sure the settings is applied one time\n const providers = await this.fetchProvidersAsync();\n if (providers) {\n this.activeProvidersString.length = 0;\n\n providers.forEach((provider) => {\n if (provider.isEnabledDefault) {\n this.activeProvidersString.push(provider.id.toString());\n }\n });\n\n settings = JSON.stringify(this.activeProvidersString);\n this.userSettingsService.set(OptionTypes.Appearance, 'timelineProviders', settings);\n }\n return settings;\n }\n\n public async fetchProvidersAsync(): Promise {\n const timelineController = await this.scClient.getAsync(TimelineController);\n if (timelineController) {\n const providers = await timelineController.getProvidersAsync();\n if (providers) {\n this.providers = [];\n providers.forEach((x) => this.providers?.push(x));\n }\n }\n return this.providers;\n }\n\n private async applyDefaultSettingsIfNotSet(): Promise {\n const providersString = this.userSettingsService.get(OptionTypes.Appearance, 'timelineProviders');\n if (!providersString) {\n await this.applyDefaultSettingsAsync();\n }\n }\n\n private loadSettings(): void {\n const providersString = this.userSettingsService.get(OptionTypes.Appearance, 'timelineProviders');\n if (providersString) {\n const activeProviders = JSON.parse(providersString) as string[];\n\n if (!isEqual(this.activeProvidersString, activeProviders) || this.activeProviders.length === 0) {\n this.activeProvidersString = activeProviders;\n\n this.activeProviders.length = 0;\n this.bookmarksVisible = false;\n\n this.activeProvidersString.forEach((x) => {\n const guid = SafeGuid.parse(x);\n this.activeProviders.push(guid);\n\n // keep a variable determining if the bookmarks are enabled\n if (guid.equals(TimelineService.bookmarksProvider)) {\n this.bookmarksVisible = true;\n }\n });\n\n // send an event informing that the list of active providers has changed\n this.providersChanged.emit();\n }\n }\n }\n\n private onSettingsChanged() {\n this.loadSettings();\n }\n\n private async init() {\n await this.applyDefaultSettingsIfNotSet();\n this.loadSettings();\n }\n}\n","// Autogenerated: CodeGen/TimelinePart?language=ts&InterfaceOnly=True on 2021-01-06 1:55:53 PM\n// Autogenerated: CodeGen/TimelinePart?language=ts&InterfaceOnly=False on 2021-01-06 1:55:53 PM\n// Autogenerated: CodeGen/TimelineToolTip?language=ts&InterfaceOnly=True on 2021-01-06 1:55:53 PM\n// Autogenerated: CodeGen/TimelineToolTip?language=ts&InterfaceOnly=False on 2021-01-06 1:55:53 PM\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport interface ITimelinePart extends IFieldObject {\n id: IGuid;\n duration: number;\n isPersistent: boolean;\n priority: number;\n timestamp: Date;\n renderer: string;\n sourceId: IGuid;\n toolTip: ITimelineToolTip;\n}\n\nexport class TimelinePart extends FieldObject implements ITimelinePart {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Duration\n public get duration(): number {\n return this.getField('Duration');\n }\n public set duration(value: number) {\n this.setField('Duration', value);\n }\n // IsPersistent\n public get isPersistent(): boolean {\n return this.getField('IsPersistent');\n }\n public set isPersistent(value: boolean) {\n this.setField('IsPersistent', value);\n }\n // Priority\n public get priority(): number {\n return this.getField('Priority');\n }\n public set priority(value: number) {\n this.setField('Priority', value);\n }\n // Timestamp\n public get timestamp(): Date {\n return this.getFieldDate('Timestamp');\n }\n public set timestamp(value: Date) {\n this.setFieldDate('Timestamp', value);\n }\n // Renderer\n public get renderer(): string {\n return this.getField('Renderer');\n }\n public set renderer(value: string) {\n this.setField('Renderer', value);\n }\n // SourceId\n public get sourceId(): IGuid {\n return this.getFieldGuid('SourceId');\n }\n public set sourceId(value: IGuid) {\n this.setFieldGuid('SourceId', value);\n }\n // ToolTip\n public get toolTip(): ITimelineToolTip {\n return this.getFieldObject(TimelineToolTip, 'ToolTip');\n }\n public set toolTip(value: ITimelineToolTip) {\n this.setFieldObject('ToolTip', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Duration', 0);\n this.setField('IsPersistent', false);\n this.setField('Priority', 0);\n this.setFieldDate('Timestamp', new Date());\n this.setField('Renderer', '');\n this.setFieldGuid('SourceId', SafeGuid.EMPTY);\n const objToolTip = new TimelineToolTip();\n objToolTip.initializeAllFields();\n this.setFieldObject('ToolTip', objToolTip);\n }\n}\n\nexport interface ITimelineToolTip extends IFieldObject {\n title: string;\n description: string;\n navigation: string;\n picture: string;\n}\n\nexport class TimelineToolTip extends FieldObject implements ITimelineToolTip {\n // Title\n public get title(): string {\n return this.getField('Title');\n }\n public set title(value: string) {\n this.setField('Title', value);\n }\n // Description\n public get description(): string {\n return this.getField('Description');\n }\n public set description(value: string) {\n this.setField('Description', value);\n }\n // Navigation\n public get navigation(): string {\n return this.getField('Navigation');\n }\n public set navigation(value: string) {\n this.setField('Navigation', value);\n }\n // Picture\n public get picture(): string {\n return this.getField('Picture');\n }\n public set picture(value: string) {\n this.setField('Picture', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Title', '');\n this.setField('Description', '');\n this.setField('Navigation', '');\n this.setField('Picture', '');\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { ITimelinePart, TimelinePart } from './timelinePart';\n\nexport class TimelineProviderId {\n public static BookmarkTimelineProviderId = SafeGuid.parse('156F26CE-B014-4992-8186-E70344A4D794');\n public static MotionTimelineProviderId = SafeGuid.parse('23159516-6217-46EE-AC2C-C5824250A6C4');\n public static RecordingSequenceTimelineProviderId = SafeGuid.parse('E25BA7BA-3F31-4212-B539-83C4A1E9D266');\n public static AccessControlTimelineProviderId = SafeGuid.parse('9A569C59-0D86-4761-8A8D-07E46199A972');\n public static AlarmTimelineProviderId = SafeGuid.parse('C1BAE616-1986-4D66-9B7C-E6EB95670818');\n}\n\nexport class TimelinePartEvent {\n public readonly parts: Set;\n\n constructor(data: any) {\n this.parts = new Set();\n for (const item of data) {\n const newFo = new TimelinePart();\n newFo.loadFields(item);\n this.parts.add(newFo as ITimelinePart);\n }\n }\n}\n","import { ITimelineToolTip } from 'Marmot/Timeline/timelinePart';\nimport { NavigationService } from '../../services/navigation/navigation.service';\n\nexport class TooltipItem {\n public title = '';\n public description = '';\n public hasPicture = false;\n public picture = '';\n private navigation?: string;\n\n constructor(private navigationService: NavigationService, public timestamp: Date) {}\n\n public loadFrom(tooltip: ITimelineToolTip): boolean {\n let result = false;\n\n if (tooltip.hasField('title')) {\n this.title = tooltip.title;\n result = true;\n }\n if (tooltip.hasField('description')) {\n this.description = tooltip.description;\n result = true;\n }\n if (tooltip.hasField('navigation')) {\n this.navigation = tooltip.navigation;\n result = true;\n }\n if (tooltip.hasField('picture') && tooltip.picture) {\n this.picture = tooltip.picture;\n this.hasPicture = true;\n result = true;\n }\n\n return result;\n }\n\n public click(): void {\n if (this.navigation) {\n this.navigationService.navigate(this.navigation, true).fireAndForget();\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\n@Directive({\n selector: '[appMouseCapture]',\n})\nexport class MouseCaptureDirective implements AfterViewInit, OnChanges {\n @Input('appMouseCapture') public activeId = -1;\n\n private pointerId = -1;\n\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.ngOnChanges();\n }\n\n ngOnChanges() {\n if (this.activeId >= 0) {\n // release the previous capture just in case\n this.release();\n\n // capture the mouse\n this.pointerId = this.activeId;\n this.el.nativeElement.setPointerCapture(this.pointerId);\n } else if (this.pointerId >= 0) {\n this.el.nativeElement.releasePointerCapture(this.pointerId);\n this.pointerId = -1;\n }\n }\n\n public release(): void {\n if (this.pointerId >= 0) {\n this.el.nativeElement.releasePointerCapture(this.pointerId);\n this.pointerId = -1;\n }\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, EventEmitter, Output } from '@angular/core';\nimport { ResizeSensor } from 'css-element-queries';\n\n// Directive that outputs an event when the element's width or height changes\n@Directive({\n selector: '[appResize]',\n})\nexport class ResizeDirective implements OnInit, OnDestroy {\n @Output() public appResize = new EventEmitter();\n\n private oldWidth = -1;\n private oldHeight = -1;\n private resizeSensor?: ResizeSensor;\n\n constructor(public elementRef: ElementRef) {}\n\n ngOnInit(): void {\n if (ResizeSensor) {\n this.resizeSensor = new ResizeSensor(this.elementRef.nativeElement, () => this.onResized());\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSensor) {\n this.resizeSensor.detach();\n }\n }\n\n private onResized(): void {\n const newWidth = this.elementRef.nativeElement.clientWidth;\n const newHeight = this.elementRef.nativeElement.clientHeight;\n\n if (newWidth === this.oldWidth && newHeight === this.oldHeight) {\n return;\n }\n\n this.oldWidth = this.elementRef.nativeElement.clientWidth;\n this.oldHeight = this.elementRef.nativeElement.clientHeight;\n\n this.appResize.emit();\n }\n}\n","
\n
\n {{ cursorTime }}\n
    0\" style=\"pointer-events: all\">\n
  • \n
    \n {{ tooltip.title }}\n {{ tooltip.description }}\n \n
    \n
  • \n
\n
\n \n
\n
\n
\n \n \n \n
\n \n \n
\n \n
\n\n","import { Component, Input, ViewChild, ElementRef, ChangeDetectionStrategy, NgZone, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { GuidSet, IGuid } from 'safeguid';\nimport moment, { MomentInput } from 'moment-timezone';\nimport { RenderingHelper } from '@modules/video/utilities/renderinghelper';\nimport { PlayerMode, PlayerModeChangeEvent, PlayerState, PlayerStateChangeEvent, TimelineEvent, TimelineEventKind } from 'Marmot/Marmot/gwp';\nimport { IVideoPlayer, LoopChangeEvent } from 'Marmot/ivideoplayer';\nimport { TimelineService } from '@modules/video/services/timeline.service';\nimport { TimelineProviderId, TimelinePartEvent } from 'Marmot/Timeline/timelinePartEvent';\nimport { ITimelinePart } from 'Marmot/Timeline/timelinePart';\nimport { debounce, find } from 'lodash-es';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TimeService } from '../../services/time/time.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { TrackedComponent } from '../tracked/tracked.component';\nimport { TrackingService } from '../../services/tracking.service';\nimport { NavigationService } from '../../services/navigation/navigation.service';\nimport { ITimezoneInfo } from '../../api/api';\nimport { TooltipItem } from './tooltipItem';\n\nexport class ThumbnailPart {\n constructor(public timestamp: Date, public duration: number, public image: string) {}\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineComponent extends TrackedComponent implements OnDestroy {\n // #region Constants\n\n private static readonly minLength = 30000; // 30 seconds\n private static readonly maxLength = 86400000; // 24 hours\n private static readonly rangeThreshold = 14400000; // 4 hours\n private static readonly autoScrollThreshold = 0.05; // 5%\n private static readonly liveThreshold = 0.1; // 10%\n private static readonly autoscrollBuffer = 5000; // 5 seconds\n private static readonly cursorThumbWidth = 10; // on hover, the thumb is 10px wide\n private static readonly livePopupTime = 6000;\n\n // #endregion\n\n // #region Properties\n @ViewChild('canvas') public canvas!: ElementRef;\n @ViewChild('ticks') public ticks!: ElementRef;\n @ViewChild('thumb') public thumb!: ElementRef;\n @ViewChild('tooltip') public tooltip!: ElementRef;\n @ViewChild('maindiv')\n public set maindivContent(child: ElementRef | undefined) {\n if (this.maindiv) {\n this.maindiv.removeEventListener('wheel', this.onMouseWheelHandler);\n }\n this.maindiv = child?.nativeElement as HTMLCanvasElement | undefined;\n if (this.maindiv) {\n // do not use the passive event handler in that case because we want to stopPropagation()\n this.maindiv.addEventListener('wheel', this.onMouseWheelHandler, { passive: false });\n }\n }\n\n public readonly TextFlavor = TextFlavor;\n\n public get allowPlayback(): boolean {\n return this.allowPlaybackValue;\n }\n public set allowPlayback(value: boolean) {\n this.allowPlaybackValue = value;\n }\n\n // gets the camera entity\n public get cameraId(): IGuid {\n return this.cameraIdValue;\n }\n\n // gets the source entity (like a door)\n public get entityId(): IGuid | undefined {\n return this.entityIdValue;\n }\n\n @Input()\n public set player(player: IVideoPlayer | undefined) {\n this.videoPlayer = player;\n\n this.log('Hooking up the VideoPlayer callbacks');\n\n // IMPORTANT, setup the video player outside Angular to prevent change detection\n this.zone.runOutsideAngular(() => {\n if (this.videoPlayer) {\n this.videoPlayer.onPlayerStateChanged.register((x) => this.onPlayerStateChanged(x));\n this.videoPlayer.onPlayerModeChanged.register((x) => this.onPlayerModeChanged(x));\n this.videoPlayer.onLoopChanged.register((x) => this.onLoopChanged(x));\n this.videoPlayer.onTimelinePart.register((x) => this.onTimelinePart(x));\n\n this.refresh(this.cameraIdValue, this.entityIdValue, this.timezone);\n this.queryParts();\n }\n });\n }\n\n // #enregion\n\n // #region Fields\n\n public startTime!: Date;\n public endTime!: Date;\n public currentTime!: Date;\n public currentX = 0;\n public loopThumbs: { left?: number; right?: number } = {};\n public isLoopEnabled = false;\n public captureMouse = -1;\n public isLive: boolean | undefined;\n public cursorTime = '';\n public tooltips: TooltipItem[] = [];\n public currentThumbnail: ThumbnailPart | undefined;\n public cursorX = 0;\n public tooltipX = 0;\n public tooltipArrowOffset = '50%';\n public showTooltip = false;\n public isMouseOver = false;\n public isPanning = false;\n\n private timezone: ITimezoneInfo | undefined;\n private queriedStart!: Date;\n private queriedEnd!: Date;\n private entityIdValue!: IGuid | undefined;\n private cameraIdValue!: IGuid;\n private currentState!: PlayerState;\n private loopTime: { start?: Date; end?: Date } = {};\n private currentHeight = 0;\n private currentWidth = 0;\n private isAutoTooltip = false;\n private isCompressible = false;\n private isExpandable = false;\n private isOverDiv = false;\n private isOverTooltip = false;\n\n private maindiv?: HTMLCanvasElement;\n\n // flag indicating if we have already setup the timeline providers\n private isTimelineProvidersSet = false;\n\n // determine if we were playing or paused before a seek\n private wasPlaying = false;\n\n // Indicates if the loop is expanding with the right thumb\n // (otherwise, expanding with the left thumb)\n private isLoopExpandingWithRightThumb = true;\n private queryControllerDebounce = debounce(() => {\n this.queryParts();\n }, 3000);\n\n private hideTooltipDebounce2s = debounce(() => {\n if (!this.isMouseOver) {\n this.hideTooltip();\n }\n }, 2000);\n\n private hideTooltipDebounceLive = debounce(() => {\n if (this.isAutoTooltip) {\n this.hideTooltip();\n }\n }, TimelineComponent.livePopupTime);\n\n private currentTickInterval!: { ms: number; ticks: number };\n private tickIntervals: { ms: number; ticks: number }[] = [\n { ms: -1, ticks: 0 }, // invalid\n { ms: 1, ticks: 5 }, // 5 ms\n { ms: 10, ticks: 5 }, // 50 ms\n { ms: 1000, ticks: 5 }, // 5 s\n { ms: 5000, ticks: 6 }, // 30 s\n { ms: 10000, ticks: 6 }, // 1 min\n { ms: 30000, ticks: 4 }, // 2 min\n { ms: 60000, ticks: 5 }, // 5 min\n { ms: 120000, ticks: 5 }, // 10 min\n { ms: 300000, ticks: 6 }, // 30 min\n { ms: 600000, ticks: 6 }, // 1 hr\n { ms: 1800000, ticks: 4 }, // 2 hr\n { ms: 3600000, ticks: 6 }, // 6 hr\n { ms: 7200000, ticks: 6 }, // 12 hr\n { ms: 14400000, ticks: 6 }, // 1 d\n { ms: 28800000, ticks: 6 }, // 2 d\n { ms: 86400000, ticks: 7 }, // 1 w\n ];\n\n private sequenceEvents: TimelineEvent[] = [];\n private thumbnailEvents: ThumbnailPart[] = [];\n private parts: ITimelinePart[] = [];\n private isDragging = false;\n private isDraggingLoop = false;\n private mouseDownPosition?: number = undefined;\n private initialMovingTime?: Date;\n private videoPlayer?: IVideoPlayer;\n private zoomFactor = 2;\n private lastAutoRedraw!: Date;\n private currentProviders = new GuidSet();\n\n // privileges\n private allowPlaybackValue = false;\n\n // flag used to enable logs for more diagnostics\n private enableLog = false;\n\n private debouncedDraw = debounce(() => {\n this.draw();\n this.replaceThumbs();\n }, 50);\n\n // #endregion\n\n // #region Constructors\n\n constructor(\n private zone: NgZone,\n private timeService: TimeService,\n private timelineService: TimelineService,\n private navigationService: NavigationService,\n trackingService: TrackingService,\n private loggerService: LoggerService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(trackingService);\n\n this.initialize();\n\n // subscribe to the RenderingHelper that is used to reduce the number of Angular's change detection\n RenderingHelper.onRefresh.pipe(untilDestroyed(this)).subscribe(() => this.onRenderingRefresh());\n timelineService.providersChanged.pipe(untilDestroyed(this)).subscribe(() => this.onProvidersChanged());\n }\n\n // #endregion\n\n //#region Ng...\n\n ngOnDestroy() {\n // clearing the following property will unsubcribe it's event listener\n this.maindivContent = undefined;\n }\n\n //#endregion\n\n // #region Methods\n\n // #region Drawing\n\n public draw(): void {\n const canvas = this.canvas?.nativeElement as HTMLCanvasElement | undefined | null;\n if (!canvas) {\n return;\n }\n\n // ensure we have a valid length\n const length = moment(this.endTime).diff(this.startTime);\n if (length <= 0) {\n return;\n }\n\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n this.currentWidth = ctx.canvas.scrollWidth;\n this.currentHeight = ctx.canvas.scrollHeight;\n canvas.width = this.currentWidth;\n\n // apply a different style depending on mouse over\n if (this.isMouseOver) {\n this.currentHeight = 8;\n } else {\n this.currentHeight = 4;\n }\n canvas.height = this.currentHeight;\n\n // draw unknown background\n ctx.fillStyle = 'gray';\n ctx.fillRect(0, 0, this.currentWidth, this.currentHeight);\n\n // draw sequences background\n if (this.queriedStart && this.queriedEnd) {\n ctx.fillStyle = 'black';\n let queryStartX = this.getPercentageFromTime(this.queriedStart) * this.currentWidth;\n queryStartX = this.limitWithinRange(queryStartX, 0, this.currentWidth);\n let queryEndX = this.getPercentageFromTime(this.queriedEnd) * this.currentWidth;\n queryEndX = this.limitWithinRange(queryEndX, 0, this.currentWidth);\n ctx.fillRect(queryStartX, 0, queryEndX, this.currentHeight);\n }\n\n // draw sequence events first\n ctx.fillStyle = 'white';\n this.drawEvents(ctx, this.sequenceEvents, false);\n\n // draw parts\n this.drawParts(ctx);\n\n // draw ticks\n this.drawTicks(length);\n\n // draw future\n const startX = this.getCurrentTimeX();\n const stopX = this.currentWidth - startX;\n ctx.fillStyle = 'purple';\n ctx.fillRect(startX, 0, stopX, this.currentHeight);\n\n // draw selection\n ctx.fillStyle = '#C0C0C0'; // Silver\n ctx.globalAlpha = 0.7;\n if (this.loopThumbs.left) {\n ctx.fillRect(0, 0, this.loopThumbs.left, this.currentHeight);\n }\n if (this.loopThumbs.right) {\n ctx.fillRect(this.loopThumbs.right, 0, this.currentWidth, this.currentHeight);\n }\n }\n\n public drawEvents(ctx: CanvasRenderingContext2D, events: TimelineEvent[], isPonctual: boolean): void {\n for (const event of events) {\n let posStartPercent = this.getPercentageFromTime(event.time);\n\n // ensure events starting before start time are drawn from x=0\n if (posStartPercent < 0) {\n if (isPonctual) {\n continue;\n } else {\n posStartPercent = 0;\n }\n }\n\n const startX = posStartPercent * this.currentWidth;\n let stopX = startX + 2;\n\n if (event.duration) {\n const endTime = moment(event.time).add(event.duration, 'seconds').toDate();\n const posEndPercent = this.getPercentageFromTime(endTime);\n stopX = posEndPercent * this.currentWidth;\n }\n\n // ensure events ending after end time stop at the end of the timeline\n if (stopX > this.currentWidth) {\n stopX = this.currentWidth;\n }\n\n /*\n // if we need to apply transparency\n let alpha = 1.0;\n ctx.globalAlpha = alpha;\n */\n\n // only draw if it's in the timeline boundaries\n if (startX >= 0 && startX <= this.currentWidth && stopX >= 0 && stopX <= this.currentWidth) {\n ctx.fillRect(startX, 0, stopX - startX, this.currentHeight);\n }\n }\n\n // restore the alpha\n ctx.globalAlpha = 1.0;\n }\n\n public drawParts(ctx: CanvasRenderingContext2D): void {\n // draw using priority\n const sorted = this.parts.sort((a, b) => {\n if (a.priority < b.priority) {\n return -1;\n }\n if (a.priority > b.priority) {\n return 1;\n }\n return 0;\n });\n\n for (const part of sorted) {\n // parse the renderer\n ctx.fillStyle = 'orange';\n const tokens = this.extractTokens(part);\n if (tokens) {\n const color = tokens.get('color');\n if (color) {\n ctx.fillStyle = color;\n }\n }\n\n const posStartPercent = this.getPercentageFromTime(part.timestamp);\n\n const startX = posStartPercent * this.currentWidth;\n let stopX = startX + 2;\n\n if (part.duration && part.duration > 0) {\n const endTime = moment(part.timestamp).add(part.duration, 'ms').toDate();\n const posEndPercent = this.getPercentageFromTime(endTime);\n stopX = posEndPercent * this.currentWidth;\n }\n\n // ensure events that occurred completly before x=0 are not drawn\n if (startX < 0 && stopX < 0) {\n continue;\n } else if (stopX > this.currentWidth) {\n // ensure events ending after end time stop at the end of the timeline\n stopX = this.currentWidth;\n } else if (stopX - startX < 2) {\n // ensure we are at least 2 pixels wide\n stopX = startX + 2;\n }\n\n // only draw if it's in the timeline boundariess\n if (startX >= 0 && startX <= this.currentWidth && stopX >= 0 && stopX <= this.currentWidth) {\n ctx.fillRect(startX, 0, stopX - startX, this.currentHeight);\n }\n }\n }\n\n public drawTicks(length: number): void {\n const ticks = this.ticks.nativeElement as HTMLCanvasElement | null;\n if (!ticks) {\n return;\n }\n\n const ticskHeight = 12;\n const ctx = ticks.getContext('2d') as CanvasRenderingContext2D;\n ticks.width = this.currentWidth;\n ticks.height = ticskHeight;\n\n this.updateTickSpacing();\n\n // draw ticks\n const ms = this.currentTickInterval.ms;\n const majorTicks = this.currentTickInterval.ticks;\n // const showMilliseconds = ms < 200;\n const showSeconds = ms < 10000;\n const showMinutes = ms < 600000;\n const showHours = ms < 14400000;\n const is24HourFormat = this.timeService.is24HourFormat;\n\n let timeFormat = 'hA';\n if (showHours && !showMinutes && !showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH') : (timeFormat = 'h');\n } else if (showHours && showMinutes && !showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH:mm') : (timeFormat = 'h:mm');\n } else if (showHours && showMinutes && showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH:mm:ss') : (timeFormat = 'h:mm:ss');\n }\n\n const tickCount = length / ms;\n\n // draw every tick\n ctx.beginPath();\n ctx.lineWidth = 0.5;\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n ctx.strokeStyle = '#000000';\n ctx.fillStyle = 'white';\n ctx.font = '11px Arial';\n ctx.textAlign = 'left';\n\n let currentTimestamp = moment(this.startTime);\n for (let i = 0; i <= tickCount; ++i) {\n currentTimestamp.add(ms, 'ms');\n const percentX = this.getPercentageFromTime(currentTimestamp);\n const x = Math.floor(percentX * this.currentWidth) + 0.5;\n let y = ticskHeight / 2;\n let lineHeight = ticskHeight / 2;\n\n // detect major ticks\n const isMajorTick = majorTicks !== 0 && i % majorTicks === 0;\n if (isMajorTick) {\n y = 0;\n lineHeight = ticskHeight;\n }\n\n ctx.moveTo(x, y);\n ctx.lineTo(x, y + lineHeight);\n ctx.stroke();\n }\n\n // draw start time\n const startTimeText = this.timeService.formatTime(this.startTime, 'ddd D', true, false, this.timezone);\n ctx.fillText(startTimeText, 2, 11);\n // const startTextWidth = ctx.measureText(startTimeText);\n\n // draw total time\n ctx.textAlign = 'right';\n const totalMs = moment(this.endTime).diff(this.startTime);\n const totalTimeText = '(' + this.timeService.formatDuration(totalMs) + ')';\n ctx.fillText(totalTimeText, this.currentWidth - 3, 11);\n const totalTextWidth = ctx.measureText(totalTimeText);\n const totalTextX = this.currentWidth - 3 - totalTextWidth.width;\n\n // draw timestamps\n currentTimestamp = moment(this.startTime);\n for (let i = 1; i <= tickCount - 1; ++i) {\n currentTimestamp.add(ms, 'ms');\n const percentX = this.getPercentageFromTime(currentTimestamp);\n const x = Math.floor(percentX * this.currentWidth) + 0.5;\n\n // detect major ticks\n const isMajorTick = majorTicks !== 0 && i % majorTicks === 0;\n // skip the first time because we will display date\n if (isMajorTick) {\n const text = this.timeService.formatTime(currentTimestamp, timeFormat, true, false, this.timezone);\n const textWidth = ctx.measureText(text).width;\n const textX = x + 3;\n // ensure the text doesn't overlap\n if (textX + textWidth < totalTextX + 6) {\n ctx.fillText(text, textX, 11);\n }\n }\n }\n }\n\n public compress(origin: number): void {\n if (!this.isCompressible) {\n return;\n }\n\n const length = moment(this.endTime).diff(this.startTime);\n let newLength = length / this.zoomFactor;\n\n // we cannot go under 30 seconds range\n if (newLength < TimelineComponent.minLength) {\n newLength = TimelineComponent.minLength;\n }\n\n let start: Date | undefined;\n let end: Date | undefined;\n // if we have a looping range, limit the compression\n if (this.isLoopEnabled) {\n const loopLength = moment(this.loopTime.end).diff(this.loopTime.start);\n const threshold = (loopLength * TimelineComponent.autoScrollThreshold) / 2;\n if (threshold > 0) {\n start = moment(this.loopTime.start).subtract(threshold, 'ms').toDate();\n end = moment(this.loopTime.end).add(threshold, 'ms').toDate();\n }\n } else {\n const offset = newLength * origin;\n const centerTime = moment(this.startTime).add(length * origin, 'ms');\n start = centerTime.clone().subtract(offset, 'ms').toDate();\n end = centerTime\n .clone()\n .add(newLength - offset, 'ms')\n .toDate();\n }\n\n if (start && end) {\n this.moveTo(start, end);\n this.replaceThumbs();\n this.draw();\n this.updateCursorTime();\n }\n }\n\n public expand(origin: number): void {\n if (!this.isExpandable) {\n return;\n }\n\n const length = moment(this.endTime).diff(this.startTime);\n let newLength = length * this.zoomFactor;\n\n // we cannot go over 24 hours\n if (newLength > TimelineComponent.maxLength) {\n newLength = TimelineComponent.maxLength;\n }\n\n const offset = newLength * origin;\n const centerTime = moment(this.startTime).add(length * origin, 'ms');\n const start = centerTime.clone().subtract(offset, 'ms').toDate();\n const end = centerTime\n .clone()\n .add(newLength - offset, 'ms')\n .toDate();\n this.moveTo(start, end);\n this.replaceThumbs();\n this.draw();\n this.updateCursorTime();\n }\n\n public moveTo(start: Date, end: Date): void {\n this.startTime = start;\n this.endTime = end;\n\n this.draw();\n\n this.updateZoomAvailability();\n\n // debounce the queries to the controller\n this.queryControllerDebounce();\n }\n\n public clearLoop(): void {\n this.videoPlayer?.clearLoop();\n }\n\n // #region Queries\n\n public queryParts(): void {\n // remove all the non-persistent parts\n this.parts = this.parts.filter((x) => x.isPersistent);\n\n // query +/- 4 hours before and after the range\n this.queriedStart = moment(this.startTime).subtract(TimelineComponent.rangeThreshold, 'ms').toDate();\n this.queriedEnd = moment(this.endTime).add(TimelineComponent.rangeThreshold, 'ms').toDate();\n this.log(`Applying timeline range ${this.queriedStart.toString()} to ${this.queriedEnd.toString()}`);\n\n this.zone.runOutsideAngular(() => {\n this.videoPlayer?.timelineProvider?.setTimelineRange(this.queriedStart, this.queriedEnd);\n });\n }\n\n // refresh the timeline parts\n public refresh(cameraId: IGuid, entityId?: IGuid, timezone?: ITimezoneInfo): void {\n this.cameraIdValue = cameraId;\n this.entityIdValue = entityId;\n this.timezone = timezone;\n\n this.setupTimelineProviders().fireAndForget();\n }\n\n public getLoop(): { start: Date | undefined; end: Date | undefined } {\n return { start: this.loopTime.start, end: this.loopTime.end };\n }\n\n public setLoop(start: Date, end: Date): void {\n if (start > end) {\n this.log('Loop starts after it ends. Ensure \"start\" is chronologically before \"end\"');\n return;\n }\n this.loopTime.start = start;\n this.loopTime.end = end;\n this.videoPlayer?.setLoop(start, end);\n }\n\n //#endregion\n\n // #region Initialization code\n\n private initialize() {\n // the inital range is 5 minutes (95% | 5%)\n const now = Date.now();\n const initStartTime = moment(now).subtract('285', 's').toDate();\n const initEndTime = moment(now).add('15', 's').toDate();\n this.moveTo(initStartTime, initEndTime);\n }\n\n // #endregion\n\n private extractTokens(part: ITimelinePart): Map | undefined {\n let result: Map | undefined;\n\n if (part.renderer) {\n const tokens = part.renderer.split(';');\n if (tokens && tokens.length > 0) {\n result = new Map();\n\n for (const token of tokens) {\n const kv = token.split(':');\n if (kv && kv.length >= 2) {\n const key = kv[0].toLowerCase().trimLeft();\n const value = kv[1].trimLeft();\n result.set(key, value);\n }\n }\n }\n }\n return result;\n }\n\n // #endregion\n\n private autoRedraw() {\n const now = new Date(Date.now());\n\n // suspend auto redraw when holding the mouse down\n if (this.mouseDownPosition) {\n return;\n }\n\n // esnrue the user is not currently dragging something\n if (this.isDragging || this.isDraggingLoop) {\n return;\n }\n\n // ensure we are not updating more than twice a second\n if (this.lastAutoRedraw) {\n const diff = moment(now).diff(this.lastAutoRedraw);\n if (diff <= 500) {\n return;\n }\n }\n\n // update the bounds\n const length = moment(this.endTime).diff(this.startTime);\n const offset = length * TimelineComponent.liveThreshold;\n\n // compute new begin and end time\n const newStartTime = moment(now).subtract(length, 'ms').add(offset, 'ms');\n const newEndTime = moment(now).add(offset, 'ms');\n\n const diffPercentage = (newStartTime.diff(this.startTime) / length) * 100;\n if (Math.abs(diffPercentage) > TimelineComponent.liveThreshold) {\n this.startTime = newStartTime.toDate();\n this.endTime = newEndTime.toDate();\n\n // now that we receive live events, update the queried end\n this.queriedEnd = this.endTime;\n\n // snap the tooltip to it's timestamp\n if (this.isAutoTooltip && this.tooltips.length > 0) {\n const x = this.getPercentageFromTime(this.tooltips[0].timestamp) * this.currentWidth;\n this.positionTooltip(x);\n }\n\n this.draw();\n this.replaceThumbs();\n this.lastAutoRedraw = now;\n }\n }\n\n private autoScroll() {\n const length = moment(this.endTime).diff(this.startTime);\n\n // handle forward auto-scroll\n const maxTime = moment(this.currentTime)\n .subtract(length * TimelineComponent.autoScrollThreshold, 'ms')\n .toDate();\n if (this.currentTime > maxTime || this.currentTime < this.startTime) {\n const start = moment(this.currentTime)\n .subtract(length * TimelineComponent.autoScrollThreshold, 'ms')\n .toDate();\n const end = moment(this.currentTime)\n .add(length * (1 - TimelineComponent.autoScrollThreshold), 'ms')\n .toDate();\n\n this.moveTo(start, end);\n }\n }\n\n private containsPart(part: ITimelinePart): boolean {\n let result = false;\n this.parts.forEach((itr) => {\n if (itr.id.equals(part.id)) {\n result = true;\n return;\n }\n });\n return result;\n }\n\n private getCurrentTimeX(): number {\n const now = new Date(Date.now());\n const posStartPercent = this.getPercentageFromTime(now);\n return posStartPercent * this.currentWidth;\n }\n\n private getHoverEvents(): TooltipItem[] {\n const results: TooltipItem[] = [];\n const pixelOffset = 5.5; // this represent the pixel range around the event to display the tooltip\n\n // parts\n const display: { offset: number; part: ITimelinePart }[] = [];\n for (const part of this.parts) {\n // ensure there is a tooltip to display\n if (part.toolTip) {\n const eventPercentX = this.getPercentageFromTime(part.timestamp);\n if (eventPercentX >= 0 && eventPercentX <= this.currentWidth) {\n const left = eventPercentX * this.currentWidth;\n const offset = left - this.cursorX;\n if (Math.abs(offset) <= pixelOffset) {\n display.push({ offset, part });\n }\n }\n }\n }\n\n // JDT - TODO : sort by offset\n display.forEach((d) => {\n const item = new TooltipItem(this.navigationService, d.part.timestamp);\n const tooltip = d.part.toolTip;\n if (tooltip) {\n // ensure we are able to load the tooltip\n if (item.loadFrom(tooltip)) {\n results.push(item);\n }\n }\n });\n\n return results;\n }\n\n private getThumbnail(x: number): ThumbnailPart | undefined {\n const timestamp = this.getTimeFromPercentage(x / this.currentWidth);\n\n for (const thumb of this.thumbnailEvents) {\n if (timestamp >= thumb.timestamp) {\n const endTime = moment(thumb.timestamp).add(thumb.duration, 'ms').toDate();\n if (timestamp <= endTime) {\n return thumb;\n }\n }\n }\n }\n\n private getPercentageFromTime(time: MomentInput): number {\n // 1pm -> 2pm (7600 seconds). 2pm - 1:45pm (15 minutes = 900 seconds)\n // 900/7600 ~ 12% | 100 - 12 ~ 88% | return 88%\n const totalDifference = this.getTotalDifference();\n if (totalDifference < 1) {\n // who knows what will happen if we divide by 0\n return -1;\n }\n\n const timeDifference = moment(time).diff(this.startTime);\n return timeDifference / totalDifference;\n }\n\n private getTotalDifference(): number {\n return moment(this.endTime).diff(this.startTime);\n }\n\n private getTimeFromPercentage(percentage: number): Date {\n const totalDifference = this.getTotalDifference();\n const result = totalDifference * percentage;\n return moment(this.startTime).add(result, 'ms').toDate();\n }\n\n private hideTooltip() {\n this.showTooltip = false;\n if (this.isAutoTooltip) {\n this.tooltips.length = 0;\n this.isAutoTooltip = false;\n }\n }\n\n private limitWithinRange(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max);\n }\n\n private log(msg: string) {\n if (this.enableLog) {\n this.loggerService.traceInformation('Timeline: ' + msg);\n }\n }\n\n // called when we switch from playback to live\n private onLive() {\n this.clearLoop();\n this.autoRedraw();\n // in live, the cursor is always at 90%\n this.currentX = (1 - TimelineComponent.liveThreshold) * this.currentWidth;\n }\n\n // called when we switch from live to playback\n private onPlayback() {}\n\n // reposition the tooltip at the specified position and ensure it has a valid position\n private positionTooltip(x: number) {\n let newX = x;\n if (this.tooltip && this.maindiv) {\n const tooltipHalfWidth = (this.tooltip.nativeElement as HTMLElement).offsetWidth / 2;\n const totalWidth = this.maindiv.offsetWidth;\n\n // apply constraint\n if (x + tooltipHalfWidth > totalWidth) {\n const offsetX = tooltipHalfWidth * 2 - (totalWidth - x);\n newX = totalWidth - tooltipHalfWidth;\n this.tooltipArrowOffset = `${offsetX}px`;\n } else {\n this.tooltipArrowOffset = '50%';\n }\n\n this.tooltipX = newX;\n }\n }\n\n // replace the thumbs positions on the canvas\n private replaceThumbs(cursor = true, loop = true) {\n if (cursor) {\n this.currentX = this.getPercentageFromTime(this.currentTime) * this.currentWidth;\n }\n\n if (loop) {\n if (this.loopTime.start) {\n this.loopThumbs.left = this.getPercentageFromTime(this.loopTime.start) * this.currentWidth;\n }\n if (this.loopTime.end) {\n this.loopThumbs.right = this.getPercentageFromTime(this.loopTime.end) * this.currentWidth;\n }\n }\n }\n\n private setIsMouseOver() {\n if (this.isOverDiv) {\n this.isMouseOver = true;\n this.draw();\n\n this.showTooltip = true;\n this.hideTooltipDebounce2s?.cancel();\n } else if (this.isOverTooltip) {\n this.showTooltip = true;\n this.hideTooltipDebounce2s?.cancel();\n } else {\n this.isMouseOver = false;\n this.hideTooltipDebounce2s();\n this.draw();\n }\n }\n\n // apply the list of timeline providers to query\n private async setupTimelineProviders(): Promise {\n // ensure the player is started before applying the timeline providers\n if (!this.videoPlayer || !this.videoPlayer.isStarted || !this.cameraIdValue) return;\n\n this.isTimelineProvidersSet = true;\n let refresh = false;\n const entities: IGuid[] = [];\n if (this.cameraIdValue) {\n entities.push(this.cameraIdValue);\n }\n if (this.entityIdValue) {\n entities.push(this.entityIdValue);\n }\n\n const addProviders = new GuidSet();\n this.timelineService.activeProviders.forEach((x) => addProviders.add(x));\n\n const removeProviders = new GuidSet();\n this.currentProviders.forEach((id) => {\n // if we had this provider but doesnt need it anymore\n if (!addProviders.has(id)) {\n removeProviders.add(id);\n refresh = true;\n } else {\n // we already have this provider, remove it from the list to add\n addProviders.delete(id);\n refresh = true;\n }\n });\n\n const toAdd = Array.from(addProviders);\n if (toAdd.length > 0) {\n addProviders.forEach((x) => this.currentProviders.add(x));\n await this.videoPlayer.addTimelineProviders(toAdd, true, entities);\n }\n\n const toRemove = Array.from(removeProviders);\n if (toRemove.length > 0) {\n removeProviders.forEach((x) => this.currentProviders.delete(x));\n await this.videoPlayer.addTimelineProviders(toRemove, false, entities);\n }\n\n // refresh everything\n if (refresh) {\n this.log(`Refreshing after provider changes: added=${addProviders.size}, removed=${removeProviders.size}`);\n\n this.parts.length = 0;\n this.queryParts();\n }\n\n let logText = 'List of active providers:\\r\\n';\n this.currentProviders.forEach((id) => {\n logText += id.toString() + '\\r\\n';\n });\n this.log(logText);\n }\n\n private updateCursorTime() {\n const timestamp = this.getTimeFromPercentage(this.cursorX / this.currentWidth);\n let timestampText = '';\n // ensure the timestamp is valid\n if (!isNaN(timestamp.valueOf())) {\n timestampText = this.timeService.formatTime(timestamp, 'LTS', true, true, this.timezone);\n }\n this.cursorTime = timestampText;\n }\n\n private updateTickSpacing() {\n const length = moment(this.endTime).diff(this.startTime);\n const tickSpacing = (10 * length) / this.currentWidth;\n\n // find the best tick interval for the current time range\n for (let i = 0; i < this.tickIntervals.length; ++i) {\n if (i < this.tickIntervals.length - 1) {\n if (tickSpacing >= this.tickIntervals[i].ms && tickSpacing < this.tickIntervals[i + 1].ms) {\n this.currentTickInterval = this.tickIntervals[i + 1];\n break;\n }\n } else {\n this.currentTickInterval = this.tickIntervals[i];\n break;\n }\n }\n }\n\n private updateTime() {\n // ensure the player is started to prevent exceptions\n if (this.videoPlayer?.isStarted !== true) return;\n\n const frameTime = this.videoPlayer?.lastFrameTime;\n if (frameTime) {\n // only update the thumb position when not dragging\n if (!this.isDragging) {\n // always update the time because we can seek even when\n if (this.currentTime !== frameTime) {\n this.currentTime = frameTime;\n this.replaceThumbs(true, false);\n }\n\n // only update the rest when playing or rewinding\n if (this.currentState !== PlayerState.Playing && this.currentState !== PlayerState.Rewinding) {\n return;\n }\n\n // when live, auto redraw at the near-live position\n if (this.isLive) {\n // in live, ensure the loop is cleared\n if (!this.isDraggingLoop) {\n this.clearLoop();\n }\n this.autoRedraw();\n // in live, the cursor is always at 90%\n this.currentX = (1 - TimelineComponent.liveThreshold) * this.currentWidth;\n } else {\n this.currentX = this.getPercentageFromTime(this.currentTime) * this.currentWidth;\n\n // ensure we are not outside of the timeline's bounds\n const minX = TimelineComponent.liveThreshold * this.currentWidth;\n const maxX = (1 - TimelineComponent.liveThreshold) * this.currentWidth;\n if (this.currentX > maxX) {\n // autoscroll forward\n const total = this.getTotalDifference();\n const thres = total * TimelineComponent.liveThreshold + TimelineComponent.autoscrollBuffer;\n this.endTime = moment(this.currentTime).add(thres).toDate();\n this.startTime = moment(this.endTime).subtract(total).toDate();\n\n this.replaceThumbs(false, true);\n this.draw();\n } else if (this.currentX < minX) {\n // autoscroll backward\n const total = this.getTotalDifference();\n const thres = total * TimelineComponent.liveThreshold + TimelineComponent.autoscrollBuffer;\n this.startTime = moment(this.currentTime).subtract(thres).toDate();\n this.endTime = moment(this.startTime).add(total).toDate();\n\n this.replaceThumbs(false, true);\n this.draw();\n }\n\n // check if we need to requery\n if (frameTime < this.queriedStart || frameTime > this.queriedEnd) {\n this.queryParts();\n }\n }\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n\n private updateZoomAvailability() {\n const diff = this.getTotalDifference();\n const isBigEnough = diff > TimelineComponent.minLength; // 30 seconds\n const isSmallEnough = diff < TimelineComponent.maxLength; // 24 hours\n\n this.isCompressible = isBigEnough;\n this.isExpandable = isSmallEnough;\n }\n\n // #endregion\n\n /* eslint-disable @typescript-eslint/member-ordering */\n\n // #region Event Handlers\n\n private onMouseWheelHandler = (event: WheelEvent): void => {\n this.onMouseWheel(event);\n };\n\n public onResize(): void {\n this.debouncedDraw();\n }\n\n public onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onMouseUp(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onPointerDown(event: PointerEvent): void {\n // note the mouse down position because we are going to determine the action to perfrom on mouse move\n this.mouseDownPosition = event.offsetX;\n }\n\n public onPointerUp(event: PointerEvent): void {\n const x = event.offsetX;\n const timestamp = this.getTimeFromPercentage(x / this.currentWidth);\n let handled = false;\n\n // on right-click up, cancel operation\n if (event.button === 2 && !this.isDraggingLoop) {\n this.clearLoop();\n handled = true;\n } else if (this.isPanning) {\n // if we were pannig, cancel it\n this.isPanning = false;\n this.initialMovingTime = undefined;\n handled = true;\n } else if (this.isDragging) {\n // if we were dragging the time cursor\n this.isDragging = false;\n\n // ensure the date is valid\n if (!isNaN(timestamp.valueOf())) {\n const now = Date.now();\n const diff = moment(timestamp).diff(now);\n if (diff < 0) {\n this.videoPlayer?.seek(timestamp);\n\n // resume the video once the user completed it's seek\n // when user was paused when seeking, we want to stay paused as well like in the old WC.\n if (this.wasPlaying) {\n this.videoPlayer?.resume();\n this.wasPlaying = false;\n }\n } else {\n // we dragged in the future, go live\n this.videoPlayer?.playLive();\n }\n handled = true;\n }\n } else if (this.isDraggingLoop) {\n // if we were selecting the looping range\n this.updateMovingThumb(x);\n this.isDraggingLoop = false;\n if (this.loopThumbs.left !== undefined && this.loopThumbs.right !== undefined) {\n const loopStart = this.getTimeFromPercentage(this.loopThumbs.left / this.currentWidth);\n const loopEnd = this.getTimeFromPercentage(this.loopThumbs.right / this.currentWidth);\n this.setLoop(loopStart, loopEnd);\n handled = true;\n }\n } else {\n // no action is being performed, try a seek\n // ensure the date is valid\n if (!isNaN(timestamp.valueOf())) {\n this.videoPlayer?.seek(timestamp);\n handled = true;\n }\n }\n\n // if the click was handled, force a redraw\n if (handled) {\n this.draw();\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.captureMouse = -1; // release mouse capture\n }\n\n public onPointerMove(event: PointerEvent): void {\n if (!this.maindiv) return;\n\n // adapt the x position relative to the main div\n const divRect = this.maindiv.getBoundingClientRect();\n const x = event.x - divRect.x;\n this.cursorX = x;\n this.isAutoTooltip = false;\n this.positionTooltip(x);\n\n const timestamp = this.getTimeFromPercentage(this.cursorX / this.currentWidth);\n let handled = false;\n\n this.currentThumbnail = undefined;\n\n if (this.mouseDownPosition) {\n // detect mouse move threshold\n if (Math.abs(this.mouseDownPosition - event.offsetX) > 2) {\n // if left button down\n if (event.buttons === 1) {\n // if the user is not dragging, perform a seek\n if (!this.isDragging && !this.isPanning) {\n this.initialMovingTime = timestamp;\n this.isPanning = true;\n this.captureMouse = event.pointerId;\n handled = true;\n }\n } else if (event.buttons === 2) {\n this.clearLoop();\n\n // right button down, setup the looping range\n this.isDragging = false;\n this.isDraggingLoop = true;\n this.isLoopEnabled = true;\n this.loopThumbs = { left: this.mouseDownPosition, right: this.mouseDownPosition };\n this.captureMouse = event.pointerId;\n handled = true;\n }\n\n // clear the mouse down\n this.mouseDownPosition = undefined;\n }\n }\n\n // are we panning the timeline?\n if (this.isPanning) {\n const diff = moment(timestamp).diff(this.initialMovingTime);\n this.startTime = moment(this.startTime).subtract(diff, 'ms').toDate();\n this.endTime = moment(this.endTime).subtract(diff, 'ms').toDate();\n handled = true;\n } else {\n this.tooltips.length = 0;\n\n // are we over an event?\n const hoverEvents = this.getHoverEvents();\n if (hoverEvents) {\n hoverEvents.forEach((evt) => {\n this.tooltips.push(evt);\n });\n\n // snap the tooltip to it's timestamp\n if (this.isAutoTooltip && this.tooltips.length > 0) {\n const percentage = this.getPercentageFromTime(this.tooltips[0].timestamp) * this.currentWidth;\n this.positionTooltip(percentage);\n }\n }\n\n // retrieve the thumbail\n this.currentThumbnail = this.getThumbnail(this.cursorX);\n\n // move the thumb\n if (this.isDragging) {\n this.currentX = this.cursorX - TimelineComponent.cursorThumbWidth / 2;\n } else if (this.isDraggingLoop) {\n this.updateMovingThumb(this.cursorX);\n handled = true;\n }\n }\n\n this.updateCursorTime();\n\n if (handled) {\n this.draw();\n this.replaceThumbs();\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private updateMovingThumb(newPosition: number) {\n if (this.isLoopExpandingWithRightThumb) {\n this.loopThumbs.right = newPosition;\n } else {\n this.loopThumbs.left = newPosition;\n }\n\n if (this.loopThumbs.left === undefined || this.loopThumbs.right === undefined) {\n return;\n }\n\n const shouldSwapLeftAndRight = this.loopThumbs.left > this.loopThumbs.right;\n if (shouldSwapLeftAndRight) {\n this.isLoopExpandingWithRightThumb = !this.isLoopExpandingWithRightThumb;\n this.loopThumbs = { left: this.loopThumbs.right, right: this.loopThumbs.left };\n this.loopTime = { start: this.loopTime.end, end: this.loopTime.start };\n }\n }\n\n public onMouseEnter(): void {\n this.isOverDiv = true;\n this.setIsMouseOver();\n }\n\n public onMouseLeave(): void {\n this.isOverDiv = false;\n this.setIsMouseOver();\n }\n\n public onTooltipMouseEnter(): void {\n this.isOverTooltip = true;\n this.setIsMouseOver();\n }\n\n public onTooltipMouseLeave(): void {\n this.isOverTooltip = false;\n this.setIsMouseOver();\n }\n\n public onThumbnailClick(thumbnail: ThumbnailPart | undefined): void {\n if (thumbnail) {\n const timestamp = this.getTimeFromPercentage(this.cursorX / this.currentWidth);\n if (timestamp) {\n this.videoPlayer?.seek(timestamp);\n }\n }\n }\n\n public onMouseWheel(event: WheelEvent): void {\n const percentX = event.offsetX / this.currentWidth;\n\n if (event.deltaY > 0) {\n this.expand(percentX);\n } else if (event.deltaY < 0) {\n this.compress(percentX);\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onCursorMouseDown(event: PointerEvent): void {\n // ensure the user has playback privilege\n if (this.allowPlayback) {\n // if left button down\n if (event.buttons === 1) {\n if (!this.isDragging) {\n this.isDragging = true;\n\n this.wasPlaying = this.currentState === PlayerState.Playing;\n if (this.wasPlaying) {\n // pause video when starting a drag\n this.videoPlayer?.pause();\n }\n\n // start capturing events\n this.captureMouse = event.pointerId;\n }\n } else if (event.buttons !== 1) {\n this.isDragging = false;\n this.initialMovingTime = undefined;\n }\n }\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n private onRenderingRefresh() {\n this.updateTime();\n }\n\n private onLoopChanged(event: LoopChangeEvent) {\n this.loopTime.start = event.start;\n this.loopTime.end = event.end;\n this.isLoopEnabled = event.isLooping;\n\n if (!this.isLoopEnabled) {\n this.loopThumbs = { right: undefined, left: undefined };\n }\n }\n\n private onPlayerModeChanged(event: PlayerModeChangeEvent) {\n if (event) {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n const isLive = event.playerMode === PlayerMode.live;\n if (!this.isLive && isLive) {\n this.isLive = true;\n this.onLive();\n } else if (this.isLive && !isLive) {\n this.onPlayback();\n this.isLive = false;\n }\n\n this.updateTime();\n });\n }\n }\n\n private onPlayerStateChanged(event: PlayerStateChangeEvent) {\n if (event) {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.currentState = event.playerState;\n this.changeDetectorRef.markForCheck();\n });\n\n // We need to wait for the TimelineSession to be created server-side before applying the providers\n if (!this.isTimelineProvidersSet && event.playerState === PlayerState.Starting) {\n this.setupTimelineProviders().fireAndForget();\n }\n }\n }\n\n private onTimelinePart(update: TimelinePartEvent) {\n this.log(`Receiving ${update.parts.size} timeline parts.`);\n let newParts = 0;\n\n const now = new Date(Date.now());\n update.parts.forEach((part) => {\n if (part.sourceId.equals(TimelineProviderId.RecordingSequenceTimelineProviderId)) {\n const event = new TimelineEvent(part.timestamp, TimelineEventKind.RecordingSequence, part.duration, undefined);\n // prevent duplicates\n const found = find(this.sequenceEvents, event);\n if (!found) {\n this.sequenceEvents.push(event);\n newParts++;\n }\n } else {\n // first, ensure the provider is currently active\n if (this.currentProviders.has(part.sourceId)) {\n // prevent duplicates\n const contains = this.containsPart(part);\n if (contains === false) {\n // see if the part contains a thumbnail\n if (part.duration > 0) {\n const tokens = this.extractTokens(part);\n if (tokens) {\n const image = tokens.get('thumb');\n if (image) {\n const thumbPart = new ThumbnailPart(part.timestamp, part.duration, image);\n this.thumbnailEvents.push(thumbPart);\n }\n }\n }\n\n // if the part as a tooltip and is near-live (2 sec or less)\n const diff = moment(now).diff(part.timestamp);\n const tooltip = part.toolTip;\n if (tooltip && diff <= TimelineComponent.livePopupTime) {\n const item = new TooltipItem(this.navigationService, part.timestamp);\n // ensure we are able to load the tooltip\n if (item.loadFrom(tooltip)) {\n this.tooltips.push(item);\n }\n }\n this.parts.push(part);\n newParts++;\n }\n }\n }\n });\n\n if (newParts > 0) {\n this.log(`${newParts} new parts have been added.`);\n }\n\n // filter out obsolete tooltips\n this.tooltips = this.tooltips.filter((x) => {\n const diff = moment(now).diff(x.timestamp);\n return diff <= TimelineComponent.livePopupTime;\n });\n\n this.draw();\n\n /* JDT - Disable auto-popup for now\n // determine if we need to automatically popup the tooltip\n if (this.isLive && this.tooltips.length > 0) {\n const x = this.getPercentageFromTime(this.tooltips[0].timestamp) * this.currentWidth;\n this.isAutoTooltip = true;\n this.showTooltip = true;\n this.positionTooltip(x);\n this.hideTooltipDebounceLive(); // show for a couple of seconds\n }*/\n }\n\n // handler called when the user change the list of active providers\n private onProvidersChanged() {\n this.log('Providers settings changed.');\n\n // redraw\n this.draw();\n this.queryParts();\n\n this.setupTimelineProviders().fireAndForget();\n }\n\n // #endregion\n}\n","\n \n \n \n \n \n {{ item.text }}\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n {{ item.text }}\n \n \n\n\n\n \n \n \n \n \n \n {{ child.text }}\n \n \n \n \n \n \n \n \n \n \n\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { SelectionType } from '@genetec/gelato';\nimport { TreeItem } from '@modules/shared/interfaces/tree-item/tree-item';\n\n/**\n * @description this component is meant to be used hand in hand with the tree-data-source.directive.ts,\n * altough you should be able to nest this in a and it should work just fine.\n *\n * @example\n *\n * \n * \n * ;\n @Input() public dataSource?: TreeItem[];\n @Input() public set onItemClick(callback: (item: TreeItem, event: CustomEvent) => any) {\n if (callback) {\n this.itemCallbackToUse = callback;\n } else {\n this.itemCallbackToUse = this.sendNotInitializedWarning;\n }\n }\n\n public readonly SelectionType = SelectionType;\n\n /**\n * defaults to an empty function.\n *\n * @param item tree item to act upon\n */\n public itemCallbackToUse = (item: TreeItem, event: CustomEvent): void => {};\n\n public sendNotInitializedWarning = (item: TreeItem, event: CustomEvent): void => {\n console.warn('attach a appTreeItemClick function callback on the gen-tree.');\n };\n}\n","
\n \n \n \n \n
\n \n -\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n","import { ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { IGuid } from 'safeguid';\nimport { ContextTypes } from '../../../interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '../../../services/commands/commands.service';\nimport { CommandsUsage } from '../../../services/commands/commands-usage/commands-usage';\nimport { TrackingService } from '../../../services/tracking.service';\nimport { TrackedComponent } from '../../tracked/tracked.component';\nimport { SubscriptionCollection } from '../../../utilities/subscription-collection';\nimport { Content, DisplayContext } from '../../../interfaces/plugins/public/plugin-public.interface';\n@Component({\n selector: 'app-entity-commands-widget-host',\n templateUrl: './entity-commands-widget-host.component.html',\n styleUrls: ['./entity-commands-widget-host.component.scss'],\n})\nexport class EntityCommandsWidgetHostComponent extends TrackedComponent implements OnInit, OnDestroy, OnChanges {\n public static readonly DISPLAYED_ACTION_COUNT = 4;\n\n @Input() public stateTooltip?: string | null;\n @Input() public content?: Content | null;\n @Input() public excludedCommandIds: IGuid[] = [];\n @Input() public includedCommandIds: IGuid[] = [];\n @Input() public isOwnerLoading = false;\n @Input() public areButtonsSpaced = true;\n @Input() public set displayContext(value: DisplayContext | undefined) {\n this.displayContextValue = value;\n }\n\n public get displayContext(): DisplayContext | undefined {\n return this.displayContextValue;\n }\n\n public get DisplayContext(): typeof DisplayContext {\n return DisplayContext;\n }\n\n public isLoading = true;\n public commandsUsage!: CommandsUsage;\n\n public get maximumButtonCount(): number {\n return EntityCommandsWidgetHostComponent.DISPLAYED_ACTION_COUNT;\n }\n\n private areCommandsLoading = true;\n private displayContextValue?: DisplayContext;\n private subscriptions = new SubscriptionCollection();\n\n constructor(@Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService, trackingService: TrackingService, private cdRef: ChangeDetectorRef) {\n super(trackingService);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.isOwnerLoading !== 'undefined') {\n const change = changes.isOwnerLoading;\n if (!change.isFirstChange()) {\n this.refreshIsLoading();\n }\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions?.unsubscribeAll();\n super.ngOnDestroy();\n }\n\n public ngOnInit() {\n super.ngOnInit();\n this.createCommandsUsageAsync().fireAndForget();\n }\n\n public onAreCommandsLoadingChanged(areCommandsLoading: boolean): void {\n this.areCommandsLoading = areCommandsLoading;\n this.refreshIsLoading();\n }\n\n private async createCommandsUsageAsync() {\n if (this.content) {\n this.commandsUsage = await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: this.content }, this.includedCommandIds);\n this.cdRef.detectChanges();\n this.subscriptions.add(this.commandsUsage.subscribe());\n }\n }\n\n private refreshIsLoading() {\n // Execute later, otherwise Angular complains about ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.isLoading = this.isOwnerLoading || this.areCommandsLoading;\n this.cdRef.detectChanges();\n });\n }\n}\n","import { EventEntry, IEventEntry } from '@modules/shared/api/api';\nimport { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { IGuid } from 'safeguid';\nexport class MonitoredEntityEvent extends EventBase {\n public get monitoredEntityId(): IGuid {\n return this.getFieldGuid('MonitoredEntityId');\n }\n\n private eventEntry?: EventEntry;\n\n // Event\n public get event(): EventEntry {\n if (!this.eventEntry) {\n const eventEntryString = this.getField('Event');\n this.eventEntry = EventEntry.fromJS(eventEntryString);\n }\n\n return this.eventEntry;\n }\n}\n","import { defer, MonoTypeOperatorFunction, Observable } from 'rxjs';\nimport { finalize, tap } from 'rxjs/operators';\n\nexport enum FinalizeReason {\n Unsubscribe = 'unsubscribe',\n NoMoreSubscribers = 'noMoreSubscribers',\n Complete = 'complete',\n Error = 'error',\n}\n\n/**\n * Based on the finalize() operator, but will tell the reason why the observable was finalized.\n *\n * @example\n * observable$.pipe(\n * finalizeWithReason((reason) => {\n * if (reason === FinalizeReason.Complete) {\n * // observable was completed\n * } else if (reason === FinalizeReason.NoMoreSubscribers) {\n * // last observer unsubscribed from the observable\n * }\n * }))\n */\nexport const finalizeWithReason =\n (callback: (reason: FinalizeReason) => void): MonoTypeOperatorFunction =>\n (source$: Observable) => {\n let finalized = false;\n let numberOfSubscribers = 0;\n let errored = false;\n let completed = false;\n return defer(() => {\n numberOfSubscribers++;\n return source$.pipe(\n tap({\n error: () => (errored = true),\n complete: () => (completed = true),\n }),\n finalize(() => {\n if (finalized) {\n return;\n }\n numberOfSubscribers--;\n if (errored) {\n callback(FinalizeReason.Error);\n finalized = true;\n } else if (completed) {\n callback(FinalizeReason.Complete);\n finalized = true;\n } else if (numberOfSubscribers === 0) {\n callback(FinalizeReason.NoMoreSubscribers);\n } else {\n callback(FinalizeReason.Unsubscribe);\n }\n })\n );\n });\n };\n","import { Observable, Subject } from 'rxjs';\nimport { FinalizeReason, finalizeWithReason } from '../operators/finalize-with-reason';\n\n/**\n * Subject that will execute a callback when:\n * - there are no more observers subscribed (last observer unsubscribed)\n * - the subject was completed\n *\n * @example\n * const finalizeCallback = () => console.log(\"completed or no more subscribers\");\n * const finalizeCallbackSubject$ = new FinalizeCallbackSubject(finalizeCallback);\n *\n * const firstSubscriber = finalizeCallbackSubject$.subscribe();\n * const secondSubscriber = finalizeCallbackSubject$.subscribe();\n *\n * firstSubscriber.unsubscribe();\n * secondSubscriber.unsubscribe(); // finalizeCallback emitted\n * finalizeCallbackSubject$.complete(); // finalizeCallback emitted\n */\nexport class FinalizeCallbackSubject extends Subject {\n public autoCompleteObservable$: Observable;\n constructor(callbackWhenCompleteOrNoMoreSubscribers: () => void) {\n super();\n this.autoCompleteObservable$ = this.pipe(\n finalizeWithReason((reason) => {\n if (this.isCompleteOrNoMoreSubscribers(reason)) {\n callbackWhenCompleteOrNoMoreSubscribers();\n }\n })\n );\n }\n\n public override asObservable(): Observable {\n return this.autoCompleteObservable$;\n }\n\n private isCompleteOrNoMoreSubscribers(reason: FinalizeReason): boolean {\n return reason === FinalizeReason.Complete || reason === FinalizeReason.NoMoreSubscribers;\n }\n}\n","export class EventTypeData {\n public type: string;\n public subType: number;\n\n constructor(type: string, subType: number) {\n this.type = type;\n this.subType = subType;\n }\n}\n","export class EventHelper {\n private static awaitedEvents = new Map void>>();\n\n public static async tryCaptureEventAsync(event: Event): Promise {\n const promises = this.awaitedEvents.get(event);\n if (promises) {\n const promise = new Promise((resolve) => {\n promises.push(resolve);\n });\n return promise;\n } else {\n this.awaitedEvents.set(event, []);\n }\n return true;\n }\n\n public static releaseEvent(event: Event): void {\n const promises = this.awaitedEvents.get(event);\n if (promises) {\n if (event.cancelBubble) {\n while (promises.length > 0) {\n const resolve = promises.shift();\n if (resolve) {\n resolve(false);\n }\n }\n } else {\n const resolve = promises.shift();\n if (resolve) {\n resolve(!event.cancelBubble);\n }\n }\n\n if (promises.length === 0) {\n this.awaitedEvents.delete(event);\n }\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { fromEvent } from 'rxjs';\nimport { EventHelper } from '../modules/shared/utilities/event.helper';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class TouchEventHandler implements OnDestroy {\n private static CONTEXT_MENU_DELAY = 900;\n private static DOUBLE_CLICK_DELAY = 500;\n private static DRAG_IMAGE_OPACITY = 0.5;\n private static DRAG_MOVEMENT_THRESHOLD = 5;\n\n public dropTarget: Element | null = null;\n public dragSource: Element | null = null;\n\n private customDragImage: Element | null = null;\n private dataTransfer: DataTransfer | null = null;\n private dragImage: HTMLElement | null = null;\n private dragImageOffset: { x: number; y: number } = { x: 0, y: 0 };\n private isDoubleClicking = false;\n private isDragging = false;\n private isPressingDown = false;\n private lastClickTime = 0;\n private lastDragOverTarget: Element | null = null;\n private lastTouchMoveEvent: TouchEvent | null = null;\n private lastTouchStartEvent: TouchEvent | null = null;\n private timeouts: ReturnType[] = [];\n private touchStartPoint: { x: number; y: number } | null = null;\n\n constructor() {\n this.subscribeToHost();\n }\n\n public ngOnDestroy(): void {\n this.timeouts.forEach((timeout) => {\n clearTimeout(timeout);\n });\n }\n\n private copyStyle(source: Element, destination: Element) {\n destination.removeAttribute('id');\n destination.removeAttribute('class');\n destination.removeAttribute('style');\n destination.removeAttribute('draggable');\n\n if (source instanceof HTMLCanvasElement && destination instanceof HTMLCanvasElement) {\n const sourceCopy = source;\n const destinationCopy = destination;\n destinationCopy.width = sourceCopy.width;\n destinationCopy.height = sourceCopy.height;\n destinationCopy?.getContext('2d')?.drawImage(sourceCopy, 0, 0);\n }\n\n if (source instanceof HTMLElement && destination instanceof HTMLElement) {\n const style = getComputedStyle(source);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < style.length; i++) {\n const key = style[i];\n destination.style.setProperty(key, style.getPropertyValue(key));\n }\n destination.style.pointerEvents = 'none';\n for (let i = 0; i < source.children.length; i++) {\n this.copyStyle(source.children[i], destination.children[i]);\n }\n }\n }\n\n private createDragEvent(eventType: string, touchEvent: TouchEvent | null, target: EventTarget | null): DragEvent | null {\n if (touchEvent && target) {\n const touch = this.getTouch(touchEvent);\n if (touch) {\n const movement = this.getMouvement(touchEvent);\n const eventInit: DragEventInit = {\n altKey: touchEvent.altKey,\n bubbles: touchEvent.bubbles,\n button: 0,\n buttons: 1,\n cancelable: true,\n clientX: touch.clientX,\n clientY: touch.clientY,\n composed: touchEvent.composed,\n ctrlKey: touchEvent.ctrlKey,\n dataTransfer: this.dataTransfer,\n detail: touchEvent.detail,\n metaKey: touchEvent.metaKey,\n movementX: movement.x,\n movementY: movement.y,\n relatedTarget: target,\n screenX: touch.screenX,\n screenY: touch.screenY,\n shiftKey: touchEvent.shiftKey,\n view: touchEvent.view,\n };\n return new DragEvent(eventType, eventInit);\n }\n }\n return null;\n }\n\n private createMouseEvent(eventType: string, touchEvent: TouchEvent | null, target: EventTarget | null): MouseEvent | null {\n if (touchEvent && target) {\n const touch = this.getTouch(touchEvent);\n if (touch) {\n const movement = this.getMouvement(touchEvent);\n\n const eventInit: MouseEventInit = {\n altKey: touchEvent.altKey,\n bubbles: touchEvent.bubbles,\n button: 0,\n buttons: 1,\n cancelable: true,\n clientX: touch.clientX,\n clientY: touch.clientY,\n composed: touchEvent.composed,\n ctrlKey: touchEvent.ctrlKey,\n detail: touchEvent.detail,\n metaKey: touchEvent.metaKey,\n movementX: movement.x,\n movementY: movement.y,\n relatedTarget: target,\n screenX: touch.screenX,\n screenY: touch.screenY,\n shiftKey: touchEvent.shiftKey,\n view: touchEvent.view,\n };\n return new MouseEvent(eventType, eventInit);\n }\n }\n return null;\n }\n\n private createImage(event: TouchEvent): void {\n if (this.dragImage) {\n this.destroyImage();\n }\n\n const imageSource = this.customDragImage || this.dragSource;\n if (imageSource) {\n this.dragImage = imageSource.cloneNode(true) as HTMLElement;\n this.copyStyle(imageSource, this.dragImage);\n this.dragImage.style.top = this.dragImage.style.left = '-9999px';\n if (!this.customDragImage) {\n const rect = imageSource.getBoundingClientRect();\n const point = this.getPoint(event);\n if (point) {\n this.dragImageOffset = { x: point.x - rect.left, y: point.y - rect.top };\n }\n this.dragImage.style.opacity = TouchEventHandler.DRAG_IMAGE_OPACITY.toString();\n }\n this.moveImage(event);\n document.body.appendChild(this.dragImage);\n }\n }\n\n private destroyImage(): void {\n if (this.dragImage?.parentElement) {\n this.dragImage.parentElement.removeChild(this.dragImage);\n }\n this.dragImage = null;\n }\n\n private async endTouchAsync(event: TouchEvent, isCancel: boolean) {\n try {\n if (!this.isValidEvent(event)) {\n return;\n }\n\n if (await this.tryDispatchMouseEventAsync('mouseup', event, event.target)) {\n event.preventDefault();\n return;\n }\n\n if (!this.dragImage && this.lastTouchStartEvent && event.target === this.lastTouchStartEvent.target) {\n if (this.isDoubleClicking) {\n if (await this.tryDispatchMouseEventAsync('dblclick', this.lastTouchStartEvent, this.lastTouchStartEvent.target)) {\n event.preventDefault();\n return;\n }\n } else {\n // click already seems to be handled fine for touch events\n // await this.tryDispatchMouseEventAsync('click', this.lastTouchStartEvent, this.lastTouchStartEvent.target);\n this.lastClickTime = Date.now();\n }\n }\n\n this.destroyImage();\n if (this.lastTouchMoveEvent) {\n if (!isCancel) {\n await this.tryDispatchDragEventAsync('drop', this.lastTouchMoveEvent, this.dropTarget);\n }\n await this.tryDispatchDragEventAsync('dragend', this.lastTouchMoveEvent, this.dragSource);\n }\n } finally {\n this.reset();\n }\n }\n\n private getClosestDraggable(event: TouchEvent) {\n let element: Element | null = null;\n const target = event.target;\n if (target instanceof Element) {\n element = target;\n }\n\n while (element && !element.hasAttribute('draggable')) {\n element = element.parentElement as Element;\n }\n\n return element;\n }\n\n private getDropTarget(event: TouchEvent) {\n const point = this.getPoint(event);\n if (point) {\n let element = document.elementFromPoint(point.x, point.y);\n while (element && getComputedStyle(element).pointerEvents === 'none') {\n element = element.parentElement;\n }\n return element;\n }\n return null;\n }\n\n private getMouvement(touchEvent: TouchEvent) {\n if (touchEvent.touches.length === 1) {\n const touch = touchEvent.touches[0];\n\n let movementX = 0;\n let movementY = 0;\n if (touchEvent.changedTouches.length === 1) {\n const changeTouch = touchEvent.changedTouches[0];\n movementX = touch.screenX - changeTouch.screenX;\n movementY = touch.screenY - changeTouch.screenY;\n }\n\n return { x: movementX, y: movementY };\n }\n\n return { x: 0, y: 0 };\n }\n\n private getTotalMovement(event: TouchEvent) {\n if (this.touchStartPoint) {\n const p = this.getPoint(event);\n if (p) {\n return Math.abs(p.x - this.touchStartPoint.x) + Math.abs(p.y - this.touchStartPoint.y);\n }\n }\n\n return 0;\n }\n\n private getTouch(touchEvent: TouchEvent) {\n if (touchEvent.touches.length === 1) {\n const touch = touchEvent.touches[0];\n\n let movementX = 0;\n let movementY = 0;\n if (touchEvent.changedTouches.length === 1) {\n const changeTouch = touchEvent.changedTouches[0];\n movementX = touch.screenX - changeTouch.screenX;\n movementY = touch.screenY - changeTouch.screenY;\n }\n\n return touch;\n }\n\n return null;\n }\n\n private getPoint(event: TouchEvent, usePage = false) {\n if (event?.touches && event.touches.length === 1) {\n const touch = event.touches[0];\n return { x: usePage ? touch.pageX : touch.clientX, y: usePage ? touch.pageY : touch.clientY };\n }\n\n return null;\n }\n\n private async handleTouchCancelAsync(event: TouchEvent) {\n await this.endTouchAsync(event, true);\n }\n\n private async handleTouchEndAsync(event: TouchEvent) {\n await this.endTouchAsync(event, false);\n }\n\n private async handleTouchMoveAsync(event: TouchEvent) {\n try {\n if (!this.isValidEvent(event)) {\n return;\n }\n\n const target = this.getDropTarget(event);\n if (target) {\n if (await this.tryDispatchMouseEventAsync('mousemove', event, target)) {\n event.preventDefault();\n return;\n }\n\n if (!this.isDragging) {\n const delta = this.getTotalMovement(event);\n if (delta > TouchEventHandler.DRAG_MOVEMENT_THRESHOLD) {\n this.dataTransfer = new DataTransfer();\n this.dataTransfer.setDragImage = this.setDragImage.bind(this);\n this.isDragging = true;\n await this.tryDispatchDragEventAsync('dragstart', event, this.dragSource);\n this.createImage(event);\n await this.tryDispatchDragEventAsync('dragenter', event, target);\n this.dropTarget = target;\n }\n }\n\n if (this.isDragging) {\n event.preventDefault(); // prevent scrolling\n if (this.dropTarget && this.dropTarget !== target) {\n await this.tryDispatchDragEventAsync('dragleave', this.lastTouchMoveEvent, this.dropTarget);\n await this.tryDispatchDragEventAsync('dragenter', event, target);\n this.dropTarget = target;\n }\n\n this.moveImage(event);\n await this.tryDispatchDragEventAsync('dragover', event, target);\n }\n }\n } finally {\n this.lastTouchStartEvent = null;\n this.lastTouchMoveEvent = event;\n }\n }\n\n private async handleTouchStartAsync(event: TouchEvent) {\n if (!this.isValidEvent(event)) {\n return;\n }\n\n try {\n if (\n !this.isDoubleClicking &&\n Date.now() - this.lastClickTime < TouchEventHandler.DOUBLE_CLICK_DELAY &&\n this.lastTouchStartEvent &&\n this.lastTouchStartEvent.target === event.target\n ) {\n this.isDoubleClicking = true;\n return;\n }\n\n this.reset();\n const sourceElement = this.getClosestDraggable(event);\n if (sourceElement) {\n if (!(await this.tryDispatchMouseEventAsync('mousemove', event, event.target)) && !(await this.tryDispatchMouseEventAsync('mousedown', event, event.target))) {\n this.dragSource = sourceElement;\n this.touchStartPoint = this.getPoint(event);\n event.preventDefault();\n }\n }\n\n this.timeouts.push(\n setTimeout(async () => {\n if (event === this.lastTouchStartEvent && this.isPressingDown) {\n if (await this.tryDispatchMouseEventAsync('contextmenu', this.lastTouchStartEvent, this.lastTouchStartEvent.target)) {\n this.reset();\n }\n }\n }, TouchEventHandler.CONTEXT_MENU_DELAY)\n );\n } finally {\n this.lastTouchStartEvent = event;\n this.lastTouchMoveEvent = null;\n this.isPressingDown = true;\n }\n }\n\n private isValidEvent(event: Event): boolean {\n if (event && !event.defaultPrevented) {\n if (event instanceof TouchEvent) {\n return event.touches && event.touches.length < 2;\n }\n return true;\n }\n return false;\n }\n\n private moveImage(event: TouchEvent) {\n requestAnimationFrame(() => {\n if (this.dragImage) {\n const pt = this.getPoint(event, true);\n if (pt) {\n const s = this.dragImage.style;\n s.position = 'absolute';\n s.pointerEvents = 'none';\n s.zIndex = '999999';\n s.left = `${Math.round(pt.x - this.dragImageOffset.x)}px`;\n s.top = `${Math.round(pt.y - this.dragImageOffset.y)}px`;\n }\n }\n });\n }\n\n private reset(): void {\n this.destroyImage();\n this.isDragging = false;\n this.lastTouchMoveEvent = null;\n this.touchStartPoint = null;\n this.dataTransfer = null;\n this.dragSource = null;\n this.dropTarget = null;\n this.isDoubleClicking = false;\n this.isPressingDown = false;\n this.customDragImage = null;\n this.dragImageOffset = { x: 0, y: 0 };\n }\n\n private setDragImage(image: Element, x: number, y: number) {\n this.customDragImage = image;\n this.dragImageOffset = { x, y };\n }\n\n private subscribeToHost(): void {\n const touchStart$ = fromEvent(document, 'touchstart');\n const touchMove$ = fromEvent(document, 'touchmove');\n const touchEnd$ = fromEvent(document, 'touchend');\n const touchCancel$ = fromEvent(document, 'touchcancel');\n\n touchStart$.pipe(untilDestroyed(this)).subscribe(async (event: TouchEvent) => {\n await this.handleTouchStartAsync(event);\n });\n\n touchMove$.pipe(untilDestroyed(this)).subscribe(async (event: TouchEvent) => {\n await this.handleTouchMoveAsync(event);\n });\n\n touchEnd$.pipe(untilDestroyed(this)).subscribe(async (event: TouchEvent) => {\n await this.handleTouchEndAsync(event);\n });\n\n touchCancel$.pipe(untilDestroyed(this)).subscribe(async (event: TouchEvent) => {\n await this.handleTouchCancelAsync(event);\n });\n }\n\n private async tryDispatchDragEventAsync(eventType: string, event: TouchEvent | null, target: EventTarget | null) {\n const dragEvent = this.createDragEvent(eventType, event, target);\n return await this.tryDispatchEventAsync(dragEvent, target);\n }\n\n private async tryDispatchEventAsync(event: Event | null, target: EventTarget | null) {\n if (event && target) {\n target.dispatchEvent(event);\n await EventHelper.tryCaptureEventAsync(event);\n EventHelper.releaseEvent(event);\n return event.defaultPrevented;\n }\n return false;\n }\n\n private async tryDispatchMouseEventAsync(eventType: string, event: TouchEvent | null, target: EventTarget | null) {\n const mouseEvent = this.createMouseEvent(eventType, event, target);\n return await this.tryDispatchEventAsync(mouseEvent, target);\n }\n}\n","type ToErrorFunction = (message: any, originalError?: any) => Error;\n\n/**\n * Utility function that assures whatever is passed to it will be converted to an Error if it's not already.\n *\n * If it's not already an instance of an error, it will create an error with the argument as the message if it's a string, has a message property that is a string or is an object with a toString() method.\n *\n * Accepts an original error as second parameter, if set, the message of the first argument (the string or the error's message) will be pre-prended to the original error's message.\n *\n * Returns a \"Unknown error occured\" as message of an error when it can't be converted.\n *\n * **Example**\n * ```typescript\n * try {\n * throw new Error(\"original error\");\n * }\n * catch (e: unknown) {\n * // Will log \"Error fetching the map: original error\"\n * console.error(toError('Error fetching the map', e));\n * }\n *\n * ```\n *\n * @param error The argument to return as an Error\n * @returns The Error\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst toError: ToErrorFunction = (messageOrError: any, originalError?: any): Error => {\n if (originalError) {\n if (originalError) {\n const error = convertToError(messageOrError);\n const outerError = convertToError(originalError);\n return new Error(`${error.message}: ${outerError.message}`);\n }\n }\n\n return convertToError(messageOrError);\n};\n\nconst convertToError = (error?: any): Error => {\n if (!error) {\n return new Error('Unknown error occured');\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */\n if (error instanceof Error) {\n return error;\n } else if (typeof error === 'string') {\n return new Error(error);\n } else if (typeof error.message === 'string') {\n return new Error((error as Record<'message', string>).message);\n } else if (typeof error.toString === 'function') {\n const str = error.toString() as unknown;\n if (typeof str === 'string') {\n return new Error(str);\n }\n }\n\n return new Error('Unknown error occured');\n /* eslint-enable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */\n};\n\nexport { toError };\n","import { Inject, Injectable } from '@angular/core';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { WINDOW } from '@src/app/utilities';\nimport { LogSeverity } from 'RestClient/Client/Enumerations/LogSeverity';\nimport { Observable } from 'rxjs';\nimport { map, filter } from 'rxjs/operators';\nimport { EventTypeData } from './event-type-data';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsSettingsService {\n public listeningEvents$: Observable;\n private readonly defaultEventsLocalStorageKey = 'defaultListeningEvents';\n private readonly listeningEventsOptionsKey = 'listeningEvents';\n\n constructor(@Inject(USER_SETTINGS_SERVICE) private userSettingsService: SettingsService, @Inject(WINDOW) private window: Window) {\n this.listeningEvents$ = this.userSettingsService.onSettingsChanged$.pipe(\n map(() => this.getListeningEventsSettings()),\n filter((events) => !!events)\n ) as Observable;\n }\n\n public getListeningEventsSettings(): EventTypeData[] | undefined {\n const eventsData = this.userSettingsService.get(OptionTypes.Events, this.listeningEventsOptionsKey);\n return eventsData ? (JSON.parse(eventsData) as EventTypeData[]) : undefined;\n }\n\n public setListeningEventsSettings(defaultEvents: EventTypeData[]): void {\n return this.userSettingsService.set(OptionTypes.Events, this.listeningEventsOptionsKey, this.serializeEvents(defaultEvents));\n }\n\n /**\n * Fetch the default events from the local storage\n *\n * @returns Default events if the storage was already set or undefined if not\n */\n public getListeningEventsFromLocalStorage(): EventTypeData[] | undefined {\n const eventsData = this.window.localStorage.getItem(this.defaultEventsLocalStorageKey);\n if (!eventsData) {\n return undefined;\n }\n try {\n return JSON.parse(eventsData) as EventTypeData[];\n } catch {\n if (window.scwLogSeverity.includes(LogSeverity.Warning)) {\n console.warn('Unable to parse listening events from local storage');\n }\n } // Ignore parsing errors\n return undefined;\n }\n\n public setListeningEventsToLocalStorage(defaultEvents: EventTypeData[]): void {\n this.window.localStorage.setItem(this.defaultEventsLocalStorageKey, this.serializeEvents(defaultEvents));\n }\n\n private serializeEvents(events: EventTypeData[]): string {\n return JSON.stringify(events);\n }\n}\n","import { Injectable, OnDestroy, Version } from '@angular/core';\nimport { combineLatest, from, Observable, of, Subscription } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { GuidMap, IGuid, SafeGuid } from 'safeguid';\nimport { EventFilter } from 'RestClient/Connection/EventFilter';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { isEqual } from 'lodash-es';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { delayWhen, filter, first, map, mergeMap, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { MonitoredEntityEvent } from '@modules/shared/controllers/events/monitored-entity-event';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { EntityTypeResult, EventDefinition, EventEntry, EventsClient } from '@modules/shared/api/api';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { EntityTypeSet } from '@modules/shared/entity-browser/entity-type-set';\nimport { EntityTypeData } from '@modules/shared/models/entity-type-data';\nimport { LoggerService } from '../logger/logger.service';\nimport { AdvancedSettingsService } from '../advanced-settings/advanced-settings.service';\nimport { EntityEventObserver } from './observers/entity-event-observer';\nimport { EventTypeData } from './event-type-data';\nimport { EventsSettingsService } from './events-settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MonitoredEntityEventObserver extends EntityEventObserver {}\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsService implements OnDestroy {\n public static readonly MinimumSecurityCenterVersionForFilteredEntityTypes = new Version('5.11.2');\n\n public supportedEntityTypes$: Observable;\n\n public cacheLifetimeMilliseconds$: Observable;\n\n private scClient: WebAppClient;\n\n private eventsSubscription?: Subscription;\n private multiEventsSubscription?: Subscription;\n\n private listeningEvents: EventTypeData[] = [];\n\n private lastAddFilterApplied: IGuid = SafeGuid.EMPTY;\n\n private readonly monitoredEntityEventKey = 'MonitoredEntityEvent';\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n private authService: AuthService,\n private entityEventObserver: MonitoredEntityEventObserver,\n private eventsClient: EventsClient,\n private loggerService: LoggerService,\n private eventsSettingsService: EventsSettingsService,\n private advancedSettingService: AdvancedSettingsService\n ) {\n this.scClient = securityCenterClientService?.scClient;\n this.subscribeMonitoredEntityEvents();\n this.subscribeApplySettingsOnUserSettingsChanged();\n this.subscribeApplySettingsOnLogonStateChanged();\n\n this.supportedEntityTypes$ = combineLatest([this.authService.loggedIn$, this.eventsClient.supportedEntityTypes()]).pipe(\n map(([isLoggedIn, entityTypes]) => (isLoggedIn ? entityTypes : [])),\n this.removeEntityTypeResultsSubTypesIfNotSupported(),\n map((entityTypeResults) => {\n return new EntityTypeSet(entityTypeResults.map((entityTypeResult) => new EntityTypeData(entityTypeResult.type, entityTypeResult.subType ?? undefined)));\n })\n );\n this.cacheLifetimeMilliseconds$ = this.eventsClient.getCacheLifetimeMilliseconds().pipe(shareReplay(1));\n }\n\n ngOnDestroy(): void {\n this.eventsSubscription?.unsubscribe();\n this.multiEventsSubscription?.unsubscribe();\n this.entityEventObserver.complete();\n }\n\n public fetchRegisteredEventTypesAsync(): Promise {\n return this.eventsClient.events().toPromise();\n }\n\n public retrieveLatestEvents(source: IGuid, maxResults: number): Observable {\n return this.eventsClient.latestEvents(source, maxResults);\n }\n\n public startMonitoringEvents(entityId: IGuid): Observable {\n const existingObservable = this.entityEventObserver.getObservableFor(entityId);\n if (existingObservable) {\n return existingObservable;\n }\n // Todo: send the start/stop monitoring in batch, now that the backend supports it.\n return this.eventsClient.startMonitoringEvents([entityId]).pipe(\n first(),\n mergeMap(() =>\n this.entityEventObserver.setObservableFor(entityId, () => this.eventsClient.stopMonitoringEvents([entityId]).pipe(take(1), untilDestroyed(this)).subscribe())\n )\n );\n }\n\n public applyDefaultSettingsIfNotSet =\n () =>\n (source$: Observable): Observable =>\n source$.pipe(\n filter(() => !this.eventsSettingsService.getListeningEventsSettings()),\n switchMap(() => from(this.fetchRegisteredEventTypesAsync())),\n map((eventDefinitions) => this.getEventsSelectedFromEventDefinitions(eventDefinitions)),\n this.applyListeningEvents()\n );\n\n private getEventsSelectedFromEventDefinitions(eventDefinitions: EventDefinition[]) {\n const listeningEventsFromStorage = this.eventsSettingsService.getListeningEventsFromLocalStorage();\n const isAllEnabledByDefault = !listeningEventsFromStorage && this.advancedSettingService.get('EnableAllEventsByDefault', false);\n return eventDefinitions\n .filter((eventDefinition) => {\n return (\n isAllEnabledByDefault ||\n eventDefinition.listenByDefault ||\n (listeningEventsFromStorage && this.isEventDefinitionInEventTypeData(eventDefinition, listeningEventsFromStorage))\n );\n })\n .map((eventDefinition) => new EventTypeData(eventDefinition.eventType, eventDefinition.eventSubType));\n }\n\n private isEventDefinitionInEventTypeData(eventDefinition: EventDefinition, eventTypeData: EventTypeData[]): boolean {\n return eventTypeData.some((item) => item.type === eventDefinition.eventType && item.subType === eventDefinition.eventSubType);\n }\n\n private getMonitoredEntitiesFromEventsReceived(args: EventReceivedArg[]): MonitoredEntityEvent[] {\n return args.map((arg) => this.getMonitoredEntityEvent(arg?.event) ?? null).filter((event): event is MonitoredEntityEvent => event != null);\n }\n\n private groupEventsByMonitoredEntityId =\n () =>\n (source$: Observable): Observable> =>\n source$.pipe(\n map((monitoredEntityEvents) =>\n monitoredEntityEvents.reduce((acc: Map, current: MonitoredEntityEvent) => {\n if (acc.has(current.monitoredEntityId)) {\n acc.get(current.monitoredEntityId)?.push(current);\n } else {\n acc.set(current.monitoredEntityId, [current]);\n }\n return acc;\n }, new GuidMap())\n )\n );\n\n private publishAllEvents(mappedEvents: Map): void {\n mappedEvents.forEach((value, key) => this.entityEventObserver.publishEvents(key, value));\n }\n\n private getMonitoredEntityEvent(eventBase: IEventBase): MonitoredEntityEvent | undefined {\n return eventBase.eventType === this.monitoredEntityEventKey && eventBase instanceof MonitoredEntityEvent ? eventBase : undefined;\n }\n\n private applyListeningEvents =\n () =>\n (source$: Observable): Observable =>\n source$.pipe(\n filter((listeningEvents) => !isEqual(this.listeningEvents, listeningEvents)),\n delayWhen(() => (this.lastAddFilterApplied.isEmpty() ? of(undefined) : from(this.scClient.removeFromStreamerFilterAsync(this.lastAddFilterApplied)))),\n tap((listeningEvents) => (this.listeningEvents = listeningEvents)),\n delayWhen(() => from(this.scClient.addToStreamerFilterAsync(this.createEventsToAddFilter()).then((filterId) => (this.lastAddFilterApplied = filterId)))),\n tap(() => this.eventsSettingsService.setListeningEventsToLocalStorage(this.listeningEvents)),\n tap((eventTypeData) => this.loggerService.traceDebug(`EventsService - Listening events changed. Count of monitored events: ${eventTypeData.length}`))\n );\n\n private createEventsToAddFilter(): EventFilter {\n const eventToAddFilter = new EventFilter();\n this.listeningEvents.forEach((event) => {\n eventToAddFilter.eventTypes.add(event.type);\n if (event.type === EventTypes.CustomEvent) {\n eventToAddFilter.customEventTypeIds.add(event.subType);\n }\n });\n return eventToAddFilter;\n }\n\n private onLoggedOut(): void {\n this.listeningEvents.length = 0;\n this.entityEventObserver.complete();\n }\n\n private subscribeApplySettingsOnUserSettingsChanged() {\n this.eventsSettingsService.listeningEvents$.pipe(this.applyListeningEvents(), untilDestroyed(this)).subscribe();\n }\n\n private subscribeApplySettingsOnLogonStateChanged() {\n this.authService.loggedIn$\n .pipe(\n tap((isLoggedIn) => {\n if (!isLoggedIn) {\n this.onLoggedOut();\n }\n }),\n filter((isLoggedIn) => isLoggedIn),\n this.applyDefaultSettingsIfNotSet(),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n private removeEntityTypeResultsSubTypesIfNotSupported =\n () =>\n (source$: Observable): Observable =>\n source$.pipe(\n map((entityTypeResults) =>\n this.areSubTypesSupportedForEntityTypes()\n ? entityTypeResults\n : entityTypeResults.map((entityTypeResult) => {\n const newType = new EntityTypeResult();\n newType.type = entityTypeResult.type;\n return newType;\n })\n )\n );\n\n private areSubTypesSupportedForEntityTypes(): boolean {\n let areSubTypesSupported = true;\n\n if (this.scClient.securityCenterVersion) {\n const scVersion = new Version(this.scClient.securityCenterVersion.securityCenterVersion);\n if (scVersion.full < EventsService.MinimumSecurityCenterVersionForFilteredEntityTypes.full) {\n areSubTypesSupported = false;\n }\n }\n return areSubTypesSupported;\n }\n\n private subscribeMonitoredEntityEvents() {\n if (this.scClient) {\n this.scClient.registerAdditionalEventTypes(this.monitoredEntityEventKey, MonitoredEntityEvent);\n this.scClient.eventsReceived$\n .pipe(\n map((args) => this.getMonitoredEntitiesFromEventsReceived(args)),\n this.groupEventsByMonitoredEntityId(),\n tap((mappedEvents) => this.publishAllEvents(mappedEvents)),\n untilDestroyed(this)\n )\n .subscribe();\n }\n }\n}\n","import { FinalizeCallbackSubject } from '@modules/shared/subjects/finalize-callback-subject';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { Observable, Subject } from 'rxjs';\nimport { IGuid } from 'safeguid';\n\nexport class EntityEventObserver {\n private entitySubjects = new Map>();\n\n public complete(): void {\n this.entitySubjects.forEach((observer) => observer.complete());\n }\n\n public setObservableFor(entityId: IGuid, finalizeCallback: () => void): Observable {\n return this.setSubject(entityId, finalizeCallback);\n }\n\n public getObservableFor(entityId: IGuid): Observable | undefined {\n return this.getSubject(entityId)?.asObservable();\n }\n\n public publishEvents(entityId: IGuid, events: T[]): void {\n this.getSubject(entityId)?.next(events);\n }\n\n private getSubject(entityId: IGuid): Subject | undefined {\n return this.entitySubjects.get(entityId.toString());\n }\n\n private setSubject(entityId: IGuid, callbackWhenNoMoreObservers: () => void): Observable {\n const newSubject = new FinalizeCallbackSubject(() => {\n this.deleteSubject(entityId);\n callbackWhenNoMoreObservers();\n });\n this.entitySubjects.set(entityId.toString(), newSubject);\n return newSubject.asObservable();\n }\n\n private deleteSubject(entityId: IGuid): void {\n if (this.getSubject(entityId)) {\n this.entitySubjects.delete(entityId.toString());\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { IEventEntry } from '@modules/shared/api/api';\nimport { TimeService } from './time.service';\n\n@Injectable({ providedIn: 'root' })\nexport class EventTimeService {\n constructor(private timeService: TimeService) {}\n\n public formatTime(eventEntry: IEventEntry): string {\n return this.timeService.formatTime(eventEntry.timestamp, DateFormat.Time, true, true, eventEntry.timezone);\n }\n\n public formatDate(eventEntry: IEventEntry): string {\n return this.timeService.formatTime(eventEntry.timestamp, DateFormat.Date, true, false, eventEntry.timezone);\n }\n}\n","\n \n {{ event?.title }}\n {{ event?.description }}\n \n {{ monitoredEntity?.name }}\n \n\n \n \n \n\n \n {{ formattedDate ?? formatDate() }}\n {{ formattedTime ?? formatTime() }}\n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonFlavor, ItemSlot, Icon } from '@genetec/gelato';\nimport { EventEntry } from '@modules/shared/api/api';\nimport { EventTimeService } from '@modules/shared/services/time/event-time.service';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\n\n@Component({\n selector: 'app-event-item',\n templateUrl: './event-item.component.html',\n styleUrls: ['./event-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EventItemComponent {\n @Input() public monitoredEntity?: IEntity;\n @Input() public formattedTime?: string | null;\n @Input() public formattedDate?: string | null;\n @Input() public event?: EventEntry;\n\n @Input() public isNew = false;\n @Input() public showDismissOnHover = false;\n @Input() public showEntityName = true;\n @Output() public dismissed = new EventEmitter();\n @Output() public seen = new EventEmitter();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n\n public showDismiss = false;\n\n constructor(private eventTimeService: EventTimeService) {}\n\n public onDismiss(): void {\n this.dismissed.emit();\n }\n\n public onMouseEnter(): void {\n this.showDismiss = this.showDismissOnHover;\n\n if (this.isNew) {\n this.seen.emit();\n }\n }\n\n public onMouseLeave(): void {\n this.showDismiss = false;\n }\n\n public formatTime(): string | null {\n this.formattedTime = this.event ? this.eventTimeService.formatTime(this.event) : null;\n return this.formattedTime;\n }\n\n public formatDate(): string | null {\n this.formattedDate = this.event ? this.eventTimeService.formatDate(this.event) : null;\n return this.formattedDate;\n }\n}\n","{{ recentEventsTitle }}\n{{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n
    \n
  • \n \n
  • \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TextFlavor, ItemSlot } from '@genetec/gelato';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EventEntry } from '@modules/shared/api/api';\nimport { filter, take } from 'rxjs/operators';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { SharedContentFields } from '../../../enumerations/shared-content-fields';\nimport { ContentService } from '../../../interfaces/plugins/public/plugin-services-public.interface';\nimport { ContentProviderService } from '../../../services/content/content-provider.service';\nimport { TrackingService } from '../../../services/tracking.service';\nimport { TrackedComponent } from '../../tracked/tracked.component';\nimport { EventsService } from '../../../services/events/events.service';\nimport { MonitoredEntityEvent } from '../../../controllers/events/monitored-entity-event';\nimport { Content } from '../../../interfaces/plugins/public/plugin-public.interface';\n\n@UntilDestroy()\n@Component({\n selector: 'app-latest-events-widget',\n templateUrl: './latest-events-widget.component.html',\n styleUrls: ['./latest-events-widget.component.scss'],\n})\nexport class LatestEventsWidgetComponent extends TrackedComponent implements OnInit {\n private static readonly MaxNumberOfDisplayedEvents = 5;\n\n @Input() public content?: Content;\n @Input() public isLoading = true;\n @Input() public contentService?: ContentService;\n\n public readonly TextFlavor = TextFlavor;\n public readonly ItemSlot = ItemSlot;\n\n public recentEventsTitle = '';\n public entity?: IEntity;\n public events$: Observable;\n\n private entityId!: IGuid;\n private eventsSubject$ = new BehaviorSubject([]);\n\n constructor(\n private contentProviderService: ContentProviderService,\n trackingService: TrackingService,\n private translateService: TranslateService,\n private eventsService: EventsService,\n private securityCenterClientService: SecurityCenterClientService\n ) {\n super(trackingService);\n this.events$ = this.eventsSubject$.asObservable();\n }\n\n public async ngOnInit(): Promise {\n super.ngOnInit();\n\n this.entityId = SafeGuid.parse(this.content?.source ?? '');\n\n const retrieveLatestEvents$ = this.eventsService.retrieveLatestEvents(this.entityId, LatestEventsWidgetComponent.MaxNumberOfDisplayedEvents);\n const getEntity$ = of(await this.securityCenterClientService?.scClient?.getEntityAsync(Entity, this.entityId));\n\n combineLatest([retrieveLatestEvents$, getEntity$])\n .pipe(take(1), untilDestroyed(this))\n .subscribe(([eventEntries, fetchedEntity]) => {\n if (fetchedEntity) {\n this.entity = fetchedEntity;\n }\n this.isLoading = false;\n this.eventsSubject$.next(eventEntries);\n this.eventsService\n .startMonitoringEvents(this.entityId)\n .pipe(untilDestroyed(this))\n .subscribe((events) => this.onEventsReceived(events));\n });\n\n this.eventsSubject$\n .pipe(\n filter(() => !this.isLoading),\n untilDestroyed(this)\n )\n .subscribe((entries) => this.updateRecentEventsTitle(entries.length > 0));\n }\n\n public async navigate(event: EventEntry): Promise {\n const eventField = new FieldObject();\n eventField.setFieldGuid(SharedContentFields.EventId, event.id);\n eventField.setFieldGuid(SharedContentFields.ContextId, event.contextId);\n\n const content = await this.contentProviderService.getContentFromFieldsAsync(eventField);\n if (content && !content.id.isEmpty()) {\n this.contentService?.pushContent(content);\n }\n }\n\n private onEventsReceived(monitoredEntityEvents: MonitoredEntityEvent[]) {\n if (this.eventsSubject$ && monitoredEntityEvents?.length > 0) {\n const newEvents = monitoredEntityEvents.map((monitoredEntityEvent) => monitoredEntityEvent.event);\n const currentEvents = this.eventsSubject$.getValue() ?? [];\n const allEvents = [...newEvents, ...currentEvents];\n allEvents.length = Math.min(allEvents.length, LatestEventsWidgetComponent.MaxNumberOfDisplayedEvents);\n this.eventsSubject$.next(allEvents);\n }\n }\n\n private updateRecentEventsTitle(hasEvents: boolean) {\n this.recentEventsTitle = this.translateService.instant(hasEvents ? 'STE_LABEL_RECENTEVENTS' : 'STE_LABEL_NORECENTEVENTS') as string;\n }\n}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Directive({\n selector: '[appCaptureEvents]',\n})\nexport class CaptureEventsDirective implements OnInit, OnDestroy {\n @Output()\n public previewClick = new EventEmitter();\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n this.el?.nativeElement?.addEventListener('pointerdown', this.onClickHandler, { capture: true });\n }\n\n ngOnDestroy() {\n this.el?.nativeElement?.removeEventListener('pointerdown', this.onClickHandler, { capture: true });\n }\n\n private readonly onClickHandler = (event: Event): void => {\n this.previewClick.emit(event);\n };\n}\n","import { Directive, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Directive({\n selector: '[appDebounceClick]',\n})\nexport class DebounceClickDirective implements OnInit {\n @Input()\n public debounceTime = 400;\n\n @Output()\n public debounceClick = new EventEmitter();\n\n private clicks = new Subject();\n\n constructor() {}\n\n @HostListener('click', ['$event'])\n public clickEvent(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnInit() {\n // use throttleTime instead of debounceTime to ensure no delay with the first click\n this.clicks.pipe(throttleTime(this.debounceTime), untilDestroyed(this)).subscribe((e) => this.debounceClick.emit(e));\n }\n}\n","import { Directive, HostListener, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { Observable } from 'rxjs';\n@UntilDestroy()\n@Directive({\n selector: '[appHoverClass]',\n})\nexport class HoverClassDirective implements OnInit, OnDestroy {\n @Input() public appHoverClass = '';\n @Input() public appHoverClassDelay = 0;\n @Input() public appHoverClassResetDelay?: Observable;\n\n private cancelTimeout: number | null = null;\n\n constructor(public elementRef: ElementRef) {}\n\n @HostListener('mouseenter') public onMouseEnter(): void {\n if (this.appHoverClassDelay) {\n this.resetClassWithTimeout(this.appHoverClassDelay);\n } else {\n this.addHoverClass();\n }\n }\n\n @HostListener('mouseleave') public onMouseLeave(): void {\n this.removeHoverClass();\n }\n\n public resetClassWithTimeout(delay: number): void {\n this.tryCancelTimeout();\n this.cancelTimeout = window.setTimeout(() => this.addHoverClass(), delay);\n }\n\n public addHoverClass(): void {\n this.elementRef.nativeElement.classList.add(this.appHoverClass);\n }\n\n public removeHoverClass(): void {\n this.elementRef.nativeElement.classList.remove(this.appHoverClass);\n this.tryCancelTimeout();\n }\n\n public tryCancelTimeout(): void {\n if (this.cancelTimeout) {\n clearTimeout(this.cancelTimeout);\n this.cancelTimeout = null;\n }\n }\n\n ngOnDestroy(): void {\n this.tryCancelTimeout();\n }\n\n ngOnInit(): void {\n this.appHoverClassResetDelay?.pipe(untilDestroyed(this)).subscribe(() => {\n if (this.appHoverClassDelay) {\n this.resetClassWithTimeout(Number(this.appHoverClassDelay) * 2);\n }\n });\n }\n}\n","import { ComponentFactoryResolver, ComponentRef, Directive, Input, ViewContainerRef } from '@angular/core';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { MenuItemsComponent } from '@shared/components/menu-item/menu-item.component';\n\n/**\n * Use this directive to automatically add gen-menu-item(s) based on a datasource. This directive will invoke the MenuItemsComponent to do the rendering.\n * If you want a more \"granular\" control over the behavior of the gen-menu-items, use the declarative approach as stated in the Gelato documentation.\n *\n * This directive was mainly written to accomodate backward compatibility with the previous behaviour of the GenMenu (which supported datasource.).\n *\n * @input the datasource that you want rendered. The datasource assumes you have an execute function bound to every menu-item.\n */\n@Directive({\n selector: '[appMenuDataSource]',\n})\nexport class MenuDataSourceDirective {\n private menuItemsComponent?: ComponentRef;\n @Input() set appMenuDataSource(dataSource: ContextMenuItem[] | undefined | null) {\n if (dataSource) {\n // First time render\n if (!this.menuItemsComponent) {\n // create the MenuItemComponent\n const menuItemsComponentFactory = this.componentFactoryResolver.resolveComponentFactory(MenuItemsComponent);\n this.menuItemsComponent = menuItemsComponentFactory.create(this.viewContainer.injector);\n\n // Pass our datasource to it\n this.menuItemsComponent.instance.dataSource = dataSource ?? [];\n\n // run a round of change detection\n this.menuItemsComponent.changeDetectorRef.detectChanges();\n\n // Inject the menuItem in the GenMenu\n const domElement = this.viewContainer.element.nativeElement as HTMLElement;\n domElement.appendChild(this.menuItemsComponent.location.nativeElement);\n } else {\n // Component already created, only reassing datasource and run change detection.\n // Pass our datasource to it\n this.menuItemsComponent.instance.dataSource = dataSource;\n\n // run a round of change detection\n this.menuItemsComponent.changeDetectorRef.detectChanges();\n }\n }\n }\n\n constructor(private viewContainer: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n}\n","import { Directive, HostListener, ElementRef, Input, OnDestroy, OnInit, Inject } from '@angular/core';\nimport { WINDOW } from '@utilities/common-helper';\nimport { coerceBooleanProperty } from '../../utilities/coerceBooleanProperty';\n\n// Directive that allows an element to be resized\n@Directive({\n selector: '[appResizeElement]',\n})\nexport class ResizeElementDirective implements OnInit, OnDestroy {\n /**\n * Whether the element is resizable or not\n */\n @Input()\n public get appResizeElement(): boolean | '' {\n return this.isResizable;\n }\n public set appResizeElement(value: boolean | '') {\n this.isResizable = coerceBooleanProperty(value);\n }\n\n /**\n * An array that contains the sides that will be resizable.\n *\n * _The default is: ['top', 'left', 'right', 'bottom']_\n */\n @Input() public appResizableSides = ['top', 'left', 'right', 'bottom'];\n\n private isResizable = false;\n private nodes: HTMLElement[] = [];\n private limit = 50;\n private data?: { x: number; y: number; rect: ClientRect; direction: string };\n\n constructor(public element: ElementRef, @Inject(WINDOW) private window: Window) {\n this.mousemove = this.mousemove.bind(this);\n this.mouseup = this.mouseup.bind(this);\n }\n\n @HostListener('mousedown', ['$event'])\n public mousedown(e: MouseEvent): void {\n const htmlElement: HTMLElement | null = e?.target as HTMLElement;\n if (htmlElement?.classList.contains('border') && this.appResizeElement) {\n const rect = this.element.nativeElement.getBoundingClientRect();\n this.data = {\n x: e.clientX,\n y: e.clientY,\n rect,\n direction: /border-([^ ]+)/.exec(htmlElement.className)?.[1] ?? '',\n };\n e.preventDefault();\n } else {\n delete this.data;\n }\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n ngOnInit() {\n this.appResizableSides.forEach(this.createNode.bind(this));\n this.element.nativeElement.classList.add('resize');\n this.window.addEventListener('mousemove', this.mousemove);\n this.window.addEventListener('mouseup', this.mouseup);\n }\n\n ngOnDestroy() {\n this.nodes.forEach((n) => n.remove());\n\n this.window.removeEventListener('mousemove', this.mousemove);\n this.window.removeEventListener('mouseup', this.mouseup);\n }\n\n /* eslint-enable @typescript-eslint/unbound-method */\n\n public mousemove(event: MouseEvent): void {\n if (this.data) {\n const { height, width, top, left } = this.data.rect;\n const offsetY = this.data.y - event.clientY;\n const offsetX = this.data.x - event.clientX;\n const stylesDictionary: { [key: string]: number } = {};\n\n switch (this.data.direction) {\n case 'top':\n stylesDictionary.height = height + offsetY;\n stylesDictionary.top = top - offsetY;\n break;\n case 'bottom':\n stylesDictionary.height = height - offsetY;\n break;\n case 'left':\n stylesDictionary.width = width + offsetX;\n stylesDictionary.left = left - offsetX;\n break;\n case 'right':\n stylesDictionary.width = width - offsetX;\n }\n\n if (stylesDictionary.width < this.limit) {\n delete stylesDictionary.width;\n delete stylesDictionary.left;\n }\n\n if (stylesDictionary.height < this.limit) {\n delete stylesDictionary.height;\n delete stylesDictionary.top;\n }\n\n Object.entries(stylesDictionary).forEach(([name, value]) => {\n this.element.nativeElement.style.setProperty(name, `${value}px`, 'important');\n });\n }\n }\n\n public createNode(side: string): void {\n const node = document.createElement('div');\n node.classList.add('border-' + side, 'border');\n this.element.nativeElement.appendChild(node);\n this.nodes.push(node);\n }\n\n public mouseup(): void {\n delete this.data;\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, EventEmitter, Output } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ResizeSensor } from 'css-element-queries';\nimport { asyncScheduler, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { ResizeWidthEvent } from './interfaces/resize-width-event';\n\n// Directive that outputs an event when the element's width changes\n@UntilDestroy()\n@Directive({\n selector: '[appResizeWidth]',\n})\nexport class ResizeWidthDirective implements OnInit, OnDestroy {\n @Output() public appResizeWidth = new EventEmitter();\n\n public throttler: Subject = new Subject();\n\n private oldWidth = -1;\n private resizeSensor?: ResizeSensor;\n constructor(public elementRef: ElementRef) {\n const throttleConfig = {\n leading: false,\n trailing: true,\n };\n this.throttler.pipe(throttleTime(400, asyncScheduler, throttleConfig), untilDestroyed(this)).subscribe((value) => this.appResizeWidth.emit(value));\n }\n\n ngOnInit(): void {\n if (ResizeSensor) {\n this.resizeSensor = new ResizeSensor(this.elementRef.nativeElement, () => this.onResized());\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSensor) {\n this.resizeSensor.detach();\n }\n }\n\n private onResized(): void {\n const newWidth = this.elementRef.nativeElement.clientWidth;\n\n if (newWidth === this.oldWidth) {\n return;\n }\n\n const resizeWidthEvent: ResizeWidthEvent = {\n oldWidth: this.oldWidth,\n newWidth,\n };\n\n this.oldWidth = newWidth;\n\n this.throttler.next(resizeWidthEvent);\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appClickStopPropagation]',\n})\nexport class ClickStopPropagationDirective {\n @HostListener('dblclick', ['$event'])\n public onDoubleClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n}\n","import { ApplicationRef, ComponentFactoryResolver, ElementRef, EmbeddedViewRef, Inject, Injectable, Injector } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { GenModalService, GenMeltedModal } from '@genetec/gelato-angular';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { Type } from 'ng-mocks';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WINDOW } from '@src/app/utilities';\n\ndeclare global {\n interface Document {\n // Exit fullscreen\n webkitExitFullscreen(): void;\n webkitExitFullScreen(): void;\n mozCancelFullScreen(): void;\n msExitFullscreen(): void;\n }\n\n interface Element {\n // Fullscreen\n webkitRequestFullscreen(): void;\n webkitRequestFullScreen(): void;\n mozRequestFullScreen(): void;\n msRequestFullscreen(): void;\n }\n}\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class FullscreenService {\n static readonly fullscreenChangeTypes = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];\n\n public fullscreenElementChanged$: Observable;\n private fullscreenElementChangedSubject = new Subject();\n private openedModalsSubscriptions = new SubscriptionCollection();\n\n constructor(\n private genModalService: GenModalService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef,\n private injector: Injector,\n @Inject(WINDOW) private window: Window\n ) {\n this.fullscreenElementChanged$ = this.fullscreenElementChangedSubject.asObservable();\n\n FullscreenService.fullscreenChangeTypes.forEach((type) =>\n fromEvent(document, type)\n .pipe(untilDestroyed(this))\n .subscribe(() => {\n this.fullscreenChanged();\n })\n );\n }\n\n public get currentFullScreenElement(): Element | null {\n // Chrome, Firefox & Edge\n if (this.window.document.fullscreenElement) {\n return this.window.document.fullscreenElement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const unsafeDocument = this.window.document as any;\n if (!unsafeDocument) {\n return null;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access */\n if (unsafeDocument.webkitFullscreenElement) {\n return unsafeDocument.webkitFullscreenElement;\n }\n if (unsafeDocument.mozFullScreenElement) {\n return unsafeDocument.mozFullScreenElement;\n }\n if (unsafeDocument.msFullscreenElement) {\n return unsafeDocument.msFullscreenElement;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access */\n return null;\n }\n\n public get isFullscreenOn(): boolean {\n return this.currentFullScreenElement !== null;\n }\n\n public displayModal(modalType: Type, params?: T['params']): T;\n public displayModal(localModalInstance?: T): T;\n public displayModal(modal: Type | T, params?: T['params']): T {\n if (modal instanceof GenMeltedModal) {\n if (this.isFullscreenOn) {\n this.registerFullscreenModal(modal);\n }\n this.genModalService.show(modal.id);\n return modal;\n } else {\n if (this.currentFullScreenElement) {\n // TODO: Fix when we have a way to create component's without viewContainerRef probably in Angular 14+\n // https://github.com/angular/angular/pull/46685\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(modal);\n const componentRef = componentFactory.create(this.injector);\n this.applicationRef.attachView(componentRef.hostView);\n const embeddedViewRef = componentRef.hostView as EmbeddedViewRef;\n const element = embeddedViewRef.rootNodes[0] as HTMLElement;\n Object.assign(componentRef.instance, params);\n this.currentFullScreenElement.appendChild(element);\n this.registerFullscreenModal(componentRef.instance);\n return componentRef.instance;\n }\n return this.genModalService.open(modal, params);\n }\n }\n\n public async enterFullscreenFor(elementRef: ElementRef): Promise {\n // Check which implementation is available\n /* eslint-disable @typescript-eslint/unbound-method */\n const requestMethod =\n elementRef.nativeElement.requestFullscreen ||\n elementRef.nativeElement.webkitRequestFullscreen ||\n elementRef.nativeElement.webkitRequestFullScreen ||\n elementRef.nativeElement.mozRequestFullScreen ||\n elementRef.nativeElement.msRequestFullscreen;\n /* eslint-enable @typescript-eslint/unbound-method */\n if (requestMethod) {\n await requestMethod.apply(elementRef.nativeElement);\n }\n }\n\n public async exitFullscreen(): Promise {\n if (this.isFullscreenOn) {\n // Check which implementation is available\n /* eslint-disable @typescript-eslint/unbound-method */\n const requestMethod =\n this.window.document.exitFullscreen ||\n this.window.document.webkitExitFullscreen ||\n this.window.document.webkitExitFullScreen ||\n this.window.document.mozCancelFullScreen ||\n this.window.document.msExitFullscreen;\n /* eslint-enable @typescript-eslint/unbound-method */\n if (requestMethod) {\n await requestMethod.apply(this.window.document);\n }\n }\n }\n\n private registerFullscreenModal(modal: T): void {\n this.openedModalsSubscriptions.add(\n this.fullscreenElementChanged$\n .pipe(\n filter((element: Element | null) => !element),\n untilDestroyed(this)\n )\n .subscribe(() => {\n modal.hide();\n })\n );\n }\n\n private fullscreenChanged(): void {\n this.fullscreenElementChangedSubject.next(this.currentFullScreenElement);\n if (!this.isFullscreenOn) {\n this.openedModalsSubscriptions.unsubscribeAll();\n }\n }\n}\n","import { ElementRef, forwardRef, Inject, Injectable, Renderer2 } from '@angular/core';\nimport { AppTooltipComponent } from '@modules/shared/components/tooltip/app-tooltip.component';\nimport { SharedModule } from '@modules/shared/shared.module';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { WINDOW } from '@src/app/utilities';\nimport { FullscreenService } from '../fullscreen/fullscreen.service';\nimport { LoggerService } from '../logger/logger.service';\n\n@UntilDestroy()\n@Injectable({\n providedIn: forwardRef(() => SharedModule),\n})\nexport class TooltipService {\n public static designSystemProvider: HTMLElement | null;\n private renderer?: Renderer2;\n private appTooltipComponent?: AppTooltipComponent;\n private tooltipElement?: ElementRef;\n constructor(private loggerService: LoggerService, private fullscreenService: FullscreenService, @Inject(WINDOW) private window: Window) {}\n\n public registerTooltip(tooltipComponent: AppTooltipComponent, element: ElementRef, renderer: Renderer2): void {\n if (this.appTooltipComponent) {\n this.loggerService.traceWarning(`\n App's tooltip component was already registered and will be overridden! Only one tooltip needs to be registered for the whole app.`);\n }\n this.appTooltipComponent = tooltipComponent;\n this.tooltipElement = element;\n this.renderer = renderer;\n }\n\n public showTooltip(message: string, element: HTMLElement): void {\n if (!this.appTooltipComponent || !this.renderer || !this.tooltipElement?.nativeElement) {\n this.loggerService.traceWarning('No tooltip component was registered, cannot use service to show a tooltip');\n return;\n }\n\n this.ensureCorrectParentElement();\n this.registerOnceCloseOnMouseLeave(element);\n\n this.appTooltipComponent.show(message, element);\n }\n\n private registerOnceCloseOnMouseLeave(element: HTMLElement): void {\n const mouseLeaveSubscription = this.renderer?.listen(element, 'mouseleave', () => {\n try {\n this.appTooltipComponent?.close();\n } finally {\n // Unsubscribe after a single event\n mouseLeaveSubscription?.();\n }\n });\n }\n\n private ensureCorrectParentElement(): void {\n if (!this.tooltipElement || !this.renderer) {\n return;\n }\n\n const tooltipDOMElement = this.tooltipElement.nativeElement;\n const parentElement = this.fullscreenService.isFullscreenOn ? this.fullscreenService.currentFullScreenElement : this.window.document.body;\n\n if (parentElement && tooltipDOMElement.parentElement !== parentElement) {\n this.renderer.appendChild(parentElement, tooltipDOMElement);\n }\n }\n}\n","import { Directive, ElementRef, Renderer2, Input, OnDestroy, AfterViewInit } from '@angular/core';\nimport { TooltipService } from '@modules/shared/services/tooltip/tooltip.service';\nimport { coerceBooleanProperty } from '@modules/shared/utilities/coerceBooleanProperty';\n\n/**\n * Directive applying a tooltip for the given element, appearing after a specific amount the mouse is hovering on the element (defined by {@link TooltipDirective.DELAY_MS}).\n *\n * Reuses a previously defined that must be present in the body tag of the document\n */\n@Directive({\n selector: '[appTooltip]',\n})\nexport class TooltipDirective implements OnDestroy, AfterViewInit {\n public static readonly DELAY_MS = 500;\n public static designSystemProvider: HTMLElement | null;\n\n @Input() appTooltip?: string | null;\n\n /**\n * If true, the tooltip will only show if appTooltip is big enough to overflow its tooltip container.\n *\n * @example\n * ```html\n * \n * \n * {{ shortText }}\n * \n *\n * \n * \n * {{ longText }}\n * \n * ```\n */\n @Input()\n get appTooltipOnlyIfOverflow(): boolean {\n return this.isTooltipOnlyIfOverflow;\n }\n set appTooltipOnlyIfOverflow(value: boolean | '') {\n this.isTooltipOnlyIfOverflow = coerceBooleanProperty(value);\n }\n\n private isTooltipOnlyIfOverflow = false;\n private handlers: Array<() => void> = [];\n private timeout?: number;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private tooltipService: TooltipService) {}\n\n ngAfterViewInit() {\n this.handlers.push(this.renderer.listen(this.elementRef.nativeElement, 'mouseenter', this.onMouseEnter.bind(this)));\n this.handlers.push(this.renderer.listen(this.elementRef.nativeElement, 'mouseleave', this.onMouseLeave.bind(this)));\n }\n\n ngOnDestroy(): void {\n this.handlers?.forEach((handler) => handler());\n this.handlers.length = 0;\n }\n\n private onMouseEnter() {\n if (this.appTooltip && (!this.isTooltipOnlyIfOverflow || this.elementRef.nativeElement.offsetWidth < this.elementRef.nativeElement.scrollWidth)) {\n this.timeout = window.setTimeout(() => {\n this.tooltipService.showTooltip(this.appTooltip ?? '', this.elementRef.nativeElement);\n }, TooltipDirective.DELAY_MS);\n }\n }\n private onMouseLeave() {\n window.clearTimeout(this.timeout);\n }\n}\n","import { ComponentFactoryResolver, ComponentRef, Directive, Input, ViewContainerRef } from '@angular/core';\nimport { TreeItemsComponent } from '@shared/components/tree-items/tree-items.component';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\n/**\n * @deprecated Do not use anymore as this leads to unexpected results\n * @description\n *\n * Right now, this only works for SelectionType.Single trees. more work will be needed for recursive + SelectionType.Multiple directive.\n * Use this directive to automatically add gen-tree-item(s) based on a datasource. This directive will invoke the TreeItemsComponent to do the rendering.\n * If you want a more \"granular\" control over the behavior of the gen-menu-items, use the declarative approach as stated in the Gelato documentation.\n *\n * This directive was mainly written to accomodate backward compatibility with the previous behaviour of the GenTree (which supported datasource).\n *\n * @input dataSource the datasource that you want rendered.\n *\n * @example\n *\n * \n\n */\n@Directive({\n selector: '[appTreeDataSource]',\n})\nexport class TreeDataSourceDirective {\n private treeItemsComponent?: ComponentRef;\n // eslint-disable-next-line @typescript-eslint/member-ordering\n /**\n * Function that will be called when an item is clicked. Do not forget to bind(this) when you pass the callback to the gen-tree\n */\n @Input() set appTreeItemClick(callback: (item: TreeItem, event: CustomEvent) => any) {\n if (this.treeItemsComponent) {\n // assign provided callback.\n this.treeItemsComponent.instance.itemCallbackToUse = callback;\n // run a round of change detection\n this.treeItemsComponent.changeDetectorRef.detectChanges();\n }\n }\n @Input() set appTreeDataSource(dataSource: TreeItem[] | undefined) {\n if (dataSource) {\n // First time render\n if (!this.treeItemsComponent) {\n // create the TreeItemComponent\n const treeItemsComponentFactory = this.componentFactoryResolver.resolveComponentFactory(TreeItemsComponent);\n this.treeItemsComponent = treeItemsComponentFactory.create(this.viewContainer.injector);\n\n // Pass our datasource to it\n this.treeItemsComponent.instance.dataSource = dataSource ?? [];\n\n // run a round of change detection\n this.treeItemsComponent.changeDetectorRef.detectChanges();\n\n // create an embeddedView in the viewContainer (omits the host tag )\n this.viewContainer.createEmbeddedView(this.treeItemsComponent.instance.template);\n } else {\n // Component already created, only reassing datasource and run change detection.\n // Pass our datasource to it\n this.treeItemsComponent.instance.dataSource = dataSource;\n\n // run a round of change detection\n this.treeItemsComponent.changeDetectorRef.detectChanges();\n }\n }\n }\n\n constructor(private viewContainer: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n Convert html argb to rgba\n Example :
\n*/\n@Pipe({ name: 'argb' })\nexport class ArgbPipe implements PipeTransform {\n public transform(argb: string | null | undefined): string {\n if (!argb) {\n return '';\n }\n const argbColor = argb.slice(1, argb.length); // Slice the #\n\n const a = parseInt(argbColor.slice(0, 2), 16) / 255;\n const r = parseInt(argbColor.slice(2, 4), 16);\n const g = parseInt(argbColor.slice(4, 6), 16);\n const b = parseInt(argbColor.slice(6, 8), 16);\n\n return `rgba(${r},${g},${b},${a})`;\n }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\n/*\n
  • {{it}}
  • \n */\n@Pipe({\n name: 'filter',\n})\n@Injectable()\nexport class FilterPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public transform(items: any, field: string, value: any): any[] {\n if (!items || !(items instanceof Object)) {\n return [];\n }\n\n const itemsToFilter = items as Record[];\n if (value instanceof String) {\n if (value.length === 0) {\n return itemsToFilter;\n }\n return itemsToFilter.filter((it) => {\n const fieldValue = it[field];\n if (fieldValue instanceof String) {\n return fieldValue.toLowerCase().indexOf(value.toLowerCase()) !== -1;\n }\n return false;\n });\n } else {\n return itemsToFilter.filter((it) => it[field] === value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\n\n/*\nDisables the angular DOM sanitizer when needed (inline SVGs into img tags)\nUsage: \n\n*/\n\n@Pipe({\n name: 'safe',\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n *ngFor=\"let c of oneDimArray | sortBy:'asc'\"\n *ngFor=\"let c of arrayOfObjects | sortBy:'asc':'propertyName'\"\n */\n@Pipe({ name: 'sortBy' })\nexport class SortByPipe implements PipeTransform {\n public transform(value: unknown[], order = 'asc', ...column: string[]): any[] {\n if (!value || value.length <= 1 || !order || (order !== 'asc' && order !== 'desc')) {\n return value;\n }\n\n let comparer = this.defaultCompare.bind(this);\n if (column && column.length > 0 && value instanceof Object) {\n comparer = (a: Record, b: Record) => {\n // for now we only support a single column\n const col = column[0];\n return this.defaultCompare(a[col], b[col]);\n };\n }\n\n let sorted = value.sort(comparer);\n if (order !== 'asc') {\n sorted = sorted.reverse();\n }\n\n return sorted;\n }\n\n private defaultCompare(a: any, b: any): number {\n return (typeof a === 'string' && typeof b === 'string' && a.localeCompare(b)) || 0;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { LanguageService } from '../services/language/language.service';\n\n/*\n Injects parameters into a format string like 'Bla bla {0} {1}'\n Ex :
    {{'Hello {name}' | stringFormat:'George'}}
    \n*/\n@Pipe({ name: 'stringFormat' })\nexport class StringFormatPipe implements PipeTransform {\n // Using the browser's culture to format numbers.\n private readonly locale = navigator.language ?? LanguageService.DefaultLanguage;\n\n public transform(format: string, ...args: any[]): string {\n if (!args?.length) {\n return format;\n }\n\n return format.replace(/{(\\d+)}/g, (match: string, index: number) => {\n let argString = args[index].toString() as string;\n\n if (typeof args[index] === 'number') {\n argString = (args[index] as number).toLocaleString(this.locale);\n }\n\n return args[index] !== undefined ? argString : match;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\n\n@Pipe({\n name: 'StringToIcon',\n})\nexport class StringToIconPipe implements PipeTransform {\n public transform(value: string): MeltedIcon {\n return value as MeltedIcon;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IFileEntity } from 'RestClient/Client/Interface/IFileEntity';\nimport { FileEntity } from 'RestClient/Client/Model/FileEntity';\nimport { IGuid } from 'safeguid';\nimport { ResourcesService } from '../resources/resources.service';\n\n@Injectable()\nexport class AudioService {\n constructor(private securityCenterClientService: SecurityCenterClientService, private resourcesService: ResourcesService) {}\n\n public async playAudio(id: IGuid): Promise {\n const file = await this.securityCenterClientService.scClient?.getEntityAsync(FileEntity, id);\n if (file) {\n // no need to encrypt those sounds\n const fileResult = await this.resourcesService.getFilesCacheAsync(file, { encrypted: false });\n const raw = fileResult[file.cacheGuid.toString()];\n if (raw) {\n const audioSource = 'data:audio/mp3;base64,' + raw;\n const player = new Audio(audioSource);\n await player.play();\n return;\n }\n }\n\n throw new Error('Cannot play sound');\n }\n}\n","import { Constants } from '@modules/shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const KnownCellRendererTypes = Constants({\n ColoredDot: '5FCE751E-A947-471B-AC7D-D2AA8EBB06EB',\n Thumbnail: '3D623108-7875-4390-83CF-931A7E16F031',\n ImageWithText: '4521F065-7BBC-47CC-ACBF-9F0D3B4503EC',\n List: '4618BC72-110E-4309-856A-6E38B3D91885',\n StatusWithColor: 'E3E23DD4-0810-4B8A-A505-C823C17D6ACD',\n});\n","/* eslint-disable id-blacklist */\nexport enum TableCellType {\n Custom = 0,\n Text = 1,\n Image = 2,\n Boolean = 3,\n Number = 4,\n Date = 5,\n Time = 6,\n DateTime = 7,\n Action = 8,\n Timezone = 9,\n}\n","
    \n \n \n \n \n {{ colHeader.label }}\n \n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n
    \n {{ 'STE_LABEL_NORESULTS' | translate }}\n {{ 'STE_MESSAGE_INFO_NORESULTS_DETAILS' | translate }}\n
    \n
    \n \n \n \n \n \n \n
    \n
    \n\n\n \n \n \n {{ time }}\n \n\n \n \n {{ date }}\n \n\n \n \n {{ dateTime }}\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ listData }}\n \n \n \n \n \n \n \n {{ cellValue?.Text }}\n \n \n \n \n {{ accessStatus }}\n \n \n \n \n\n \n \n {{ cellValue }}\n \n \n\n","import { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\nimport { Icon, IconSize, TextFlavor, ImageFit, ImageFlavor, TableColumnHeaderSort, TableFlavor } from '@genetec/gelato';\nimport { GenTable, PopupPosition } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { isEqual } from 'lodash';\nimport { TypedSimpleChanges } from '@modules/shared/utilities/typed-simple-changes';\nimport { Datum } from '@modules/shared/interfaces/datum';\nimport { IGuid } from 'safeguid';\nimport { KnownCellRendererTypes } from './enumerations/known-cell-renderer-types';\nimport { TableCellType } from './enumerations/table-cell-type';\nimport { TableColumnDescriptor } from './models/table-column-descriptor';\nimport { SortOptions } from './models/sort-options';\n\n@UntilDestroy()\n@Component({\n selector: 'app-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent extends TrackedComponent implements AfterViewInit, OnChanges {\n @Input() public columnDescriptors: TableColumnDescriptor[] | null = null;\n @Input() public data: Datum[] | null = null;\n @Input() public refreshing = false;\n @Input() hasMore = true;\n @Input() selectedId: IGuid | null = null;\n @Output() selectedChanged = new EventEmitter();\n @Output() sortChanged: EventEmitter = new EventEmitter();\n @Output() loadMore = new EventEmitter();\n @ViewChild(GenTable) public table!: GenTable;\n public readonly TableCellType = TableCellType;\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly PopupPosition = PopupPosition;\n public readonly TextFlavor = TextFlavor;\n public readonly TableColumnHeaderSort = TableColumnHeaderSort;\n public readonly TableFlavor = TableFlavor;\n public readonly KnownCellRendererTypes = KnownCellRendererTypes;\n\n public readonly isLoadingMore$!: Observable;\n\n private readonly isLoadingMoreSubject = new BehaviorSubject(false);\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n this.isLoadingMore$ = this.isLoadingMoreSubject.asObservable();\n }\n\n public ngAfterViewInit() {\n this.onDescriptorChanged();\n }\n\n ngOnChanges(changes: TypedSimpleChanges): void {\n if (changes.columnDescriptors && !isEqual(changes.columnDescriptors.currentValue, changes.columnDescriptors.previousValue)) {\n this.onDescriptorChanged();\n }\n if (changes.data && !isEqual(changes.data.currentValue, changes.data.previousValue)) {\n this.isLoadingMoreSubject.next(false);\n }\n if (changes.selectedId && !isEqual(changes.selectedId.currentValue, changes.selectedId.previousValue)) {\n if (!changes.selectedId.currentValue) {\n this.deselectAll();\n }\n }\n }\n\n onLoadMore(): void {\n if (!this.isLoadingMoreSubject.getValue()) {\n this.isLoadingMoreSubject.next(true);\n this.loadMore.emit();\n }\n }\n\n public onSelectionChange(row: Datum): void {\n if (!this.selectedId?.equals(row.guid as unknown as IGuid)) {\n this.selectedChanged.emit(row);\n }\n }\n\n public deselectAll(): void {\n this.table?.deselectAll().fireAndForget();\n this.selectedId = null;\n }\n\n public showColumnSelection(): void {\n this.table.showEditColumnsModal().fireAndForget();\n }\n\n public onSortChange(columnHeaderSort: CustomEvent, column: TableColumnDescriptor): void {\n let sortOption: SortOptions | undefined;\n if (columnHeaderSort.detail !== TableColumnHeaderSort.None) {\n sortOption = {\n columnKey: column.fieldId,\n sortOrder: columnHeaderSort.detail,\n };\n }\n this.sortChanged.emit(sortOption);\n }\n\n public columnOrderChanged(event: CustomEvent): void {\n if (!this.columnDescriptors) {\n return;\n }\n this.columnDescriptors = this.columnDescriptors.sort((col1, col2) => {\n const col1Index = event.detail.indexOf(col1.fieldId);\n const col2Index = event.detail.indexOf(col2.fieldId);\n return col1Index - col2Index;\n });\n }\n\n private onDescriptorChanged(): void {\n if (!this.columnDescriptors) return;\n const newTableColumns = this.columnDescriptors.filter((col) => !col.isKey);\n this.columnDescriptors = newTableColumns.sort((col1, col2) => {\n // -1 is the default value for priority, so we want to move it to the end of the list\n if (col1.priority !== -1 && col2.priority === -1) {\n return -1;\n }\n return col1.priority - col2.priority;\n });\n }\n}\n","import { CreateFeatureFlag, CreateFeatureFlagGroup } from '@modules/feature-flags/feature-flag';\n\nexport const EventMonitoringFeatureFlags = CreateFeatureFlagGroup({\n General: CreateFeatureFlag('Flag.EventMonitoring', true),\n});\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IWatchlistEntry, UserWatchlistClient, Watchlist, WatchlistEntry, WatchlistPriority } from '@modules/shared/api/api';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { filter, shareReplay, skip, switchMap, takeUntil, take, tap } from 'rxjs/operators';\nimport { GuidSet, IGuid } from 'safeguid';\nimport { AdvancedSettingsService } from '../advanced-settings/advanced-settings.service';\nimport { EventMonitoringFeatureFlags } from '../events/feature-flags';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class UserWatchlistService implements OnDestroy {\n public watchlist$: Observable;\n public added$: Observable;\n public removed$: Observable;\n public modified$: Observable;\n\n private watchlist: Watchlist | null = null;\n\n private addedSubject$ = new Subject();\n private watchlistSubject$ = new BehaviorSubject(null);\n private removedSubject$ = new Subject();\n private modifiedSubject$ = new Subject();\n private onLoggedOut$ = new Subject();\n\n constructor(private userWatchlistClient: UserWatchlistClient, private authService: AuthService, private advancedSettingsService: AdvancedSettingsService) {\n this.added$ = this.addedSubject$.asObservable();\n this.watchlist$ = this.watchlistSubject$.asObservable().pipe(shareReplay(1));\n this.modified$ = this.modifiedSubject$.asObservable();\n this.removed$ = this.removedSubject$.asObservable();\n this.subscribeAuthService();\n }\n\n ngOnDestroy(): void {\n this.onLoggedOut();\n }\n\n public add(entityIds: IGuid | IGuid[]): void {\n if (this.watchlist) {\n const addedEntries: WatchlistEntry[] = [];\n const guids = Array.isArray(entityIds) ? entityIds : [entityIds];\n const guidsNotAlreadyAdded = new GuidSet(guids.filter((entityId) => !this.getExistingEntry(entityId)));\n for (const entityId of guidsNotAlreadyAdded) {\n const newItem = new WatchlistEntry({ entityId, priority: WatchlistPriority.Normal });\n this.watchlist.entries.push(newItem);\n addedEntries.push(newItem);\n }\n\n if (addedEntries.length > 0) {\n this.addedSubject$.next(addedEntries);\n this.updateWatchlist();\n }\n }\n }\n\n public remove(entityId: IGuid): void {\n const existingEntry = this.getExistingEntry(entityId);\n if (this.watchlist && existingEntry) {\n this.watchlist.entries.remove(existingEntry);\n this.removedSubject$.next(entityId);\n this.updateWatchlist();\n }\n }\n\n public updateIsFlagged(entityId: IGuid, isFlagged: boolean): void {\n const existingEntry = this.getExistingEntry(entityId);\n const newPriority = this.getItemPriority(isFlagged);\n if (existingEntry && existingEntry.priority !== newPriority) {\n existingEntry.priority = this.getItemPriority(isFlagged);\n this.modifiedSubject$.next(existingEntry);\n this.updateWatchlist();\n }\n }\n\n public isEntityBeingWatched(entityId: IGuid): boolean {\n return !!this.getExistingEntry(entityId);\n }\n\n private getExistingEntry(entityId: IGuid): WatchlistEntry | null {\n return this.watchlist?.entries.find((entry) => entry.entityId?.equals(entityId)) ?? null;\n }\n\n private getItemPriority(isFlagged: boolean): WatchlistPriority {\n return isFlagged ? WatchlistPriority.Flagged : WatchlistPriority.Normal;\n }\n\n private saveWatchlist(): void {\n if (this.watchlist) {\n this.userWatchlistClient.setUserWatchlist(this.watchlist).pipe(take(1), untilDestroyed(this)).subscribe();\n }\n }\n\n private subscribeAuthService(): void {\n this.authService.loggedIn$\n .pipe(\n filter((isLoggedIn) => !isLoggedIn || this.isEventMonitoringFlagEnabled()),\n tap((isLoggedIn) => (isLoggedIn ? this.onLoggedIn() : this.onLoggedOut())),\n switchMap((isLoggedIn) => (isLoggedIn ? this.fetchUserWatchlist().pipe(switchMap(() => this.saveWatchlistWhenUpdated())) : of(undefined))),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n private isEventMonitoringFlagEnabled(): boolean {\n return EventMonitoringFeatureFlags.General.isEnabled(this.advancedSettingsService);\n }\n\n private fetchUserWatchlist(): Observable {\n return this.userWatchlistClient.getUserWatchlist().pipe(\n take(1),\n untilDestroyed(this),\n tap((watchlist) => {\n this.watchlist = watchlist;\n this.updateWatchlist();\n })\n );\n }\n\n private saveWatchlistWhenUpdated(): Observable {\n return this.watchlist$.pipe(\n // Skip first result, since it's a BehaviorSubject (will send result when subscribed).\n skip(1),\n tap(() => this.saveWatchlist()),\n takeUntil(this.onLoggedOut$)\n );\n }\n\n private onLoggedIn(): void {\n if (!this.onLoggedOut$.closed) {\n this.onLoggedOut();\n }\n this.onLoggedOut$ = new Subject();\n }\n\n private onLoggedOut(): void {\n if (this.onLoggedOut$) {\n this.onLoggedOut$.next();\n this.onLoggedOut$.complete();\n }\n this.watchlist = null;\n this.updateWatchlist();\n }\n\n private updateWatchlist(): void {\n this.watchlistSubject$.next(this.watchlist);\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const EventMonitoringContentTypes = Constants({\n WatchList: SafeGuid.parse('0DA4E751-A290-412C-9A6D-FCD9E2E51889'),\n EditWatchList: SafeGuid.parse('7B8DC150-2AD6-4376-86C1-4BA4A50A8645'),\n});\n","/**\n * This enum is used to add a context to a log entry.\n */\nexport enum EventMonitoringContext {\n // This context refers to the watchlist\n Watchlist = 'Watchlist',\n // This context refers to the edit watchlist\n EditWatchlist = 'Edit watchlist',\n // This context refers to the contextual menu \"Add to watchlist\" command\n WatchlistCommand = 'Watchlist command',\n}\n","import { Constants } from '../utilities/constants';\n/** Store the analytic name for a custom event in some constants under a specific module */\nexport const AnalyticsNames = Constants({\n Investigate: {\n ReportGenerated: 'Unified Report Generated',\n SelectedColumns: 'Unified Report Selected Columns',\n },\n Shared: {\n EventMonitoring: 'Event Monitoring',\n ThreatLevels: 'Threat Levels',\n },\n SendFeedback: {\n DialogOpened: 'Send feedback dialog opened',\n DialogClosedSuccess: 'Send feedback dialog closed [SENT]',\n DialogClosedCancel: 'Send feedback dialog closed [CANCELED]',\n SubmitFailed: 'Send feedback submit failed [INVALID FORM]',\n },\n});\n","import { Injectable } from '@angular/core';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { AnalyticsService } from './analytics.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventMonitoringLoggerService {\n constructor(private analyticsService: AnalyticsService) {}\n\n public logEvent(action: string, description: string, context: EventMonitoringContext, value?: unknown): void {\n const properties: Record = {\n action,\n description,\n context,\n };\n\n if (typeof value !== 'undefined') {\n properties.value = value;\n }\n\n this.analyticsService.logEvent(AnalyticsNames.Shared.EventMonitoring, properties);\n }\n}\n","\n
    \n {{ 'STE_LABEL_REPORT_ITEMS_COUNT_FORMAT' | translate | stringFormat: entities.length }}\n \n
    \n\n \n \n \n \n \n {{ 'STE_LABEL_NAME' | translate }}\n \n \n \n \n \n {{ 'STE_LABEL_FLAG' | translate }}\n \n \n \n \n \n\n \n \n \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n\n\n\n\n
    \n \n
    \n
    \n","import { AfterViewInit, Component, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor, SelectionType } from '@genetec/gelato';\nimport { ModalEntitiesSelectorComponent, SelectedEntity } from '@modules/shared/components/entity-browser/modal-entities-selector/modal-entities-selector.component';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { IconsService } from '@modules/shared/services/icons.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { concatMap, filter, scan, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { IWatchlist, IWatchlistEntry, Watchlist, WatchlistPriority } from '@modules/shared/api/api';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { EventMonitoringFeatureFlags } from '@modules/shared/services/events/feature-flags';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { EventMonitoringContentTypes } from '@modules/shared/enumerations/event-monitoring-content-types';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { EventMonitoringLoggerService } from '@modules/shared/services/analytics/event-monitoring-logger.service';\nimport { EventsService } from '@modules/shared/services/events/events.service';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { StateItem } from '@modules/shared/components/entity-state-item/state-item/state-item';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nexport class WatchlistItem implements StateItem {\n constructor(\n public guid: IGuid,\n public name: string,\n public flagged: boolean,\n public icon: Icon,\n public state: string,\n public maintenance: boolean,\n public customIconId?: IGuid\n ) {}\n\n get hasWarnings(): boolean {\n return this.state === RunningState.Warning;\n }\n get isInMaintenance(): boolean {\n return this.maintenance;\n }\n get isOffline(): boolean {\n return this.state === RunningState.NotRunning;\n }\n}\n\n@UntilDestroy()\n@InternalContentPluginDescriptor({\n type: WatchlistEditorComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: WatchlistEditorComponent.pluginId, priority: 0, standalone: true },\n isContentSupported: (content: Content) => !!content?.type?.equals(EventMonitoringContentTypes.EditWatchList),\n requirements: { enabledFeatureFlags: [EventMonitoringFeatureFlags.General] },\n})\n@Component({\n selector: 'app-watchlist-editor',\n templateUrl: './watchlist-editor.component.html',\n styleUrls: ['./watchlist-editor.component.scss'],\n})\nexport class WatchlistEditorComponent implements AfterViewInit {\n public static pluginId = SafeGuid.parse('70737118-bcda-4526-8a44-9362e8777645');\n @ViewChild('entitiesSelector') public entitiesSelector?: ModalEntitiesSelectorComponent;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly SelectionType = SelectionType;\n\n public entities: WatchlistItem[] = [];\n public isLoading = true;\n\n public entityBrowserFilter$: Observable;\n\n private watchedEntities$ = new BehaviorSubject([]);\n private entityCacheTask: IEntityCacheTask;\n private selectedEntitiesCache$ = new BehaviorSubject([]);\n\n constructor(\n private userWatchlistService: UserWatchlistService,\n private securityCenterClientService: SecurityCenterClientService,\n private iconsService: IconsService,\n private eventsService: EventsService,\n private eventMonitoringLoggerService: EventMonitoringLoggerService\n ) {\n this.entityCacheTask = this.securityCenterClientService.scClient.buildEntityCache([\n EntityFields.nameField,\n EntityFields.entityTypeField,\n EntityFields.customIconIdField,\n EntityFields.runningStateField,\n EntityFields.maintenanceField,\n ]);\n\n this.userWatchlistService.added$\n .pipe(\n withLatestFrom(this.selectedEntitiesCache$),\n concatMap(([watchlistEntries, entityCache]) => this.onUserWatchlistAdded(watchlistEntries, entityCache)),\n tap(() => this.updateWatchedEntities()),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.userWatchlistService.watchlist$\n .pipe(\n take(1),\n concatMap((watchlist) => this.initializeUserWatchlistAsync(watchlist)),\n tap(() => this.updateWatchedEntities()),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.userWatchlistService.removed$\n .pipe(\n tap((item) => this.onUserWatchlistRemoved(item)),\n tap(() => this.updateWatchedEntities()),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.userWatchlistService.modified$.pipe(untilDestroyed(this)).subscribe((item) => this.onUserWatchlistModified(item));\n\n this.entityBrowserFilter$ = combineLatest([this.eventsService.supportedEntityTypes$, this.watchedEntities$]).pipe(\n scan((newFilter: EntityBrowserFilter, [entityTypes, watchedEntities]) => {\n newFilter.entityTypes = entityTypes;\n newFilter.excludedEntities = new GuidSet(watchedEntities);\n return newFilter;\n }, new EntityBrowserFilter())\n );\n }\n\n public ngAfterViewInit(): void {\n // Automatically open the Add items dialog if no element in watchlist\n this.userWatchlistService.watchlist$\n .pipe(\n take(1),\n filter((watchlist) => this.isEmpty(watchlist)),\n tap(() => this.addItems()),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n public addItems(): void {\n this.entitiesSelector?.show();\n }\n\n public addItemsToWatchlist(guids: IGuid[]): void {\n if (guids.length > 0) {\n this.userWatchlistService.add(guids);\n }\n }\n\n public onEntitiesSelected(entities: SelectedEntity[]): void {\n this.selectedEntitiesCache$.next(entities);\n this.addItemsToWatchlist(entities.map((entity) => entity.id));\n this.eventMonitoringLoggerService.logEvent(\n `Added new monitored entities of type ${entities.map((entity) => entity.entityType).toString()}`,\n `${entities.length} New monitored entities has been added`,\n EventMonitoringContext.EditWatchlist\n );\n }\n\n public removeItem(item: WatchlistItem): void {\n this.userWatchlistService.remove(item.guid);\n }\n\n public setItemIsFlagged(item: WatchlistItem, isFlagged: boolean): void {\n this.userWatchlistService.updateIsFlagged(item.guid, isFlagged);\n this.eventMonitoringLoggerService.logEvent(\n 'Changed entity importance',\n 'Entity importance has been changed',\n EventMonitoringContext.EditWatchlist,\n isFlagged ? 'Flagged' : 'Other'\n );\n }\n\n private createWatchlistItem(entry: IWatchlistEntry, name: string, icon: Icon, state: string, maintenance: boolean, customIconId: IGuid) {\n return new WatchlistItem(entry.entityId, name, this.isWatchlistEntryFlagged(entry), icon, state, maintenance, customIconId);\n }\n\n private async initializeUserWatchlistAsync(watchlist: IWatchlist | null): Promise {\n if (this.isLoading && watchlist) {\n await this.fetchAndAddEntriesAsync(watchlist.entries);\n this.isLoading = false;\n }\n }\n\n private isEmpty(watchList: Watchlist | null) {\n return !watchList?.entries?.length;\n }\n\n private async fetchAndAddEntriesAsync(entries: IWatchlistEntry[]): Promise {\n const entities = await this.entityCacheTask.getEntitiesAsync(Entity, new GuidSet(entries.map((entry) => entry.entityId)), true);\n entities.forEach((entity) => {\n const entry = entries.find((watchlistEntry) => watchlistEntry.entityId.equals(entity.id));\n if (entry) {\n this.entities.push(\n this.createWatchlistItem(entry, entity.name, this.iconsService.getEntityIcon(entity), entity.runningState, entity.maintenance, entity.customIconId)\n );\n }\n });\n }\n\n private async onUserWatchlistAdded(entries: IWatchlistEntry[], entityCache: SelectedEntity[]): Promise {\n entries.forEach((entry) => {\n const entryCache = entityCache.find((cache) => cache.id.equals(entry.entityId));\n if (entryCache) {\n this.entities.push(\n this.createWatchlistItem(\n entry,\n entryCache.name,\n this.iconsService.getEntityTypeIcon(entryCache.entityType),\n entryCache.state,\n entryCache.maintenance,\n entryCache.customIconId\n )\n );\n }\n });\n\n const entriesToFetch = entries.filter((entry) => !entityCache.find((cache) => cache.id.equals(entry.entityId)));\n if (entriesToFetch.length > 0) {\n await this.fetchAndAddEntriesAsync(entriesToFetch);\n }\n }\n\n private onUserWatchlistRemoved(entityId: IGuid): void {\n const existingItem = this.findItem(entityId);\n if (existingItem) {\n this.entities.remove(existingItem);\n }\n }\n\n private onUserWatchlistModified(entry: IWatchlistEntry): void {\n const existingItem = this.findItem(entry.entityId);\n if (existingItem) {\n existingItem.flagged = this.isWatchlistEntryFlagged(entry);\n }\n }\n\n private findItem(entityId: IGuid): WatchlistItem | undefined {\n return this.entities.find((entityItem) => entityItem.guid.equals(entityId));\n }\n\n private isWatchlistEntryFlagged(entry?: IWatchlistEntry): boolean {\n return entry?.priority === WatchlistPriority.Flagged ?? false;\n }\n\n private updateWatchedEntities() {\n this.watchedEntities$.next(this.entities.map((watchedEntity) => watchedEntity.guid));\n }\n}\n","import { KeyValue } from '@angular/common';\nimport { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { groupBy } from 'lodash-es';\n\n@Pipe({\n name: 'groupBy',\n})\n@Injectable()\nexport class GroupBy implements PipeTransform {\n public transform(list: T[], field: keyof T): Array> {\n const keyValues: Array> = [];\n const group = groupBy(list, field);\n Object.entries(group).forEach(([key, value]) => {\n keyValues.push(this.createKeyValue(key, value));\n });\n return keyValues;\n }\n\n private createKeyValue(key: string, value: T[]): KeyValue {\n return { key, value };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { EventMonitoringContentTypes } from '@modules/shared/enumerations/event-monitoring-content-types';\nimport { SIDE_CONTEXT_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { ContentProviderService } from '../content/content-provider.service';\nimport { SideContextDataService } from '../side-context-data/side-context-data.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserWatchlistRequestService {\n constructor(@Inject(SIDE_CONTEXT_SERVICE) private sideContextService: SideContextDataService, private contentProviderService: ContentProviderService) {}\n\n public async toggleShowWatchListAsync(): Promise {\n const currentContent = this.sideContextService.currentContent;\n if (!currentContent?.mainContent.type.equals(EventMonitoringContentTypes.WatchList)) {\n const watchListRequest = new FieldObject();\n watchListRequest.setField('WatchlistRequest', '');\n const content = await this.contentProviderService.getContentFromFieldsAsync(watchListRequest);\n if (content) {\n this.sideContextService.setMainContent(content);\n }\n } else {\n this.sideContextService.clearMainContent();\n }\n }\n\n public async showWatchlistEditorAsync(): Promise {\n const editWatchListRequest = new FieldObject();\n editWatchListRequest.setField('EditWatchlistRequest', '');\n const content = await this.contentProviderService.getContentFromFieldsAsync(editWatchListRequest);\n if (content) {\n this.sideContextService.pushContent(content);\n }\n }\n}\n","import { IWatchlistEntry, WatchlistPriority } from '@modules/shared/api/api';\nimport { MonitoredEntityEvent } from '@modules/shared/controllers/events/monitored-entity-event';\nimport { EventTimeService } from '@modules/shared/services/time/event-time.service';\nimport { Subscription, timer } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EventsDismisser } from './event-dismisser';\n\nexport class CachedMonitoredEntityEvent {\n public isNew = true;\n public isDestroyed = false;\n public eventNumber = 0;\n private monitoredEntityPriority: WatchlistPriority;\n private monitoredEntityId: IGuid;\n private eventId: IGuid;\n private monitoredEntityTimestampMs: number;\n\n private cachedFormattedDate?: string;\n private cachedFormattedTime?: string;\n\n private timerSubscription: Subscription;\n\n constructor(\n public monitoredEntityEvent: MonitoredEntityEvent,\n userWatchlistItem: IWatchlistEntry,\n private eventTimeService: EventTimeService,\n eventsDismisser: EventsDismisser,\n timeoutMs: number\n ) {\n this.monitoredEntityPriority = userWatchlistItem.priority;\n this.monitoredEntityId = userWatchlistItem.entityId;\n this.eventId = this.monitoredEntityEvent.event.id ?? SafeGuid.EMPTY;\n this.monitoredEntityTimestampMs = Date.parse(this.monitoredEntityEvent.event.timestamp) ?? Date.now();\n this.timerSubscription = timer(timeoutMs).subscribe(() => eventsDismisser.dismissEvent(this.eventNumber));\n }\n\n get formattedDate(): string {\n this.cachedFormattedDate ??= this.eventTimeService.formatDate(this.monitoredEntityEvent.event);\n return this.cachedFormattedDate;\n }\n\n get formattedTime(): string {\n this.cachedFormattedTime ??= this.eventTimeService.formatTime(this.monitoredEntityEvent.event);\n return this.cachedFormattedTime;\n }\n\n get id(): IGuid {\n return this.eventId;\n }\n\n get priority(): WatchlistPriority {\n return this.monitoredEntityPriority;\n }\n\n get entityId(): IGuid {\n return this.monitoredEntityId;\n }\n\n get timestampMs(): number {\n return this.monitoredEntityTimestampMs;\n }\n\n public updateUserWatchlistItem(newUserWatchlistItem: IWatchlistEntry): void {\n this.monitoredEntityPriority = newUserWatchlistItem.priority;\n }\n\n public destroy(): void {\n if (!this.timerSubscription.closed) {\n this.timerSubscription.unsubscribe();\n }\n this.isDestroyed = true;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IWatchlistEntry, Watchlist, WatchlistPriority } from '@modules/shared/api/api';\nimport { MonitoredEntityEvent } from '@modules/shared/controllers/events/monitored-entity-event';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { EventsService } from '@modules/shared/services/events/events.service';\nimport { EventTimeService } from '@modules/shared/services/time/event-time.service';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { delayWhen, filter, take, takeUntil, tap } from 'rxjs/operators';\nimport { GuidMap, IGuid } from 'safeguid';\nimport { CachedMonitoredEntityEvent } from './cached-monitored-entity-event';\nimport { EventsDismisser } from './event-dismisser';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsMonitoringService implements OnDestroy, EventsDismisser {\n public MAX_EVENTS_COUNT = 250;\n public missedEventsCount$: Observable;\n public newEvents$: Observable;\n public receivedEvents$: Observable;\n\n private readonly fifteenMinutesInMilliseconds = 900_000;\n private missedEventsCountSubject$ = new BehaviorSubject(0);\n private monitoredEntitySubscriptionsMap = new GuidMap();\n private watchlistEntryMap = new GuidMap();\n private userWatchlistServiceSubscriptions = new SubscriptionCollection();\n private receivedEvents: CachedMonitoredEntityEvent[] = [];\n private newEventsSubject$ = new Subject();\n private receivedEventsSubject$ = new BehaviorSubject([]);\n private isLiveMonitoring = false;\n private isMonitoring = false;\n private cacheLifetimeMilliseconds = this.fifteenMinutesInMilliseconds;\n\n constructor(\n private userWatchlistService: UserWatchlistService,\n private eventsService: EventsService,\n private authService: AuthService,\n private eventTimeService: EventTimeService\n ) {\n this.missedEventsCount$ = this.missedEventsCountSubject$.asObservable();\n this.receivedEvents$ = this.receivedEventsSubject$.asObservable();\n this.newEvents$ = this.newEventsSubject$.asObservable();\n this.subscribeAuthService();\n }\n\n ngOnDestroy(): void {\n this.receivedEventsSubject$.complete();\n this.newEventsSubject$.complete();\n this.clearEvents();\n }\n\n /**\n * Dismiss an existing event from the list of cached events\n */\n public dismissEvent(eventNumber: number): void {\n const eventToDelete = this.findCachedEvent(eventNumber);\n if (eventToDelete) {\n this.removeReceivedEvent(eventToDelete);\n }\n }\n\n /**\n * Marks all events as read\n */\n public markAllAsRead(): void {\n const eventsNotRead = this.receivedEvents.filter((event) => event.isNew);\n if (eventsNotRead.length > 0) {\n eventsNotRead.forEach((event) => this.markAsRead(event.eventNumber));\n this.emitReceivedEvents();\n }\n }\n\n /**\n * Marks an event as read\n */\n public markAsRead(eventNumber: number): void {\n const eventToMarkAsRead = this.findCachedEvent(eventNumber);\n if (eventToMarkAsRead) {\n eventToMarkAsRead.isNew = false;\n this.emitReceivedEvents();\n }\n }\n\n /**\n * Dismiss all cached events\n */\n public dismissAllEvents(): void {\n this.dismissEvents();\n }\n\n /**\n * Dismiss all events associated to a priority\n */\n public dismissEvents(priority?: WatchlistPriority): void {\n this.clearReceivedEvents(priority);\n }\n\n public toggleLiveMonitoringState(): void {\n this.isLiveMonitoring = !this.isLiveMonitoring;\n\n // Reset missed events count when we are live monitoring\n if (this.isLiveMonitoring) {\n this.resetMissedEventsCount();\n }\n }\n\n /*\n * Clear all current event monitoring\n */\n private clearEvents(): void {\n this.userWatchlistServiceSubscriptions.unsubscribeAll();\n Array.from(this.monitoredEntitySubscriptionsMap.keys()).forEach((key) => this.removeUserWatchlistItem(key));\n this.clearReceivedEvents();\n this.resetMissedEventsCount();\n }\n\n private clearReceivedEvents(priority?: WatchlistPriority): void {\n if (this.receivedEvents.length > 0) {\n let eventsToClear = this.receivedEvents.slice();\n if (priority !== undefined) {\n eventsToClear = eventsToClear.filter((event) => event.priority === priority);\n }\n\n eventsToClear.forEach((event) => {\n event.destroy();\n this.receivedEvents.remove(event);\n });\n\n this.emitReceivedEvents();\n }\n }\n\n private removeReceivedEvent(cachedMonitoredEntityEvent: CachedMonitoredEntityEvent) {\n this.receivedEvents.remove(cachedMonitoredEntityEvent);\n cachedMonitoredEntityEvent.destroy();\n this.decreaseMissedEventsCount();\n this.emitReceivedEvents();\n }\n\n /*\n * Start monitoring for entities\n */\n private startMonitoring(): void {\n if (!this.isMonitoring) {\n this.isMonitoring = true;\n this.initializeMonitoring();\n }\n }\n\n /*\n * Stop monitoring entities\n */\n private stopMonitoring(): void {\n if (this.isMonitoring) {\n this.isMonitoring = false;\n this.clearEvents();\n }\n }\n\n /**\n * Fetches the user watch list and starts listening for new events.\n */\n private initializeMonitoring(): void {\n this.userWatchlistServiceSubscriptions.add(\n this.userWatchlistService.watchlist$\n .pipe(\n delayWhen(() => this.fetchCacheLifetime()),\n filter((watchlist): watchlist is Watchlist => watchlist !== null),\n take(1)\n )\n .subscribe((watchlist) => {\n this.addUserWatchlistItems(watchlist.entries);\n this.subscribeToUserWatchlistObservers();\n })\n );\n }\n\n private fetchCacheLifetime(): Observable {\n return this.eventsService.cacheLifetimeMilliseconds$.pipe(\n take(1),\n tap((cache) => (this.cacheLifetimeMilliseconds = cache))\n );\n }\n\n /**\n * Subscribes to watch list observers and dictates what to do when watch list items\n * are added, modified and removed from the watch list.\n */\n private subscribeToUserWatchlistObservers(): void {\n this.userWatchlistServiceSubscriptions.add(this.userWatchlistService.added$.subscribe((userWatchlistItems) => this.addUserWatchlistItems(userWatchlistItems)));\n this.userWatchlistServiceSubscriptions.add(this.userWatchlistService.modified$.subscribe((userWatchlistItem) => this.updateUserWatchlistItem(userWatchlistItem)));\n this.userWatchlistServiceSubscriptions.add(this.userWatchlistService.removed$.subscribe((userWatchlistItemId) => this.removeUserWatchlistItem(userWatchlistItemId)));\n }\n\n /**\n * Pushes new events to the received events list.\n *\n * @param event New event\n * @param userWatchlistItem Watch list item associated to the event\n */\n private newEvents(monitoredEntityEvents: MonitoredEntityEvent[], userWatchlistItem: IWatchlistEntry): void {\n const newEvents = monitoredEntityEvents.map(\n // Todo: Here we have a circular dependency between the EventsMonitoringService and the CachedMonitoredEntityEvent ('this' parameter).\n (entityEvent) => new CachedMonitoredEntityEvent(entityEvent, userWatchlistItem, this.eventTimeService, this, this.cacheLifetimeMilliseconds)\n );\n newEvents.sort((event1, event2) => event2.timestampMs - event1.timestampMs);\n const combinedEvents = [...newEvents, ...this.receivedEvents];\n\n // Delete oldest events\n if (combinedEvents.length > this.MAX_EVENTS_COUNT) {\n combinedEvents.slice(this.MAX_EVENTS_COUNT, combinedEvents.length).forEach((event) => event.destroy());\n combinedEvents.length = this.MAX_EVENTS_COUNT;\n }\n\n this.receivedEvents = combinedEvents;\n\n if (!this.isLiveMonitoring) {\n this.increaseMissedEventsCount(newEvents.length);\n }\n\n this.emitReceivedEvents();\n this.newEventsSubject$.next(newEvents);\n }\n\n /**\n * Adds a new watch list item and subscribes to the entity monitoring.\n *\n * @param userWatchlistItem Newly added watch list item\n */\n private addUserWatchlistItems(userWatchlistItems: IWatchlistEntry[]): void {\n userWatchlistItems.forEach((userWatchlistItem) => {\n this.watchlistEntryMap.set(userWatchlistItem.entityId, userWatchlistItem);\n this.monitoredEntitySubscriptionsMap.set(\n userWatchlistItem.entityId,\n this.eventsService.startMonitoringEvents(userWatchlistItem.entityId).subscribe((monitoredEntityEvents) => {\n const watchlistEntry = this.watchlistEntryMap.get(userWatchlistItem.entityId);\n if (watchlistEntry) {\n this.newEvents(monitoredEntityEvents, watchlistEntry);\n }\n })\n );\n });\n }\n\n private getEntityEvents(entityId: IGuid): CachedMonitoredEntityEvent[] {\n return this.receivedEvents.filter((monitoredEntityEvent) => monitoredEntityEvent.entityId.equals(entityId));\n }\n\n /**\n * Updates an existing user watch list item.\n *\n * @param updatedUserWatchlistItem Updated user watch list item\n */\n private updateUserWatchlistItem(updatedUserWatchlistItem: IWatchlistEntry): void {\n const affectedEvents = this.getEntityEvents(updatedUserWatchlistItem.entityId);\n if (affectedEvents.length > 0) {\n this.watchlistEntryMap.set(updatedUserWatchlistItem.entityId, updatedUserWatchlistItem);\n affectedEvents.forEach((monitoredEntityEvent) => monitoredEntityEvent.updateUserWatchlistItem(updatedUserWatchlistItem));\n this.emitReceivedEvents();\n }\n }\n\n /**\n * Unsubscribes from monitored entity.\n *\n * @param entityId Removed watch list item id\n */\n private removeUserWatchlistItem(entityId: IGuid): void {\n const subscription = this.monitoredEntitySubscriptionsMap.get(entityId);\n if (subscription) {\n subscription.unsubscribe();\n this.watchlistEntryMap.delete(entityId);\n this.monitoredEntitySubscriptionsMap.delete(entityId);\n this.removeEntityReceivedEvents(entityId);\n }\n }\n\n private removeEntityReceivedEvents(entityId: IGuid): void {\n const affectedEvents = this.getEntityEvents(entityId);\n if (affectedEvents.length > 0) {\n this.receivedEvents = this.receivedEvents.filter((receivedEvent) => affectedEvents.indexOf(receivedEvent) < 0);\n this.emitReceivedEvents();\n }\n }\n\n /*\n * Start monitoring when logged in, and stop when logged out.\n */\n private subscribeAuthService(): void {\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((isLoggedIn) => {\n if (isLoggedIn) {\n this.startMonitoring();\n } else {\n this.stopMonitoring();\n }\n });\n }\n\n private emitReceivedEvents() {\n this.resetEventNumbers();\n this.receivedEventsSubject$.next(this.receivedEvents);\n }\n\n private findCachedEvent(eventNumber: number): CachedMonitoredEntityEvent | undefined {\n return this.receivedEvents.find((receivedEvent) => receivedEvent.eventNumber === eventNumber);\n }\n\n private decreaseMissedEventsCount(): void {\n const currentMissedEventsCount = this.missedEventsCountSubject$.getValue();\n if (currentMissedEventsCount > 0) {\n this.missedEventsCountSubject$.next(currentMissedEventsCount - 1);\n }\n }\n\n private increaseMissedEventsCount(eventCount: number): void {\n const newEventCount = this.missedEventsCountSubject$.getValue() + eventCount;\n this.missedEventsCountSubject$.next(Math.min(newEventCount, this.MAX_EVENTS_COUNT + 1));\n }\n\n private resetEventNumbers() {\n this.receivedEvents.forEach((event, index) => (event.eventNumber = index));\n }\n\n private resetMissedEventsCount(): void {\n this.missedEventsCountSubject$.next(0);\n }\n}\n","\n \n \n
      \n \n \n
    • \n {{ translatePriority(item.priority) }}\n \n {{ 'STE_BUTTON_DISMISS' | translate }}\n \n
    • \n
    • \n \n
    • \n
      \n
      \n
    \n \n {{ 'STE_BUTTON_NEW_EVENTS' | translate }}\n \n
    \n
    \n\n \n \n
    \n {{ 'STE_MESSAGE_INFO_MONITORED_EVENTS_DISPLAYED_HERE' | translate }}\n
    \n
    \n
    \n\n\n\n
    \n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GuidMap, IGuid } from 'safeguid';\nimport { EventEntry, Watchlist, WatchlistPriority } from '@modules/shared/api/api';\nimport { Observable, BehaviorSubject, from } from 'rxjs';\nimport { concatMap, delayWhen, map, shareReplay, take, tap } from 'rxjs/operators';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { SharedContentFields } from '@modules/shared/enumerations/shared-content-fields';\nimport { SideContextDataService } from '@modules/shared/services/side-context-data/side-context-data.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { EventMonitoringLoggerService } from '@modules/shared/services/analytics/event-monitoring-logger.service';\nimport { CachedMonitoredEntityEvent } from '@modules/general/services/Events/cached-monitored-entity-event';\nimport { EventsMonitoringService } from '@modules/general/services/Events/events-monitoring.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nexport class EventItem {\n get eventNumber(): number {\n return this.cachedEvent.eventNumber;\n }\n\n get id(): IGuid {\n return this.cachedEvent.id;\n }\n\n get isNew(): boolean {\n return this.cachedEvent.isNew;\n }\n\n get eventEntry(): EventEntry {\n return this.cachedEvent.monitoredEntityEvent.event;\n }\n\n get formattedTime(): string | null {\n return this.cachedEvent.formattedTime;\n }\n\n get formattedDate(): string | null {\n return this.cachedEvent.formattedDate;\n }\n\n get priority(): WatchlistPriority {\n return this.cachedEvent.priority;\n }\n\n constructor(public entity: IEntity, public cachedEvent: CachedMonitoredEntityEvent) {}\n}\n@UntilDestroy()\n@Component({\n selector: 'app-event-list',\n templateUrl: './event-list.component.html',\n styleUrls: ['./event-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EventListComponent implements OnInit, OnDestroy {\n @ViewChild(CdkVirtualScrollViewport) viewPort?: CdkVirtualScrollViewport;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n\n public hasEvents$: Observable;\n public events$: Observable;\n public hasMultiplePriorities$: Observable;\n public isLoading$: Observable;\n public isScrollToTopVisible = false;\n\n private cachedEntities = new GuidMap();\n private isLoadingSubject$ = new BehaviorSubject(true);\n private isScrolled = false;\n private watchlist$: Observable;\n\n constructor(\n private eventsMonitoringService: EventsMonitoringService,\n private securityCenterClientService: SecurityCenterClientService,\n private contentProviderService: ContentProviderService,\n private sideContextDataService: SideContextDataService,\n private userWatchlistService: UserWatchlistService,\n private translateService: TranslateService,\n private eventMonitoringLoggerService: EventMonitoringLoggerService\n ) {\n this.isLoading$ = this.isLoadingSubject$.asObservable();\n this.watchlist$ = this.userWatchlistService.watchlist$.pipe(shareReplay(1));\n this.hasMultiplePriorities$ = this.watchlist$.pipe(map((watchlist) => new Set(watchlist?.entries.map((entry) => entry.priority)).size > 1));\n this.events$ = this.eventsMonitoringService.receivedEvents$.pipe(\n delayWhen(() => this.fetchEntities()),\n map((events) => this.createEventItems(events)),\n map((eventItems) => this.sortEventItemsByPriority(eventItems)),\n shareReplay(1),\n untilDestroyed(this)\n );\n this.hasEvents$ = this.events$.pipe(\n map((events) => events.length > 0),\n untilDestroyed(this)\n );\n\n this.eventsMonitoringService.newEvents$.pipe(untilDestroyed(this)).subscribe(() => this.updateNewEventsButtonVisibility());\n }\n\n ngOnInit() {\n this.eventsMonitoringService.toggleLiveMonitoringState();\n }\n\n ngOnDestroy() {\n this.eventsMonitoringService.toggleLiveMonitoringState();\n }\n\n public trackByItem(index: number, item: EventItem): string {\n return item.id.toString();\n }\n\n public onDismissEvent(eventItem: EventItem): void {\n this.eventMonitoringLoggerService.logEvent(\n 'Manually dismissed event',\n 'Event was manually dismissed using the \"X\" when hovering the event in the event list',\n EventMonitoringContext.Watchlist\n );\n this.eventsMonitoringService.dismissEvent(eventItem.eventNumber);\n }\n\n public onDismissPriority(priority: string): void {\n this.eventsMonitoringService.dismissEvents(Number(priority));\n this.eventMonitoringLoggerService.logEvent(\n 'Dismissed all event of a specific priority',\n 'All events of a specific priority have been dismissed using the button in the event list',\n EventMonitoringContext.Watchlist,\n priority\n );\n }\n\n public onItemSeen(eventItem: EventItem): void {\n this.eventsMonitoringService.markAsRead(eventItem.eventNumber);\n }\n\n public async openEventDetailsAsync(event: EventEntry): Promise {\n const eventField = new FieldObject();\n eventField.setFieldGuid(SharedContentFields.EventId, event.id);\n eventField.setFieldGuid(SharedContentFields.ContextId, event.contextId);\n\n const content = await this.contentProviderService.getContentFromFieldsAsync(eventField);\n if (content) {\n this.sideContextDataService?.pushContent(content);\n this.eventMonitoringLoggerService.logEvent(\n 'Opened event details',\n 'Opened event details in the sidepane by clicking on a specific event in the event list',\n EventMonitoringContext.Watchlist\n );\n }\n }\n\n public translatePriority(priority: string): string {\n const priorityString = Number(priority) === WatchlistPriority.Normal ? 'STE_LABEL_OTHER' : 'STE_LABEL_FLAGGED';\n return this.translateService.instant(priorityString) as string;\n }\n\n public didPriorityChange(currentEvent: EventItem, previousEvent: EventItem): boolean {\n return currentEvent.priority !== previousEvent?.priority;\n }\n\n public onScroll(topIndex: number): void {\n this.isScrolled = topIndex > 0;\n if (!this.isScrolled) this.isScrollToTopVisible = false;\n }\n\n public scrollBackToTop(): void {\n this.viewPort?.scrollToIndex(0);\n }\n\n private fetchEntities(): Observable {\n return this.watchlist$.pipe(\n take(1),\n tap(() => this.isLoadingSubject$.next(true)),\n map((watchlist) => this.createEntityQueryFromWatchlist(watchlist)),\n tap((entityQuery) => this.addEntityIdsToCache(entityQuery?.guids)),\n concatMap((entityQuery) => this.getEntitiesObservable(entityQuery)),\n tap((entities) => this.addEntitiesToCache(entities)),\n tap(() => this.isLoadingSubject$.next(false))\n );\n }\n\n private addEntityIdsToCache(entityIds?: Set): void {\n entityIds?.forEach((entityId) => this.cachedEntities.set(entityId, null));\n }\n\n private addEntitiesToCache(entities?: IEntity[]): void {\n entities?.forEach((entity) => this.cachedEntities.set(entity.id, entity));\n }\n\n private getEntitiesObservable(entityQuery: EntityQuery | null): Observable {\n return from(entityQuery ? this.securityCenterClientService.scClient.getEntitiesAsync(Entity, entityQuery) : Promise.resolve([]));\n }\n\n private createEntityQueryFromWatchlist(watchlist: Watchlist | null): EntityQuery | null {\n const entityIds = watchlist?.entries?.map((entry) => entry.entityId);\n const entityIdsNotInCacheToQuery = entityIds?.filter((entityId) => !this.cachedEntities.has(entityId));\n if (entityIdsNotInCacheToQuery && entityIdsNotInCacheToQuery?.length > 0 && this.securityCenterClientService?.scClient) {\n return this.createEntityQuery(entityIdsNotInCacheToQuery);\n }\n return null;\n }\n\n private createEntityQuery(entityIds: IGuid[]): EntityQuery {\n const entityQuery = new EntityQuery();\n entityQuery.guids = new Set(entityIds);\n entityQuery.fields.add(EntityFields.nameField);\n entityQuery.fields.add(EntityFields.entityTypeField);\n return entityQuery;\n }\n\n private createEventItems(events: CachedMonitoredEntityEvent[]): EventItem[] {\n return events.reduce((result: EventItem[], event: CachedMonitoredEntityEvent) => {\n const foundEntity = this.cachedEntities.get(event.entityId);\n if (foundEntity) {\n result.push(new EventItem(foundEntity, event));\n }\n return result;\n }, []);\n }\n\n private sortEventItemsByPriority(eventItems: EventItem[]): EventItem[] {\n return eventItems.sort((item1, item2) => {\n return item1.priority < item2.priority ? 1 : item1.priority > item2.priority ? -1 : 0;\n });\n }\n\n private updateNewEventsButtonVisibility(): void {\n this.isScrollToTopVisible = this.isScrolled;\n }\n}\n","\n \n \n\n \n \n
    \n {{ 'STE_BUTTON_ADD_ITEMS' | translate }}\n
    \n
    \n
    \n\n\n\n
    \n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ButtonFlavor } from '@genetec/gelato';\nimport { Watchlist } from '@modules/shared/api/api';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { EventMonitoringContentTypes } from '@modules/shared/enumerations/event-monitoring-content-types';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { EventMonitoringLoggerService } from '@modules/shared/services/analytics/event-monitoring-logger.service';\nimport { EventMonitoringFeatureFlags } from '@modules/shared/services/events/feature-flags';\nimport { UserWatchlistRequestService } from '@modules/shared/services/watchlist/user-watchlist-request.service';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\n\n@InternalContentPluginDescriptor({\n type: WatchlistComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: WatchlistComponent.pluginId, priority: 0, standalone: true },\n isContentSupported: (content: Content) => !!content?.type?.equals(EventMonitoringContentTypes.WatchList),\n requirements: { enabledFeatureFlags: [EventMonitoringFeatureFlags.General] },\n})\n@Component({\n selector: 'app-watchlist',\n templateUrl: './watchlist.component.html',\n styleUrls: ['./watchlist.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WatchlistComponent implements OnInit {\n public static pluginId = SafeGuid.parse('4b8249cd-1ec4-4be1-b2fd-fbb3a83ed63e');\n public ButtonFlavor = ButtonFlavor;\n public watchlist$!: Observable;\n public hasWatchlistEntries$!: Observable;\n\n constructor(\n private userWatchlistService: UserWatchlistService,\n private userWatchlistRequestService: UserWatchlistRequestService,\n private eventMonitoringLoggerService: EventMonitoringLoggerService\n ) {}\n\n ngOnInit(): void {\n this.watchlist$ = this.userWatchlistService.watchlist$.pipe(shareReplay(1));\n this.hasWatchlistEntries$ = this.watchlist$.pipe(map((watchlist) => (watchlist?.entries?.length ?? 0) > 0));\n this.eventMonitoringLoggerService.logEvent('Opened watchlist', 'Watchlist opened from the watchlist tray icon', EventMonitoringContext.Watchlist);\n }\n\n public async onAddItemsClick(): Promise {\n await this.userWatchlistRequestService.showWatchlistEditorAsync();\n this.eventMonitoringLoggerService.logEvent('Opened edit watchlist', 'Add item button clicked when no entities are being monitored', EventMonitoringContext.Watchlist);\n }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\nimport { AfterViewInit, Directive, ElementRef, Input, Optional } from '@angular/core';\nimport { FormControlName, NgControl } from '@angular/forms';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\n\ntype ElementThatSupportsValidity = HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement;\n\n// Add Gelato components that support :invalid pseudo elements in the directive's selector property and in getElementThatSupportsValidity methods.\n\n/**\n * Directive that automatically syncs a form control's, bound to a Gelato component, validity state to the correct element down in the\n * Gelato component's shadow DOM (applies *:invalid pseudo* class so we get invalid style of the Gelato component when the form control is invalid).\n */\n@UntilDestroy()\n@Directive({\n selector: `\n gen-text-input[formControlName], gen-text-input[formControl], \n gen-password-input[formControlName], gen-password-input[formControl], \n [appGelatoInvalidityCompatControl]\n `,\n providers: [],\n})\nexport class GelatoInvalidityCompatDirective implements AfterViewInit {\n @Input() appGelatoInvalidityCompatControl?: NgControl;\n element: ElementThatSupportsValidity | null = null;\n\n private initialized = false;\n private formControl?: NgControl;\n private nativeElement: HTMLElement;\n constructor(\n private host: ElementRef,\n private loggerService: LoggerService,\n @Optional() public ngControl: NgControl,\n @Optional() public formControlName: FormControlName\n ) {\n this.nativeElement = host.nativeElement;\n this.formControl = ngControl ?? formControlName;\n }\n\n ngAfterViewInit(): void {\n if (!this.formControl?.statusChanges && !this.appGelatoInvalidityCompatControl?.statusChanges) {\n this.loggerService.traceError(`Couldn't find control associated with Gelato component ${this.nativeElement.tagName.toLowerCase()}`);\n return;\n }\n\n (this.appGelatoInvalidityCompatControl ?? this.formControl)?.statusChanges?.pipe(untilDestroyed(this)).subscribe((newStatus) => {\n if (!this.initialized && this.nativeElement.classList.contains('hydrated')) {\n this.element = this.getElementThatSupportsValidity();\n this.initialized = true;\n }\n\n if (this.element) {\n if (newStatus === 'VALID') {\n this.element.setCustomValidity('');\n } else {\n // Set :invalid\n this.element.setCustomValidity('error');\n }\n }\n });\n }\n\n private getElementThatSupportsValidity(): ElementThatSupportsValidity | null {\n switch (this.nativeElement.tagName.toLowerCase()) {\n case 'gen-text-input':\n // textarea is required when gen-text-imput is multiline\n return (\n this.nativeElement.shadowRoot?.querySelector('input[type=text]') ??\n this.nativeElement.shadowRoot?.querySelector('textarea') ??\n null\n );\n case 'gen-password-input':\n return this.nativeElement.shadowRoot?.querySelector('input[type=password]') ?? null;\n // Add other Gelato components here...\n }\n\n return null;\n }\n}\n","import { CreateFeatureFlag, CreateFeatureFlagGroup } from '@modules/feature-flags/feature-flag';\n\nexport const ApplicationInsightsFeatureFlags = CreateFeatureFlagGroup({\n General: CreateFeatureFlag('Flag.ApplicationInsights', true),\n});\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { LoggerService } from '../services/logger/logger.service';\nimport { stringFormat } from '../utilities/StringFormat';\n\n// maxLengthValidator\n// https://github.com/angular/angular/blob/970a3b5c70fee29aa40945836ebeb464d75438e4/packages/forms/src/validators.ts#L519\ninterface MaxLengthValidatorError {\n requiredLength: number;\n actualLength: number;\n}\n\n@UntilDestroy()\n@Directive({\n selector: 'gen-message[appFormControlError]',\n})\nexport class FormControlErrorDirective implements OnInit {\n private static readonly defaultErrorMax = 1;\n\n @Input() appFormControlError?: AbstractControl;\n /**\n * Max number of errors to show (new lines between each ones).\n * Default: 1\n */\n @Input() appFormControlErrorMax?: number;\n /**\n * Overrides default translated string for specific errors.\n */\n @Input() appFormControlErrorOverrides?: Record;\n\n private element?: HTMLElement;\n\n constructor(private elementRef: ElementRef, private loggerService: LoggerService, private translateService: TranslateService) {}\n\n ngOnInit(): void {\n if (!this.appFormControlError) {\n this.loggerService.traceWarning('No form control passed to appFormControlError.');\n }\n if (!('innerHTML' in this.elementRef.nativeElement)) {\n this.loggerService.traceWarning('appFormControlError affected to an invalid element.');\n } else {\n this.element = this.elementRef.nativeElement as HTMLElement;\n }\n this.appFormControlError?.statusChanges.pipe(untilDestroyed(this)).subscribe((status) => {\n if (!this.element || !this.appFormControlError) {\n return;\n }\n\n if (status !== 'INVALID') {\n this.element.textContent = '';\n } else if (this.appFormControlError.dirty || this.appFormControlError.touched) {\n this.element.textContent = this.errorToTranslatedString(this.appFormControlError.errors);\n }\n });\n }\n\n private errorToTranslatedString(errors: ValidationErrors | null): string {\n if (errors == null) {\n return '';\n }\n\n const errorMessages: string[] = [];\n if (typeof errors !== 'object') {\n throw new Error('Unexpected value for ValidatorsErrorTranslatePipe');\n }\n\n for (const [errorKey, value] of Object.entries(errors).slice(0, this.appFormControlErrorMax ?? FormControlErrorDirective.defaultErrorMax)) {\n switch (errorKey) {\n case 'required':\n errorMessages.push(this.translateService.instant(this.appFormControlErrorOverrides?.required ?? 'STE_MESSAGE_ERROR_FIELDISREQUIRED') as string);\n break;\n case 'email':\n errorMessages.push(this.translateService.instant(this.appFormControlErrorOverrides?.email ?? 'STE_MESSAGE_ERROR_CARDHOLDER_INVALIDEMAIL') as string);\n break;\n case 'maxlength':\n errorMessages.push(\n stringFormat(\n this.translateService.instant(this.appFormControlErrorOverrides?.email ?? 'STE_MESSAGE_ERROR_CANNOTEXCEEDXCHARACTERS') as string,\n (value as MaxLengthValidatorError).requiredLength.toString()\n )\n );\n break;\n default:\n if (this.appFormControlErrorOverrides?.errorKey) {\n errorMessages.push(this.translateService.instant(this.appFormControlErrorOverrides?.errorKey) as string);\n }\n break;\n }\n }\n return errorMessages.join('
    ');\n }\n}\n","import { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\n\nexport const getAccessStatusResourceString = (accessStatus: AccessStatus): string => {\n switch (accessStatus) {\n case AccessStatus.Active:\n return 'STE_LABEL_CARDHOLDER_STATUS_ACTIVE';\n break;\n case AccessStatus.Inactive:\n return 'STE_LABEL_CARDHOLDER_STATUS_INACTIVE';\n break;\n case AccessStatus.Requested:\n return 'STE_LABEL_CARDHOLDER_STATUS_REQUESTED';\n break;\n case AccessStatus.Expired:\n return 'STE_LABEL_CARDHOLDER_STATUS_EXPIRED';\n break;\n case AccessStatus.Lost:\n return 'STE_LABEL_CARDHOLDER_STATUS_LOST';\n break;\n case AccessStatus.Stolen:\n return 'STE_LABEL_CARDHOLDER_STATUS_STOLEN';\n break;\n default:\n return accessStatus as string;\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getAccessStatusResourceString } from '@modules/shared/utilities/accessStatusTranslate';\n\n@Pipe({ name: 'accessStatusToTranslatedString' })\nexport class AccessStatusToTranslatedStringPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n public transform(accessStatus: AccessStatus): string {\n return this.translateService.instant(getAccessStatusResourceString(accessStatus)) as string;\n }\n}\n","import { AfterViewInit, Component, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgModel, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GenComboboxComponent, GenMeltedItem, GenMeltedMenuItem, LabelComplement, Severity } from '@genetec/gelato-angular';\n\n/**\n * TODO: Remove if gen-combobox is migrated.\n *\n * Temporary component (until gen-combobox is migrated) to simplify the use of gen-combobox in forms.\n *\n * Allows its formControlName / [formControl] directive to be bound to the its items id instead of a\n * GenMeltedItem / GenMeltedMenuItem.\n *\n * When the form's value change, the correct item with the corresponding id will be automatically selected.\n */\n@Component({\n selector: 'app-form-gen-combobox',\n styleUrls: ['./form-gen-combobox.component.scss'],\n templateUrl: './form-gen-combobox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: FormGenComboboxComponent,\n multi: true,\n },\n ],\n})\nexport class FormGenComboboxComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild(NgModel) model!: NgModel;\n @ViewChild(GenComboboxComponent) genComboboxComponent?: GenComboboxComponent;\n\n @Input() genItemsSource: GenMeltedItem[] = [];\n @Input() genLabel = '';\n @Input() genLabelComplement = LabelComplement.None;\n @Input() genMessage = '';\n @Input() genMessageSeverity = Severity.Default;\n @Input() disabled = false;\n @Input() selectedItem: GenMeltedMenuItem | GenMeltedItem | null = null;\n @Input() readonly = false;\n\n private inputValue: string | null = null;\n\n public ngAfterViewInit(): void {\n this.writeValueToCombobox();\n }\n\n public registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public writeValue(value: string): void {\n this.inputValue = value;\n this.writeValueToCombobox();\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public onSelectedItemChange(item: GenMeltedItem | GenMeltedMenuItem | null): void {\n this.inputValue = item?.id ?? null;\n this.onChange(this.inputValue);\n }\n\n public onOffClick(): void {\n this.onTouched();\n }\n\n private onChange = (_: string | null): void => {};\n private onTouched = (): void => {};\n\n private writeValueToCombobox() {\n this.selectedItem = this.genComboboxComponent?.genItemsSource?.find((item) => item.id === this.inputValue) ?? this.selectedItem;\n }\n}\n","\n\n","import { CreateFeatureFlag, CreateFeatureFlagGroup } from '@modules/feature-flags/feature-flag';\n\nexport const GeneralFeatureFlags = CreateFeatureFlagGroup({\n EntityState: CreateFeatureFlag('Flag.EntityState', true),\n ThreatLevels: CreateFeatureFlag('Flag.ThreatLevels', true),\n ExpandWidget: CreateFeatureFlag('Flag.ExpandWidget', true),\n});\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { IGuid } from 'safeguid';\nexport class ThreatLevelChangedEvent extends EventBase {\n public get newThreatLevelGuid(): IGuid {\n return this.getField('NewThreatLevel');\n }\n public get affectedAreaGuid(): IGuid {\n return this.getField('AffectedArea');\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { ThreatLevelClient, ThreatLevelInfo } from '@modules/shared/api/api';\nimport { ThreatLevelChangedEvent } from '@modules/shared/controllers/threat-levels/threat-levels-changed-event';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { map, take, tap } from 'rxjs/operators';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreatLevelService implements OnDestroy {\n public threatLevels$: Observable;\n public threatLevels: ThreatLevelInfo[] = [];\n\n private activeThreatLevelSubject: BehaviorSubject;\n get activeThreatLevel$(): Observable {\n return this.activeThreatLevelSubject.asObservable();\n }\n\n private scClient: SecurityCenterClient;\n\n private readonly threatLevelsEventKey = 'ThreatLevelChangedEvent';\n\n private threatLevelsSubscription?: Subscription;\n\n constructor(securityCenterClientService: SecurityCenterClientService, private threatLevelClient: ThreatLevelClient, private translateService: TranslateService) {\n this.scClient = securityCenterClientService?.scClient;\n this.subscribeThreatLevelsEvents();\n\n this.activeThreatLevelSubject = new BehaviorSubject(null);\n\n this.threatLevels$ = this.setupThreatLevels();\n }\n\n public ngOnDestroy(): void {\n this.threatLevelsSubscription?.unsubscribe();\n }\n\n public setThreatLevel(newThreatLevel: IGuid): void {\n this.threatLevelClient.setThreatLevel(newThreatLevel).pipe(take(1), untilDestroyed(this)).subscribe();\n }\n\n private setupThreatLevels(): Observable {\n return this.threatLevelClient.threatLevels().pipe(\n tap((results) => {\n if (!results?.length) {\n return this.threatLevels;\n }\n results.sort((threatLevelA, threatLevelB) => threatLevelA.level - threatLevelB.level);\n }),\n map((threatLevelsInfo?: ThreatLevelInfo[]) => {\n this.threatLevels = threatLevelsInfo ?? [];\n const activeThreatLevel = this.findActiveThreatLevel(this.threatLevels);\n this.activeThreatLevelSubject.next(activeThreatLevel);\n return this.threatLevels;\n })\n );\n }\n\n private findActiveThreatLevel(threatLevels: ThreatLevelInfo[]): ThreatLevelInfo | null {\n return threatLevels.find((threatLevel) => threatLevel.isActive) ?? null;\n }\n\n private subscribeThreatLevelsEvents() {\n if (!this.scClient) {\n return;\n }\n this.scClient.registerAdditionalEventTypes(this.threatLevelsEventKey, ThreatLevelChangedEvent);\n this.threatLevelsSubscription = new Subscription(this.scClient.onEventReceived((arg) => this.onEventReceived(arg)));\n }\n\n private onEventReceived(arg: EventReceivedArg): void {\n const eventBase = arg?.event;\n const threatLevelsEvent = this.getThreatLevelsEvent(eventBase);\n if (threatLevelsEvent) {\n const activeThreatLevel = this.getThreatLevelInfo(threatLevelsEvent.newThreatLevelGuid);\n this.activeThreatLevelSubject.next(activeThreatLevel);\n }\n }\n\n private getThreatLevelInfo(threatLevelId: IGuid): ThreatLevelInfo | null {\n return this.threatLevels.find((threatLevel) => threatLevel.id.equals(threatLevelId)) ?? null;\n }\n\n private getThreatLevelsEvent(eventBase: IEventBase): ThreatLevelChangedEvent | undefined {\n return eventBase.eventType === this.threatLevelsEventKey && eventBase instanceof ThreatLevelChangedEvent ? eventBase : undefined;\n }\n}\n","export enum ThreatLevelsContext {\n ApplyThreatLevel = 'Select ThreatLevel',\n ConfirmThreatLevel = 'Set ThreatLevel',\n CancelThreatLevel = 'Cancel ThreatLevel',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n Adds the bold property ( ... ) to a substring of a text\n Ex : <..> [innerHTML]=\"'The next variable {0} will be bold' | boldString: '{0}'\" \n\n This pipe is mainly used with the translate pipe and the stringFormat pipe :\n Ex : \n 'STE_..._FORMAT_..._X' | translate | boldString: '{0}' | stringFormat: 'important'\n 'This {0} value will soon be bold' | boldString: '{0}' | stringFormat: 'important'\n 'This {0} value will soon be bold' | stringFormat: 'important'\n 'This important value will soon be bold'\n\n Prefer using ... directly in other use cases.\n*/\n@Pipe({ name: 'boldString' })\nexport class BoldStringPipe implements PipeTransform {\n public transform(text: string, subText: string): string {\n return text.replace(new RegExp(`(\\\\${subText})`, 'gi'), '$1');\n }\n}\n","\n \n \n \n \n\n{{ 'STE_MESSAGE_CONFIRM_RESET_THREAT_LEVEL' | translate }}\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { ThreatLevelService } from '@modules/shared/services/threat-level/threat-level.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { TextFlavor } from '@genetec/gelato';\nimport { ThreatLevelInfo } from '@modules/shared/api/api';\nimport { SafeGuid } from 'safeguid';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { ThreatLevelsContext } from '@modules/shared/enumerations/analytics-threat-levels-context';\nimport { ConnectionAwareModalComponent } from '../../tracked/connection-aware-modal.component';\nimport { ThreatLevelModalComponent } from '../threat-level-modal.component';\n\n@Component({\n selector: 'app-threat-level-confirmation-modal',\n templateUrl: './threat-level-confirmation-modal.component.html',\n})\nexport class ThreatLevelConfirmationModalComponent extends ConnectionAwareModalComponent implements OnInit, OnDestroy {\n public selected!: ThreatLevelInfo | null;\n\n public readonly TextFlavor = TextFlavor;\n\n constructor(\n protected authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private threatLevelService: ThreatLevelService,\n private modalService: GenModalService,\n private analyticsService: AnalyticsService\n ) {\n super(authService, injector, trackingService);\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n }\n\n public setThreatLevel = async (): Promise => {\n const threatLevelId = this.selected ? toGuid(this.selected.id) : SafeGuid.EMPTY;\n this.threatLevelService.setThreatLevel(threatLevelId);\n this.analyticsService.logEvent(AnalyticsNames.Shared.ThreatLevels, {\n context: ThreatLevelsContext.ConfirmThreatLevel,\n message: `Selected Threat Level '${this.selected ? this.selected.name : 'None'}' was set`,\n });\n return Promise.resolve(true);\n };\n\n public openThreatLevelModal = async (): Promise => {\n this.analyticsService.logEvent(AnalyticsNames.Shared.ThreatLevels, {\n context: ThreatLevelsContext.CancelThreatLevel,\n message: `Previously selected Threat Level '${this.selected ? this.selected.name : 'None'}' was not set`,\n });\n this.modalService.open(ThreatLevelModalComponent);\n return Promise.resolve(true);\n };\n}\n","\n \n {{ 'STE_LABEL_SELECT_THREAT_LEVEL' | translate }}\n \n \n \n \n {{ threatLevel.name }}\n \n \n \n \n \n \n {{ 'STE_LABEL_VERB_RESET' | translate }}\n \n\n\n\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n","import { Component, Injector } from '@angular/core';\nimport { TextFlavor, ListFlavor, ButtonFlavor } from '@genetec/gelato';\nimport { ThreatLevelInfo } from '@modules/shared/api/api';\nimport { ThreatLevelService } from '@modules/shared/services/threat-level/threat-level.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { Observable } from 'rxjs';\nimport { SelectionType } from '@genetec/gelato';\nimport { Icon } from '@genetec/gelato';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { ThreatLevelsContext } from '@modules/shared/enumerations/analytics-threat-levels-context';\nimport { ConnectionAwareModalComponent } from '../tracked/connection-aware-modal.component';\nimport { ThreatLevelConfirmationModalComponent } from './threat-level-confirmation-modal/threat-level-confirmation-modal.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-threat-level-modal',\n templateUrl: './threat-level-modal.component.html',\n styleUrls: ['./threat-level-modal.component.scss'],\n})\nexport class ThreatLevelModalComponent extends ConnectionAwareModalComponent {\n public readonly ListSelectionType = SelectionType;\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly ListFlavor = ListFlavor;\n public readonly Icon = Icon;\n\n private selected: ThreatLevelInfo | null = null;\n private activeThreatLevel: ThreatLevelInfo | null = null;\n\n constructor(\n protected authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private modalService: GenModalService,\n private threatLevelService: ThreatLevelService,\n private analyticsService: AnalyticsService\n ) {\n super(authService, injector, trackingService);\n\n this.threatLevelService.activeThreatLevel$.pipe(untilDestroyed(this)).subscribe((activeThreatLevel) => {\n this.activeThreatLevel = activeThreatLevel;\n this.updateSelectedItem(activeThreatLevel);\n });\n }\n\n get threatLevels$(): Observable {\n return this.threatLevelService.threatLevels$;\n }\n\n public openThreatLevelConfirmationModal = async (): Promise => {\n this.modalService.open(ThreatLevelConfirmationModalComponent, {\n selected: this.selected,\n });\n this.analyticsService.logEvent(AnalyticsNames.Shared.ThreatLevels, {\n context: ThreatLevelsContext.ApplyThreatLevel,\n message: this.selected ? `Threat Level with name '${this.selected.name}' was selected` : `'None' Threat Level was selected`,\n });\n return Promise.resolve(true);\n };\n\n public get isSelectedTheActiveThreatLevel(): boolean {\n return this.isThreatLevelAlreadyActive(this.selected);\n }\n\n public async resetThreatLevel(): Promise {\n this.selected = null;\n this.hideModal();\n await this.openThreatLevelConfirmationModal();\n }\n\n public isThreatLevelAlreadyActive(threatLevel: ThreatLevelInfo | null): boolean {\n return this.activeThreatLevel?.id === threatLevel?.id;\n }\n\n public updateSelectedItem(activeThreatLevel: ThreatLevelInfo | null): void {\n this.selected = activeThreatLevel;\n }\n}\n","export class KnownLicenses {\n public static accessControl = 'SynergisFeaturesEnabled';\n public static LPR = 'AutoVuFeaturesEnabled';\n public static maps = 'PlanManagerBasic';\n public static video = 'OmnicastFeaturesEnabled';\n public static correlation = 'BasicAutomation';\n public static ingestion = 'Ingestion';\n public static threatLevels = 'ThreatLevel';\n}\n"," \n\n\n \n \n \n\n\n\n
    \n \n
    \n
    \n\n\n \n\n\n\n 0.5, 'text-visible p-1': isThereAnActiveThreatLevel }\"\n >\n \n \n \n {{ activeThreatLevelName }}\n \n \n \n\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ButtonFlavor, Icon } from '@genetec/gelato';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { ThreatLevelInfo } from '@modules/shared/api/api';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ThreatLevelService } from '@modules/shared/services/threat-level/threat-level.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, take } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ThreatLevelModalComponent } from '../threat-levels-modal/threat-level-modal.component';\nimport { TrackedComponent } from '../tracked/tracked.component';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\n\n@UntilDestroy()\n@Component({\n selector: 'app-threat-levels-tray',\n templateUrl: './threat-levels-tray.component.html',\n styleUrls: ['./threat-levels-tray.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalPluginDescriptor({\n type: ThreatLevelsTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: ThreatLevelsTrayComponent.pluginId },\n isSupported: () => true,\n requirements: {\n enabledFeatureFlags: [GeneralFeatureFlags.ThreatLevels],\n optionalGlobalPrivileges: [KnownPrivileges.setThreatLevelPrivilege],\n licenses: [KnownLicenses.threatLevels],\n },\n})\nexport class ThreatLevelsTrayComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('2236e53a-37c5-4a62-aeb3-9c76d15370ac');\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n\n public hasSetThreatLevelPrivilege = false;\n\n public isThereAnActiveThreatLevel$: Observable;\n public activeThreatLevelName$: Observable;\n public threatLevelColor$: Observable;\n public trayTooltip$: Observable;\n\n private activeThreatLevel$: Observable;\n\n constructor(\n trackingService: TrackingService,\n private threatLevelService: ThreatLevelService,\n private modalService: GenModalService,\n private securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService\n ) {\n super(trackingService);\n this.activeThreatLevel$ = this.threatLevelService.activeThreatLevel$.pipe(shareReplay(1));\n this.isThereAnActiveThreatLevel$ = this.activeThreatLevel$.pipe(map((threatLevel: ThreatLevelInfo | null): boolean => threatLevel !== null));\n this.activeThreatLevelName$ = this.activeThreatLevel$.pipe(\n map((threatLevel: ThreatLevelInfo | null): string => {\n return threatLevel?.name ?? '';\n })\n );\n this.threatLevelColor$ = this.activeThreatLevel$.pipe(\n map((threatLevel: ThreatLevelInfo | null): string | null => {\n return threatLevel?.color ?? null;\n })\n );\n this.trayTooltip$ = this.activeThreatLevelName$.pipe(\n map((name: string) => (this.hasSetThreatLevelPrivilege ? name : (this.translateService.instant('STE_TOOLTIP_SETTHREATLEVEL_INSUFFICIENT_PRIVILEGES') as string)))\n );\n }\n\n ngOnInit(): void {\n this.threatLevelService.threatLevels$.pipe(take(1), untilDestroyed(this)).subscribe();\n this.hasSetThreatLevelPrivilege = this.securityCenterClientService.scClient.isGlobalPrivilegeGranted(KnownPrivileges.setThreatLevelPrivilege);\n }\n\n public openThreatLevelsModal(): void {\n if (!this.hasSetThreatLevelPrivilege) {\n return;\n }\n this.modalService.open(ThreatLevelModalComponent, {});\n }\n}\n","\n \n \n \n {{ entity.name }}\n \n\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { StateItem } from './state-item/state-item';\n\n@Component({\n selector: 'app-entity-state-item',\n templateUrl: './entity-state-item.component.html',\n styleUrls: ['./entity-state-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntityStateItemComponent {\n @Input() entity?: StateItem;\n @Input() withExpander?: boolean;\n @Input() showIcon?: boolean;\n @Input() appTooltipOnlyIfOverflow?: boolean;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n Returns the luminance of an argb color code\n Example :
    0.5 ? invert(1) : invert(0)\">
    \n*/\n@Pipe({ name: 'luminance' })\nexport class LuminancePipe implements PipeTransform {\n public transform(argb: string | undefined | null): number {\n if (!argb) {\n return 0;\n }\n const argbColor = argb.slice(1, argb.length);\n const r = parseInt(argbColor.slice(2, 4), 16);\n const g = parseInt(argbColor.slice(4, 6), 16);\n const b = parseInt(argbColor.slice(6, 8), 16);\n const luminance = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255;\n if (Number.isNaN(luminance)) {\n throw Error(`Luminance of ${argb} could not be evaluated`);\n }\n return luminance;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { TimeService } from '../services/time/time.service';\n\n@Pipe({\n name: 'time',\n})\nexport class TimePipe implements PipeTransform {\n constructor(private timeService: TimeService) {}\n\n public transform(value: Date | number | string, args?: string[]): string {\n if (value) {\n const mmt = moment(value);\n if (args) {\n return this.timeService.formatTime(mmt, ...args);\n }\n return this.timeService.formatTime(mmt);\n }\n return '';\n }\n}\n","
    \n \n
    \n","import { DomPortal } from '@angular/cdk/portal';\nimport { Component, Input } from '@angular/core';\nimport { ContentOverlayService } from '@shared/services/content-overlay/content-overlay.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-portal-outlet',\n templateUrl: 'portal-outlet.component.html',\n styleUrls: ['portal-outlet.component.scss'],\n})\nexport class PortalOutletComponent {\n @Input() activatePortalOutlet = false;\n @Input() isGlobal = false;\n public portalDOM$: Observable | null>;\n\n constructor(private contentOverlayService: ContentOverlayService) {\n this.portalDOM$ = this.contentOverlayService.contentOverlay$;\n }\n\n enablePortalOutlet(isEnabled: boolean): void {\n this.activatePortalOutlet = isEnabled;\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { GenPopup, GenTooltip } from '@genetec/gelato-angular';\nimport { TooltipService } from '@modules/shared/services/tooltip/tooltip.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Component({\n selector: 'app-app-tooltip',\n templateUrl: './app-tooltip.component.html',\n styleUrls: ['./app-tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppTooltipComponent {\n @ViewChild(GenPopup) genPopup!: GenPopup;\n @ViewChild(GenTooltip) genTooltip!: GenTooltip;\n\n public message$: Observable;\n private messageSubject = new BehaviorSubject('');\n\n constructor(tooltipService: TooltipService, elementRef: ElementRef, renderer: Renderer2) {\n this.message$ = this.messageSubject.asObservable();\n tooltipService.registerTooltip(this, elementRef, renderer);\n }\n\n public show(message: string, targetElement: HTMLElement): void {\n this.messageSubject.next(message);\n this.genPopup.targetElement = targetElement;\n this.genPopup.show().fireAndForget();\n }\n\n public close(): void {\n this.genPopup.close().fireAndForget();\n }\n}\n","\n
    {{ message$ | async }}
    \n
    \n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appDisableDefaultContextMenu]',\n})\nexport class DisableDefaultContextMenuDirective {\n constructor() {}\n\n @HostListener('contextmenu', ['$event'])\n public onRightClick(event: Event): void {\n event.preventDefault();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { WebSocketResponse } from './web-socket-response';\n\nexport const WEB_SOCKET_SERVICE = new InjectionToken('Service to use the web WebSocket');\n\nexport interface WebSocketService {\n /**\n * Observable for WebSocket responses\n */\n response$: Observable;\n /**\n *\n * @param msgType - type of the message to send to the backend\n * @param payload - payload of the message\n */\n writeToWebSocket(msgType: string, payload?: object | string | number): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WebSocketContent } from './web-socket-content';\n\nexport const WEB_SOCKET_SERIALIZER_SERVICE = new InjectionToken('Service to serialize a web socket content');\n\nexport interface WebSocketSerializerService {\n /**\n * Serializes a WebSocketContent into a string\n */\n serialize(webSocketContent: WebSocketContent): string;\n}\n","import { WebSocketContent } from './web-socket-content';\nimport { WebSocketSerializerService } from './web-socket-serializer.service';\n\nexport class WebSocketJsonSerializerService implements WebSocketSerializerService {\n serialize(webSocketContent: WebSocketContent): string {\n return JSON.stringify(webSocketContent);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { UnknownRequestReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { EventDispatcher } from 'RestClient/Helpers/Helpers';\nimport { Observable, Subject } from 'rxjs';\nimport { LoggerService } from '../logger/logger.service';\nimport { WebSocketResponse } from './web-socket-response';\nimport { WebSocketSerializerService, WEB_SOCKET_SERIALIZER_SERVICE } from './web-socket-serializer.service';\nimport { WebSocketService } from './web-socket.service';\n\nexport interface SCStreamer {\n _unknownRequestDispatcher: EventDispatcher;\n writeMessageToWebSocket(message: string): void;\n}\n\n@UntilDestroy()\n@Injectable()\nexport class SCClientWebSocketService implements WebSocketService {\n public response$: Observable;\n\n private streamer: SCStreamer | null = null;\n private unsubscribeWebSocketResponse?: () => void;\n private responseSubject = new Subject();\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n private authService: AuthService,\n private loggerService: LoggerService,\n @Inject(WEB_SOCKET_SERIALIZER_SERVICE) private webSocketSerializerService: WebSocketSerializerService\n ) {\n this.response$ = this.responseSubject.asObservable();\n this.subscribeToWebSocketWhenLoggedIn();\n }\n\n public writeToWebSocket(msgType: string, payload?: Record | string | number): void {\n if (this.streamer) {\n if (!msgType.trim()) {\n this.loggerService.traceDebug('Cannot send message to web socket: no message type.');\n return;\n }\n\n const serializedContent = this.webSocketSerializerService.serialize({ msgType, payload });\n this.streamer.writeMessageToWebSocket(serializedContent);\n } else {\n this.loggerService.traceDebug('Cannot send message to web socket: streamer not initialized');\n }\n }\n\n private subscribeToWebSocketWhenLoggedIn(): void {\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((isLoggedIn) => {\n if (isLoggedIn) {\n this.retrieveStreamer();\n } else {\n this.releaseStreamer();\n }\n });\n }\n\n private retrieveStreamer(): void {\n const streamerBase = this.securityCenterClientService?.scClient?.rest?.streamer;\n if (this.isSCStreamer(streamerBase)) {\n this.streamer = streamerBase;\n // eslint-disable-next-line no-underscore-dangle\n this.unsubscribeWebSocketResponse = this.streamer._unknownRequestDispatcher.subscribe((unknownRequestReceivedArgs: UnknownRequestReceivedArg) => {\n this.notifyWebSocketResponse(unknownRequestReceivedArgs);\n });\n } else {\n this.streamer = null;\n this.loggerService.traceDebug('Failed to retrieve WebSocket from streamer.');\n }\n }\n\n private releaseStreamer(): void {\n this.streamer = null;\n this.unsubscribeWebSocketResponse?.();\n }\n\n private notifyWebSocketResponse(unknownRequestReceivedArgs: UnknownRequestReceivedArg): void {\n this.responseSubject.next(unknownRequestReceivedArgs);\n }\n\n private isSCStreamer(streamerBase: object): streamerBase is SCStreamer {\n return '_unknownRequestDispatcher' in streamerBase && 'writeMessageToWebSocket' in streamerBase;\n }\n}\n","\n \n \n \n \n\n\n
    \n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Icon, IconSize } from '@genetec/gelato';\nimport { GenPopup, ImageFit, ImageFlavor, PopupPosition } from '@genetec/gelato-angular';\nimport { SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-thumbnail',\n templateUrl: './thumbnail.component.html',\n styleUrls: ['./thumbnail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ThumbnailComponent {\n @Input() public id = SafeGuid.newGuid().toString();\n @Input() public thumbnailData: string | undefined | null;\n // Specific to image\n @Input() public flavor = ImageFlavor.Rectangle;\n @Input() public fit = ImageFit.Default;\n @Input() public thumbnailBorderRadius: string | undefined;\n // Specific to placeholder\n @Input() public defaultPlaceholder: string | undefined;\n @Input() public placeholderOpacity = '100%';\n // Specific to popup\n @Input() public displayPopup = false;\n @Input() public popupPosition = PopupPosition.Auto;\n\n public readonly IconSize = IconSize;\n public readonly Icon = Icon;\n\n public isData(data: string | undefined | null): boolean {\n if (data) {\n return !data.startsWith('Icon.');\n }\n return false;\n }\n\n public formatImageData(data: string | undefined | null): string {\n if (data && this.isData(data)) {\n if (data.startsWith('data:')) {\n return data;\n } else {\n return 'data:image/png;base64,' + data;\n }\n }\n return data ?? '';\n }\n\n public getIcon(thumbnailData: string | undefined | null): string {\n let icon: Icon | undefined;\n if (thumbnailData?.startsWith('Icon.')) {\n const splitString = thumbnailData?.split('.');\n\n if (splitString?.length > 1) {\n const iconName = splitString[1];\n if (iconName in Icon) {\n icon = Icon[iconName as keyof typeof Icon];\n }\n }\n }\n if (!icon && this.defaultPlaceholder) {\n return this.defaultPlaceholder;\n }\n\n return icon ?? Icon.None;\n }\n\n public async showPopupAsync(popup: GenPopup): Promise {\n if (!this.displayPopup) {\n return;\n }\n await popup.show();\n }\n}\n","import { Component } from '@angular/core';\nimport { FilterTextBaseComponent } from '../filter-text-base.component';\n\n/**\n * Filter for simple text, showing a full text box instead of a dropdown.\n */\n@Component({\n selector: 'app-filter-search',\n templateUrl: './filter-search.component.html',\n styleUrls: ['./filter-search.component.scss'],\n})\nexport class FilterSearchComponent extends FilterTextBaseComponent {}\n","\n","import { Directive, Inject, Input } from '@angular/core';\nimport { GenExpanderComponent } from '@genetec/gelato-angular';\nimport { delayAsPromise, WINDOW } from '@src/app/utilities';\n\n@Directive({\n selector: 'gen-expander[appScrollOnExpand]',\n})\nexport class ScrollOnExpandDirective {\n @Input() scrollContainerSelector?: string;\n @Input() scrollContainerElement?: Element;\n @Input() scrollAmountPx = 300;\n\n constructor(private banner: GenExpanderComponent, @Inject(WINDOW) private window: Window) {\n this.banner.genIsOpenChange.subscribe(async (isExpand) => {\n if (isExpand) {\n await delayAsPromise(0); // Wait the view to be rendered\n this.scroll();\n }\n });\n }\n\n private scroll(): void {\n let scrollView: Element | Window | null = this.window;\n if (this.scrollContainerElement) {\n scrollView = this.scrollContainerElement;\n } else if (this.scrollContainerSelector) {\n scrollView = this.window.document.querySelector(this.scrollContainerSelector);\n if (!scrollView) {\n throw new Error(`ScrollView not found with selector ${this.scrollContainerSelector ?? 'window'}`);\n }\n }\n scrollView.scrollBy({\n top: this.scrollAmountPx,\n behavior: 'smooth',\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { environment } from '@environments/environment';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { GetBaseUriForCodeGen } from '@utilities/base-uri-getter';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { enableMapSet } from 'immer';\nimport { FeatureFlagsModule } from '@modules/feature-flags/feature-flags.module';\nimport { AccessStatusToColorPipe } from '@modules/shared/pipes/access-status-to-color/access-status-to-color.pipe';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgxsModule } from '@ngxs/store';\nimport {\n baseUrl,\n FilterClient,\n OptionsClient,\n NotificationsClient,\n ResourcesClient,\n SearchClient,\n TasksClient,\n TimezonesClient,\n VersionClient,\n UserWatchlistClient,\n EventsClient,\n ThreatLevelClient,\n} from './api/api';\nimport { CommandButtonComponent } from './components/command-button/command-button.component';\nimport { CommandButtonsComponent } from './components/command-buttons/command-buttons.component';\nimport { CustomIconComponent } from './components/custom-icon/custom-icon.component';\nimport { EntityBrowserKeyboardNavigationDirective } from './components/entity-browser/entity-browser-keyboard-navigation.directive';\nimport { EntityBrowserTaskComponent } from './components/entity-browser/entity-browser-task/entity-browser-task.component';\nimport { EntityBrowserComponent } from './components/entity-browser/entity-browser/entity-browser.component';\nimport { EntityComboComponent } from './components/entity-browser/entity-combo/entity-combo.component';\nimport { FilterDateComponent } from './components/filters/common-filters/filter-date/filter-date.component';\nimport { FilterEntityComponent } from './components/filters/common-filters/filter-entity/filter-entity.component';\nimport { FilterEnumComponent } from './components/filters/common-filters/filter-enum/filter-enum.component';\nimport { FilterListComponent } from './components/filters/common-filters/filter-list/filter-list.component';\nimport { FilterNumericRangeComponent } from './components/filters/common-filters/filter-numeric-range/filter-numeric-range.component';\nimport { FilterTextComponent } from './components/filters/common-filters/filter-text/filter-text.component';\nimport { FilterTreeViewComponent } from './components/filters/common-filters/filter-tree-view/filter-tree-view.component';\nimport { HideableFiltersContainerComponent } from './components/filters/common-filters/hideable-filters-container/hideable-filters-container.component';\nimport { FilterHostComponent } from './components/filters/filter-host/filter-host.component';\nimport { FiltersComponent } from './components/filters/filters.component';\nimport { GenericSliderComponent } from './components/generic-slider/generic-slider.component';\nimport { ImageViewerModalComponent } from './components/image-viewer-modal/image-viewer-modal.component';\nimport { MainSearchComponent } from './components/main-search/main-search.component';\nimport { MenuItemsComponent } from './components/menu-item/menu-item.component';\nimport { MultiPluginHostComponent } from './components/plugins/multi-plugin-host/multi-plugin-host.component';\nimport { NavigationPluginHostComponent } from './components/plugins/navigation-plugin-host/navigation-plugin-host.component';\nimport { PluginHostComponent } from './components/plugins/plugin-host.component';\nimport { ShareEntityModalComponent } from './components/share-entity-modal/share-entity-modal.component';\nimport { SidePaneComponent } from './components/side-pane/side-pane.component';\nimport { TimelineComponent } from './components/timeline/timeline.component';\nimport { TrackedGenModalComponent } from './components/tracked/tracked-gen-modal.component';\nimport { TrackedComponent } from './components/tracked/tracked.component';\nimport { TreeItemsComponent } from './components/tree-items/tree-items.component';\nimport { EntityCommandsWidgetHostComponent } from './components/widgets/entity-commands-widget-host/entity-commands-widget-host.component';\nimport { LatestEventsWidgetComponent } from './components/widgets/latest-events-widget/latest-events-widget.component';\nimport { EventItemComponent } from './components/events/event-item/event-item.component';\nimport { CaptureEventsDirective } from './directives/captureEvents.directive';\nimport { AutoFocusDirective } from './directives/appAutoFocus.directive';\nimport { DebounceDirective } from './directives/appDebounce.directive';\nimport { ClickActionOnSpaceEnterDirective } from './directives/click-action-on-space-enter.directive';\nimport { DebounceClickDirective } from './directives/debounceClick.directive';\nimport { FocusModalWhenOpenDirective } from './directives/focus-modal-when-open.directive';\nimport { FocusPopupWhenOpenDirective } from './directives/focus-popup-when-open.directive';\nimport { HoverClassDirective } from './directives/hover-class/hover-class.directive';\nimport { MenuDataSourceDirective } from './directives/menu-data-source/menu-data-source.directive';\nimport { MouseCaptureDirective } from './directives/mousecapture/mousecapture.directive';\nimport { ResizeElementDirective } from './directives/resize-element/resize-element.directive';\nimport { ResizeWidthDirective } from './directives/resized/resize-width.directive';\nimport { ResizeDirective } from './directives/resized/resize.directive';\nimport { ClickStopPropagationDirective } from './directives/stopClickPropagation.directive';\nimport { KeydownStopPropagationDirective } from './directives/stopKeydownPropagation.directive';\nimport { TooltipDirective } from './directives/tooltip/tooltip.directive';\nimport { TreeDataSourceDirective } from './directives/tree-data-source/tree-data-source.directive';\nimport { ModuleDescriptor } from './interfaces/modules/public/module-public.interface';\nimport { ArgbPipe } from './pipes/argb.pipe';\nimport { FilterPipe } from './pipes/filter.pipe';\nimport { SafePipe } from './pipes/safe.pipe';\nimport { SortByPipe } from './pipes/sort-by.pipe';\nimport { StringFormatPipe } from './pipes/string-format.pipe';\nimport { StringToIconPipe } from './pipes/string-to-icon.pipe';\nimport { AudioService } from './services/audio/audio.service';\nimport { LoggerService } from './services/logger/logger.service';\nimport { TableComponent } from './components/table/table.component';\nimport { WatchlistEditorComponent } from './components/watchlist/editor/watchlist-editor/watchlist-editor.component';\nimport { GroupBy } from './pipes/group-by.pipe';\nimport { WatchlistComponent } from './components/watchlist/watchlist.component';\nimport { GelatoInvalidityCompatDirective } from './directives/gelato-invalidity-compat/gelato-invalidity-compat.directive';\nimport { ApplicationInsightsFeatureFlags } from './services/analytics/feature-flags';\nimport { EventMonitoringFeatureFlags } from './services/events/feature-flags';\nimport { FormControlErrorDirective } from './directives/form-control-error.directive';\nimport { EventListComponent } from './components/events/event-list/event-list.component';\nimport { AccessStatusToTranslatedStringPipe } from './pipes/access-status-to-translated-string/access-status-to-translated-string.pipe';\nimport { ModalEntitiesSelectorComponent } from './components/entity-browser/modal-entities-selector/modal-entities-selector.component';\nimport { FormGenComboboxComponent } from './components/form-gen-combobox/form-gen-combobox.component';\nimport { ThreatLevelsTrayComponent } from './components/threat-levels-tray/threat-levels-tray.component';\nimport { ThreatLevelModalComponent } from './components/threat-levels-modal/threat-level-modal.component';\nimport { ThreatLevelConfirmationModalComponent } from './components/threat-levels-modal/threat-level-confirmation-modal/threat-level-confirmation-modal.component';\nimport { BoldStringPipe } from './pipes/bold-string.pipe';\nimport { EntityStateItemComponent } from './components/entity-state-item/entity-state-item.component';\nimport { LuminancePipe } from './pipes/luminance.pipe';\nimport { SidePaneHeaderComponent } from './components/side-pane/sidepane-header/sidepane-header.component';\nimport { TimePipe } from './pipes/time.pipe';\nimport { PortalOutletComponent } from './portal-outlet/portal-outlet.component';\nimport { AppTooltipComponent } from './components/tooltip/app-tooltip.component';\nimport { DisableDefaultContextMenuDirective } from './directives/appDisableDefaultContextMenu.directive';\nimport { NgLetDirective } from './directives/ng-let.directive';\nimport { WEB_SOCKET_SERVICE } from './services/web-sockets/web-socket.service';\nimport { WEB_SOCKET_SERIALIZER_SERVICE } from './services/web-sockets/web-socket-serializer.service';\nimport { WebSocketJsonSerializerService } from './services/web-sockets/web-socket-json-serializer.service';\nimport { SCClientWebSocketService } from './services/web-sockets/sc-client-web-socket.service';\nimport { FiltersState } from './store/filters.state';\nimport { FiltersContext } from './store/filters.context';\nimport { ThumbnailComponent } from './components/thumbnail/thumbnail.component';\nimport { FilterSearchComponent } from './components/filters/common-filters/filter-search/filter-search.component';\nimport { ScrollOnExpandDirective } from './directives/scroll-on-expand.directive';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n declarations: [\n MainSearchComponent,\n PluginHostComponent,\n MultiPluginHostComponent,\n NavigationPluginHostComponent,\n EntityBrowserComponent,\n EntityComboComponent,\n EntityBrowserTaskComponent,\n TimelineComponent,\n MouseCaptureDirective,\n TooltipDirective,\n FilterPipe,\n SafePipe,\n SortByPipe,\n ArgbPipe,\n LuminancePipe,\n StringFormatPipe,\n BoldStringPipe,\n StringToIconPipe,\n AccessStatusToColorPipe,\n AccessStatusToTranslatedStringPipe,\n MultiPluginHostComponent,\n TrackedComponent,\n TrackedGenModalComponent,\n ShareEntityModalComponent,\n HoverClassDirective,\n ResizeDirective,\n ResizeWidthDirective,\n ResizeElementDirective,\n EntityCommandsWidgetHostComponent,\n FilterHostComponent,\n ImageViewerModalComponent,\n FiltersComponent,\n FilterDateComponent,\n FilterListComponent,\n FilterEntityComponent,\n FilterTextComponent,\n FilterEnumComponent,\n FilterTreeViewComponent,\n FilterNumericRangeComponent,\n GenericSliderComponent,\n CommandButtonsComponent,\n LatestEventsWidgetComponent,\n EntityBrowserKeyboardNavigationDirective,\n CommandButtonComponent,\n HideableFiltersContainerComponent,\n CaptureEventsDirective,\n AutoFocusDirective,\n DebounceDirective,\n ClickStopPropagationDirective,\n KeydownStopPropagationDirective,\n FocusModalWhenOpenDirective,\n FocusPopupWhenOpenDirective,\n ClickActionOnSpaceEnterDirective,\n DebounceClickDirective,\n SidePaneComponent,\n CustomIconComponent,\n MenuItemsComponent,\n TreeItemsComponent,\n MenuDataSourceDirective,\n DisableDefaultContextMenuDirective,\n TreeDataSourceDirective,\n TableComponent,\n EventItemComponent,\n WatchlistEditorComponent,\n EventListComponent,\n GroupBy,\n WatchlistComponent,\n GelatoInvalidityCompatDirective,\n FormControlErrorDirective,\n ModalEntitiesSelectorComponent,\n FormGenComboboxComponent,\n ThreatLevelsTrayComponent,\n ThreatLevelModalComponent,\n ThreatLevelConfirmationModalComponent,\n EntityStateItemComponent,\n SidePaneHeaderComponent,\n TimePipe,\n PortalOutletComponent,\n AppTooltipComponent,\n NgLetDirective,\n ThumbnailComponent,\n FilterSearchComponent,\n ScrollOnExpandDirective,\n ],\n imports: [\n CommonModule,\n GenAngularModule,\n BrowserAnimationsModule,\n ScrollingModule,\n FeatureFlagsModule.forRoot(ApplicationInsightsFeatureFlags, EventMonitoringFeatureFlags),\n PortalModule,\n NgxsModule.forFeature([FiltersState]),\n ],\n exports: [\n MainSearchComponent,\n PluginHostComponent,\n MultiPluginHostComponent,\n NavigationPluginHostComponent,\n EntityBrowserComponent,\n EntityComboComponent,\n TimelineComponent,\n GenAngularModule,\n MouseCaptureDirective,\n TooltipDirective,\n FilterPipe,\n SafePipe,\n SortByPipe,\n ArgbPipe,\n LuminancePipe,\n StringFormatPipe,\n BoldStringPipe,\n StringToIconPipe,\n AccessStatusToColorPipe,\n AccessStatusToTranslatedStringPipe,\n TrackedComponent,\n TrackedGenModalComponent,\n HoverClassDirective,\n ResizeDirective,\n ResizeWidthDirective,\n ResizeElementDirective,\n EntityCommandsWidgetHostComponent,\n FilterHostComponent,\n ImageViewerModalComponent,\n FiltersComponent,\n GenericSliderComponent,\n CommandButtonsComponent,\n LatestEventsWidgetComponent,\n FilterDateComponent,\n FilterListComponent,\n FilterEntityComponent,\n FilterTextComponent,\n FilterEnumComponent,\n FilterTreeViewComponent,\n FilterNumericRangeComponent,\n HideableFiltersContainerComponent,\n CaptureEventsDirective,\n ClickStopPropagationDirective,\n KeydownStopPropagationDirective,\n FocusModalWhenOpenDirective,\n FocusPopupWhenOpenDirective,\n ClickActionOnSpaceEnterDirective,\n DebounceClickDirective,\n DisableDefaultContextMenuDirective,\n AutoFocusDirective,\n DebounceDirective,\n SidePaneComponent,\n CustomIconComponent,\n MenuDataSourceDirective,\n TreeDataSourceDirective,\n TableComponent,\n EventItemComponent,\n GroupBy,\n GelatoInvalidityCompatDirective,\n FormControlErrorDirective,\n ModalEntitiesSelectorComponent,\n FormGenComboboxComponent,\n SidePaneHeaderComponent,\n TimePipe,\n PortalOutletComponent,\n AppTooltipComponent,\n NgLetDirective,\n ThumbnailComponent,\n FilterSearchComponent,\n ScrollOnExpandDirective,\n ],\n providers: [\n LoggerService,\n VersionClient,\n TimezonesClient,\n TasksClient,\n SearchClient,\n NotificationsClient,\n ResourcesClient,\n AudioService,\n OptionsClient,\n FilterClient,\n /* NOTE: Do not inject the FeaturesClient here, it's injected globally in app.module.ts for EVERYONE since FeaturesService is global for everyone */\n { provide: baseUrl, deps: [], useFactory: GetBaseUriForCodeGen },\n UserWatchlistClient,\n EventsClient,\n ThreatLevelClient,\n FiltersContext,\n { provide: WEB_SOCKET_SERVICE, useClass: SCClientWebSocketService },\n { provide: WEB_SOCKET_SERIALIZER_SERVICE, useClass: WebSocketJsonSerializerService },\n ],\n})\n@ModuleDescriptor({\n type: SharedModule,\n inclusions: {\n globalPrivileges: [KnownPrivileges.managePrivateTasksPrivilege, KnownPrivileges.modifyUserTasksPrivilege],\n },\n})\nexport class SharedModule {\n constructor() {\n // Load map and set plugin in immer\n enableMapSet();\n }\n\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: SharedModule,\n providers: [{ provide: 'logSeverities', useValue: environment.logSeverities }],\n };\n }\n}\n","
    \n
    1\">\n
    \n \n \n 4\">\n
    \n
    \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n \n \n\n \n \n
    \n
    \n
    \n\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ButtonFlavor, GenMenu, MeltedIcon, Position } from '@genetec/gelato-angular';\nimport { IFloor } from '@modules/maps/controllers/map.controller.data';\nimport { MapFloorInfo } from '@modules/maps/models';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { MenuSeparator } from '@shared/interfaces/context-menu-item/menu-separator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Constants } from '@src/constants';\nimport { IDefaultView } from 'RestClient/Client/Interface/IMapEntity';\nimport { ResizeWidthEvent } from '@modules/shared/directives/resized/interfaces/resize-width-event';\n\n@Component({\n selector: 'app-map-controls',\n templateUrl: './map-controls.component.html',\n styleUrls: ['./map-controls.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapControlsComponent {\n @ViewChild('contextMenu') public contextMenu!: GenMenu;\n\n @ViewChild('floorsScrollContainer') public set floorsScrollContainer(elementRef: ElementRef) {\n this.#floorsScrollContainer = elementRef;\n this.scrollToSelectedFloorButton(false);\n }\n\n @ViewChild('mapControl') public mapControl!: ElementRef;\n\n @Input() public set defaultView(view: IDefaultView | null | undefined) {\n this.#defaultView = view;\n this.updatePresetsContextMenu();\n }\n\n @Input() public set presets(presets: IDefaultView[]) {\n this.#presets = presets;\n this.updatePresetsContextMenu();\n }\n\n @Input()\n public get selectedFloor(): IFloor | null {\n return this.#selectedFloor;\n }\n public set selectedFloor(floor: IFloor | null) {\n this.#selectedFloor = floor;\n this.scrollToSelectedFloorButton();\n }\n\n @Input()\n public get floorInfo(): MapFloorInfo {\n return this.#floorInfo;\n }\n public set floorInfo(floorInfo: MapFloorInfo) {\n this.#floorInfo = floorInfo;\n this.scrollToSelectedFloorButton();\n }\n\n @Input() public isGoToParent = true;\n @Input() public isGoToParentEnabled = false;\n\n @Output() public floorClick = new EventEmitter();\n @Output() public goToParentClick = new EventEmitter();\n @Output() public zoomInClick = new EventEmitter();\n @Output() public zoomOutClick = new EventEmitter();\n @Output() public presetSelect = new EventEmitter();\n @Output() public widthChange = new EventEmitter();\n\n public contextMenuPresets: ContextMenuItem[] = [];\n public isPresetsOpen = false;\n public width = 0;\n\n // Gelato enums\n public ButtonFlavor = ButtonFlavor;\n public Position = Position;\n public Icon = MeltedIcon;\n\n #floorsScrollContainer?: ElementRef;\n #defaultView?: IDefaultView | null;\n #presets?: IDefaultView[];\n #selectedFloor: IFloor | null = null;\n #floorInfo: MapFloorInfo = {\n floors: [],\n };\n\n constructor(private translateService: TranslateService, private cdRef: ChangeDetectorRef) {}\n\n @HostListener('document:keydown', ['$event'])\n public handleKeyboardEvent(event: KeyboardEvent): void {\n if (event.ctrlKey && !isNaN(Number(event.key))) {\n event.preventDefault();\n (this.contextMenuPresets.find((item) => item.id === event.key)?.actionItem?.execute as () => void | undefined)?.();\n }\n }\n\n @HostListener('wheel', ['$event'])\n public handleMouseWheelEvent(event: WheelEvent): void {\n // Prevents from registering on the map\n event.stopPropagation();\n }\n\n public getSortedFloors(): IFloor[] {\n return this.floorInfo?.floors.sort((floorA, floorB) => floorB.orderPosition - floorA.orderPosition) ?? [];\n }\n\n public isFloorSelected(floor: IFloor): boolean {\n return !!this.selectedFloor && floor.id.equals(isInstanceOfGuid(this.selectedFloor) ? this.selectedFloor : this.selectedFloor.id);\n }\n\n public goToParentMap(): void {\n this.goToParentClick.emit();\n }\n\n public toggleIsPresetsOpen(): void {\n this.contextMenu\n .toggle()\n .then(() => {\n this.cdRef.markForCheck();\n })\n .fireAndForget();\n }\n\n public focus(index: number, event: Event): void {\n if (index >= 0 && index < this.floorInfo.floors.length) {\n event.preventDefault();\n (this.#floorsScrollContainer?.nativeElement.querySelectorAll('.gen-toggle-button button')[index] as HTMLElement | null)?.focus();\n }\n }\n\n public switchFloor(floor: IFloor): void {\n if (!this.isFloorSelected(floor)) {\n this.selectedFloor = floor;\n this.floorClick.emit(floor);\n }\n }\n\n public zoom(zoomIn: boolean): void {\n (zoomIn ? this.zoomInClick : this.zoomOutClick).emit();\n }\n\n public onPresetClick(view: IDefaultView): void {\n this.presetSelect.emit(view);\n }\n\n public onMapControlResize(event: ResizeWidthEvent): void {\n this.width = event.newWidth + this.getMapControlMarginRight();\n this.widthChange.emit(this.width);\n }\n\n private getMapControlMarginRight(): number {\n let horizontalMargin = 0;\n const computedStyle = getComputedStyle(this.mapControl?.nativeElement);\n if (computedStyle) {\n const marginRight = parseInt(computedStyle.right, 10);\n if (!isNaN(marginRight)) {\n horizontalMargin = marginRight;\n }\n }\n return horizontalMargin;\n }\n\n private updatePresetsContextMenu(): void {\n this.contextMenuPresets = [];\n this.addDefaultViewContextMenuItem();\n this.addCustomPresetsContextMenuItem();\n }\n\n private addDefaultViewContextMenuItem() {\n if (this.#defaultView) {\n this.contextMenuPresets.push({\n id: '0',\n text: this.translateService.instant('STE_MENU_ITEM_PRESET_DEFAULTVIEW') as string,\n icon: MeltedIcon.Home,\n secondaryText: `${Constants.ctrlText}+0`,\n actionItem: {\n execute: () => this.#defaultView && this.onPresetClick(this.#defaultView),\n },\n });\n }\n }\n\n private addCustomPresetsContextMenuItem() {\n if (this.#presets?.length) {\n let startIndex = 0;\n if (this.#defaultView) {\n this.contextMenuPresets.push(new MenuSeparator());\n startIndex = 1;\n }\n this.contextMenuPresets.push(\n ...this.#presets.map((view, index) => ({\n id: `${startIndex + index}`,\n text: view.name,\n secondaryText: index < 10 ? `${Constants.ctrlText}+${startIndex + index}` : undefined,\n actionItem: {\n execute: () => this.onPresetClick(view),\n },\n }))\n );\n }\n }\n\n private scrollToSelectedFloorButton(smooth = true): void {\n // Timeout to wait for template update\n setTimeout(() => {\n if (this.#floorsScrollContainer && this.selectedFloor) {\n const floorButton = this.#floorsScrollContainer.nativeElement.querySelectorAll(`.gen-toggle-button`)[\n this.floorInfo.floors.length - this.selectedFloor.orderPosition - 1\n ] as HTMLElement | undefined;\n\n if (floorButton) {\n // Only scroll if necessary and to show the whole button that was clicked\n const currentScroll = this.#floorsScrollContainer.nativeElement.scrollTop;\n const scrollContainerHeight = this.#floorsScrollContainer.nativeElement.clientHeight;\n if (floorButton.offsetTop < currentScroll) {\n // Scroll up to until button is fully shown\n this.#floorsScrollContainer.nativeElement.scrollTo({\n top: floorButton.offsetTop,\n behavior: smooth ? 'smooth' : 'auto',\n });\n } else if (floorButton.offsetTop + floorButton.clientHeight > currentScroll + scrollContainerHeight) {\n // Scroll down until button is fully shown\n this.#floorsScrollContainer.nativeElement.scrollTo({\n top: floorButton.offsetTop - scrollContainerHeight + floorButton.clientHeight,\n behavior: smooth ? 'smooth' : 'auto',\n });\n }\n }\n }\n });\n }\n}\n","
    \n
    \n \n \n
    \n
    \n","import { Component, EventEmitter, HostListener, Inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { PluginHostClickEvent } from '@modules/shared/components/plugins/plugin-host.component';\nimport { PluginsStack } from '@modules/shared/components/plugins/plugins-stack';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { DisplayContext, PluginContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { Popup } from '@genetec/web-maps';\nimport { PLUGIN_CONTEXT } from '@modules/shared/tokens';\nimport { merge, Observable, Subject, timer, Subscription } from 'rxjs';\nimport { filter, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MapPopupContent } from './interfaces';\n\n@UntilDestroy()\n@Component({\n selector: 'app-map-popup',\n templateUrl: './map-popup.component.html',\n providers: [\n {\n provide: PLUGIN_CONTEXT,\n useValue: {\n displayContext: DisplayContext.MapPopup,\n },\n },\n ],\n})\nexport class MapPopupComponent extends TrackedComponent implements OnInit, OnDestroy {\n private static TIMEOUT_TO_SHOW_EXPANDED_PLUGINS_MS = 500;\n\n @Output() public pluginClick = new EventEmitter();\n @Output() public contextMenuOpen = new EventEmitter();\n\n public readonly maxWidth = 400;\n public readonly maxHeigth = 300;\n\n // Plugins shown on the popup by default\n public pluginsStack: PluginsStack = new PluginsStack();\n\n // Plugins shown on the popup when expanded (hovered)\n public expandedPluginsStack: PluginsStack = new PluginsStack();\n\n public isContextMenuOpen = false;\n\n public expanded$: Observable;\n\n /**\n * WebMaps linked map object. Its popup will be linked to this component.\n * When this component's plugin are cleared, the popup on the map object will close.\n */\n public webMapsPopup?: Popup;\n\n public get isPermanent(): boolean {\n return this.permanent;\n }\n\n private timeToCloseTimeout?: number;\n\n private mouseEnterSubject = new Subject();\n private mouseLeaveSubject = new Subject();\n private mouseEnter$ = this.mouseEnterSubject.asObservable();\n private mouseLeave$ = this.mouseLeaveSubject.asObservable();\n\n private currentContextMenuCloseSubscription: Subscription | null = null;\n\n private closeOnMouseLeave = false;\n\n private permanent = false;\n\n constructor(\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n @Inject(PLUGIN_CONTEXT) public dataContext: PluginContext\n ) {\n super(trackingService);\n\n this.expanded$ = merge(\n this.mouseEnter$.pipe(\n filter(() => (this.expandedPluginsStack.verticalPlugins?.length ?? 0) > 0),\n switchMap(() =>\n timer(MapPopupComponent.TIMEOUT_TO_SHOW_EXPANDED_PLUGINS_MS).pipe(\n map(() => true),\n takeUntil(this.mouseLeaveSubject)\n )\n )\n ),\n this.mouseLeave$.pipe(map(() => false))\n ).pipe(untilDestroyed(this));\n }\n\n @HostListener('mouseenter', ['$event'])\n public onMouseEnter(): void {\n this.mouseEnterSubject.next();\n }\n\n @HostListener('mouseleave', ['$event'])\n public onMouseLeave(): void {\n this.mouseLeaveSubject.next();\n }\n\n public onContextMenu(shown: boolean): void {\n this.isContextMenuOpen = shown;\n this.contextMenuOpen.emit(shown);\n }\n\n public onPluginClick(event?: PluginHostClickEvent): void {\n if (this.isContextMenuOpen) {\n this.closeContextMenu();\n }\n this.pluginClick.emit(event);\n }\n\n public updateContentAndOpenPopup(content: MapPopupContent): void {\n this.expandedPluginsStack.set(content.expandedPlugins ?? []);\n this.pluginsStack.set(content.plugins);\n\n this.replacePopup(content.webMapsPopup);\n\n content.webMapsPopup.getSourceLayer()?.openPopup();\n if (content.closeOnMouseLeave) {\n // once will unsubscribe automatically after a single event.\n content.webMapsPopup.getSourceLayer()?.once('mouseleaveincludepopup', () => {\n this.clearCloseTimeoutAndSubscription();\n if (!this.isContextMenuOpen) {\n this.clearAndClosePopup();\n } else {\n this.currentContextMenuCloseSubscription = this.contextMenuOpen.pipe(take(1), untilDestroyed(this)).subscribe(() => {\n this.clearAndClosePopup();\n });\n }\n });\n }\n\n this.resetDelayToCloseInterval(content.delayToCloseMs);\n this.closeOnMouseLeave = content.closeOnMouseLeave ?? false;\n this.permanent = content.delayToCloseMs === undefined;\n }\n\n public clearAndClosePopup(): void {\n this.pluginsStack.empty();\n this.expandedPluginsStack.empty();\n this.closePopup();\n }\n\n private replacePopup(popup: Popup) {\n if (this.webMapsPopup !== popup) {\n this.closePopup();\n this.webMapsPopup = popup;\n }\n }\n\n private closePopup() {\n this.clearCloseTimeoutAndSubscription();\n if (this.isContextMenuOpen) {\n this.closeContextMenu();\n }\n\n // Close through source layer if possible because of some instances where isPopupOpen\n // on the layer might still return true even when popup was closed.\n const source = this.webMapsPopup?.getSourceLayer();\n if (source) {\n source.closePopup();\n } else {\n this.webMapsPopup?.close();\n }\n this.permanent = false;\n }\n\n private resetDelayToCloseInterval(newDelayToDisappear?: number): void {\n this.clearCloseTimeoutAndSubscription();\n\n if (newDelayToDisappear !== undefined) {\n this.timeToCloseTimeout = window.setTimeout(() => {\n if (!this.isContextMenuOpen) {\n this.closePopup();\n } else {\n this.currentContextMenuCloseSubscription = this.contextMenuOpen.pipe(take(1)).subscribe(() => {\n this.closePopup();\n });\n }\n }, newDelayToDisappear);\n } else {\n this.timeToCloseTimeout = undefined;\n }\n }\n\n private clearCloseTimeoutAndSubscription(): void {\n window.clearTimeout(this.timeToCloseTimeout);\n this.currentContextMenuCloseSubscription?.unsubscribe();\n }\n\n private closeContextMenu(): void {\n this.commandsService.hideCurrentContextMenu();\n this.isContextMenuOpen = false;\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { ContextDataStateModel } from '@modules/shared/services/side-context-data/side-context-data.state';\nimport { Receiver, Selector } from '../../../../store';\nimport { ContentGroup } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport type MapsBottomContextDataStateModel = ContextDataStateModel;\n\n@State({\n name: 'mapsBottomContextDataState',\n defaults: { contents: [], currentContent: null },\n})\n@Injectable()\nexport class MapsBottomContextDataState {\n @Selector()\n public static currentContent(state: MapsBottomContextDataStateModel): ContentGroup | null {\n return state.currentContent;\n }\n\n @Selector()\n public static contentCount(state: MapsBottomContextDataStateModel): number {\n return state.contents.length;\n }\n\n @Receiver()\n public static setMainContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapsBottomContextDataStateModel) => {\n state.contents.length = 0;\n state.currentContent = null;\n if (payload) {\n state.contents.push(payload);\n state.currentContent = payload;\n }\n\n return state;\n });\n }\n\n @Receiver()\n public static pushContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapsBottomContextDataStateModel) => {\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static popContent({ setState }: StateContext): void {\n setState((state: MapsBottomContextDataStateModel) => {\n state.contents.pop();\n state.currentContent = state.contents.length > 0 ? state.contents[state.contents.length - 1] : null;\n return state;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { Injectable } from '@angular/core';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter, StateEmitter } from '@src/app/store';\nimport { Observable } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterStateService } from '@modules/shared/services/state/security-center-state.service';\nimport { SafeGuid } from 'safeguid';\nimport { ContentLoad, ContentLoadingSupport } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContentGroup, DisplayContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { MapsSideContextDataState } from '../maps-side-context-data/maps-side-context-data.state';\nimport { MapsBottomContextDataState } from './maps-bottom-context-data.state';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class MapsBottomContextDataService extends SecurityCenterStateService implements ContentService, ContentLoadingSupport {\n @Select(MapsBottomContextDataState.currentContent)\n public currentContent$!: Observable;\n\n @SelectSnapshot(MapsBottomContextDataState.currentContent)\n public currentContent!: ContentGroup | null;\n\n @Select(MapsBottomContextDataState.contentCount)\n public contentCount$!: Observable;\n\n @SelectSnapshot(MapsBottomContextDataState.contentCount)\n public contentCount!: number;\n\n @MethodEmitter(MapsBottomContextDataState.setMainContent)\n public setMainContent!: StateEmitter;\n\n @MethodEmitter(MapsBottomContextDataState.pushContent)\n public pushContent!: StateEmitter;\n\n @MethodEmitter(MapsBottomContextDataState.popContent)\n public popContent!: StateEmitter;\n\n displayContext: DisplayContext = DisplayContext.Sidepane;\n\n constructor(securityCenterClient: SecurityCenterClientService) {\n super(securityCenterClient);\n }\n\n public setLoadingMainContent(): void {\n this.setMainContent({ id: SafeGuid.newGuid(), mainContent: new ContentLoad(), subContents: [] });\n }\n\n public clearMainContent(): void {\n this.setMainContent(null);\n }\n\n protected clearState(): void {\n super.clearState();\n\n this.setMainContent(null);\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContentGroup } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { MAPS_BOTTOM_CONTEXT_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { MapsBottomContextDataService } from '../../services/maps-bottom-context-data/maps-bottom-context-data.service';\n@UntilDestroy()\n@Component({\n selector: 'app-maps-bottom-pane',\n templateUrl: './maps-bottom-pane.component.html',\n styleUrls: ['./maps-bottom-pane.component.scss'],\n})\nexport class MapsBottomPaneComponent extends TrackedComponent implements OnInit {\n public plugin: PluginItem | undefined;\n public isLoading = false;\n\n constructor(\n @Inject(MAPS_BOTTOM_CONTEXT_SERVICE) public contextDataService: MapsBottomContextDataService,\n private pluginService: PluginService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.contextDataService.currentContent$.pipe(untilDestroyed(this)).subscribe(async (content) => await this.currentContentChanged(content));\n }\n\n private async currentContentChanged(content: ContentGroup | null) {\n const currentContent = content;\n this.plugin = undefined;\n\n if (currentContent) {\n this.isLoading = true;\n\n const plugins = await this.pluginService.getPlugins(PluginTypes.Widget, currentContent.mainContent);\n\n if (plugins.length > 0) {\n this.plugin = plugins[0];\n }\n }\n this.isLoading = false;\n }\n}\n","\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-insufficient-privileges',\n template: \"{{ 'STE_MESSAGE_INFO_OPTIONS_INSUFFICIENT_PRIVILEGES' | translate }}\",\n styleUrls: ['./insufficient-privileges.component.scss'],\n})\nexport class InsufficientPrivilegesComponent {}\n","\n \n \n \n {{ 'STE_CHECKBOX_ENABLE_MINIMAPS' | translate }}\n ({{ 'STE_LABEL_OPTIONS_SHOW_MINIMAPS_ONLY_ON_IMAGE_MAPS' | translate }})\n \n \n\n \n {{ 'STE_CHECKBOX_SHOW_OFFLINE_MOBILE_USERS' | translate }}\n \n\n {{ 'STE_MESSAGE_INFO_MAP_EVENTS_SELECTION_LOCATION' | translate }}\n \n\n\n\n \n\n\n\n
    \n \n
    \n
    \n","import { Component, Inject, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { TextFlavor } from '@genetec/gelato';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-maps-options',\n templateUrl: './maps-options.component.html',\n})\n@InternalPluginDescriptor({\n type: MapOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: MapOptionsComponent.pluginId,\n subSection: OptionSubSections.Map,\n },\n isSupported: () => true,\n})\nexport class MapOptionsComponent extends TrackedComponent implements OnInit {\n public static readonly pluginId = SafeGuid.parse('81A65627-16A8-6E15-4025-F62C2145FC6B');\n\n public static readonly disableMinimapSettingId = 'DisableMinimap';\n public static readonly showOfflineMobileUsersId = 'ShowOfflineMobileUsers';\n\n public isMiniMapDisabled = false;\n public isShowingOfflineMobileUsers = false;\n public isInitialized = false;\n public isContentVisible = false;\n\n public readonly TextFlavor = TextFlavor;\n\n constructor(trackingService: TrackingService, @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService) {\n super(trackingService);\n }\n\n ngOnInit(): void {\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.Maps);\n if (contentVisibility) {\n this.isContentVisible = true;\n this.isMiniMapDisabled = !!this.userSettingsService.get(OptionTypes.Maps, MapOptionsComponent.disableMinimapSettingId);\n this.isShowingOfflineMobileUsers = !!this.userSettingsService.get(OptionTypes.Maps, MapOptionsComponent.showOfflineMobileUsersId);\n }\n this.isInitialized = true;\n }\n\n public onShowMiniMapChanged(showMiniMap: boolean): void {\n this.userSettingsService.set(OptionTypes.Maps, MapOptionsComponent.disableMinimapSettingId, !showMiniMap);\n }\n\n public onShowingOfflineMobileUsersChanged(hidingOfflineMobileUsers: boolean): void {\n this.userSettingsService.set(OptionTypes.Maps, MapOptionsComponent.showOfflineMobileUsersId, hidingOfflineMobileUsers);\n }\n}\n","import { SafeGuid } from 'safeguid';\n\nexport class EntityTypeIds {\n public static Area = SafeGuid.parse('5361E622-411B-4101-8A07-9AF19279EADD');\n public static Camera = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE1E6');\n public static Door = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE1E9');\n public static Alarm = SafeGuid.parse('29FC0073-8F91-4D0A-A30F-EB3CBDAC69F6');\n public static Device = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE113');\n public static IntrusionArea = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE112');\n public static Zone = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE111');\n public static LPRUnit = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE114');\n public static LPRDevice = SafeGuid.parse('38DA933C-2B98-4B99-ADA4-A7DD2EF87CD2');\n public static Ellipse = SafeGuid.parse('79112DA3-3D3F-443E-8109-F2EA29D85035');\n public static Rectangle = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE119');\n public static Line = SafeGuid.parse('DC2D9DD8-4C27-4E9B-B62F-63D04CFC1019');\n public static Image = SafeGuid.parse('0907310E-CA60-40AD-98C1-C4B6E5D1359C');\n public static Macro = SafeGuid.parse('57537B1D-81AA-42F9-8E27-1B9E689B37E4');\n public static Map = SafeGuid.parse('B23BD887-1EFF-41AA-8152-9EF204A365C5');\n public static Reader = SafeGuid.parse('71A9A544-8400-429B-84DA-4E7E21C6A661');\n public static Sequence = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE1E7');\n public static Text = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE118');\n public static TilePlugin = SafeGuid.parse('4C127AAB-04CC-4C7C-9898-2808708DDF58');\n public static CustomEntity = SafeGuid.parse('B815E823-F5A1-4D87-8045-9DF2FB07BCF7');\n public static Polygon = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE120');\n public static Cluster = SafeGuid.parse('DC2D9DD8-4E9F-4F84-9E3C-3A187C6FE121');\n public static AccessControlUnit = SafeGuid.parse('8F9D6059-AA93-435C-8438-2D1355AF336D');\n public static ParkingZone = SafeGuid.parse('F6BA1729-595B-4B13-A5A2-492430BADB6B');\n public static TileLayout = SafeGuid.parse('E37FC92D-57EA-432F-8436-4A09D58D9BB0');\n public static MobileUser = SafeGuid.parse('C3331B66-011A-4AEE-A13D-121D8602DA60');\n public static MobileApp = SafeGuid.parse('7FAE4449-E93C-4A5A-82DA-3B1DFF04F7A7');\n\n public static readonly values = [\n EntityTypeIds.Area,\n EntityTypeIds.Camera,\n EntityTypeIds.Door,\n EntityTypeIds.Alarm,\n EntityTypeIds.Device,\n EntityTypeIds.IntrusionArea,\n EntityTypeIds.Zone,\n EntityTypeIds.LPRUnit,\n EntityTypeIds.LPRDevice,\n EntityTypeIds.Ellipse,\n EntityTypeIds.Rectangle,\n EntityTypeIds.Line,\n EntityTypeIds.Image,\n EntityTypeIds.Macro,\n EntityTypeIds.Map,\n EntityTypeIds.Reader,\n EntityTypeIds.Sequence,\n EntityTypeIds.Text,\n EntityTypeIds.TilePlugin,\n EntityTypeIds.CustomEntity,\n EntityTypeIds.Polygon,\n EntityTypeIds.Cluster,\n EntityTypeIds.AccessControlUnit,\n EntityTypeIds.ParkingZone,\n EntityTypeIds.TileLayout,\n EntityTypeIds.MobileUser,\n EntityTypeIds.MobileApp,\n ];\n}\n","// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class StreamDataView {\n private position = 0;\n private view: DataView;\n\n public constructor(arrayBuffer: ArrayBuffer, private useLittleEndian?: boolean) {\n this.view = new DataView(arrayBuffer);\n\n if (this.useLittleEndian === undefined) {\n this.useLittleEndian = true;\n }\n }\n\n public getUByte(): number {\n const data = this.view.getUint8(this.position++);\n return data;\n }\n\n public getByte(): number {\n const data = this.view.getInt8(this.position++);\n return data;\n }\n\n public getUInt16(): number {\n const data = this.view.getUint16(this.position, this.useLittleEndian);\n this.position += 2;\n return data;\n }\n\n public getInt16(): number {\n const data = this.view.getInt16(this.position, this.useLittleEndian);\n this.position += 2;\n return data;\n }\n\n public getUInt32(): number {\n const data = this.view.getUint32(this.position, this.useLittleEndian);\n this.position += 4;\n return data;\n }\n\n public getInt32(): number {\n const data = this.view.getInt32(this.position, this.useLittleEndian);\n this.position += 4;\n return data;\n }\n\n public getFloat32(): number {\n const data = this.view.getFloat32(this.position, this.useLittleEndian);\n this.position += 4;\n return data;\n }\n\n public getFloat64(): number {\n const data = this.view.getFloat64(this.position, this.useLittleEndian);\n this.position += 8;\n return data;\n }\n\n public getString(): string {\n const data = this.getStringData(this.view, this.position);\n this.position += 4 + data.length * 2; // unicode UTF-16 always\n return data;\n }\n\n public getGuidString(): string {\n const data = this.getGuidStringData(this.view, this.position);\n this.position += 4 + data.length + 1;\n return data;\n }\n\n private getStringData(dataView: DataView, startOffset: number): string {\n const length = dataView.getInt32(startOffset, this.useLittleEndian);\n startOffset += 4;\n const chars: number[] = [];\n for (let i = 0; i < length; i++) {\n chars.push(dataView.getInt16(startOffset, this.useLittleEndian));\n startOffset += 2;\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n private getGuidStringData(dataView: DataView, startOffset: number): string {\n // leave as optimized for guids since they are not unicode dependant...\n const length = dataView.getInt32(startOffset, this.useLittleEndian);\n startOffset += 4;\n startOffset++;\n\n let str = '';\n for (let i = 0; i < length; i++) {\n str += '%' + this.pad(dataView.getUint8(startOffset).toString(16));\n startOffset++;\n }\n return decodeURIComponent(str);\n }\n\n private pad(n: string) {\n return n.length < 2 ? '0' + n : n;\n }\n}\n","import { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { StreamDataView } from 'RestClient/Helpers/StreamDataView';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport enum SerializationSteps {\n HeaderStart,\n HeaderEntry,\n HeaderEnd,\n DataStart,\n DataEntry,\n DataEnd,\n}\n\nexport enum SerializationTypes {\n Long,\n Byte,\n Int,\n String,\n Guid,\n OptionalGuid,\n Double,\n}\n\nexport class FieldColumn {\n constructor(public keyName: string, public type: SerializationTypes) {}\n}\n\nexport class ListFieldObjectSerializer {\n public static deserialize(classType: new () => T, buffer: ArrayBuffer): ObservableCollection {\n const values: ObservableCollection = new ObservableCollection();\n\n const columns: FieldColumn[] = new Array();\n\n if (buffer.byteLength <= 0) {\n return values;\n }\n\n const data = new StreamDataView(buffer);\n\n // read header for data referral columns\n if (data.getByte() === SerializationSteps.HeaderStart) {\n while (data.getByte() !== SerializationSteps.HeaderEnd) {\n const fieldKey = data.getString();\n columns.push(new FieldColumn(fieldKey, data.getByte()));\n }\n }\n\n if (data.getByte() === SerializationSteps.DataStart) {\n while (data.getByte() !== SerializationSteps.DataEnd) {\n const newObj = new classType();\n columns.forEach(column => {\n if (column.type === SerializationTypes.Byte) {\n newObj.setField(column.keyName, data.getByte());\n } else if (column.type === SerializationTypes.Double) {\n newObj.setField(column.keyName, data.getFloat64());\n } else if (column.type === SerializationTypes.Guid || column.type === SerializationTypes.OptionalGuid) {\n const guidString = data.getGuidString();\n newObj.setField(column.keyName, guidString.toLowerCase());\n } else if (column.type === SerializationTypes.Int) {\n newObj.setField(column.keyName, data.getInt32());\n } else if (column.type === SerializationTypes.Long) {\n newObj.setField(column.keyName, data.getFloat64());\n } else if (column.type === SerializationTypes.String) {\n const dataString = data.getString();\n newObj.setField(column.keyName, dataString);\n }\n });\n\n values.add(newObj as unknown as U);\n }\n }\n\n return values;\n }\n}\n","// Autogenerated: CodeGen/WebMapObjectType?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObjectType?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapLayer?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapLayer?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObject?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObject?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObjectResult?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObjectResult?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObjectFilter?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapObjectFilter?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapLayerNotificationFilter?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapLayerNotificationFilter?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapNotificationFilter?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapNotificationFilter?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/ConcreteWebMapObjectFilter?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/ConcreteWebMapObjectFilter?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapNotificationFilterRequest?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/WebMapNotificationFilterRequest?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/FloorQuery?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/FloorQuery?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/FloorQueryResult?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/FloorQueryResult?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/Floor?language=ts&InterfaceOnly=True on 2023-01-16 1:33:30 PM\n// Autogenerated: CodeGen/Floor?language=ts&InterfaceOnly=False on 2023-01-16 1:33:30 PM\n\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\n\nexport interface IWebMapObjectType extends IFieldObject {\n typeId: IGuid;\n layerId: IGuid;\n name: string;\n icon: string;\n color: string;\n category: string;\n customIcon: string;\n supportsNavigation: boolean;\n clusterable: boolean;\n}\n\nexport class WebMapObjectType extends FieldObject implements IWebMapObjectType {\n // TypeId\n public get typeId(): IGuid {\n return this.getFieldGuid('TypeId');\n }\n public set typeId(value: IGuid) {\n this.setFieldGuid('TypeId', value);\n }\n // LayerId\n public get layerId(): IGuid {\n return this.getFieldGuid('LayerId');\n }\n public set layerId(value: IGuid) {\n this.setFieldGuid('LayerId', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Icon\n public get icon(): string {\n return this.getField('Icon');\n }\n public set icon(value: string) {\n this.setField('Icon', value);\n }\n // Color\n public get color(): string {\n return this.getField('Color');\n }\n public set color(value: string) {\n this.setField('Color', value);\n }\n // Category\n public get category(): string {\n return this.getField('Category');\n }\n public set category(value: string) {\n this.setField('Category', value);\n }\n // CustomIcon\n public get customIcon(): string {\n return this.getField('CustomIcon');\n }\n public set customIcon(value: string) {\n this.setField('CustomIcon', value);\n }\n // SupportsNavigation\n public get supportsNavigation(): boolean {\n return this.getField('SupportsNavigation');\n }\n public set supportsNavigation(value: boolean) {\n this.setField('SupportsNavigation', value);\n }\n // Clusterable\n public get clusterable(): boolean {\n return this.getField('Clusterable');\n }\n public set clusterable(value: boolean) {\n this.setField('Clusterable', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('TypeId', SafeGuid.EMPTY);\n this.setFieldGuid('LayerId', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setField('Icon', '');\n this.setField('Color', '');\n this.setField('Category', '');\n this.setField('CustomIcon', '');\n this.setField('SupportsNavigation', false);\n this.setField('Clusterable', false);\n }\n}\n\nexport interface IWebMapLayer extends IFieldObject {\n id: IGuid;\n includedTypes: ObservableCollection;\n name: string;\n icon: string;\n customIcon: string;\n color: string;\n}\n\nexport class WebMapLayer extends FieldObject implements IWebMapLayer {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // IncludedTypes\n public get includedTypes(): ObservableCollection {\n return this.getFieldObjectArray(WebMapObjectType, 'IncludedTypes');\n }\n public set includedTypes(value: ObservableCollection) {\n this.setFieldObjectArray('IncludedTypes', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Icon\n public get icon(): string {\n return this.getField('Icon');\n }\n public set icon(value: string) {\n this.setField('Icon', value);\n }\n // CustomIcon\n public get customIcon(): string {\n return this.getField('CustomIcon');\n }\n public set customIcon(value: string) {\n this.setField('CustomIcon', value);\n }\n // Color\n public get color(): string {\n return this.getField('Color');\n }\n public set color(value: string) {\n this.setField('Color', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setFieldArray('IncludedTypes', new ObservableCollection());\n this.setField('Name', '');\n this.setField('Icon', '');\n this.setField('CustomIcon', '');\n this.setField('Color', '');\n }\n}\n\nexport interface IWebMapObject extends IFieldObject {\n additionalLinks: ObservableCollection;\n background: string;\n rotation: number;\n zIndex: number;\n overridenMainIcon: string;\n overlayIcon: string;\n overlayIconColor: string;\n stateColor: string;\n lettersToDisplayOnMarker: string;\n guid: IGuid;\n type: IGuid;\n source: string;\n name: string;\n latitude: number;\n longitude: number;\n file: IGuid | null;\n customIconId: IGuid | null;\n customIconState: string;\n}\n\nexport class WebMapObject extends FieldObject implements IWebMapObject {\n // AdditionalLinks\n public get additionalLinks(): ObservableCollection {\n return this.getFieldArrayGuid('AdditionalLinks');\n }\n public set additionalLinks(value: ObservableCollection) {\n this.setFieldArrayGuid('AdditionalLinks', value);\n }\n // Background\n public get background(): string {\n return this.getField('Background');\n }\n public set background(value: string) {\n this.setField('Background', value);\n }\n // Rotation\n public get rotation(): number {\n return this.getField('Rotation');\n }\n public set rotation(value: number) {\n this.setField('Rotation', value);\n }\n // ZIndex\n public get zIndex(): number {\n return this.getField('ZIndex');\n }\n public set zIndex(value: number) {\n this.setField('ZIndex', value);\n }\n // OverridenMainIcon\n public get overridenMainIcon(): string {\n return this.getField('OverridenMainIcon');\n }\n public set overridenMainIcon(value: string) {\n this.setField('OverridenMainIcon', value);\n }\n // OverlayIcon\n public get overlayIcon(): string {\n return this.getField('OverlayIcon');\n }\n public set overlayIcon(value: string) {\n this.setField('OverlayIcon', value);\n }\n // OverlayIconColor\n public get overlayIconColor(): string {\n return this.getField('OverlayIconColor');\n }\n public set overlayIconColor(value: string) {\n this.setField('OverlayIconColor', value);\n }\n // StateColor\n public get stateColor(): string {\n return this.getField('StateColor');\n }\n public set stateColor(value: string) {\n this.setField('StateColor', value);\n }\n // LettersToDisplayOnMarker\n public get lettersToDisplayOnMarker(): string {\n return this.getField('LettersToDisplayOnMarker');\n }\n public set lettersToDisplayOnMarker(value: string) {\n this.setField('LettersToDisplayOnMarker', value);\n }\n // Guid\n public get guid(): IGuid {\n return this.getFieldGuid('Guid');\n }\n public set guid(value: IGuid) {\n this.setFieldGuid('Guid', value);\n }\n // Type\n public get type(): IGuid {\n return this.getFieldGuid('Type');\n }\n public set type(value: IGuid) {\n this.setFieldGuid('Type', value);\n }\n // Source\n public get source(): string {\n return this.getField('Source');\n }\n public set source(value: string) {\n this.setField('Source', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // Latitude\n public get latitude(): number {\n return this.getField('Latitude');\n }\n public set latitude(value: number) {\n this.setField('Latitude', value);\n }\n // Longitude\n public get longitude(): number {\n return this.getField('Longitude');\n }\n public set longitude(value: number) {\n this.setField('Longitude', value);\n }\n // File\n public get file(): IGuid | null {\n return this.getNullableFieldGuid('File');\n }\n public set file(value: IGuid | null) {\n this.setNullableFieldGuid('File', value);\n }\n // CustomIconId\n public get customIconId(): IGuid | null {\n return this.getNullableFieldGuid('CustomIconId');\n }\n public set customIconId(value: IGuid | null) {\n this.setNullableFieldGuid('CustomIconId', value);\n }\n // CustomIconState\n public get customIconState(): string {\n return this.getField('CustomIconState');\n }\n public set customIconState(value: string) {\n this.setField('CustomIconState', value);\n }\n\n public initializeAllFields(): void {\n super.initializeAllFields();\n this.setFieldArrayGuid('AdditionalLinks', new ObservableCollection());\n this.setField('Background', '');\n this.setField('Rotation', 0);\n this.setField('ZIndex', 0);\n this.setField('OverridenMainIcon', '');\n this.setField('OverlayIcon', '');\n this.setField('OverlayIconColor', '');\n this.setField('StateColor', '');\n this.setField('LettersToDisplayOnMarker', '');\n this.setFieldGuid('Guid', SafeGuid.EMPTY);\n this.setFieldGuid('Type', SafeGuid.EMPTY);\n this.setField('Source', '');\n this.setField('Name', '');\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setFieldGuid('File', SafeGuid.EMPTY);\n this.setFieldGuid('CustomIconId', SafeGuid.EMPTY);\n this.setField('CustomIconState', '');\n }\n}\n\nexport interface IWebMapObjectResult extends IFieldObject {\n mapObjects: ObservableCollection;\n}\n\nexport class WebMapObjectResult extends FieldObject implements IWebMapObjectResult {\n // MapObjects\n public get mapObjects(): ObservableCollection {\n return this.getFieldObjectArray(WebMapObject, 'MapObjects');\n }\n public set mapObjects(value: ObservableCollection) {\n this.setFieldObjectArray('MapObjects', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('MapObjects', new ObservableCollection());\n }\n}\n\nexport interface IWebMapObjectFilter extends IFieldObject {\n mapId: IGuid;\n name: string;\n layerIds: ObservableCollection;\n onlyOnlineLayerIds: ObservableCollection;\n}\n\nexport class WebMapObjectFilter extends FieldObject implements IWebMapObjectFilter {\n // MapId\n public get mapId(): IGuid {\n return this.getFieldGuid('MapId');\n }\n public set mapId(value: IGuid) {\n this.setFieldGuid('MapId', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // LayerIds\n public get layerIds(): ObservableCollection {\n return this.getFieldArrayGuid('LayerIds');\n }\n public set layerIds(value: ObservableCollection) {\n this.setFieldArrayGuid('LayerIds', value);\n }\n // OnlyOnlineLayerIds\n public get onlyOnlineLayerIds(): ObservableCollection {\n return this.getFieldArrayGuid('OnlyOnlineLayerIds');\n }\n public set onlyOnlineLayerIds(value: ObservableCollection) {\n this.setFieldArrayGuid('OnlyOnlineLayerIds', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('MapId', SafeGuid.EMPTY);\n this.setField('Name', '');\n this.setFieldArrayGuid('LayerIds', new ObservableCollection());\n this.setFieldArrayGuid('OnlyOnlineLayerIds', new ObservableCollection());\n }\n}\n\nexport interface IWebMapLayerNotificationFilter extends IFieldObject {\n layerId: IGuid;\n receiveNotifications: boolean;\n}\n\nexport class WebMapLayerNotificationFilter extends FieldObject implements IWebMapLayerNotificationFilter {\n // LayerId\n public get layerId(): IGuid {\n return this.getFieldGuid('LayerId');\n }\n public set layerId(value: IGuid) {\n this.setFieldGuid('LayerId', value);\n }\n // ReceiveNotifications\n public get receiveNotifications(): boolean {\n return this.getField('ReceiveNotifications');\n }\n public set receiveNotifications(value: boolean) {\n this.setField('ReceiveNotifications', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('LayerId', SafeGuid.EMPTY);\n this.setField('ReceiveNotifications', false);\n }\n}\n\nexport interface IWebMapNotificationFilter extends IFieldObject {\n requesterId: IGuid;\n mapId: IGuid;\n layerFilters: ObservableCollection;\n}\n\nexport class WebMapNotificationFilter extends FieldObject implements IWebMapNotificationFilter {\n // RequesterId\n public get requesterId(): IGuid {\n return this.getFieldGuid('RequesterId');\n }\n public set requesterId(value: IGuid) {\n this.setFieldGuid('RequesterId', value);\n }\n // MapId\n public get mapId(): IGuid {\n return this.getFieldGuid('MapId');\n }\n public set mapId(value: IGuid) {\n this.setFieldGuid('MapId', value);\n }\n // LayerFilters\n public get layerFilters(): ObservableCollection {\n return this.getFieldObjectArray(WebMapLayerNotificationFilter, 'LayerFilters');\n }\n public set layerFilters(value: ObservableCollection) {\n this.setFieldObjectArray('LayerFilters', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('RequesterId', SafeGuid.EMPTY);\n this.setFieldGuid('MapId', SafeGuid.EMPTY);\n this.setFieldArray('LayerFilters', new ObservableCollection());\n }\n}\n\nexport interface IConcreteWebMapObjectFilter extends IFieldObject {\n mapId: IGuid;\n mapObjectIds: ObservableCollection;\n sourceIds: ObservableCollection;\n}\n\nexport class ConcreteWebMapObjectFilter extends FieldObject implements IConcreteWebMapObjectFilter {\n // MapId\n public get mapId(): IGuid {\n return this.getFieldGuid('MapId');\n }\n public set mapId(value: IGuid) {\n this.setFieldGuid('MapId', value);\n }\n // MapObjectIds\n public get mapObjectIds(): ObservableCollection {\n return this.getFieldArrayGuid('MapObjectIds');\n }\n public set mapObjectIds(value: ObservableCollection) {\n this.setFieldArrayGuid('MapObjectIds', value);\n }\n // SourceIds\n public get sourceIds(): ObservableCollection {\n return this.getFieldArray('SourceIds');\n }\n public set sourceIds(value: ObservableCollection) {\n this.setFieldArray('SourceIds', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('MapId', SafeGuid.EMPTY);\n this.setFieldArrayGuid('MapObjectIds', new ObservableCollection());\n this.setFieldArray('SourceIds', new ObservableCollection());\n }\n}\n\nexport interface IWebMapNotificationFilterRequest extends IFieldObject {\n requesterId: IGuid;\n mapId: IGuid;\n}\n\nexport class WebMapNotificationFilterRequest extends FieldObject implements IWebMapNotificationFilterRequest {\n // RequesterId\n public get requesterId(): IGuid {\n return this.getFieldGuid('RequesterId');\n }\n public set requesterId(value: IGuid) {\n this.setFieldGuid('RequesterId', value);\n }\n // MapId\n public get mapId(): IGuid {\n return this.getFieldGuid('MapId');\n }\n public set mapId(value: IGuid) {\n this.setFieldGuid('MapId', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('RequesterId', SafeGuid.EMPTY);\n this.setFieldGuid('MapId', SafeGuid.EMPTY);\n }\n}\n\nexport interface IFloorQuery extends IFieldObject {\n mapId: IGuid;\n parentAreaId: IGuid;\n}\n\nexport class FloorQuery extends FieldObject implements IFloorQuery {\n // MapId\n public get mapId(): IGuid {\n return this.getFieldGuid('MapId');\n }\n public set mapId(value: IGuid) {\n this.setFieldGuid('MapId', value);\n }\n // ParentAreaId\n public get parentAreaId(): IGuid {\n return this.getFieldGuid('ParentAreaId');\n }\n public set parentAreaId(value: IGuid) {\n this.setFieldGuid('ParentAreaId', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('MapId', SafeGuid.EMPTY);\n this.setFieldGuid('ParentAreaId', SafeGuid.EMPTY);\n }\n}\n\nexport interface IFloorQueryResult extends IFieldObject {\n parentAreaId: IGuid;\n parentMapId: IGuid;\n floors: ObservableCollection;\n}\n\nexport class FloorQueryResult extends FieldObject implements IFloorQueryResult {\n // ParentAreaId\n public get parentAreaId(): IGuid {\n return this.getFieldGuid('ParentAreaId');\n }\n public set parentAreaId(value: IGuid) {\n this.setFieldGuid('ParentAreaId', value);\n }\n // ParentMapId\n public get parentMapId(): IGuid {\n return this.getFieldGuid('ParentMapId');\n }\n public set parentMapId(value: IGuid) {\n this.setFieldGuid('ParentMapId', value);\n }\n // Floors\n public get floors(): ObservableCollection {\n return this.getFieldObjectArray(Floor, 'Floors');\n }\n public set floors(value: ObservableCollection) {\n this.setFieldObjectArray('Floors', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('ParentAreaId', SafeGuid.EMPTY);\n this.setFieldGuid('ParentMapId', SafeGuid.EMPTY);\n this.setFieldArray('Floors', new ObservableCollection());\n }\n}\n\nexport interface IFloor extends IFieldObject {\n id: IGuid;\n abbreviation: string;\n name: string;\n orderPosition: number;\n coversMultipleAreas: boolean;\n}\n\nexport class Floor extends FieldObject implements IFloor {\n // Id\n public get id(): IGuid {\n return this.getFieldGuid('Id');\n }\n public set id(value: IGuid) {\n this.setFieldGuid('Id', value);\n }\n // Abbreviation\n public get abbreviation(): string {\n return this.getField('Abbreviation');\n }\n public set abbreviation(value: string) {\n this.setField('Abbreviation', value);\n }\n // Name\n public get name(): string {\n return this.getField('Name');\n }\n public set name(value: string) {\n this.setField('Name', value);\n }\n // OrderPosition\n public get orderPosition(): number {\n return this.getField('OrderPosition');\n }\n public set orderPosition(value: number) {\n this.setField('OrderPosition', value);\n }\n // CoversMultipleAreas\n public get coversMultipleAreas(): boolean {\n return this.getField('CoversMultipleAreas');\n }\n public set coversMultipleAreas(value: boolean) {\n this.setField('CoversMultipleAreas', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('Id', SafeGuid.EMPTY);\n this.setField('Abbreviation', '');\n this.setField('Name', '');\n this.setField('OrderPosition', 0);\n this.setField('CoversMultipleAreas', false);\n }\n}\n","import { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { RestResponse } from 'RestClient/Connection/RestResponse';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\n\nexport class PushResponseReceiver {\n private _client: ISecurityCenterClient;\n private _maxUriLength = 2000;\n private _currentPacketView: DataView | null = null;\n private _currentPacket: Uint8Array | null = null;\n private _currentPacketOffSet = 0;\n private _mergeNextBuffer = false;\n\n constructor(client: ISecurityCenterClient) {\n this._client = client;\n }\n\n public getAsync(url: string, onMessageReceived: (size: number, buffer: ArrayBuffer) => void): Promise {\n return new Promise((resolve, reject) => {\n const restUrl = this._client.rest.restServerUrl;\n let fullUrl = '';\n if (restUrl.endsWith('/') === false) {\n fullUrl = restUrl + '/' + url;\n } else {\n fullUrl = restUrl + url;\n }\n const requestHeaders: HeadersInit = new Headers();\n const headers = this._client.rest.additionalHeaders;\n for (const [key, value] of headers) {\n requestHeaders.set(key, value);\n }\n requestHeaders.set('Authorization', this._client.rest.authorizationHeader);\n\n let body = null;\n let method = 'GET';\n if (fullUrl.length > this._maxUriLength) {\n // query too long... transform it\n method = 'POST';\n const splitUrl = fullUrl.split('?');\n fullUrl = splitUrl[0];\n const fo = new FieldObject();\n fo.setField('Query', splitUrl[1]);\n body = fo.toString();\n requestHeaders.append('X-HTTP-Method-Override', 'GET');\n }\n\n let restResponse: RestResponse;\n fetch(fullUrl, {\n method: method,\n headers: requestHeaders,\n body: body,\n })\n .then(async (response) => {\n if (response.body == null) {\n restResponse = new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR);\n resolve(restResponse);\n return;\n }\n const reader = response.body.getReader();\n do {\n const result = await reader.read();\n if (result.done) {\n restResponse = new RestResponse(HttpStatusCode.OK);\n resolve(restResponse);\n return;\n }\n this.queueData(result.value, onMessageReceived);\n // eslint-disable-next-line no-constant-condition\n } while (true);\n })\n .catch((err) => {\n restResponse = new RestResponse(HttpStatusCode.INTERNAL_SERVER_ERROR, err);\n resolve(restResponse);\n });\n });\n }\n\n public async getJsonAsync(classType: new () => T, url: string, onMessageReceived: (message: T) => void): Promise {\n const response = await this.getAsync(url, (size, buffer) => {\n const dv = new DataView(buffer, 0, size);\n const body = this.getString(dv, 0);\n const jsonObj = JSON.parse(body[0]);\n const result = new classType();\n result.loadFields(jsonObj);\n onMessageReceived(result);\n });\n return response;\n }\n\n private queueData(data: Uint8Array, onMessageReceived: (size: number, buffer: ArrayBuffer) => void) {\n if (this._mergeNextBuffer === false) {\n this._currentPacketOffSet = 0;\n this._currentPacketView = new DataView(data.buffer);\n this._currentPacket = data;\n } else {\n if (this._currentPacket == null) {\n throw Error('_currentPacket should not be null');\n }\n // merge with current\n const mergedArray = new Uint8Array(this._currentPacket.length + data.length);\n mergedArray.set(this._currentPacket);\n mergedArray.set(data, this._currentPacket.length);\n this._currentPacketView = new DataView(mergedArray.buffer);\n this._currentPacket = mergedArray;\n this._mergeNextBuffer = false;\n }\n\n let parseAgain = true;\n while (parseAgain === true) {\n if (this._currentPacketView == null) {\n throw Error('_currentPacketView should not be null');\n }\n // Read the total length of the message\n if (this._currentPacketOffSet + 4 > this._currentPacket.byteLength) {\n // Not enought data, wait for next packet\n parseAgain = false;\n this._mergeNextBuffer = true;\n } else {\n const msgLength = this._currentPacketView.getInt32(this._currentPacketOffSet, true);\n const nextOffSet = this._currentPacketOffSet + 4 + msgLength;\n if (nextOffSet > this._currentPacket.byteLength) {\n // Not enought data, wait for next packet\n this._mergeNextBuffer = true;\n parseAgain = false;\n } else {\n // Parse current\n this.parseMessage(this._currentPacketView, this._currentPacketOffSet, onMessageReceived);\n this._currentPacketOffSet += 4 + msgLength;\n // End of current buffer ?\n if (this._currentPacketOffSet === this._currentPacketView.byteLength) {\n parseAgain = false;\n this._currentPacketOffSet = 0;\n this._currentPacketView = null;\n }\n }\n }\n }\n }\n\n private parseMessage(data: DataView, startOffset: number, onMessageReceived: (size: number, buffer: ArrayBuffer) => void) {\n const messageLen = data.getInt32(startOffset, true);\n const buffer = data.buffer.slice(startOffset, startOffset + 4 + messageLen);\n onMessageReceived(messageLen + 4, buffer);\n }\n\n private pad(n: string) {\n return n.length < 2 ? '0' + n : n;\n }\n\n private getString(dataView: DataView, startOffset: number): [string, number] {\n let offset = startOffset;\n const length = dataView.getInt32(offset, true);\n offset += 4;\n let str = '';\n for (let i = 0; i < length; i++) {\n str += '%' + this.pad(dataView.getUint8(offset).toString(16));\n offset += 1;\n }\n const result: [string, number] = [decodeURIComponent(str), 4 + length];\n return result;\n }\n\n private getGuid(dataView: DataView, startOffset: number): [string, number] {\n // const str = uuidParse.unparse(dataView.buffer.slice(startOffset, startOffset + 16));\n const str = '';\n const result: [string, number] = [str, 16];\n return result;\n }\n\n private getInt64(dataView: DataView, startOffset: number, littleEndian: boolean) {\n let low = 4;\n let high = 0;\n if (littleEndian) {\n low = 0;\n high = 4;\n }\n // eslint-disable-next-line no-bitwise\n return (dataView.getUint32(startOffset + high, littleEndian) << 32) | dataView.getUint32(startOffset + low, littleEndian);\n }\n}\n","// Autogenerated: CodeGen/MapController?language=ts&InterfaceOnly=False on 2021-10-05 12:08:42 PM\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { IGuid } from 'safeguid';\nimport { IMapController } from './map.controller.interfaces';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { IWebMapObjectFilter, IWebMapLayer, WebMapLayer, IWebMapObjectResult, WebMapObjectResult, IConcreteWebMapObjectFilter, IWebMapNotificationFilterRequest, IFloorQueryResult, FloorQueryResult, IFloorQuery } from './map.controller.data';\nimport { IWebMapNotificationFilter, WebMapNotificationFilter } from './map.controller.data';\nimport { PushResponseReceiver } from 'WebClient/PushResponseReceiver';\n\nexport class MapController extends RestObject implements IMapController {\n constructor() {\n super('api/Map');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async getAllMapObjectsAsync(query: IWebMapObjectFilter, callback: (size: number, buffer: ArrayBuffer) => void): Promise {\n if (this.client === null) {\n throw new Error('this.client is null');\n }\n const receiver = new PushResponseReceiver(this.client);\n const response = await receiver.getAsync(this.baseUri + '/' + 'AllMapObjects' + '?' + query.toQueryString(), (size: number, buffer: ArrayBuffer) => {\n callback(size, buffer);\n });\n return response;\n }\n\n public async getAvailableLayersAsync(mapId: IGuid, transaction?: ITransaction | null): Promise | null> {\n return this.getFieldObjectRelationAsync(WebMapLayer, 'AvailableLayers/' + mapId, 'mapId', true, false, null, transaction);\n }\n\n public async getFloorsAsync(query: IFloorQuery, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(FloorQueryResult, 'Floors' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n public async getMapObjectsAsync(query: IConcreteWebMapObjectFilter, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(WebMapObjectResult, 'MapObjects' + '?' + query.toQueryString(), false, null, transaction);\n }\n\n public async getNotificationFilterAsync(query: IWebMapNotificationFilterRequest, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(WebMapNotificationFilter, 'NotificationFilter' + '?' + query.toQueryString(), true, null, transaction);\n }\n\n // #endregion Rest Methods\n\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { WebMapObject } from '../controllers/map.controller.data';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport interface Point {\n X: number;\n Y: number;\n}\n\nexport enum Stretch {\n None = 0,\n Fill = 1,\n Uniform = 2,\n}\n\nexport class ImageWebMapObject extends WebMapObject {\n public get width(): number {\n return this.getField('width');\n }\n\n public get height(): number {\n return this.getField('height');\n }\n\n public get stretch(): Stretch {\n return this.getField('stretch');\n }\n\n public get entity(): IGuid {\n return this.getFieldGuid('entity');\n }\n}\n\nexport class ShapeWebMapObject extends WebMapObject {\n public get borderColor(): string {\n return this.getField('borderColor');\n }\n\n public get borderThickness(): number {\n return this.getField('borderThickness');\n }\n\n public get opacity(): number {\n return this.getField('opacity');\n }\n\n public get points(): Set {\n return this.getField>('points');\n }\n\n public get blockFieldOfView(): boolean {\n return this.getField('blockFieldOfView');\n }\n\n public get blockFieldOfViewUsingAltitude(): boolean {\n return this.getField('blockFieldOfViewUsingAltitude');\n }\n\n public get isPolyline(): boolean | undefined {\n return this.getField('isPolyline');\n }\n}\n\nexport class TextWebMapObject extends WebMapObject {\n public get width(): number {\n return this.getField('width');\n }\n\n public get height(): number {\n return this.getField('height');\n }\n\n public get borderColor(): string {\n return this.getField('borderColor');\n }\n\n public get borderThickness(): number {\n return this.getField('borderThickness');\n }\n\n public get opacity(): number {\n return this.getField('opacity');\n }\n\n public get fontFamily(): string {\n return this.getField('fontFamily');\n }\n\n public get fontIsBold(): boolean {\n return this.getField('fontIsBold');\n }\n\n public get fontIsItalic(): boolean {\n return this.getField('fontIsItalic');\n }\n\n public get fontIsUnderline(): boolean {\n return this.getField('fontIsUnderline');\n }\n\n public get fontSize(): number {\n return this.getField('fontSize');\n }\n\n public get foreground(): string {\n return this.getField('foreground');\n }\n\n public get text(): string {\n return this.getField('text');\n }\n\n public get textAlignment(): string {\n return this.getField('textAlignment');\n }\n\n public get isShadowDisplayed(): boolean {\n return this.getField('isShadowDisplayed');\n }\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport class MapObjectEventBase extends EventBase {\n public get mapObjectIds(): ObservableCollection {\n return this.getFieldArrayGuid('mapObjectIds');\n }\n}\n","import { MapObjectEventBase } from './MapObjectEventBase';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MapObjectAddOrUpdateEvent extends MapObjectEventBase {\n constructor() {\n super();\n }\n\n public get event(): string {\n return this.getField('EventContent');\n }\n\n public get updateOnlyIfVisible(): boolean {\n return this.getField('UpdateOnlyIfVisible');\n }\n\n public get eventDisplayTime(): number | undefined {\n const eventDisplayTime = this.getNullableField('EventContentDisplayTime');\n return eventDisplayTime ?? undefined;\n }\n}\n","import { MapObjectEventBase } from './MapObjectEventBase';\n\nexport class MapObjectRemoveEvent extends MapObjectEventBase {\n public get removeEventContentOnly(): boolean {\n return this.getField('RemoveEventContentOnly');\n }\n\n constructor() {\n super();\n }\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MapLayersRefreshEvent extends EventBase {\n public get layers(): ObservableCollection {\n return this.getFieldArrayGuid('layers');\n }\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MapObjectPositionUpdateEvent extends EventBase {\n public get latitude(): number {\n return this.getField('latitude');\n }\n\n public get longitude(): number {\n return this.getField('longitude');\n }\n\n public get altitude(): number {\n return this.getField('altitude');\n }\n\n public get speed(): number {\n return this.getField('speed');\n }\n\n public get heading(): number {\n return this.getField('heading');\n }\n\n public get runningState(): string {\n return this.getField('runningState');\n }\n}\n","import { MapObjectView, MarkerMapObject, TextMapObject } from '@genetec/web-maps';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { Subject } from 'rxjs';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { MapObjectEventBase } from '../../../data/MapObjectEventBase';\nimport { MapObjectAddOrUpdateEvent } from '../../../data/MapObjectAddOrUpdateEvent';\nimport { MapObjectRemoveEvent } from '../../../data/MapObjectRemoveEvent';\nimport { MapLayersRefreshEvent } from '../../../data/MapLayersRefreshEvent';\nimport { MapObjectPositionUpdateEvent } from '../../../data/MapObjectPositionUpdateEvent';\nimport { MapItemUpdater } from './map-item-updater';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MapEventProvider {\n public onEventAdded$: Subject = new Subject();\n public onEventRemoved$: Subject = new Subject();\n\n private eventHandlers: Map void> = new Map void>();\n private subscriptions = new SubscriptionCollection();\n\n constructor(private scClient: WebAppClient, private mapItemUpdater: MapItemUpdater) {\n this.initialize();\n }\n\n public destroy(): void {\n this.subscriptions.unsubscribeAll();\n }\n\n private initialize() {\n this.scClient.registerAdditionalEventTypes('MapObjectAddOrUpdateEvent', MapObjectAddOrUpdateEvent);\n this.scClient.registerAdditionalEventTypes('MapObjectPositionUpdateEvent', MapObjectPositionUpdateEvent);\n this.scClient.registerAdditionalEventTypes('MapObjectRemoveEvent', MapObjectRemoveEvent);\n this.scClient.registerAdditionalEventTypes('MapLayersRefreshEvent', MapLayersRefreshEvent);\n this.eventHandlers.set('MapObjectPositionUpdateEvent', (event) => this.onMapObjectPositionUpdateEvent(event as MapObjectPositionUpdateEvent));\n this.eventHandlers.set('MapLayersRefreshEvent', (event) => this.onMapLayersRefreshEvent(event as MapLayersRefreshEvent));\n this.eventHandlers.set('MapObjectAddOrUpdateEvent', (event) => this.onMapObjectAddOrUpdateEvent(event as MapObjectAddOrUpdateEvent));\n this.eventHandlers.set('MapObjectRemoveEvent', (event) => this.onMapObjectRemoveEvent(event as MapObjectRemoveEvent));\n\n this.subscriptions.add(this.scClient.onEventReceived((arg) => this.onEventReceived(arg)));\n }\n\n private onEventReceived(args: EventReceivedArg) {\n const eventHandler = this.eventHandlers.get(args.event.eventType);\n if (eventHandler) {\n eventHandler(args.event);\n }\n }\n\n private onMapObjectPositionUpdateEvent(event: MapObjectPositionUpdateEvent) {\n if (!this.mapItemUpdater.map?.isMapInitialized()) return;\n\n const mapObjectView = this.mapItemUpdater.map.getMapObjectView(event.sourceEntity.toTypescriptGuid()) as MapObjectView;\n if (!mapObjectView) {\n this.mapItemUpdater.displayMapObject(event.sourceEntity);\n } else {\n // TODO: This won't work for shapes, they don't have latitude / longitude but only points.\n const mapObject = mapObjectView.data as MarkerMapObject | TextMapObject;\n mapObject.name = event.sourceEntityDesc;\n mapObject.latitude = event.latitude;\n mapObject.longitude = event.longitude;\n\n this.mapItemUpdater.map.updateMapObjects(mapObject);\n }\n }\n\n private async onMapLayersRefreshEvent(event: MapLayersRefreshEvent) {\n await this.mapItemUpdater.refreshLayers(Array.from(event.layers));\n }\n\n private refreshMapObjects(event: MapObjectAddOrUpdateEvent) {\n if (!this.mapItemUpdater.map?.isMapInitialized()) return;\n\n event.mapObjectIds.forEach((id) => {\n if (this.mapItemUpdater.map) {\n // if we have an event, only display map object if it doesn't exist\n if (event.event) {\n if (!this.mapItemUpdater.map.mapObjectViewExists(id.toTypescriptGuid())) {\n this.mapItemUpdater.displayMapObject(id);\n }\n } else if (event.updateOnlyIfVisible) {\n this.mapItemUpdater.updateMapObjectIfVisible(id);\n } else {\n // new items\n this.mapItemUpdater.displayMapObject(id);\n }\n }\n });\n }\n\n private onMapObjectRemoveEvent(event: MapObjectRemoveEvent) {\n if (!event.removeEventContentOnly) {\n this.mapItemUpdater.map?.removeItems(Array.from(event.mapObjectIds, (item) => item.toString().toLowerCase()));\n } else {\n this.processEvent(event);\n }\n }\n\n private onMapObjectAddOrUpdateEvent(event: MapObjectAddOrUpdateEvent) {\n this.refreshMapObjects(event);\n\n if (event.event?.length > 0) {\n this.processEvent(event);\n }\n }\n\n private processEvent(event: MapObjectEventBase) {\n if (event instanceof MapObjectRemoveEvent) {\n this.onEventRemoved$.next(event);\n } else if (event instanceof MapObjectAddOrUpdateEvent) {\n this.onEventAdded$.next(event);\n }\n }\n}\n","import { Constants } from '@modules/shared/utilities/constants';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const MapProviderTypes = Constants({\n Image: SafeGuid.EMPTY,\n Esri: SafeGuid.parse('2f3a8f7a-51f4-4558-970f-0521687b661e'),\n BeNomad: SafeGuid.parse('aef66392-87a1-4f8b-a281-ab12691fb8ee'),\n Bing: SafeGuid.parse('d0ceb371-f10a-4e12-a2c1-df617d6674a8'),\n BingHybrid: SafeGuid.parse('94e2fcb4-caac-45ea-a1f9-8147c4b14970'),\n BingSatellite: SafeGuid.parse('3ac742dd-966b-4cfb-b67d-33e7f82f2d37'),\n Google: SafeGuid.parse('d7287da0-a7ff-405f-8166-b6baf26d066c'),\n GoogleTerrain: SafeGuid.parse('a42edf2e-63c5-4967-9dbf-4efb3af7bc11'),\n Custom: SafeGuid.parse('2df9773a-18d5-4bb7-88e9-255bb6805ab2'),\n});\n","import { GoogleMapProvider, GoogleMapProviderOptions, MapOptions, MarkerClusterGroupOptions } from '@genetec/web-maps';\nimport { MapsProviderClient } from '@modules/map/api/api';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { IGuid } from 'safeguid';\nimport { MapLoader } from './map-loader';\nimport { MapProviderTypes } from './map-provider-types';\nimport { MapProvider, MapProviderLoaderOptions } from './map-provider.interface';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class GoogleMapProviderLoader implements MapProvider {\n public type: IGuid = MapProviderTypes.Google;\n private detectChangeDone = false;\n\n constructor(private mapLoader: MapLoader, private entityCacheTask: IEntityCacheTask, private mapsProviderClient: MapsProviderClient, private loggerService: LoggerService) {}\n\n public async loadMapAsync(map: IMapEntity, options: MapProviderLoaderOptions): Promise {\n const markerClustering: MarkerClusterGroupOptions = {\n chunkedLoading: true,\n maxClusterRadius: 50,\n spiderfyOnMaxZoom: false,\n zoomToBoundsOnClick: true,\n };\n\n const mapOptions: MapOptions = {\n clustering: markerClustering,\n attributionControl: false,\n closePopupOnClick: false,\n minZoom: 1.0,\n maxZoom: map.maxZoom,\n zoom: options.zoom ?? 4,\n maxBounds: [\n [-90.0, -220.0],\n [90.0, 220.0],\n ],\n bounceAtZoomLimits: false,\n inertia: false,\n maxBoundsViscosity: 1.0,\n userLocationEnabled: options.userLocationEnabled,\n initialBounds: options.defaultView,\n center: options.center,\n };\n\n let key!: string;\n\n const systemConfig = (await this.entityCacheTask.getEntityAsync(SystemConfigurationEntity, Guids.SystemConfiguration, true)) as SystemConfigurationEntity;\n if (systemConfig) {\n key = await this.getKey();\n\n if (!this.detectChangeDone) {\n this.entityCacheTask.detectRelationChangeAsync(systemConfig, () => systemConfig.getMapProvidersAsync()).fireAndForget();\n this.detectChangeDone = true;\n }\n }\n\n if (!key) {\n this.loggerService.traceError('No google API Key provided');\n return false;\n }\n\n // Missing types from gridLayer.GoogleMutantOptions\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const mapProviderOptions: GoogleMapProviderOptions = {\n noWrap: true,\n apiKey: key,\n } as any;\n\n await this.mapLoader.loadMapAsync(GoogleMapProvider, mapOptions, mapProviderOptions);\n\n return true;\n }\n\n private async getKey(): Promise {\n // license key is fetched like the SD, the api key from google has a restriction protection underneath the key to only allow\n // requester from a certain location. https://developers.google.com/maps/api-key-best-practices\n const key = await this.mapsProviderClient.getProviderKey(this.type).toPromise();\n return key;\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\nexport const MapCommands = Constants({\n ToggleMinimap: SafeGuid.parse('1E6322C5-C4D9-1DE0-22F7-CBE0ABB301B8'),\n});\n","// Autogenerated: v2/help/enumerations/roletypeids?codegen=ts on 2022-12-21 2:23:44 PM\nimport { SafeGuid } from 'safeguid';\n\nexport class RoleGuids {\n public static CloudArchiveRole = SafeGuid.parse('83048a6e-40e5-481d-bdc9-e2a754e7bf26');\n public static RestRole = SafeGuid.parse('94477a58-8d8d-44a6-b5a7-52827bf38f23');\n public static ZoneManagement = SafeGuid.parse('f7e2737f-c84c-46a3-93fb-29bd4dec60dc');\n public static WebSdk = SafeGuid.parse('b1817f00-672b-4708-bf08-6a8e2e898cdf');\n public static IngestionRole = SafeGuid.parse('d4376829-44d5-4bb9-9830-a111ff4b128b');\n public static ReverseTunnelClientRole = SafeGuid.parse('85714724-74cd-4a91-a7de-90a099939f67');\n public static AuthRole = SafeGuid.parse('9b7c06f7-ed2e-46f1-b486-54feb38b5452');\n public static PointOfSale = SafeGuid.parse('0ffef791-2583-4c7e-8107-e0e6c741d7cc');\n public static Federation = SafeGuid.parse('fe3380c2-3c2c-4997-9eb1-143c8947a0fa');\n public static AccessManager = SafeGuid.parse('c04c211f-384b-4529-91f3-7129ffa100e0');\n public static AuxiliaryArchiver = SafeGuid.parse('f0ccf0cf-476e-41fd-8218-30cd4dffbc2a');\n public static IntrusionDetection = SafeGuid.parse('e5158ced-6d26-4a60-b788-59fb1aec3c9d');\n public static LicensePlateManager = SafeGuid.parse('1cb17dad-049d-491d-8406-b1c9c2eeb395');\n public static DirectoryFailover = SafeGuid.parse('2303fc88-ca03-4f3e-b8de-652d8b8a4b35');\n public static AutomationRole = SafeGuid.parse('c0e1aa70-1b23-4170-a0a1-03d80877b5d5');\n public static MediaGateway = SafeGuid.parse('cee443eb-47fd-453d-aaa8-08d0781c1e62');\n public static MobileRole = SafeGuid.parse('4f836034-5133-4e28-9ea5-38261d842435');\n public static SimulationRole = SafeGuid.parse('c8d0c1da-5dc8-481e-a369-9872afbdf9fc');\n public static UnitAssistantRole = SafeGuid.parse('b31b061a-273a-45ed-bb8f-694b5a97a39a');\n public static BwcManager = SafeGuid.parse('87f13c8b-240a-485d-abc0-0826b8d0aad6');\n public static Plugin = SafeGuid.parse('276ed751-bb08-4755-9a59-82b6d855d9ce');\n public static PrivacyProtector = SafeGuid.parse('8da59415-3552-45b5-abdf-9df0ed280886');\n public static TaskAutomation = SafeGuid.parse('276496e6-e600-41f7-bbfe-ccdcda0b053a');\n public static MapManagerRole = SafeGuid.parse('5908fc43-64e9-439b-a35f-22611f7c2598');\n public static ReverseTunnelServer = SafeGuid.parse('abb13073-d718-4287-a640-323f0e31f787');\n public static StreamManagement = SafeGuid.parse('c4dba4b9-8c5c-4b86-84a2-0394829a5a82');\n public static SharingManager = SafeGuid.parse('be1ce618-e55e-45b7-8e42-499f0e88bcce');\n public static MobileCredentialManagerRole = SafeGuid.parse('6331f060-d93c-4dd2-9adc-dba72c4eac59');\n public static HealthMonitoring = SafeGuid.parse('6adeaf49-2843-4695-9430-c20d2884c8cc');\n public static ActiveDirectory = SafeGuid.parse('6b9722d5-6ca8-4104-b2b6-a40dd46b7616');\n\n public static readonly values = [\n RoleGuids.CloudArchiveRole,\n RoleGuids.RestRole,\n RoleGuids.ZoneManagement,\n RoleGuids.WebSdk,\n RoleGuids.IngestionRole,\n RoleGuids.ReverseTunnelClientRole,\n RoleGuids.AuthRole,\n RoleGuids.PointOfSale,\n RoleGuids.Federation,\n RoleGuids.AccessManager,\n RoleGuids.AuxiliaryArchiver,\n RoleGuids.IntrusionDetection,\n RoleGuids.LicensePlateManager,\n RoleGuids.DirectoryFailover,\n RoleGuids.AutomationRole,\n RoleGuids.MediaGateway,\n RoleGuids.MobileRole,\n RoleGuids.SimulationRole,\n RoleGuids.UnitAssistantRole,\n RoleGuids.BwcManager,\n RoleGuids.Plugin,\n RoleGuids.PrivacyProtector,\n RoleGuids.TaskAutomation,\n RoleGuids.MapManagerRole,\n RoleGuids.ReverseTunnelServer,\n RoleGuids.StreamManagement,\n RoleGuids.SharingManager,\n RoleGuids.MobileCredentialManagerRole,\n RoleGuids.HealthMonitoring,\n RoleGuids.ActiveDirectory\n ];\n}\n","import {\n createGeoReferencedImageCRS,\n createImageCRS,\n GenImageMapProvider,\n GenImageMapProviderOptions,\n Headers,\n LatLngLongLiteral,\n MapOptions,\n MarkerClusterGroupOptions,\n MiniMap,\n PointLiteral,\n toLatLngBounds,\n} from '@genetec/web-maps';\nimport { MapOptionsComponent } from '@modules/general/components/options/maps-options/maps-options.component';\nimport { MapCommands } from '@modules/maps/enumerations/map-commands';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { MapContext, SettingsService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RoleGuids } from 'RestClient/Client/Enumerations/RoleGuids';\nimport { IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { IGuid } from 'safeguid';\nimport { MapLoader } from './map-loader';\nimport { MapProviderTypes } from './map-provider-types';\nimport { MapProvider, MapProviderLoaderOptions, TokenSupport } from './map-provider.interface';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class ImageMapProviderLoader implements MapProvider, TokenSupport {\n public type: IGuid = MapProviderTypes.Image;\n\n private imageMapTileUrlTemplate = '/{z}/{x}/{y}.png';\n private imageMapApiRequestUrlTemplate = '/v2/Entities/Roles/ExecuteApiRequest/';\n\n constructor(\n private mapLoader: MapLoader,\n private scClient: SecurityCenterClient,\n private loggerService: LoggerService,\n private commandService: InternalCommandsService,\n private translateService: TranslateService,\n private userSettingsService: SettingsService\n ) {}\n\n public async loadMapAsync(map: IMapEntity, options: MapProviderLoaderOptions): Promise {\n const headersData = this.getConnectionHeaders();\n let webToken = this.scClient.rest.authorizationHeader;\n if (webToken.startsWith('Token')) {\n webToken = webToken.substr(5).trim();\n }\n\n const markerClustering: MarkerClusterGroupOptions = {\n chunkedLoading: true,\n maxClusterRadius: 50,\n spiderfyOnMaxZoom: false,\n zoomToBoundsOnClick: true,\n };\n\n const leafletOptions: MapOptions = {\n clustering: markerClustering,\n attributionControl: false,\n closePopupOnClick: false,\n minZoom: 1.0,\n maxZoom: map.maxZoom,\n zoom: options.zoom ?? 2,\n bounceAtZoomLimits: false,\n inertia: false,\n maxBoundsViscosity: 1.0,\n initialBounds: options.defaultView,\n center: options.center,\n };\n\n const isMinimapDisabled = this.userSettingsService.get(OptionTypes.Maps, MapOptionsComponent.disableMinimapSettingId);\n\n const providerOptions: GenImageMapProviderOptions = {\n url: this.scClient.rest.restServerUrl + this.imageMapApiRequestUrlTemplate,\n useIndexedDBCache: true,\n headers: headersData,\n body: {\n roleType: RoleGuids.MapManagerRole.toString(),\n url: map.id.toString() + this.imageMapTileUrlTemplate,\n method: 'GET',\n headers: { authentication: webToken },\n },\n cacheVersion: map.version.toString(),\n showMinimap: true,\n minimapOptions: {\n disabled: isMinimapDisabled,\n minimumMapWidth: 500,\n contextMenuHandler: async (minimap: MiniMap, e: MouseEvent) => {\n const commandUsage = await this.commandService.getCommandsUsage({ type: ContextTypes.Map, data: { mapId: map.id } as MapContext }, [MapCommands.ToggleMinimap]);\n const contextMenuItem = await commandUsage.createContextMenuItemsAsync();\n this.commandService.showContextMenu(e, contextMenuItem);\n },\n },\n };\n\n if (options.geoReference) {\n const sourcePoints = options.geoReference.sourcePoints.values().map((point) => ({ x: point.x, y: point.y })) as PointLiteral[];\n const targetCoordinates = options.geoReference.targetPoints\n .values()\n .map((coordinate) => ({ latitude: coordinate.latitude, longitude: coordinate.longitude })) as LatLngLongLiteral[];\n if (targetCoordinates.length >= 3 && targetCoordinates.length === sourcePoints.length) {\n leafletOptions.geoReferencedImageCRS = createGeoReferencedImageCRS(sourcePoints, targetCoordinates);\n leafletOptions.userLocationEnabled = options.userLocationEnabled;\n } else {\n this.loggerService.traceError('GeoReference invalid, not enough reference points or incompatibility between number of source points and target coordinates.');\n }\n } else {\n const scale = Math.pow(2, map.maxZoom);\n const mapSize = scale * 256;\n const halfSize = mapSize / 2;\n const maxBounds = toLatLngBounds([\n [-halfSize, -halfSize],\n [halfSize, halfSize],\n ]);\n\n leafletOptions.crs = createImageCRS(map.maxZoom);\n // Pads the bounds a bit so that we can pan more and leave room for sidepane for example.\n // Increased padding to 2 to avoid hiding entities that are found in the corners of maps.\n leafletOptions.maxBounds = maxBounds.pad(2);\n providerOptions.bounds = maxBounds;\n\n // No user location on non georeferenced image maps\n leafletOptions.userLocationEnabled = false;\n }\n\n await this.mapLoader.loadMapAsync(GenImageMapProvider, leafletOptions, providerOptions);\n\n return true;\n }\n\n public applyToken(token: string): void {\n if (!this.mapLoader.map?.isMapInitialized()) {\n this.loggerService.traceError('Map is not initialized!');\n return;\n }\n const provider = this.mapLoader.map.getCurrentProvider() as GenImageMapProvider;\n if (provider) {\n provider.updateWebToken(token);\n }\n }\n\n private getConnectionHeaders(): Headers {\n const headers: Headers = { authorization: this.scClient.rest.authorizationHeader };\n for (const [key, value] of this.scClient.rest.additionalHeaders) {\n headers[key] = value;\n }\n return headers;\n }\n}\n","import { IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { IGuid } from 'safeguid';\nimport { CustomMapProvider, CustomMapProviderOptions, MapOptions, MarkerClusterGroupOptions } from '@genetec/web-maps';\nimport { MapProviderTypes } from './map-provider-types';\nimport { MapProvider, MapProviderLoaderOptions } from './map-provider.interface';\nimport { MapLoader } from './map-loader';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class FallbackGeoreferencedMapProviderLoader implements MapProvider {\n private static readonly maxNativeZoom = 18;\n\n private static readonly defaultURL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n\n public readonly type: IGuid = MapProviderTypes.Custom;\n\n constructor(private mapLoader: MapLoader) {}\n\n public async loadMapAsync(map: IMapEntity, options: MapProviderLoaderOptions): Promise {\n const markerClustering: MarkerClusterGroupOptions = {\n chunkedLoading: true,\n maxClusterRadius: 50,\n spiderfyOnMaxZoom: false,\n zoomToBoundsOnClick: true,\n };\n\n const mapOptions: MapOptions = {\n clustering: markerClustering,\n closePopupOnClick: false,\n minZoom: 1.0,\n maxZoom: map.maxZoom,\n zoom: options.zoom ?? 4,\n maxBounds: [\n [-90.0, -220.0],\n [90.0, 220.0],\n ],\n bounceAtZoomLimits: false,\n inertia: false,\n maxBoundsViscosity: 1.0,\n userLocationEnabled: options.userLocationEnabled,\n initialBounds: options.defaultView,\n center: options.center,\n };\n\n const mapProviderOptions: CustomMapProviderOptions = {\n url: FallbackGeoreferencedMapProviderLoader.defaultURL,\n maxNativeZoom: FallbackGeoreferencedMapProviderLoader.maxNativeZoom,\n maxZoom: map.maxZoom,\n bounds: [\n [-90.0, -180.0],\n [90.0, 180.0],\n ],\n attribution: '©
    OpenStreetMap',\n };\n\n await this.mapLoader.loadMapAsync(CustomMapProvider, mapOptions, mapProviderOptions);\n\n this.mapLoader.map?.setGeolocationEnabled(true);\n\n return true;\n }\n}\n","import { MapsProviderClient } from '@modules/map/api/api';\nimport { SettingsService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { LoggerService } from 'src/app/modules/shared/services/logger/logger.service';\nimport { GoogleMapProviderLoader } from './google-map-provider-loader';\nimport { ImageMapProviderLoader } from './image-map-provider-loader';\nimport { MapLoader } from './map-loader';\nimport { MapProvider, MapProviderLoaderOptions, TokenSupport } from './map-provider.interface';\nimport { FallbackGeoreferencedMapProviderLoader } from './fallback-georeferenced-map-provider-loader';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MapProviderLoader {\n private mapProviders: Set = new Set();\n private cacheTask!: IEntityCacheTask;\n\n private readonly fallbackGeoMapProviderLoader: FallbackGeoreferencedMapProviderLoader;\n\n constructor(\n mapLoader: MapLoader,\n scClient: SecurityCenterClient,\n mapsProviderClient: MapsProviderClient,\n private loggerService: LoggerService,\n commandService: InternalCommandsService,\n translateService: TranslateService,\n userSettingsService: SettingsService\n ) {\n this.cacheTask = scClient.buildEntityCache();\n this.mapProviders.add(new ImageMapProviderLoader(mapLoader, scClient, loggerService, commandService, translateService, userSettingsService));\n this.mapProviders.add(new GoogleMapProviderLoader(mapLoader, this.cacheTask, mapsProviderClient, loggerService));\n // this.mapProviders.add(new CustomMapProviderLoader(mapLoader)); Not supported yet.\n this.fallbackGeoMapProviderLoader = new FallbackGeoreferencedMapProviderLoader(mapLoader);\n }\n\n public async loadMapAsync(map: IMapEntity, options: MapProviderLoaderOptions): Promise {\n const mapProvider = this.getMapProviderLoader(map);\n if (mapProvider) {\n return this.loadProviderAsync(mapProvider, map, options);\n }\n\n // Couldn't load geolocalized map, use fallback map provider.\n if (map.geoLocalized) {\n this.logProviderNotFound(map, true);\n return this.loadProviderAsync(this.fallbackGeoMapProviderLoader, map, options);\n }\n\n this.logProviderNotFound(map);\n return false;\n }\n\n public applyToken(map: IMapEntity, token: string): void {\n const provider = this.getMapProviderLoader(map) as MapProvider | (MapProvider & TokenSupport) | undefined;\n if (provider && 'applyToken' in provider) {\n provider.applyToken(token);\n }\n }\n\n public destroy(): void {\n this.cacheTask?.dispose().fireAndForget();\n }\n\n private getMapProviderLoader(map: IMapEntity): MapProvider | undefined {\n return Array.from(this.mapProviders).find((item) => item.type.equals(map.providerId));\n }\n\n private loadProviderAsync(mapProvider: MapProvider, map: IMapEntity, options: MapProviderLoaderOptions): Promise {\n try {\n return mapProvider.loadMapAsync(map, options);\n } catch (e) {\n this.loggerService.traceError(e);\n }\n return Promise.resolve(false);\n }\n\n private logProviderNotFound(mapEntity: IMapEntity, usingFallback = false) {\n this.loggerService.traceDebug(`No supported provider found provider id ${mapEntity.providerId.toString()}${usingFallback ? ', using fallback map provider' : ''}.`);\n }\n}\n","import { Inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n DivIcon,\n ImageMapObject,\n LatLng,\n LatLngBounds,\n LeafletEvent,\n LeafletMapProviderBase,\n LeafletMouseEvent,\n Map as WebMap,\n MapObject,\n MapObjectCategory,\n MapObjectEvent,\n MapObjectView,\n MapOptions,\n MapProviderClassType,\n Marker,\n MarkerClassNameIcon,\n MarkerClassNameOverlayIcon,\n MarkerIcon,\n MarkerIconStyle,\n MarkerImgIcon,\n MarkerOverlayIcon,\n MarkerTextIcon,\n MiniMap,\n MiniMapStateChangeEvent,\n Polyline,\n ShapeMapObject,\n ShapeType,\n TextMapObject,\n} from '@genetec/web-maps';\nimport { MapOptionsComponent } from '@modules/general/components/options/maps-options/maps-options.component';\nimport { MapsProviderClient } from '@modules/map/api/api';\nimport { InitializeMapOptions, MapSelectionData } from '@modules/maps/models';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { ContentGroup } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport {\n COMMANDS_SERVICE,\n ContentExtensionServicesProvider,\n CONTENT_SERVICES_PROVIDER,\n MapContext,\n mapsServiceId,\n PublicMapService,\n SettingsService,\n USER_SETTINGS_SERVICE,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { ResourcesService } from '@modules/shared/services/resources/resources.service';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { toError } from '@src/app/utilities';\nimport { WINDOW } from '@utilities/common-helper';\nimport { EntityTypeIds } from 'RestClient/Client/Enumerations/EntityTypeIds';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { IAreaEntity } from 'RestClient/Client/Interface/IAreaEntity';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { IDefaultView, IMapEntity, MapEntityFields } from 'RestClient/Client/Interface/IMapEntity';\nimport { ISystemConfigurationEntity } from 'RestClient/Client/Interface/ISystemConfigurationEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { AreaEntity } from 'RestClient/Client/Model/AreaEntity';\nimport { MapEntity } from 'RestClient/Client/Model/MapEntity';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { UserTokenData } from 'RestClient/Client/Parameters/UserTokenData';\nimport { Debouncer } from 'RestClient/Helpers/Debouncer';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ListFieldObjectSerializer } from 'WebClient/Model/ListFieldObjectSerializer';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { MapController } from '../../controllers/map.controller';\nimport {\n ConcreteWebMapObjectFilter,\n FloorQuery,\n IFloorQueryResult,\n IWebMapLayer,\n IWebMapNotificationFilter,\n IWebMapObject,\n IWebMapObjectType,\n WebMapLayerNotificationFilter,\n WebMapNotificationFilterRequest,\n WebMapObject,\n WebMapObjectFilter,\n} from '../../controllers/map.controller.data';\nimport { IMapController } from '../../controllers/map.controller.interfaces';\nimport { MapObjectAddOrUpdateEvent } from '../../data/MapObjectAddOrUpdateEvent';\nimport { MapObjectRemoveEvent } from '../../data/MapObjectRemoveEvent';\nimport { ImageWebMapObject, ShapeWebMapObject, TextWebMapObject } from '../../data/maps-data';\nimport { MapEventProvider } from './map-event-provider/map-event-provider';\nimport { MapProviderLoader } from './map-provider/map-provider-loader';\nimport { MapProviderLoaderOptions } from './map-provider/map-provider.interface';\n\n// Interface for a WebMapObject with an extra property added by a separate request (getFileCache).\ninterface WebMapObjectWithCustomIcon extends IWebMapObject {\n customIconSrc?: string;\n}\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class MapService implements PublicMapService {\n public map?: WebMap;\n\n public get onMapObjectSelected$(): Observable {\n return this.onMapObjectSelectedSubject.asObservable();\n }\n\n public get onMapObjectUnselected$(): Observable {\n return this.onMapObjectUnselectedSubject.asObservable();\n }\n\n public get onMapObjectMouseEnter$(): Observable {\n return this.onMapObjectMouseEnterSubject.asObservable();\n }\n\n public get onMapObjectMouseLeave$(): Observable {\n return this.onMapObjectMouseLeaveSubject.asObservable();\n }\n\n public get onMapTypesLoaded$(): Observable {\n return this.onMapTypesLoadedSubject.asObservable();\n }\n\n public get onMapLoaded$(): Observable {\n return this.onMapLoadedSubject.asObservable();\n }\n\n public get onEventAdded$(): Observable {\n return this.onEventAddedSubject.asObservable();\n }\n\n public get onEventRemoved$(): Observable {\n return this.onEventRemovedSubject.asObservable();\n }\n\n public get onMapUnavailable$(): Observable {\n return this.onMapUnavailableSubject.asObservable();\n }\n\n public get onMiniMapStateChanged$(): Observable {\n return this.onMiniMapStateChangedSubject.asObservable();\n }\n\n //TODO YN: This event is to be removed and replaced with commands with the composable Tasks, for now available to let plugins change map on the main task\n public get onSelectionRequested$(): Observable {\n return this.onSelectionRequestedSubject.asObservable();\n }\n\n //TODO YN: This event is to be removed and replaced with commands with the composable Tasks, for now available to let plugins change content on the map task\n public get onUpdateContextualDataRequested$(): Observable {\n return this.onUpdateContextualDataRequestedSubject.asObservable();\n }\n\n //TODO YN: This event is to be removed and replaced with commands with the composable Tasks, for now available to let plugins change content on the map task\n public get onClearContextualDataRequested$(): Observable {\n return this.onClearContextualDataRequestedSubject.asObservable();\n }\n\n public layers: ObservableCollection | null = null;\n\n public get mapAvailable(): boolean {\n return this.mapAvailableSubject.getValue();\n }\n public mapAvailable$: Observable;\n\n public currentMapEntity: IMapEntity | null = null;\n\n public loadingMapObjects$: Observable;\n\n public get displayedLayerIds(): IGuid[] {\n return this.currentlyDisplayedLayers.map((item) => new SafeGuid(item));\n }\n\n protected readonly scClient: WebAppClient;\n\n private onMapObjectSelectedSubject = new Subject();\n private onMapObjectUnselectedSubject = new Subject();\n private onMapObjectMouseEnterSubject = new Subject();\n private onMapObjectMouseLeaveSubject = new Subject();\n private onMapTypesLoadedSubject = new Subject();\n private onMapLoadedSubject = new Subject();\n private onEventAddedSubject = new Subject();\n private onEventRemovedSubject = new Subject();\n private onMapUnavailableSubject = new Subject();\n private onMiniMapStateChangedSubject = new Subject();\n\n //TODO YN: This event is to be removed and replaced with commands with the composable Tasks, for now available to let plugins change map on the main task\n private onSelectionRequestedSubject = new Subject();\n //TODO YN: This event is to be removed and replaced with commands with the composable Tasks, for now available to let plugins change content on the map task\n private onUpdateContextualDataRequestedSubject = new Subject();\n private onClearContextualDataRequestedSubject = new Subject();\n\n private readonly markerRefreshMinDelay = 200;\n private readonly markerRefreshMaxDelay = 2000;\n private readonly loadingDisplayTimeout = 1000;\n\n private readonly requesterId = SafeGuid.newGuid();\n\n private debouncerMarkerDownload!: Debouncer;\n private markersToDownload = SafeGuid.createSet();\n private markersToUpdateIfVisible = SafeGuid.createSet();\n\n private mapLoadItemsDownloaded = false;\n private readonly mapProviderLoader: MapProviderLoader;\n private mapObjectTypes = new Map();\n private currentlyDisplayedLayers!: IGuid[];\n private hiddenMapObjectTypes: IGuid[] = [];\n private mapEventProvider: MapEventProvider | undefined;\n private subscriptions = new SubscriptionCollection();\n private eventSubscriptions = new SubscriptionCollection();\n private callMapLoadedOnVisibilityChange = false;\n private visibilityChangedHandler: () => void;\n private mapEntityCacheTask?: IEntityCacheTask;\n\n private mapAvailableSubject = new BehaviorSubject(true);\n private loadingMapObjectsSubject = new BehaviorSubject(false);\n\n // Map Object Type Ids that we do not want to see when they are marked \"offline\"\n private onlyOnlineMapObjectTypes = new Set();\n\n private eventsRegistered = false;\n\n private readonly mapEntityFieldsToDownload = [\n MapEntityFields.geoLocalizedField,\n MapEntityFields.maxZoomField,\n MapEntityFields.providerIdField,\n MapEntityFields.versionField,\n MapEntityFields.associatedAreaField,\n ];\n\n constructor(\n securityCenterProvider: SecurityCenterClientService,\n mapsProviderClient: MapsProviderClient,\n private loggerService: LoggerService,\n private resourceService: ResourcesService,\n @Inject(CONTENT_SERVICES_PROVIDER) contentServicesProvider: ContentExtensionServicesProvider,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n private translateService: TranslateService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService,\n @Inject(WINDOW) private window: Window,\n private domSanitizer: DomSanitizer\n ) {\n this.scClient = securityCenterProvider?.scClient;\n this.mapProviderLoader = new MapProviderLoader(this, this.scClient, mapsProviderClient, this.loggerService, commandsService, translateService, userSettingsService);\n\n this.setupDebouncer();\n\n if (this.scClient) {\n this.subscriptions.add(this.scClient.onTokenApplied((tokenData) => this.onTokenApplied(tokenData)));\n this.subscriptions.add(\n this.scClient.onLogonStateChanged((state) => {\n if (!state.loggedOn()) {\n this.emptyMap(true);\n this.mapEntityCacheTask?.dispose().fireAndForget();\n }\n })\n );\n }\n\n this.subscriptions.add(\n this.userSettingsService.onSettingsChanged$.subscribe(() => {\n const miniMap = this.getMiniMap();\n if (miniMap) {\n const miniMapDisabled = this.userSettingsService.get(OptionTypes.Maps, MapOptionsComponent.disableMinimapSettingId);\n if (miniMapDisabled) {\n miniMap.hide();\n } else {\n miniMap.show();\n }\n }\n\n const showOfflineMobileUsers = this.userSettingsService.get(OptionTypes.Maps, MapOptionsComponent.showOfflineMobileUsersId);\n if (showOfflineMobileUsers) {\n this.removeOnlyOnlineMapObjectTypeFilter(EntityTypeIds.MobileApp);\n } else {\n this.addOnlyOnlineMapObjectTypeFilter(EntityTypeIds.MobileApp);\n }\n })\n );\n\n // set this map as a public interface for external usages, keep PublicMapService as limited as possible\n contentServicesProvider.setService(mapsServiceId, this as PublicMapService);\n\n // If a map is created while we are not the active window, the map container's size could be wrong\n // and mess up the map.\n this.visibilityChangedHandler = this.onDocumentVisbilityChanged.bind(this);\n document.addEventListener('visibilitychange', this.visibilityChangedHandler);\n\n this.mapAvailable$ = this.mapAvailableSubject.asObservable();\n this.loadingMapObjects$ = this.loadingMapObjectsSubject.asObservable();\n }\n\n public destroy(): void {\n this.map?.off();\n this.debouncerMarkerDownload?.dispose();\n this.mapProviderLoader?.destroy();\n this.subscriptions.unsubscribeAll();\n this.cleanMapEventProvider();\n\n this.emptyMap(true);\n\n document.removeEventListener('visibilitychange', this.visibilityChangedHandler);\n this.mapEntityCacheTask?.dispose().fireAndForget();\n }\n\n public async loadMapAsync(provider: MapProviderClassType, mapOptions: MapOptions, providerOptions: T['options']): Promise {\n if (!this.map?.isMapInitialized()) {\n this.map = new WebMap('map', mapOptions);\n\n // Removes the Leaflet attribution\n this.map.leafletMap?.attributionControl?.setPrefix('');\n\n this.eventsRegistered = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.map.whenReady(this.onLoaded, this);\n\n if (!this.eventsRegistered) {\n // 'this' is set through parameter */\n /* eslint-disable @typescript-eslint/unbound-method */\n this.loggerService.traceDebug('Map-service : Make sure this warning doesnt appear more than once consequently! May be an indication of double widgets in sidepane');\n this.map.on('moveend', this.onAreaViewChanged, this);\n this.map.on('zoomend', this.onAreaViewChanged, this);\n this.map.on('mapobjectadd', this.onMarkerAdded, this);\n this.map.on('mapobjectshow', this.onMarkerShown, this);\n /* eslint-enable @typescript-eslint/unbound-method */\n this.map.on('mapobjectselect', (event: MapObjectEvent) => this.onMapObjectSelectedSubject.next(event));\n this.map.on('mapobjectunselect', (event: MapObjectEvent) => this.onMapObjectUnselectedSubject.next(event.mapObjectView));\n this.map.on('mapobjectmouseenter', (event: MapObjectEvent) => this.onMapObjectMouseEnterSubject.next(event.mapObjectView));\n this.map.on('mapobjectmouseleave', (event: MapObjectEvent) => this.onMapObjectMouseLeaveSubject.next(event.mapObjectView));\n\n this.map.on('minimapstatechange', (event: MiniMapStateChangeEvent) => this.onMiniMapStateChangedSubject.next(event));\n\n this.eventsRegistered = true;\n }\n\n return this.map.loadProviderAsync(provider, providerOptions, mapOptions);\n }\n\n public async initializeMap(options: InitializeMapOptions): Promise {\n this.cleanMapEventProvider();\n\n if (!this.scClient.isLoggedOn) {\n return;\n }\n\n if (this.currentMapEntity) {\n this.emptyMap();\n }\n\n const map = await this.getMapEntityAsync(options.mapId, options.withEvents);\n\n if (map?.id.equals(Guids.DefaultMapId)) {\n map.name = this.translateService.instant('STE_LABEL_WORLD_MAP') as string;\n }\n\n const mapLoaded = !!(map && (await this.loadMapProviderAsync(map, options)));\n if (mapLoaded) {\n // map event provider is always loaded for the state changes\n this.mapEventProvider = new MapEventProvider(this.scClient, this);\n if (options.withEvents) {\n this.eventSubscriptions.add(\n this.mapEventProvider.onEventAdded$.subscribe((mapEvent) => {\n this.onEventAddedSubject.next(mapEvent);\n }),\n this.mapEventProvider.onEventRemoved$.subscribe((mapEvent) => this.onEventRemovedSubject.next(mapEvent))\n );\n this.map?.on('contextmenu', (e: LeafletMouseEvent) => this.onContextMenu(e));\n }\n } else {\n if (!mapLoaded) {\n this.currentMapEntity = null;\n let errorMessage;\n if (map) {\n errorMessage = options.mapId\n ? (this.translateService.instant('STE_MESSAGE_ERROR_MAPTYPENOTSUPPORTED') as string)\n : (this.translateService.instant('STE_MESSAGE_ERROR_DEFAULTMAPUNDEFINED') as string);\n } else {\n errorMessage = this.translateService.instant('STE_MESSAGE_ERROR_MAP_UNAVAILABLE_OR_INSUFFICIENT_PRIVILEGES') as string;\n }\n this.onMapUnavailableSubject.next(errorMessage);\n\n this.map?.clearMap();\n }\n }\n this.mapAvailableSubject.next(mapLoaded);\n }\n\n public async refreshLayers(layerIds: IGuid[]): Promise {\n if (this.currentMapEntity) {\n const layersToRefresh = this.currentlyDisplayedLayers.filter((layer) => layerIds.some((layerId) => layerId.equals(layer)));\n\n const typesToRefresh = this.getTypesFromLayers(layerIds);\n\n this.map?.clearItemsOfTypes(typesToRefresh.map((item) => item.toString()));\n await this.insertMapObjectsFromLayersAsync(this.currentMapEntity.id, layersToRefresh);\n }\n }\n\n public async getNotificationFilter(): Promise {\n const mapController = await this.scClient.getAsync(MapController);\n return this.getNotificationFilterInternal(mapController);\n }\n\n public addOnlyOnlineMapObjectTypeFilter(mapObjectTypeId: IGuid): void {\n const idString = mapObjectTypeId.toLowerCase();\n if (!this.onlyOnlineMapObjectTypes.has(idString)) {\n this.onlyOnlineMapObjectTypes.add(idString);\n if (this.currentMapEntity) {\n this.refreshLayers([mapObjectTypeId]).fireAndForget();\n }\n }\n }\n\n public removeOnlyOnlineMapObjectTypeFilter(mapObjectTypeId: IGuid): void {\n const idString = mapObjectTypeId.toLowerCase();\n if (this.onlyOnlineMapObjectTypes.has(idString)) {\n this.onlyOnlineMapObjectTypes.delete(idString);\n if (this.currentMapEntity) {\n this.refreshLayers([mapObjectTypeId]).fireAndForget();\n }\n }\n }\n\n public async setVisibleLayers(layerIds: IGuid[]): Promise {\n await this.updateNotificationFilter(layerIds);\n\n if (this.currentMapEntity) {\n let excludedLayers: IGuid[] = [];\n let layersToAdd = layerIds;\n\n if (this.currentlyDisplayedLayers) {\n excludedLayers = this.currentlyDisplayedLayers.filter((layer) => !layerIds.some((layerId) => layerId.equals(layer)));\n layersToAdd = layerIds.filter((layerId) => !this.currentlyDisplayedLayers.some((layer) => layer.equals(layerId)));\n }\n\n const excludedTypes = this.getTypesFromLayers(excludedLayers);\n\n this.currentlyDisplayedLayers = layerIds;\n\n this.map?.clearItemsOfTypes(excludedTypes.map((item) => item.toString()));\n if (this.layers) {\n const hiddenLayers = this.layers.where((item) => !this.currentlyDisplayedLayers.some((layer) => item.id.equals(layer)));\n this.hiddenMapObjectTypes = Array.from(hiddenLayers, (item) => item.id);\n }\n\n await this.insertMapObjectsFromLayersAsync(this.currentMapEntity.id, layersToAdd);\n }\n }\n\n public displayMapObject(mapObjectId: IGuid): void {\n this.deferDisplayMapObject(mapObjectId);\n }\n\n public updateMapObjectIfVisible(mapObjectId: IGuid): void {\n this.deferUpdateMapObject(mapObjectId);\n }\n\n /**\n * Empties the map of all map objects. Optionally it can also destroy to map itself.\n *\n * @param destroyMap - If true, the map will be destroy and will have to be recreated from scratch the next time\n * we create a map.\n */\n public emptyMap(destroyMap = false): void {\n this.mapLoadItemsDownloaded = false;\n this.currentlyDisplayedLayers = [];\n if (this.currentMapEntity) {\n this.clearNotificationFilter().fireAndForget();\n\n this.mapObjectTypes.clear();\n try {\n if (this.map?.isMapInitialized()) {\n if (destroyMap) {\n this.currentMapEntity = null;\n this.map.clearMap();\n } else {\n this.map.clearAllItems();\n }\n }\n } catch (exception) {\n this.loggerService.traceError(toError('Unable to clear map', exception));\n this.loggerService.traceDebug('Map-Service: Make sure this warning corresponds the same number of times as the later one');\n }\n }\n }\n\n public async getMapObjectsFromSourceIds(sourceIds: string[]): Promise {\n let mapObjects: IWebMapObject[] = [];\n if (this.currentMapEntity) {\n const filter = new ConcreteWebMapObjectFilter();\n filter.mapId = this.currentMapEntity.id;\n filter.sourceIds = ObservableCollection.From(sourceIds);\n mapObjects = await this.getMapObjects(filter);\n }\n return mapObjects;\n }\n\n public async getMapObjectsFromIds(sourceIds: Set): Promise {\n let mapObjects: IWebMapObject[] = [];\n if (this.currentMapEntity) {\n const filter = new ConcreteWebMapObjectFilter();\n filter.mapId = this.currentMapEntity.id;\n filter.mapObjectIds = ObservableCollection.From(Array.from(sourceIds));\n mapObjects = await this.getMapObjects(filter);\n }\n return mapObjects;\n }\n\n public insertMapObjects(mapObjects: (IWebMapObject | WebMapObjectWithCustomIcon)[], areFullObjects: boolean): void {\n if (!this.map?.isMapInitialized() || !this.currentMapEntity) {\n this.loggerService.traceError('Map is not initialized!');\n return;\n }\n\n const genMapObjects: Set = new Set();\n const getImagePromises: Promise[] = [];\n\n mapObjects.forEach((mapObject) => {\n const webMapObjectType = this.mapObjectTypes.get(mapObject.type.toString());\n if (webMapObjectType === undefined) {\n this.loggerService.traceError(`WebMap object type undefined ${mapObject.type.toString()}`);\n return;\n }\n\n if (mapObject.latitude === 0 && mapObject.longitude === 0) {\n return;\n }\n\n if (this.hiddenMapObjectTypes.some((type) => type.equals(mapObject.type))) {\n return;\n }\n\n const mapObjectId = mapObject.guid.toLowerCase();\n switch (webMapObjectType.category) {\n case MapObjectCategory.Image:\n if (!areFullObjects) {\n this.deferDisplayMapObject(mapObject.guid);\n } else {\n // In forEach, doesn't know it's not null\n const image = new ImageWebMapObject();\n image.loadFrom(mapObject);\n\n const mapEntity = this.currentMapEntity as IMapEntity;\n\n if (image.file) {\n // Get the files data from the cache or server, then add all the images at once later once the data was received.\n getImagePromises.push(\n this.resourceService.getFilesCacheAsync([{ entity: mapEntity, fileCacheId: image.file }]).then((fileResult) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const data = fileResult[image.file!.toString()];\n if (data) {\n return {\n id: mapObjectId,\n latitude: mapObject.latitude,\n longitude: mapObject.longitude,\n type: mapObject.type.toString().toLowerCase(),\n link: mapObject.source,\n width: image.width,\n height: image.height,\n stretch: image.stretch,\n rotation: image.rotation,\n selectable: mapObject.source.length > 0 || (mapObject.additionalLinks && mapObject.additionalLinks.size > 0),\n imageSrc: (data && `data:image/png;base64,${data}`) || undefined,\n tooltipContent: this.sanitize(mapObject.name),\n } as ImageMapObject;\n } else {\n return null;\n }\n })\n );\n }\n }\n break;\n case MapObjectCategory.Shape:\n {\n const latitude = mapObject.latitude;\n const longitude = mapObject.longitude;\n // shapes need extra data for the points coordinate, cannot display right away if not expanded.\n if (!areFullObjects) {\n // Add a placeholder shape while waiting for full map objects\n genMapObjects.add({\n opacity: 0,\n id: mapObjectId,\n type: mapObject.type.toString().toLowerCase(),\n link: mapObject.source,\n shape: this.getShapeTypeFromMapObjectType(webMapObjectType),\n points: [\n {\n latitude,\n longitude,\n },\n {\n latitude,\n longitude,\n },\n {\n latitude,\n longitude,\n },\n {\n latitude,\n longitude,\n },\n ],\n popupPosition: new LatLng(latitude, longitude),\n } as ShapeMapObject);\n this.deferDisplayMapObject(mapObject.guid);\n } else {\n const shape = new ShapeWebMapObject();\n shape.loadFrom(mapObject);\n\n genMapObjects.add({\n id: mapObjectId,\n opacity: shape.opacity,\n background: shape.stateColor,\n borderColor: shape.borderColor,\n type: mapObject.type.toString().toLowerCase(),\n link: mapObject.source,\n borderThickness: shape.borderThickness,\n shape: this.getShapeTypeFromMapObjectType(webMapObjectType),\n selectable: shape.source.length > 0 || (shape.additionalLinks && shape.additionalLinks.size > 0),\n rotation: shape.rotation,\n points: [...shape.points].map((point) => ({ latitude: point.Y, longitude: point.X })),\n isPolyline: shape.isPolyline,\n tooltipContent: this.sanitize(mapObject.name),\n popupPosition: new LatLng(latitude, longitude),\n } as ShapeMapObject);\n\n // If there's an unopened popup bound to the placeholder shape\n const existingShape = this.map?.getMapObjectView(mapObjectId);\n if (existingShape?.getPopup() && (existingShape?.options.data as ShapeMapObject).opacity === 0) {\n existingShape.openPopup();\n }\n }\n }\n break;\n case MapObjectCategory.Text:\n // text need extra data for the text and styling, cannot display right away if not expanded.\n if (!areFullObjects) {\n this.deferDisplayMapObject(mapObject.guid);\n } else {\n const text = new TextWebMapObject();\n text.loadFrom(mapObject);\n\n genMapObjects.add({\n id: mapObjectId,\n latitude: mapObject.latitude,\n longitude: mapObject.longitude,\n type: mapObject.type.toString().toLowerCase(),\n link: mapObject.source,\n rotation: mapObject.rotation,\n selectable: text.source.length > 0 || (text.additionalLinks && text.additionalLinks.size > 0),\n width: text.width,\n height: text.height,\n backgroundColor: text.stateColor,\n borderColor: text.borderColor,\n borderThickness: text.borderThickness,\n opacity: text.opacity,\n fontFamily: text.fontFamily,\n fontIsBold: text.fontIsBold,\n fontIsItalic: text.fontIsItalic,\n fontIsUnderline: text.fontIsUnderline,\n isShadowDisplayed: text.isShadowDisplayed,\n fontSize: text.fontSize,\n foreground: text.foreground,\n text: text.text,\n textAlignment: text.textAlignment,\n tooltipContent: this.sanitize(mapObject.name),\n } as TextMapObject);\n }\n break;\n case MapObjectCategory.Marker: {\n if (!areFullObjects && !webMapObjectType.clusterable) {\n // always full display non clustered markers\n this.deferDisplayMapObject(mapObject.guid);\n } else {\n let icon: MarkerIcon | undefined;\n let overlay: MarkerOverlayIcon | null = null;\n\n const color = (areFullObjects && mapObject.stateColor) || webMapObjectType.color;\n const markerOptions = {\n style: MarkerIconStyle.Circle,\n color,\n };\n\n let customIcon: string | null;\n // Set the custom icon (from SC)\n if ('customIconSrc' in mapObject && mapObject.customIconSrc) {\n customIcon = mapObject.customIconSrc;\n } else {\n // Make sure the customIcon is a valid data uri for img src\n customIcon = webMapObjectType.customIcon?.startsWith('data:image') ? webMapObjectType.customIcon : null;\n }\n const overridenImgSrcIcon = (areFullObjects && mapObject.overridenMainIcon?.startsWith('data:image') && mapObject.overridenMainIcon) || null;\n const iconImgSrc = overridenImgSrcIcon || customIcon;\n\n if (iconImgSrc) {\n icon = new MarkerImgIcon({\n ...markerOptions,\n iconImgSrc,\n });\n } else if (areFullObjects && mapObject.lettersToDisplayOnMarker) {\n // More initials mean lower font size (shouldn't go over 3 letters)\n let fontSize = 25;\n if (mapObject.lettersToDisplayOnMarker.length >= 3) {\n fontSize = 10;\n } else if (mapObject.lettersToDisplayOnMarker.length === 2) {\n fontSize = 15;\n }\n\n icon = new MarkerTextIcon({\n ...markerOptions,\n iconText: mapObject.lettersToDisplayOnMarker,\n innerIconSize: fontSize,\n });\n } else {\n icon = new MarkerClassNameIcon({\n ...markerOptions,\n iconClassName: (areFullObjects && mapObject.overridenMainIcon) || webMapObjectType.icon || '',\n });\n }\n\n if (areFullObjects && mapObject.overlayIcon) {\n overlay = new MarkerClassNameOverlayIcon({\n color: mapObject.overlayIconColor,\n backgroundColor: 'black',\n iconClassName: mapObject.overlayIcon,\n });\n }\n\n genMapObjects.add({\n id: mapObjectId,\n type: mapObject.type.toString().toLocaleLowerCase(),\n clusterable: webMapObjectType.clusterable,\n selectable: mapObject.source.length > 0,\n latitude: mapObject.latitude,\n longitude: mapObject.longitude,\n link: mapObject.source,\n tooltipContent: this.sanitize(mapObject.name),\n icon,\n overlay,\n });\n }\n break;\n }\n }\n });\n\n this.map.addOrUpdateMapObjects(genMapObjects);\n\n // Add all image map objects once files are downloaded\n Promise.all(getImagePromises)\n .then((imageMapObjects: (ImageMapObject | null)[]) => {\n // Removes results that were null\n const imageMapObjectsToAdd = imageMapObjects.filter((imageMapObject) => imageMapObject) as ImageMapObject[];\n this.map?.addOrUpdateMapObjects(imageMapObjectsToAdd);\n })\n .catch((e) => {\n console.log(`Error adding image map objects on the map: ${(e as Error).message}`);\n });\n }\n\n public removeMapObjects(mapObjects: IWebMapObject[]): void {\n this.map?.removeItems(mapObjects.map((mapObject) => mapObject.guid.toLowerCase()));\n }\n\n public updateContextualData(content: ContentGroup): void {\n this.onUpdateContextualDataRequestedSubject.next(content);\n }\n\n public clearContextualData(contentId: IGuid): void {\n this.onClearContextualDataRequestedSubject.next(contentId);\n }\n\n public select(mapObjectId: string, mapId?: IGuid): void {\n this.onSelectionRequestedSubject.next({ mapObjectId, mapId });\n }\n\n public selectAndZoom(mapObjectId: string): void {\n if (!this.map?.isMapInitialized()) {\n this.loggerService.traceError('Map is not initialized!');\n return;\n }\n\n let selectedMapView: MapObjectView | undefined;\n const tryGuid = SafeGuid.tryParse(mapObjectId);\n if (tryGuid.success) {\n selectedMapView = this.map.getMapObjectView(tryGuid.value.toTypescriptGuid());\n } else {\n selectedMapView = this.map.getMapObjectView(mapObjectId);\n }\n\n if (selectedMapView instanceof Marker) {\n const offset = 0.003;\n this.map.fitBounds([\n [selectedMapView.getLatLng().lat + offset, selectedMapView.getLatLng().lng - offset],\n [selectedMapView.getLatLng().lat - offset, selectedMapView.getLatLng().lng + offset],\n ]);\n } else if (selectedMapView instanceof Polyline) {\n this.map.fitBounds(selectedMapView.getBounds().pad(0.25));\n }\n\n this.map.centerMapObject(mapObjectId);\n this.map.select(mapObjectId);\n }\n\n public async updateNotificationFilterFromTypes(types: IGuid[]): Promise {\n const mapController = await this.scClient.getAsync(MapController);\n const filter = await this.getNotificationFilterInternal(mapController);\n\n if (mapController && filter && this.mapObjectTypes) {\n // update server\n filter.layerFilters.clear();\n\n for (const objectType of this.mapObjectTypes.values()) {\n const layerFilter = new WebMapLayerNotificationFilter();\n layerFilter.layerId = objectType.layerId;\n layerFilter.receiveNotifications = types.some((item) => item.equals(objectType.typeId));\n filter.layerFilters.add(layerFilter);\n }\n await this.scClient.updateAsync(mapController);\n }\n }\n\n public addPin(pinId: string, location: { latitude: number; longitude: number }): void {\n this.map?.addOrUpdateMapObjects({\n id: pinId,\n zIndex: 50,\n latitude: location.latitude,\n longitude: location.longitude,\n type: 'pin',\n selectable: false,\n clusterable: false,\n icon: new DivIcon({\n html: ``,\n iconSize: [40, 40],\n iconAnchor: [20, 40],\n className: `gwm-marker`,\n }),\n });\n }\n\n public removePin(pinId: string): void {\n this.map?.removeItem(pinId);\n }\n\n // events are shown only on items outside of a cluster and events that are permanent (i.e. alarms)\n public filterEventsReceiverItems(items: IGuid[], criticalEvent: boolean): MapObjectView[] {\n const displayedMapObjects: MapObjectView[] = [];\n\n items.forEach((mapObjectId) => {\n const mapObject = this.map?.getMapObjectView(mapObjectId.toString());\n if (mapObject) {\n const marker = mapObject as Marker;\n if (marker?.category === MapObjectCategory.Marker && criticalEvent) {\n if (!marker.topMostCluster) {\n displayedMapObjects.push(mapObject);\n }\n } else {\n displayedMapObjects.push(mapObject);\n }\n }\n });\n\n return displayedMapObjects;\n }\n\n public async getFloors(mapId: IGuid, parentAreaId: IGuid): Promise {\n if (mapId.isEmpty()) {\n return null;\n }\n\n const mapController = await this.scClient.getAsync(MapController);\n if (!mapController) {\n return null;\n }\n\n const query = new FloorQuery();\n query.loadFields({\n mapId,\n parentAreaId,\n });\n return mapController.getFloorsAsync(query);\n }\n\n public getMiniMap(): MiniMap | undefined {\n return this.map?.miniMap;\n }\n\n public restoreMiniMapLeftOffset(transitionDuration: number): void {\n this.moveMiniMap(0, transitionDuration);\n }\n\n public moveMiniMapLeft(leftOffset: number, transitionDuration: number): void {\n this.moveMiniMap(leftOffset, transitionDuration);\n }\n\n public setMiniMapRightMargin(margin: number): void {\n this.getMiniMap()?.setRightMargin(margin);\n }\n\n private async loadMapProviderAsync(map: IMapEntity, options: InitializeMapOptions): Promise {\n // Switching provider won't keep the same view area if the two providers have different georeference.\n if (options.previousViewArea && this.currentMapEntity && this.currentMapEntity.geoLocalized !== map.geoLocalized) {\n delete options.previousViewArea;\n }\n\n this.currentMapEntity = map;\n const mapProviderOptions = await this.createMapProviderOptionsAsync(map, options);\n return this.mapProviderLoader.loadMapAsync(map, mapProviderOptions);\n }\n\n private async getDefaultMapIdAsync(): Promise {\n let mapId: IGuid | null = null;\n const user = await this.scClient.getEntityAsync(UserEntity, this.scClient.userId);\n if (user) {\n const areaId = user.defaultMapId;\n const area = await this.scClient.getEntityAsync(AreaEntity, areaId);\n if (area) {\n mapId = area.link;\n }\n }\n\n if (!mapId) {\n const systemConfig = await this.scClient.getEntityAsync(SystemConfigurationEntity, Guids.SystemConfiguration);\n if (systemConfig) {\n mapId = (await systemConfig.getDefaultSystemMapAsync()) ?? SafeGuid.EMPTY;\n }\n }\n\n return mapId;\n }\n\n private moveMiniMap(leftOffset: number, transitionDuration: number): void {\n this.getMiniMap()?.moveLeft(leftOffset, transitionDuration);\n }\n\n private async createMapProviderOptionsAsync(mapEntity: IMapEntity, options: InitializeMapOptions): Promise {\n const geoReference = (mapEntity.geoLocalized && (await mapEntity.getGeoReferenceAsync())) || undefined;\n\n const mapProviderOptions: MapProviderLoaderOptions = {\n geoReference,\n userLocationEnabled: options.userLocationEnabled,\n };\n\n await this.applyProviderViewOptionsAsync(mapEntity, mapProviderOptions, options.previousViewArea);\n\n return mapProviderOptions;\n }\n\n private async applyProviderViewOptionsAsync(mapEntity: IMapEntity, providerOptions: MapProviderLoaderOptions, viewArea?: LatLngBounds) {\n if (!viewArea) {\n const defaultView = await mapEntity.getDefaultViewAsync();\n if (this.isDefaultViewValid(defaultView)) {\n providerOptions.defaultView = new LatLngBounds(\n { lat: defaultView.viewArea.bottomRight.latitude, lng: defaultView.viewArea.topLeft.longitude },\n { lat: defaultView.viewArea.topLeft.latitude, lng: defaultView.viewArea.bottomRight.longitude }\n );\n } else {\n providerOptions.center = new LatLng(0, 0);\n }\n } else {\n providerOptions.defaultView = viewArea;\n }\n }\n\n private async getMapEntityAsync(id: IGuid | null, withEvents: boolean): Promise {\n const mapId = id ?? (await this.getDefaultMapIdAsync());\n if (!mapId) {\n return null;\n }\n\n if (!this.mapEntityCacheTask || (this.currentMapEntity && mapId !== this.currentMapEntity.id)) {\n await this.mapEntityCacheTask?.dispose();\n this.mapEntityCacheTask = this.scClient.buildEntityCache(this.mapEntityFieldsToDownload.toString());\n }\n\n const mapEntity = await this.mapEntityCacheTask.getEntityAsync(MapEntity, mapId, true);\n if (mapEntity && mapEntity.id !== mapId) {\n // Detect background and georeference changes. Reload map when it happens.\n this.mapEntityCacheTask\n .detectRelationChangeAsync(\n mapEntity,\n () => {\n const val = mapEntity?.getGeoReferenceAsync();\n },\n async (newEntity: IEntity): Promise => {\n // entity cache task returns an Entity instance if the entity was in the cache\n // so we need to create a MapEntity ourselves.\n const newMapEntity = new MapEntity();\n newMapEntity.loadFrom(newEntity);\n return this.loadMapProviderAsync(newMapEntity, {\n mapId: newEntity.id,\n previousViewArea: this.map?.getBounds(),\n userLocationEnabled: !!this.map?.options.userLocationEnabled,\n withEvents,\n }).then(() => {\n return this.refreshLayers(this.currentlyDisplayedLayers);\n });\n }\n )\n .fireAndForget();\n }\n\n return mapEntity;\n }\n\n private async getNotificationFilterInternal(mapController: IMapController): Promise {\n if (!mapController || !this.currentMapEntity) {\n return null;\n }\n\n const webMapNotificationFilterRequest = new WebMapNotificationFilterRequest();\n webMapNotificationFilterRequest.requesterId = this.requesterId;\n webMapNotificationFilterRequest.mapId = this.currentMapEntity.id;\n return await mapController.getNotificationFilterAsync(webMapNotificationFilterRequest);\n }\n\n private cleanMapEventProvider() {\n if (this.mapEventProvider) {\n this.eventSubscriptions.unsubscribeAll();\n this.mapEventProvider.destroy();\n }\n }\n\n // setup a debouncer to download data\n private setupDebouncer() {\n this.debouncerMarkerDownload = new Debouncer(\n false,\n async () => {\n for (const markerToUpdate of this.markersToUpdateIfVisible) {\n // be sure not inside a cluster before downloading it\n const marker = this.map?.getMapObjectView(markerToUpdate.toTypescriptGuid()) as Marker;\n if (marker) {\n if (marker.category === MapObjectCategory.Marker) {\n if (!marker.topMostCluster) {\n this.markersToDownload.add(markerToUpdate);\n }\n } else {\n // non marker are always visible\n this.markersToDownload.add(markerToUpdate);\n }\n }\n }\n\n await this.updateMapObjectsFromIds(this.markersToDownload);\n this.markersToUpdateIfVisible.clear();\n this.markersToDownload.clear();\n },\n this.markerRefreshMinDelay,\n this.markerRefreshMaxDelay\n );\n }\n\n private async updateMapObjectsFromIds(itemsToDownload: Set) {\n if (itemsToDownload.size > 0) {\n // only show loading if more than a second wait.\n const timeout = setTimeout(() => {\n this.loadingMapObjectsSubject.next(true);\n }, this.loadingDisplayTimeout);\n\n try {\n const fullObjects = await this.getMapObjectsFromIds(itemsToDownload);\n\n if (fullObjects?.length) {\n const { mapObjectsToAdd, mapObjectsToRemove } = this.divideMapObjectToAddAndRemove(fullObjects);\n\n this.insertMapObjects(mapObjectsToAdd, true);\n this.removeMapObjects(mapObjectsToRemove);\n this.loggerService.traceInformation(`Add or update ${itemsToDownload.size} full map objects`);\n }\n } finally {\n clearTimeout(timeout);\n this.loadingMapObjectsSubject.next(false);\n }\n }\n }\n\n private divideMapObjectToAddAndRemove(mapObjects: IWebMapObject[]) {\n return mapObjects.reduce(\n ({ mapObjectsToAdd, mapObjectsToRemove }, mapObject) => {\n const toAdd = mapObject.getFieldOrDefault('IsOnline') !== false || !this.onlyOnlineMapObjectTypes.has(mapObject.type.toLowerCase());\n (toAdd ? mapObjectsToAdd : mapObjectsToRemove).push(mapObject);\n return { mapObjectsToAdd, mapObjectsToRemove };\n },\n { mapObjectsToAdd: [] as IWebMapObject[], mapObjectsToRemove: [] as IWebMapObject[] }\n );\n }\n\n private clearNotificationFilter() {\n const layerIds: IGuid[] = [];\n return this.updateNotificationFilter(layerIds);\n }\n\n private updateNotificationFilter(layerIds: IGuid[]) {\n const layerTypes: IGuid[] = [];\n\n this.layers?.forEach((layer) => {\n if (layerIds.some((layerId) => layerId.equals(layer.id))) {\n layer.includedTypes.forEach((includedType) => {\n layerTypes.push(includedType.typeId);\n });\n }\n });\n\n return this.updateNotificationFilterFromTypes(layerTypes);\n }\n\n private getTypesFromLayers(layers: IGuid[]): IGuid[] {\n // exclude all types part of the excluded layers\n const types: IGuid[] = [];\n\n this.layers?.forEach((layer) => {\n Array.from(layer.includedTypes.where((includedType) => layers.some((layer2) => includedType.layerId.equals(layer2)))).forEach((includedType) => {\n types.push(includedType.typeId);\n });\n });\n\n return types;\n }\n\n private async insertAllMapObjectTypes(map: IMapEntity) {\n const mapController = await this.scClient.getAsync(MapController);\n if (!map || !mapController) {\n return;\n }\n\n this.layers = await mapController.getAvailableLayersAsync(map.id);\n if (this.layers) {\n this.loggerService.traceInformation(`${this.layers.size} layers available`);\n\n this.insertMapObjectTypes(this.layers);\n }\n }\n\n private insertMapObjectTypes(layers: ObservableCollection) {\n if (this.mapLoadItemsDownloaded) {\n return;\n }\n\n if (!this.map?.isMapInitialized()) {\n this.loggerService.traceError('Map is not initialized! Map Object Types not added.');\n return;\n }\n\n this.mapLoadItemsDownloaded = true;\n\n layers.forEach((layer) => {\n layer.includedTypes.forEach((displayType) => {\n this.mapObjectTypes.set(displayType.typeId.toString(), displayType);\n });\n });\n\n this.onMapTypesLoadedSubject.next();\n }\n\n private async insertMapObjectsFromLayersAsync(mapId: IGuid, layers: Array) {\n const mapController = await this.scClient.getAsync(MapController);\n if (!mapController || !this.currentMapEntity || layers.length === 0) {\n return;\n }\n\n const filter = new WebMapObjectFilter();\n filter.mapId = mapId;\n filter.layerIds = ObservableCollection.From(layers);\n filter.onlyOnlineLayerIds = ObservableCollection.From(Array.from(this.onlyOnlineMapObjectTypes, (typeId) => SafeGuid.parse(typeId)));\n\n this.loadingMapObjectsSubject.next(true);\n await mapController.getAllMapObjectsAsync(filter, (size: number, buffer: ArrayBuffer) => {\n const data = buffer.slice(4, size);\n const mapObjects = ListFieldObjectSerializer.deserialize(WebMapObject, data);\n this.loggerService.traceInformation(`Add or update ${mapObjects.size} minimum size map objects`);\n this.insertMapObjects(Array.from(mapObjects), false);\n });\n this.loadingMapObjectsSubject.next(false);\n }\n\n private deferUpdateMapObject(id: IGuid) {\n this.markersToUpdateIfVisible.add(id);\n this.debouncerMarkerDownload.trigger();\n }\n\n private deferDisplayMapObject(id: IGuid) {\n this.markersToDownload.add(id);\n this.debouncerMarkerDownload.trigger();\n }\n\n private async getMapObjects(filter: ConcreteWebMapObjectFilter): Promise {\n let mapObjects: WebMapObjectWithCustomIcon[] = [];\n const mapController = await this.scClient.getAsync(MapController);\n if (mapController) {\n const mapObjectResult = await mapController.getMapObjectsAsync(filter);\n if (mapObjectResult?.mapObjects) {\n mapObjects = mapObjectResult?.mapObjects?.values() as WebMapObjectWithCustomIcon[];\n }\n\n // Prepare query to get all custom icons from map objects that have custom icons\n const mapObjectsWithCustomIcons: { entity: string; customIconId: string; state?: CustomIconState; index: number }[] = [];\n mapObjects.forEach((mapObject, index) => {\n if (mapObject.customIconId && !mapObject.customIconId.equals(SafeGuid.EMPTY)) {\n mapObjectsWithCustomIcons.push({\n entity: mapObject.source,\n customIconId: mapObject.customIconId.toString(),\n state: mapObject.customIconState as CustomIconState,\n index, // Keep track of index for faster editing of mapObjects in the mapObjects array\n });\n }\n });\n\n try {\n if (mapObjectsWithCustomIcons.length) {\n const customIconEntries = await this.resourceService.getCustomIconAsync(mapObjectsWithCustomIcons);\n mapObjectsWithCustomIcons.forEach((mapObjectWithCustomIcon) => {\n // Add the custom icon data to the map object to eventually add to the map\n const mapObject = mapObjects[mapObjectWithCustomIcon.index];\n const customIconData = customIconEntries[mapObject.source];\n if (customIconData) {\n mapObject.customIconSrc = `data:image/png;base64,${customIconData}`;\n }\n });\n }\n } catch (exception) {\n this.loggerService.traceError(toError('Unable to load custom icon for a map object', exception));\n }\n }\n return mapObjects;\n }\n\n private async onAreaViewChanged(event: LeafletEvent) {}\n\n private async onLoaded() {\n // Fixes Bug #2811272 Map glitch when not focused during page reload.\n // gelato-design-system-provider has its elements size (0, 0) on page load if tab is not\n // focused or browser is minimized. Map size will be invalidated and recalculated when the\n // page becomes visible.\n if (document.visibilityState !== 'visible') {\n this.callMapLoadedOnVisibilityChange = true;\n } else {\n this.onMapLoadedSubject.next();\n }\n\n if (this.currentMapEntity && this.mapObjectTypes.size === 0) {\n await this.insertAllMapObjectTypes(this.currentMapEntity);\n }\n }\n\n private onTokenApplied(tokenData: UserTokenData) {\n if (this.currentMapEntity) {\n this.mapProviderLoader.applyToken(this.currentMapEntity, tokenData.getAuthentificationHeader());\n }\n }\n\n private onMarkerAdded(event: MapObjectEvent) {}\n\n // this is the handler called when a marker is unclustered\n private onMarkerShown(event: MapObjectEvent) {\n const id = event.mapObjectView.id;\n const mapObjectType = event.mapObjectView?.data?.type;\n if (SafeGuid.isGuid(id) && mapObjectType) {\n // only update those in visible layers\n if (!this.hiddenMapObjectTypes.some((type) => type.equals(SafeGuid.parse(mapObjectType)))) {\n this.deferUpdateMapObject(SafeGuid.parse(id));\n }\n }\n }\n\n private onContextMenu(event: LeafletMouseEvent) {\n event.originalEvent.stopPropagation();\n\n if (this.currentMapEntity) {\n const mapContext: MapContext = {\n mapId: this.currentMapEntity.id,\n geoLocalised: this.currentMapEntity.geoLocalized,\n location: { latitude: event.latlng.lat, longitude: event.latlng.lng, altitude: event.latlng.alt },\n };\n\n if (!this.currentMapEntity.geoLocalized) {\n mapContext.location = { x: event.latlng.lng, y: event.latlng.lat };\n }\n\n this.commandsService.showContextMenuAsync(event.originalEvent, { type: ContextTypes.Map, data: mapContext }).fireAndForget();\n }\n }\n\n private getShapeTypeFromMapObjectType(webMapObjectType: IWebMapObjectType): ShapeType {\n return (Object.values(ShapeType).includes(webMapObjectType.name as ShapeType) ? webMapObjectType.name : ShapeType.Polygon) as ShapeType;\n }\n\n private onDocumentVisbilityChanged() {\n if (this.map && document.visibilityState === 'visible' && this.callMapLoadedOnVisibilityChange) {\n this.callMapLoadedOnVisibilityChange = false;\n this.window.requestAnimationFrame(() => {\n this.map?.invalidateSize();\n this.map\n ?.reloadProviderAsync()\n .then(() => {\n this.onLoaded().fireAndForget();\n })\n .fireAndForget();\n });\n }\n }\n\n private isDefaultViewValid(defaultView: IDefaultView | null): defaultView is IDefaultView {\n const viewArea = defaultView?.viewArea;\n return !!viewArea && viewArea.topLeft.latitude !== 0 && viewArea.topLeft.longitude !== 0 && viewArea.bottomRight.latitude !== 0 && viewArea.bottomRight.longitude !== 0;\n }\n\n private sanitize(value: string): string | null {\n const valueWithoutBrackets = value.replace('<', '<').replace('>', '>');\n return this.domSanitizer.sanitize(SecurityContext.HTML, valueWithoutBrackets);\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { LatLngBounds } from '@genetec/web-maps';\nimport { Receiver, Selector } from '../../../../store';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface MapStateModel {\n selectedMap: IGuid | undefined;\n selectedMapObject: IGuid | undefined;\n viewArea: LatLngBounds | undefined;\n}\n\n@State({\n name: 'mapState',\n defaults: { selectedMap: undefined, selectedMapObject: undefined, viewArea: undefined },\n})\n@Injectable()\nexport class MapState {\n @Selector()\n public static selectedMap(state: MapStateModel): IGuid | undefined {\n return state.selectedMap;\n }\n\n @Selector()\n public static selectedMapObject(state: MapStateModel): IGuid | undefined {\n return state.selectedMapObject;\n }\n\n @Selector()\n public static viewArea(state: MapStateModel): LatLngBounds | undefined {\n return state.viewArea;\n }\n\n @Receiver()\n public static setSelectedMap({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapStateModel) => {\n state.selectedMap = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setStateViewArea({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapStateModel) => {\n state.viewArea = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setSelectedMapObject({ getState, setState }: StateContext, { payload }: EmitterAction): void {\n const currentState = getState();\n if (currentState.selectedMapObject?.equals(payload)) {\n return;\n }\n\n setState((state: MapStateModel) => {\n state.selectedMapObject = payload;\n return state;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { Inject, Injectable } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LatLngBounds } from '@genetec/web-maps';\nimport { MapsProviderClient } from '@modules/map/api/api';\nimport {\n COMMANDS_SERVICE,\n ContentExtensionServicesProvider,\n CONTENT_SERVICES_PROVIDER,\n SettingsService,\n USER_SETTINGS_SERVICE,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { ResourcesService } from '@modules/shared/services/resources/resources.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { MethodEmitter, StateEmitter } from '@src/app/store';\nimport { WINDOW } from '@utilities/common-helper';\nimport { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { Observable } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { MapService } from './map-service';\nimport { MapState } from './map.state';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class StateMapService extends MapService {\n @Select(MapState.selectedMap)\n public stateSelectedMap$!: Observable;\n\n @Select(MapState.selectedMapObject)\n public stateSelectedMapObject$!: Observable;\n\n @SelectSnapshot(MapState.selectedMap)\n public stateSelectedMap: IGuid | undefined;\n\n @SelectSnapshot(MapState.selectedMapObject)\n public stateSelectedMapObject: IGuid | undefined;\n\n @Select(MapState.viewArea)\n public stateViewArea$!: Observable;\n\n @SelectSnapshot(MapState.viewArea)\n public stateViewArea!: LatLngBounds | undefined;\n\n @MethodEmitter(MapState.setSelectedMap)\n public setStateSelectedMap!: StateEmitter;\n\n @MethodEmitter(MapState.setSelectedMapObject)\n public setStateSelectedMapObject!: StateEmitter;\n\n @MethodEmitter(MapState.setStateViewArea)\n public setStateViewArea!: StateEmitter;\n\n constructor(\n securityCenterProvider: SecurityCenterClientService,\n mapsProviderClient: MapsProviderClient,\n loggerService: LoggerService,\n resourcseService: ResourcesService,\n @Inject(CONTENT_SERVICES_PROVIDER) contentServicesProvider: ContentExtensionServicesProvider,\n @Inject(COMMANDS_SERVICE) commandsService: InternalCommandsService,\n translateService: TranslateService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService,\n @Inject(WINDOW) window: Window,\n domSanitizer: DomSanitizer\n ) {\n super(\n securityCenterProvider,\n mapsProviderClient,\n loggerService,\n resourcseService,\n contentServicesProvider,\n commandsService,\n translateService,\n userSettingsService,\n window,\n domSanitizer\n );\n\n // always check availability since we use reflection to load this component\n if (this.scClient instanceof WebAppClient) {\n this.scClient.onLogonStateChanged((arg) => this.onLogonStateChanged(arg.state));\n }\n }\n\n private onLogonStateChanged(state: LogonState) {\n if (state === LogonState.LoggedOff) {\n this.setStateSelectedMap(undefined);\n this.setStateSelectedMapObject(undefined);\n this.setStateViewArea(undefined);\n }\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { ContextDataStateModel } from '@modules/shared/services/side-context-data/side-context-data.state';\nimport { ContentLoad } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SafeGuid } from 'safeguid';\nimport { Receiver, Selector } from '../../../../store';\nimport { ContentGroup } from '../../../../modules/shared/interfaces/plugins/public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport type MapsContextDataStateModel = ContextDataStateModel;\n\n@State({\n name: 'mapsContextDataState',\n defaults: { contents: [], currentContent: null },\n})\n@Injectable()\nexport class MapsSideContextDataState {\n @Selector()\n public static currentContent(state: MapsContextDataStateModel): ContentGroup | null {\n return state.currentContent;\n }\n\n @Selector()\n public static contentCount(state: MapsContextDataStateModel): number {\n return state.contents.length;\n }\n\n @Receiver()\n public static setLoadingMainContent({ setState }: StateContext): void {\n setState((state: MapsContextDataStateModel) => {\n const content: ContentGroup = {\n id: SafeGuid.EMPTY,\n mainContent: new ContentLoad(),\n subContents: [],\n };\n state.contents = [content];\n state.currentContent = content;\n return state;\n });\n }\n\n @Receiver()\n public static setMainContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapsContextDataStateModel) => {\n state.contents.length = 0;\n state.currentContent = null;\n if (payload) {\n state.contents.push(payload);\n state.currentContent = payload;\n }\n return state;\n });\n }\n\n @Receiver()\n public static pushContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: MapsContextDataStateModel) => {\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static popContent({ setState }: StateContext): void {\n setState((state: MapsContextDataStateModel) => {\n state.contents.pop();\n state.currentContent = state.contents.length > 0 ? state.contents[state.contents.length - 1] : null;\n return state;\n });\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport { Injectable } from '@angular/core';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter } from '@src/app/store';\nimport { Observable } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterStateService } from '@modules/shared/services/state/security-center-state.service';\nimport { SafeGuid } from 'safeguid';\nimport { ContentLoad, ContentLoadingSupport } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContentGroup, DisplayContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { MapsSideContextDataState } from './maps-side-context-data.state';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class MapsSideContextDataService extends SecurityCenterStateService implements ContentService, ContentLoadingSupport {\n @Select(MapsSideContextDataState.currentContent)\n public currentContent$!: Observable;\n\n @SelectSnapshot(MapsSideContextDataState.currentContent)\n public currentContent!: ContentGroup | null;\n\n @SelectSnapshot(MapsSideContextDataState.contentCount)\n public contentCount!: number;\n\n displayContext: DisplayContext = DisplayContext.Sidepane;\n\n constructor(securityCenterClient: SecurityCenterClientService) {\n super(securityCenterClient);\n }\n\n @MethodEmitter(MapsSideContextDataState.setMainContent)\n public setMainContent(_: ContentGroup | undefined | null): void {}\n\n @MethodEmitter(MapsSideContextDataState.pushContent)\n public pushContent(_?: ContentGroup): void {}\n\n @MethodEmitter(MapsSideContextDataState.popContent)\n public popContent(): void {}\n\n public setLoadingMainContent(): void {\n this.setMainContent({ id: SafeGuid.newGuid(), mainContent: new ContentLoad(), subContents: [] });\n }\n\n public clearMainContent(): void {\n this.setMainContent(null);\n }\n\n protected clearState(): void {\n super.clearState();\n\n this.setMainContent(null);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { StateMapService } from '@modules/maps/services/map/state-map-service';\nimport { SidePaneComponent } from '@modules/shared/components/side-pane/side-pane.component';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { MapsSideContextDataService } from '../../services/maps-side-context-data/maps-side-context-data.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-maps-side-pane',\n templateUrl: 'maps-side-pane.component.html',\n})\nexport class MapsSidePaneComponent implements OnInit {\n private miniMapTransitionDuration = 0.4;\n\n constructor(public contextDataService: MapsSideContextDataService, private mapService: StateMapService) {}\n\n ngOnInit(): void {\n this.contextDataService.currentContent$.pipe(untilDestroyed(this)).subscribe((content) => {\n if (content) {\n this.mapService?.moveMiniMapLeft(SidePaneComponent.WidthPx, this.miniMapTransitionDuration);\n } else {\n this.mapService?.restoreMiniMapLeftOffset(this.miniMapTransitionDuration);\n }\n });\n }\n}\n","\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { MapObjectView, Popup } from '@genetec/web-maps';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { ShowPopupOptions } from '../components/map-popup/interfaces';\nimport { MapPopupComponent } from '../components/map-popup/map-popup.component';\n\nconst componentRefSymbol = Symbol('ComponentRef');\n\ninterface PopupWithComponentRef extends Popup {\n [componentRefSymbol]: ComponentRef;\n}\n\n// ==========================================================================x\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class MapPopupService {\n constructor(private pluginsService: PluginService, private loggerService: LoggerService) {}\n\n /**\n * Show a popup containing the passed content on the provided map object view.\n *\n * TODO: Remove viewContainerRef parameter when we upgrade Angular and have access to createComponent without viewContainerRef.\n *\n * @param mapObjectView - The map object view to open the popup of\n * @param contentGroup - The content to show in the popup\n * @param viewContainerRef - View container ref needed to dynamically create the component\n * @param showPopupOptions - Options related to the popup to be opened\n * @returns The create {@link MapPopupComponent} if successful, otherwise return **null**.\n */\n public async showPopupAsync(\n mapObjectView: MapObjectView,\n contentGroup: ContentGroup,\n viewContainerRef: ViewContainerRef,\n showPopupOptions?: ShowPopupOptions\n ): Promise {\n const compactPlugins = await this.pluginsService.getPluginsFromContentGroup(PluginTypes.MapPopupCompact, contentGroup);\n if (compactPlugins.length === 0) {\n this.loggerService.traceInformation('No MapPopupCompact plugins found.', `Title: ${contentGroup.mainContent.title.trim() || 'unknown'}.`);\n return null;\n }\n\n const popup = this.getOrCreatePopup(mapObjectView, viewContainerRef);\n if (!popup) {\n this.loggerService.traceError(\"Failed to create component's for popup.\", `Title: ${contentGroup.mainContent.title.trim() || 'unknown'}.`);\n return null;\n }\n\n let expandedPlugins: PluginItem[] = [];\n if (showPopupOptions?.expandOnHover) {\n expandedPlugins = await this.pluginsService.getPluginsFromContentGroup(PluginTypes.MapPopupExpand, contentGroup);\n }\n\n this.openPopupWithNewContent(contentGroup, popup, compactPlugins, expandedPlugins, showPopupOptions);\n\n return popup[componentRefSymbol].instance;\n }\n\n /**\n * Returns the instance of {@link MapPopupComponent} linked to the provided map object's popup if there is one, otherwise returns **null**.\n *\n * @param mapObjectView - The map object view to extract the link **MapPopupComponent** from.\n * @returns The instance of **MapPopupComponent** if found, otherwise **null**.\n */\n public getMapPopupComponent(mapObjectView: MapObjectView): MapPopupComponent | null {\n const popup = mapObjectView.getPopup();\n if (popup && this.isPopupWithComponentRef(popup)) {\n return popup[componentRefSymbol].instance;\n }\n return null;\n }\n\n /**\n * Closes the popup of the map object view if it's opened, clearing the plugins in it (if there's any).\n *\n * @param mapObjectView - The Map object view to close the popup of.\n */\n public closePopup(mapObjectView: MapObjectView): void {\n const popup = mapObjectView.getPopup();\n if (popup) {\n const componentRef = this.getComponentRefFromPopup(popup);\n componentRef?.instance.clearAndClosePopup();\n // If the popup wasn't linked to a component ref for some reason, it might still be opened, force close.\n if (popup.isOpen()) {\n popup.close();\n }\n }\n }\n\n private openPopupWithNewContent(\n contentGroup: ContentGroup,\n popup: PopupWithComponentRef,\n plugins: PluginItem[],\n expandedPlugins: PluginItem[],\n showPopupOptions?: ShowPopupOptions\n ): void {\n const mapPopupComponent = popup[componentRefSymbol].instance;\n\n mapPopupComponent.updateContentAndOpenPopup({\n plugins,\n expandedPlugins,\n delayToCloseMs: showPopupOptions?.delayToCloseMs,\n webMapsPopup: popup,\n closeOnMouseLeave: showPopupOptions?.closeOnMouseLeave,\n });\n\n // If color is an empty string, we revert to default (undefined)\n const backgroundColor = contentGroup.mainContent.color.trim().slice(3);\n popup.updateColor(backgroundColor ? `#${backgroundColor}` : undefined);\n }\n\n private getOrCreatePopup(mapObjectView: MapObjectView, viewContainerRef: ViewContainerRef): PopupWithComponentRef | null {\n const webMapPopup = mapObjectView.getPopup();\n\n // Return popup if it already exists and has the MapPopupComponent instance already linked.\n if (webMapPopup && this.isPopupWithComponentRef(webMapPopup)) {\n return webMapPopup;\n } else {\n // Old popup was not created by this service, close it as it will be replaced.\n mapObjectView.closePopup();\n }\n\n const componentRef = viewContainerRef.createComponent(MapPopupComponent);\n if (componentRef?.location.nativeElement) {\n const popup = this.createWebMapPopup(componentRef);\n mapObjectView.bindPopup(popup);\n mapObjectView.once('remove', () => popup[componentRefSymbol].destroy());\n return popup;\n }\n\n return null;\n }\n\n private isPopupWithComponentRef(popup: Popup): popup is PopupWithComponentRef {\n return componentRefSymbol in popup;\n }\n\n private createWebMapPopup(contentComponentRef: ComponentRef): PopupWithComponentRef {\n const popup = new Popup({\n content: contentComponentRef.location.nativeElement as HTMLElement,\n offset: [0, 5],\n autoClose: false,\n closeOnClick: false,\n togglePopupOnClick: false,\n autoPan: false,\n reopenWhenSourceUnclusters: true,\n });\n this.setComponentReferenceToPopup(popup, contentComponentRef);\n return popup as PopupWithComponentRef;\n }\n\n private setComponentReferenceToPopup(popup: Popup, componentRef: ComponentRef) {\n (popup as PopupWithComponentRef)[componentRefSymbol] = componentRef;\n }\n\n private getComponentRefFromPopup(popup: Popup) {\n return (popup as PopupWithComponentRef)[componentRefSymbol];\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../../utilities/constants';\n\nexport const KnownContentContext = Constants({\n Dashboards: SafeGuid.parse('C2124CB8-65E3-48B9-ACBF-10C7A34C274D'),\n Navigation: SafeGuid.parse('C40A73FB-D994-46A7-B4E1-EABFBB38FC31'),\n Reports: SafeGuid.parse('3134F869-9376-4618-B77D-F9E5E29B1B3C'),\n Tiles: SafeGuid.parse('DB8C7286-07E1-41F6-B54B-037DF302C0F9'),\n Map: SafeGuid.parse('67B6B6F3-AA00-4B65-B57D-F7B77F4C7791'),\n Commmands: SafeGuid.parse('B95245EC-1283-41DB-9116-AD6B6531B210'),\n Investigate: SafeGuid.parse('EE14C544-8E6E-4626-8737-55B2A7AF9B49'),\n});\n","import { SafeGuid } from 'safeguid';\n\nexport class KnownFeatures {\n public static accessControlId = SafeGuid.parse('22325086-4f8e-4368-940b-f3573ac8c635');\n public static alarmsId = SafeGuid.parse('33cf2d6b-54a2-49d2-93fb-0b34b14a7084');\n public static licensePlateManagementId = SafeGuid.parse('eb544ab9-43fc-483f-a514-1ed8b3472d20');\n public static mapsId = SafeGuid.parse('61f6ba68-0c0d-4f24-82b8-e89b81ad3fbc');\n public static videoId = SafeGuid.parse('2324ab76-be35-4dcf-931c-43d615d20dcd');\n\n public static readonly values = [];\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { DetailedFeatureFlagGroup, FeatureFlag } from '@modules/feature-flags/feature-flag';\nimport { createSelector, NgxsOnInit, State, StateContext } from '@ngxs/store';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Receiver } from '../../store/decorators/receiver.decorator';\nimport { KnownFeatureFlagsToken } from './tokens';\n\nexport interface FeatureFlagsStateModel {\n featureFlags: Record;\n registeredOnce: boolean;\n}\n\nclass UpdateFeatureFlagsCacheAction {\n static readonly type = '[FeatureFlags] Update feature flags cached values';\n}\n\n/**\n * State that contains cached values for all feature flags contained in the app.\n * Register feature flags for new modules in the constructor of the modules.\n *\n * @example\n * [at sign]NgModule({\n * imports: [\n * // ...\n * FeatureFlagsModule.forRoot(MapsFeatureFlags),\n * ]\n * })\nexport class MapsModule {}\n */\n@State({\n name: 'featureFlags',\n defaults: {\n featureFlags: {},\n registeredOnce: false,\n },\n})\n@Injectable()\nexport class FeatureFlagsState implements NgxsOnInit {\n private static advancedSettingsService: AdvancedSettingsService;\n private static loggerService: LoggerService;\n private static knownFeatureFlagGroups: DetailedFeatureFlagGroup[];\n\n constructor(\n private advancedSettingsService: AdvancedSettingsService,\n private securityCenterClientService: SecurityCenterClientService,\n private loggerService: LoggerService,\n @Inject(KnownFeatureFlagsToken) knownFeatureFlags: DetailedFeatureFlagGroup[]\n ) {\n FeatureFlagsState.advancedSettingsService = this.advancedSettingsService;\n FeatureFlagsState.loggerService = this.loggerService;\n FeatureFlagsState.knownFeatureFlagGroups = knownFeatureFlags;\n }\n\n public static featureFlags(featureFlag: FeatureFlag): (state: FeatureFlagsStateModel) => boolean {\n return createSelector([FeatureFlagsState], (state: FeatureFlagsStateModel) => {\n const cachedFlag = state.featureFlags[featureFlag];\n if (cachedFlag === undefined) {\n this.logFeatureFlagNotFound(featureFlag);\n }\n return cachedFlag ?? featureFlag.defaultValue;\n });\n }\n\n public static featureFlagGroups(featureFlagGroup: T): (state: FeatureFlagsStateModel) => Record {\n return createSelector([FeatureFlagsState], (state: FeatureFlagsStateModel) => {\n const evaluatedGroup = {} as Record;\n\n for (const [propertyKey, featureFlag] of Object.entries(featureFlagGroup)) {\n const value = state.featureFlags[featureFlag];\n if (value === undefined) {\n this.logFeatureFlagNotFound(featureFlag);\n }\n evaluatedGroup[propertyKey as keyof T] = value ?? featureFlag.defaultValue;\n }\n\n return evaluatedGroup;\n });\n }\n\n private static logFeatureFlagNotFound(featureFlag: FeatureFlag) {\n this.loggerService.traceError(`Feature flag ${featureFlag} is not registered!`);\n }\n\n @Receiver({ action: UpdateFeatureFlagsCacheAction })\n public static updateFeatureFlagsCache({ setState }: StateContext): void {\n setState((state: FeatureFlagsStateModel) => {\n // Update all feature flag values with initialized role config.\n // Flattens the feature flag groups into an array of feature flags\n const featureFlags = FeatureFlagsState.knownFeatureFlagGroups\n .flat()\n .reduce((allFeatureFlags: FeatureFlag[], group: DetailedFeatureFlagGroup) => [...allFeatureFlags, ...Object.values(group)], []);\n\n for (const featureFlag of featureFlags) {\n state.featureFlags[featureFlag.key] = this.advancedSettingsService.get(featureFlag.key, featureFlag.defaultValue);\n }\n\n state.registeredOnce = true;\n return state;\n });\n }\n\n ngxsOnInit({ dispatch }: StateContext): void {\n // No need to unsubscribe, it lives as long as the service.\n this.securityCenterClientService.scClient.onLogonStateChanged(() => {\n dispatch(UpdateFeatureFlagsCacheAction);\n });\n }\n}\n","// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n\nimport { IGuid } from 'safeguid';\n\n// ==========================================================================\nexport class MapEntryParams {\n public mapId?: IGuid;\n public viewLat?: number;\n public viewLng?: number;\n public selectedMapObjectId?: string;\n public parentAreaId?: IGuid;\n}\n","import { GenSearchInputItem, MeltedIcon } from '@genetec/gelato-angular';\n\nexport class MapSearchInputItem implements GenSearchInputItem {\n public icon?: MeltedIcon;\n public secondaryText?: string;\n public groupName?: string;\n public navigation?: string;\n\n constructor(public id: string, public text: string) {}\n}\n","
    \n
    \n
    \n 0\"\n [(ngModel)]=\"searchText\"\n [genMinLength]=\"1\"\n >\n \n \n
    \n
    \n \n \n
    \n {{ mapService.currentMapEntity?.name }}\n
    \n \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n\n
    \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n {{ minimapTooltip$ | async }}\n \n\n \n {{ mapUnavailableReason }}\n \n \n
    \n \n
    \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n \n \n {{ link.text }}\n \n\n\n\n\n
    \n \n \n \n \n {{ layerItem.text }}\n \n \n \n \n
    \n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, OnDestroy, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { ButtonFlavor, Icon, ItemSlot, PopupPosition, TextFlavor, SelectionType, SpinnerSize } from '@genetec/gelato';\nimport { GenMenu, GenPopup, ImageFit, ImageFlavor, MeltedIcon } from '@genetec/gelato-angular';\nimport { LatLngBounds, LeafletMouseEvent, MapObjectEvent, MapObjectView, Point } from '@genetec/web-maps';\nimport { AreaBrowserItemModel } from '@modules/general/entity-browser/items/area-browser-item-model';\nimport { IFloor } from '@modules/maps/controllers/map.controller.data';\nimport { MapObjectAddOrUpdateEvent } from '@modules/maps/data/MapObjectAddOrUpdateEvent';\nimport { MapObjectRemoveEvent } from '@modules/maps/data/MapObjectRemoveEvent';\nimport { MapFloorInfo, MapSelectionData } from '@modules/maps/models';\nimport { MapPopupService } from '@modules/maps/services/map-popup.service';\nimport { StateMapService } from '@modules/maps/services/map/state-map-service';\nimport { MapsSideContextDataService } from '@modules/maps/services/maps-side-context-data/maps-side-context-data.service';\nimport { GeoCoordinate, MapSearchContext, MapViewArea } from '@modules/shared/api/api';\nimport { EntityBrowserComponent } from '@modules/shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { SidePaneComponent } from '@modules/shared/components/side-pane/side-pane.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { EntityBrowserSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserItemModel } from '@modules/shared/entity-browser/Items/entity-browser-item-model';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContentGroup, PluginComponentExposure } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { COMMANDS_SERVICE, MAPS_BOTTOM_CONTEXT_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { KnownContentContext } from '@modules/shared/services/content/KnownContentContext';\nimport { EventsService } from '@modules/shared/services/events/events.service';\nimport { NavigationService } from '@modules/shared/services/navigation/navigation.service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { SearchService } from '@modules/shared/services/search/search.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { InternalPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { IconsService } from '@shared/services/icons.service';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AreaEntityFields, IAreaEntity } from 'RestClient/Client/Interface/IAreaEntity';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IDefaultView, IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { AreaEntity } from 'RestClient/Client/Model/AreaEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { MapEntity } from 'RestClient/Client/Model/MapEntity';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { BehaviorSubject, from, Observable, timer } from 'rxjs';\nimport { filter, map, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { WINDOW } from '@src/app/utilities';\nimport { Select } from '@ngxs/store';\nimport { MapsSideContextDataState } from '@modules/maps/services/maps-side-context-data/maps-side-context-data.state';\nimport { StateObservable } from '@src/app/store/decorators/state-observable.decorator';\nimport { ListItem } from '@modules/shared/interfaces/list-item';\nimport { MethodEmitter, StateEmitter } from '@src/app/store';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { MapsBottomContextDataService } from '@modules/maps/services/maps-bottom-context-data/maps-bottom-context-data.service';\nimport { ContentOverlayService } from '@shared/services/content-overlay/content-overlay.service';\nimport { MapControlsComponent } from '../map-controls/map-controls.component';\nimport { ShowPopupOptions } from '../map-popup/interfaces';\nimport { MapEntryParams } from './map-task-entry-params';\nimport { MapSearchInputItem } from './maps-search-input-item';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-maps-task',\n templateUrl: './maps-task.component.html',\n styleUrls: ['./maps-task.component.scss'],\n providers: [MapsSideContextDataService, MapPopupService, ContentOverlayService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalPluginDescriptor({\n type: MapsTaskComponent,\n pluginTypes: [PluginTypes.Task, PluginTypes.Dashboard],\n exposure: {\n id: MapsTaskComponent.pluginId,\n icon: 'gen-ico-folded-map',\n title: 'STE_TASK_MAPS',\n tags: ['map', 'STE_LABEL_NOUN_MAP', 'STE_LABEL_LOCATION'],\n priority: 10,\n } as PluginComponentExposure,\n requirements: {\n features: [KnownFeatures.mapsId],\n licenses: [KnownLicenses.maps],\n globalPrivileges: [KnownPrivileges.mapMonitoringTaskPrivilege],\n },\n isSupported: () => true,\n})\nexport class MapsTaskComponent extends TrackedComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('88FB8276-7191-4DA7-BDC5-38721EA78A21');\n\n @ViewChild('mapEntityBrowser') public mapEntityBrowser!: EntityBrowserComponent;\n @ViewChild('mapSelectionBrowser') public mapSelectionBrowser!: GenPopup;\n @ViewChild('mapLayersBrowser') public mapLayersBrowser!: GenPopup;\n @ViewChild('contextMenu') public contextMenu?: GenMenu;\n @ViewChild('linkContextMenu') public linkContextMenu?: GenMenu;\n @ViewChild('appMapControls') public appMapControls!: MapControlsComponent;\n\n @Select(FeatureFlagsState.featureFlags(GeneralFeatureFlags.ExpandWidget))\n public isPortalEnabled$!: Observable;\n\n @Select(MapsSideContextDataState.currentContent)\n private sideContextCurrentContent$!: StateObservable;\n\n @MethodEmitter(MapsSideContextDataState.setLoadingMainContent)\n private setLoadingMainContent!: StateEmitter;\n\n @MethodEmitter(MapsSideContextDataState.setMainContent)\n private setSideContextMainContent!: StateEmitter;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly ImageFlavor = ImageFlavor;\n public readonly MeltedIcon = MeltedIcon;\n public readonly ImageFit = ImageFit;\n public readonly TextFlavor = TextFlavor;\n public readonly ListSelectionType = SelectionType;\n public readonly PopupPosition = PopupPosition;\n public readonly ItemSlot = ItemSlot;\n public readonly SpinnerSize = SpinnerSize;\n\n public readonly mapSelectionBrowserFilter = new EntityBrowserFilter(EntityTypes.Areas);\n\n public mapTrayPlugins$?: Observable;\n public initialMapLoadItemsDone = false;\n public mapUnavailableReason = '';\n public searchText = '';\n\n public clickPositionX = 0;\n public clickPositionY = 0;\n public toggleMiniMapButton$?: Observable;\n public minimapTooltip$: Observable;\n\n public layersAsListItems$: Observable;\n public isSelectLayerOpen = false;\n public isSelectMapOpen = false;\n public maps: MapEntity[] = [];\n public contextMenuLinks: ContextMenuItem[] = [];\n public floorInfo: MapFloorInfo = {\n floors: [],\n };\n public defaultView?: IDefaultView;\n public presets: IDefaultView[] = [];\n public selectedFloor: IFloor | null = null;\n public currentMapAreaId?: IGuid;\n public currentMapAreaCustomIconId?: IGuid;\n public hidingOfflineMobileUsers = false;\n public isSearching$: Observable;\n public contextMenuLinks$?: Observable;\n public isLoadingContextMenu$: Observable;\n\n public get isGoToParentEnabled(): boolean {\n return isNonEmptyGuid(this.floorInfo.parentMapId);\n }\n\n public get currentMapId(): IGuid | undefined {\n return this.mapService.currentMapEntity?.id;\n }\n\n public selectedLayers$: Observable;\n\n private hoverTimeouts = new Map();\n private initialLoadDone = false;\n\n private scClient: WebAppClient;\n\n private mapEntryParams: MapEntryParams | undefined;\n private activeContent!: ContentGroup | null;\n private wasMapEntityBrowserRefreshed = false;\n private keepViewWhenChangingMap = false;\n private floorSwitched = false;\n private isCtrlKeyPressed = false;\n private lastSearchInstanceId = SafeGuid.EMPTY;\n\n private isSearchingSubject = new BehaviorSubject(false);\n private isLoadingContextMenuSubject = new BehaviorSubject(false);\n private layersAsListItemsSubject = new BehaviorSubject([]);\n private minimapTooltipSubject = new BehaviorSubject('');\n\n private minimizeMiniMapTooltip = this.translateService.instant('STE_TOOLTIP_MINIMIZE_MINIMAP') as string;\n private restoreMiniMapTooltip = this.translateService.instant('STE_TOOLTIP_RESTORE_MINIMAP') as string;\n\n private readonly defaultMapBounds = new LatLngBounds([-45, -90], [45, 90]);\n\n constructor(\n private loggerService: LoggerService,\n private pluginService: PluginService,\n public mapService: StateMapService,\n private translateService: TranslateService,\n securityCenterProvider: SecurityCenterClientService,\n private contentProviderService: ContentProviderService,\n private route: ActivatedRoute,\n private searchService: SearchService,\n private mapPopupService: MapPopupService,\n private navigationService: NavigationService,\n @Inject(COMMANDS_SERVICE) public commandsService: InternalCommandsService,\n @Inject(MAPS_BOTTOM_CONTEXT_SERVICE) public bottomContextDataService: MapsBottomContextDataService,\n trackingService: TrackingService,\n private iconService: IconsService,\n private eventsService: EventsService, // Keep reference to register event filters in maps task\n @Inject(WINDOW) private window: Window,\n private changeDetectorRef: ChangeDetectorRef,\n private viewContainerRef: ViewContainerRef\n ) {\n super(trackingService);\n\n this.scClient = securityCenterProvider?.scClient;\n this.isSearching$ = this.isSearchingSubject.asObservable();\n this.isLoadingContextMenu$ = this.isLoadingContextMenuSubject.asObservable();\n this.layersAsListItems$ = this.layersAsListItemsSubject.asObservable();\n this.minimapTooltip$ = this.minimapTooltipSubject.asObservable();\n this.selectedLayers$ = this.layersAsListItems$.pipe(map((layers) => layers.filter((layer) => layer.isChecked)));\n }\n\n @HostListener('document:keydown', ['$event'])\n public handleKeyDownEvent(event: KeyboardEvent): void {\n if (event.ctrlKey) {\n this.isCtrlKeyPressed = true;\n }\n }\n\n @HostListener('document:keyup', ['$event'])\n public handleKeyUpEvent(event: KeyboardEvent): void {\n if (event.key === 'Control') {\n this.isCtrlKeyPressed = false;\n }\n }\n public ngOnInit() {\n super.ngOnInit();\n\n this.mapTrayPlugins$ = from(this.pluginService.getPlugins(PluginTypes.MapTray));\n\n this.toggleMiniMapButton$ = this.mapService.onMiniMapStateChanged$.pipe(\n tap((event) => this.minimapTooltipSubject.next(event.minimized ? this.restoreMiniMapTooltip : this.minimizeMiniMapTooltip)),\n map(() => document.querySelector('.leaflet-control-minimap-toggle-display'))\n );\n\n this.sideContextCurrentContent$.pipe(untilDestroyed(this)).subscribe((content) => {\n if (this.mapService.map?.isMapInitialized()) {\n if (!content) {\n this.mapService.setStateSelectedMapObject(undefined);\n this.mapService.map.clearSelection();\n this.mapService.map.setCenterViewPaddingBottomRight([0, 0]);\n } else {\n this.mapService.map.setCenterViewPaddingBottomRight([SidePaneComponent.WidthPx, 0]);\n }\n }\n });\n\n this.route.queryParams.pipe(untilDestroyed(this)).subscribe(async (params) => {\n // When changing task from map to another, no need for further checks\n if (this.route.snapshot.url[1].toString().toLowerCase() !== MapsTaskComponent.pluginId.toLowerCase()) {\n return;\n }\n\n this.mapEntryParams = this.extractMapEntryParamsFromQueryParams(params);\n\n // If the map is already loaded, apply the parameters now\n if (this.initialLoadDone) {\n this.processLocationFromRoute();\n }\n\n // Update parent\n const oldParentAreaId = this.floorInfo.parentAreaId ?? SafeGuid.EMPTY;\n this.floorInfo.parentAreaId = this.mapEntryParams.parentAreaId ?? null;\n\n // If a map change was requested\n if (this.mapEntryParams.mapId && !this.mapEntryParams.mapId.equals(this.mapService.currentMapEntity?.id)) {\n await this.setCurrentMap(this.mapEntryParams.mapId);\n } else if (this.mapService.currentMapEntity && this.mapEntryParams.mapId && !oldParentAreaId.equals(this.mapEntryParams.parentAreaId ?? SafeGuid.EMPTY)) {\n // Setup floors if only the parent changed (floor configuration will change even if the map doesn't)\n await this.setupFloors();\n } else if (!this.initialLoadDone && !this.mapService.stateSelectedMap) {\n // Default one if none specified\n this.clearSideContextContent();\n this.mapService.setStateViewArea(undefined);\n this.mapService.setStateSelectedMap(undefined);\n }\n\n // Subscribe once all query params have been read and applied\n if (!this.initialLoadDone) {\n this.subscribeMapService();\n this.initialLoadDone = true;\n }\n });\n }\n\n ngOnDestroy() {\n try {\n this.clearSideContextContent();\n if (this.mapService.map?.isMapInitialized()) {\n this.mapService.setStateSelectedMap(this.mapService.currentMapEntity?.id);\n this.mapService.setStateViewArea(this.mapService.map.getBounds());\n this.mapService.emptyMap(true);\n }\n } catch (exception) {\n console.log(exception);\n }\n\n super.ngOnDestroy();\n }\n\n public canSelectMap(model: EntityBrowserItemModel): Promise {\n if (model instanceof AreaBrowserItemModel) {\n return Promise.resolve(!model.map.isEmpty());\n }\n return Promise.resolve(false);\n }\n\n // Needs this indirection to have access to component's instance\n public onMapSearch = async (searchText: string): Promise => {\n const currentSearchId = SafeGuid.newGuid();\n try {\n this.isSearchingSubject.next(true);\n const searchResult = await this.search(searchText, currentSearchId);\n return searchResult;\n } finally {\n // Is a new search more recent in progress?\n if (currentSearchId.equals(this.lastSearchInstanceId)) {\n this.isSearchingSubject.next(false);\n }\n\n // Mark the gen-search-input for check so the results are updated correctly\n this.changeDetectorRef.markForCheck();\n }\n };\n\n public async onMapSelected(selection: EntityBrowserSelection): Promise {\n if (selection && !selection.singleId.isEmpty()) {\n const area = await this.scClient.getEntityAsync(\n AreaEntity,\n selection.singleId,\n null,\n null,\n [AreaEntityFields.linkField, AreaEntityFields.customIconIdField].toString()\n );\n if (area?.link) {\n this.currentMapAreaId = area.id;\n this.currentMapAreaCustomIconId = area.customIconId;\n const currentMapId = this.mapService.currentMapEntity?.id;\n if (\n !currentMapId ||\n !currentMapId.equals(area.link) ||\n !this.mapService.mapAvailable ||\n !this.floorInfo.parentMapId?.equals(selection.singleItem?.parent?.itemId ?? SafeGuid.EMPTY)\n ) {\n // Keep view if selected map is a sibling floor\n this.keepViewWhenChangingMap = !!this.floorInfo.floors.find((floor) => floor.id === currentMapId);\n this.updateEntityBrowserSelectedId(area.id);\n const itemId = selection.singleItem?.parent?.itemId;\n await this.navigateToMapAsync(area.link, itemId ? SafeGuid.parse(itemId) : undefined);\n }\n\n // Mark for check for:\n // - mapService.currentMapEntity?.name\n // - this.currentMapAreaId\n // - this.currentMapAreaCustomIconId\n this.changeDetectorRef.markForCheck();\n }\n\n await this.mapSelectionBrowser.close();\n }\n }\n\n public async toggleLayerSelection(): Promise {\n await this.mapLayersBrowser.toggle();\n }\n\n public async toggleMapSelectionAsync(): Promise {\n await this.mapSelectionBrowser.toggle();\n\n if (this.mapSelectionBrowser.open) {\n let needRefresh = false;\n const [entityBrowserSelectedId] = this.mapSelectionBrowserFilter.selectedEntityIds;\n if (\n this.mapService.currentMapEntity?.associatedArea &&\n (!entityBrowserSelectedId || !entityBrowserSelectedId.equals(this.mapService.currentMapEntity?.associatedArea))\n ) {\n this.updateEntityBrowserSelectedId(this.mapService.currentMapEntity.associatedArea);\n needRefresh = true;\n }\n\n if (needRefresh || !this.wasMapEntityBrowserRefreshed) {\n await this.mapEntityBrowser.refreshAsync(this.mapSelectionBrowserFilter);\n this.wasMapEntityBrowserRefreshed = true;\n }\n }\n }\n\n public onSelectedItemsChange(item: ListItem, isChecked: boolean): void {\n item.isChecked = isChecked;\n this.applyLayersSelection();\n }\n\n public applyLayersSelection = (): void => {\n this.selectedLayers$\n .pipe(\n map((layers) => layers.map((layer) => SafeGuid.parse(layer.id))),\n take(1),\n untilDestroyed(this)\n )\n .subscribe((selectedLayers) => {\n this.mapService.setVisibleLayers(selectedLayers).fireAndForget();\n });\n };\n\n public onMapSearchResultSelected(itemSelected: MapSearchInputItem): void {\n if (!this.mapService.map?.isMapInitialized()) return;\n\n const id = itemSelected.id;\n\n // first, look if the returned results is a map object present on map\n if (this.mapService.map.mapObjectViewExists(id)) {\n this.mapService.map.select(itemSelected.id);\n this.mapService.map.centerMapObject(itemSelected.id);\n }\n\n // if the item has a navigation path, execute it\n if (itemSelected.navigation) {\n this.navigationService.navigate(itemSelected.navigation).fireAndForget();\n }\n }\n\n public clearSearch(): void {\n this.searchText = '';\n }\n\n public onZoomIn(): void {\n this.mapService.map?.zoomIn();\n }\n\n public onZoomOut(): void {\n this.mapService.map?.zoomOut();\n }\n\n public onPresetClick(view: IDefaultView): void {\n this.mapService.map?.fitBounds(this.defaultViewToLatLngBounds(view), { animate: true });\n }\n\n public onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n }\n\n public onMapControlWidthChange(): void {\n this.updateMiniMapPosition();\n }\n\n // Remove when Gelato bug https://dev.azure.com/GenetecCentral/UXDev/_workitems/edit/46086 is fixed and merged in our package.\n // Needed because panning the map won't close context menu (only closes on automatically on mouseup).\n public onMouseDown(): void {\n if (this.linkContextMenu?.open) {\n this.linkContextMenu.close().fireAndForget();\n }\n }\n\n public onMouseUp(evt: MouseEvent): void {\n // right-click, double\n if (evt.button === 2 && evt.detail === 2) {\n this.onZoomOut();\n }\n }\n\n public onClick(evt: MouseEvent): void {\n this.clickPositionX = evt.clientX;\n this.clickPositionY = evt.clientY;\n }\n\n public async onLinkClick(clickedItem: ContextMenuItem): Promise {\n if (clickedItem.id) {\n await this.navigateToLink(clickedItem.id.toString());\n }\n }\n\n public switchFloor(floor: IFloor): void {\n this.keepViewWhenChangingMap = !this.isCtrlKeyPressed;\n this.floorSwitched = true;\n this.requestMapChange(floor.id);\n }\n\n public isFloorSelected(floor: IFloor): boolean {\n return floor === this.selectedFloor;\n }\n\n public getSortedFloors(): IFloor[] {\n return this.floorInfo.floors.sort((floorA, floorB) => floorB.orderPosition - floorA.orderPosition);\n }\n\n public goToParentMap(): void {\n const parentMapId = this.floorInfo.parentMapId;\n this.clearMapFloorInfo();\n this.requestMapChange(parentMapId ?? undefined);\n }\n\n private subscribeMapService(): void {\n this.mapService.stateSelectedMap$\n .pipe(\n tap(() => (this.initialMapLoadItemsDone = false)),\n switchMap((selectedMap) =>\n from(\n this.mapService.initializeMap({\n mapId: selectedMap ?? null,\n withEvents: true,\n userLocationEnabled: true,\n previousViewArea: (this.keepViewWhenChangingMap && this.mapService.map?.getBounds()) || this.mapService.stateViewArea,\n })\n )\n ),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.mapService.onMapObjectSelected$.pipe(untilDestroyed(this)).subscribe((event) => this.onMapObjectSelected(event));\n this.mapService.onMapObjectUnselected$.pipe(untilDestroyed(this)).subscribe((view) => this.onMapObjectUnselected(view));\n this.mapService.onMapObjectMouseEnter$.pipe(untilDestroyed(this)).subscribe((view) => this.onMouseEnter(view));\n this.mapService.onMapObjectMouseLeave$.pipe(untilDestroyed(this)).subscribe((view) => this.onMouseLeave(view));\n this.mapService.onMapTypesLoaded$.pipe(untilDestroyed(this)).subscribe(() => this.onMapTypesLoaded());\n this.mapService.onMapLoaded$.pipe(untilDestroyed(this)).subscribe(() => this.onMapLoaded());\n this.mapService.onEventAdded$.pipe(untilDestroyed(this)).subscribe((mapEvent) => this.onEventAdded(mapEvent));\n this.mapService.onEventRemoved$.pipe(untilDestroyed(this)).subscribe((mapEvent) => this.onEventRemoved(mapEvent));\n this.mapService.onMapUnavailable$.pipe(untilDestroyed(this)).subscribe((error) => this.onMapUnavailable(error));\n this.mapService.onSelectionRequested$.pipe(untilDestroyed(this)).subscribe((data) => this.select(data));\n this.mapService.onUpdateContextualDataRequested$.pipe(untilDestroyed(this)).subscribe((data) => this.updateSidePaneWithContent(data));\n this.mapService.onClearContextualDataRequested$.pipe(untilDestroyed(this)).subscribe((id) => this.clearSidePaneWithContent(id));\n }\n\n private async setCurrentMap(selectedMap?: IGuid, sameBuilding = false) {\n let selectedMapId: IGuid | undefined;\n if (selectedMap && !selectedMap.isEmpty()) {\n selectedMapId = selectedMap;\n const entity = await this.scClient.getEntityAsync(Entity, selectedMap, null, null, AreaEntityFields.linkField);\n if (entity instanceof AreaEntity) {\n selectedMapId = entity.link;\n }\n }\n\n this.clearSideContextContent();\n this.mapService.setStateViewArea(undefined);\n this.mapService.setStateSelectedMap(selectedMapId);\n }\n\n private async insertAllMapObjects(_: IMapEntity) {\n if (!this.initialMapLoadItemsDone) {\n this.initialMapLoadItemsDone = true;\n\n await this.setLayerFilters();\n }\n }\n\n private processLocationFromRoute(): boolean {\n let result = false;\n\n if (this.mapEntryParams) {\n const lat = this.mapEntryParams.viewLat;\n const lng = this.mapEntryParams.viewLng;\n this.mapEntryParams.viewLat = undefined;\n this.mapEntryParams.viewLng = undefined;\n if (lat != null && lng != null && !isNaN(lat) && !isNaN(lng)) {\n const offset = 0.001;\n this.mapService.map?.fitBounds([\n [lat + offset, lng - offset],\n [lat - offset, lng + offset],\n ]);\n // be sure no last selection is made when having lat lng position.\n this.mapService.setStateSelectedMapObject(undefined);\n result = true;\n }\n }\n\n return result;\n }\n\n private async setLayerFilters() {\n // by getting the notification filter, we get the available layers for the currently viewing map\n const notificationFilter = await this.mapService.getNotificationFilter();\n\n const layers = this.mapService.layers;\n if (layers) {\n this.layersAsListItemsSubject.next(\n Array.from(layers)\n .map((layer) => {\n return {\n id: layer.id.toString(),\n text: layer.name,\n isChecked: notificationFilter?.layerFilters.firstOrDefault((item) => item.layerId.equals(layer.id))?.receiveNotifications,\n icon: layer.icon,\n image: layer.customIcon,\n highlightColor: layer.color,\n } as ListItem;\n })\n .sort((a, b) => a.text.localeCompare(b.text))\n );\n\n this.applyLayersSelection();\n }\n }\n\n private select(data: MapSelectionData): void {\n const sameMap = !data.mapId || this.mapService.currentMapEntity?.id.equals(data.mapId);\n if (sameMap) {\n // select right away\n this.mapService.selectAndZoom(data.mapObjectId);\n } else {\n this.requestMapChange(data.mapId, SafeGuid.parse(data.mapObjectId));\n }\n }\n\n private async updateSidePane(sourceId: string) {\n if (sourceId.length > 0) {\n this.setLoadingMainContent();\n if (!this.activeContent || !(this.activeContent.mainContent.source.toLowerCase() === sourceId.toLowerCase())) {\n this.activeContent = await this.contentProviderService.getContentAsync(sourceId, KnownContentContext.Map);\n }\n this.setSideContextMainContent(this.activeContent);\n this.loggerService.traceDebug(\n `Map-task updateSidePane with source ID ${sourceId}: Make sure this warning doesnt appear more than once consequently! May be an indication of double widgets in sidepane`\n );\n }\n }\n\n // This method is used when someone externally wants to update the side pane without any selection\n private updateSidePaneWithContent(content: ContentGroup | null) {\n // clear selection\n if (this.mapService.map) {\n this.mapService.setStateSelectedMapObject(undefined);\n this.mapService.map.clearSelection();\n }\n\n // update side pane with data provided\n this.activeContent = content;\n this.setSideContextMainContent(this.activeContent);\n this.loggerService.traceDebug(\n `Map-task updateSidePaneWithContent with content ID ${\n content?.id.toString() ?? 'unknown'\n }: Make sure this warning doesnt appear more than once consequently! May be an indication of double widgets in sidepane`\n );\n }\n\n private clearSidePaneWithContent(contentId: IGuid) {\n if (this.activeContent?.id.equals(contentId)) {\n this.activeContent = null;\n this.clearSideContextContent();\n this.loggerService.traceDebug(`Map-task with content ID ${contentId.toString()}: Make sure this warning coresponds the same number of times as the later one`);\n }\n }\n\n private async navigateToLink(linkId: string, supportsNavigation = true): Promise {\n if (!SafeGuid.isGuid(linkId)) {\n // not a guid, no link can be discovered, simply update the pane\n await this.updateSidePane(linkId);\n return;\n }\n\n let canNavigate = false;\n if (isGuid(linkId)) {\n let navigationLink = SafeGuid.parse(linkId);\n if (!navigationLink.isEmpty()) {\n if (supportsNavigation) {\n const entity = await this.scClient.getEntityAsync(Entity, navigationLink, null, null, AreaEntityFields.linkField);\n if (entity?.hasField(AreaEntityFields.linkField)) {\n const mapId = entity.getFieldGuid(AreaEntityFields.linkField);\n if (mapId && !mapId.isEmpty()) {\n navigationLink = mapId;\n canNavigate = true;\n }\n }\n }\n\n if (canNavigate) {\n const mapEntity = await this.scClient.getEntityAsync(MapEntity, navigationLink);\n if (mapEntity) {\n await this.navigateToMapAsync(SafeGuid.parse(linkId));\n }\n } else {\n // couldn't resolve as a navigation link, just update the side pane\n await this.updateSidePane(linkId);\n }\n }\n }\n }\n\n private viewSupportsNavigation(mapObjectView: MapObjectView) {\n const viewType = mapObjectView.data.type;\n const layers = this.mapService.layers;\n if (viewType && layers) {\n const viewTypeId = SafeGuid.parse(viewType);\n\n const supportNavigationTypes: IGuid[] = [];\n layers.forEach((layer) => {\n Array.from(layer.includedTypes.where((includedType) => includedType.supportsNavigation)).forEach((includedType) => {\n supportNavigationTypes.push(includedType.typeId);\n });\n });\n return supportNavigationTypes.some((type) => type.equals(viewTypeId));\n }\n\n return false;\n }\n\n private closePopup(mapObjectView: MapObjectView) {\n this.mapPopupService.closePopup(mapObjectView);\n }\n\n private async displayPopupAsync(mapObjectView: MapObjectView, contentGroup: ContentGroup, options: ShowPopupOptions) {\n if (options.delayToCloseMs !== undefined && this.mapPopupService.getMapPopupComponent(mapObjectView)?.isPermanent) {\n return;\n }\n\n await this.mapPopupService.showPopupAsync(mapObjectView, contentGroup, this.viewContainerRef, options);\n }\n\n private async setupFloors() {\n if (this.mapService.currentMapEntity?.id) {\n const mapId = this.mapService.currentMapEntity.id;\n const floorQueryResult = await this.mapService.getFloors(mapId, this.floorInfo.parentAreaId ?? SafeGuid.EMPTY);\n\n // Check again, could have changed task while loading floors\n if (this.mapService.currentMapEntity?.id) {\n const newFloorInfo: MapFloorInfo = { ...this.floorInfo };\n if (floorQueryResult) {\n newFloorInfo.parentAreaId = floorQueryResult.parentAreaId;\n newFloorInfo.parentMapId = floorQueryResult.parentMapId;\n }\n\n const queryParentId = this.route.snapshot.queryParams.parent as string | undefined;\n // Only update query params to set the parent (if it changed)\n if (isNonEmptyGuid(newFloorInfo.parentAreaId) && !newFloorInfo.parentAreaId?.equals(queryParentId)) {\n this.navigateToMapAsync(mapId, newFloorInfo.parentAreaId).fireAndForget();\n }\n\n newFloorInfo.floors = floorQueryResult?.floors ? Array.from(floorQueryResult.floors) : [];\n this.floorInfo = newFloorInfo;\n this.selectedFloor = this.getFloorInfoData(this.mapService.currentMapEntity.id);\n }\n }\n }\n\n private clearMapFloorInfo() {\n this.floorInfo.floors = [];\n this.floorInfo.parentAreaId = null;\n this.floorInfo.parentMapId = null;\n }\n\n private extractMapEntryParamsFromQueryParams(params: Params): MapEntryParams {\n const mapEntryParams = new MapEntryParams();\n\n if (typeof params.id === 'string' && isGuid(params.id)) {\n mapEntryParams.mapId = SafeGuid.parse(params.id);\n }\n if (!isNaN(Number(params.lat))) {\n mapEntryParams.viewLat = +params.lat;\n }\n if (!isNaN(Number(params.lng))) {\n mapEntryParams.viewLng = +params.lng;\n }\n if (params.mapObjectId && SafeGuid.isGuid(params.mapObjectId)) {\n mapEntryParams.selectedMapObjectId = params.mapObjectId as string;\n }\n if (params.parent && isGuid(params.parent)) {\n mapEntryParams.parentAreaId = SafeGuid.parse(params.parent.toString());\n }\n\n return mapEntryParams;\n }\n\n private updateMiniMapPosition() {\n this.mapService?.setMiniMapRightMargin(this.appMapControls.width);\n }\n\n private isDefaultViewValid(view: IDefaultView) {\n return !(\n view.viewArea.bottomRight.latitude === 0 &&\n view.viewArea.bottomRight.longitude === 0 &&\n view.viewArea.topLeft.latitude === 0 &&\n view.viewArea.topLeft.longitude === 0\n );\n }\n\n private navigateToMapAsync(mapId: IGuid, parentAreaId?: IGuid, selectedMapObjectId?: IGuid) {\n let navigation = `/task/${MapsTaskComponent.pluginId.toString()}/?id=${mapId.toString()}`;\n\n if (isNonEmptyGuid(parentAreaId)) {\n navigation += `&parent=${parentAreaId.toString()}`;\n }\n if (isNonEmptyGuid(selectedMapObjectId)) {\n navigation += `&mapObjectId=${selectedMapObjectId.toString()}`;\n }\n return this.navigationService.navigate(navigation);\n }\n\n private async setupPresets(defaultView: IDefaultView | null, mapEntity: IMapEntity) {\n this.defaultView = defaultView ?? undefined;\n const presetViews = await mapEntity.getViewAreaPresetsAsync();\n this.presets = presetViews ? Array.from(presetViews) : [];\n }\n\n private defaultViewToLatLngBounds(view: IDefaultView) {\n const bounds = new LatLngBounds(\n { lat: view.viewArea.bottomRight.latitude, lng: view.viewArea.topLeft.longitude },\n { lat: view.viewArea.topLeft.latitude, lng: view.viewArea.bottomRight.longitude }\n );\n return this.isDefaultViewValid(view) ? bounds : this.defaultMapBounds;\n }\n\n private async onMapLoaded() {\n this.keepViewWhenChangingMap = false;\n const currentMap = this.mapService.currentMapEntity;\n if (currentMap) {\n this.selectedFloor = this.getFloorInfoData(currentMap.id);\n if (this.floorInfo.floors.length && !this.selectedFloor) {\n this.clearMapFloorInfo();\n }\n\n const defaultView = await currentMap.getDefaultViewAsync();\n const setupPresetsPromise = this.setupPresets(defaultView, currentMap);\n\n let setupFloorsPromise: Promise | null = null;\n if (!this.floorSwitched) {\n setupFloorsPromise = this.setupFloors();\n }\n\n await Promise.all([setupPresetsPromise, setupFloorsPromise]);\n\n this.floorSwitched = false;\n this.updateMiniMapPosition();\n }\n }\n\n private getFloorInfoData(id?: IGuid): IFloor | null {\n return id ? this.floorInfo.floors.find((floor) => floor.id.equals(id)) ?? null : null;\n }\n\n private requestMapChange(id: IGuid | undefined, selectedMapObjectId?: IGuid) {\n // Set it immediately so that the UI can reflect the selected floor before the map is loaded\n this.selectedFloor = this.getFloorInfoData(id);\n this.clearSideContextContent();\n this.mapService.setStateViewArea(undefined);\n if (id) {\n this.navigateToMapAsync(id, this.floorInfo.parentAreaId ?? undefined, selectedMapObjectId).fireAndForget();\n }\n }\n\n private async onMapTypesLoaded() {\n let zoomOnSelectedMapObject = false;\n let selectedMapObject = this.mapService.stateSelectedMapObject?.toString();\n if (this.mapEntryParams?.selectedMapObjectId) {\n selectedMapObject = this.mapEntryParams.selectedMapObjectId;\n this.mapEntryParams.selectedMapObjectId = undefined;\n zoomOnSelectedMapObject = true;\n }\n\n if (this.mapService.currentMapEntity) {\n await this.insertAllMapObjects(this.mapService.currentMapEntity);\n }\n\n if (selectedMapObject) {\n if (zoomOnSelectedMapObject) {\n this.mapService.selectAndZoom(selectedMapObject);\n } else {\n this.mapService.map?.select(selectedMapObject);\n }\n }\n }\n\n private updateEntityBrowserSelectedId(id: IGuid) {\n this.mapSelectionBrowserFilter.selectedEntityIds.clear();\n this.mapSelectionBrowserFilter.selectedEntityIds.add(id);\n }\n\n private async search(searchText: string, searchInstanceId: IGuid): Promise {\n const searchResults: MapSearchInputItem[] = [];\n const currentMap = this.mapService.currentMapEntity;\n const layers = this.mapService.layers;\n if (!currentMap || !layers || !this.mapService.map) {\n return searchResults;\n }\n\n if (searchText.length > 0) {\n const context = new MapSearchContext();\n context.text = searchText;\n context.mapId = new SafeGuid(currentMap.id);\n const bounds = this.mapService.map.getBounds();\n\n // only apply the view area if the map is geolocalized otherwise, the controller's\n // validator will throw an exception\n if (this.mapService.currentMapEntity?.geoLocalized === true) {\n const nw = bounds.getNorthWest().wrap();\n const se = bounds.getSouthEast().wrap();\n const viewArea = new MapViewArea({\n topLeft: new GeoCoordinate({\n latitude: nw.lat,\n longitude: nw.lng,\n }),\n bottomRight: new GeoCoordinate({\n latitude: se.lat,\n longitude: se.lng,\n }),\n });\n\n context.viewArea = viewArea;\n }\n\n if (this.mapService.displayedLayerIds?.length > 0) {\n context.activeLayers = this.mapService.displayedLayerIds;\n }\n\n this.lastSearchInstanceId = searchInstanceId;\n const results = await this.searchService.getSearchResults(context);\n\n // Is a new search more recent in progress?\n if (!searchInstanceId.equals(this.lastSearchInstanceId)) {\n return searchResults;\n }\n\n if (results.length > 0) {\n results.forEach((group) => {\n group.results.forEach((item) => {\n const searchResult = new MapSearchInputItem(item.id.toString(), item.title);\n searchResult.groupName = group.groupName;\n searchResult.icon = item.icon as MeltedIcon;\n searchResult.navigation = item.navigation ?? undefined;\n searchResults.push(searchResult);\n });\n });\n } else {\n const searchResult = new MapSearchInputItem(SafeGuid.EMPTY.toString(), this.translateService.instant('STE_LABEL_NORESULTS') as string);\n searchResults.push(searchResult);\n }\n }\n\n return searchResults;\n }\n\n private onEventAdded(event: MapObjectAddOrUpdateEvent): void {\n if (!this.mapService.map?.isMapInitialized()) return;\n\n const displayedMapObjects: MapObjectView[] = this.mapService.filterEventsReceiverItems(Array.from(event.mapObjectIds), event.eventDisplayTime !== undefined);\n\n if (displayedMapObjects.length > 0) {\n const contentGroup = this.contentProviderService.getContentFromString(event.event);\n displayedMapObjects.forEach(async (mapObject) => {\n if (mapObject && contentGroup) {\n await this.displayPopupAsync(mapObject, contentGroup, {\n // If temporary popup, close on mouse leave\n closeOnMouseLeave: event.eventDisplayTime !== undefined,\n delayToCloseMs: event.eventDisplayTime,\n expandOnHover: true,\n });\n }\n });\n }\n }\n\n private onMapUnavailable(error: string) {\n this.mapUnavailableReason = error;\n this.toggleMapSelectionAsync().fireAndForget();\n }\n\n private onEventRemoved(event: MapObjectRemoveEvent): void {\n if (!this.mapService.map?.isMapInitialized() || !event.removeEventContentOnly) return;\n\n const lealfetMap = this.mapService.map;\n event.mapObjectIds.forEach((mapObjectId) => {\n const view = lealfetMap.getMapObjectView(mapObjectId.toString());\n if (view) {\n this.closePopup(view);\n }\n });\n }\n\n private onMapObjectUnselected(mapObjectView: MapObjectView) {\n // clear side pane\n this.activeContent = null;\n this.setSideContextMainContent(this.activeContent);\n }\n\n private async onMapObjectSelected(event: MapObjectEvent) {\n if (event.mapObjectView) {\n const mapObjectView = event.mapObjectView;\n const viewId = SafeGuid.parse(mapObjectView.id);\n\n // if any popup, close it\n this.closePopup(mapObjectView);\n\n const links: string[] = [];\n const supportsNavigation = this.viewSupportsNavigation(mapObjectView);\n if (supportsNavigation) {\n const mapObjects = await this.mapService.getMapObjectsFromIds(SafeGuid.createSet([viewId]));\n if (mapObjects) {\n const mapObject = mapObjects[0];\n links.push(...Array.from(mapObject.additionalLinks, (item) => item.toString()));\n }\n }\n\n const viewData = mapObjectView.data;\n if (viewData?.link && viewData.link.length > 0) {\n if (SafeGuid.isGuid(viewData.link)) {\n const link = SafeGuid.parse(viewData.link);\n if (!link.isEmpty()) {\n if (!links.find((item) => item === viewData.link)) {\n links.push(viewData.link);\n }\n }\n } else {\n links.push(viewData.link);\n }\n }\n\n if (links.length === 1) {\n // Check to see if the sidepane opened due to navigating to the link\n this.sideContextCurrentContent$.pipe(takeUntil(timer(500))).subscribe((content) => {\n if (content && this.mapService.map) {\n // Only center the map object in the case of a click if the map object would be behind the sidepane\n if (event.originalEvent?.type === 'click') {\n const layerPoint = (event.originalEvent as LeafletMouseEvent).containerPoint as Point | undefined;\n const container = this.mapService.map.getContainer();\n if (layerPoint && container && layerPoint.x >= container.clientWidth - SidePaneComponent.WidthPx) {\n this.mapService.map.centerMapObject(mapObjectView.id);\n }\n } else {\n // If it's not a click and the map object has been selected programmatically, we want to center the map object.\n this.mapService.map.centerMapObject(mapObjectView.id);\n }\n }\n });\n this.navigateToLink(links[0], supportsNavigation)\n .then(() => {\n this.mapService.setStateSelectedMapObject(viewId);\n })\n .fireAndForget();\n } else if (links.length > 0) {\n this.displayLinksContextMenu(links);\n }\n }\n }\n\n private onMouseEnter(mapObjectView: MapObjectView) {\n if (mapObjectView.options.selected || mapObjectView.isPopupOpen()) {\n return;\n }\n if (!this.hoverTimeouts.has(mapObjectView.id)) {\n const timeout = this.window.setTimeout(async () => {\n if (mapObjectView && !mapObjectView.options.selected) {\n const link = mapObjectView?.data?.link;\n if (link) {\n const contentGroup = await this.contentProviderService.getContentAsync(link, KnownContentContext.Map);\n if (contentGroup && !mapObjectView.options.selected) {\n this.activeContent = contentGroup;\n await this.displayPopupAsync(mapObjectView, contentGroup, {\n closeOnMouseLeave: true,\n expandOnHover: false,\n });\n }\n }\n }\n this.hoverTimeouts.delete(mapObjectView.id);\n }, 500);\n\n this.hoverTimeouts.set(mapObjectView.id, timeout);\n }\n }\n\n private onMouseLeave(mapObjectView: MapObjectView) {\n const timeout = this.hoverTimeouts.get(mapObjectView.id);\n if (timeout) {\n clearTimeout(timeout);\n this.hoverTimeouts.delete(mapObjectView.id);\n }\n }\n\n private displayLinksContextMenu(links: string[]): void {\n this.contextMenuLinks$ = this.getContextMenuFromLinks(links).pipe(\n tap(() => {\n // be sure to clear selection as we have not yet selected any source (since multiple links for this item).\n this.mapService.setStateSelectedMapObject(undefined);\n this.mapService.map?.clearSelection();\n })\n );\n }\n\n private getContextMenuFromLinks(links: string[]): Observable {\n const query = new EntityQuery();\n query.fields.add(EntityFields.nameField);\n query.fields.add(EntityFields.entityTypeField);\n\n for (const link of links) {\n const tryGuid = SafeGuid.tryParse(link);\n if (tryGuid.success) {\n query.guids.add(tryGuid.value);\n }\n }\n\n const getEntities$ = from(this.scClient?.getEntitiesAsync(Entity, query, null, null));\n return getEntities$.pipe(\n tap(() => this.isLoadingContextMenuSubject.next(true)),\n tap(() => {\n if (!links.length) {\n this.linkContextMenu?.close().fireAndForget();\n }\n }),\n filter(() => links.length > 0),\n tap(() => this.linkContextMenu?.show().fireAndForget()),\n map((entities) =>\n entities.map((entity) => {\n return {\n id: entity.id.toString(),\n text: entity.name,\n icon: ('gen-ico-' + (this.iconService.getEntityTypeIcon(entity.entityType) as string)) as MeltedIcon,\n actionItem: {\n execute: (item: ContextMenuItem) => this.onLinkClick(item),\n },\n };\n })\n ),\n tap((menuItems) => {\n if (menuItems.length === 0) {\n this.linkContextMenu?.close().fireAndForget();\n }\n }),\n tap(() => this.isLoadingContextMenuSubject.next(false))\n );\n }\n\n private clearSideContextContent() {\n this.setSideContextMainContent(null);\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const MapContentTypes = Constants({\n Map: SafeGuid.parse('969BFFA3-C451-4707-B07D-CF528C060DBD'),\n MobileUser: SafeGuid.parse('752D0B6F-734F-4074-8E81-F6AC9D53F256'),\n});\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor } from '@genetec/gelato';\nimport { Marker, MapObject, Polyline } from '@genetec/web-maps';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { NavigationService } from '@modules/shared/services/navigation/navigation.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { IWebMapObject } from '../../controllers/map.controller.data';\nimport { MapContentTypes } from '../../enumerations/maps-content-types';\nimport { MapService } from '../../services/map/map-service';\nimport { MapsTaskComponent } from '../maps-task/maps-task.component';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nconst isContentSupported = (content: Content): boolean => {\n return !!(content?.contextContent && content.type.equals(MapContentTypes.Map));\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-maps-widget',\n templateUrl: './maps-widget.component.html',\n styleUrls: ['./maps-widget.component.scss'],\n providers: [MapService],\n})\n@InternalContentPluginDescriptor({\n type: MapsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: MapsWidgetComponent.pluginId, priority: 2.5 } as PluginComponentExposure,\n isContentSupported,\n requirements: {\n features: [KnownFeatures.mapsId],\n licenses: [KnownLicenses.maps],\n globalPrivileges: [KnownPrivileges.mapMonitoringTaskPrivilege],\n },\n})\nexport class MapsWidgetComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('0B1A00AB-DEE2-42FD-BB54-30C559560051');\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n\n public content?: Content;\n public dataContext: unknown;\n\n public canNavigate = false;\n\n private mapObject: MapObject | undefined;\n\n constructor(public mapService: MapService, private navigationService: NavigationService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n setTimeout(async () => {\n if (this.content) {\n await this.mapService.initializeMap({\n mapId: SafeGuid.parse(this.content.source),\n withEvents: false,\n });\n this.mapService.onMapTypesLoaded$.pipe(untilDestroyed(this)).subscribe(() => this.onMapTypesLoaded());\n }\n }, 300); // wait until side pane aimation finishes... else the leaflet map doesn't paint appropriately.\n }\n\n ngOnDestroy() {\n this.mapService.destroy();\n super.ngOnDestroy();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public async onOpenMap(): Promise {\n if (this.mapObject && this.content) {\n const navigation = `/task/${MapsTaskComponent.pluginId.toString()}/?id=${this.content.source}&mapObjectId=${this.mapObject.id.toString()}`;\n const contextService = this.dataContext as ContentService;\n await this.navigationService.navigate(navigation);\n contextService.clearMainContent();\n }\n }\n\n private async onMapTypesLoaded() {\n let mapObjects!: IWebMapObject[];\n const params = this.content?.parameters;\n if (this.mapService.currentMapEntity) {\n if (params?.hasField('mapobjectids')) {\n const mapObjectIds = params?.getFieldArrayGuid('mapobjectids');\n if (mapObjectIds) {\n mapObjects = await this.mapService.getMapObjectsFromIds(SafeGuid.createSet(Array.from(mapObjectIds)));\n }\n } else if (params?.hasField('mapobjects')) {\n mapObjects = params?.getField>('mapobjects').map((item) => item);\n }\n\n if (mapObjects?.length > 0) {\n // register notification filters only for states\n const distinct: IGuid[] = [];\n const types = mapObjects.map((item) => SafeGuid.parse(item.type.toString()));\n types.forEach((typeId) => {\n if (distinct.every((item) => !item.equals(typeId))) {\n distinct.push(typeId);\n }\n });\n await this.mapService.updateNotificationFilterFromTypes(distinct);\n\n // insert them\n this.mapService.insertMapObjects(mapObjects, true);\n const ids = Array.from(mapObjects).map((item) => SafeGuid.from(item.guid));\n this.fitMoViews(ids);\n this.canNavigate = true;\n }\n }\n }\n\n private fitMoViews(ids: Iterable | undefined) {\n if (ids && this.mapService.map?.isMapInitialized()) {\n const idArray = Array.from(ids);\n if (idArray.length > 0) {\n for (const mapObjectId of idArray) {\n if (mapObjectId) {\n const view = this.mapService.map.getMapObjectView(mapObjectId.toTypescriptGuid());\n this.mapObject = view?.data;\n\n if (view instanceof Marker) {\n const offset = 0.002;\n this.mapService.map.fitBounds([\n [view.getLatLng().lat + offset, view.getLatLng().lng - offset],\n [view.getLatLng().lat - offset, view.getLatLng().lng + offset],\n ]);\n break;\n } else if (view instanceof Polyline) {\n this.mapService.map.fitBounds(view.getBounds().pad(0.25));\n break;\n }\n }\n }\n }\n }\n }\n}\n","
    \n {{ 'STE_MESSAGE_ERROR_DEFAULTMAPUNDEFINED' | translate }} \n \n \n \n
    \n","import { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CommandContext } from '../../interfaces/plugins/public/plugin-services-public.interface';\n\nexport interface EntityCommandContext extends CommandContext {\n entityCache?: IEntityCacheTask;\n}\n\nexport const isEntityCommandContext = (instance: unknown): instance is EntityCommandContext => {\n return isOfType(instance, 'entityCache');\n};\n","import { OnDestroy, Inject, Injectable } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IEntityExtensions } from 'RestClient/Client/Interface/IEntityExtensions';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { FeatureFlag } from '@modules/feature-flags/feature-flag';\nimport { ContextTypes } from '../../interfaces/plugins/public/context-types';\nimport { SubscriptionCollection } from '../../utilities/subscription-collection';\nimport { LanguageService } from '../language/language.service';\nimport {\n CommandProvider,\n CommandsSubscription,\n COMMANDS_SERVICE,\n CommandsService,\n CommandContext,\n CommandBindings,\n MapContext,\n ExecuteCommandHandler,\n ExecuteCommandData,\n CommandDisplay,\n CommandRequirements,\n FEATURES_SERVICE,\n} from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { Content, PluginCommand } from '../../interfaces/plugins/public/plugin-public.interface';\nimport { FeaturesService } from '../features/features.service';\nimport { AdvancedSettingsService } from '../advanced-settings/advanced-settings.service';\nimport { InternalCommandsService } from './commands.service';\nimport { isEntityCommandContext } from './entity-command-context';\nimport { CommandsUsageContext } from './commands-usage/commands-usage-context';\nexport interface CommandArgs {\n content?: Content;\n entity?: IEntity;\n entityId?: IGuid;\n mapContext?: MapContext;\n specificData?: any;\n}\n\nexport interface CommandDescriptor {\n id: IGuid;\n nameResourceId?: string;\n icon?: MeltedIcon;\n color?: string;\n tooltipResourceId?: string;\n sectionNameResourceId?: string;\n groupNameResourceId?: string;\n groupIcon?: MeltedIcon;\n keyBinding?: string;\n requirements?: CommandRequirements;\n}\n\nexport const arePrivilegesGrantedAsync = async (\n scClient: WebAppClient,\n requiredPrivileges: Set,\n grantedPrivileges?: Set,\n entity?: IEntity,\n entityId?: IGuid,\n entityCache?: IEntityCacheTask\n): Promise => {\n if (requiredPrivileges.size === 0) {\n return true;\n }\n\n let privilegesToCheck: Set;\n if (grantedPrivileges && grantedPrivileges.size > 0) {\n // Gets the privileges not already in granted privileges\n privilegesToCheck = SafeGuid.createSet(setFilter(requiredPrivileges, (privilege) => !setSome(grantedPrivileges, (granted) => granted.equals(privilege))));\n\n // If all required privileges were in granted privileges, privileges are granted\n if (privilegesToCheck.size === 0) {\n return true;\n }\n } else {\n privilegesToCheck = requiredPrivileges;\n }\n\n let checkedEntity: IEntity | undefined | null = entity;\n if (!checkedEntity && isNonEmptyGuid(entityId)) {\n if (entityCache) {\n checkedEntity = await entityCache.getEntityAsync(Entity, entityId);\n } else {\n checkedEntity = await scClient.getEntityAsync(Entity, entityId);\n }\n }\n if (checkedEntity) {\n const result = await checkedEntity.hasPrivilegesAsync(SafeGuid.createSet(privilegesToCheck));\n return result ? true : false;\n }\n\n for (const requiredPrivilege of privilegesToCheck) {\n if (!scClient.isGlobalPrivilegeGranted(requiredPrivilege)) {\n return false;\n }\n }\n\n return false;\n};\n\n@Injectable()\nexport abstract class CommandProviderBase implements OnDestroy, CommandProvider {\n protected commandsSubscription!: CommandsSubscription;\n protected internalCommandDescriptors!: Map;\n protected isUserAdmin = false;\n protected readonly scClient: WebAppClient;\n protected readonly subscriptions = new SubscriptionCollection();\n\n private areCommandsRegistered = false;\n\n public get priority(): number {\n return 100;\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet();\n }\n\n public get requiredPrivileges(): Set {\n const descriptors = Array.from(this.commandDescriptors.values());\n const privileges = SafeGuid.createSet();\n for (const descriptor of descriptors) {\n if (descriptor.requirements?.requiredPrivileges) {\n for (const privilege of descriptor.requirements.requiredPrivileges) {\n privileges.add(privilege);\n }\n }\n }\n return privileges;\n }\n\n protected get commandDescriptors(): Map {\n return SafeGuid.createMap();\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) protected commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) protected featuresService: FeaturesService,\n protected translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n this.scClient = scClientService?.scClient;\n this.subscriptions.add(\n this.scClient.onLogonStateChanged((args) => {\n if (args.loggedOn()) {\n this.initialize();\n }\n })\n );\n\n this.commandsService.registerCommandProvider(this);\n\n this.subscriptions.add(\n languageService.ready.subscribe(() => {\n if (!this.areCommandsRegistered) {\n this.registerCommands();\n this.subscribeCommands();\n this.areCommandsRegistered = true;\n }\n })\n );\n }\n\n public ngOnDestroy() {\n this.commandsSubscription.unsubscribe();\n this.subscriptions.unsubscribeAll();\n }\n\n protected areCommandContentRequirementsMet(supportedContentTypes: Set, content: Content): boolean {\n if (!setSome(supportedContentTypes, (contentType) => content.type.equals(contentType))) {\n return false;\n }\n return true;\n }\n\n protected async areCommandRequirementsMetAsync(commandId: IGuid, commandContext?: CommandContext, commandArgs?: CommandArgs): Promise {\n const descritor = this.commandDescriptors.get(commandId);\n if (!descritor) {\n return Promise.resolve(false);\n }\n\n const requirements = this.extractRequirements(commandId);\n if (!requirements) {\n return Promise.resolve(true);\n }\n\n if (requirements.requiredFeatures && requirements.requiredFeatures.size > 0) {\n const features = await this.featuresService.getFeaturesAsync();\n if (!setEvery(requirements.requiredFeatures, (x) => features.has(x))) {\n return false;\n }\n }\n\n if (requirements.enabledFeatureFlags && requirements.enabledFeatureFlags.size > 0) {\n if (!setEvery(requirements.enabledFeatureFlags, (featureFlag) => featureFlag.isEnabled(this.advancedSettingsService))) {\n return false;\n }\n }\n\n const content = commandArgs?.content ?? this.extractArgs(commandContext)?.content;\n if (content) {\n if (requirements.supportedContentTypes) {\n if (!this.areCommandContentRequirementsMet(requirements.supportedContentTypes, content)) {\n return Promise.resolve(false);\n }\n }\n }\n return Promise.resolve(true);\n }\n\n protected async arePrivilegesGrantedAsync(requiredPrivileges: Set, grantedPrivileges?: Set): Promise {\n // return this.isUserAdmin ? true : await arePrivilegesGrantedAsync(this.scClient, requiredPrivileges, grantedPrivileges);\n\n if (this.isUserAdmin) {\n return true;\n }\n\n return await arePrivilegesGrantedAsync(this.scClient, requiredPrivileges, grantedPrivileges);\n }\n\n protected createCommand(commandDescriptor: CommandDescriptor): PluginCommand {\n let name: () => string;\n if (commandDescriptor.nameResourceId) {\n name = () => this.translateService?.instant(commandDescriptor.nameResourceId as string) as string;\n } else {\n name = () => '';\n }\n\n let icon = MeltedIcon.None;\n if (commandDescriptor.icon) {\n icon = commandDescriptor.icon;\n }\n\n let tooltip: (() => string) | undefined;\n if (commandDescriptor.tooltipResourceId) {\n tooltip = () => this.translateService?.instant(commandDescriptor.tooltipResourceId as string) as string;\n }\n\n const command: PluginCommand = {\n id: commandDescriptor.id,\n name,\n icon,\n tooltip,\n keyBinding: commandDescriptor.keyBinding,\n groupIcon: commandDescriptor.groupIcon,\n };\n if (commandDescriptor.color) {\n command.color = () => commandDescriptor.color as string;\n }\n if (commandDescriptor.groupNameResourceId) {\n command.groupName = () => this.translateService?.instant(commandDescriptor.groupNameResourceId as string) as string;\n }\n if (commandDescriptor.sectionNameResourceId) {\n command.sectionName = () => this.translateService?.instant(commandDescriptor.sectionNameResourceId as string) as string;\n }\n return command;\n }\n\n protected extractArgs(commandContext?: CommandContext): CommandArgs {\n const args: CommandArgs = {};\n if (commandContext) {\n if (commandContext.data !== undefined) {\n if (commandContext.type.equals(ContextTypes.Content)) {\n args.content = commandContext.data as Content;\n args.entityId = SafeGuid.parse(args.content.source);\n } else if (commandContext.type.equals(ContextTypes.Map)) {\n args.mapContext = commandContext.data as MapContext;\n } else if (commandContext.type.equals(ContextTypes.Entity)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const entity = commandContext.data;\n if (IEntityExtensions.isEntity(entity)) {\n args.entity = entity;\n args.entityId = entity.id;\n }\n } else if (commandContext.type.equals(ContextTypes.EntityId)) {\n if (isNonEmptyGuid(commandContext.data)) {\n args.entityId = commandContext.data;\n }\n } else if (commandContext.type.equals(ContextTypes.Specific)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n args.specificData = commandContext.data;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const entityId = args.specificData.entityId;\n if (isNonEmptyGuid(entityId)) {\n args.entityId = entityId;\n }\n }\n }\n }\n return args;\n }\n\n protected extractRequirements(commandId: IGuid): CommandRequirements {\n const requirements: CommandRequirements = {};\n\n const descritor = this.commandDescriptors.get(commandId);\n const internalCommandsService = this.commandsService as InternalCommandsService;\n const additionnalRequirements = internalCommandsService.getAdditionnalRequirements(commandId);\n if (descritor?.requirements) {\n additionnalRequirements?.push(descritor.requirements);\n }\n\n for (const req of additionnalRequirements) {\n if (req.requiredPrivileges) {\n requirements.requiredPrivileges = requirements.requiredPrivileges ?? SafeGuid.createSet();\n for (const privilege of req.requiredPrivileges) {\n requirements.requiredPrivileges.add(privilege);\n }\n }\n if (req.requiredFeatures) {\n requirements.requiredFeatures = requirements.requiredFeatures ?? SafeGuid.createSet();\n for (const feature of req.requiredFeatures) {\n requirements.requiredFeatures.add(feature);\n }\n }\n if (req.supportedContentTypes) {\n requirements.supportedContentTypes = requirements.supportedContentTypes ?? SafeGuid.createSet();\n for (const type of req.supportedContentTypes) {\n requirements.supportedContentTypes.add(type);\n }\n }\n if (req.enabledFeatureFlags) {\n requirements.enabledFeatureFlags = requirements.enabledFeatureFlags ?? new Set();\n for (const featureFlag of req.enabledFeatureFlags) {\n requirements.enabledFeatureFlags.add(featureFlag);\n }\n }\n }\n return requirements;\n }\n\n protected fillCommandRequirements(requirements: CommandRequirements): CommandRequirements {\n return requirements;\n }\n\n protected getCommands(): PluginCommand[] {\n const commands: PluginCommand[] = [];\n for (const descriptor of this.commandDescriptors.values()) {\n commands.push(this.createCommand(descriptor));\n }\n return commands;\n }\n\n protected initialize(): void {\n if (this.scClient) {\n const userInfo = this.scClient.currentUserInfo;\n if (userInfo) {\n this.isUserAdmin = userInfo.isAdministrator;\n }\n }\n }\n\n protected invalidateCommandCanExecute(commandId: IGuid, commandContext: CommandContext): void {\n if (commandContext instanceof CommandsUsageContext) {\n commandContext.invalidateCanExecute(commandId);\n }\n }\n\n protected invalidateCommandDisplay(commandId: IGuid, commandContext: CommandContext): void {\n if (commandContext instanceof CommandsUsageContext) {\n commandContext.invalidateDisplay(commandId);\n }\n }\n\n protected registerCommands(): void {\n this.commandsService.registerCommands(this.getCommands());\n this.subscribeCommands();\n }\n\n protected safeCanExecuteCommand(canExecuteCommandFunction: (commandContext: CommandContext) => boolean, commandContext?: CommandContext): boolean {\n if (!commandContext) {\n return false;\n }\n return canExecuteCommandFunction(commandContext);\n }\n\n protected async safeCanExecuteCommandAsync(canExecuteCommandFunction: (commandContext: CommandContext) => Promise, commandContext?: CommandContext): Promise {\n if (!isEntityCommandContext(commandContext)) {\n return false;\n }\n return await canExecuteCommandFunction(commandContext);\n }\n\n protected safeExecuteCommand(executeCommandFunction: ExecuteCommandHandler, executeCommandData: ExecuteCommandData): void {\n const commandContext = executeCommandData.commandContext;\n if (!commandContext) {\n executeCommandData.isHandled = false;\n return;\n }\n executeCommandFunction(executeCommandData);\n if (executeCommandData.isHandled) {\n executeCommandData.event?.stopPropagation();\n executeCommandData.event?.preventDefault();\n }\n }\n\n protected safeGetCommandDisplay(\n getCommandDisplayFunction: (commandContext: CommandContext) => CommandDisplay | undefined,\n commandContext?: CommandContext\n ): CommandDisplay | undefined {\n if (!commandContext) {\n return;\n }\n return getCommandDisplayFunction(commandContext);\n }\n\n protected async safeGetCommandDisplayAsync(\n getCommandDisplayFunction: (commandContext: CommandContext) => Promise,\n commandContext?: CommandContext\n ): Promise {\n if (!commandContext) {\n return;\n }\n return await getCommandDisplayFunction(commandContext);\n }\n\n protected safeIsCommandAvailable(isCommandAvailableFunction: (commandContext: CommandContext) => boolean, commandContext?: CommandContext): boolean {\n return this.safeCanExecuteCommand(isCommandAvailableFunction, commandContext);\n }\n\n protected async safeIsCommandAvailableAsync(\n isCommandAvailableFunction: (commandContext: CommandContext) => Promise,\n commandContext?: CommandContext\n ): Promise {\n return await this.safeCanExecuteCommandAsync(isCommandAvailableFunction, commandContext);\n }\n\n protected setCommandCanExecute(commandId: IGuid, commandContext: CommandContext, canExecute: boolean): void {\n if (commandContext instanceof CommandsUsageContext) {\n commandContext.invalidateCanExecute(commandId, canExecute);\n }\n }\n\n protected setCommandDisplay(commandId: IGuid, commandContext: CommandContext, commandDisplay: CommandDisplay): void {\n if (commandContext instanceof CommandsUsageContext) {\n commandContext.invalidateDisplay(commandId, commandDisplay);\n }\n }\n\n protected subscribeCommands(): void {\n // unsubscribe if any\n this.commandsSubscription?.unsubscribe();\n\n if (this.commandsService) {\n const bindings = new CommandBindings();\n this.fillCommandBindings(bindings);\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: this.priority,\n });\n }\n }\n\n public abstract getAvailableCommandIdsAsync(contextArgs: CommandContext): Promise;\n protected abstract fillCommandBindings(bindings: CommandBindings): void;\n}\n","import { Entity } from '../Model/Entity';\nimport { IEntity } from './IEntity';\n\nexport class IEntityExtensions {\n public static isEntity(object: any): object is IEntity {\n if (object instanceof Object && 'isOfType' in object) {\n const isOfType = object['isOfType'];\n if (typeof isOfType === 'function' && isOfType.length === 1) {\n try {\n return object.isOfType(Entity);\n } catch {}\n }\n }\n return false;\n }\n}\n","import { SafeGuid, IGuid } from 'safeguid';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport {\n CommandContext,\n CommandDisplay,\n CommandRequirements,\n EntityCommandRequirements,\n ExecuteCommandData,\n} from '../../interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from './commands.service';\nimport { EntityCommandContext, isEntityCommandContext } from './entity-command-context';\nimport { CommandArgs, CommandDescriptor, CommandProviderBase, arePrivilegesGrantedAsync } from './command-provider-base';\nimport { EntityCommandProvider } from './entity-command-provider';\n\nexport interface ExecuteEntityCommandData extends ExecuteCommandData {\n commandContext: EntityCommandContext;\n}\n\nexport const areFieldsDownloaded = (fieldObject: IFieldObject, fields: Set): boolean => {\n for (const field of fields) {\n if (!fieldObject.hasField(field)) {\n return false;\n }\n }\n return true;\n};\n\nexport abstract class EntityCommandProviderBase extends CommandProviderBase implements EntityCommandProvider {\n public get requiredEntityFields(): Set {\n return new Set();\n }\n\n protected get commandDescriptors(): Map {\n return SafeGuid.createMap();\n }\n\n protected async areCommandRequirementsMetAsync(commandId: IGuid, commandContext?: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n if (!(await super.areCommandRequirementsMetAsync(commandId, commandContext, commandArgs))) {\n return false;\n }\n\n const requirements = this.extractRequirements(commandId) as EntityCommandRequirements;\n if (!requirements) {\n return true;\n }\n\n let areContentRequirementsMet = false;\n let grantedPrivileges: Set | undefined;\n const args = commandArgs ?? this.extractArgs(commandContext);\n const content = args.content;\n if (content) {\n if (requirements.supportedContentTypes) {\n areContentRequirementsMet = this.areCommandContentRequirementsMet(requirements.supportedContentTypes, content);\n if (!areContentRequirementsMet) {\n return false;\n }\n }\n grantedPrivileges = SafeGuid.createSet(content.grantedPrivileges);\n }\n\n let entity: IEntity | null = null;\n if (\n (requirements.supportedEntityTypes && !areContentRequirementsMet) ||\n (requirements.requiredPrivileges && (!grantedPrivileges || grantedPrivileges.size === 0)) ||\n requirements.isFederated !== undefined\n ) {\n entity = await this.getEntityAsync(Entity, undefined, args.entity, args.entityId, commandContext?.entityCache);\n if (!entity || (requirements.isFederated !== undefined && entity.isFederated !== requirements.isFederated)) {\n return false;\n }\n }\n\n if (requirements.supportedEntityTypes && !areContentRequirementsMet) {\n if (!entity || !setSome(requirements.supportedEntityTypes, (entityType) => entity?.entityType === entityType)) {\n return false;\n }\n }\n\n if (requirements.requiredPrivileges) {\n if (!(await this.arePrivilegesGrantedAsync(requirements.requiredPrivileges, grantedPrivileges, entity ? entity : undefined))) {\n return false;\n }\n }\n\n return true;\n }\n\n protected extractRequirements(commandId: IGuid): CommandRequirements {\n const requirements = super.extractRequirements(commandId) as EntityCommandRequirements;\n\n const descritor = this.commandDescriptors.get(commandId);\n const internalCommandsService = this.commandsService as InternalCommandsService;\n const additionnalRequirements = internalCommandsService.getAdditionnalRequirements(commandId) as EntityCommandRequirements[];\n if (descritor?.requirements) {\n additionnalRequirements?.push(descritor.requirements);\n }\n\n for (const req of additionnalRequirements) {\n if (req.supportedEntityTypes) {\n requirements.supportedEntityTypes = requirements.supportedEntityTypes ?? new Set();\n for (const type of req.supportedEntityTypes) {\n requirements.supportedEntityTypes.add(type);\n }\n }\n }\n\n return requirements;\n }\n\n protected async arePrivilegesGrantedAsync(\n requiredPrivileges: Set,\n grantedPrivileges?: Set,\n entity?: IEntity,\n entityId?: IGuid,\n entityCache?: IEntityCacheTask\n ): Promise {\n if (this.isUserAdmin) {\n return true;\n }\n return await arePrivilegesGrantedAsync(this.scClient, requiredPrivileges, grantedPrivileges, entity, entityId, entityCache);\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n return super.fillCommandRequirements(requirements);\n }\n\n protected async extractEntityAsync(\n constructor: new () => TEntity,\n commandContext: EntityCommandContext,\n commandArgs?: CommandArgs\n ): Promise {\n let entityId: IGuid | undefined;\n\n const args = commandArgs ?? this.extractArgs(commandContext);\n\n if (!args.entity) {\n entityId = args.entityId;\n }\n\n return this.getEntityAsync(constructor, undefined, args.entity, args.entityId, commandContext.entityCache);\n }\n\n protected async getEntityAsync(\n constructor: new () => TEntity,\n requiredFields?: Set,\n entity?: IEntity,\n entityId?: IGuid,\n entityCache?: IEntityCacheTask\n ): Promise {\n const fields = requiredFields ?? this.requiredEntityFields;\n\n if (entity && areFieldsDownloaded(entity, fields)) {\n return entity as TEntityInterface; //TODO: Fix the typing. Do not use \"as\".\n }\n\n let value: TEntityInterface | null = null;\n\n if (isNonEmptyGuid(entityId)) {\n if (entityCache) {\n value = await entityCache.getEntityAsync(constructor, entityId);\n } else {\n value = await this.scClient.getEntityAsync(constructor, entityId, null, null, this.fieldSetToString(fields));\n }\n }\n\n return value;\n }\n\n protected async prefetchPrivileges(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n if (this.requiredPrivileges.size === 0) {\n return;\n }\n\n const args = commandArgs || this.extractArgs(commandContext);\n if (args.content) {\n return;\n }\n\n await this.arePrivilegesGrantedAsync(this.requiredPrivileges, undefined, args.entity, args.entityId, commandContext.entityCache);\n }\n\n protected safeCanExecuteEntityCommand(canExecuteCommandFunction: (commandContext: EntityCommandContext) => boolean, commandContext?: CommandContext): boolean {\n if (!isEntityCommandContext(commandContext)) {\n return false;\n }\n return canExecuteCommandFunction(commandContext);\n }\n\n protected async safeCanExecuteEntityCommandAsync(\n canExecuteCommandFunction: (commandContext: EntityCommandContext) => Promise,\n commandContext?: CommandContext\n ): Promise {\n // TODO FM - TBFixed\n // if (!isEntityCommandContext(commandContext)) {\n // return false;\n // }\n return await canExecuteCommandFunction(commandContext as EntityCommandContext);\n }\n\n protected safeExecuteEntityCommand(executeCommandFunction: (executeCommandData: ExecuteEntityCommandData) => void, executeCommandData: ExecuteCommandData): void {\n // TODO FM - TBFixed\n // const commandContext = executeCommandData.commandContext;\n // if (!isEntityCommandContext(commandContext)) {\n // executeCommandData.isHandled = false;\n // return;\n // }\n executeCommandFunction(executeCommandData as ExecuteEntityCommandData);\n if (executeCommandData.isHandled) {\n executeCommandData.event?.stopPropagation();\n executeCommandData.event?.preventDefault();\n }\n }\n\n protected safeGetEntityCommandDisplay(\n getCommandDisplayFunction: (commandContext: EntityCommandContext) => CommandDisplay | undefined,\n commandContext?: CommandContext\n ): CommandDisplay | undefined {\n if (!isEntityCommandContext(commandContext)) {\n return;\n }\n return getCommandDisplayFunction(commandContext);\n }\n\n protected async safeGetEntityCommandDisplayAsync(\n getCommandDisplayFunction: (commandContext: EntityCommandContext) => Promise,\n commandContext?: CommandContext\n ): Promise {\n if (!isEntityCommandContext(commandContext)) {\n return;\n }\n return await getCommandDisplayFunction(commandContext);\n }\n\n protected safeIsEntityCommandAvailable(isCommandAvailableFunction: (commandContext: EntityCommandContext) => boolean, commandContext?: CommandContext): boolean {\n return this.safeCanExecuteEntityCommand(isCommandAvailableFunction, commandContext);\n }\n\n protected async safeIsEntityCommandAvailableAsync(\n isCommandAvailableFunction: (commandContext: EntityCommandContext) => Promise,\n commandContext?: CommandContext\n ): Promise {\n return await this.safeCanExecuteEntityCommandAsync(isCommandAvailableFunction, commandContext);\n }\n\n protected async updateEntityAsync(entity: IEntity, entityCache?: IEntityCacheTask): Promise {\n if (entityCache) {\n await entityCache.updateAsync(entity);\n } else {\n await this.scClient.updateAsync(entity);\n }\n }\n\n /**\n * Helper method to properly process requested fields in an entity query.\n *\n * @param fields set of fields to parse\n * @returns an array to string of fields\n */\n private fieldSetToString(fields: Set): string {\n if (!fields) {\n return '';\n }\n return [...fields.values()].toString();\n }\n\n public abstract getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { CollapsedReasons, MiniMap, MiniMapStateEnum } from '@genetec/web-maps';\nimport { MapOptionsComponent } from '@modules/general/components/options/maps-options/maps-options.component';\nimport { MapCommands } from '@modules/maps/enumerations/map-commands';\nimport { MapContentTypes } from '@modules/maps/enumerations/maps-content-types';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport {\n CommandBindings,\n CommandDisplay,\n CommandsService,\n COMMANDS_SERVICE,\n FEATURES_SERVICE,\n USER_SETTINGS_SERVICE,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { CommandArgs, CommandDescriptor } from '@modules/shared/services/commands/command-provider-base';\nimport { EntityCommandContext } from '@modules/shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase } from '@modules/shared/services/commands/entity-command-provider-base';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { UserSettingsService } from '@modules/shared/services/user-settings/user-settings.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { StateMapService } from './state-map-service';\n\n@Injectable()\nexport class MapCommandsProvider extends EntityCommandProviderBase {\n constructor(\n @Inject(COMMANDS_SERVICE) protected commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n protected translateService: TranslateService,\n private mapService: StateMapService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: UserSettingsService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(MapCommands.ToggleMinimap, {\n id: MapCommands.ToggleMinimap,\n nameResourceId: this.translateService.instant('STE_ACTION_SHOW_MINIMAP') as string,\n icon: MeltedIcon.Rectangle,\n requirements: this.fillCommandRequirements({ supportedContentTypes: SafeGuid.createSet([MapContentTypes.Map]) }),\n keyBinding: 'SHIFT.M',\n });\n\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n if (await this.isToggleMiniMapCommandAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(MapCommands.ToggleMinimap);\n }\n\n return Promise.resolve(commandIds);\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: MapCommands.ToggleMinimap,\n isCommandAvailableHandler: (commandContext) => this.safeCanExecuteEntityCommand(() => this.isShowMiniMapCommandAvailable(), commandContext),\n executeCommandHandler: (executeCommandData) => this.safeExecuteEntityCommand(() => this.toggleMiniMap(), executeCommandData),\n getCommandDisplayHandler: (commandContext) => this.safeGetEntityCommandDisplay(() => this.getShowMiniMapDisplay(), commandContext),\n });\n }\n\n private getMiniMapState(): MiniMapStateEnum | null {\n return this.mapService?.getMiniMap()?.getState() ?? null;\n }\n\n private toggleMiniMap() {\n let isMiniMapDisabled = false;\n const miniMapState = this.getMiniMapState();\n switch (miniMapState) {\n case MiniMapStateEnum.Disabled:\n this.mapService.map?.miniMap?.show();\n break;\n case MiniMapStateEnum.Enabled:\n this.mapService.map?.miniMap?.hide();\n isMiniMapDisabled = true;\n break;\n }\n\n this.userSettingsService.set(OptionTypes.Maps, MapOptionsComponent.disableMinimapSettingId, isMiniMapDisabled);\n this.userSettingsService.apply().fireAndForget();\n }\n\n private isShowMiniMapCommandAvailable(): boolean {\n return this.getMiniMapState() !== MiniMapStateEnum.Collapsed;\n }\n\n private getShowMiniMapDisplay(): CommandDisplay | undefined {\n const miniMapState = this.getMiniMapState();\n switch (miniMapState) {\n case MiniMapStateEnum.Disabled:\n return {\n name: () => this.translateService.instant('STE_ACTION_SHOW_MINIMAP') as string,\n icon: MeltedIcon.Rectangle,\n };\n case MiniMapStateEnum.Enabled:\n return {\n name: () => this.translateService.instant('STE_ACTION_DISABLE_MINIMAP') as string,\n };\n }\n\n return undefined;\n }\n\n private async isToggleMiniMapCommandAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return (\n commandContext.type.equals(ContextTypes.Map) &&\n this.getMiniMapState() != null &&\n (await this.areCommandRequirementsMetAsync(MapCommands.ToggleMinimap, commandContext, commandArgs))\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { baseUrl, MapsProviderClient } from '@modules/map/api/api';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { GetBaseUriForCodeGen } from '@src/app/utilities/base-uri-getter';\nimport { MAPS_BOTTOM_CONTEXT_SERVICE } from '../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SharedModule } from '../shared/shared.module';\nimport { MapControlsComponent } from './components/map-controls/map-controls.component';\nimport { MapPopupComponent } from './components/map-popup/map-popup.component';\nimport { MapsBottomPaneComponent } from './components/maps-bottom-pane/maps-bottom-pane.component';\nimport { MapsSidePaneComponent } from './components/maps-side-pane/maps-side-pane.component';\nimport { MapsTaskComponent } from './components/maps-task/maps-task.component';\nimport { MapsWidgetComponent } from './components/maps-widget/maps-widget.component';\nimport { MapCommandsProvider } from './services/map/map-commands-provider';\nimport { MapService } from './services/map/map-service';\nimport { MapState } from './services/map/map.state';\nimport { StateMapService } from './services/map/state-map-service';\nimport { MapsBottomContextDataService } from './services/maps-bottom-context-data/maps-bottom-context-data.service';\nimport { MapsBottomContextDataState } from './services/maps-bottom-context-data/maps-bottom-context-data.state';\nimport { MapsSideContextDataState } from './services/maps-side-context-data/maps-side-context-data.state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n imports: [CommonModule, SharedModule, TranslateModule, NgxsModule.forFeature([MapState, MapsSideContextDataState, MapsBottomContextDataState])],\n declarations: [MapsTaskComponent, MapsSidePaneComponent, MapsWidgetComponent, MapsBottomPaneComponent, MapControlsComponent, MapPopupComponent],\n providers: [\n StateMapService,\n MapsProviderClient,\n { provide: MAPS_BOTTOM_CONTEXT_SERVICE, useClass: MapsBottomContextDataService },\n MapService,\n MapCommandsProvider,\n { provide: baseUrl, deps: [], useFactory: GetBaseUriForCodeGen },\n ],\n})\nexport class MapsModule {\n constructor(_mapCommandsProvider: MapCommandsProvider) {}\n}\n","// Autogenerated: v2/help/enumerations/ApiActionType?codegen=ts&showresources=False on 2021-04-08 07:46:41\n\nexport class ActionType {\n public static None = 'None';\n public static ForwardAlarm = 'ForwardAlarm';\n public static SendMessage = 'SendMessage';\n public static PlaySound = 'PlaySound';\n public static DisplayEntity = 'DisplayEntity';\n public static CorrelationSendDatums = 'CorrelationSendDatums';\n public static Custom = 'Custom';\n\n public static readonly values = [\n ActionType.None,\n ActionType.ForwardAlarm,\n ActionType.SendMessage,\n ActionType.PlaySound,\n ActionType.DisplayEntity,\n ActionType.CorrelationSendDatums,\n ActionType.Custom\n ];\n}\n","import { Injectable } from '@angular/core';\nimport { ActionBase } from 'RestClient/Client/Event/ActionBase';\nimport { ActionReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { LoggerService } from '../logger/logger.service';\nimport { SecurityCenterStateService } from '../state/security-center-state.service';\n\n// Handler of the action (execution)\nexport interface ActionHandler {\n executeAsync(action: ActionBase): Promise;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActionsService extends SecurityCenterStateService {\n //#region Fields\n\n // map the action with their handler. for now, we only support 1 handler per action\n private handlers = new Map();\n\n //#endregion\n\n //#region Constructors\n\n constructor(securityCenterProvider: SecurityCenterClientService, private loggerService: LoggerService) {\n super(securityCenterProvider);\n securityCenterProvider.scClient?.onActionReceived((x) => this.onActionReceived(x));\n }\n\n //#endregion\n\n //#region Methods\n\n public registerHandler(actionType: string, handler: ActionHandler): void {\n if (handler) {\n this.handlers.set(actionType, handler);\n }\n }\n\n public unregisterHandler(actionType: string): void {\n this.handlers.delete(actionType);\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private async onActionReceived(arg: ActionReceivedArg) {\n const fo = arg.action;\n if (fo.hasField('ActionType')) {\n const action = new ActionBase(new FieldObject());\n action.loadFrom(fo);\n\n // retrieve the handler responsible for this specific action\n const handler = this.handlers.get(action.actionType);\n if (handler) {\n try {\n await handler.executeAsync(action);\n } catch (ex) {\n this.loggerService.traceError(`Error occurred while executing action ${action.actionType}. ${(ex as Error).message}`);\n }\n }\n }\n }\n\n //#endregion\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport enum ExportStatus2 {\n Running = 'Running',\n Success = 'Success',\n NoVideoError = 'NoVideoError',\n EncryptedError = 'EncryptedError',\n CodecNotSupportedError = 'CodecNotSupportedError',\n CameraNotFoundError = 'CameraNotFoundError',\n TooManyConnectionsError = 'TooManyConnectionsError',\n InsufficientPrivilegeError = 'InsufficientPrivilegeError',\n UnknownError = 'UnknownError',\n Cancelled = 'Cancelled',\n TooManyConcurrentRequestsError = 'TooManyConcurrentRequestsError',\n RequestIsThrottled = 'RequestIsThrottled',\n LegacyExportWithEncryptionNotSupported = 'LegacyExportWithEncryptionNotSupported',\n}\n\n/** Represents a video export progress updated event. Keep in sync with VideoExportProgressEvent.cs */\nexport class VideoExportProgressEvent extends EventBase {\n //#region Properties\n\n // Status\n public get status(): ExportStatus2 {\n const statusString = this.getField('Status');\n if (statusString as ExportStatus2) {\n return statusString as ExportStatus2;\n } else {\n return ExportStatus2.UnknownError;\n }\n }\n public set status(status: ExportStatus2) {\n this.setField('Status', status);\n }\n\n // Progress\n public get progress(): number {\n return this.getField('Progress');\n }\n public set progress(progress: number) {\n this.setField('Progress', progress);\n }\n\n // ExportId\n public get exportId(): IGuid {\n return this.getFieldGuid('ExportId');\n }\n public set exportId(exportId: IGuid) {\n this.setFieldGuid('ExportId', exportId);\n }\n\n // Completed\n public get completed(): boolean {\n return this.getField('Completed');\n }\n public set completed(completed: boolean) {\n this.setField('Completed', completed);\n }\n\n // CameraId\n public get cameraId(): IGuid {\n return this.getFieldGuid('CameraId');\n }\n public set cameraId(cameraId: IGuid) {\n this.setFieldGuid('CameraId', cameraId);\n }\n\n //#endregion\n\n //#region Constructors\n\n constructor() {\n super();\n this.eventType = 'VideoExportProgressEvent';\n }\n\n //#endregion\n\n //#region Public Methods\n\n /** Setup the handler callback on the REST subscription, so we are subscribing to \"VideoExportProgressEvent\"s */\n public static setupCallbackOnRestConnection(client: ISecurityCenterClient, callback: (event: VideoExportProgressEvent) => void): (() => void) | undefined {\n if (client) {\n // add the event def\n client.registerAdditionalEventTypes('VideoExportProgressEvent', VideoExportProgressEvent);\n // wire up the subscription\n return client.onEventReceived((arg) => {\n if (arg?.event?.eventType === 'VideoExportProgressEvent') {\n callback(arg.event as VideoExportProgressEvent);\n }\n });\n }\n return undefined;\n }\n\n //#endregion\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ExportStatus2 } from './video-export-progress.event';\n\n/** Represents a video export progress updated event. Keep in sync with VideoExportCompletedEvent.cs */\nexport class VideoExportCompletedEvent extends EventBase {\n //#region Properties\n\n // Status\n public get status(): ExportStatus2 {\n const statusString = this.getField('Status');\n if (statusString as ExportStatus2) {\n return statusString as ExportStatus2;\n } else {\n return ExportStatus2.UnknownError;\n }\n }\n public set status(status: ExportStatus2) {\n this.setField('Status', status);\n }\n\n // ExportId\n public get exportId(): IGuid {\n return this.getFieldGuid('ExportId');\n }\n public set exportId(exportId: IGuid) {\n this.setFieldGuid('ExportId', exportId);\n }\n\n public get statusCode(): number {\n return this.getField('StatusCode');\n }\n public set statusCode(statusCode: number) {\n this.setField('StatusCode', statusCode);\n }\n\n public get message(): string {\n return this.getField('Message');\n }\n public set message(message: string) {\n this.setField('Message', message);\n }\n\n //#endregion\n\n //#region Constructors\n\n constructor() {\n super();\n this.eventType = 'VideoExportCompletedEvent';\n }\n\n //#endregion\n\n //#region Public Methods\n\n /** Setup the handler callback on the REST subscription, so we are subscribing to \"VideoExportProgressEvent\"s */\n public static setupCallbackOnRestConnection(client: ISecurityCenterClient, callback: (event: VideoExportCompletedEvent) => void): (() => void) | undefined {\n if (client) {\n // add the event def\n client.registerAdditionalEventTypes('VideoExportCompletedEvent', VideoExportCompletedEvent);\n // wire up the subscription\n return client.onEventReceived((arg) => {\n if (arg?.event?.eventType === 'VideoExportCompletedEvent') {\n callback(arg.event as VideoExportCompletedEvent);\n }\n });\n }\n return undefined;\n }\n\n //#endregion\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IVideoClient {\n /**\n * Download an exported video clip\n * @param mediaGatewayRoleId The ID of the media gateway role the export was requested on\n * @param mediaGatewayServerId The ID of the server the specific media gateway role the export was requested on\n * @param exportId The ID of the exported clip\n * @param filename (optional) The intended file name to safe as\n * @return Success\n */\n downloadExportedVideo(mediaGatewayRoleId: IGuid, mediaGatewayServerId: IGuid, exportId: IGuid, filename?: string | undefined): Observable;\n /**\n * Export a video clip\n * @param body The video export request parameters\n * @return Success\n */\n exportVideo(body: ExportRequest): Observable;\n /**\n * Generate thumbnails for a given collection of cameras and times\n * @param body The thumbnail requests and options\n * @return Success\n */\n getThumbnails(body: ThumbnailsRequest): Observable;\n /**\n * Generate thumbnail for a given camera with a time range.\n * @param body The thumbnail request and options\n * @return Success\n */\n getThumbnail(body: ThumbnailRangeRequest): Observable;\n /**\n * Copied from SecurityCenter's Source/Video/BusinessObjects/PTZCapabilitiesXml.cs\n This has been moved here because of the need for the front-end web to be able \n to human read the supported commands on a camera.\n * @param supportedCommands The 20 character hexadecimal representation of the supported commands on a camera entity's capabilities\n * @return Success\n */\n supportedCommands(supportedCommands: string): Observable;\n}\n\n@Injectable()\nexport class VideoClient implements IVideoClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Download an exported video clip\n * @param mediaGatewayRoleId The ID of the media gateway role the export was requested on\n * @param mediaGatewayServerId The ID of the server the specific media gateway role the export was requested on\n * @param exportId The ID of the exported clip\n * @param filename (optional) The intended file name to safe as\n * @return Success\n */\n downloadExportedVideo(mediaGatewayRoleId: IGuid, mediaGatewayServerId: IGuid, exportId: IGuid, filename?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Video/ExportVideo/{mediaGatewayRoleId}/{mediaGatewayServerId}/{exportId}?\";\n if (mediaGatewayRoleId === undefined || mediaGatewayRoleId === null)\n throw new Error(\"The parameter 'mediaGatewayRoleId' must be defined.\");\n url_ = url_.replace(\"{mediaGatewayRoleId}\", encodeURIComponent(\"\" + mediaGatewayRoleId));\n if (mediaGatewayServerId === undefined || mediaGatewayServerId === null)\n throw new Error(\"The parameter 'mediaGatewayServerId' must be defined.\");\n url_ = url_.replace(\"{mediaGatewayServerId}\", encodeURIComponent(\"\" + mediaGatewayServerId));\n if (exportId === undefined || exportId === null)\n throw new Error(\"The parameter 'exportId' must be defined.\");\n url_ = url_.replace(\"{exportId}\", encodeURIComponent(\"\" + exportId));\n if (filename === null)\n throw new Error(\"The parameter 'filename' cannot be null.\");\n else if (filename !== undefined)\n url_ += \"filename=\" + encodeURIComponent(\"\" + filename) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"video/mp4\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processDownloadExportedVideo(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processDownloadExportedVideo(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDownloadExportedVideo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"No Content\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Export a video clip\n * @param body The video export request parameters\n * @return Success\n */\n exportVideo(body: ExportRequest): Observable {\n let url_ = this.baseUrl + \"/Api/Video/ExportVideo\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processExportVideo(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processExportVideo(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processExportVideo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VideoExportSession.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n \n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ? resultData404 : null;\n \n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ? resultData500 : null;\n \n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Generate thumbnails for a given collection of cameras and times\n * @param body The thumbnail requests and options\n * @return Success\n */\n getThumbnails(body: ThumbnailsRequest): Observable {\n let url_ = this.baseUrl + \"/Api/Video/Thumbnails\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetThumbnails(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetThumbnails(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetThumbnails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ThumbnailResponse.fromJS(item));\n }\n else {\n result200 = null;\n }\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n \n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ? resultData500 : null;\n \n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Generate thumbnail for a given camera with a time range.\n * @param body The thumbnail request and options\n * @return Success\n */\n getThumbnail(body: ThumbnailRangeRequest): Observable {\n let url_ = this.baseUrl + \"/Api/Video/Thumbnail\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetThumbnail(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetThumbnail(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetThumbnail(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ThumbnailResponse.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n \n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ? resultData500 : null;\n \n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Copied from SecurityCenter's Source/Video/BusinessObjects/PTZCapabilitiesXml.cs\n This has been moved here because of the need for the front-end web to be able \n to human read the supported commands on a camera.\n * @param supportedCommands The 20 character hexadecimal representation of the supported commands on a camera entity's capabilities\n * @return Success\n */\n supportedCommands(supportedCommands: string): Observable {\n let url_ = this.baseUrl + \"/Api/Video/SupportedCommands?\";\n if (supportedCommands === undefined || supportedCommands === null)\n throw new Error(\"The parameter 'supportedCommands' must be defined and cannot be null.\");\n else\n url_ += \"supportedCommands=\" + encodeURIComponent(\"\" + supportedCommands) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSupportedCommands(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSupportedCommands(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSupportedCommands(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(_guidConverters.toGuid(item));\n }\n else {\n result200 = null;\n }\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n \n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ? resultData500 : null;\n \n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class ExportRequest implements IExportRequest {\n alwaysZip?: boolean;\n cameraId!: IGuid;\n signalRConnectionId?: string | null;\n timeRange?: SerializableDateTimeSpan;\n secondUser?: UserCredentials;\n description?: string | null;\n\n protected _discriminator: string;\n\n constructor(data?: IExportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.alwaysZip = false;\n }\n this._discriminator = \"ExportRequest\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.alwaysZip = _data[\"alwaysZip\"] !== undefined ? _data[\"alwaysZip\"] : false;\n this.cameraId = _guidImplementation.from(_data[\"cameraId\"]) !== undefined ? _guidImplementation.from(_data[\"cameraId\"]) : null;\n this.signalRConnectionId = _data[\"signalRConnectionId\"] !== undefined ? _data[\"signalRConnectionId\"] : null;\n this.timeRange = _data[\"timeRange\"] ? SerializableDateTimeSpan.fromJS(_data[\"timeRange\"]) : null;\n this.secondUser = _data[\"secondUser\"] ? UserCredentials.fromJS(_data[\"secondUser\"]) : null;\n this.description = _data[\"description\"] !== undefined ? _data[\"description\"] : null;\n }\n }\n\n static fromJS(data: any): ExportRequest {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportG64Request, Genetec.WebApp.Video\") {\n let result = new ExportG64Request();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportG64XRequest, Genetec.WebApp.Video\") {\n let result = new ExportG64XRequest();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportMp4Request, Genetec.WebApp.Video\") {\n let result = new ExportMp4Request();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportAsfRequest, Genetec.WebApp.Video\") {\n let result = new ExportAsfRequest();\n result.init(data);\n return result;\n }\n let result = new ExportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"alwaysZip\"] = this.alwaysZip !== undefined ? this.alwaysZip : null;\n data[\"cameraId\"] = this.cameraId?.toString() !== undefined ? this.cameraId?.toString() : null;\n data[\"signalRConnectionId\"] = this.signalRConnectionId !== undefined ? this.signalRConnectionId : null;\n data[\"timeRange\"] = this.timeRange ? this.timeRange.toJSON() : null;\n data[\"secondUser\"] = this.secondUser ? this.secondUser.toJSON() : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n return data;\n }\n\n clone(): ExportRequest {\n const json = this.toJSON();\n let result = new ExportRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportRequest {\n alwaysZip?: boolean;\n cameraId: IGuid;\n signalRConnectionId?: string | null;\n timeRange?: SerializableDateTimeSpan;\n secondUser?: UserCredentials;\n description?: string | null;\n}\n\nexport class ExportAsfRequest extends ExportRequest implements IExportAsfRequest {\n excludeAudio?: boolean;\n includeDateTime?: boolean;\n includeCameraName?: boolean;\n\n constructor(data?: IExportAsfRequest) {\n super(data);\n if (!data) {\n this.excludeAudio = true;\n this.includeDateTime = false;\n this.includeCameraName = false;\n }\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportAsfRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.excludeAudio = _data[\"excludeAudio\"] !== undefined ? _data[\"excludeAudio\"] : true;\n this.includeDateTime = _data[\"includeDateTime\"] !== undefined ? _data[\"includeDateTime\"] : false;\n this.includeCameraName = _data[\"includeCameraName\"] !== undefined ? _data[\"includeCameraName\"] : false;\n }\n }\n\n static fromJS(data: any): ExportAsfRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportAsfRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"excludeAudio\"] = this.excludeAudio !== undefined ? this.excludeAudio : null;\n data[\"includeDateTime\"] = this.includeDateTime !== undefined ? this.includeDateTime : null;\n data[\"includeCameraName\"] = this.includeCameraName !== undefined ? this.includeCameraName : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ExportAsfRequest {\n const json = this.toJSON();\n let result = new ExportAsfRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportAsfRequest extends IExportRequest {\n excludeAudio?: boolean;\n includeDateTime?: boolean;\n includeCameraName?: boolean;\n}\n\nexport class ExportG64Request extends ExportRequest implements IExportG64Request {\n encryptionKey?: string | null;\n\n constructor(data?: IExportG64Request) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportG64Request, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.encryptionKey = _data[\"encryptionKey\"] !== undefined ? _data[\"encryptionKey\"] : null;\n }\n }\n\n static fromJS(data: any): ExportG64Request {\n data = typeof data === 'object' ? data : {};\n let result = new ExportG64Request();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"encryptionKey\"] = this.encryptionKey !== undefined ? this.encryptionKey : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ExportG64Request {\n const json = this.toJSON();\n let result = new ExportG64Request();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportG64Request extends IExportRequest {\n encryptionKey?: string | null;\n}\n\nexport class ExportG64XRequest extends ExportRequest implements IExportG64XRequest {\n encryptionKey?: string | null;\n\n constructor(data?: IExportG64XRequest) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportG64XRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.encryptionKey = _data[\"encryptionKey\"] !== undefined ? _data[\"encryptionKey\"] : null;\n }\n }\n\n static fromJS(data: any): ExportG64XRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportG64XRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"encryptionKey\"] = this.encryptionKey !== undefined ? this.encryptionKey : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ExportG64XRequest {\n const json = this.toJSON();\n let result = new ExportG64XRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportG64XRequest extends IExportRequest {\n encryptionKey?: string | null;\n}\n\nexport class ExportMp4Request extends ExportRequest implements IExportMp4Request {\n excludeAudio?: boolean;\n\n constructor(data?: IExportMp4Request) {\n super(data);\n if (!data) {\n this.excludeAudio = true;\n }\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportMp4Request, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.excludeAudio = _data[\"excludeAudio\"] !== undefined ? _data[\"excludeAudio\"] : true;\n }\n }\n\n static fromJS(data: any): ExportMp4Request {\n data = typeof data === 'object' ? data : {};\n let result = new ExportMp4Request();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"excludeAudio\"] = this.excludeAudio !== undefined ? this.excludeAudio : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ExportMp4Request {\n const json = this.toJSON();\n let result = new ExportMp4Request();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportMp4Request extends IExportRequest {\n excludeAudio?: boolean;\n}\n\nexport class ModelError implements IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n\n constructor(data?: IModelError) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.exception = _data[\"exception\"] !== undefined ? _data[\"exception\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ? _data[\"errorMessage\"] : null;\n }\n }\n\n static fromJS(data: any): ModelError {\n data = typeof data === 'object' ? data : {};\n let result = new ModelError();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"exception\"] = this.exception !== undefined ? this.exception : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n return data;\n }\n\n clone(): ModelError {\n const json = this.toJSON();\n let result = new ModelError();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n}\n\nexport class ModelStateEntry implements IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n readonly errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n readonly isContainerNode?: boolean;\n readonly children?: ModelStateEntry[] | null;\n\n protected _discriminator: string;\n\n constructor(data?: IModelStateEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"ModelStateEntry\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.rawValue = _data[\"rawValue\"] !== undefined ? _data[\"rawValue\"] : null;\n this.attemptedValue = _data[\"attemptedValue\"] !== undefined ? _data[\"attemptedValue\"] : null;\n if (Array.isArray(_data[\"errors\"])) {\n (this).errors = [] as any;\n for (let item of _data[\"errors\"])\n (this).errors!.push(ModelError.fromJS(item));\n }\n else {\n (this).errors = null;\n }\n this.validationState = _data[\"validationState\"] !== undefined ? _data[\"validationState\"] : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ? _data[\"isContainerNode\"] : null;\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n else {\n (this).children = null;\n }\n }\n }\n\n static fromJS(data: any): ModelStateEntry {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\") {\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n let result = new ModelStateEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"rawValue\"] = this.rawValue !== undefined ? this.rawValue : null;\n data[\"attemptedValue\"] = this.attemptedValue !== undefined ? this.attemptedValue : null;\n if (Array.isArray(this.errors)) {\n data[\"errors\"] = [];\n for (let item of this.errors)\n data[\"errors\"].push(item.toJSON());\n }\n data[\"validationState\"] = this.validationState !== undefined ? this.validationState : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ModelStateEntry {\n const json = this.toJSON();\n let result = new ModelStateEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n isContainerNode?: boolean;\n children?: ModelStateEntry[] | null;\n}\n\nexport class ModelStateNode extends ModelStateEntry implements IModelStateNode {\n childNodes?: ModelStateNode[] | null;\n readonly children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n readonly isContainerNode?: boolean;\n\n constructor(data?: IModelStateNode) {\n super(data);\n this._discriminator = \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"childNodes\"])) {\n this.childNodes = [] as any;\n for (let item of _data[\"childNodes\"])\n this.childNodes!.push(ModelStateNode.fromJS(item));\n }\n else {\n this.childNodes = null;\n }\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n else {\n (this).children = null;\n }\n this.key = _data[\"key\"] !== undefined ? _data[\"key\"] : null;\n this.subKey = _data[\"subKey\"] ? StringSegment.fromJS(_data[\"subKey\"]) : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ? _data[\"isContainerNode\"] : null;\n }\n }\n\n static fromJS(data: any): ModelStateNode {\n data = typeof data === 'object' ? data : {};\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.childNodes)) {\n data[\"childNodes\"] = [];\n for (let item of this.childNodes)\n data[\"childNodes\"].push(item.toJSON());\n }\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n data[\"key\"] = this.key !== undefined ? this.key : null;\n data[\"subKey\"] = this.subKey ? this.subKey.toJSON() : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ModelStateNode {\n const json = this.toJSON();\n let result = new ModelStateNode();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateNode extends IModelStateEntry {\n childNodes?: ModelStateNode[] | null;\n children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n isContainerNode?: boolean;\n}\n\nexport enum ModelValidationState {\n Unvalidated = 0,\n Invalid = 1,\n Valid = 2,\n Skipped = 3,\n}\n\nexport class SerializableDateTimeSpan implements ISerializableDateTimeSpan {\n start!: string;\n end!: string;\n\n constructor(data?: ISerializableDateTimeSpan) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.start = _data[\"start\"] !== undefined ? _data[\"start\"] : null;\n this.end = _data[\"end\"] !== undefined ? _data[\"end\"] : null;\n }\n }\n\n static fromJS(data: any): SerializableDateTimeSpan {\n data = typeof data === 'object' ? data : {};\n let result = new SerializableDateTimeSpan();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"start\"] = this.start !== undefined ? this.start : null;\n data[\"end\"] = this.end !== undefined ? this.end : null;\n return data;\n }\n\n clone(): SerializableDateTimeSpan {\n const json = this.toJSON();\n let result = new SerializableDateTimeSpan();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISerializableDateTimeSpan {\n start: string;\n end: string;\n}\n\nexport class StringSegment implements IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n readonly value?: string | null;\n readonly hasValue?: boolean;\n\n constructor(data?: IStringSegment) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.buffer = _data[\"buffer\"] !== undefined ? _data[\"buffer\"] : null;\n this.offset = _data[\"offset\"] !== undefined ? _data[\"offset\"] : null;\n this.length = _data[\"length\"] !== undefined ? _data[\"length\"] : null;\n (this).value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n (this).hasValue = _data[\"hasValue\"] !== undefined ? _data[\"hasValue\"] : null;\n }\n }\n\n static fromJS(data: any): StringSegment {\n data = typeof data === 'object' ? data : {};\n let result = new StringSegment();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"buffer\"] = this.buffer !== undefined ? this.buffer : null;\n data[\"offset\"] = this.offset !== undefined ? this.offset : null;\n data[\"length\"] = this.length !== undefined ? this.length : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n data[\"hasValue\"] = this.hasValue !== undefined ? this.hasValue : null;\n return data;\n }\n\n clone(): StringSegment {\n const json = this.toJSON();\n let result = new StringSegment();\n result.init(json);\n return result;\n }\n}\n\nexport interface IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n value?: string | null;\n hasValue?: boolean;\n}\n\nexport class ThumbnailRequest implements IThumbnailRequest {\n cameraId!: IGuid;\n contextId?: IGuid;\n width?: number | null;\n highPrecision?: boolean | null;\n timeout?: number | null;\n disableCachedResults?: boolean | null;\n\n protected _discriminator: string;\n\n constructor(data?: IThumbnailRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.width = 512;\n this.highPrecision = false;\n this.timeout = 30000;\n this.disableCachedResults = false;\n }\n this._discriminator = \"ThumbnailRequest\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.cameraId = _guidImplementation.from(_data[\"cameraId\"]) !== undefined ? _guidImplementation.from(_data[\"cameraId\"]) : null;\n this.contextId = _guidImplementation.from(_data[\"contextId\"]) !== undefined ? _guidImplementation.from(_data[\"contextId\"]) : null;\n this.width = _data[\"width\"] !== undefined ? _data[\"width\"] : 512;\n this.highPrecision = _data[\"highPrecision\"] !== undefined ? _data[\"highPrecision\"] : false;\n this.timeout = _data[\"timeout\"] !== undefined ? _data[\"timeout\"] : 30000;\n this.disableCachedResults = _data[\"disableCachedResults\"] !== undefined ? _data[\"disableCachedResults\"] : false;\n }\n }\n\n static fromJS(data: any): ThumbnailRequest {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ThumbnailTimeStampRequest, Genetec.WebApp.Video\") {\n let result = new ThumbnailTimeStampRequest();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ThumbnailRangeRequest, Genetec.WebApp.Video\") {\n let result = new ThumbnailRangeRequest();\n result.init(data);\n return result;\n }\n let result = new ThumbnailRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"cameraId\"] = this.cameraId?.toString() !== undefined ? this.cameraId?.toString() : null;\n data[\"contextId\"] = this.contextId?.toString() !== undefined ? this.contextId?.toString() : null;\n data[\"width\"] = this.width !== undefined ? this.width : null;\n data[\"highPrecision\"] = this.highPrecision !== undefined ? this.highPrecision : null;\n data[\"timeout\"] = this.timeout !== undefined ? this.timeout : null;\n data[\"disableCachedResults\"] = this.disableCachedResults !== undefined ? this.disableCachedResults : null;\n return data;\n }\n\n clone(): ThumbnailRequest {\n const json = this.toJSON();\n let result = new ThumbnailRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThumbnailRequest {\n cameraId: IGuid;\n contextId?: IGuid;\n width?: number | null;\n highPrecision?: boolean | null;\n timeout?: number | null;\n disableCachedResults?: boolean | null;\n}\n\nexport class ThumbnailRangeRequest extends ThumbnailRequest implements IThumbnailRangeRequest {\n startTime?: string;\n endTime?: string;\n\n constructor(data?: IThumbnailRangeRequest) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ThumbnailRangeRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.startTime = _data[\"startTime\"] !== undefined ? _data[\"startTime\"] : null;\n this.endTime = _data[\"endTime\"] !== undefined ? _data[\"endTime\"] : null;\n }\n }\n\n static fromJS(data: any): ThumbnailRangeRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ThumbnailRangeRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"startTime\"] = this.startTime !== undefined ? this.startTime : null;\n data[\"endTime\"] = this.endTime !== undefined ? this.endTime : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ThumbnailRangeRequest {\n const json = this.toJSON();\n let result = new ThumbnailRangeRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThumbnailRangeRequest extends IThumbnailRequest {\n startTime?: string;\n endTime?: string;\n}\n\nexport class ThumbnailResponse implements IThumbnailResponse {\n contextId!: IGuid;\n thumbnail!: string;\n\n constructor(data?: IThumbnailResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.contextId = _guidImplementation.from(_data[\"contextId\"]) !== undefined ? _guidImplementation.from(_data[\"contextId\"]) : null;\n this.thumbnail = _data[\"thumbnail\"] !== undefined ? _data[\"thumbnail\"] : null;\n }\n }\n\n static fromJS(data: any): ThumbnailResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ThumbnailResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"contextId\"] = this.contextId?.toString() !== undefined ? this.contextId?.toString() : null;\n data[\"thumbnail\"] = this.thumbnail !== undefined ? this.thumbnail : null;\n return data;\n }\n\n clone(): ThumbnailResponse {\n const json = this.toJSON();\n let result = new ThumbnailResponse();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThumbnailResponse {\n contextId: IGuid;\n thumbnail: string;\n}\n\nexport class ThumbnailTimeStampRequest extends ThumbnailRequest implements IThumbnailTimeStampRequest {\n timestamp!: string;\n\n constructor(data?: IThumbnailTimeStampRequest) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ThumbnailTimeStampRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.timestamp = _data[\"timestamp\"] !== undefined ? _data[\"timestamp\"] : null;\n }\n }\n\n static fromJS(data: any): ThumbnailTimeStampRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ThumbnailTimeStampRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"timestamp\"] = this.timestamp !== undefined ? this.timestamp : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ThumbnailTimeStampRequest {\n const json = this.toJSON();\n let result = new ThumbnailTimeStampRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThumbnailTimeStampRequest extends IThumbnailRequest {\n timestamp: string;\n}\n\nexport class ThumbnailsRequest implements IThumbnailsRequest {\n thumbnails!: ThumbnailTimeStampRequest[];\n disableCachedResults?: boolean | null;\n\n constructor(data?: IThumbnailsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.thumbnails = [];\n this.disableCachedResults = false;\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"thumbnails\"])) {\n this.thumbnails = [] as any;\n for (let item of _data[\"thumbnails\"])\n this.thumbnails!.push(ThumbnailTimeStampRequest.fromJS(item));\n }\n else {\n this.thumbnails = null;\n }\n this.disableCachedResults = _data[\"disableCachedResults\"] !== undefined ? _data[\"disableCachedResults\"] : false;\n }\n }\n\n static fromJS(data: any): ThumbnailsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ThumbnailsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.thumbnails)) {\n data[\"thumbnails\"] = [];\n for (let item of this.thumbnails)\n data[\"thumbnails\"].push(item.toJSON());\n }\n data[\"disableCachedResults\"] = this.disableCachedResults !== undefined ? this.disableCachedResults : null;\n return data;\n }\n\n clone(): ThumbnailsRequest {\n const json = this.toJSON();\n let result = new ThumbnailsRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IThumbnailsRequest {\n thumbnails: ThumbnailTimeStampRequest[];\n disableCachedResults?: boolean | null;\n}\n\nexport class UserCredentials implements IUserCredentials {\n username?: string | null;\n password?: string | null;\n\n constructor(data?: IUserCredentials) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.username = _data[\"username\"] !== undefined ? _data[\"username\"] : null;\n this.password = _data[\"password\"] !== undefined ? _data[\"password\"] : null;\n }\n }\n\n static fromJS(data: any): UserCredentials {\n data = typeof data === 'object' ? data : {};\n let result = new UserCredentials();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"username\"] = this.username !== undefined ? this.username : null;\n data[\"password\"] = this.password !== undefined ? this.password : null;\n return data;\n }\n\n clone(): UserCredentials {\n const json = this.toJSON();\n let result = new UserCredentials();\n result.init(json);\n return result;\n }\n}\n\nexport interface IUserCredentials {\n username?: string | null;\n password?: string | null;\n}\n\nexport class VideoExportSession implements IVideoExportSession {\n exportId!: IGuid;\n mediaGatewayRoleId!: IGuid;\n mediaGatewayServerId!: IGuid;\n\n constructor(data?: IVideoExportSession) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.exportId = _guidImplementation.from(_data[\"exportId\"]) !== undefined ? _guidImplementation.from(_data[\"exportId\"]) : null;\n this.mediaGatewayRoleId = _guidImplementation.from(_data[\"mediaGatewayRoleId\"]) !== undefined ? _guidImplementation.from(_data[\"mediaGatewayRoleId\"]) : null;\n this.mediaGatewayServerId = _guidImplementation.from(_data[\"mediaGatewayServerId\"]) !== undefined ? _guidImplementation.from(_data[\"mediaGatewayServerId\"]) : null;\n }\n }\n\n static fromJS(data: any): VideoExportSession {\n data = typeof data === 'object' ? data : {};\n let result = new VideoExportSession();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"exportId\"] = this.exportId?.toString() !== undefined ? this.exportId?.toString() : null;\n data[\"mediaGatewayRoleId\"] = this.mediaGatewayRoleId?.toString() !== undefined ? this.mediaGatewayRoleId?.toString() : null;\n data[\"mediaGatewayServerId\"] = this.mediaGatewayServerId?.toString() !== undefined ? this.mediaGatewayServerId?.toString() : null;\n return data;\n }\n\n clone(): VideoExportSession {\n const json = this.toJSON();\n let result = new VideoExportSession();\n result.init(json);\n return result;\n }\n}\n\nexport interface IVideoExportSession {\n exportId: IGuid;\n mediaGatewayRoleId: IGuid;\n mediaGatewayServerId: IGuid;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","import { Inject, Injectable } from '@angular/core';\nimport { Color, GenMeltedItem, GenModalService, GenToastService, MeltedIcon } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { SafeGuid } from 'safeguid';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { Constants } from '@src/constants';\nimport moment from 'moment';\nimport { DateTimeSpan } from 'Marmot/Marmot/gwp';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ExportStatus2, VideoExportProgressEvent } from '../api/video-export-progress.event';\nimport { VideoExportCompletedEvent } from '../api/video-export-completed.event';\nimport {\n ApiException,\n ExportAsfRequest,\n ExportG64Request,\n ExportMp4Request,\n ExportRequest,\n IVideoExportSession,\n SerializableDateTimeSpan,\n UserCredentials,\n VideoClient,\n} from '../api/api';\n\n/** Represents a video export instance */\nexport class VideoExportInstance {\n public statusColor = '';\n public closeTooltip = '';\n public errorMessage = '';\n public progress = 0;\n public hasInsufficientPrivilege = false;\n\n private downloadProgressReceived = new Subject();\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public downloadProgressReceived$ = this.downloadProgressReceived.asObservable();\n\n private isError = false;\n private isCancelled = false;\n private exportSession: IVideoExportSession | undefined;\n private exportModel: ExportRequest;\n private lastEvent: VideoExportProgressEvent | undefined;\n private subscription: (() => void) | undefined;\n\n constructor(\n private baseUrl: string,\n public filename: string,\n private service: VideoExportService,\n private translateService: TranslateService,\n private scClient: SecurityCenterClient,\n private toastService: GenToastService,\n private modalService: GenModalService,\n private videoClient: VideoClient,\n request: ExportRequest\n ) {\n this.exportModel = request;\n this.closeTooltip = this.translateService.instant('STE_BUTTON_CANCEL') as string;\n }\n\n //#region Public Methods\n\n public static convertErrorToString(translateService: TranslateService, status: ExportStatus2): string {\n let result = '?';\n\n switch (status) {\n case ExportStatus2.NoVideoError:\n result = translateService.instant('STE_MESSAGE_ERROR_NOVIDEOFOUND') as string;\n break;\n\n case ExportStatus2.EncryptedError:\n result = translateService.instant('STE_LABEL_ENCRYPTIONERROR') as string;\n break;\n\n case ExportStatus2.CodecNotSupportedError:\n result = translateService.instant('STE_LABEL_CODECNOTSUPPORTED') as string;\n break;\n\n case ExportStatus2.CameraNotFoundError:\n result = translateService.instant('STE_MESSAGE_ERROR_CAMERANOTFOUND') as string;\n break;\n\n case ExportStatus2.TooManyConnectionsError:\n result = translateService.instant('STE_MESSAGE_ERROR_TOOMANYCONNECTIONS') as string;\n break;\n\n case ExportStatus2.InsufficientPrivilegeError:\n result = translateService.instant('STE_MESSAGE_ERROR_INSUFFICIENTPRIVILEGE') as string;\n break;\n\n case ExportStatus2.UnknownError:\n result = translateService.instant('STE_LABEL_UNKNOWNERROR') as string;\n break;\n\n case ExportStatus2.Cancelled:\n result = translateService.instant('STE_LABEL_EXPORT_CANCELLED') as string;\n break;\n\n case ExportStatus2.TooManyConcurrentRequestsError:\n result = translateService.instant('STE_MESSAGE_ERROR_TOOMANYCONCURRENTREQUESTS') as string;\n break;\n\n case ExportStatus2.RequestIsThrottled:\n result = translateService.instant('STE_MESSAGE_ERROR_REQUESTISTHROTTLED') as string;\n break;\n\n case ExportStatus2.LegacyExportWithEncryptionNotSupported:\n result = translateService.instant('STE_MESSAGE_ERROR_LEGACYEXPORTWITHENCRYPTIONNOTSUPPORTED') as string;\n break;\n }\n\n return result;\n }\n\n public onDestroy(): void {\n if (this.subscription) {\n this.subscription();\n this.subscription = undefined;\n }\n }\n\n public async cancel(force: boolean = true): Promise {\n let remove = this.lastEvent?.completed || this.isError;\n\n if (!force && !this.lastEvent?.completed && !this.isError && !this.isCancelled) {\n const title = this.translateService.instant('STE_TITLE_CANCELEXPORT') as string;\n const message = this.translateService.instant('STE_MESSAGE_CONFIRM_CANCELEXPORT') as string;\n const yes = this.translateService.instant('STE_BUTTON_YES') as string;\n const cancel = this.translateService.instant('STE_BUTTON_CANCEL') as string;\n\n const action = await this.modalService.showMessage(title, message, yes, cancel);\n if (action === 'default') {\n this.isCancelled = true;\n this.errorMessage = '';\n this.statusColor = 'orange';\n\n remove = true;\n } else {\n remove = false;\n }\n }\n\n if (remove || force) {\n const index = this.service.exports.indexOf(this);\n if (index > -1) {\n this.service.exports.splice(index, 1);\n }\n this.onDestroy();\n }\n }\n\n public async start(): Promise {\n this.toastService.show({ text: this.translateService.instant('STE_LABEL_EXPORTSTARTED') as string });\n\n if (this.exportModel) {\n try {\n // listen for events\n if (!this.subscription) {\n this.subscription = VideoExportProgressEvent.setupCallbackOnRestConnection(this.scClient, (args) => this.onEvent(args));\n }\n // Start the export + event processing server-side\n this.exportSession = await this.videoClient.exportVideo(this.exportModel).toPromise();\n if (this.exportSession.exportId.equals(SafeGuid.EMPTY)) {\n // unknown error, couldn't get a export context id\n const message = `${this.translateService.instant('STE_LABEL_UNKNOWNERROR') as string}`;\n this.toastService.show({ text: message, flavorCustomColor: Color.Mango });\n // cleanup the subscription, since we can't do anything\n this.onDestroy();\n }\n } catch (err) {\n let message = this.translateService.instant('STE_LABEL_UNKNOWNERROR') as string;\n if (err instanceof ApiException) {\n if (err.status === 400) {\n // bad request\n message = this.translateService.instant('STE_LABEL_INVALIDFILTER') as string;\n } else if (err.status === 401) {\n // unauthorized\n message = this.translateService.instant('STE_LABEL_UNAUTHORIZED') as string;\n } else if (err.status === 404) {\n // not found\n message = this.translateService.instant('STE_MESSAGE_CAMERA_NOT_FOUND') as string;\n } else if (err.status === 408) {\n // timeout / cancelled\n message = this.translateService.instant('STE_MESSAGE_ERROR_OPERATIONTIMEOUT') as string;\n } else if (err.status === 500) {\n // unknown\n message = `${this.translateService.instant('STE_LABEL_UNKNOWNERROR') as string}: ${err.result as string}`;\n }\n }\n this.setError(message);\n this.toastService.show({ text: message, flavorCustomColor: Color.Mango });\n // unwire the events\n this.onDestroy();\n }\n }\n }\n\n //#endregion\n\n //#region Private Methods\n\n private setError(error: string) {\n this.statusColor = Color.Fragola;\n this.isError = true;\n const message = this.translateService.instant('STE_LABEL_EXPORTFAILED') as string;\n this.errorMessage = `${message} (${error})`;\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private onExportCompleted(): void {\n if (\n this.lastEvent?.completed &&\n this.lastEvent?.status === ExportStatus2.Success &&\n !this.isError &&\n !this.isCancelled &&\n this.exportSession &&\n !this.exportSession.exportId.equals(SafeGuid.EMPTY)\n ) {\n // export completed\n this.toastService.show({ text: this.translateService.instant('STE_LABEL_EXPORTCOMPLETED') as string, flavorCustomColor: Color.Pistacchio });\n\n if (this.exportSession.exportId && this.exportSession.mediaGatewayRoleId && this.exportSession.mediaGatewayServerId) {\n const a = document.createElement('a');\n document.body.appendChild(a);\n try {\n // click on the download\n let href = `${\n this.baseUrl\n }api/video/ExportVideo/${this.exportSession.mediaGatewayRoleId.toString()}/${this.exportSession.mediaGatewayServerId.toString()}/${this.exportSession.exportId.toString()}`;\n if (this.filename) {\n href += `?filename=${encodeURIComponent(this.filename)}`;\n }\n a.href = href;\n // Set the target to \"_blank\" to ensure we are not using the main connection. Otherwise, the user could cancel or timeout the main connection.\n a.target = '_blank';\n a.click();\n } finally {\n document.body.removeChild(a);\n }\n }\n }\n }\n\n private onEvent(event: VideoExportProgressEvent): void {\n // check the export id to make sure the events are related to this export session\n if (this.exportSession?.exportId.equals(event.exportId)) {\n // record the relevant event\n this.lastEvent = event;\n\n if (this.lastEvent?.progress) {\n if (this.lastEvent.progress !== 1) {\n this.downloadProgressReceived.next();\n }\n this.progress = this.lastEvent.progress * 100;\n }\n if (event.status === ExportStatus2.Success) {\n // export is completed\n this.statusColor = Color.Pistacchio;\n this.closeTooltip = this.translateService.instant('STE_LABEL_REMOVE') as string;\n } else if (event.status === ExportStatus2.Running) {\n // export is running\n this.statusColor = Color.Puffo; // blue\n } else if (!this.isError) {\n // export has failed\n this.downloadProgressReceived.next(event.status);\n const error = VideoExportInstance.convertErrorToString(this.translateService, event.status);\n this.setError(error);\n this.toastService.show({ text: this.errorMessage, flavorCustomColor: Color.Fragola });\n }\n\n // if it's completed, cleanup the handle & process the resulting download if possible\n if (event.completed) {\n this.downloadProgressReceived.next();\n // when we get the completed event, wipe out the subscription\n this.onDestroy();\n // process the completed download\n void this.onExportCompleted();\n }\n }\n }\n\n //#endregion\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VideoExportService {\n //#region Properties\n\n public exports: VideoExportInstance[] = [];\n private subscriptions: (() => void)[] = [];\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string,\n private translateService: TranslateService,\n private toastService: GenToastService,\n private modalService: GenModalService,\n private securityCenterClientService: SecurityCenterClientService,\n private videoClient: VideoClient\n ) {\n this.subscriptions.push(\n this.securityCenterClientService.scClient.onLogonStateChanged((arg) => {\n this.onLogonStateChanged(arg);\n })\n );\n const callbackSub = VideoExportCompletedEvent.setupCallbackOnRestConnection(this.securityCenterClientService.scClient, (arg) => {\n if (arg.statusCode !== 200) {\n const statusMessage = VideoExportInstance.convertErrorToString(this.translateService, arg.status);\n const titleMessage = VideoExportInstance.convertErrorToString(this.translateService, ExportStatus2.Cancelled);\n // some error occurred while attempting a download\n this.toastService.show({\n text: `${titleMessage}: ${statusMessage}`,\n secondaryText: `${arg.statusCode}: ${arg.message}`,\n flavorCustomColor: Color.Fragola,\n icon: MeltedIcon.Warning,\n });\n }\n });\n if (callbackSub) {\n this.subscriptions.push(callbackSub);\n }\n }\n\n //#endregion\n\n //#region Methods\n public buildVideoExportRequest(exportRequest: ExportRequestParameter): ExportRequest | undefined {\n // create an object to hold all the parameters\n let modelValue: ExportRequest | undefined;\n const { entityId, startTime, endTime, format, supportsEncryption, encrypt, encryptionKey, exportAudio, credentialModel, description } = exportRequest;\n\n if (entityId && startTime && endTime) {\n const range = new DateTimeSpan(moment(startTime).toISOString(), moment(endTime).toISOString());\n modelValue = new ExportRequest();\n\n switch (format?.id) {\n case 'G64': {\n const export2Model = new ExportG64Request();\n if (supportsEncryption && encrypt) {\n export2Model.encryptionKey = encryptionKey;\n }\n modelValue = export2Model;\n break;\n }\n case 'G64x': {\n const export2Model = new ExportG64Request();\n if (supportsEncryption && encrypt) {\n export2Model.encryptionKey = encryptionKey;\n }\n modelValue = export2Model;\n break;\n }\n case 'MP4': {\n const export2Model = new ExportMp4Request();\n export2Model.excludeAudio = !exportAudio;\n modelValue = export2Model;\n break;\n }\n case 'ASF': {\n const export2Model = new ExportAsfRequest();\n export2Model.excludeAudio = !exportAudio;\n export2Model.includeDateTime = false;\n export2Model.includeCameraName = false;\n modelValue = export2Model;\n break;\n }\n }\n\n modelValue.cameraId = new SafeGuid(entityId);\n modelValue.description = description;\n modelValue.timeRange = new SerializableDateTimeSpan({\n end: range.End,\n start: range.Start,\n });\n if (credentialModel) {\n modelValue.secondUser = new UserCredentials({\n username: credentialModel.username,\n password: credentialModel.password,\n });\n }\n }\n\n return modelValue;\n }\n\n public async exportAsync(request: ExportRequest, filename: string): Promise {\n const instance = new VideoExportInstance(\n this.baseUrl,\n filename,\n this,\n this.translateService,\n this.securityCenterClientService?.scClient,\n this.toastService,\n this.modalService,\n this.videoClient,\n request\n );\n this.exports.push(instance);\n const downloadProgressPromise = new Promise((resolve, reject) => {\n instance.downloadProgressReceived$.pipe(take(1)).subscribe((exportStatus?: ExportStatus2) => {\n if (exportStatus) {\n reject(exportStatus);\n } else {\n resolve(undefined);\n }\n });\n });\n\n await instance.start();\n return downloadProgressPromise;\n }\n\n //#endregion\n\n //#region Events\n\n private onLogonStateChanged(e: LogonStateChangedArgs) {\n // On logoff, clear the video exports\n if (!e.loggedOn()) {\n this.exports.forEach((x) => x.cancel());\n this.exports.length = 0;\n }\n }\n\n //#endregion\n}\n\nexport interface ExportRequestParameter {\n entityId: SafeGuid;\n startTime: string;\n endTime: string;\n supportsEncryption: boolean;\n encrypt: boolean;\n encryptionKey: string;\n exportAudio: boolean;\n format?: GenMeltedItem;\n description?: string;\n credentialModel?: { username: string; password: string };\n}\n"," 0\"\n appTooltip=\"{{ 'STE_LABEL_NOUN_EXPORTSTATUS' | translate }}\"\n [flavor]=\"ButtonFlavor.Flat\"\n (click)=\"showExportingVideos()\"\n>\n \n {{ exports.length }}\n\n\n\n
    \n
    \n
    \n \n {{ instance.filename }}\n {{ instance.errorMessage }}\n \n \n \n \n
    \n
    \n
    \n
    \n","import { Component, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, PopupPosition } from '@genetec/gelato';\nimport { GenPopup, Severity } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes, TraySubSections } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { VideoExportInstance, VideoExportService } from '../../services/video-export.service';\n\n@Component({\n selector: 'app-export-video-tray',\n templateUrl: './export-video-tray.component.html',\n styleUrls: ['./export-video-tray.component.scss'],\n})\n@InternalPluginDescriptor({\n type: ExportVideoTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: ExportVideoTrayComponent.pluginId, subSection: TraySubSections.MainBar },\n isSupported: () => true,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video], globalPrivileges: [KnownPrivileges.exportVideoPrivilege] },\n})\nexport class ExportVideoTrayComponent extends TrackedComponent {\n public static pluginId = SafeGuid.parse('266DC88E-FA83-4195-808A-601DB847ECF1');\n\n @ViewChild(GenPopup) exportPopup!: GenPopup;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly PopupPosition = PopupPosition;\n public readonly Severity = Severity;\n\n public instanceCount = 0;\n\n public get exports(): VideoExportInstance[] {\n return this.videoExportService.exports;\n }\n\n constructor(private videoExportService: VideoExportService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n public async showExportingVideos(): Promise {\n await this.exportPopup.toggle();\n }\n\n public onButtonRemoveClick(instance: VideoExportInstance): void {\n if (instance) {\n instance.cancel().fireAndForget();\n }\n }\n}\n","import { Inject, OnDestroy, ViewChild } from '@angular/core';\nimport { Component, Injector, OnInit } from '@angular/core';\nimport { GenMeltedModalComponent, GenModalService, MeltedModalAction } from '@genetec/gelato-angular';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { WINDOW } from '@src/app/utilities';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\n\nexport enum ShowMessageAction {\n Ok = 'ok',\n Cancel = 'cancel',\n Timeout = 'timeout',\n}\n\n@Component({\n selector: 'app-show-message',\n templateUrl: './show-message.component.html',\n styleUrls: ['./show-message.component.scss'],\n})\nexport class ShowMessageComponent extends ConnectionAwareModalComponent implements OnInit, OnDestroy {\n // Represent the currently active message on screen. It is used to prevent stacking multiple messages.\n private static activeMessage: ShowMessageComponent | null = null;\n\n private static onDestroy: Subject = new Subject();\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n public title = '';\n public message = '';\n public actionText = 'OK';\n public cancelText: string | undefined;\n public timerText = '';\n public countdown: number | undefined = 0;\n public closedHandler: ((value: ShowMessageAction) => void) | undefined = undefined;\n\n // timer id for countdown\n private countdownTimer: number | undefined;\n private hasTimedOut = false;\n\n constructor(\n protected authService: AuthService,\n injector: Injector,\n private translateService: TranslateService,\n trackingService: TrackingService,\n @Inject(WINDOW) private window: Window\n ) {\n super(authService, injector, trackingService);\n }\n\n public static showMessage(\n modalService: GenModalService,\n title: string,\n message: string,\n closedHandler: (value: ShowMessageAction) => void,\n actionText: string | undefined = undefined,\n cancelText: string | undefined = undefined,\n countdown: number | undefined = undefined\n ): void {\n // if there is already an active message, close it\n if (ShowMessageComponent.activeMessage) {\n // force a close like if it was a timeout so it goes in the mailbox\n ShowMessageComponent.activeMessage.forceClose(MeltedModalAction.Default, true);\n ShowMessageComponent.activeMessage = null;\n }\n\n const component = modalService.open(ShowMessageComponent, undefined);\n if (component) {\n // Note the currently active message\n ShowMessageComponent.activeMessage = component;\n\n component.title = title;\n component.message = message;\n component.countdown = countdown;\n component.closedHandler = closedHandler;\n if (actionText) {\n component.actionText = actionText;\n }\n if (cancelText) {\n component.cancelText = cancelText;\n }\n component.genModalAction.pipe(takeUntil(this.onDestroy)).subscribe((modalAction: MeltedModalAction) => {\n component.stopTimer();\n if (closedHandler) {\n if (component.hasTimedOut === true) {\n closedHandler(ShowMessageAction.Timeout);\n } else if (modalAction === MeltedModalAction.Default) {\n closedHandler(ShowMessageAction.Ok);\n } else {\n closedHandler(ShowMessageAction.Cancel);\n }\n }\n });\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.countdown && this.countdown > 0) {\n this.countdownTimer = this.window.setInterval(() => this.onTimerCountdown(), 1000); // every second\n this.updateTimerText();\n }\n }\n\n ngOnDestroy() {\n ShowMessageComponent.onDestroy.next();\n ShowMessageComponent.onDestroy.complete();\n\n if (ShowMessageComponent.activeMessage === this) {\n ShowMessageComponent.activeMessage = null;\n }\n\n this.stopTimer();\n\n super.ngOnDestroy();\n }\n\n public show(): void {}\n\n private forceClose(action: MeltedModalAction, hasTimedOut: boolean) {\n this.stopTimer();\n this.hasTimedOut = hasTimedOut;\n this.genModalComponent.genModalAction.emit(action);\n this.hide();\n\n // when closing, inform the static instance we are not active anymore\n if (ShowMessageComponent.activeMessage === this) {\n ShowMessageComponent.activeMessage = null;\n }\n }\n\n private stopTimer() {\n if (this.countdownTimer) {\n clearInterval(this.countdownTimer);\n this.countdownTimer = undefined;\n }\n }\n\n private updateTimerText() {\n this.timerText = '';\n if (this.countdown && this.countdown > 0) {\n if (this.countdown > 1) {\n this.timerText = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_CLOSING_IN_N_SECONDS') as string, this.countdown.toString());\n } else {\n this.timerText = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_CLOSING_IN_N_SECOND') as string, this.countdown.toString());\n }\n }\n }\n\n private onTimerCountdown() {\n if (this.countdown) {\n this.countdown--;\n\n this.updateTimerText();\n if (this.countdown <= 0) {\n this.forceClose(MeltedModalAction.Default, true);\n }\n }\n }\n}\n","\n \n {{ message }}\n \n {{ timerText }}\n\n","/** Specifies the boundary of a grid cell. Indices are 1 based.\n * For example:\n * columnStart = 1 represents the left edge of the grid\n * rowStart = 1 represents the top edge of the grid. */\nexport class TileBoundary {\n /** Returns the boundary of the first cell of a pattern (top-left) */\n public static readonly topLeft = Object.freeze(new TileBoundary(1, 1, 2, 2));\n\n constructor(public startColumn: number, public startRow: number, public endColumn: number = -1, public endRow: number = -1) {}\n}\n","import { Observable, Subject } from 'rxjs';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginsStack } from '../../shared/components/plugins/plugins-stack';\nimport { CommandsUsageCollection } from '../../shared/services/commands/commands-usage/commands-usage-collection';\nimport { TileBoundary } from './tile-boundary';\n\nexport class TileItem {\n public content: ContentGroup | null = null;\n\n public pluginsStack: PluginsStack = new PluginsStack();\n public commandsUsages = new CommandsUsageCollection();\n public isExpanded = false;\n public isSelected = false;\n public isFullscreen = false;\n public isDraggingOver = false;\n public isLoading = false;\n public isMouseOver = false;\n\n private clearingSubject: Subject = new Subject();\n\n // Clearing event to notify that the state is getting cleared\n public get clearing$(): Observable {\n return this.clearingSubject.asObservable();\n }\n\n public get title(): string {\n return `tile ${this.id}`;\n }\n\n public get hasContent(): boolean {\n return this.content !== null;\n }\n\n constructor(public id: number, public boundary: TileBoundary) {}\n\n public clear(): void {\n // Raise clearing before plugins and commands are cleared\n this.clearingSubject.next();\n this.content = null;\n this.pluginsStack = new PluginsStack();\n this.commandsUsages.clear();\n }\n}\n","import { ITilePattern } from 'RestClient/Client/Interface/ITileLayoutEntity';\nimport { TileBoundary } from './tile-boundary';\n\nexport class TilePatternDefinition {\n /** Returns an empty pattern: Single tile, 100% width, 100% height */\n public static readonly singleTile = Object.freeze(new TilePatternDefinition([100], [100], [TileBoundary.topLeft]));\n\n constructor(public columnDefinitions: number[], public rowDefinitions: number[], public gridCellDefinitions: TileBoundary[]) {}\n\n /** Converts an ITilePattern object to a string definition */\n public static toDefinition(pattern: ITilePattern): string {\n const colSpans = pattern.columnSpans.values();\n const rowSpans = pattern.rowSpans.values();\n\n let spans = '';\n\n // Returns the top left position of each tiles in the grid.\n const topLeftPosisions = this.getTopLeftPositions(pattern);\n\n for (let tileId = 1; tileId <= colSpans.length; ++tileId) {\n if (colSpans[tileId - 1] !== 1 || rowSpans[tileId - 1] !== 1) {\n spans += ` [${topLeftPosisions[tileId].startColumn}.${topLeftPosisions[tileId].startRow}.${colSpans[tileId - 1]}.${rowSpans[tileId - 1]}]`;\n }\n }\n\n return `${pattern.columns}x${pattern.rows}${spans}`;\n }\n\n /** Build a PatternDefinition from cols, rows and spans.\n * cols: Can represent equally spaces columns ([4] => 4 columns of 25% each)\n * Can represent different columns with different width [10, 90] => 2 columns having 10% and 90% respectively\n * rows: Same as cols\n * spans: Array of span. A span is a length-4 array [colStart, rowStart, colSpan, rowSpan]. colStart and rowStart are 1-based.\n * For example [[3,2,2,1]] indicates that a cell located at col3, row2 is spanning 2 cols wide and 1 row high.\n */\n public static build(cols: number[], rows: number[], spans?: number[][]): TilePatternDefinition {\n const maxCols = 15;\n const maxRows = 10;\n\n if ((cols.length === 1 && cols[0] > maxCols) || cols.length > maxCols) {\n console.warn(`Pattern exceeds maximum column count which is set to ${maxCols}.`);\n return TilePatternDefinition.singleTile;\n }\n\n if ((rows.length === 1 && rows[0] > maxRows) || rows.length > maxRows) {\n console.warn(`Pattern exceeds maximum row count which is set to ${maxRows}.`);\n return TilePatternDefinition.singleTile;\n }\n\n // TODO: Validate spans. Check if span overlaps, if spans are larger than grid, etc.\n\n const colsDef = this.sanitizeSpacingDefinitions(cols);\n const rowsDef = this.sanitizeSpacingDefinitions(rows);\n\n return new TilePatternDefinition(colsDef, rowsDef, this.getGridCellDefinitions(colsDef.length, rowsDef.length, spans));\n }\n\n /** Creates a TilePatternDefinition from a string definition */\n public static fromDefinition(definition: string): TilePatternDefinition {\n const definitionRegex = /(?\\d+(?::\\d+)*)x(?\\d+(?::\\d+)*)(?(?:\\s*\\[\\d+\\.\\d+\\.\\d+\\.\\d+\\])*)/;\n const matches = definitionRegex.exec(definition);\n\n if (matches) {\n const cols = (matches.groups?.cols ?? '1').split(':').map((n) => parseInt(n));\n const rows = (matches.groups?.rows ?? '1').split(':').map((n) => parseInt(n));\n const spans = (matches.groups?.spans ?? '').match(/\\d+(?:\\.\\d+){3}/g)?.map((m) => m.split('.').map((n) => parseInt(n)));\n\n return this.build(cols, rows, spans);\n }\n\n console.warn('Tile pattern could not be not reified: ' + definition);\n return TilePatternDefinition.singleTile;\n }\n\n /** Given an ITilePattern, returns a dictionary indicating the start position (col/row) of a given tile id.\n * Tile id and start col/row are 1-based.\n * For example: dic[4].startColumn === 1 indicates that the forth tile of the pattern is on the left edge of the grid\n */\n private static getTopLeftPositions(pattern: ITilePattern): { [id: number]: TileBoundary } {\n const cellMapping: number[] = [];\n\n const topLeftLocations: { [id: number]: TileBoundary } = {};\n\n for (let i = 0; i < pattern.rows * pattern.columns; ++i) {\n cellMapping[i] = 0; // init array with tile id 0 (unknown tile id)\n }\n\n const colSpans = pattern.columnSpans.values();\n const rowSpans = pattern.rowSpans.values();\n\n for (let tileId = 1; tileId <= colSpans.length; ++tileId) {\n const colSpan = colSpans[tileId - 1];\n const rowSpan = rowSpans[tileId - 1];\n\n // First free spot\n const index = cellMapping.indexOf(0);\n\n topLeftLocations[tileId] = new TileBoundary((index % pattern.columns) + 1, Math.trunc(index / pattern.columns) + 1);\n\n for (let r = 0; r < rowSpan; ++r) {\n for (let c = 0; c < colSpan; ++c) {\n cellMapping[index + c + r * pattern.columns] = tileId;\n }\n }\n }\n\n return topLeftLocations;\n }\n\n /** Returns an array of TileBoundary defining the boundaries of each cell of the pattern. */\n private static getGridCellDefinitions(colCount: number, rowCount: number, spans?: number[][]): TileBoundary[] {\n const result: TileBoundary[] = [];\n\n // Populate all cells as 1x1\n for (let i = 0; i < rowCount; ++i) {\n for (let j = 0; j < colCount; ++j) {\n result[i * colCount + j] = new TileBoundary(j + 1, i + 1, j + 2, i + 2);\n }\n }\n\n if (spans) {\n for (const span of spans) {\n const startCol = span[0] - 1;\n const startRow = span[1] - 1;\n const width = span[2];\n const height = span[3];\n\n // Set cell span\n const topLeftCellIndex = startRow * colCount + startCol;\n const cell = result[topLeftCellIndex];\n cell.endColumn += width - 1;\n cell.endRow += height - 1;\n\n // Remove cells that are covered by span\n for (let i = startRow; i < startRow + height; ++i) {\n for (let j = startCol; j < startCol + width; ++j) {\n if (topLeftCellIndex !== i * colCount + j) {\n result[i * colCount + j].startColumn = -1;\n }\n }\n }\n }\n }\n\n return result.filter((r) => r.startColumn > 0);\n }\n\n /** Returns an arrow of gird line spacings\n * For example:\n * [3] => [33, 33, 34]\n * [20, 80] => [20, 80]\n * [100, 50] => [67, 33]\n */\n private static sanitizeSpacingDefinitions(values: number[]): number[] {\n let result: number[] = [];\n let total: number = values.reduce((a, b) => a + b, 0);\n if (values.length === 1) {\n // Create equally spaced rows/columns\n for (let i = 0; i < values[0]; ++i) {\n result.push(Math.round(100 / values[0]));\n }\n } else {\n // Normalize total size to 100%\n result = values.map((v) => Math.round((v / total) * 100));\n }\n\n // Adjust last value to get a total of 100%. Might not be the case due to rounding\n total = result.reduce((a, b) => a + b, 0);\n result[result.length - 1] += 100 - total;\n\n return result;\n }\n}\n","import { MeltedIcon } from '@genetec/gelato-angular';\nimport { ITilePattern } from 'RestClient/Client/Interface/ITileLayoutEntity';\nimport { TileBoundary } from './tile-boundary';\nimport { TileItem } from './tile-item';\nimport { TilePatternDefinition } from './tile-pattern-definition';\n\nexport class TilePatternItem {\n //#region Properties\n\n public readonly name: string;\n public readonly definition: string;\n\n // gets the number of tiles\n public get tileCount(): number {\n return this.patternDefinition.gridCellDefinitions.length;\n }\n\n public get uniqueId(): string {\n return this.definition;\n }\n\n private readonly patternDefinition: TilePatternDefinition;\n\n //#endregion\n\n //#region Constructor\n\n constructor(name: string, public icon: MeltedIcon, definition: string) {\n this.name = name;\n this.definition = definition;\n this.patternDefinition = TilePatternDefinition.fromDefinition(this.definition);\n }\n\n //#endregion\n\n //#region Methods\n\n public static fromTilePattern(pattern: ITilePattern): TilePatternItem {\n return new TilePatternItem(pattern.name, MeltedIcon.TilePattern, TilePatternDefinition.toDefinition(pattern));\n }\n\n public static fromJson(json: string): TilePatternItem | undefined {\n try {\n const deserializedObject = JSON.parse(json) as Record;\n\n // Validate most important properties\n if (typeof deserializedObject.name !== 'string' || typeof deserializedObject.definition !== 'string' || typeof deserializedObject.icon !== 'string') {\n throw new Error('json string does not represent a valid TilePatternItem');\n }\n\n return new TilePatternItem(deserializedObject.name, deserializedObject.icon as MeltedIcon, deserializedObject.definition);\n } catch (error: unknown) {\n return undefined;\n }\n }\n\n public toJson(): string {\n return JSON.stringify(this);\n }\n\n public getGridTemplateColumns(): string {\n return this.patternDefinition.columnDefinitions.map((i) => i.toString() + 'fr ').join(' ');\n }\n\n public getGridTemplateRows(): string {\n return this.patternDefinition.rowDefinitions.map((i) => i.toString() + 'fr ').join(' ');\n }\n\n public createTiles(existingTiles: TileItem[]): TileItem[] {\n const tiles: TileItem[] = [];\n\n // determine the number of tiles to create\n const count = this.patternDefinition.gridCellDefinitions.length;\n\n // build each tile\n for (let tileId = 0; tileId < count; ++tileId) {\n const cellSpanDef = this.patternDefinition.gridCellDefinitions[tileId];\n\n const boundary = new TileBoundary(cellSpanDef.startColumn, cellSpanDef.startRow, cellSpanDef.endColumn, cellSpanDef.endRow);\n let tile = new TileItem(tileId + 1, boundary);\n\n const existingTile = existingTiles.find((item) => item.id === tileId + 1);\n if (existingTile) {\n existingTile.boundary = boundary;\n tile = existingTile;\n }\n tiles.push(tile);\n }\n\n return tiles;\n }\n\n //#endregion\n}\n\nexport class HighlightTilePatternItem extends TilePatternItem {\n constructor(public name: string, public icon: MeltedIcon) {\n super(name, icon, '3x3 [1.1.2.2]');\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { isDraft, original } from 'immer';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { TilePatternItem } from '../models/tile-pattern-item';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { Receiver, Selector } from '../../../store';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface TileCanvasStateModel {\n contents: (ContentGroup | null)[];\n contentUpdateId: IGuid | undefined;\n tilePattern: TilePatternItem;\n selectedTile: number;\n}\n\nexport interface ContentChange {\n content: ContentGroup;\n tileId: number;\n}\n\n// Interface used to swat contents from one tile to another\nexport interface ContentMove {\n // Id of the source tile content\n sourceTileId: number;\n\n // Id of the destination tile content\n destinationTileId: number;\n\n // Flag indicating if the contents should be swap between source and destination tiles\n swapContents: boolean;\n}\n\nexport const defaultTilePattern = new TilePatternItem('2x2', MeltedIcon.Layout2X2, '2x2');\n\nconst initializeContents = (size: number): (ContentGroup | null)[] => {\n const contents: (ContentGroup | null)[] = [];\n for (let index = 0; index < size; index++) {\n contents[index] = null;\n }\n return contents;\n};\n\nconst initializeTileHistory = () => {\n const tilesHistory = new Array(maxTileCount);\n tilesHistory.fill([]);\n return tilesHistory;\n};\nconst maxTileCount = 64;\n\n@State({\n name: 'tileCanvasState',\n defaults: {\n contents: initializeContents(defaultTilePattern.tileCount),\n tilePattern: defaultTilePattern,\n selectedTile: -1,\n contentUpdateId: undefined,\n },\n})\n@Injectable()\nexport class TileCanvasState {\n private static tileHistorySize = 10;\n // TODO: Fix these weird static variables that behaves like the state.\n private static allCurrentContents = initializeContents(maxTileCount);\n private static tilesHistory = initializeTileHistory();\n\n private static getContent(content: ContentGroup | null) {\n let returnedContent = content;\n if (isDraft(returnedContent)) {\n const originalContent = original(content);\n if (originalContent) {\n returnedContent = originalContent;\n }\n }\n return returnedContent;\n }\n\n private static trySetContent(contents: (ContentGroup | null)[], index: number, content: ContentGroup | null): boolean {\n if (index < contents.length) {\n const previousContent = contents[index];\n contents[index] = content;\n this.allCurrentContents[index] = content;\n if (previousContent) {\n const tileHistory = this.tilesHistory[index];\n tileHistory.unshift(previousContent);\n // Keep one extra content as buffer in case change is rejected\n if (tileHistory.length > this.tileHistorySize + 1) {\n tileHistory.pop();\n }\n }\n return true;\n }\n return false;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n @Selector()\n public static contents(state: TileCanvasStateModel): (ContentGroup | null)[] {\n return state.contents;\n }\n\n @Selector()\n public static contentUpdateId(state: TileCanvasStateModel): IGuid | undefined {\n return state.contentUpdateId;\n }\n\n @Selector()\n public static tilePattern(state: TileCanvasStateModel): TilePatternItem {\n return state.tilePattern;\n }\n\n @Selector()\n public static selectedTile(state: TileCanvasStateModel): number {\n return state.selectedTile;\n }\n\n /* eslint-enable @typescript-eslint/unbound-method */\n\n @Receiver()\n public static moveContent({ setState }: StateContext, { payload }: EmitterAction): void {\n if (!payload) {\n return;\n }\n\n setState((state: TileCanvasStateModel) => {\n const sourceTileIndex = payload.sourceTileId - 1;\n const destinationTileIndex = payload.destinationTileId - 1;\n const sourceTileContent = this.getContent(state.contents[sourceTileIndex]);\n const destinationTileContent = this.getContent(state.contents[destinationTileIndex]);\n\n this.trySetContent(state.contents, destinationTileIndex, sourceTileContent);\n this.trySetContent(state.contents, sourceTileIndex, payload.swapContents ? destinationTileContent : null);\n state.contentUpdateId = SafeGuid.newGuid();\n return state;\n });\n }\n\n @Receiver()\n public static clearTiles({ setState }: StateContext, { payload }: EmitterAction): void {\n if (!payload) {\n setState((state: TileCanvasStateModel) => {\n for (let index = 0; index < state.contents.length; index++) {\n this.trySetContent(state.contents, index, null);\n }\n state.contentUpdateId = SafeGuid.newGuid();\n return state;\n });\n } else {\n setState((state: TileCanvasStateModel) => {\n for (const tileId of payload) {\n const index = tileId - 1;\n if (index > -1 && index < state.contents.length) {\n this.trySetContent(state.contents, index, null);\n }\n }\n state.contentUpdateId = SafeGuid.newGuid();\n return state;\n });\n }\n }\n\n @Receiver()\n public static selectTile({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: TileCanvasStateModel) => {\n if (payload) {\n state.selectedTile = payload;\n } else {\n state.selectedTile = -1;\n }\n return state;\n });\n }\n\n @Receiver()\n public static setTilePattern({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: TileCanvasStateModel) => {\n state.tilePattern = payload;\n if (payload.tileCount !== state.contents.length) {\n if (payload.tileCount > state.contents.length) {\n for (let index = state.contents.length; index < payload.tileCount; index++) {\n state.contents[index] = this.allCurrentContents[index];\n }\n } else {\n state.contents.splice(payload.tileCount, state.contents.length - payload.tileCount);\n }\n state.contentUpdateId = SafeGuid.newGuid();\n }\n return state;\n });\n }\n\n @Receiver()\n public static changeContent({ getState, setState }: StateContext, { payload }: EmitterAction): void {\n if (!payload || !payload.content || !payload.content.mainContent || payload.content.id.isEmpty()) {\n return;\n }\n\n const currentState = getState();\n\n const index = payload.tileId - 1;\n if (index > -1 && index < currentState.contents.length) {\n setState((state: TileCanvasStateModel) => {\n this.trySetContent(state.contents, index, this.getContent(payload.content));\n state.contentUpdateId = SafeGuid.newGuid();\n return state;\n });\n } else {\n console.log('A tile id should be specified.');\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { IGuid } from 'safeguid';\nimport { AsyncEventDispatcher } from 'RestClient/Helpers/Helpers';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TilePatternItem } from '../models/tile-pattern-item';\nimport { SecurityCenterStateService } from '../../shared/services/state/security-center-state.service';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { MethodEmitter, StateEmitter } from '../../../store';\nimport { TileCanvasState, defaultTilePattern, ContentChange, ContentMove } from './tile-canvas.state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface PendingContentChange extends ContentChange {\n changesAccepted: boolean;\n}\n\n@UntilDestroy()\n@Injectable()\nexport class TileCanvasStateService extends SecurityCenterStateService implements OnDestroy {\n public static get defaultTilePattern(): TilePatternItem {\n return defaultTilePattern;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n @Select(TileCanvasState.contentUpdateId)\n public contentUpdateIdChanged$!: Observable;\n\n @SelectSnapshot(TileCanvasState.contents)\n public contents!: (ContentGroup | null)[];\n\n @Select(TileCanvasState.tilePattern)\n public tilePatternChanged$!: Observable;\n\n @Select(TileCanvasState.selectedTile)\n public selectedTileChanged$!: Observable;\n\n @SelectSnapshot(TileCanvasState.selectedTile)\n public selectedTile!: number | undefined;\n\n @MethodEmitter(TileCanvasState.clearTiles)\n public clearTiles!: StateEmitter;\n\n @MethodEmitter(TileCanvasState.selectTile)\n public selectTile!: StateEmitter;\n\n @MethodEmitter(TileCanvasState.setTilePattern)\n public setTilePattern!: StateEmitter;\n\n @MethodEmitter(TileCanvasState.moveContent)\n public emitMoveContent!: StateEmitter;\n\n @MethodEmitter(TileCanvasState.changeContent)\n public emitChangeContent!: StateEmitter;\n\n public get contentsChanged$(): Subject<(ContentGroup | null)[]> {\n this.setContentUpdateIdSubscription();\n return this.internalContentsChanged$;\n }\n\n public readonly contentMoved$ = new Subject();\n public readonly contentChanging$ = new AsyncEventDispatcher();\n\n private contentUpdateIdSubscription?: Subscription;\n private internalContentsChanged$ = new Subject<(ContentGroup | null)[]>();\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n super(securityCenterProvider);\n }\n\n public clearTile(tileId: number): void {\n this.clearTiles([tileId]);\n }\n\n public moveContent(move: ContentMove): void {\n this.contentMoved$.next(move);\n this.emitMoveContent(move);\n }\n\n public ngOnDestroy() {\n this.clearState();\n }\n\n public changeContent(tileId: number, content: ContentGroup): void {\n if (content) {\n const index = tileId - 1;\n const contents = this.contents;\n if (index > -1 && index < contents.length) {\n contents[index] = content;\n const contentChange = {\n tileId,\n content,\n changesAccepted: false,\n };\n this.handleChangeContentAsync(contentChange).catch(() => {});\n }\n }\n }\n\n protected clearState(): void {\n super.clearState();\n this.clearContentUpdateIdSubscription();\n this.clearTiles(null);\n }\n\n private clearContentUpdateIdSubscription(): void {\n if (this.contentUpdateIdSubscription) {\n this.contentUpdateIdSubscription.unsubscribe();\n this.contentUpdateIdSubscription = undefined;\n }\n }\n\n private async handleChangeContentAsync(contentChange: PendingContentChange): Promise {\n await this.contentChanging$.dispatch(contentChange);\n if (contentChange.changesAccepted) {\n this.emitChangeContent(contentChange);\n }\n }\n\n private setContentUpdateIdSubscription(): void {\n if (!this.contentUpdateIdSubscription) {\n this.contentUpdateIdSubscription = this.contentUpdateIdChanged$.pipe(untilDestroyed(this)).subscribe(() => this.internalContentsChanged$.next(this.contents));\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TilesTaskEventService {\n public tilePatternChanged$: Observable;\n public fullscreenChanged$: Observable;\n\n private tilePatternChangedSubject = new Subject();\n private fullscreenChangedSubject = new Subject();\n\n constructor() {\n this.tilePatternChanged$ = this.tilePatternChangedSubject.asObservable();\n this.fullscreenChanged$ = this.fullscreenChangedSubject.asObservable();\n }\n\n /**\n * Emits a new value in the tilePatternChanged$ observable to those who are interested in that event.\n */\n public publishTilePatternChangedEvent(): void {\n this.tilePatternChangedSubject.next();\n }\n\n /**\n * Emits a new value in the fullscreenChanged$ observable to those who are interested in that event.\n */\n public publishFullscreenChangedEvent(): void {\n this.fullscreenChangedSubject.next();\n }\n}\n","import { ComponentRef, Injectable, TemplateRef, ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injector, ViewContainerRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { GenPopup } from '@genetec/gelato-angular';\nimport { PopupPosition } from '@genetec/gelato';\nimport { TilesTaskEventService } from '@modules/tiles/components/tiles-task/services/tiles-task-event.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { filter } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class PtzPopupService {\n public viewContainerRef: ViewContainerRef | undefined;\n\n // private\n private popupTracker = SafeGuid.createMap>();\n\n constructor(\n private injector: Injector,\n private applicationRef: ApplicationRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private router: Router,\n private tileTaskService: TilesTaskEventService,\n private authService: AuthService\n ) {\n // If a user changes to another route, make sure to clear state.\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.destroyAllPopups();\n });\n\n // If user goes into fullscreen, it will hide the popup, so we might as well destroy it, in case the user wants to create a new one.\n this.tileTaskService.fullscreenChanged$.pipe(untilDestroyed(this)).subscribe(() => {\n this.destroyAllPopups();\n });\n\n // If pattern changes, try to destroy all opened ptz popup as there is a high chance they won't be displayed properly.\n this.tileTaskService.tilePatternChanged$.pipe(untilDestroyed(this)).subscribe(() => {\n this.destroyAllPopups();\n });\n\n // Register to LogonState change, if we log out, clear all popups.\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((isLoggedIn) => {\n if (!isLoggedIn) {\n this.destroyAllPopups();\n }\n });\n }\n\n // public methods\n /**\n * Creates and tracks a popup. This method does not call .openPopup on it. You have to call it yourself.\n *\n * @param templateRef ptz component\n * @param coords where you want the popup to show\n * @param key id to associate with the popup in the tracker\n *\n * @returns the key used to store the popup in the tracker.\n * null if the popup already exists\n */\n public createPtzPopupRef(templateRef: TemplateRef, key: IGuid, targetSelector: string): HTMLGenPopupElement | null {\n // check if key is already inserted.\n if (this.popupTracker.has(key)) {\n return null;\n }\n\n // Create a GenPopup\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(GenPopup);\n const ptzPopupRef = componentFactory.create(this.injector);\n\n if (ptzPopupRef) {\n ptzPopupRef.instance.position = PopupPosition.Top;\n ptzPopupRef.instance.targetSelector = targetSelector;\n ptzPopupRef.instance.staysOpen = false;\n\n // Add to tracker.\n this.popupTracker.set(key, ptzPopupRef);\n\n // Place popup in correct location in DOM\n this.applicationRef.attachView(ptzPopupRef.hostView);\n const domElement = this.extractHTMLPopupFromRef(ptzPopupRef);\n domElement.id = key.toString();\n\n // Append to the gen-design-system-provider in order to use Gelato styles or the fullscreen element if there is one\n let appendToElement;\n if (document.fullscreenEnabled && document.fullscreenElement) {\n appendToElement = document.fullscreenElement;\n } else {\n appendToElement = document.querySelector('gen-design-system-provider');\n }\n appendToElement?.appendChild(domElement);\n\n // Append the template to the popup for rendering\n const embeddedView = this.viewContainerRef?.createEmbeddedView(templateRef);\n embeddedView?.rootNodes.forEach((rootNode) => {\n domElement.appendChild(rootNode);\n });\n\n // Return the key used in the tracker.\n return domElement;\n }\n return null;\n }\n\n /**\n * Returns the current state of the requested popup\n *\n * @param key id of the popup to retrieve in the tracker\n * @returns the state of the popup. If for any reasons the popup does not exist, state returned will be \"Closed\"\n */\n public getPopupState(key: IGuid): boolean {\n const popup = this.popupTracker.get(key);\n if (popup) {\n return popup.instance.open;\n }\n return false;\n }\n\n /**\n * Based on the current state of the popup associated to the key passed in argument, it will either close or show.\n *\n * @param key key associated to the popup in the popup tracker.\n * @param targetSelector where you want the popup to show.\n */\n public async togglePopup(key: IGuid, targetSelector?: string): Promise {\n const domElement = this.extractHTMLPopupFromKey(key);\n if (domElement?.open) {\n await this.closePopup(key);\n } else {\n await this.openPopup(key, targetSelector);\n }\n }\n\n /**\n * Shows a popup that was already in the DOM\n *\n * @param key associated to the popup.\n * @param targetSelector where you want the popup to show.\n */\n public async openPopup(key: IGuid, targetSelector?: string): Promise {\n const domElement = this.extractHTMLPopupFromKey(key);\n if (targetSelector) {\n const popup = this.popupTracker.get(key);\n if (popup) {\n popup.instance.targetSelector = targetSelector;\n }\n }\n if (!domElement?.open) {\n await domElement?.show();\n }\n }\n /**\n * Simply hides the popup from the view.\n *\n * @param key associated to the popup.\n */\n public async closePopup(key: IGuid): Promise {\n const domElement = this.extractHTMLPopupFromKey(key);\n if (domElement?.open) {\n await domElement.close();\n }\n }\n\n /**\n * Goes through every tracked popup instance, and hides them.\n */\n public async closeAllPopups(): Promise {\n for await (const [guid, item] of this.popupTracker) {\n const popup = this.extractHTMLPopupFromRef(item);\n\n if (popup.open) {\n await popup.close();\n }\n }\n }\n\n /**\n * Goes through every tracked popup instance, and opens them.\n */\n public async openAllPopups(): Promise {\n for await (const [guid, item] of this.popupTracker) {\n const popup = this.extractHTMLPopupFromRef(item);\n if (popup.open) {\n await popup.show();\n }\n }\n }\n\n /**\n * Goes through every tracked popup instance and deletes them. Removes them from the tracker as well.\n */\n public destroyAllPopups(): void {\n this.popupTracker.forEach((item) => {\n item.destroy();\n });\n this.popupTracker.clear();\n }\n\n /**\n * Completely removes from the DOM the tracked popup instance by key.\n * Also removes the tracked instance from the tracker.\n *\n * @param key associated to the popup.\n */\n public async destroyPopup(key: IGuid): Promise {\n const popup = this.popupTracker.get(key) ?? null;\n if (popup) {\n await popup.instance.close();\n popup.destroy();\n this.popupTracker.delete(key);\n }\n }\n\n private extractHTMLPopupFromKey(key: IGuid): HTMLGenPopupElement | null {\n const popup = this.popupTracker.get(key);\n if (popup) {\n return (popup.hostView as EmbeddedViewRef).rootNodes[0] as HTMLGenPopupElement;\n } else {\n return null;\n }\n }\n\n private extractHTMLPopupFromRef(item: ComponentRef): HTMLGenPopupElement {\n return (item.hostView as EmbeddedViewRef).rootNodes[0] as HTMLGenPopupElement;\n }\n}\n","import { GenModalService } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Injectable } from '@angular/core';\nimport { TileCanvasStateService } from '../state/tile-canvas-state.service';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\n\n/*\n * The CarouselService determines how to render contents in a tile layout\n */\n\n@Injectable()\nexport class CarouselService {\n static readonly firstTileId = 1;\n\n constructor(private tilesTaskStateService: TileCanvasStateService, private modalService: GenModalService, private translateService: TranslateService) {}\n\n public getFirstAvailableTileId(): number | null {\n const all = this.tilesTaskStateService?.contents;\n const tileCount = all.length;\n for (let tileId = 1; tileId <= tileCount; ++tileId) {\n if (this.isEmpty(all[tileId - 1])) {\n return tileId;\n }\n }\n return null;\n }\n\n public displayContent(content: ContentGroup): void {\n this.displayContents([content], false);\n }\n\n public displayContents(contents: ContentGroup[] | null, clear: boolean): void {\n if (contents) {\n // if the tiles need to be cleared\n if (clear) {\n this.tilesTaskStateService?.clearTiles(null);\n // apply the content for each tiles\n // the contents array should have a content for each tile\n for (let i = 0; i < contents.length; ++i) {\n const contentGroup = contents[i];\n // update the content even if it's null. Please note that tile id is 1 based\n this.tilesTaskStateService?.changeContent(i + 1, contentGroup);\n }\n } else {\n // retrieve the list of all contents\n const all = this.tilesTaskStateService?.contents;\n if (all) {\n let placedContents = 0;\n for (const contentGroup of contents) {\n // find the first available tile\n const availableTileId = this.getFirstAvailableTileId();\n if (availableTileId) {\n this.tilesTaskStateService?.changeContent(availableTileId, contentGroup);\n placedContents++;\n } else {\n break;\n }\n }\n\n // determine if we are missing tiles to display contents\n if (placedContents < contents.length) {\n if (contents.length === 1) {\n // Special case.\n // If all tiles are occupied and we only have one content to place, reuse tile #1 (same as Web Client)\n this.tilesTaskStateService?.changeContent(CarouselService.firstTileId, contents[0]);\n } else {\n const title = this.translateService.instant('STE_LABEL_ERROR') as string;\n const message = this.translateService.instant('STE_MESSAGE_ERROR_NOTENOUGHFREETILES') as string;\n const close = this.translateService.instant('STE_BUTTON_CLOSE') as string;\n\n this.modalService.showMessage(title, message, close).fireAndForget();\n }\n }\n }\n }\n }\n }\n\n private isEmpty(content: ContentGroup | null | undefined): boolean {\n if (content) {\n if (!content.id.isEmpty()) {\n return false;\n }\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IGuid } from 'safeguid';\nimport { PluginsStack } from '../../shared/components/plugins/plugins-stack';\nimport { ContentGroup } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '../../shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '../../shared/services/content/content-provider.service';\nimport { PluginService } from '../../shared/services/plugin/plugin.service';\nimport { TilesConstants } from '../enumerations/tiles-constants';\nimport { TileItem } from '../models/tile-item';\n\n@Injectable()\nexport class TileService {\n constructor(private pluginService: PluginService, private contentProviderService: ContentProviderService) {}\n\n public async tryUpdateTileContentAsync(tile: TileItem, content: ContentGroup | null, dryRun: boolean): Promise {\n if (content && (!tile.content || content.id !== tile.content.id)) {\n if (!content.id.isEmpty()) {\n await this.updateTileContent(tile, content, dryRun);\n return true;\n }\n }\n return false;\n }\n\n public async tryDisplayEntityInTileAsync(tile: TileItem, entityId: IGuid): Promise {\n // build a content to display in the tiles\n const contentGroup = await this.contentProviderService.getContentAsync(entityId, TilesConstants.TilesContentContextId);\n if (contentGroup) {\n return await this.tryUpdateTileContentAsync(tile, contentGroup, false);\n }\n return false;\n }\n\n /**\n * Use this method when the main content of the tile remains the same, but the subContents have changed.\n * For example, navigation arrows on a video player that supports multiple cameras.\n *\n * @param tile tile in which the update occurs\n * @param content the \"altered\" content of the tile (usually only the subContents order will be different. The first item in the array is the one displayed)\n * @param dryRun if true, only a \"dry-run\" will be run.\n * @returns if the call succeeded, false otherwise.\n */\n public async tryUpdateTileSubContentsAsync(tile: TileItem, content: ContentGroup, dryRun: boolean): Promise {\n if (content) {\n if (!content.id.isEmpty()) {\n await this.updateTileContent(tile, content, dryRun);\n return true;\n }\n }\n return false;\n }\n\n private async updateTileContent(tile: TileItem, content: ContentGroup, dryRun: boolean) {\n const pluginsSupported = await this.pluginService.getPlugins(PluginTypes.Tile, content.mainContent);\n\n if (content.subContents) {\n for (const subContent of content.subContents) {\n const subPlugins = await this.pluginService.getPlugins(PluginTypes.Tile, subContent);\n subPlugins.forEach((item) => {\n pluginsSupported.push(item);\n });\n }\n }\n\n // sort by priority\n const allPlugins = pluginsSupported.sort((p1, p2) => {\n const priority1 = p1 === undefined || p1.exposure.priority === undefined ? 0 : p1.exposure.priority;\n const priority2 = p2 === undefined || p2.exposure.priority === undefined ? 0 : p2.exposure.priority;\n\n return priority1 - priority2;\n });\n\n if (allPlugins && allPlugins.length > 0) {\n if (!dryRun) {\n tile.content = content;\n\n const pluginsStack = new PluginsStack();\n pluginsStack.fill(allPlugins);\n\n // be sure to update the reference here to trigger a change\n tile.pluginsStack = pluginsStack;\n }\n }\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const AccessControlContentTypes = Constants({\n Door: SafeGuid.parse('096d174f-ba2a-4b8f-992c-749892285ed8'),\n Cardholder: SafeGuid.parse('ab02dcf5-1eda-4289-82d4-1afb72aa87e0'),\n Credential: SafeGuid.parse('2BB85BB5-0DBE-4F0C-BD0B-94EBD536A332'),\n Event: SafeGuid.parse('7fe628e8-668a-4807-9533-71122fefdd12'),\n Reader: SafeGuid.parse('5D5613E4-B0D7-4E95-BA50-9EF0542796AA'),\n});\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const ZoneContentTypes = Constants({\n Zone: SafeGuid.parse('5AD7B3F2-FA5C-4089-A239-C93F99AC002E'),\n Event: SafeGuid.parse('CAEE2C45-3B93-456E-8FEF-7D7E33FFBEB7'),\n});\n","import { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class VideoContentTypes {\n public static Video = SafeGuid.parse('698a0b80-26c2-42f9-b6a4-dadc88265ded');\n public static Event = SafeGuid.parse('2E6999E3-ECDF-4A65-8110-3A4C01267DA9');\n}\n","\n \n {{ 'STE_LABEL_SHOWTILENUMBER' | translate }}\n \n \n {{ 'STE_BUTTON_RADIO_ALWAYSDISPLAYTILENUMBER' | translate }}\n \n \n \n \n {{ 'STE_BUTTON_RADIO_NEVERDISPLAYTILENUMBER' | translate }}\n \n \n \n \n {{ 'STE_BUTTON_RADIO_WHENHOVERINGDISPLAYTILENUMBER' | translate }}\n \n \n \n\n\n\n \n\n\n\n
    \n \n
    \n
    \n","import { Component, Inject, OnInit } from '@angular/core';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-tiles-options',\n templateUrl: './tiles-options.component.html',\n})\n@InternalPluginDescriptor({\n type: TilesOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: TilesOptionsComponent.pluginId,\n subSection: OptionSubSections.Tiles,\n },\n isSupported: () => true,\n requirements: { enabledFeatureFlags: [GeneralFeatureFlags.EntityState] },\n})\nexport class TilesOptionsComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('A76B4F23-79C3-4A59-848A-D9E75470F747');\n\n public static readonly TileHeaderVisibilityId = 'TileHeaderVisibility';\n public readonly TileHeaderStateOptions = TileNumberDisplayPreference;\n\n public tileHeaderVisibility?: TileNumberDisplayPreference;\n public isInitialized = false;\n public isContentVisible = false;\n\n private readonly tileHeaderVisibilityDefaultValue = TileNumberDisplayPreference.Always;\n constructor(trackingService: TrackingService, @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService) {\n super(trackingService);\n }\n\n ngOnInit() {\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.Appearance);\n if (contentVisibility) {\n this.isContentVisible = true;\n this.tileHeaderVisibility = this.userSettingsService.get(OptionTypes.Appearance, TilesOptionsComponent.TileHeaderVisibilityId);\n if (!this.tileHeaderVisibility) {\n // set default value in settings.\n this.userSettingsService.set(OptionTypes.Appearance, TilesOptionsComponent.TileHeaderVisibilityId, this.tileHeaderVisibilityDefaultValue);\n this.tileHeaderVisibility = this.tileHeaderVisibilityDefaultValue;\n }\n }\n\n this.isInitialized = true;\n }\n\n public onTileHeaderVisibilityChange(): void {\n this.userSettingsService.set(OptionTypes.Appearance, TilesOptionsComponent.TileHeaderVisibilityId, this.tileHeaderVisibility);\n }\n}\n\nexport enum TileNumberDisplayPreference {\n Always = 'Always',\n Never = 'Never',\n OnlyWhenHovering = 'OnlyWhenHovering',\n}\n","\n \n \n \n\n \n \n \n\n\n\n \n \n \n
    \n \n \n \n {{ tileNumber }}\n \n\n \n
    \n \n
    \n
    \n
    \n
    \n\n \n \n \n \n \n \n \n
    \n
    \n\n\n \n\n\n\n
    {{ 'STE_LABEL_NO_DATA_AVAILABLE' | translate }}
    \n
    \n\n\n
    \n \n \n {{ tileNumber }}\n \n \n
    \n
    \n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { TileNumberDisplayPreference } from '@modules/general/components/options/tiles-options/tiles-options.component';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { Content, ContentGroup } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { TileHeaderService } from './services/tile-state-header.service';\n\n@Component({\n selector: 'app-tile-state-header',\n templateUrl: './tile-state-header.component.html',\n styleUrls: ['./tile-state-header.component.scss'],\n animations: [\n trigger('fadeSlideIn', [transition(':enter', [style({ opacity: 0, transform: 'translateY(10px)' }), animate('500ms', style({ opacity: 1, transform: 'translateY(0)' }))])]),\n ],\n})\nexport class TileStateHeaderComponent implements OnInit, OnDestroy {\n @Input()\n public tileState!: TileItem | null;\n\n @Input()\n public tileHostElement!: ElementRef;\n\n public readonly TileHeaderVisibility = TileDetailsVisibility;\n public readonly TileNumberDisplayPreference = TileNumberDisplayPreference;\n public readonly TileNumberVisibility = TileNumberVisibility;\n\n public tileHeaderVisibility?: TileDetailsVisibility;\n public pluginItem?: PluginItem;\n public tileStateHeaderContext!: TileStateHeaderContext;\n public tileNumberDisplayPreference?: TileNumberDisplayPreference;\n public tileNumberVisibility$: Observable;\n public tileHeaderVisible$: Observable;\n public hasTileHeaderFeatureFlag?: boolean;\n\n public get tileNumber(): number {\n return this.tileState?.id ?? 0;\n }\n\n public get content(): ContentGroup | null {\n return this.tileState?.content ?? null;\n }\n\n private onDestroySubject$ = new Subject();\n\n constructor(\n private pluginService: PluginService,\n private tileHeaderService: TileHeaderService,\n private advancedSettingsService: AdvancedSettingsService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {\n this.hasTileHeaderFeatureFlag = GeneralFeatureFlags.EntityState.isEnabled(this.advancedSettingsService);\n\n // Should be done this way because @UntilDestroy() cause a circular dependency injection\n this.tileHeaderService.tileDetailsVisibility$.pipe(takeUntil(this.onDestroySubject$)).subscribe((visibility: TileDetailsVisibility) => {\n this.tileHeaderVisibility = visibility;\n });\n\n this.tileHeaderVisible$ = this.tileHeaderService.tileDetailsVisibility$.pipe(map((visibility) => visibility !== TileDetailsVisibility.Hidden));\n this.tileNumberVisibility$ = this.tileHeaderService.tileNumberVisibility$;\n }\n\n ngOnDestroy(): void {\n this.onDestroySubject$.next();\n this.onDestroySubject$.complete();\n }\n\n async ngOnInit() {\n if (this.tileState) {\n // push the initial state in the service.\n this.tileHeaderService.updateState(this.tileState);\n\n const pluginItems = await this.pluginService.getPlugins(PluginTypes.TileHeader, this.content?.mainContent);\n // PluginItems are sorted by priority. Take the first on top.\n this.pluginItem = pluginItems[0];\n\n if (this.pluginItem) {\n // Add our plugin commands to the tileState commands for context menu and keyboard shortcuts\n const usage = await this.commandsService.getCommandsUsage(\n { type: ContextTypes.Content, data: this.pluginItem.data },\n this.pluginItem?.exposure?.availableCommands,\n false,\n this.tileHostElement?.nativeElement\n );\n this.tileState.commandsUsages.addUsage(usage);\n }\n }\n }\n}\n\nexport interface TileStateHeaderContext {\n tileItem: TileItem;\n contextSubContent?: Content[];\n}\n\nexport enum TileDetailsVisibility {\n Hidden = 'Hidden',\n Partial = 'Partial',\n Full = 'Full',\n}\n\nexport enum TileNumberVisibility {\n Shown = 'Shown',\n Hidden = 'Hidden',\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { Inject, Injectable } from '@angular/core';\nimport { TileNumberDisplayPreference, TilesOptionsComponent } from '@modules/general/components/options/tiles-options/tiles-options.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TileDetailsVisibility, TileNumberVisibility } from '../tile-state-header.component';\n\n@UntilDestroy()\n@Injectable()\n/**\n * A unique instance of this service will be provided for each tile present in the tile canvas.\n *\n * This services relays state information such as mouseOver state, and also reads from application Storage the preferences over whether we should\n * display only the tileNumber, or the partial tile header.\n */\nexport class TileHeaderService {\n private stateSubject = new BehaviorSubject(null);\n public state$ = this.stateSubject.asObservable();\n\n /**\n * Whether the tile details are fully shown, compact, or hidden.\n */\n public tileDetailsVisibility$: Observable;\n\n /**\n * Whether the tile number is shown or not.\n */\n public tileNumberVisibility$: Observable;\n\n /**\n * Options -> Video -> Show tile number\n * */\n private tileNumberVisibilitySubject: BehaviorSubject;\n private tileNumberDisplayPreference: TileNumberDisplayPreference;\n\n private tileDetailsVisibilitySubject: BehaviorSubject;\n private tileDetailsVisibility: TileDetailsVisibility = TileDetailsVisibility.Partial;\n\n constructor(@Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService) {\n this.tileDetailsVisibilitySubject = new BehaviorSubject(TileDetailsVisibility.Partial);\n this.tileDetailsVisibility$ = this.tileDetailsVisibilitySubject.asObservable();\n\n this.tileNumberDisplayPreference =\n this.userSettingsService.get(OptionTypes.Appearance, TilesOptionsComponent.TileHeaderVisibilityId) ||\n TileNumberDisplayPreference.OnlyWhenHovering;\n\n this.tileNumberVisibilitySubject = new BehaviorSubject(TileNumberVisibility.Hidden);\n this.tileNumberVisibility$ = this.tileNumberVisibilitySubject.asObservable();\n\n this.userSettingsService.onSettingsChanged$.pipe(untilDestroyed(this)).subscribe(() => {\n this.readFromAppStorage();\n });\n }\n\n /**\n * Pushes a new state in the observable pipeline. And also pushes new visibility based on mouseOver state.\n *\n * @param state TileItem state.\n */\n public updateState(state: TileItem): void {\n this.stateSubject.next(state);\n\n switch (this.tileNumberDisplayPreference) {\n case TileNumberDisplayPreference.Always:\n this.tileNumberVisibilitySubject.next(TileNumberVisibility.Shown);\n break;\n case TileNumberDisplayPreference.Never:\n this.tileNumberVisibilitySubject.next(TileNumberVisibility.Hidden);\n break;\n case TileNumberDisplayPreference.OnlyWhenHovering:\n this.tileNumberVisibilitySubject.next(state.isMouseOver || state.isSelected ? TileNumberVisibility.Shown : TileNumberVisibility.Hidden);\n break;\n }\n\n if (state.isMouseOver || state.isSelected) {\n this.tileDetailsVisibilitySubject.next(TileDetailsVisibility.Full);\n } else {\n this.tileDetailsVisibilitySubject.next(this.tileDetailsVisibility);\n }\n }\n\n private readFromAppStorage(): void {\n // Read from storage chosen option.\n this.tileNumberDisplayPreference =\n this.userSettingsService.get(OptionTypes.Appearance, TilesOptionsComponent.TileHeaderVisibilityId) ||\n TileNumberDisplayPreference.OnlyWhenHovering;\n\n // push default tileDetailsVisibility\n this.tileDetailsVisibilitySubject.next(TileDetailsVisibility.Partial);\n\n this.updateCurrentState();\n }\n\n private updateCurrentState(): void {\n const currentState = this.stateSubject.getValue();\n if (currentState) {\n this.updateState(currentState);\n }\n }\n}\n","
    \n \n \n \n \n \n
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n","import { Component, ElementRef, HostBinding, HostListener, Inject, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { AccessControlContentTypes } from '@modules/access-control/enumerations/access-control-content-types';\nimport { ZoneContentTypes } from '@modules/general/enumerations/zone-content-types';\nimport { NavigationPluginHostComponent } from '@modules/shared/components/plugins/navigation-plugin-host/navigation-plugin-host.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { DragDropTypes } from '@modules/shared/enumerations/drag-drop-types';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { FullscreenService } from '@modules/shared/services/fullscreen/fullscreen.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TileBoundary } from '@modules/tiles/models/tile-boundary';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { VideoContentTypes } from '@modules/video/enumerations/video-content-types';\nimport { SafeGuid } from 'safeguid';\nimport { TileHeaderService } from '@modules/tiles/components/tile-state-header/services/tile-state-header.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: TileComponent.selector,\n templateUrl: './tile.component.html',\n styleUrls: ['./tile.component.scss'],\n providers: [TileHeaderService],\n})\nexport class TileComponent extends TrackedComponent implements OnDestroy, OnInit {\n public static pluginId = SafeGuid.parse('D806B5D4-99D7-4907-ADC5-59E123257A62');\n public static selector = 'app-tile';\n public static supportedDragTypes = ['sc-content', 'sc-tile', 'text/plain', DragDropTypes.EntityId];\n\n /**\n * This is needed for the entity-state-overlay plugin to allow the user to change current video feed (camera)\n */\n @ViewChildren('navigationPluginHost') navigationPlugins!: QueryList;\n\n @HostBinding('class.isDraggingOver') public get isDraggingOver(): boolean {\n return this.state.isDraggingOver;\n }\n\n @HostBinding('class.expanded') public get isExpanded(): boolean {\n return this.state.isExpanded;\n }\n\n @Input() public canDrag!: boolean;\n @Input() public set state(state: TileItem) {\n this.#state = state;\n this.tileHeaderService.updateState(state);\n }\n public get state(): TileItem {\n return this.#state as TileItem;\n }\n\n @Input() public set isFullscreen(value: boolean) {\n if (value) {\n this.fullscreenService.enterFullscreenFor(this.hostElement).fireAndForget();\n } else {\n this.fullscreenService.exitFullscreen().fireAndForget();\n }\n }\n\n @Input()\n @HostBinding('class.selected')\n public get isSelected(): boolean {\n return this.state.isSelected;\n }\n public set isSelected(value: boolean) {\n this.state.isSelected = value;\n this.tileHeaderService.updateState(this.state);\n if (value) {\n this.activateCommands();\n } else {\n this.deactivateCommands();\n }\n }\n\n public get isLoading(): boolean {\n return this.state.isLoading;\n }\n\n public dataContext: unknown;\n public hideNavigationArrows = false;\n #state: unknown;\n\n private displayedPlugins: PluginItem[][] = [];\n\n constructor(\n public hostElement: ElementRef,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n trackingService: TrackingService,\n private tileHeaderService: TileHeaderService,\n private fullscreenService: FullscreenService\n ) {\n super(trackingService);\n\n // keep track of state changes. Adjust navigation arrows accordingly.\n this.tileHeaderService.state$.pipe(untilDestroyed(this)).subscribe((state) => {\n this.hideNavigationArrows = this.hasAlreadyNavigationInHeader(state);\n });\n }\n\n @HostListener('mouseenter') onEnter(): void {\n this.state.isMouseOver = true;\n this.tileHeaderService.updateState(this.state);\n }\n\n @HostListener('mouseleave') onLeave(): void {\n this.state.isMouseOver = false;\n this.tileHeaderService.updateState(this.state);\n }\n\n public ngOnDestroy() {\n this.deactivateCommands();\n this.state.clear();\n super.ngOnDestroy();\n }\n\n public ngOnInit() {\n super.ngOnInit();\n if (!this.state) {\n // ensure we have a state for when we are used as a standalone tile\n this.state = new TileItem(0, TileBoundary.topLeft);\n this.tileHeaderService.updateState(this.state);\n }\n\n this.state.clearing$.pipe(untilDestroyed(this)).subscribe(() => this.deactivateCommands());\n }\n\n /**\n * checks if current main content is of a supported type.\n * Door, Zone or Camera\n *\n * @returns true if supported, false otherwise.\n */\n public hasAlreadyNavigationInHeader(state: TileItem | null): boolean {\n if (state?.content) {\n const supportedEntities = [AccessControlContentTypes.Door.toString(), ZoneContentTypes.Zone.toString(), VideoContentTypes.Video.toString()];\n const mainContentType = state.content?.mainContent.type;\n const isSupported = supportedEntities.includes(mainContentType.toString());\n return isSupported;\n }\n return false;\n }\n\n public onDisplayedPluginsChanged(displayedPlugins: PluginItem[], verticalStackIndex: number): void {\n if (this.state.pluginsStack.verticalPlugins && this.state.pluginsStack.verticalPlugins.length !== this.displayedPlugins.length) {\n this.displayedPlugins = this.state.pluginsStack.verticalPlugins.map(() => []);\n }\n this.displayedPlugins[verticalStackIndex] = displayedPlugins;\n\n const resetCommandsAsync = async () => {\n this.deactivateCommands();\n await this.getPluginCommandsAsync();\n if (this.isSelected) {\n this.activateCommands();\n }\n };\n\n resetCommandsAsync().fireAndForget();\n }\n\n private activateCommands(): void {\n if (this.state.commandsUsages?.length > 0) {\n this.commandsService.addActiveCommandsUsages(this.state.commandsUsages);\n }\n\n this.commandsService.activeTarget = this.hostElement.nativeElement;\n }\n\n private deactivateCommands(): void {\n if (this.state.commandsUsages?.length > 0) {\n this.commandsService.removeActiveCommandsUsages(this.state.commandsUsages);\n }\n\n if (this.commandsService.activeTarget === this.hostElement.nativeElement) {\n this.commandsService.activeTarget = undefined;\n }\n }\n\n private async getPluginCommandsAsync() {\n this.state.commandsUsages.clear();\n for (const pluginItems of this.displayedPlugins) {\n for (const pluginItem of pluginItems) {\n const usage = await this.commandsService.getCommandsUsage(\n { type: ContextTypes.Content, data: pluginItem.data },\n pluginItem?.exposure?.availableCommands,\n false,\n this.hostElement.nativeElement\n );\n this.state.commandsUsages.addUsage(usage);\n }\n }\n }\n}\n","\n \n
    \n \n
    \n \n \n \n
    \n","import { ChangeDetectorRef, Component, ElementRef, Inject, Input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { MeltedIcon, SpinnerSize } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { DragDropTypes } from '@modules/shared/enumerations/drag-drop-types';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { ContentGroup } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport {\n CommandBindings,\n CommandContext,\n CommandDisplay,\n COMMANDS_SERVICE,\n CommandsSubscription,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandsUsageCollection } from '@modules/shared/services/commands/commands-usage/commands-usage-collection';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ContentSerializer } from '@modules/shared/utilities/content.serializer';\nimport { EventHelper } from '@modules/shared/utilities/event.helper';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { PtzPopupService } from '@modules/video/components/ptz-controls/services/ptz-popup.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { ITileLayoutContent, ITilePattern } from 'RestClient/Client/Interface/ITileLayoutEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { TileLayoutEntity } from 'RestClient/Client/Model/TileLayoutEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ThreatLevelService } from '@modules/shared/services/threat-level/threat-level.service';\nimport { map } from 'rxjs/operators';\nimport { CarouselService } from '../../services/carousel.service';\nimport { TilesConstants } from '../../enumerations/tiles-constants';\nimport { TilePatternItem } from '../../models/tile-pattern-item';\nimport { TileService } from '../../services/tile.service';\nimport { PendingContentChange, TileCanvasStateService } from '../../state/tile-canvas-state.service';\nimport { ContentMove } from '../../state/tile-canvas.state';\nimport { DragDropEffect, DragDropHelper, DragTarget } from '../../utilities/dragdrophelper';\nimport { TilesTaskEventService } from '../tiles-task/services/tiles-task-event.service';\nimport { TileComponent } from '../tiles/tile.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-tile-canvas',\n templateUrl: './tile-canvas.component.html',\n styleUrls: ['./tile-canvas.component.scss'],\n providers: [{ provide: CarouselService, useClass: CarouselService }],\n})\nexport class TileCanvasComponent extends TrackedComponent implements OnInit, OnDestroy {\n @Input() public tilePattern?: TilePatternItem;\n public readonly SpinnerSize = SpinnerSize;\n public isLoading = false;\n public fullscreenElement: ElementRef | null = null;\n public gridClass = '';\n public gridTemplateColumns = '';\n public gridTemplateRows = '';\n public tiles: TileItem[] = [];\n public rowCount = 0;\n public colCount = 0;\n\n public activeThreatLevelColor$ = this.threatLevelService?.activeThreatLevel$?.pipe(map((threatLevel) => threatLevel?.color ?? null));\n\n private commandsSubscription!: CommandsSubscription;\n private commandsUsages = new CommandsUsageCollection();\n private contextMenuCommands = [SharedCommands.ClearTile, SharedCommands.ClearTiles, SharedCommands.ExpandTile, SharedCommands.MaximizeTileFullscreen];\n private dragSourceTile: TileItem | null = null;\n private expandedTile: TileItem | null = null;\n private isDraggingOver = false;\n private maximizedFullscreenTile: TileItem | null = null;\n private scClient: SecurityCenterClient | undefined;\n private selectedTile: TileItem | null = null;\n private canExecuteClearAllTiles = false;\n private fullOverlayEntityTypes = [EntityTypes.TileLayouts];\n\n constructor(\n private securityCenterProvider: SecurityCenterClientService,\n private contentProviderService: ContentProviderService,\n private tileService: TileService,\n private tilesCanvasStateService: TileCanvasStateService,\n private translateService: TranslateService,\n private ptzPopupService: PtzPopupService,\n private viewContainerRef: ViewContainerRef,\n private tileTaskService: TilesTaskEventService,\n private changeDetectorRef: ChangeDetectorRef,\n private carouselService: CarouselService,\n private threatLevelService: ThreatLevelService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {\n super(trackingService);\n\n this.scClient = this.securityCenterProvider?.scClient;\n this.ptzPopupService.viewContainerRef = this.viewContainerRef;\n }\n\n public async displayEntities(entityIds: IGuid[]): Promise {\n this.isLoading = true;\n try {\n await this.displayEntitiesInternal(entityIds);\n } finally {\n this.isLoading = false;\n }\n }\n\n public async displayEntity(entityId: IGuid, entityType?: string): Promise {\n const isFullOverlayRequired = this.fullOverlayEntityTypes.find((type) => type === entityType);\n const elementToBeLoading = isFullOverlayRequired ? this : this.getAvailableTile();\n if (elementToBeLoading) {\n elementToBeLoading.isLoading = true;\n }\n\n try {\n await this.displayEntitiesInternal(entityId);\n } finally {\n if (elementToBeLoading) {\n elementToBeLoading.isLoading = false;\n }\n }\n }\n\n public expandTile(tile: TileItem | null): void {\n if (this.expandedTile && this.expandedTile.id !== tile?.id) {\n this.expandedTile.isExpanded = false;\n }\n\n if (tile) {\n tile.isExpanded = !tile.isExpanded;\n if (tile.isExpanded) {\n this.expandedTile = tile;\n } else {\n this.expandedTile = null;\n }\n\n // Make sure to close all popups so they don't \"hang\" in the screen.\n this.ptzPopupService.closeAllPopups().fireAndForget();\n this.updateGridClass();\n this.commandsUsages.invalidateDisplay(SharedCommands.ExpandTile);\n }\n }\n\n public ngOnDestroy(): void {\n this.commandsSubscription?.unsubscribe();\n this.commandsUsages.clear();\n\n document.removeEventListener('fullscreenchange', () => this.onFullScreenChange(), false);\n document.removeEventListener('webkitfullscreenchange', () => this.onFullScreenChange(), false);\n document.removeEventListener('mozfullscreenchange', () => this.onFullScreenChange(), false);\n\n super.ngOnDestroy();\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n // subscribe to tile content changes to display tiles for plugins\n if (this.tilesCanvasStateService !== undefined) {\n this.tilesCanvasStateService.tilePatternChanged$.pipe(untilDestroyed(this)).subscribe((pattern) => this.onPatternChanged(pattern));\n this.tilesCanvasStateService.contentsChanged$.pipe(untilDestroyed(this)).subscribe((contents) => this.onContentsChanged(contents));\n this.tilesCanvasStateService.contentMoved$.pipe(untilDestroyed(this)).subscribe((contentMove) => this.onContentMoved(contentMove));\n this.tilesCanvasStateService.selectedTileChanged$.pipe(untilDestroyed(this)).subscribe((tile) => this.onSelectedTileChanged(tile));\n this.tilesCanvasStateService.contentChanging$.subscribe((contentChange) => this.onContentChangingAsync(contentChange));\n\n // Make sure we load contents that already exists in the state\n this.onContentsChanged(this.tilesCanvasStateService.contents);\n }\n\n // listen to the fullscreen changed event to monitor 'Restore tile from fullscreen'\n document.addEventListener('fullscreenchange', () => this.onFullScreenChange(), false);\n document.addEventListener('webkitfullscreenchange', () => this.onFullScreenChange(), false);\n document.addEventListener('mozfullscreenchange', () => this.onFullScreenChange(), false);\n\n if (this.commandsService) {\n const bindings = new CommandBindings();\n\n bindings.addCommand({\n commandId: SharedCommands.ClearTiles,\n canExecuteCommandHandler: () => this.canExecuteClearAllTiles,\n executeCommandHandler: (executeCommandData) => {\n this.tilesCanvasStateService.clearTiles(null);\n this.ptzPopupService.destroyAllPopups();\n this.restoreExpandedOrFullscreenTile();\n\n executeCommandData.isHandled = true;\n },\n });\n bindings.addCommand({\n commandId: SharedCommands.ClearTile,\n canExecuteCommandHandler: (commandContext) => this.doesTileHaveContent(commandContext),\n executeCommandHandler: async (executeCommandData) => {\n const tile = this.getTile(this.extractTileId(executeCommandData.commandContext));\n if (tile?.content) {\n await this.ptzPopupService.destroyPopup(tile.content.mainContent.id);\n this.tilesCanvasStateService.clearTile(tile.id);\n }\n this.restoreExpandedOrFullscreenTile();\n executeCommandData.isHandled = true;\n },\n });\n bindings.addCommand({\n commandId: SharedCommands.ExpandTile,\n canExecuteCommandHandler: (commandContext) => this.doesTileHaveContent(commandContext),\n executeCommandHandler: async (executeCommandData) => {\n const tile = this.getTile(this.extractTileId(executeCommandData.commandContext));\n if (tile) {\n this.expandTile(tile);\n await this.ptzPopupService.closeAllPopups();\n }\n executeCommandData.isHandled = true;\n },\n getCommandDisplayHandler: (commandContext) => this.getExpandTileDisplay(this.getTile(this.extractTileId(commandContext))),\n });\n bindings.addCommand({\n commandId: SharedCommands.MaximizeTileFullscreen,\n canExecuteCommandHandler: (commandContext) => this.doesTileHaveContent(commandContext),\n executeCommandHandler: (executeCommandData) => {\n const tile = this.getTile(this.extractTileId(executeCommandData.commandContext));\n if (tile && !this.maximizedFullscreenTile) {\n this.maximizeTileFullscreen(tile);\n } else {\n this.maximizeTileFullscreen(null);\n }\n executeCommandData.isHandled = true;\n },\n getCommandDisplayHandler: () => this.getMaximizeTileFullscreenDisplay(),\n });\n bindings.addCommand({\n commandId: SharedCommands.SelectPreviousTile,\n executeCommandHandler: (executeCommandData) => {\n this.selectPreviousTile();\n executeCommandData.isHandled = true;\n },\n });\n bindings.addCommand({\n commandId: SharedCommands.SelectNextTile,\n executeCommandHandler: (executeCommandData) => {\n this.selectNextTile();\n executeCommandData.isHandled = true;\n },\n });\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: 100,\n });\n }\n }\n\n public async onContextMenuRequested(event: MouseEvent, tile?: TileItem): Promise {\n // add our own\n event.preventDefault();\n event.stopPropagation();\n\n this.commandsUsages.clear();\n\n this.commandsUsages.addUsage(await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: tile?.content?.mainContent }, this.contextMenuCommands));\n\n let commandsTile = tile;\n if (!commandsTile && this.selectedTile) {\n commandsTile = this.selectedTile;\n }\n\n if (commandsTile) {\n this.commandsUsages.addUsages(commandsTile.commandsUsages);\n }\n\n this.commandsService.showContextMenu(event, await this.commandsUsages.createContextMenuItemsAsync(), this.fullscreenElement);\n }\n\n public onDragLeave(event: DragEvent): void {\n this.isDraggingOver = false;\n this.updateGridClass();\n }\n\n public onDragOver(event: DragEvent): void {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n // dataTransfer.dropEffect = 'none';\n\n if (DragDropHelper.getDragTarget(event) === DragTarget.TilesTask) {\n // the tiles task only support copy\n dataTransfer.dropEffect = 'copy';\n this.isDraggingOver = true;\n this.updateGridClass();\n\n // when supported, stop the bubbling\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n public async onDrop(event: DragEvent): Promise {\n if (!this.isDraggingOver) {\n return;\n }\n\n try {\n if (!(await EventHelper.tryCaptureEventAsync(event))) {\n return;\n }\n\n this.isDraggingOver = false;\n this.updateGridClass();\n this.isLoading = true;\n\n const dragResult = await DragDropHelper.extractTileDragDropData(event, this.securityCenterProvider, this.contentProviderService);\n if (dragResult) {\n // determine if all the tiles need to be cleared like when a tile pattern is dropped\n let clear = false;\n\n // if the drag result contains a tile pattern, apply it\n if (dragResult.tilePattern) {\n clear = true;\n this.applyPattern(dragResult.tilePattern);\n }\n\n // apply the tile contents\n const contents = dragResult.contents;\n if (contents && contents.length > 0) {\n if (contents.length > 1 && this.tilePattern) {\n // let the carousel handle the logic to determine where to drop the contents\n this.carouselService.displayContents(contents, clear);\n event.stopPropagation();\n } else {\n // only display in the tile\n const selectedId = this.tilesCanvasStateService.selectedTile;\n if (selectedId) {\n this.tilesCanvasStateService?.changeContent(selectedId, contents[0]);\n }\n }\n }\n }\n } finally {\n this.isLoading = false;\n EventHelper.releaseEvent(event);\n }\n }\n\n public onTileDragEnd(tile: TileItem, event: DragEvent): void {\n this.dragSourceTile = null;\n DragDropHelper.endDrag();\n }\n\n public onTileDragLeave(tile: TileItem, event: DragEvent): void {\n tile.isDraggingOver = false;\n }\n\n public onTileDragOver(tile: TileItem, event: DragEvent): void {\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n dataTransfer.dropEffect = 'none';\n\n if (this.dragSourceTile?.id !== tile.id) {\n if (DragDropHelper.getDragTarget(event) === DragTarget.Tile) {\n if (event.ctrlKey) {\n DragDropHelper.setDropEffect(DragDropEffect.Copy, event);\n } else if (event.shiftKey) {\n DragDropHelper.setDropEffect(DragDropEffect.Link, event);\n } else {\n DragDropHelper.setDropEffect(DragDropEffect.Move, event);\n }\n tile.isDraggingOver = true;\n\n // when supported, stop the bubbling\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n\n public onTileDragStart(tile: TileItem, event: DragEvent): void {\n // can we drag?\n const content = tile.content;\n if (content) {\n const data = ContentSerializer.serializeContentGroup(content);\n if (data) {\n this.dragSourceTile = tile;\n DragDropHelper.startDrag('sc-content', data);\n DragDropHelper.updateDragData('sc-tile', tile.id);\n const target = event.target;\n if (target instanceof Element) {\n const element = target.closest(TileComponent.selector)?.querySelector('.tileid') as Element;\n if (element) {\n event.dataTransfer?.setDragImage(element, 0, 0);\n }\n }\n }\n }\n }\n\n public async onTileDrop(tile: TileItem, event: DragEvent): Promise {\n if (!tile.isDraggingOver) {\n return;\n }\n\n try {\n if (!(await EventHelper.tryCaptureEventAsync(event))) {\n return;\n }\n\n // I don't like that we have to do this, I feel context menu should close automatically\n this.commandsService.hideCurrentContextMenu();\n\n tile.isDraggingOver = false;\n const dropEffect = DragDropHelper.getDropEffect();\n const tileId = tile.id;\n if (dropEffect && this.dragSourceTile?.id !== tile.id) {\n let handled = false;\n\n // first, handle the external drop from Security Center of type 'text/plain'\n if (event?.dataTransfer) {\n // no xml is found in the buffered data, try to extract it from the event (from Security Desk)\n const xml = event.dataTransfer.getData('text/plain');\n if (xml) {\n tile.isLoading = true;\n try {\n const contents = await DragDropHelper.extractSecurityCenterDragContent(xml, this.contentProviderService);\n if (contents && contents.length === 1) {\n this.tilesCanvasStateService.changeContent(tile.id, contents[0]);\n event.stopPropagation();\n handled = true;\n }\n } finally {\n tile.isLoading = false;\n }\n }\n }\n\n if (!handled) {\n const sourceTileId = DragDropHelper.getDragData('sc-tile') as number;\n if (sourceTileId) {\n tile.isLoading = true;\n try {\n const destinationGuid = this.getTile(tileId)?.content?.mainContent.id;\n const sourceGuid = this.getTile(sourceTileId)?.content?.mainContent.id;\n switch (dropEffect) {\n // Default Drag\n case DragDropEffect.Move: {\n // Delete previous popups (fails gracefully if not existing)\n await this.ptzPopupService.destroyPopup(destinationGuid ?? SafeGuid.EMPTY);\n await this.ptzPopupService.closePopup(sourceGuid ?? SafeGuid.EMPTY);\n // Then proceed with the move.\n this.tilesCanvasStateService.moveContent({ sourceTileId, destinationTileId: tileId, swapContents: false });\n event.stopPropagation();\n handled = true;\n break;\n }\n // CTRL + Drag\n case DragDropEffect.Copy: {\n const dragResult = await DragDropHelper.extractTileDragDropData(event, this.securityCenterProvider, this.contentProviderService);\n const contents = dragResult?.contents;\n if (contents && contents.length === 1) {\n // Destroy popup IF there was one associated with the destination tile.\n await this.ptzPopupService.destroyPopup(destinationGuid ?? SafeGuid.EMPTY);\n // Then move.\n this.tilesCanvasStateService.changeContent(tileId, contents[0]);\n event.stopPropagation();\n handled = true;\n }\n break;\n }\n // Shift+Drag\n case DragDropEffect.Link: {\n // Delete previous popup (fails gracefully if not existing)\n await this.ptzPopupService.closePopup(destinationGuid ?? SafeGuid.EMPTY);\n await this.ptzPopupService.closePopup(sourceGuid ?? SafeGuid.EMPTY);\n // Then move.\n this.tilesCanvasStateService.moveContent({ sourceTileId, destinationTileId: tileId, swapContents: true });\n event.stopPropagation();\n handled = true;\n break;\n }\n }\n } finally {\n tile.isLoading = false;\n }\n } else {\n const entityIds = DragDropHelper.getDragData(DragDropTypes.EntityId) as IGuid[];\n if (entityIds && entityIds.length === 1) {\n tile.isLoading = true;\n try {\n const dragResult = await DragDropHelper.extractTileDragDropData(event, this.securityCenterProvider, this.contentProviderService);\n const contents = dragResult?.contents;\n if (contents && contents.length === 1) {\n this.tilesCanvasStateService.changeContent(tile.id, contents[0]);\n event.stopPropagation();\n handled = true;\n }\n } finally {\n tile.isLoading = false;\n }\n }\n }\n }\n this.selectTile(tileId);\n }\n } finally {\n EventHelper.releaseEvent(event);\n }\n }\n\n public onTileContextMenu(tile: TileItem, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.onTileSelected(tile);\n this.onContextMenuRequested(event, tile).fireAndForget();\n }\n\n public onTilePreviewClick(tile: TileItem): void {\n this.selectTile(tile.id, false);\n }\n\n public onTileSelected(tile: TileItem): void {\n this.selectTile(tile.id);\n }\n\n public onTileDoubleClick(tile: TileItem): void {\n this.expandTile(tile);\n }\n\n public setTilePattern(tilePattern: TilePatternItem): void {\n this.tilesCanvasStateService.setTilePattern(tilePattern);\n }\n\n private async displayEntitiesInternal(entityId: IGuid): Promise;\n private async displayEntitiesInternal(entityIds: IGuid[]): Promise;\n private async displayEntitiesInternal(entityIds: IGuid[] | IGuid): Promise {\n const ids = Array.isArray(entityIds) ? entityIds : [entityIds];\n\n const entityQuery = new EntityQuery();\n ids.forEach((entity) => entityQuery.guids.add(entity));\n const entities = await this.scClient?.getEntitiesAsync(Entity, entityQuery);\n\n if (!entities || entities.length === 0) {\n return;\n }\n\n const tileLayoutEntity = entities.find((entity) => entity.entityType === EntityTypes.TileLayouts) as TileLayoutEntity | undefined;\n if (tileLayoutEntity) {\n await this.displayTileLayoutContents(tileLayoutEntity);\n return;\n }\n await this.displayEntitiesContents(ids);\n }\n\n private async displayEntitiesContents(entityIds: IGuid[]): Promise {\n const contentFromEntities = await this.contentProviderService.getContentsAsync(entityIds, TilesConstants.TilesContentContextId);\n if (!contentFromEntities) {\n return;\n }\n\n this.carouselService.displayContents(contentFromEntities, false);\n }\n\n private async displayTileLayoutContents(tileLayoutEntity: TileLayoutEntity): Promise {\n const entitiesContentFromTileLayout = await this.tryApplyPatternAndGetEntitiesContent(tileLayoutEntity);\n if (!entitiesContentFromTileLayout) {\n return;\n }\n this.carouselService.displayContents(entitiesContentFromTileLayout, true);\n }\n\n private async tryApplyPatternAndGetEntitiesContent(tileLayoutEntity: TileLayoutEntity): Promise {\n const contentFromTileLayout = await tileLayoutEntity.getContentAsync();\n if (contentFromTileLayout?.pattern) {\n this.applyPattern(contentFromTileLayout.pattern);\n }\n\n const canGetEntitiesContentFromTileLayout = contentFromTileLayout && this.tilePattern && contentFromTileLayout.entities.size;\n if (!canGetEntitiesContentFromTileLayout) {\n return null;\n }\n return await this.getEntitiesContentFromTileLayout(contentFromTileLayout);\n }\n\n private async getEntitiesContentFromTileLayout(tileLayoutContent: ITileLayoutContent): Promise {\n const contentsFromTileLayout = await this.contentProviderService.getContentsAsync(Array.from(tileLayoutContent.entities), TilesConstants.TilesContentContextId);\n return contentsFromTileLayout;\n }\n\n private restoreExpandedOrFullscreenTile(): void {\n this.restoreExpandedTile();\n this.restoreFullscreenTile();\n }\n\n private restoreExpandedTile(): void {\n this.expandTile(this.expandedTile);\n }\n\n private restoreFullscreenTile(): void {\n this.maximizeTileFullscreen(null);\n }\n\n private applyPattern(pattern: ITilePattern): void {\n const item = TilePatternItem.fromTilePattern(pattern);\n this.setTilePattern(item);\n }\n\n private refreshCanExecuteClearAllTiles(contents: (ContentGroup | null)[]): void {\n const isThereATileWithContent = contents.find((content) => content !== null) !== undefined;\n this.canExecuteClearAllTiles = isThereATileWithContent;\n }\n\n private doesTileHaveContent(commandContext?: CommandContext): boolean {\n const tile = this.getTile(this.extractTileId(commandContext));\n return tile?.hasContent ?? false;\n }\n\n private extractTileId(commandContext?: CommandContext): number | undefined {\n let tileId: number | undefined;\n if (commandContext?.type.equals(ContextTypes.Specific)) {\n if (isNonEmptyString(commandContext.data)) {\n const parsedNumber = Number.parseInt(commandContext.data);\n if (!Number.isNaN(parsedNumber)) {\n tileId = parsedNumber - 1;\n }\n } else if (isNumber(commandContext.data)) {\n tileId = commandContext.data - 1;\n }\n }\n return tileId;\n }\n\n private getExpandTileDisplay(tile?: TileItem): CommandDisplay | undefined {\n if (tile && tile.id === this.selectedTile?.id) {\n const restore = this.translateService?.instant('STE_BUTTON_RESTORETILE') as string;\n const maximize = this.translateService?.instant('STE_BUTTON_MAXIMIZETILE') as string;\n return tile.isExpanded ? { name: () => restore, icon: MeltedIcon.RestoreWindow } : { name: () => maximize, icon: MeltedIcon.MaximizeWindow };\n }\n }\n\n private getMaximizeTileFullscreenDisplay(): CommandDisplay | undefined {\n return this.maximizedFullscreenTile === null\n ? { name: () => this.translateService?.instant('STE_ACTION_MAXIMIZETILEFULLSCREEN') as string, icon: MeltedIcon.Fullscreen }\n : { name: () => this.translateService?.instant('STE_ACTION_RESTORETILEFULLSCREEN') as string, icon: MeltedIcon.ExitFullscreen };\n }\n\n private getTile(tileId?: number): TileItem | undefined {\n if (tileId && tileId <= this.tiles.length) {\n return this.tiles[tileId - 1];\n }\n\n if (this.selectedTile) {\n return this.selectedTile;\n }\n }\n\n private getAvailableTile(): TileItem | undefined {\n let availableTileId = this.carouselService.getFirstAvailableTileId();\n if (availableTileId === null) {\n // Special case.\n // If all tiles are occupied and we only have one content to place, reuse tile #1 (same as Web Client)\n availableTileId = CarouselService.firstTileId;\n }\n return this.getTile(availableTileId);\n }\n\n private maximizeTileFullscreen(tile: TileItem | null): void {\n if (this.maximizedFullscreenTile && this.maximizedFullscreenTile.id !== tile?.id) {\n this.maximizedFullscreenTile.isFullscreen = false;\n this.maximizedFullscreenTile = null;\n }\n\n if (tile) {\n tile.isFullscreen = true;\n this.maximizedFullscreenTile = tile;\n }\n }\n\n private async onContentChangingAsync(contentChange: PendingContentChange): Promise {\n const tile = this.tiles.find((x) => x.id === contentChange.tileId);\n if (tile) {\n if (await this.tileService.tryUpdateTileContentAsync(tile, contentChange.content, true)) {\n contentChange.changesAccepted = true;\n }\n }\n }\n\n /** Move the actual tiles before the store is updated to avoid content change and resetting plugins */\n private onContentMoved(move: ContentMove): void {\n if (move) {\n const sourceTileIndex = this.tiles.findIndex((x) => x.id === move.sourceTileId);\n const destinationTileIndex = this.tiles.findIndex((x) => x.id === move.destinationTileId);\n const sourceTile = this.tiles[sourceTileIndex];\n const destinationTile = this.tiles[destinationTileIndex];\n\n if (sourceTile && destinationTile) {\n const sourceBoundary = sourceTile.boundary;\n const destinationBoundary = destinationTile.boundary;\n\n sourceTile.id = move.destinationTileId;\n destinationTile.id = move.sourceTileId;\n sourceTile.boundary = destinationBoundary;\n destinationTile.boundary = sourceBoundary;\n this.tiles[destinationTileIndex] = sourceTile;\n this.tiles[sourceTileIndex] = destinationTile;\n\n if (!move.swapContents && destinationTile.content) {\n destinationTile.content = null;\n }\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private onContentsChanged(contents: (ContentGroup | null)[]): void {\n this.tiles.forEach((tile) => {\n const tileContent = contents[tile.id - 1];\n if (!tileContent) {\n tile.clear();\n } else {\n this.tileService.tryUpdateTileContentAsync(tile, tileContent, false).fireAndForget();\n }\n });\n this.refreshCanExecuteClearAllTiles(contents);\n this.commandsService.invalidateCanExecuteForAllCommandsUsage(SharedCommands.ClearTiles);\n this.changeDetectorRef.markForCheck();\n }\n\n private onFullScreenChange(): void {\n const fullscreenElement = document.fullscreenElement;\n let ref: ElementRef | null = null;\n if (fullscreenElement) {\n ref = new ElementRef(fullscreenElement);\n }\n this.fullscreenElement = ref;\n\n // when no element is in fullscreen, clear the state\n if (fullscreenElement === null) {\n // clear the states\n this.tiles.forEach((tile) => {\n tile.isFullscreen = false;\n });\n this.maximizedFullscreenTile = null;\n }\n // Notify interested components/services in this event\n this.tileTaskService.publishFullscreenChangedEvent();\n this.commandsService.hideCurrentContextMenu();\n this.commandsUsages.invalidateDisplay(SharedCommands.MaximizeTileFullscreen);\n }\n\n private onPatternChanged(pattern: TilePatternItem): void {\n let existingPattern = pattern;\n\n if (pattern) {\n [this.colCount, this.rowCount] = pattern.definition.split('x').map(parseInt);\n }\n\n // ensure we always have a pattern. if not valid, take the default pattern.\n if (!existingPattern) {\n existingPattern = TileCanvasStateService.defaultTilePattern;\n }\n\n // use unique id to determine if the tile pattern is identical\n if (existingPattern && (!this.tilePattern || this.tilePattern.uniqueId !== existingPattern.uniqueId)) {\n const selectedTileId = this.selectedTile?.id;\n this.tilePattern = existingPattern;\n this.tiles = existingPattern.createTiles(this.tiles);\n\n this.gridTemplateColumns = existingPattern.getGridTemplateColumns();\n this.gridTemplateRows = existingPattern.getGridTemplateRows();\n\n // Minimize any maximized tile before changing pattern\n if (this.expandedTile) {\n this.expandTile(this.expandedTile);\n }\n\n // if we had a selected tile, restore it\n if (selectedTileId) {\n const selectedTile = this.tiles.find((tile) => tile.id === selectedTileId);\n if (selectedTile) {\n selectedTile.isSelected = true;\n }\n }\n this.updateGridClass();\n }\n }\n\n private onSelectedTileChanged(tileId: number): void {\n if (!tileId) {\n this.tiles.forEach((item) => {\n item.isSelected = false;\n });\n this.selectedTile = null;\n return;\n }\n\n const tileToSelect = this.tiles.find((tile) => tile.id === tileId);\n if (tileToSelect) {\n let itemToSelect: TileItem | undefined;\n this.tiles.forEach((item) => {\n if (item.id !== tileToSelect.id) {\n item.isSelected = false;\n } else {\n // Wait until all other tiles are unselected before selecting new tile\n itemToSelect = item;\n }\n });\n\n if (itemToSelect) {\n itemToSelect.isSelected = true;\n this.selectedTile = tileToSelect;\n }\n }\n }\n\n private selectNextTile(): void {\n let id = this.selectedTile?.id;\n const count = this.tilePattern?.tileCount;\n if (id && count) {\n id++;\n if (id > count) {\n id = 1;\n }\n this.selectTile(id);\n }\n }\n\n private selectPreviousTile(): void {\n let id = this.selectedTile?.id;\n const count = this.tilePattern?.tileCount;\n if (id && count) {\n id--;\n if (id <= 0) {\n id = count;\n }\n this.selectTile(id);\n }\n }\n\n private selectTile(tileId: number, shouldHideCurrentContextMenu: boolean = true): void {\n if (shouldHideCurrentContextMenu) {\n // I don't like that we have to do this, I feel context menu should close automatically\n this.commandsService.hideCurrentContextMenu();\n }\n this.tilesCanvasStateService.selectTile(tileId);\n }\n\n private updateGridClass(): void {\n let classInfo = '';\n if (this.expandedTile) {\n classInfo += ' columns-1 rows-1 expanded';\n }\n\n if (this.isDraggingOver) {\n classInfo += ' isDraggingOver';\n }\n\n this.gridClass = classInfo;\n }\n}\n","
    \n
    \n
    \n \n {{ 'STE_BUTTON_BROWSE' | translate }}\n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n\n\n\n \n \n \n \n \n {{ tilePattern.name }}\n \n \n \n\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ButtonFlavor, Icon, PopupPosition, SelectionType } from '@genetec/gelato';\nimport { GenPopup, MeltedIcon } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityBrowserComponent } from '@modules/shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { EntityBrowserSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityTypeSet } from '@modules/shared/entity-browser/entity-type-set';\nimport { HierarchicalEntityBrowserFilter } from '@modules/shared/entity-browser/filters/hierarchical-entity-browser-filter';\nimport { EntityBrowserItemModel } from '@modules/shared/entity-browser/Items/entity-browser-item-model';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WINDOW } from '@utilities/common-helper';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { IEntityTypeSet } from '@modules/shared/entity-browser/interfaces/entity-type-set.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { InternalPluginDescriptor } from '../../../shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginComponentExposure } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '../../../shared/interfaces/plugins/public/plugin-types';\nimport { HighlightTilePatternItem, TilePatternItem } from '../../models/tile-pattern-item';\nimport { TileCanvasStateService } from '../../state/tile-canvas-state.service';\nimport { TileCanvasComponent } from '../tile-canvas/tile-canvas.component';\nimport { TilesTaskEventService } from './services/tiles-task-event.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-tiles',\n templateUrl: './tiles-task.component.html',\n styleUrls: ['./tiles-task.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalPluginDescriptor({\n type: TilesTaskComponent,\n pluginTypes: [PluginTypes.Task],\n exposure: {\n id: TilesTaskComponent.pluginId,\n icon: 'gen-ico-layout-3x3',\n title: 'STE_LABEL_TILES',\n tags: ['STE_LABEL_NOUN_TILE', 'STE_LABEL_VIDEO', 'STE_LABEL_MONITORING', 'wall'],\n priority: 20,\n } as PluginComponentExposure,\n requirements: { globalPrivileges: [KnownPrivileges.surveillancePrivilege] },\n isSupported: () => true,\n})\nexport class TilesTaskComponent extends TrackedComponent implements OnInit, AfterViewInit, OnDestroy {\n public static pluginId = SafeGuid.parse('6EF4FFC0-64F4-4DCD-9565-5B9C13C84D27');\n\n @ViewChild('tileCanvas') public tileCanvas!: TileCanvasComponent;\n @ViewChild(GenPopup) tilePatternPopup!: GenPopup;\n @ViewChild('entityBrowser')\n public set entityBrowserContent(child: EntityBrowserComponent) {\n this.entityBrowser = child;\n }\n public readonly tilePatternSelectionModalId = 'tilePatternSelectionModalId';\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly PopupPosition = PopupPosition;\n public readonly ListSelectionType = SelectionType;\n\n public allowChangeTilePattern = false;\n public isEntityBrowserLoaded = false;\n public isEntityBrowserPinned = false;\n public tilePatterns: TilePatternItem[] = [];\n\n private entityBrowser!: EntityBrowserComponent;\n private isEntityBrowserPinnedTag = 'WebApp.IsEntityBrowserPinned';\n private supportedEntityTypes: IEntityTypeSet = new EntityTypeSet([EntityTypes.Cameras, EntityTypes.Doors, EntityTypes.TileLayouts, EntityTypes.Zones]);\n\n constructor(\n private route: ActivatedRoute,\n private securityCenterClientService: SecurityCenterClientService,\n private tileTaskService: TilesTaskEventService,\n private translateService: TranslateService,\n private changeDetectorRef: ChangeDetectorRef,\n trackingService: TrackingService,\n @Inject(WINDOW) private window: Window\n ) {\n super(trackingService);\n\n // create the supported tile patterns\n this.tilePatterns = [\n new TilePatternItem('1x1', MeltedIcon.Layout1X1, '1x1'),\n new TilePatternItem('1x2', MeltedIcon.Layout1X2, '1x2'),\n new TilePatternItem('2x1', MeltedIcon.Layout2X1, '2x1'),\n TileCanvasStateService.defaultTilePattern,\n new TilePatternItem('3x2', MeltedIcon.Layout2X3, '3x2'), // Icon is incorrectly name\n new TilePatternItem('3x3', MeltedIcon.Layout3X3, '3x3'),\n new HighlightTilePatternItem(this.translateService.instant('STE_LABEL_TILE_PATTERN_HIGHLIGHT_6') as string, MeltedIcon.TilePattern),\n ];\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.isEntityBrowserPinned = this.window.localStorage.getItem(this.isEntityBrowserPinnedTag) !== 'false';\n this.allowChangeTilePattern = this.securityCenterClientService.scClient.isGlobalPrivilegeGranted(KnownPrivileges.changeTilePatternPrivilege);\n }\n\n ngAfterViewInit() {\n if (this.isEntityBrowserPinned) {\n this.refreshBrowser();\n }\n\n this.route.queryParams?.pipe(untilDestroyed(this)).subscribe((params) => {\n if (typeof params.id === 'string') {\n const parsed = SafeGuid.tryParse(params.id);\n if (parsed.success) {\n this.tileCanvas.displayEntity(parsed.value).fireAndForget();\n }\n }\n });\n }\n\n public canSelectItem(model: EntityBrowserItemModel): Promise {\n const entityTypeIsSupported = model.entityType?.type ? this.supportedEntityTypes.has(model.entityType) : false;\n return Promise.resolve(entityTypeIsSupported);\n }\n\n public async onBrowserEntitySelected(entitySelection: EntityBrowserSelection): Promise {\n if (entitySelection.hasMany) {\n await this.tileCanvas.displayEntities(entitySelection.allIds);\n } else {\n const entityType = entitySelection.singleItem?.model.entityType.type;\n await this.tileCanvas.displayEntity(entitySelection.singleId, entityType);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n public async onSelectLayoutChange(index: number): Promise {\n const pattern = this.tilePatterns[index];\n if (pattern) {\n this.tileCanvas.setTilePattern(pattern);\n this.tileTaskService.publishTilePatternChangedEvent();\n }\n await this.tilePatternPopup.close();\n }\n\n public async togglePatternSelectionPopup(): Promise {\n await this.tilePatternPopup.toggle();\n }\n\n public toggleEntityBrowser(): void {\n this.isEntityBrowserPinned = !this.isEntityBrowserPinned;\n this.window.localStorage.setItem(this.isEntityBrowserPinnedTag, this.isEntityBrowserPinned.toString());\n\n if (!this.isEntityBrowserLoaded && this.isEntityBrowserPinned) {\n this.refreshBrowser();\n }\n }\n\n private refreshBrowser() {\n const filter = new HierarchicalEntityBrowserFilter(this.supportedEntityTypes);\n this.entityBrowser?.refreshAsync(filter).finally(() => (this.isEntityBrowserLoaded = true));\n }\n}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { SubscriptionCollection } from '../../shared/utilities/subscription-collection';\n\nexport class MailboxEnvelop {\n public id: IGuid = SafeGuid.EMPTY;\n public icon: string | undefined;\n public title: string | undefined;\n public summary: string | undefined;\n public navigation: string | undefined;\n public isRead = false;\n public timestamp: Date = new Date(Date.now());\n public openHandler: (() => void) | undefined = undefined;\n\n public MailboxEnvelop(id: IGuid, title: string): void {\n this.id = id;\n this.title = title;\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MailboxService implements OnDestroy {\n //#region Fields\n\n public envelops: MailboxEnvelop[] = [];\n\n public mailboxChanged = new EventEmitter();\n\n private supportNotifications = false;\n private subscriptions = new SubscriptionCollection();\n\n //#endregion\n\n //#region Constructor\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n // // let's check if the browser supports notifications\n // if ((\"Notification\" in window)) {\n // this.supportNotifications = true;\n // }\n\n this.subscriptions.add(securityCenterProvider.scClient?.onLogonStateChanged((arg) => this.onLogonStateChanged(arg)));\n }\n\n //#endregion\n\n //#region Methods\n\n public ngOnDestroy() {\n this.subscriptions.unsubscribeAll();\n }\n\n public add(envelop: MailboxEnvelop): void {\n this.envelops.push(envelop);\n this.mailboxChanged.emit(this.envelops);\n\n if (this.supportNotifications) {\n let showNotification = false;\n\n // Let's check whether notification permissions have already been granted\n if (Notification.permission === 'granted') {\n showNotification = true;\n }\n // Otherwise, we need to ask the user for permission\n else if (Notification.permission !== 'denied') {\n Notification.requestPermission()\n .then((permission) => {\n // If the user accepts, let's create a notification\n if (permission === 'granted') {\n showNotification = true;\n }\n })\n .fireAndForget();\n }\n\n if (showNotification && envelop.title) {\n // If it's okay let's create a notification\n }\n }\n }\n\n public remove(...mails: MailboxEnvelop[] | IGuid[]): void {\n let isDirty = false;\n for (const mail of mails) {\n if (mail instanceof MailboxEnvelop) {\n this.envelops.remove(mail);\n isDirty = true;\n }\n if (isInstanceOfGuid(mail)) {\n const envObj = this.envelops.find((x) => x.id.equals(mail));\n if (envObj) {\n this.envelops.remove(envObj);\n isDirty = true;\n }\n }\n }\n if (isDirty) {\n this.mailboxChanged.emit(this.envelops);\n }\n }\n\n public executeHandler(mailId: IGuid): void {\n const mail = this.envelops.find((x) => x.id.equals(mailId));\n mail?.openHandler?.();\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private onLogonStateChanged(args: LogonStateChangedArgs) {\n if (!args.loggedOn()) {\n this.envelops.length = 0;\n }\n }\n\n //#endregion\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActionType } from 'RestClient/Client/Enumerations/ActionTypes';\nimport { ActionBase } from 'RestClient/Client/Event/ActionBase';\nimport { IApplicationEntity } from 'RestClient/Client/Interface/IApplicationEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { ApplicationEntity } from 'RestClient/Client/Model/Application/ApplicationEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GenModalService, GenToastService, MeltedIcon } from '@genetec/gelato-angular';\nimport { ActionHandler } from '../../shared/services/actions/actions.service';\nimport { stringFormat } from '../../shared/utilities/StringFormat';\nimport { InternalCommandsService } from '../../shared/services/commands/commands.service';\nimport { COMMANDS_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { ShowMessageAction, ShowMessageComponent } from '../components/show-message/show-message.component';\nimport { TilesTaskComponent } from '../../tiles/components/tiles-task/tiles-task.component';\nimport { NavigationService } from '../../shared/services/navigation/navigation.service';\nimport { MailboxEnvelop, MailboxService } from '../services/mailbox.service';\nimport { SharedCommands } from '../../shared/enumerations/shared-commands';\nimport { ContextTypes } from '../../shared/interfaces/plugins/public/context-types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisplayEntitiesActionHandler implements ActionHandler {\n constructor(\n private modalService: GenModalService,\n private translateService: TranslateService,\n private mailboxService: MailboxService,\n private navigationService: NavigationService,\n private toastService: GenToastService,\n private securityCenterClientService: SecurityCenterClientService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {}\n\n public async executeAsync(action: ActionBase): Promise {\n if (action.actionType === ActionType.DisplayEntity) {\n const message = action.getField('annotationmessage');\n const forceDisplay = action.getField('forcedisplay');\n const timestamp = action.getField('playbacktime');\n const actionEntities = action.getField('entities');\n const sourceApp = action.getFieldGuid('sourceapplication');\n\n const task = this.navigationService.getCurrentTask();\n const canExecute = task.equals(TilesTaskComponent.pluginId);\n\n // extract the title\n let title = '';\n const sourceName = await this.getSourceName(sourceApp);\n if (sourceName) {\n title = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_MESSAGE_FROM_USER_X') as string, sourceName);\n }\n\n const onExecute = () => {\n if (actionEntities) {\n const entities = actionEntities.map((id) => SafeGuid.parse(id));\n const data = {\n entities,\n timestamp,\n };\n this.commandsService.executeCommand(SharedCommands.DisplayEntities, { type: ContextTypes.Specific, data });\n\n return true;\n }\n };\n\n // method to add the message in the mailbox\n const addToMailbox = (mailboxMessage: string) => {\n const envelop = new MailboxEnvelop();\n envelop.id = SafeGuid.newGuid();\n envelop.icon = MeltedIcon.Share;\n envelop.title = title;\n envelop.summary = mailboxMessage;\n envelop.isRead = false;\n envelop.openHandler = onExecute;\n this.mailboxService.add(envelop);\n };\n\n // if display is forced, execute now\n if (forceDisplay) {\n onExecute();\n } else if (!message) {\n // if there's no message but we can execute, do it now\n if (canExecute) {\n onExecute();\n } else {\n if (title) {\n this.toastService.show({ text: title });\n\n // if we have no message and we cannot execute now, put a message in the mailbox\n addToMailbox('');\n }\n }\n } else if (message) {\n // display the message to the user\n const onClosed = (result: ShowMessageAction) => {\n switch (result) {\n case ShowMessageAction.Timeout:\n {\n addToMailbox(message);\n }\n break;\n case ShowMessageAction.Ok:\n {\n onExecute();\n }\n break;\n }\n };\n\n if (sourceName) {\n title = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_X_SHARED_THIS_CONTENT') as string, sourceName);\n }\n\n const actionText = this.translateService.instant('STE_BUTTON_DISPLAY') as string;\n const cancelText = this.translateService.instant('STE_BUTTON_DISMISS') as string;\n const timeout = 10; // put a default timeout of 10 seconds\n ShowMessageComponent.showMessage(this.modalService, title, message, onClosed, actionText, cancelText, timeout);\n }\n }\n return false;\n }\n\n private async getSourceName(sourceApplication: IGuid): Promise {\n let result: string | null = null;\n const application = await this.securityCenterClientService.scClient?.getEntityAsync(ApplicationEntity, sourceApplication);\n if (application) {\n result = application.name;\n if (!application.loggedUser.equals(SafeGuid.EMPTY)) {\n const loggedUser = await this.securityCenterClientService.scClient?.getEntityAsync(UserEntity, application.loggedUser);\n if (loggedUser) {\n result = loggedUser.name;\n if (loggedUser.firstName && loggedUser.lastName) {\n result = loggedUser.firstName + ' ' + loggedUser.lastName;\n }\n }\n }\n }\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActionType } from 'RestClient/Client/Enumerations/ActionTypes';\nimport { ActionBase } from 'RestClient/Client/Event/ActionBase';\nimport { SafeGuid } from 'safeguid';\nimport { AudioService } from '@modules/shared/services/audio/audio.service';\nimport { ActionHandler } from '../../shared/services/actions/actions.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlaySoundActionHandler implements ActionHandler {\n constructor(private audioService: AudioService) {}\n\n public async executeAsync(action: ActionBase): Promise {\n if (action.actionType === ActionType.PlaySound) {\n const sound = action.getField('sound');\n if (sound) {\n try {\n await this.audioService.playAudio(SafeGuid.parse(sound));\n return true;\n } catch (error) {\n return false;\n }\n }\n }\n return false;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActionType } from 'RestClient/Client/Enumerations/ActionTypes';\nimport { ActionBase } from 'RestClient/Client/Event/ActionBase';\nimport { IApplicationEntity } from 'RestClient/Client/Interface/IApplicationEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { ApplicationEntity } from 'RestClient/Client/Model/Application/ApplicationEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActionHandler } from '../../shared/services/actions/actions.service';\nimport { SharedCommands } from '../../shared/enumerations/shared-commands';\nimport { stringFormat } from '../../shared/utilities/StringFormat';\nimport { InternalCommandsService } from '../../shared/services/commands/commands.service';\nimport { COMMANDS_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { ContextTypes } from '../../shared/interfaces/plugins/public/context-types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SendMessageActionHandler implements ActionHandler {\n constructor(\n private translateService: TranslateService,\n private securityCenterClientService: SecurityCenterClientService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {}\n\n public async executeAsync(action: ActionBase): Promise {\n if (action.actionType === ActionType.SendMessage) {\n const message = action.getField('message');\n const hasTimeout = action.getField('hastimeout');\n const timeoutDuration = action.getField('timeoutduration');\n const sourceApp = action.getFieldGuid('sourceapplication');\n\n if (message) {\n let timeout: number | undefined;\n if (hasTimeout) {\n timeout = timeoutDuration;\n }\n\n let title = '';\n const sourceName = await this.getSourceName(sourceApp);\n if (sourceName) {\n title = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_MESSAGE_FROM_USER_X') as string, sourceName);\n }\n\n const data = {\n title,\n message,\n timeout,\n };\n this.commandsService.executeCommand(SharedCommands.ShowMessage, { type: ContextTypes.Specific, data });\n\n return true;\n }\n }\n return false;\n }\n\n private async getSourceName(sourceApplication: IGuid): Promise {\n let result: string | null = null;\n const application = await this.securityCenterClientService.scClient?.getEntityAsync(ApplicationEntity, sourceApplication);\n if (application) {\n result = application.name;\n if (!application.loggedUser.equals(SafeGuid.EMPTY)) {\n const loggedUser = await this.securityCenterClientService.scClient?.getEntityAsync(UserEntity, application.loggedUser);\n if (loggedUser) {\n result = loggedUser.name;\n if (loggedUser.firstName && loggedUser.lastName) {\n result = loggedUser.firstName + ' ' + loggedUser.lastName;\n }\n }\n }\n }\n return result;\n }\n}\n","\n \n
    \n \n \n {{ 'STE_LABEL_APPLICATIONVERSION' | translate }}\n {{ buildVersion }} ({{ releaseDate }})\n \n \n {{ 'STE_LABEL_SECURITYCENTERVERSION' | translate }}\n {{ scVersion }}\n \n \n \n
    \n {{ module.name }} ({{ module.buildVersion }})\n
    \n
    \n
    \n

    {{ copyrights }}

    \n
    \n
    \n\n","import { Component, Injector, OnInit, ViewChild } from '@angular/core';\nimport { TextFlavor, ItemSlot } from '@genetec/gelato';\nimport { GenAlertComponent } from '@genetec/gelato-angular';\nimport { TrackedGenModalComponent } from '@modules/shared/components/tracked/tracked-gen-modal.component';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { VersionService } from '@modules/shared/services/version/version.service';\nimport moment from 'moment';\nimport { ModuleLoadData } from '@modules/shared/api/api';\n\n@Component({\n selector: 'app-about',\n templateUrl: './about.component.html',\n styleUrls: ['./about.component.scss'],\n})\nexport class AboutComponent extends TrackedGenModalComponent implements OnInit {\n @ViewChild(GenAlertComponent) public genAlertComponent!: GenAlertComponent;\n\n public readonly TextFlavor = TextFlavor;\n public readonly ItemSlot = ItemSlot;\n\n public appVersion = '';\n public buildVersion = '';\n public restVersion = '';\n public scVersion = '';\n public releaseDate = '';\n public copyrights = '';\n public modulesLoadData?: ModuleLoadData[];\n\n public modulesDisplayed = false;\n\n constructor(injector: Injector, private languageService: LanguageService, private versionService: VersionService, trackingService: TrackingService) {\n super(injector, trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n // execute both methods in parallel\n this.retrieveVersion().fireAndForget();\n this.retrieveCopyrights().fireAndForget();\n }\n\n private async retrieveCopyrights() {\n this.copyrights = await this.languageService.retrieveCopyrightsAsync();\n }\n\n private async retrieveVersion() {\n const versionInfo = await this.versionService.retrieveVersionAsync();\n if (versionInfo) {\n this.appVersion = versionInfo.appVersion;\n this.buildVersion = versionInfo.buildVersion;\n this.restVersion = versionInfo.restVersion;\n this.scVersion = versionInfo.securityCenterVersion;\n this.releaseDate = moment(versionInfo.releaseDate).format('YYYY/MM/DD');\n this.modulesLoadData = versionInfo.modulesLoadData;\n }\n }\n}\n","// Autogenerated: v2/help/Entities/ApiUser?codegen=ts&InterfaceOnly=False&workflow=True on 2021-08-30 10:02:01 AM\nimport { EntityTypes } from '../Enumerations/EntityTypes';\nimport { Transaction } from '../Transaction';\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EntityManager } from './EntityManager';\nimport { RestResponse } from '../../Connection/RestResponse';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { ValidFlags } from '../Enumerations/ValidFlags';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IUserManager, ICurrentUserInfo } from '../Interface/IUserManager';\nimport { ITransaction } from '../Interface/ITransaction';\n\n// #region Inner classes\n\nexport class CurrentUserInfo extends FieldObject implements ICurrentUserInfo {\n // UserGuid\n public get userGuid(): IGuid {\n return this.getFieldGuid('UserGuid');\n }\n public set userGuid(value: IGuid) {\n this.setFieldGuid('UserGuid', value);\n }\n // IsAdministrator\n public get isAdministrator(): boolean {\n return this.getField('IsAdministrator');\n }\n public set isAdministrator(value: boolean) {\n this.setField('IsAdministrator', value);\n }\n // UserName\n public get userName(): string {\n return this.getField('UserName');\n }\n public set userName(value: string) {\n this.setField('UserName', value);\n }\n // DirectoryGuid\n public get directoryGuid(): IGuid {\n return this.getFieldGuid('DirectoryGuid');\n }\n public set directoryGuid(value: IGuid) {\n this.setFieldGuid('DirectoryGuid', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('UserGuid', SafeGuid.EMPTY);\n this.setField('IsAdministrator', false);\n this.setField('UserName', '');\n this.setFieldGuid('DirectoryGuid', SafeGuid.EMPTY);\n }\n}\n\n// #endregion Inner classes\n\nexport class UserManager extends EntityManager implements IUserManager {\n // #region Constructor\n\n constructor() {\n super('v2/entities/Users');\n }\n\n // #endregion Constructor\n\n public async getCurrentUserInfoAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(CurrentUserInfo, 'currentuserinfo', false, ValidFlags.None, transaction);\n }\n\n public async delegatedUserInfoAsync(authentification: string, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new CurrentUserInfo();\n result.loadFields(response.body);\n return new Promise(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('authentification', authentification);\n\n return this.executeRequestTransactionAsync('currentuserinfo', 'POST', inParam, transaction, responseHandler);\n }\n\n public async executeHotActionAsync(id: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('id', id);\n\n return this.executeRequestTransactionAsync('executehotaction', 'POST', inParam, transaction, responseHandler);\n }\n\n}\n\n"," 0\"\n data-cy=\"quick-actions-button\"\n [flavor]=\"ButtonFlavor.Flat\"\n appTooltip=\"{{ 'STE_LABEL_QUICKACTIONS' | translate }}\"\n id=\"btn-toggle-actions\"\n (click)=\"togglePopupOpen()\"\n class=\"focus-style-override\"\n>\n \n\n\n\n
    \n {{ 'STE_LABEL_QUICKACTIONS' | translate }}\n
    \n \n \n \n {{ quickAction.text }}\n {{ quickAction.secondaryText }}\n \n \n \n\n","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor, PopupPosition } from '@genetec/gelato';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { IUserEntity, IHotAction } from 'RestClient/Client/Interface/IUserEntity';\nimport { UserManager } from 'RestClient/Client/Managers/UserManager';\nimport { GenPopup, GenToastService } from '@genetec/gelato-angular';\nimport { ItemSlot, SelectionType } from '@genetec/gelato';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { CommandBindings, CommandsService, COMMANDS_SERVICE, CommandsSubscription } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { IUserManager } from 'RestClient/Client/Interface/IUserManager';\nimport { Item } from '@modules/shared/interfaces/item';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-actions-tray',\n styleUrls: ['./actions-tray.component.scss'],\n templateUrl: './actions-tray.component.html',\n})\n@InternalPluginDescriptor({\n type: ActionsTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: ActionsTrayComponent.pluginId, priority: 2 },\n isSupported: () => true,\n})\nexport class ActionsTrayComponent extends TrackedComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('00E5F5D0-1667-4756-B392-4F5690E91F65');\n\n private static baseCommandId = 'BAE5DDC0-D9A4-4837-8E75-AD48EBCC467';\n\n @ViewChild(GenPopup) actionsPopup!: GenPopup;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly PopupPosition = PopupPosition;\n public readonly ItemSlot = ItemSlot;\n public readonly ListSelectionType = SelectionType;\n\n public maxShortcut = 9;\n\n public quickActions: Item[] = [];\n\n private commandsSubscription!: CommandsSubscription;\n private scClient: SecurityCenterClient;\n private actions: IHotAction[] = [];\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService,\n private toastService: GenToastService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n private el: ElementRef\n ) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit(): Promise {\n super.ngOnInit();\n this.scClient = this.securityCenterClientService?.scClient;\n\n const currentUser = this.scClient?.currentUserInfo;\n if (currentUser) {\n const user = await this.scClient?.getEntityAsync(UserEntity, currentUser.id);\n if (user) {\n const hotActions = await user.getHotActionsAsync();\n if (hotActions) {\n this.actions = Array.from(hotActions);\n this.quickActions = this.actions.map((x, i) => ({\n id: x.id.toString(),\n text: x.description,\n secondaryText: i < this.maxShortcut ? `Shift + F${i + 1}` : undefined,\n }));\n }\n }\n }\n\n this.subscribeCommands();\n }\n\n public ngOnDestroy(): void {\n this.commandsSubscription?.unsubscribe();\n super.ngOnDestroy();\n }\n\n public async togglePopupOpen(): Promise {\n await this.actionsPopup.toggle();\n }\n\n public async executeAction(action: Item | null): Promise {\n if (action === null) {\n return;\n }\n\n await this.actionsPopup.close();\n const userManager = await this.scClient.getAsync(UserManager);\n const response = await userManager.executeHotActionAsync(SafeGuid.parse(action.id));\n if (response && response.statusCode === HttpStatusCode.OK) {\n const msg = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_ACTION_X_EXECUTED_SUCCESSFULLY') as string, action.text);\n this.toastService.show({ text: msg, flavorCustomColor: this.Color.Pistacchio });\n } else {\n const msg = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_ERROR_OCCURRED_EXECUTING_ACTION_X') as string, action.text);\n this.toastService.show({ text: msg, flavorCustomColor: this.Color.Fragola });\n }\n }\n\n private subscribeCommands(): void {\n if (this.commandsService) {\n for (let i = 1; i <= this.maxShortcut; i++) {\n this.commandsService.registerCommandShortcut(SafeGuid.parse(ActionsTrayComponent.baseCommandId + i.toString()), 'Shift.F' + i.toString());\n }\n\n const bindings = new CommandBindings();\n for (let i = 1; i <= this.maxShortcut; i++) {\n bindings.addCommand({\n commandId: SafeGuid.parse(ActionsTrayComponent.baseCommandId + i.toString()),\n executeCommandHandler: (executeCommandData) => {\n this.executeAction(this.quickActions[i - 1]).fireAndForget();\n executeCommandData.isHandled = true;\n },\n });\n }\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, { priority: 1 });\n }\n }\n}\n","import { Severity } from '@genetec/gelato-angular';\n\nexport class GenInputModel {\n public message!: string;\n public severity!: Severity;\n\n constructor(public value: string = '') {\n this.initialize();\n }\n\n private initialize(){\n this.message = '';\n this.severity = Severity.Default;\n }\n\n public resetMessage (){\n this.initialize();\n }\n}\n","// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n\nimport { GenInputModel } from '@modules/shared/models/gen-input.model';\n\n// ==========================================================================\nexport class UserLogin {\n public username: GenInputModel;\n public password: GenInputModel;\n\n public rememberMe?: boolean;\n\n constructor(username?: string, password?: string, rememberMe?: boolean) {\n this.username = new GenInputModel(username);\n this.password = new GenInputModel(password);\n this.rememberMe = rememberMe;\n }\n}\n","import { AfterViewInit, Component } from '@angular/core';\nimport { skip } from 'rxjs/operators';\nimport { TypedConnectionAwareModalComponent } from './connection-aware-modal.component';\n\n@Component({ template: '' })\nexport abstract class NonRestrictedConnectionAwareModalComponent extends TypedConnectionAwareModalComponent implements AfterViewInit {\n ngAfterViewInit() {\n // Skip the first value, which is the initial value of the loggedIn$ observable\n this.loggedIn$ = this.authService.loggedIn$.pipe(skip(1));\n super.ngAfterViewInit();\n }\n}\n","\n \n
    \n \n {{ 'STE_LABEL_OLD_PASSWORD' | translate: { Default: 'Old password' } }}\n \n \n {{ 'STE_MESSAGE_ERROR_INVALIDCREDENTIALS' | translate }} \n \n\n \n {{ 'STE_LABEL_NEW_PASSWORD' | translate: { Default: 'New password' } }}\n {{ isNewPasswordBlurredOrDirty ? complexityMessage : '' }}\n \n\n \n {{ 'STE_LABEL_CONFIRM_PASSWORD' | translate: { Default: 'Confirm password' } }}\n \n\n
    0\" class=\"mt-2 text-alignement\">\n \n {{ 'STE_LABEL_FORMAT_X_OR_MORE_CHARS_NEEDED_PASSWORD' | translate | stringFormat: [minCharNum] }} \n
    \n
    0\" class=\"text-alignement\">\n \n {{ 'STE_LABEL_FORMAT_X_OR_MORE_LOWER_CHARS_NEEDED_PASSWORD' | translate | stringFormat: [minLowerCase] }}\n
    \n
    0\" class=\"text-alignement\">\n \n {{ 'STE_LABEL_FORMAT_X_OR_MORE_UPPER_CHARS_NEEDED_PASSWORD' | translate | stringFormat: [minUpperCase] }}\n
    \n
    0\" class=\"text-alignement\">\n \n {{ 'STE_LABEL_FORMAT_X_OR_MORE_SPECIAL_CHARS_NEEDED_PASSWORD' | translate | stringFormat: [minSpecialChar] }}\n
    \n
    0\" class=\"text-alignement\">\n \n \n {{ 'STE_LABEL_FORMAT_X_OR_MORE_NUMERICAL_CHARS_NEEDED_PASSWORD' | translate | stringFormat: [minNumericalChar] }}\n
    \n
    0\" class=\"text-alignement\">\n \n {{ 'STE_LABEL_PASSWORD_MUST_MATCH' | translate }}\n
    \n \n {{ 'STE_LABEL_PASSWORD_CANNOT_MATCH_USERNAME' | translate }} \n \n \n {{ 'STE_LABEL_PASSWORD_CANNOT_MATCH_OLD_PASSWORD' | translate }} \n \n
    \n
    \n\n\n\n \n\n","/* eslint-disable @typescript-eslint/prefer-regexp-exec */\n// Match allows to have cleaner and simpler code as exec only counts the first itteration of the regex\nimport { Component, Injector, OnInit, OnDestroy } from '@angular/core';\nimport { Flavor, GenToastService } from '@genetec/gelato-angular';\nimport { Icon } from '@genetec/gelato';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { ISystemConfigurationEntity } from 'RestClient/Client/Interface/ISystemConfigurationEntity';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PasswordConstraints } from 'src/app/modules/shared/models/logon-result-password-constraints';\nimport { UserLogin } from 'src/app/components/login/user-login.model';\nimport { AuthService } from 'src/app/security-center/services/authentication/auth.service';\nimport { CancellationToken } from 'RestClient/Helpers/Helpers';\nimport { PasswordStrengthClient, PasswordStrengthRequest } from '@modules/shared/api/api';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { Severity } from '@genetec/gelato-angular';\nimport { NonRestrictedConnectionAwareModalComponent } from '@modules/shared/components/tracked/non-restricted-connection-aware-modal.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-change-password',\n templateUrl: './change-password.component.html',\n styleUrls: ['./change-password.component.scss'],\n})\nexport class ChangePasswordComponent extends NonRestrictedConnectionAwareModalComponent implements OnInit, OnDestroy {\n public isNewPasswordBlurredOrDirty = false; //TODO - Tech Debt 62284 to remove hack\n public isConfirmPasswordBlurredOrDirty = false;\n public newPassword = '';\n public oldPassword = '';\n public confirmedPassword = '';\n public readonly Icon = Icon;\n public readonly Flavor = Flavor;\n public minCharNum = 0;\n public minLowerCase = 0;\n public minUpperCase = 0;\n public minSpecialChar = 0;\n public minNumericalChar = 0;\n public isInvalidCredentials = false;\n public isPasswordsMatching = false;\n public isCharNumMatch = false;\n public isLowerCaseMatch = false;\n public isUpperCaseMatch = false;\n public isSpecialCharMatch = false;\n public isNumericalCharMatch = false;\n public isPasswordAccepted = false;\n public isPasswordEqualToUserName = false;\n public isOldPasswordEqualToNew = false;\n public passwordStrengthScore = 0;\n public complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_VERY_WEAK') as string;\n public progressBarPercent = '0%';\n public complexityMessageSeverity = Severity.Error;\n\n // required to open the modal from login component\n public isExpired?: boolean;\n public username?: string;\n private directory?: string;\n\n private specialRegex = /[^A-Za-z0-9]/g;\n private numericalRegex = /[0-9]/g;\n private upperCaseRegex = /[A-Z]/g;\n private lowerCaseRegex = /[a-z]/g;\n private user: IUserEntity | null = null;\n private logonResultPasswordConstraint?: PasswordConstraints;\n private passwordConstraintRest: ISystemConfigurationEntity | null = null;\n private cancellationToken?: CancellationToken;\n private response: IRestResponse | null = null;\n private scClient: WebAppClient;\n\n private evaluatePasswordStrength: Subject = new Subject();\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n securityCenterClientService: SecurityCenterClientService,\n protected authService: AuthService,\n private genToastService: GenToastService,\n private translateService: TranslateService,\n private passwordStrenghClient: PasswordStrengthClient\n ) {\n super(authService, injector, trackingService);\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n await this.initializePasswordConstraint();\n if (!this.isExpired) {\n this.user = await this.scClient.getEntityAsync(UserEntity, this.scClient.userId);\n }\n\n this.evaluatePasswordStrength.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(async (value) => await this.updatePasswordStrength(value));\n }\n\n public onOldPassword(oldPasswordInput: string): void {\n this.verifyPasswordConstraint();\n }\n\n public onNewPassword(newPasswordInput: string): void {\n this.isNewPasswordBlurredOrDirty = true;\n\n this.verifyPasswordConstraint();\n\n if (this.confirmedPassword !== '') {\n this.isPasswordsMatching = this.newPassword === this.confirmedPassword;\n }\n\n this.evaluatePasswordStrength.next(this.newPassword);\n }\n\n public onConfirmedPassword(confirmedPasswordInput: string): void {\n this.isConfirmPasswordBlurredOrDirty = true;\n this.confirmedPassword = confirmedPasswordInput;\n this.isPasswordsMatching = this.newPassword === this.confirmedPassword;\n }\n\n public onNewPasswordBlurred(): void {\n this.isNewPasswordBlurredOrDirty = true;\n }\n\n public onConfirmPasswordBlurred(): void {\n this.isConfirmPasswordBlurredOrDirty = true;\n }\n\n public verifyPasswordConstraint(): void {\n this.isLowerCaseMatch = (this.newPassword.match(this.lowerCaseRegex) || []).length >= this.minLowerCase;\n this.isUpperCaseMatch = (this.newPassword.match(this.upperCaseRegex) || []).length >= this.minUpperCase;\n this.isNumericalCharMatch = (this.newPassword.match(this.numericalRegex) || []).length >= this.minNumericalChar;\n this.isSpecialCharMatch = (this.newPassword.match(this.specialRegex) || []).length >= this.minSpecialChar;\n this.isCharNumMatch = this.newPassword.length >= this.minCharNum;\n this.isOldPasswordEqualToNew = this.oldPassword.trim() === this.newPassword.trim();\n if (!this.isExpired) {\n this.isPasswordEqualToUserName =\n this.newPassword !== '' &&\n (this.same(this.user?.name, this.newPassword) || this.same(this.user?.lastName, this.newPassword) || this.same(this.user?.firstName, this.newPassword));\n } else {\n this.isPasswordEqualToUserName = this.newPassword !== '' && this.same(this.username, this.newPassword); //TODO : make last name and first name accessible in the login page\n }\n this.isPasswordAccepted =\n this.isCharNumMatch &&\n this.isSpecialCharMatch &&\n this.isNumericalCharMatch &&\n this.isUpperCaseMatch &&\n this.isLowerCaseMatch &&\n !this.isPasswordEqualToUserName &&\n !this.isOldPasswordEqualToNew;\n }\n\n public onSave = async (): Promise => {\n try {\n if (this.isExpired && this.directory && this.username) {\n this.response = await this.scClient.changeExpiredPasswordAsync(this.directory, this.username, this.oldPassword, this.newPassword);\n } else if (this.user != null) {\n this.response = await this.user.safeUpdatePasswordAsync(this.newPassword, this.oldPassword);\n }\n } catch {\n this.isInvalidCredentials = true;\n return false;\n }\n if (this.response?.statusCode === HttpStatusCode.OK) {\n const msg = this.translateService.instant('STE_LABEL_SUCCESSFUL_OPERATION') as string;\n this.genToastService.show({ text: msg, flavorCustomColor: this.Color.Pistacchio });\n if (this.isExpired) {\n this.authService.isSigningIn(true);\n const userLogin = new UserLogin(this.username, this.newPassword);\n this.cancellationToken = new CancellationToken(AuthService.defaultTimeout);\n this.authService.logInWithCredentialsAsync(userLogin, this.cancellationToken).fireAndForget();\n }\n\n return true;\n }\n\n this.authService.isSigningIn(false);\n return false;\n };\n\n public async initializePasswordConstraint(): Promise {\n if (this.isExpired && this.logonResultPasswordConstraint) {\n this.minCharNum = this.logonResultPasswordConstraint.MinCharacters;\n this.minLowerCase = this.logonResultPasswordConstraint.MinLowerCharacters;\n this.minUpperCase = this.logonResultPasswordConstraint.MinUpperCharacters;\n this.minSpecialChar = this.logonResultPasswordConstraint.MinSpecialCharacters;\n this.minNumericalChar = this.logonResultPasswordConstraint.MinNumericalCharacters;\n } else {\n this.passwordConstraintRest = await this.scClient.getEntityAsync(\n SystemConfigurationEntity,\n Guids.SystemConfiguration\n );\n if (this.passwordConstraintRest) {\n this.minCharNum = this.passwordConstraintRest.passwordMinCharacter;\n this.minLowerCase = this.passwordConstraintRest.passwordMinLowerCharacter;\n this.minUpperCase = this.passwordConstraintRest.passwordMinUpperCharacter;\n this.minSpecialChar = this.passwordConstraintRest.passwordMinSpecialCharacter;\n this.minNumericalChar = this.passwordConstraintRest.passwordMinNumericalCharacter;\n }\n }\n }\n public getComplexityPasswordInfo(score: number): void {\n switch (score) {\n case 0: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_VERY_WEAK') as string;\n //this.progressBarPercent = '20%';\n this.complexityMessageSeverity = Severity.Error;\n break;\n }\n case 1: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_WEAK') as string;\n //this.progressBarPercent = '40%';\n this.complexityMessageSeverity = Severity.Error;\n break;\n }\n case 2: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_FAIR') as string;\n //this.progressBarPercent = '60%';\n this.complexityMessageSeverity = Severity.Warning;\n break;\n }\n case 3: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_STRONG') as string;\n //this.progressBarPercent = '80%';\n this.complexityMessageSeverity = Severity.Success;\n break;\n }\n case 4: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_VERY_STRONG') as string;\n //this.progressBarPercent = '100%';\n this.complexityMessageSeverity = Severity.Success;\n break;\n }\n default: {\n this.complexityMessage = this.translateService.instant('STE_LABEL_PASSWORD_STRENGTH_VERY_WEAK') as string;\n //this.progressBarPercent = '0%';\n this.complexityMessageSeverity = Severity.Error;\n break;\n }\n }\n }\n\n private async updatePasswordStrength(newPassword: string): Promise {\n if (this.isPasswordEqualToUserName) {\n this.passwordStrengthScore = 0;\n } else {\n const req = new PasswordStrengthRequest({ newPassword });\n this.passwordStrengthScore = await this.passwordStrenghClient.passwordStrength(req).toPromise();\n }\n\n this.getComplexityPasswordInfo(this.passwordStrengthScore);\n }\n\n /** Compare 2 strings. Returns true if they are the same (case insensitive) */\n private same(first?: string, second?: string): boolean {\n if (first === undefined || second === undefined) {\n return false;\n }\n\n return first.toUpperCase() === second.toUpperCase();\n }\n}\n","\n \n
    {{ 'STE_LABEL_PASS_EXPIRE_TOMORROW' | translate }}
    \n
    \n\n\n\n {{ 'STE_LABEL_PASS_EXPIRE_IN_X_DAYS' | translate | stringFormat: [daysRemaining] }}\n\n","import { Component, Injector } from '@angular/core';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { ChangePasswordComponent } from '../change-password.component';\n\n@Component({\n selector: 'app-change-password-notification',\n templateUrl: './change-password-notification.component.html',\n})\nexport class ChangePasswordNotificationComponent extends ConnectionAwareModalComponent {\n public daysRemaining?: number;\n constructor(protected authService: AuthService, injector: Injector, trackingService: TrackingService, private modalService: GenModalService) {\n super(authService, injector, trackingService);\n }\n public openChangePasswordModal = async (): Promise => {\n this.modalService.open(ChangePasswordComponent);\n return Promise.resolve(true);\n };\n}\n","import { Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@modules/shared/interfaces/context-menu-item/context-menu-item';\nimport { MenuItem } from '@modules/shared/interfaces/menu-item';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n/**\n * @description Use this service anytime you have a context menu, built with a datasource and when you want to track current selection with a Checkmark icon.\n * @link example https://nietzsche.genetec.com/display/UW/WebApp+-+Tiles+-+Entity+States?preview=/125743333/125745491/updated-tile-state-swap-menu.png\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ContextMenuItemSwitcherService {\n public readonly MeltedIcon = MeltedIcon;\n\n /**\n * Changes the previous selection's icon from Checkmark to None, and sets the new selection's icon to Checkmark.\n *\n * @param newSelectionId id of the new selection\n * @param trackingDataSource array containing the data\n * @returns an altered copy of the trackingDataSource array\n */\n public getNextDataSourceWithNewSelection(newSelectionId: string, trackingDataSource: ContextMenuItem[]): ContextMenuItem[] {\n // then we must uncheck previous selection, and mark the new one\n const previousIdx = trackingDataSource.findIndex((option: MenuItem) => option.icon !== MeltedIcon.None);\n if (previousIdx !== -1) {\n trackingDataSource[previousIdx].icon = MeltedIcon.None;\n }\n const newSelectionIdx = trackingDataSource.findIndex((option) => option.id === newSelectionId);\n if (newSelectionIdx !== -1) {\n trackingDataSource[newSelectionIdx].icon = MeltedIcon.Checkmark;\n }\n return [...trackingDataSource];\n }\n}\n","
    \n \n \n \n \n\n \n \n 1\">\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {{ currentEntityText }} \n \n \n\n \n
    \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n\n \n \n
    \n\n \n \n
    \n","import { ChangeDetectorRef, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, IconSize, ItemSlot, TextFlavor } from '@genetec/gelato';\nimport { GenMenu, MeltedIcon } from '@genetec/gelato-angular';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { ContextMenuItem } from '@modules/shared/interfaces/context-menu-item/context-menu-item';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { CommandsUsage } from '@modules/shared/services/commands/commands-usage/commands-usage';\nimport { TileHeaderService } from '@modules/tiles/components/tile-state-header/services/tile-state-header.service';\nimport { TileDetailsVisibility } from '@modules/tiles/components/tile-state-header/tile-state-header.component';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { TileService } from '@modules/tiles/services/tile.service';\nimport { ContextMenuItemSwitcherService } from '@shared/services/context-menu/context-menu-item-switcher.service';\nimport { uniqueId } from 'lodash-es';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\n\n/**\n * @copyright Copyright (C) 2020 by Genetec Inc. All rights reserved. May be used only in accordance with a valid Source Code License Agreement.\n * @description This is a display component that is designed to be nested inside a plugin. The scope is to only support doors, zones and cameras.\n * @example door-entity-state is a plugin that is injected on a tile, and uses .\n * It will pass down all the inputs to it, and entity-state-overlay will take care of the rest.\n * @link Analysis document: https://nietzsche.genetec.com/display/UW/WebApp+-+Tiles+-+Entity+States\n */\n@UntilDestroy()\n@Component({\n selector: 'app-entity-state-overlay',\n templateUrl: './entity-state-overlay.component.html',\n styleUrls: ['./entity-state-overlay.component.scss'],\n})\nexport class EntityStateOverlayComponent implements OnInit {\n @ViewChild('contextMenu') public caretMenu!: GenMenu;\n\n @Input()\n public content?: Content;\n\n @Input()\n public commandsUsage!: CommandsUsage | null;\n\n @Input()\n public excludedCommandIds: IGuid[] = [];\n\n @Input()\n public maximumButtonCount = 1;\n\n @Input()\n public customIconId?: IGuid | null;\n\n @Input()\n public customIconState?: CustomIconState | null;\n\n @Input()\n public entityIcon?: Icon | string | null;\n\n @Input()\n public commandsLoadingChangeCallback?: (val: boolean) => void;\n\n /**\n * RelatedContent is the data that will be displayed inside the entity switcher caret.\n */\n public set relatedContent(content: Content[]) {\n // clear entitySwitcher data.\n const dataSource: ContextMenuItem[] = [];\n this.#relatedContent = content;\n\n // Process related content for caret dropdown.\n this.#relatedContent.forEach((relatedContent: Content, index) => {\n dataSource.push({\n guid: relatedContent.id,\n id: index.toString(),\n text: relatedContent.title,\n icon: MeltedIcon.None,\n actionItem: { execute: this.switchEntityCallback.bind(this) },\n } as ContextMenuItem);\n });\n\n // Set first item as \"Selected\"\n if (dataSource.length > 0) {\n this.entitySwitcherDataSource = dataSource;\n this.entitySwitcherDataSourceSubject.next(dataSource);\n const firstEntity = dataSource[0];\n this.currentEntity = firstEntity;\n this.currentEntityText = firstEntity.text;\n this.currentEntity.icon = MeltedIcon.Checkmark;\n }\n }\n public get relatedContent(): Content[] {\n // eslint-disable-next-line no-underscore-dangle\n return this.#relatedContent;\n }\n\n // Enums\n public readonly ItemSlot = ItemSlot;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly IconSize = IconSize;\n public readonly componentGuid = uniqueId();\n public readonly TileDetailsVisibility = TileDetailsVisibility;\n public readonly RunningState = RunningState;\n\n // Public fields (used in template)\n public isComponentFullyLoaded = false;\n public areButtonsSpaced = false;\n public entityId = '';\n public title = '';\n public titleColor = '';\n public description = '';\n public entitySwitcherDataSource$ = new Observable();\n public currentEntity: ContextMenuItem = { id: '', text: '' };\n public tileId = -1;\n public tileDetailsVisibility?: TileDetailsVisibility;\n public associatedTileItem!: TileItem;\n public currentEntityText = '';\n public entitySwitcherDataSource: ContextMenuItem[] = [];\n\n // Private fields\n #relatedContent: Content[] = [];\n\n private entitySwitcherDataSourceSubject = new ReplaySubject();\n\n constructor(\n private contextMenuItemSwitcherService: ContextMenuItemSwitcherService,\n private tileService: TileService,\n private tileHeaderService: TileHeaderService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.entitySwitcherDataSource$ = this.entitySwitcherDataSourceSubject.asObservable();\n\n this.tileHeaderService.tileDetailsVisibility$.pipe(untilDestroyed(this)).subscribe((visibility: TileDetailsVisibility) => {\n this.tileDetailsVisibility = visibility;\n });\n\n // process state change.\n this.tileHeaderService.state$.pipe(untilDestroyed(this)).subscribe((state) => {\n if (state) {\n this.relatedContent = state.content?.subContents ?? [];\n this.associatedTileItem = state;\n }\n });\n }\n\n ngOnInit() {\n const content = this.content;\n if (content) {\n this.entityId = content.source;\n this.title = content.title;\n this.description = content.description;\n this.titleColor = content.color;\n this.entityIcon ??= content.icon;\n this.relatedContent = content?.contextsubContents ?? [];\n }\n }\n\n /**\n * Fired when the app-command-buttons are done loading\n *\n * @param val whether the buttons are still loading (true if loading, false if loaded)\n */\n public isLoadingChangeCallback(val: boolean): void {\n // this fixes an issue with ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.isComponentFullyLoaded = !val;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n public toggleEntitySwitcher(): void {\n this.caretMenu?.toggle().fireAndForget();\n }\n\n /**\n * Will change video feed to the selected item.\n *\n * @param item selected item from the caret's context menu\n */\n public async switchEntityCallback(item: ContextMenuItem): Promise {\n // Change selection\n this.entitySwitcherDataSource$.pipe(take(1), untilDestroyed(this)).subscribe((dataSource) => {\n this.entitySwitcherDataSourceSubject.next(this.contextMenuItemSwitcherService.getNextDataSourceWithNewSelection(item.id, dataSource));\n });\n\n // Assign new current Entity\n this.currentEntity = item;\n this.currentEntityText = item.text;\n\n // use service to notify Tile Component that we want to change content.\n const tileItem = this.associatedTileItem;\n if (tileItem.content && item.guid) {\n // alter the order of the subcontents so that the selected on appears first.\n let temp: Content[] | undefined = [];\n const newSelectedCamera = tileItem.content.subContents.find((content) => content.id === item.guid);\n if (newSelectedCamera) {\n // make new array with everything except the selected item\n temp = tileItem.content.subContents.filter((val) => val.id !== item.guid);\n if (temp) {\n // add selected item as first one in array\n temp.unshift(newSelectedCamera);\n\n // assign new reference\n tileItem.content.subContents = temp;\n }\n }\n // Update tile content with that new contentGroup.\n await this.tileService.tryUpdateTileSubContentsAsync(tileItem, tileItem.content, false);\n }\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const FilterTypes = Constants({\n Text: SafeGuid.parse('052207A6-0E49-4808-9F24-B31DCCE4008E'),\n Search: SafeGuid.parse('F60AA3A3-840C-41DD-A041-AC2F31EDDF17'),\n Entities: SafeGuid.parse('F1F492AB-F8C4-42F2-BCCC-6028FECFCD61'),\n Date: SafeGuid.parse('D9DE7474-7A7A-40AA-BD76-D13BE80FED69'),\n Enum: SafeGuid.parse('FED3CFCA-5AA9-4268-99A4-13DC8411283D'),\n TreeView: SafeGuid.parse('26A05F33-EB4C-4D79-8F6E-61E2DE1BDE5C'),\n NumericRange: SafeGuid.parse('28CA4F6D-788C-4E90-B35D-FF0532FA2333'),\n});\n","import { Component, OnInit } from '@angular/core';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { FiltersService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SafeGuid } from 'safeguid';\nimport { FilterDescriptor } from '@modules/general/components/filter-plugins/interfaces/filter-descriptor';\nimport { MetadataPluginComponent } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackedComponent } from '../../../shared/components/tracked/tracked.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: '',\n})\nexport abstract class FilterPluginBaseComponent extends TrackedComponent implements OnInit, MetadataPluginComponent {\n protected initData!: FilterDescriptor; // Will be set in setInitData via plugin injector\n protected filterService!: FiltersService;\n\n public get descriptor(): FilterDescriptor {\n return this.initData;\n }\n\n protected get typeSpecificFields(): Record[] | undefined {\n return Array.isArray(this.initData?.typeSpecificFields) ? (this.initData.typeSpecificFields as Record[]) : [];\n }\n\n constructor(trackingService: TrackingService, protected pluginId: SafeGuid) {\n super(trackingService);\n }\n\n public ngOnInit(): void {}\n\n public setInitData(initData: unknown): void {\n this.initData = initData as FilterDescriptor;\n }\n\n public setDataContext(context: unknown): void {\n this.filterService = context as FiltersService;\n }\n\n public updateFilter(value: unknown): void {\n if (this.filterService && this.initData) {\n this.filterService.set({ pluginId: this.pluginId, filterId: this.initData.filterId, value, type: this.initData.type });\n }\n }\n\n protected getField(fieldName: string): T | undefined {\n const lowerCaseFieldName = fieldName.toLowerCase();\n let originalKeyValue: string | undefined;\n const item = this.typeSpecificFields?.find((field) => {\n const originalKeys = Object.keys(field);\n const lowerCaseKeys = originalKeys.map((key) => key.toLowerCase());\n const keyIndex = lowerCaseKeys.indexOf(lowerCaseFieldName);\n if (keyIndex !== -1) {\n originalKeyValue = originalKeys[keyIndex];\n return true;\n }\n return false;\n });\n if (!originalKeyValue || !item) {\n return undefined;\n }\n return item[originalKeyValue] as T | undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { Component, OnInit } from '@angular/core';\nimport { CalendarTimeFrame, CalendarFlavor } from '@genetec/gelato-angular';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { FilterTypes } from 'src/app/modules/shared/enumerations/filter-types';\nimport { SafeGuid } from 'safeguid';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: ``,\n})\n@InternalPluginDescriptor({\n type: FilterPluginDateComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginDateComponent.pluginId,\n subSection: FilterTypes.Date,\n },\n isSupported: () => true,\n})\nexport class FilterPluginDateComponent extends FilterPluginBaseComponent implements OnInit {\n public static readonly pluginId = SafeGuid.parse('AC0FAA33-187F-48E0-B172-1FB5DC2D20C3');\n\n public calendarFlavor: CalendarFlavor = CalendarFlavor.Date;\n public calendarTimeFrame: CalendarTimeFrame = CalendarTimeFrame.All;\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginDateComponent.pluginId);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.initData) {\n const typeSpecificFields = this.initData.typeSpecificFields;\n const fieldsArray = typeSpecificFields;\n\n const calendarTypeField = fieldsArray.find((x) => 'calendarType' in x);\n this.calendarFlavor = calendarTypeField?.calendarType as CalendarFlavor;\n\n const timeFrameField = fieldsArray.find((x) => 'timeFrame' in x);\n this.calendarTimeFrame = timeFrameField?.timeFrame as CalendarTimeFrame;\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { FilterTypes } from 'src/app/modules/shared/enumerations/filter-types';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: ``,\n})\n@InternalPluginDescriptor({\n type: FilterPluginEntityComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginEntityComponent.pluginId,\n subSection: FilterTypes.Entities,\n },\n isSupported: () => true,\n})\nexport class FilterPluginEntityComponent extends FilterPluginBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('D3D756C0-912B-4425-9C9C-13EDA380C1D4');\n\n public entityTypes: string[] = [];\n public refresherType?: SafeGuid;\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginEntityComponent.pluginId);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n this.extractTypeSpecificFields();\n }\n\n private extractTypeSpecificFields(): void {\n this.entityTypes = Array.from(this.getField('entityTypes') ?? []);\n const guidStr = this.getField('refresherType');\n this.refresherType = guidStr ? SafeGuid.parse(guidStr) : undefined;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { FilterTypes } from '@modules/shared/enumerations/filter-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { FilterContext, IFilterContent } from '@modules/shared/api/api';\nimport { SafeGuid } from 'safeguid';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: ``,\n})\n@InternalPluginDescriptor({\n type: FilterPluginEnumComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginEnumComponent.pluginId,\n subSection: FilterTypes.Enum,\n },\n isSupported: () => true,\n})\nexport class FilterPluginEnumComponent extends FilterPluginBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('7FE4FCE8-6C56-4A14-8BDA-EC6AAB04D568');\n\n public filterContext?: FilterContext;\n public values?: { id: string; text: string }[];\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginEnumComponent.pluginId);\n }\n\n ngOnInit() {\n super.ngOnInit();\n if (this.descriptor.lazyLoad && !this.descriptor.providerId.isEmpty()) this.buildFilterContext();\n }\n\n public loadEnumValues(content: IFilterContent): void {\n const enumValuesFieldName = 'enumValues';\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n const fieldValue = content.typeSpecificFields?.find((x) => enumValuesFieldName in x)?.[enumValuesFieldName] as unknown | undefined;\n if (Array.isArray(fieldValue) && fieldValue.length > 0 && typeof fieldValue[0].id === 'string' && typeof fieldValue[0].text === 'string') {\n this.values = fieldValue as { id: string; text: string }[];\n } else {\n delete this.values;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n }\n\n private buildFilterContext(): void {\n const context = new FilterContext();\n context.filterProviderId = this.descriptor.providerId ?? SafeGuid.EMPTY;\n\n const typeSpecificFields: Record = {};\n\n const enumTranslationDataTypeFieldName = 'enumTranslationDataType';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const fieldValue = this.descriptor.typeSpecificFields?.find((x) => enumTranslationDataTypeFieldName in x)?.[enumTranslationDataTypeFieldName] as unknown | undefined;\n if (typeof fieldValue === 'string') {\n typeSpecificFields[enumTranslationDataTypeFieldName] = fieldValue;\n }\n context.typeSpecificFields = typeSpecificFields;\n\n this.filterContext = context;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SafeGuid } from 'safeguid';\nimport { FilterTypes } from 'src/app/modules/shared/enumerations/filter-types';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginComponentExposure } from 'src/app/modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: '',\n})\n@InternalPluginDescriptor({\n type: FilterPluginNumericRangeComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginNumericRangeComponent.pluginId,\n subSection: FilterTypes.NumericRange,\n } as PluginComponentExposure,\n isSupported: () => true,\n})\nexport class FilterPluginNumericRangeComponent extends FilterPluginBaseComponent implements OnInit {\n public static readonly pluginId = SafeGuid.parse('222B82E4-E1EB-4C7A-AE5F-CCBF5BE4D63C');\n public min: number = Number.MIN_VALUE;\n public max: number = Number.MAX_VALUE;\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginNumericRangeComponent.pluginId);\n }\n\n ngOnInit() {\n this.min = this.getField('min') ?? this.min;\n this.max = this.getField('max') ?? this.max;\n }\n}\n","import { Component } from '@angular/core';\nimport { FilterTypes } from 'src/app/modules/shared/enumerations/filter-types';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: '',\n})\n@InternalPluginDescriptor({\n type: FilterPluginTextComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginTextComponent.pluginId,\n subSection: FilterTypes.Text,\n },\n isSupported: () => true,\n})\nexport class FilterPluginTextComponent extends FilterPluginBaseComponent {\n public static pluginId = SafeGuid.parse('DE7C988C-5294-45CE-AB36-4BCAAC2C0C9B');\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginTextComponent.pluginId);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Guid } from 'typescript-guid';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { FilterTypes } from '@modules/shared/enumerations/filter-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { SafeGuid } from 'safeguid';\nimport { FilterContext, IFilterContent } from '@modules/shared/api/api';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template:\n '',\n})\n@InternalPluginDescriptor({\n type: FilterPluginTreeViewComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginTreeViewComponent.pluginId,\n subSection: FilterTypes.TreeView,\n },\n isSupported: () => true,\n})\nexport class FilterPluginTreeViewComponent extends FilterPluginBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('42C2A783-2634-45C4-B179-7947399BBB7C');\n\n public context!: FilterContext;\n public options!: string[];\n public rootItems!: unknown[];\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginTreeViewComponent.pluginId);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.loadOptions();\n this.buildFilterContext();\n }\n\n public buildFilterContext(): void {\n const context = new FilterContext();\n context.filterProviderId = this.descriptor.providerId ?? Guid.EMPTY;\n\n const metadata = this.extractValueFromFieldObjects('metadata', this.descriptor.typeSpecificFields) ?? '';\n const includeCustomEvents = this.extractValueFromFieldObjects('includeCustomEvents', this.descriptor.typeSpecificFields) ?? true;\n\n const typeSpecificFields = new FieldObject();\n typeSpecificFields.setField('metadata', metadata);\n typeSpecificFields.setField('includeCustomEvents', includeCustomEvents);\n context.typeSpecificFields = typeSpecificFields;\n\n this.context = context;\n }\n\n public loadRootItems(content: IFilterContent): void {\n this.rootItems = this.extractArrayFromFieldObjects('rootItems', Array.from(content.typeSpecificFields));\n }\n\n private loadOptions(): void {\n this.options = this.descriptor.typeSpecificFields ? this.extractArrayFromFieldObjects('availableOptions', this.descriptor.typeSpecificFields) : [];\n }\n\n private extractArrayFromFieldObjects(fieldName: string, fields: any[]): T {\n const field = Array.from(fields).find((x) => fieldName in x) as Record;\n const fieldValue = field?.[fieldName];\n return Array.isArray(fieldValue) ? (fieldValue as T) : ([] as unknown as T);\n }\n\n private extractValueFromFieldObjects(fieldName: string, fields: any[]): T | undefined {\n const field = Array.from(fields).find((x) => fieldName in x) as Record;\n return (field?.[fieldName] as T) ?? undefined;\n }\n}\n","\n\n \n {{ mailList.length }}\n\n\n\n
    \n {{ 'STE_LABEL_MAILBOX' | translate }}\n
    \n \n \n \n \n\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, TextFlavor, ItemSlot, PopupPosition } from '@genetec/gelato';\nimport { GenListActions, GenMeltedListItem, GenPopup } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes, TraySubSections } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { MailboxEnvelop, MailboxService } from '../../services/mailbox.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-mailbox-tray',\n templateUrl: './mailbox-tray.component.html',\n styleUrls: ['./mailbox-tray.component.scss'],\n})\n@InternalPluginDescriptor({\n type: MailboxTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: MailboxTrayComponent.pluginId, subSection: TraySubSections.MainBar },\n isSupported: () => true,\n})\nexport class MailboxTrayComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('2087902A-3390-45D1-8975-DE9F108DDBC0');\n\n @ViewChild(GenPopup, { static: true }) mailboxPopup!: GenPopup;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly ItemSlot = ItemSlot;\n public readonly PopupPosition = PopupPosition;\n\n public mailList: GenMeltedListItem[] = [];\n public mailActions: GenListActions = {\n delete: {\n id: 'delete',\n execute: (itemsSelected?: Array) => this.removeMail(itemsSelected ?? []),\n canExecute: () => true,\n },\n };\n\n constructor(private mailboxService: MailboxService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n this.mailboxService.mailboxChanged.pipe(untilDestroyed(this)).subscribe((envelops: MailboxEnvelop[]) => this.onMailboxChanged(envelops));\n }\n\n public async toggleIsPopupOpen(): Promise {\n await this.mailboxPopup.toggle();\n }\n\n public async openMail(mail: GenMeltedListItem | null): Promise {\n if (mail === null) {\n return;\n }\n this.mailboxService.executeHandler(SafeGuid.parse(mail.id));\n await this.mailboxPopup.close(); // once execute, close the popup\n }\n\n public async removeMail(mails: GenMeltedListItem[]): Promise {\n if (this.mailList.length - mails.length === 0) {\n await this.mailboxPopup.close();\n }\n this.mailboxService.remove(...mails.map((x) => SafeGuid.parse(x.id)));\n }\n\n private onMailboxChanged(mails: MailboxEnvelop[]): void {\n this.mailList = mails.map(\n (x) =>\n ({\n id: x.id.toString(),\n text: x.title ?? '',\n secondaryText: x.summary,\n icon: x.icon,\n } as GenMeltedListItem)\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { MapContentTypes } from '@modules/maps/enumerations/maps-content-types';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MobileApplicationEntity } from 'RestClient/Client/Model/Application/MobileApplicationEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IMobileApplicationEntity } from 'RestClient/Client/Interface/IMobileApplicationEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@InternalContentPluginDescriptor({\n type: MobileUserActionsWidgetComponent,\n pluginTypes: [PluginTypes.Widget, PluginTypes.MapPopupCompact],\n exposure: { id: MobileUserActionsWidgetComponent.pluginId, priority: 0 },\n isContentSupported: (content: Content) => !!content?.type.equals(MapContentTypes.MobileUser),\n})\n@Component({\n selector: 'app-mobile-user-actions-widget',\n templateUrl: './mobile-user-actions-widget.component.html',\n styleUrls: ['./mobile-user-actions-widget.component.scss'],\n})\nexport class MobileUserActionsWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('DBAA2E8A-93DF-44BC-BB83-EECE48DC937C');\n\n public mobileUser: MobileApplicationEntity | null = null;\n public isLoading = true;\n public content?: Content;\n public dataContext?: ContentService;\n public isOnline = false;\n public status = '';\n public lastSeen = '';\n private loggedUserId: IGuid | undefined;\n private scClient: WebAppClient | null = null;\n\n constructor(\n private translateService: TranslateService,\n trackingService: TrackingService,\n private timeService: TimeService,\n securityCenterClientService: SecurityCenterClientService\n ) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit() {\n if (this.scClient && this.content) {\n this.mobileUser = (await this.scClient.getEntityAsync(\n MobileApplicationEntity,\n SafeGuid.parse(this.content.source)\n )) as MobileApplicationEntity;\n if (this.mobileUser) {\n this.isOnline = this.mobileUser.runningState !== RunningState.NotRunning;\n if (this.isOnline) {\n this.status = this.translateService.instant('STE_LABEL_MOBILEUSER_ONLINE') as string;\n } else {\n this.status = this.translateService.instant('STE_LABEL_MOBILEUSER_OFFLINE') as string;\n }\n\n this.loggedUserId = this.mobileUser.loggedUser;\n\n // if the user is offline\n if (this.loggedUserId.isEmpty()) {\n this.loggedUserId = this.mobileUser.lastLoggedUser;\n }\n\n const user = (await this.scClient.getEntityAsync(UserEntity, this.loggedUserId)) as UserEntity;\n if (user) {\n // retrieve the last seen timestamp (this info come from the backend which listen for invalidates)\n const lastSeen = this.content.parameters?.getFieldDate('Timestamp');\n if (lastSeen) {\n this.lastSeen = this.timeService.formatRelative(lastSeen);\n }\n }\n }\n }\n this.isLoading = false;\n }\n\n public setDataContext(context: ContentService): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n {{ status }}\n {{ lastSeen }}\n\n","import { FieldObject } from '../../Helpers/FieldObject';\nimport { IColumnInfo, IReportInstanceResult, IReportResult } from '../Interface/IReportResult';\nimport { SafeGuid } from 'safeguid';\nimport { IFieldObject } from '../Interface/IFieldObject';\n\nexport class ColumnInfo implements IColumnInfo {\n public index = 0;\n public name = '';\n public type = '';\n\n constructor(indexValue: number, nameValue: string, typeValue: string) {\n this.index = indexValue;\n this.name = nameValue;\n this.type = typeValue;\n }\n}\n\nexport abstract class ReportInstanceResult implements IReportInstanceResult\n{\n public ToJson(): IFieldObject {\n var json = JSON.stringify(this);\n var fo = new FieldObject();\n fo.fromJson(json);\n return fo;\n }\n}\n\nexport abstract class ReportResult implements IReportResult {\n public entityLookup = new Map();\n\n public successful = false;\n public errorSeverity = '';\n public error = '';\n public errorMessage = '';\n public source = '';\n public lastResult = false;\n\n constructor() {}\n\n public load(body: { [k: string]: any }): void {\n this.successful = body['Successful'];\n this.errorSeverity = body['ErrorSeverity'];\n this.error = body['Error'];\n this.errorMessage = body['ErrorMessage'];\n this.source = body['Source'];\n this.lastResult = body['LastResult'];\n\n // Do we have entitylookup?\n const fo = new FieldObject();\n if (body['EntityLookup']) {\n fo.loadFields(body['EntityLookup']);\n for (const key of fo.AllFieldsKey) {\n this.entityLookup.set(key, fo.getField(key));\n }\n }\n\n this.parseSpecificResponse(body);\n }\n\n protected getColumn(columns: any): Map {\n const results = new Map();\n\n let index = 0;\n for (const column of columns) {\n const name = column['Name'];\n const type = column['Type'];\n const col = new ColumnInfo(index, name, type);\n results.set(name, col);\n ++index;\n }\n return results;\n }\n\n protected getRows(body: { [k: string]: any }): Array> {\n const rowResult = new Array>();\n const results = body['Results'];\n if (results != null) {\n for (const result of results) {\n const rows = result['Rows'];\n for (const row of rows) {\n rowResult.push(row);\n }\n }\n }\n return rowResult;\n }\n\n protected abstract parseSpecificResponse(body: { [k: string]: any }): void;\n\n public abstract getResults() : Array;\n\n protected getSafeValue(type: string, rowEntry: any): T {\n let isNull = false;\n if (rowEntry === null || rowEntry === undefined) {\n isNull = true;\n }\n\n switch (type) {\n case \"string\": {\n if (isNull === true) {\n return \"\" as unknown as T;\n }\n return rowEntry;\n }\n case \"Guid\": {\n if (isNull === true) {\n // TODO FM: Check to see if parsing necesary\n return SafeGuid.EMPTY as unknown as T;\n }\n return SafeGuid.parse(rowEntry.toLowerCase()) as unknown as T;\n }\n case \"Date\": {\n if (isNull === true) {\n return new Date() as unknown as T;\n }\n return new Date(rowEntry) as unknown as T;\n }\n case \"number\": {\n if (isNull === true) {\n return 0 as unknown as T;\n }\n return rowEntry;\n }\n case \"boolean\": {\n if (isNull === true) {\n return false as unknown as T;\n }\n return rowEntry;\n }\n default: {\n return undefined as unknown as T;\n }\n }\n }\n\n}\n","// Autogenerated: v2/help/Classes/GeocodeReportResult?codegen=ts&InterfaceOnly=False&workflow=False on 2021-02-02 1:12:11 PM\nimport { ReportInstanceResult, ReportResult } from './ReportResult';\nimport { IReportInstanceResult } from '../Interface/IReportResult';\nimport { IGeocodeReportResult, IGeocodingResult } from '../Interface/IGeocodeReportResult';\n\n// #region Inner classes\n\nexport class GeocodingResult extends ReportInstanceResult implements IGeocodingResult {\n public address = '';\n public x = 0;\n public y = 0;\n public isUnknown = false;\n public streetNumber = '';\n public locality = '';\n public adminstrativeArea2 = '';\n public administrativeArea1 = '';\n public country = '';\n public postalCode = '';\n public confidenceScore = 0;\n public displayAddress = '';\n}\n\n// #endregion Inner classes\n\nexport class GeocodeReportResult extends ReportResult implements IGeocodeReportResult {\n // #region Properties\n\n public geocodingResults = new Array();\n\n // #endregion Properties\n\n // #region Constructor\n\n constructor() {\n super();\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public getResults(): Array {\n return this.geocodingResults;\n }\n\n protected parseSpecificResponse(body: { [k: string]: any }): void {\n const rowResult = super.getRows(body);\n this.geocodingResults = new Array();\n for (const row of rowResult) {\n const ins = new GeocodingResult();\n ins.address = this.getSafeValue('string', row[0]);\n ins.x = this.getSafeValue('number', row[1]);\n ins.y = this.getSafeValue('number', row[2]);\n ins.isUnknown = this.getSafeValue('boolean', row[3]);\n ins.streetNumber = this.getSafeValue('string', row[4]);\n ins.locality = this.getSafeValue('string', row[5]);\n ins.adminstrativeArea2 = this.getSafeValue('string', row[6]);\n ins.administrativeArea1 = this.getSafeValue('string', row[7]);\n ins.country = this.getSafeValue('string', row[8]);\n ins.postalCode = this.getSafeValue('string', row[9]);\n ins.confidenceScore = this.getSafeValue('number', row[10]);\n ins.displayAddress = this.getSafeValue('string', row[11]);\n this.geocodingResults.push(ins);\n }\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/GeocodeReport?codegen=ts&InterfaceOnly=False&workflow=False on 2021-02-04 12:43:00 PM\nimport { BaseReport } from './BaseReport';\nimport { ISecurityCenterClient } from '../Interface/ISecurityCenterClient';\nimport * as Helpers from '../../Helpers/Helpers';\nimport { IGeocodeReport } from '../Interface/IGeocodeReport';\nimport { IGeocodeReportResult } from '../Interface/IGeocodeReportResult';\nimport { GeocodeReportResult } from './GeocodeReportResult';\nimport { LatLngRectangle, Coordinate } from '../Model/MapEntity';\n\nexport class GeocodeReport extends BaseReport implements IGeocodeReport {\n // #region REST Properties\n\n public addresses = new Set();\n public boundingBox: LatLngRectangle | undefined;\n public coordinates = new Set();\n\n // #endregion REST Properties\n\n // #region Constructor\n\n constructor() {\n super('v2/reports/Geocode');\n this._supportStreamedResponse = false;\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public queryAsync(client: ISecurityCenterClient, cancelToken?: Helpers.CancellationToken): Promise {\n return client.queryAsync(GeocodeReportResult, this, cancelToken);\n }\n\n public buildQuery(): string {\n let query = super.buildQuery();\n query = this._queryHelper.buildFieldObjectList(query, 'Coordinates', this.coordinates);\n query = this._queryHelper.buildElemList(query, 'Addresses', this.addresses);\n query = this._queryHelper.buildElem(query, 'BoundingBox', this.boundingBox);\n return query;\n }\n\n // #endregion Methods\n\n}\n\n","// Autogenerated: v2/help/Classes/ReportBase?codegen=ts&InterfaceOnly=False&workflow=False on 2022-12-21 2:23:59 PM\nimport { QueryHelper } from '../../Helpers/QueryHelper';\nimport * as Helpers from '../../Helpers/Helpers';\nimport { IBaseReport } from '../Interface/IBaseReport';\nimport { IReportResult } from '../Interface/IReportResult';\nimport { GuidSet } from 'safeguid';\n\nexport class BaseReport implements IBaseReport {\n // #region Fields\n\n protected _queryHelper = new QueryHelper();\n private _baseQuery = '';\n private _enableStreamedResponse = false;\n protected _supportStreamedResponse = false;\n protected _streamedResultDispatcher = new Helpers.EventDispatcher();\n\n // #endregion\n\n // #region REST Properties\n\n public cultureName: string | undefined;\n public entityLookup: boolean | undefined;\n public excludedExpansionEntities = new GuidSet();\n public includedExpansionEntities = new GuidSet();\n public maxResultsCount: number | undefined;\n public sortOrder: string | undefined; // ApiSortingOption\n public sourceTimeZoneId: string | undefined;\n public timeEnd: Date | undefined;\n public timeout: number | undefined;\n public timeStart: Date | undefined;\n\n // #endregion REST Properties\n\n // #region Properties\n\n public get supportStreamedResponse(): boolean {\n return this._supportStreamedResponse;\n }\n\n public get enableStreamedResponse(): boolean {\n return this._enableStreamedResponse;\n }\n public set enableStreamedResponse(value: boolean) {\n if ( (this.supportStreamedResponse === false) && (value === true) ) {\n throw new Error('Not supported streamed response');\n }\n this._enableStreamedResponse = value;\n }\n\n // #endregion Properties\n\n // #region Constructor\n\n constructor(baseQuery: string) {\n this._baseQuery = baseQuery;\n }\n\n // #endregion Constructor\n\n // #region Methods\n\n public fireSubResult(result: IReportResult) {\n this._streamedResultDispatcher.dispatch(result);\n }\n\n public onStreamedResultReceived(handler: Helpers.Handler) {\n return this._streamedResultDispatcher.subscribe(handler);\n }\n\n public buildQuery(): string {\n let query = this._baseQuery + '?';\n query = this._queryHelper.buildElem(query, 'CultureName', this.cultureName);\n query = this._queryHelper.buildElem(query, 'MaxResultsCount', this.maxResultsCount);\n query = this._queryHelper.buildElem(query, 'TimeStart', this.timeStart);\n query = this._queryHelper.buildElem(query, 'TimeEnd', this.timeEnd);\n query = this._queryHelper.buildElem(query, 'EntityLookup', this.entityLookup);\n query = this._queryHelper.buildElem(query, 'SortOrder', this.sortOrder);\n query = this._queryHelper.buildElemList(query, 'ExcludedExpansionEntities', this.excludedExpansionEntities);\n query = this._queryHelper.buildElemList(query, 'IncludedExpansionEntities', this.includedExpansionEntities);\n query = this._queryHelper.buildElem(query, 'Timeout', this.timeout);\n query = this._queryHelper.buildElem(query, 'SourceTimeZoneId', this.sourceTimeZoneId);\n return query;\n }\n\n // #endregion Methods\n\n}\n\n","
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n
    \n
    \n \n \n \n {{ 'STE_LABEL_NOUN_EMAIL' | translate }} {{ email }}\n \n \n {{ 'STE_LABEL_LASTPOSITION' | translate }} {{ lastPosition }}\n \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { IMobileApplicationEntity } from 'RestClient/Client/Interface/IMobileApplicationEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { MobileApplicationEntity } from 'RestClient/Client/Model/Application/MobileApplicationEntity';\nimport { Coordinate } from 'RestClient/Client/Model/MapEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { GeocodeReport } from 'RestClient/Client/Reports/GeocodeReport';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { MapContentTypes } from '@modules/maps/enumerations/maps-content-types';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n@InternalContentPluginDescriptor({\n type: MobileUserWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: MobileUserWidgetComponent.pluginId, priority: 1 },\n isContentSupported: (content: Content) => !!content?.type.equals(MapContentTypes.MobileUser),\n})\n@Component({\n selector: 'app-mobile-user-widget',\n templateUrl: './mobile-user-widget.component.html',\n styleUrls: ['./mobile-user-widget.component.scss'],\n})\nexport class MobileUserWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n //#region Constants\n\n public static pluginId = SafeGuid.parse('8B9F319F-0E7C-4932-8F6C-835DFBC6D03F');\n\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly TextFlavor = TextFlavor;\n\n //#endregion\n\n //#region Fields\n\n public dataContext?: ContentService;\n public content?: Content;\n public isLoading = true;\n\n // displayed fields\n public thumbnailPicture: string | undefined = undefined;\n public username = '';\n public email = '';\n public lastPosition = '';\n\n private scClient!: SecurityCenterClient;\n private user: IUserEntity | null = null;\n private mobileUser: MobileApplicationEntity | null = null;\n\n protected get monitoredFields(): string[] {\n return [];\n }\n\n //#endregion\n\n //#region Constructor\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService, private sanitizer: DomSanitizer) {\n super(trackingService);\n this.scClient = securityCenterClientService?.scClient;\n }\n\n //#endregion\n\n //#region Methods\n\n async ngOnInit() {\n if (this.content?.source) {\n if (SafeGuid.isGuid(this.content.source)) {\n const source = SafeGuid.parse(this.content.source);\n if (!source.isEmpty()) {\n await this.getUserAsync(source);\n }\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n private async getUserAsync(mobileApplicationId: IGuid) {\n try {\n if (this.scClient) {\n this.mobileUser = (await this.scClient.getEntityAsync(\n MobileApplicationEntity,\n mobileApplicationId,\n null,\n null,\n '*'\n )) as MobileApplicationEntity;\n\n if (this.mobileUser) {\n const userId = this.mobileUser.loggedUser.isEmpty() ? this.mobileUser.lastLoggedUser : this.mobileUser.loggedUser;\n this.user = await this.scClient.getEntityAsync(UserEntity, userId);\n if (this.user) {\n // resolve the username to display\n this.username = this.user.name;\n if (this.user.firstName && this.user.lastName) {\n this.username = `${this.user.firstName} ${this.user.lastName}`;\n }\n\n this.email = this.user.emailAddress;\n this.fetchAddress();\n this.fetchThumbnail();\n }\n }\n }\n } finally {\n this.isLoading = false;\n }\n }\n\n private fetchAddress() {\n if (this.mobileUser) {\n // go fetch the address\n this.retrieveAddressAsync(this.mobileUser.latitude, this.mobileUser.longitude)\n .then((x) => (this.lastPosition = x))\n .fireAndForget();\n }\n }\n\n private fetchThumbnail() {\n if (this.user) {\n const pictureId = this.user.thumbnailId;\n if (pictureId && !pictureId.isEmpty()) {\n this.user\n .getFilesCacheAsync(pictureId)\n .then((fileCache) => {\n if (fileCache !== null) {\n this.thumbnailPicture = 'data: image/png;base64,' + fileCache.data;\n }\n })\n .fireAndForget();\n }\n }\n }\n\n private async retrieveAddressAsync(lat: number, lng: number): Promise {\n if (lat !== 0 && lng !== 0) {\n const report = new GeocodeReport();\n const coor = new Coordinate();\n coor.latitude = lat;\n coor.longitude = lng;\n coor.altitude = 0;\n report.coordinates.add(coor);\n\n const result = await report.queryAsync(this.scClient);\n if (result != null && result.geocodingResults.length > 0) {\n const address = result.geocodingResults[0].address;\n if (address) {\n return address;\n }\n }\n return `${lat}, ${lng}`;\n }\n return '';\n }\n\n //#endregion\n}\n","
    \n 0; else noData\">\n \n \n \n \n \n {{ item.text }}\n \n \n \n \n \n \n \n \n {{ child.text }}\n \n \n \n \n \n \n \n \n \n \n
    \n\n\n \n\n\n\n {{ 'STE_LABEL_NORESULTS' | translate }}\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SelectionType } from '@genetec/gelato';\nimport { TextFlavor } from '@genetec/gelato-angular';\nimport { TreeItem } from '@modules/shared/interfaces/tree-item/tree-item';\n/**\n * This component is responsible to display tree items with children and to relay selection changes\n * back to the parent. This component is necessary because the treeDataSourceDirective is currently not working with\n * SelectionType.Multiple trees. And specifically in the EventsOptions, we need to sync selection in the filteredTree back into the\n * regular display tree.\n */\n@Component({\n selector: 'app-events-option-tree',\n templateUrl: './events-option-tree.component.html',\n})\nexport class EventsOptionTreeComponent {\n @Input() eventsSource: TreeItem[] | null = null;\n @Input() keepParentExpanded?: boolean = false;\n @Output() selectionChanged = new EventEmitter();\n\n public readonly SelectionType = SelectionType;\n public readonly TextFlavor = TextFlavor;\n\n public onSelectedItemsChange(selectedItem: TreeItem, event: CustomEvent): void {\n selectedItem.isChecked = event.detail;\n this.selectionChanged.emit(this.eventsSource ?? []);\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { IEventDefinition } from '@modules/shared/api/api';\nimport { TreeItem } from '@modules/shared/interfaces/tree-item/tree-item';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { naturalSort } from '@modules/shared/utilities/natural-sort';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { EventTypeData } from '@modules/shared/services/events/event-type-data';\nimport { EventsSettingsService } from '@modules/shared/services/events/events-settings.service';\n\n/**\n * @description\n * This service is responsible for tracking two set of data at the same time:\n * 1. Events source from the regular tree view\n * 2. Events source from the filtered tree view.\n *\n * We need two separate entities because otherwise the search functionnality would overwrite the whole state whenever a new\n * search criterion were provided.\n *\n * This service is provided in the EventsOptionComponent.\n * @requires initService() to have been called prior to usage\n * @limitations this service isn't tested for recursive data. i.e: Children containing treeItem that also contains children.\n */\n@UntilDestroy()\n@Injectable()\nexport class EventsOptionTreeService {\n // Synchronization observable\n\n // regular view treeItems observable\n private eventsSubject = new BehaviorSubject([]);\n public events$ = this.eventsSubject.asObservable();\n\n // filtered view treeItems observable\n public filteredEventsSubject = new BehaviorSubject([]);\n public filteredEvents$ = this.filteredEventsSubject.asObservable();\n\n constructor(private translateService: TranslateService, private eventsSettingsService: EventsSettingsService) {}\n\n /**\n * This method has to be called before anything else can be done with this service.\n *\n * @param eventTypes eventTypes retrieved from storage\n * @param eventDefinitions eventDefinitions returned from the backend\n */\n public initService(eventTypes: EventTypeData[], eventDefinitions: IEventDefinition[]): void {\n if (eventDefinitions.length === 0) {\n throw new Error('Please provide non empty arrays when initializing the EventsOptionTreeService');\n }\n const events = this.getEventsFromDefinitions(eventTypes, eventDefinitions);\n this.eventsSubject.next(events);\n }\n\n /**\n * Save a flattened array containing all the checked elements.\n * Push selected items to the pending setting\n *\n * @param selectedEvents array containing all the tree elements.\n */\n public saveListeningEventSelection(selectedEvents: TreeItem[]): void {\n // make selected events a flat array\n const flattened: TreeItem[] = this.flattenAllChildren(selectedEvents).filter((val: TreeItem) => {\n return val.isChecked === true;\n });\n\n const ids = flattened.map((item) => this.idToEventType(item.id ?? ''));\n this.eventsSettingsService.setListeningEventsSettings(ids);\n }\n\n /**\n * EventTypes and EventDefinitions both have to be set prior.\n * Populates the tree by category, retrieves previous state from localstorage, and applies selected/unselected state\n * to each leaf in the tree.\n *\n * @returns the array containing the tree hierarchy and its state.\n */\n private getEventsFromDefinitions(eventTypes: EventTypeData[], eventDefinitions: IEventDefinition[]): TreeItem[] {\n if (eventDefinitions) {\n const treeItems: TreeItem[] = [];\n const treeItemsSelected: TreeItem[] = [];\n eventDefinitions.forEach((eventDefinition) => {\n if (!eventDefinition.listenable) {\n return;\n }\n\n if (eventDefinition.category) {\n let category = treeItems.find((treeItem) => treeItem.id === eventDefinition.category);\n if (!category) {\n category = { id: eventDefinition.category, text: this.translateService.instant(eventDefinition.category) as string, children: [] };\n }\n\n if (category && (eventDefinition.name !== '' || eventDefinition.rawName !== '')) {\n const eventTypeId = this.eventTypeToId(eventDefinition.eventType, eventDefinition.eventSubType);\n const icon = eventDefinition.icon as MeltedIcon;\n const selected = eventTypes\n ? eventTypes.some((event) => event.type === eventDefinition.eventType && event.subType === eventDefinition.eventSubType)\n : eventDefinition.listenByDefault;\n const name = eventDefinition.name ? (this.translateService.instant(eventDefinition.name) as string) : eventDefinition.rawName;\n const item = { id: eventTypeId, text: name, icon, isChecked: selected };\n // Insert item as child in current category.\n category.children?.push(item);\n if (selected) {\n treeItemsSelected.push(item);\n }\n // insert category in tree items list, only if not already present.\n if (!treeItems.find((treeItem) => treeItem.id === eventDefinition.category)) {\n treeItems.push(category);\n }\n }\n }\n });\n\n const sortedTreeItems = this.sortTreeItems(treeItems);\n return sortedTreeItems ?? [];\n }\n return [];\n }\n\n /**\n * Use to synchronize two treeItem arrays. This will only synchronize the \"isChecked\" property.\n *\n * @param eventsToMerge array to merge with our inner state.\n */\n public mergeEvents(eventsToMerge: TreeItem[]): void {\n const flatEventsArray = this.flattenAllChildren(eventsToMerge);\n\n this.events$.pipe(take(1), untilDestroyed(this)).subscribe((eventsCategory: TreeItem[]) => {\n flatEventsArray.forEach((event: TreeItem) => {\n eventsCategory?.forEach((category: TreeItem) => {\n const found = category.children?.find((child) => child.id === event.id);\n if (found) {\n // alter original array with new value.\n found.isChecked = event.isChecked;\n }\n });\n });\n this.eventsSubject.next(eventsCategory);\n // Make sure to synchronise new selection.\n this.saveListeningEventSelection(eventsCategory);\n });\n }\n\n /**\n * flatten one level of children in a TreeItem array.\n *\n * @param array flattened array.\n */\n public flattenAllChildren(array: TreeItem[]): TreeItem[] {\n return array.reduce((a: TreeItem[], b) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return a.concat(b.children as TreeItem[]);\n }, []);\n }\n\n /**\n * Applies search criterions and build a new TreeItem[] that will be used for the filtered tree view.\n */\n public doSearch(criteria: string): void {\n this.events$.pipe(take(1), untilDestroyed(this)).subscribe((events: TreeItem[]) => {\n // make a \"deep\" copy to avoid side effects.\n const eventsCopy: TreeItem[] = JSON.parse(JSON.stringify(events)) as TreeItem[];\n\n // do the actual filtering\n const filteredEvents = this.filterEvents(criteria, eventsCopy);\n\n // push new filtered results.\n this.filteredEventsSubject.next(filteredEvents);\n });\n }\n\n /**\n * Transforms an eventType object to an id string.\n *\n * @param type object type you want to convert\n * @param subType object subtype you want to convert\n * @returns a string in the type?SubType format.\n */\n public eventTypeToId(type: string, subType: number): string {\n return `${type}?SubType=${subType}`;\n }\n\n /**\n * Converts the type?SubType format back to its object form.\n *\n * @param id type?SubType string format\n * @returns the object in its EventType form.\n */\n public idToEventType(id: string): EventTypeData {\n const splittedString = id.split('?SubType=');\n return new EventTypeData(splittedString[0], Number(splittedString[1]));\n }\n\n /**\n * Uses natural sort over an array of TreeItem\n *\n * @param items items want to sort\n * @returns the sorted array.\n */\n private sortTreeItems(items?: TreeItem[]): TreeItem[] | undefined {\n if (items) {\n for (const item of items) {\n if (!item.isChecked) {\n item.isChecked = false;\n }\n item.children = this.sortTreeItems(item.children);\n }\n\n return items.sort((item1, item2) => naturalSort(item1.text ?? '', item2.text ?? ''));\n }\n return undefined;\n }\n\n /**\n * Uses the criteria string and filters out anything that doesn't match the criteria.\n *\n * @param criteria string to search for in the TreeItem array.\n * @param allEvents Array representing the Tree view\n * @returns an array that contains all the elements that corresponds to the criteria\n */\n private filterEvents(criteria: string, allEvents: TreeItem[]): TreeItem[] {\n const parentsToRemove: TreeItem[] = [];\n if (criteria) {\n for (const event of allEvents) {\n const toRemove: TreeItem[] = [];\n event.children?.forEach((child: TreeItem) => {\n if (child?.text && !child.text.toLowerCase().includes(criteria.toLowerCase())) {\n toRemove.push(child);\n }\n });\n toRemove.forEach((itemRemove) => event.children?.remove(itemRemove));\n if (event.children?.length === 0) {\n parentsToRemove.push(event);\n } else {\n event.isExpanded = true;\n }\n }\n parentsToRemove.forEach((parent) => allEvents?.remove(parent));\n }\n return allEvents;\n }\n}\n","\n \n \n\n
    \n \n \n \n \n\n \n \n \n \n
    \n
    \n\n\n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { SelectionType } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { EventsService } from '@modules/shared/services/events/events.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\nimport { Observable } from 'rxjs';\nimport { SafeGuid } from 'safeguid';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { EventsSettingsService } from '@modules/shared/services/events/events-settings.service';\nimport { EventsOptionTreeService } from './services/events-option-tree.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Exposes the various Events to listen to in the App. Changes to the events selection via the tree\n * will save the new values in the local storage.\n * On load, state is also retrieved from local storage using the 'listeningEvents'\n * key.\n */\n@UntilDestroy()\n@Component({\n selector: 'app-events-option',\n templateUrl: './events-option.component.html',\n styleUrls: ['./events-option.component.scss'],\n providers: [EventsOptionTreeService],\n})\n@InternalPluginDescriptor({\n type: EventsOptionComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: EventsOptionComponent.pluginId,\n subSection: OptionSubSections.Events,\n },\n isSupported: () => true,\n})\nexport class EventsOptionComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('96E8DF44-D47E-4AA5-BA34-BA5C872495B3');\n\n public readonly SelectionTypes = SelectionType;\n\n public searchCriteria = '';\n public eventsSource: TreeItem[] = [];\n public filteredEvents$: Observable;\n public events$: Observable;\n public isContentVisible = false;\n\n constructor(\n trackingService: TrackingService,\n private eventsService: EventsService,\n private eventsTreeService: EventsOptionTreeService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService,\n private eventsSettingsService: EventsSettingsService\n ) {\n super(trackingService);\n\n this.filteredEvents$ = this.eventsTreeService.filteredEvents$;\n this.events$ = this.eventsTreeService.events$;\n\n // look out for changes in events coming from the mergeEvents methods.\n this.events$.pipe(untilDestroyed(this)).subscribe((events: TreeItem[]) => {\n if (events.length > 0) {\n this.eventsTreeService.saveListeningEventSelection(events);\n }\n });\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.Events);\n if (contentVisibility) {\n this.isContentVisible = true;\n // retrieve info from local storage.\n const availableEventTypes = this.eventsSettingsService.getListeningEventsFromLocalStorage();\n\n // retrieve definitions from the backend\n const eventDefinitions = (await this.eventsService.fetchRegisteredEventTypesAsync()) ?? [];\n\n // Get TreeItems from eventTypes and Definitions.\n this.eventsTreeService.initService(availableEventTypes ?? [], eventDefinitions);\n }\n }\n\n /**\n * triggers a search in the tree after the debounced delay.\n *\n * @param criteria string to look for in the tree\n */\n public onSearchCriteriaChange(criteria: string): void {\n this.searchCriteria = criteria;\n this.eventsTreeService.doSearch(criteria);\n }\n\n /**\n * Syncs changes made in FilteredEvents view back into Regular Events Tree.\n *\n * @param filteredEvents changes to sync\n */\n public syncWithRegularEvents(filteredEvents: TreeItem[]): void {\n this.eventsTreeService.mergeEvents(filteredEvents);\n }\n\n /**\n * Allows to prevent the modal to be closed when someone presses \"enter\" in the search input.\n *\n * @param event \"enter\" key pressed.\n */\n public onEnterKeyPress(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Save a flattened array containing all the checked elements.\n *\n * @param selectedEvents array containing all the tree elements.\n */\n public saveSelectionToLocalStorage(selectedEvents: TreeItem[]): void {\n this.eventsTreeService.saveListeningEventSelection(selectedEvents);\n }\n}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { WINDOW } from '@src/app/utilities';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { UserSettingsService } from '../../shared/services/user-settings/user-settings.service';\nimport { USER_SETTINGS_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionTypes } from '../../shared/enumerations/option-types';\nimport { LoggerService } from '../../shared/services/logger/logger.service';\nimport { JoystickLocalConfigIds } from '../components/options/joystick-options/joystick-options.component';\nimport { Point } from '../../shared/interfaces/drawing';\nimport { JoystickLocalConfig, JoystickService } from './joystick.service';\n\ntype GamepadEventType = 'Button' | 'Analogic';\nexport interface GamepadEventData {\n type: GamepadEventType;\n data: any;\n}\n\nexport class ButtonGamepadEventData implements GamepadEventData {\n public type: GamepadEventType = 'Button';\n public data: { index: number; isButtonDown: boolean };\n\n constructor(index: number, isButtonDown: boolean) {\n this.data = {\n index,\n isButtonDown,\n };\n }\n}\n\nexport class AnalogicGamepadEventData implements GamepadEventData {\n public type: GamepadEventType = 'Analogic';\n public data: { velocity: Point | null } = { velocity: null };\n\n constructor(velocity?: Point) {\n if (velocity) {\n this.data = { velocity };\n }\n }\n}\n\n/**\n * @copyright Copyright (C) 2022 by Genetec Inc. All rights reserved. May be used only in accordance with a valid Source Code License Agreement.\n * @description It's a service for connected gamepads that listen event on a specific gamepad that is set in the user settings.\n */\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class GamepadEventListenerService {\n //#region getters\n\n public get onGamepadsConnectedChange$(): Observable {\n return this.gamepadsConnectedSubject.asObservable();\n }\n\n public get onNewGamepadEvents$(): Observable {\n return this.gamepadEventsSubject.asObservable();\n }\n\n public get gamepads(): Gamepad[] {\n return this.connectedGamepads;\n }\n\n //#endregion\n\n //#region Properties\n\n public isSupported = false;\n public deadZone;\n\n private readonly deadZoneDefaultValue = 0.05;\n private connectedGamepads: Gamepad[] = [];\n private currentGamepad: Gamepad | null = null;\n private oldGamepadSerialized = '';\n private buttonsStates: (boolean | undefined)[] = [];\n private pendingPanTilt = false;\n\n private gamepadEventsSubject: Subject = new Subject();\n private gamepadsConnectedSubject: ReplaySubject = new ReplaySubject(1);\n\n // timer id for polling\n private pollingTimer: number | null = null;\n private enableLog = false;\n\n //#endregion\n\n constructor(\n private zone: NgZone,\n private loggerService: LoggerService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: UserSettingsService,\n @Inject(WINDOW) private window: Window\n ) {\n // determine if the browser supports gamepad\n\n this.isSupported = 'GamepadEvent' in this.window;\n this.deadZone = this.deadZoneDefaultValue;\n\n this.userSettingsService.settings$.pipe(untilDestroyed(this)).subscribe(() => {\n this.loadSettings();\n });\n\n this.userSettingsService.onCancel$.pipe(untilDestroyed(this)).subscribe(() => {\n // To make sure that we are listening events on the good global user joystick.\n this.loadSettings();\n });\n\n if (this.isSupported) {\n this.log('Gamepad API is supported');\n this.loadInitialData();\n this.loadSettings();\n this.window.addEventListener('gamepadconnected', (event) => this.onGamepadConnected(event));\n this.window.addEventListener('gamepaddisconnected', (event) => this.onGamepadDisconnected(event));\n } else {\n this.log('Gamepad API is not supported on browser');\n }\n }\n\n //#region Methods\n\n public getGamepadState(id: string): Gamepad | null {\n const navigatorGamepads = this.getNavigatorGamepads();\n for (const navigatorGamepad of navigatorGamepads) {\n //Check if it's the active joystick from the peripherals user settings\n const gp = navigatorGamepad;\n if (gp?.connected === true && gp.id === id) {\n return gp;\n }\n }\n return null;\n }\n\n public setCurrentGamepadId(id: string | null): void {\n this.currentGamepad = (id && this.connectedGamepads.find((gamepad) => gamepad.id === id)) || null;\n this.updateGamepadEventMonitoringState();\n }\n\n private getNavigatorGamepads(): (Gamepad | null)[] {\n const nav = this.window.navigator as Navigator | { webkitGetGamepads: () => Gamepad[] };\n let navigatorGamepads: (Gamepad | null)[] = [];\n\n if ('getGamepads' in nav) {\n navigatorGamepads = nav.getGamepads();\n } else if ('webkitGetGamepads' in nav) {\n navigatorGamepads = nav.webkitGetGamepads();\n }\n return navigatorGamepads;\n }\n\n private startPollingTimer() {\n if (!this.pollingTimer) {\n this.buttonsStates = [];\n this.zone.runOutsideAngular(() => {\n this.pollingTimer = this.window.setInterval(() => this.scanGamepadEvent(), JoystickService.pollingTime);\n });\n }\n }\n\n private stopPollingTimer() {\n if (this.pollingTimer) {\n clearInterval(this.pollingTimer);\n this.pollingTimer = null;\n }\n }\n\n // Loading the settings related to peripherals (ActiveJoystickId & settings that are associated to that joystick)\n private loadSettings() {\n const activeGamepadId = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.ActiveJoystick);\n // We want to load the joystick local settings only if the activeGamepadId is defined\n if (activeGamepadId) {\n const serialized = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.JoysticksConfigsList);\n if (serialized) {\n const joystickLocalSettings = JSON.parse(serialized) as JoystickLocalConfig[];\n const deadZone = joystickLocalSettings.find((joystickConfig) => joystickConfig.joystickId === activeGamepadId)?.deadZone;\n\n if (deadZone) {\n this.deadZone = deadZone / 100;\n } else {\n //Deadzone default value\n this.deadZone = this.deadZoneDefaultValue;\n }\n }\n }\n\n this.updateGamepadEventMonitoringState(activeGamepadId);\n }\n\n private loadInitialData() {\n const navigatorGamepads = this.getNavigatorGamepads();\n let updateConnectedGamepads = false;\n\n for (const navigatorGamepad of navigatorGamepads) {\n //Check if it's the current joystick from the peripherals options settings\n const gp = navigatorGamepad;\n\n if (gp?.connected === true && !this.isGamepadConnected(gp.id)) {\n updateConnectedGamepads = true;\n this.connectedGamepads.push(gp);\n }\n }\n\n if (updateConnectedGamepads) {\n this.gamepadsConnectedSubject.next(this.connectedGamepads);\n }\n }\n\n private log(msg: string) {\n if (this.enableLog) {\n this.loggerService.traceInformation('JoystickService: ' + msg);\n }\n }\n\n private isGamepadConnected(id: string): boolean {\n return !!this.connectedGamepads.find((gamepad) => gamepad.id === id);\n }\n\n private updateGamepadEventMonitoringState(newActiveGamepadId?: string) {\n const activeGamepadId = newActiveGamepadId ?? this.currentGamepad?.id;\n if (activeGamepadId) {\n const gamepad = this.connectedGamepads.find((gp) => gp.id === activeGamepadId);\n if (this.currentGamepad !== gamepad) {\n this.currentGamepad = gamepad ?? null;\n }\n if (!this.pollingTimer && gamepad) {\n this.startPollingTimer();\n }\n } else {\n this.stopPollingTimer();\n this.currentGamepad = null;\n }\n }\n\n //#endregion\n\n //#region Events\n\n private onGamepadConnected(event: GamepadEvent) {\n this.log('Gamepad ' + event.gamepad.id + ' connected!');\n const gamepad: Gamepad = event.gamepad;\n\n if (!this.isGamepadConnected(gamepad.id)) {\n this.connectedGamepads.push(gamepad);\n this.gamepadsConnectedSubject.next(this.connectedGamepads);\n }\n\n this.updateGamepadEventMonitoringState();\n }\n\n private onGamepadDisconnected(event: GamepadEvent) {\n this.log('Gamepad ' + event.gamepad.id + ' disconnected!');\n // Remove the gamepad from the connetedGamepad list\n this.connectedGamepads.forEach((gamepad, index) => {\n if (gamepad.id === event.gamepad.id) {\n this.connectedGamepads.splice(index, 1);\n this.gamepadsConnectedSubject.next(this.connectedGamepads);\n return;\n }\n });\n\n this.updateGamepadEventMonitoringState();\n }\n\n private scanGamepadEvent() {\n const activeGamepadInputs = this.getActiveGamepadInputs();\n if (!activeGamepadInputs) {\n return;\n }\n\n const buttonEvents = this.getButtonsInputEvents(activeGamepadInputs.buttons);\n const analogicEvents = this.getAxesInputEvents(activeGamepadInputs.axes);\n\n const gamepadEvents = buttonEvents.concat(analogicEvents);\n if (gamepadEvents.length > 0) {\n this.gamepadEventsSubject.next(gamepadEvents);\n }\n }\n\n private getActiveGamepadInputs() {\n if (!this.currentGamepad) {\n this.stopPollingTimer();\n return null;\n }\n\n const gamepad = this.getNavigatorGamepads()[this.currentGamepad.index];\n\n // Identify if theres any event to detect\n const gamepadInputs = { buttons: gamepad?.buttons.map((btn) => btn.pressed) ?? [], axes: gamepad?.axes ?? [] };\n const serialized = JSON.stringify(gamepadInputs);\n\n if (serialized !== this.oldGamepadSerialized) {\n this.oldGamepadSerialized = serialized;\n return gamepadInputs;\n }\n return null;\n }\n\n private getButtonsInputEvents(buttons: boolean[]) {\n const gamepadButtonsEvents: GamepadEventData[] = [];\n\n for (let i = 0; i < buttons.length; i++) {\n const newValue = buttons[i];\n const oldValue = this.buttonsStates[i];\n\n if (newValue !== oldValue) {\n // update the buffered state\n this.buttonsStates[i] = newValue;\n if (oldValue !== undefined || newValue) {\n this.log(`${newValue ? 'Down' : 'Up'} command triggered for button #${i}`);\n gamepadButtonsEvents.push(new ButtonGamepadEventData(i, newValue));\n }\n }\n }\n return gamepadButtonsEvents;\n }\n\n private getAxesInputEvents(axes: readonly number[]) {\n const gamepadAxesEvents: GamepadEventData[] = [];\n const pan = axes[0];\n const tilt = axes[1];\n\n const velocity = { x: pan, y: tilt };\n\n if (Math.abs(velocity.x) > this.deadZone || Math.abs(velocity.y) > this.deadZone) {\n this.log(`Velocity x=${velocity.x}, y=${velocity.y}`);\n gamepadAxesEvents.push(new AnalogicGamepadEventData(velocity));\n this.pendingPanTilt = true;\n } else if (this.pendingPanTilt) {\n this.pendingPanTilt = false;\n gamepadAxesEvents.push(new AnalogicGamepadEventData());\n }\n return gamepadAxesEvents;\n }\n\n //#endregion\n}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Subject } from 'rxjs';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { UserSettingsService } from '../../shared/services/user-settings/user-settings.service';\nimport { CommandsService, COMMANDS_SERVICE, ExecuteCommandData, USER_SETTINGS_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionTypes } from '../../shared/enumerations/option-types';\nimport { SharedCommands } from '../../shared/enumerations/shared-commands';\nimport { Point } from '../../shared/interfaces/drawing';\nimport { LoggerService } from '../../shared/services/logger/logger.service';\nimport { ContextTypes } from '../../shared/interfaces/plugins/public/context-types';\nimport { JoystickLocalConfigIds } from '../components/options/joystick-options/joystick-options.component';\nimport { AnalogicGamepadEventData, ButtonGamepadEventData, GamepadEventData, GamepadEventListenerService } from './gamepad-event-listener.service';\n\nexport class JoystickCommandData {\n public readonly velocity: Point;\n\n constructor(velocity: Point) {\n this.velocity = velocity;\n }\n\n public static extract(executeCommandData: ExecuteCommandData): JoystickCommandData | undefined {\n if (!executeCommandData.commandContext) {\n return;\n }\n\n if (executeCommandData.commandContext.type.equals(ContextTypes.Specific) && executeCommandData.commandContext.data instanceof JoystickCommandData) {\n return executeCommandData.commandContext.data;\n }\n }\n}\n\nexport class JoystickButtonConfig {\n //#region Properties\n\n public id = 0;\n\n public downCommand = '';\n\n public downArgs = '';\n\n public upCommand = '';\n\n public upArgs = '';\n\n //#endregion\n\n //#region Constructor\n\n constructor(id: number, downCommand: string, downArgs: string, upCommand: string, upArgs: string) {\n this.id = id;\n this.downCommand = downCommand;\n this.downArgs = downArgs;\n this.upCommand = upCommand;\n this.upArgs = upArgs;\n }\n\n //#endregion\n}\n\nexport class JoystickLocalConfig {\n public joystickId = '';\n public deadZone = 0.05;\n\n constructor(joystickId: string, deadZone: number) {\n this.joystickId = joystickId;\n this.deadZone = deadZone;\n }\n}\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class JoystickService {\n //#region Constants\n\n public static maxButtons = 10;\n public static pollingTime = 100; // ms\n\n //#endregion\n\n //#region Fields\n\n // determine if the browser supports gamepad\n public isSupported = false;\n public deadZone = 0.05;\n\n private buttons: JoystickButtonConfig[] = [];\n\n // flag used to enable logs for more diagnostics\n private enableLog = false;\n\n private debugMode = false;\n\n private onDestroy: Subject = new Subject();\n //#endregion\n\n //#region Constructor\n\n constructor(\n private zone: NgZone,\n private loggerService: LoggerService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: UserSettingsService,\n @Inject(COMMANDS_SERVICE) public commandsService: CommandsService,\n private gamepadEventListenerService: GamepadEventListenerService\n ) {\n this.userSettingsService.settings$.pipe(untilDestroyed(this)).subscribe(() => {\n this.loadSettings();\n });\n\n this.gamepadEventListenerService.onNewGamepadEvents$.pipe(untilDestroyed(this)).subscribe((events: GamepadEventData[]) => {\n this.gamepadEventHandler(events);\n });\n\n this.loadSettings();\n\n // For debugging purpose\n if (this.debugMode) {\n window.addEventListener('keydown', (event) => this.onWindowKeyDown(event), false);\n window.addEventListener('keyup', (event) => this.onWindowKeyUp(event), false);\n }\n\n // ensure to register the PTZ commands\n this.commandsService.registerCommandShortcut(SharedCommands.PtzStartPanTilt, '');\n this.commandsService.registerCommandShortcut(SharedCommands.PtzStopPanTilt, '');\n }\n\n //#endregion\n\n //#region Methods\n\n private executeCommand(commandId: IGuid, args?: any, event?: Event) {\n // process commands in Angular's zone\n this.zone.runGuarded(() => {\n this.commandsService.executeCommand(commandId, { type: ContextTypes.Specific, data: args as unknown }, event);\n });\n }\n\n private loadSettings() {\n const buttons = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.Buttons);\n\n if (buttons !== undefined) {\n this.buttons = JSON.parse(buttons) as JoystickButtonConfig[];\n }\n }\n\n private gamepadEventHandler(events: GamepadEventData[]) {\n for (const event of events) {\n if (event instanceof ButtonGamepadEventData) {\n const config = this.buttons[event.data.index];\n if (config) {\n if (event.data.isButtonDown && config.downCommand) {\n this.executeCommand(SafeGuid.parse(config.downCommand), config.downArgs);\n this.log(`Executing down command : ${config.downCommand} with ${config.downArgs ?? 'no'} args`);\n } else if (!event.data.isButtonDown && config.upCommand) {\n this.executeCommand(SafeGuid.parse(config.upCommand), config.upArgs);\n this.log(`Executing up command : ${config.upCommand} with ${config.upArgs ?? 'no'} args`);\n }\n }\n } else if (event instanceof AnalogicGamepadEventData) {\n if (this.commandsService) {\n if (event.data.velocity) {\n const joystickEvent = new JoystickCommandData(event.data.velocity);\n this.executeCommand(SharedCommands.PtzStartPanTilt, joystickEvent);\n } else {\n this.executeCommand(SharedCommands.PtzStopPanTilt);\n }\n }\n } else {\n this.log(`${event.type} has not been implemented in the joystick service gamepadEventHandler method.`);\n }\n }\n }\n\n private log(msg: string) {\n if (this.enableLog) {\n this.loggerService.traceInformation('JoystickService: ' + msg);\n }\n }\n\n //#endregion\n\n //#region Events\n\n private onWindowKeyDown(event: KeyboardEvent) {\n // exit now if the service is not enabled\n if (!this.debugMode) {\n return;\n }\n\n let x = 0;\n let y = 0;\n\n switch (event.key) {\n case 'ArrowLeft':\n x = -1;\n break;\n case 'ArrowRight':\n x = 1;\n break;\n case 'ArrowUp':\n y = 1;\n break;\n case 'ArrowBottom':\n y = -1;\n break;\n }\n\n if (this.commandsService && (x !== 0 || y !== 0)) {\n const velocity = { x, y };\n\n // forward the command for routing to the selected tile\n const joystickEvent = new JoystickCommandData(velocity);\n this.executeCommand(SharedCommands.PtzStartPanTilt, joystickEvent);\n }\n\n // check for buttons press\n const buttonId = parseInt(event.key);\n if (!Number.isNaN(buttonId)) {\n const buttonConfig = this.buttons.find((item) => item.id === buttonId);\n if (buttonConfig) {\n const commandId = SafeGuid.parse(buttonConfig.downCommand);\n if (commandId) {\n this.executeCommand(commandId, buttonConfig.downArgs, event);\n }\n }\n }\n }\n\n private onWindowKeyUp(event: KeyboardEvent) {\n // exit now if the service is not enabled\n if (!this.debugMode) {\n return;\n }\n\n let stop = false;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowBottom':\n stop = true;\n break;\n }\n\n if (stop && this.commandsService) {\n // forward the command for routing to the selected tile\n this.executeCommand(SharedCommands.PtzStopPanTilt);\n }\n\n // check for buttons release\n const buttonId = Number.parseInt(event.key);\n if (!Number.isNaN(buttonId)) {\n const buttonConfig = this.buttons.find((item) => item.id === buttonId);\n if (buttonConfig) {\n const commandId = SafeGuid.parse(buttonConfig.upCommand);\n if (commandId) {\n this.executeCommand(commandId, buttonConfig.upArgs, event);\n }\n }\n }\n }\n\n //#endregion\n}\n","
    \n {{ 'STE_LABEL_OPTIONS_ACTIVE_DEVICE' | translate }}\n \n \n {{ joysticks[0].id }}\n \n {{ 'STE_MESSAGE_INFO_OPTIONS_ACTIVE_DEVICE' | translate }}\n \n\n \n \n {{ 'STE_LABEL_NONE' | translate }}\n \n \n {{ joystick.id }}\n \n {{ 'STE_MESSAGE_INFO_OPTIONS_ACTIVE_DEVICE' | translate }}\n \n\n = 3\">\n \n \n \n
    \n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { GenMeltedItem } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-joystick-selection',\n templateUrl: './joystick-selection.component.html',\n styleUrls: ['./joystick-selection.component.scss'],\n})\nexport class JoystickSelectionComponent implements OnInit, OnChanges {\n @Input() joysticks?: Gamepad[];\n @Input() activeJoystickId?: string;\n @Output() activeJoystickChanged = new EventEmitter();\n\n // TODO : Adapt with ngFor when GenCombobox is WebComponent\n public joysticksItems: GenMeltedItem[] = [];\n\n private noneItemState: GenMeltedItem = { id: '', text: this.translateService.instant('STE_LABEL_NONE') as string };\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.refreshComboboxSelection();\n }\n ngOnChanges(): void {\n this.refreshComboboxSelection();\n }\n\n public refreshComboboxSelection(): void {\n if (!this.joysticks) return;\n\n this.joysticksItems = [this.noneItemState, ...this.joysticks.map((gp) => ({ id: gp.id, text: gp.id }))];\n }\n\n public onActiveJoystickChanged(id?: string): void {\n this.activeJoystickChanged.emit(id ?? null);\n }\n\n public onCheckboxChanged(event: CustomEvent): void {\n this.onActiveJoystickChanged((event.detail && this.joysticks?.[0].id) || undefined);\n }\n\n public onComboboxChanged(selected: GenMeltedItem): void {\n this.onActiveJoystickChanged(selected.id === '' ? undefined : selected.id);\n }\n}\n","\n \n
    \n {{ 'STE_MESSAGE_INFO_NO_DEVICE_DETECTED' | translate }}\n
    \n
    \n
    \n \n
    \n\n
    \n \n {{ 'STE_LABEL_DEADZONE' | translate }}\n \n %\n \n
    \n\n
    \n \n

    {{ cellValue?.index }}

    \n
    \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n
    \n
    \n {{ 'STE_LABEL_NUMERIC_COMMANDS' | translate }}\n
    \n \n \n \n {{ 'STE_LABEL_INFO_POPUP' | translate }}\n \n \n
    \n\n \n
    \n
    \n\n \n \n {{ 'STE_MESSAGE_INFO_JOYSTICK_BTN_PRESSED' | translate }}\n
    \n
    \n
    \n
    \n\n\n \n\n\n\n
    \n \n
    \n
    \n","import { AfterViewInit, ChangeDetectorRef, Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { GenMeltedItem, GenPopup, GenTableColumn, TableCellType, TableColumnPin } from '@genetec/gelato-angular';\nimport { JoystickButtonConfig, JoystickLocalConfig, JoystickService } from '@modules/general/services/joystick.service';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { COMMANDS_SERVICE, USER_SETTINGS_SERVICE, SettingsService, CommandsService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ButtonGamepadEventData, GamepadEventData, GamepadEventListenerService } from '@modules/general/services/gamepad-event-listener.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nenum JoystickOptionsColumn {\n DownCommand = 'downCommand',\n DownArgs = 'downArgs',\n UpCommand = 'upCommand',\n UpArgs = 'upArgs',\n}\n\nexport enum JoystickLocalConfigIds {\n ActiveJoystick = 'ActiveJoystick',\n JoysticksConfigsList = 'JoysticksConfigsList',\n Buttons = 'Buttons',\n}\n\ninterface JoystickButtonRow {\n id: { index: number; uiGuid: SafeGuid };\n [JoystickOptionsColumn.DownCommand]?: GenMeltedItem | null;\n [JoystickOptionsColumn.DownArgs]: string;\n [JoystickOptionsColumn.UpCommand]?: GenMeltedItem | null;\n [JoystickOptionsColumn.UpArgs]: string;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-joystick-options',\n templateUrl: './joystick-options.component.html',\n styleUrls: ['./joystick-options.component.scss'],\n})\n@InternalPluginDescriptor({\n type: JoystickOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: JoystickOptionsComponent.pluginId,\n subSection: OptionSubSections.Peripherals,\n },\n isSupported: () => true,\n})\nexport class JoystickOptionsComponent extends TrackedComponent implements OnInit, AfterViewInit {\n //#region Constants\n\n public static pluginId = SafeGuid.parse('623BC8FC-EA36-464A-A2E1-5DEB81BD6F6C');\n\n //#endregion\n\n //#region Fields\n @ViewChild('numericCommandPopup') private numericCommandPopup?: GenPopup;\n @ViewChild('actionsDownComboTemplate') private actionsDownComboTemplate?: TemplateRef;\n @ViewChild('actionsUpComboTemplate') private actionsUpComboTemplate?: TemplateRef;\n @ViewChild('actionsDownArgsTemplate') private actionsDownArgsTemplate?: TemplateRef;\n @ViewChild('actionsUpArgsTemplate') private actionsUpArgsTemplate?: TemplateRef;\n @ViewChild('coloredLabelOnEventCellRenderer') private coloredLabelOnEventCellRenderer?: TemplateRef;\n\n public enableJoystick = false;\n public deadZone: number;\n public joysticksConfig: JoystickLocalConfig[] = [];\n\n public availableJoysticks: Gamepad[] = [];\n\n public currentJoystick: Gamepad | null = null;\n\n public buttonColumns: GenTableColumn[] = [];\n\n public buttonRows: JoystickButtonRow[] = [];\n\n public buttonActions: GenMeltedItem[] = [];\n\n public hasGamepadConneted = false;\n\n public isInitialized = false;\n public isContentVisible = false;\n\n private supportedCommands: IGuid[] = [\n SharedCommands.AddBookmark,\n SharedCommands.ClearTile,\n SharedCommands.ClearTiles,\n SharedCommands.ExpandTile,\n SharedCommands.ExportVideo,\n SharedCommands.ToggleListen,\n SharedCommands.FastForward,\n SharedCommands.MaximizeTileFullscreen,\n SharedCommands.PauseVideo,\n SharedCommands.PlayVideo,\n SharedCommands.Rewind,\n SharedCommands.SaveSnapshot,\n SharedCommands.SelectPreviousTile,\n SharedCommands.SelectNextTile,\n SharedCommands.SlowMotion,\n SharedCommands.StartStopRecording,\n ];\n\n private readonly defaultDeadzoneValue = 5;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService,\n private translateService: TranslateService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n private gamepadService: GamepadEventListenerService\n ) {\n super(trackingService);\n\n this.deadZone = this.defaultDeadzoneValue;\n\n this.gamepadService.onGamepadsConnectedChange$.pipe(untilDestroyed(this)).subscribe((gamepads) => {\n this.onConnectedGamepadsChanged(gamepads);\n });\n\n this.gamepadService.onNewGamepadEvents$.pipe(untilDestroyed(this)).subscribe((events) => {\n this.onNewGamepadEvents(events);\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n ngOnInit() {\n super.ngOnInit();\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.Peripherals);\n if (contentVisibility) {\n this.isContentVisible = true;\n this.loadJoystickSettingsFromStorage();\n }\n this.isInitialized = true;\n }\n\n // The table uses a TemplateRef for a custom renderer, which is only available after the HTML is rendered\n async ngAfterViewInit(): Promise {\n if (!this.isContentVisible) {\n return;\n }\n\n this.buttonColumns = [\n {\n columnName: 'id',\n label: '',\n cellType: TableCellType.Custom,\n cellTemplate: this.coloredLabelOnEventCellRenderer,\n pin: TableColumnPin.Left,\n maxWidth: 50,\n suppressSorting: true,\n suppressMovable: true,\n },\n {\n columnName: JoystickOptionsColumn.DownCommand,\n label: this.translateService.instant('STE_LABEL_DOWNCOMMAND') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.actionsDownComboTemplate,\n pin: TableColumnPin.Left,\n suppressSorting: true,\n suppressMovable: true,\n minWidth: 110,\n },\n {\n columnName: JoystickOptionsColumn.DownArgs,\n label: this.translateService.instant('STE_LABEL_ARGUMENTS') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.actionsDownArgsTemplate,\n pin: TableColumnPin.Left,\n suppressSorting: true,\n suppressMovable: true,\n minWidth: 80,\n },\n {\n columnName: JoystickOptionsColumn.UpCommand,\n label: this.translateService.instant('STE_LABEL_UPCOMMAND') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.actionsUpComboTemplate,\n pin: TableColumnPin.Left,\n suppressSorting: true,\n suppressMovable: true,\n minWidth: 100,\n },\n {\n columnName: JoystickOptionsColumn.UpArgs,\n label: this.translateService.instant('STE_LABEL_ARGUMENTS') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.actionsUpArgsTemplate,\n pin: TableColumnPin.Left,\n suppressSorting: true,\n suppressMovable: true,\n minWidth: 80,\n },\n ];\n\n // read the commands informations\n const commandsMap = new Map();\n\n // retrieve all the supported commands\n const allCommands = await this.commandsService.getCommandsAsync(this.supportedCommands);\n\n this.buttonActions.length = 0;\n this.supportedCommands.forEach((id) => {\n const command = allCommands.find((x) => x.id.equals(id));\n if (command) {\n const item: GenMeltedItem = {\n id: id.toString().toLowerCase(),\n text: command.name(),\n };\n this.buttonActions.push(item);\n commandsMap.set(id.toString().toLowerCase(), item);\n }\n });\n\n // order by name\n this.buttonActions.sort((a, b) => a.text.localeCompare(b.text));\n\n // read the buttons settings\n this.buttonRows = [];\n const buttons = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.Buttons);\n if (buttons) {\n const configs = JSON.parse(buttons) as JoystickButtonConfig[];\n configs.forEach((item) => {\n const downCommand = commandsMap.get(item.downCommand.toLowerCase());\n const upCommand = commandsMap.get(item.upCommand.toLowerCase());\n\n this.buttonRows.push({ id: { index: item.id, uiGuid: SafeGuid.newGuid() }, downCommand, downArgs: item.downArgs, upCommand, upArgs: item.upArgs });\n });\n }\n\n // ensure we have enough buttons or apply the default settings\n for (let i = this.buttonRows.length + 1; i <= JoystickService.maxButtons; ++i) {\n this.buttonRows.push({ id: { index: i, uiGuid: SafeGuid.newGuid() }, downCommand: null, downArgs: '', upCommand: null, upArgs: '' });\n }\n }\n\n //#endregion\n\n //#region Event Handlers\n\n public onActiveJoystickSelectionChanged(joystickId: string | null): void {\n if (joystickId) {\n // Set the new current joystick id\n if (joystickId !== this.currentJoystick?.id) {\n this.currentJoystick = this.gamepadService.getGamepadState(joystickId);\n this.userSettingsService.set(OptionTypes.Peripherals, JoystickLocalConfigIds.ActiveJoystick, joystickId);\n\n //Change the deadzone to match the setting associated with the new joystick selected\n this.updateDeadzoneValue(joystickId);\n }\n } else {\n this.currentJoystick = null;\n this.userSettingsService.set(OptionTypes.Peripherals, JoystickLocalConfigIds.ActiveJoystick, '');\n }\n this.gamepadService.setCurrentGamepadId(joystickId);\n }\n\n public onDeadZoneModified(deadZone: number): void {\n if (this.currentJoystick) {\n const joystickConfig = this.joysticksConfig.find((x) => x.joystickId === this.currentJoystick?.id);\n if (joystickConfig) {\n joystickConfig.deadZone = deadZone;\n } else {\n this.joysticksConfig.push({ joystickId: this.currentJoystick.id, deadZone });\n }\n const json = JSON.stringify(this.joysticksConfig);\n this.userSettingsService.set(OptionTypes.Peripherals, JoystickLocalConfigIds.JoysticksConfigsList, json);\n }\n }\n\n public onConnectedGamepadsChanged(connectedGamepads: Gamepad[]): void {\n this.availableJoysticks = connectedGamepads;\n this.hasGamepadConneted = connectedGamepads.length > 0;\n this.loadJoystickSettingsFromStorage();\n }\n\n public onButtonsConfigModified(): void {\n const config: JoystickButtonConfig[] = [];\n this.buttonRows.forEach((x) => {\n // GenTableRow is type any, we have no typings\n let downId = '';\n if (x.downCommand?.id) {\n downId = x.downCommand.id.toLowerCase().toString();\n }\n\n let upId = '';\n if (x.upCommand?.id) {\n upId = x.upCommand.id.toLowerCase().toString();\n }\n\n config.push(new JoystickButtonConfig(x.id.index, downId, x.downArgs, upId, x.upArgs));\n });\n\n const json = JSON.stringify(config);\n this.userSettingsService.set(OptionTypes.Peripherals, JoystickLocalConfigIds.Buttons, json);\n }\n\n public async toggleNumericCommandPopupInfo(): Promise {\n await this.numericCommandPopup?.toggle();\n }\n\n private updateDeadzoneValue(joystickId?: string): void {\n const id = joystickId ?? this.currentJoystick?.id;\n if (!id || !this.joysticksConfig) this.deadZone = this.defaultDeadzoneValue;\n else this.deadZone = this.joysticksConfig?.find((conf) => conf.joystickId === id)?.deadZone ?? this.defaultDeadzoneValue;\n }\n\n private onNewGamepadEvents(events: GamepadEventData[]): void {\n for (const event of events) {\n if (event instanceof ButtonGamepadEventData && this.buttonRows.length > event.data.index) {\n const htmlTag: HTMLElement = document.getElementById('idCell-' + this.buttonRows[event.data.index].id.uiGuid.toString()) as HTMLElement;\n\n if (event.data.isButtonDown) {\n // add btn pressed css class\n if (!htmlTag.classList.contains('joystick-btn-pressed')) {\n htmlTag.classList.add('joystick-btn-pressed');\n }\n } else {\n // remove css class\n if (htmlTag.classList.contains('joystick-btn-pressed')) {\n htmlTag.classList.remove('joystick-btn-pressed');\n }\n }\n }\n }\n }\n\n private loadJoystickSettingsFromStorage() {\n const activeJoystickId = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.ActiveJoystick);\n if (activeJoystickId) {\n this.currentJoystick = this.gamepadService.getGamepadState(activeJoystickId);\n }\n const serialized = this.userSettingsService.get(OptionTypes.Peripherals, JoystickLocalConfigIds.JoysticksConfigsList);\n if (serialized) {\n const joystickLocalSettings = JSON.parse(serialized) as JoystickLocalConfig[];\n if (joystickLocalSettings) {\n this.joysticksConfig = joystickLocalSettings;\n this.updateDeadzoneValue();\n }\n }\n }\n}\n","
    \n \n \n \n\n \n\n
    \n \n {{ 'STE_LABEL_USE_DEVICE_TIME_ZONE' | translate }}\n \n \n {{ 'STE_LABEL_USE_SPECIFIC_TIME_ZONE' | translate }}\n \n \n \n
    \n\n
    \n \n \n {{ 'STE_CHECKBOX_DISPLAYTIMEZONE' | translate }}\n \n \n
    \n
    \n
    \n\n\n \n\n\n\n
    \n","import { Component, Inject, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { GenMeltedItem } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface LanguageItem {\n id: string;\n text: string;\n}\n\nexport enum TimezoneMode {\n Device = 0,\n Specific = 1,\n}\n\n@Component({\n selector: 'app-language-time-options',\n templateUrl: './language-time-options.component.html',\n styleUrls: ['./language-time-options.component.scss'],\n})\n@InternalPluginDescriptor({\n type: LanguageTimeOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: LanguageTimeOptionsComponent.pluginId,\n subSection: OptionSubSections.General,\n },\n isSupported: () => true,\n})\nexport class LanguageTimeOptionsComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('CB3D93A0-D429-411A-BF56-FCD0C9CBE5F7');\n\n public readonly TextFlavor = TextFlavor;\n public readonly timezoneMode = TimezoneMode;\n\n public languages: LanguageItem[] = [];\n\n public timezones: GenMeltedItem[] = [];\n\n public selectedLanguage: LanguageItem | null = null;\n public selectedTimezone: GenMeltedItem | undefined;\n public selectedTimezoneMode = TimezoneMode.Device;\n public isTimezoneDisplayed!: boolean;\n public isInitialized = false;\n public isContentVisible = false;\n\n private webAppSelectedLanguage = 'SelectedLanguage';\n private webAppSelectedTimezone = 'SelectedTimezone';\n private webAppDisplayTimeZone = 'DisplayTimezone';\n private webAppUseDeviceTimezone = 'UseDeviceTimezone';\n\n constructor(\n private languageService: LanguageService,\n private translateService: TranslateService,\n private timeService: TimeService,\n trackingService: TrackingService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService\n ) {\n super(trackingService);\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.LanguageAndTime);\n\n if (contentVisibility) {\n const langs = await this.languageService.getAvailableLanguages();\n\n if (langs) {\n langs.forEach((element) => {\n const text = this.translateService.instant(element.name ?? '') as string;\n this.languages.push({\n id: element.id ?? '',\n text,\n });\n });\n }\n\n this.isContentVisible = true;\n const selectedLanguageId = this.userSettingsService.get(OptionTypes.LanguageAndTime, this.webAppSelectedLanguage);\n if (selectedLanguageId) {\n const language = Array.from(this.languages).find((item) => item.id === selectedLanguageId);\n if (language) {\n this.selectedLanguage = language;\n }\n }\n\n // ensure a language is selected\n if (!this.selectedLanguage) {\n // might be a new user, select the default language\n const language = Array.from(this.languages).find((item) => item.id === LanguageService.DefaultLanguage);\n if (language) {\n this.selectedLanguage = language;\n }\n }\n\n // fetch timezones\n const timezones = await this.timeService.getTimezonesAsync();\n if (timezones) {\n timezones.forEach((x) => {\n if (x.id && x.displayName) {\n this.timezones.push({ text: x.displayName, id: x.id });\n }\n });\n }\n\n let selectedTimezoneId = this.userSettingsService.get(OptionTypes.LanguageAndTime, this.webAppSelectedTimezone);\n\n // in case no timezone is set, retrieve the default one from the server\n if (!selectedTimezoneId) {\n const systemTimezone = await this.timeService.getLocalTimezone();\n if (systemTimezone?.id) {\n selectedTimezoneId = systemTimezone.id;\n }\n }\n\n if (selectedTimezoneId) {\n this.selectedTimezone = Array.from(this.timezones).find((item) => item.id === selectedTimezoneId);\n }\n\n const useDeviceTimezone = this.userSettingsService.get(OptionTypes.LanguageAndTime, this.webAppUseDeviceTimezone);\n if (useDeviceTimezone) {\n this.selectedTimezoneMode = TimezoneMode.Device;\n } else {\n this.selectedTimezoneMode = TimezoneMode.Specific;\n }\n\n const isTimezoneDisplayed = this.userSettingsService.get(OptionTypes.LanguageAndTime, this.webAppDisplayTimeZone);\n if (isTimezoneDisplayed) {\n this.isTimezoneDisplayed = isTimezoneDisplayed as boolean;\n }\n }\n\n this.isInitialized = true;\n }\n\n public onSelectedLanguageChanged(selectedLanguage: { text: string; id: string }): void {\n this.userSettingsService.set(OptionTypes.LanguageAndTime, this.webAppSelectedLanguage, selectedLanguage.id, true);\n }\n\n public onSelectedTimezoneChanged(selectedTimezone: { text: string; id: string }): void {\n this.userSettingsService.set(OptionTypes.LanguageAndTime, this.webAppSelectedTimezone, selectedTimezone.id);\n }\n\n public onDisplayTimezoneChanged(isTimezoneDisplayed: boolean): void {\n this.userSettingsService.set(OptionTypes.LanguageAndTime, this.webAppDisplayTimeZone, isTimezoneDisplayed);\n }\n\n public onUseDeviceTimezoneChanged(mode: string): void {\n this.selectedTimezoneMode = Number.parseInt(mode);\n const useDeviceTimezone = this.selectedTimezoneMode === TimezoneMode.Device;\n this.userSettingsService.set(OptionTypes.LanguageAndTime, this.webAppUseDeviceTimezone, useDeviceTimezone);\n }\n}\n","\n \n \n {{ 'STE_LABEL_TIMELINELAYERS' | translate }}\n \n \n \n \n {{ provider.text }}\n \n \n \n\n\n\n \n\n\n\n \n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { SelectionType } from '@genetec/gelato';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { OptionTypes } from '@modules/shared/enumerations/option-types';\nimport { ListItem } from '@modules/shared/interfaces/list-item';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TimelineService } from '@modules/video/services/timeline.service';\nimport { SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-video-options',\n templateUrl: './video-options.component.html',\n})\n@InternalPluginDescriptor({\n type: VideoOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: VideoOptionsComponent.pluginId,\n subSection: OptionSubSections.Video,\n },\n isSupported: () => true,\n})\nexport class VideoOptionsComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('4CCCF685-5909-4D0D-9949-9A2EF0912950');\n\n public providers: ListItem[] = [];\n public hasTileHeaderFeatureFlag? = false;\n public isContentVisible = false;\n public readonly ListSelectionType = SelectionType;\n\n public get selectedProvidersId(): string[] {\n return this.providers.filter((provider) => provider.isChecked).map((selectedProvider) => selectedProvider.id);\n }\n\n constructor(\n private timelineService: TimelineService,\n trackingService: TrackingService,\n @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService,\n private advancedSettingsService: AdvancedSettingsService\n ) {\n super(trackingService);\n this.hasTileHeaderFeatureFlag = GeneralFeatureFlags.EntityState.isEnabled(this.advancedSettingsService);\n }\n\n async ngOnInit() {\n const contentVisibility = this.userSettingsService.getOptionAvailability(OptionTypes.Appearance);\n if (contentVisibility) {\n this.isContentVisible = true;\n const list: ListItem[] = [];\n const providers = await this.timelineService.fetchProvidersAsync();\n if (providers) {\n providers.forEach((x) => {\n list.push({ id: x.id.toString(), text: x.title, icon: x.icon as MeltedIcon, isChecked: false });\n });\n }\n let providersSelectedString = this.userSettingsService.get(OptionTypes.Appearance, 'timelineProviders');\n if (!providersSelectedString) {\n providersSelectedString = await this.timelineService.applyDefaultSettingsAsync();\n }\n const providersSelected = providersSelectedString ? (JSON.parse(providersSelectedString) as string[]) : undefined;\n\n if (providersSelected) {\n providersSelected.forEach((provider) => {\n const item = list.find((x) => x.id === provider);\n if (item) {\n item.isChecked = true;\n }\n });\n }\n\n this.providers = list;\n }\n }\n\n public onSelectedItemsChange(provider: ListItem, isChecked: boolean): void {\n provider.isChecked = isChecked;\n\n const providersSelected: string[] = [];\n this.userSettingsService.set(OptionTypes.Appearance, 'timelineProviders', JSON.stringify(this.selectedProvidersId));\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable } from '@angular/core';\nimport { ApplicationInsights, ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { TelemetryInitializers } from '@modules/shared/services/analytics/telemetryInitializers';\nimport { VersionService } from '@modules/shared/services/version/version.service';\nimport { Constants } from '@src/constants';\n\nexport class AnalyticsGeneralInfo {\n securityCenterVersion?: string;\n appVersion?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SendFeedbackService {\n private appInsights?: ApplicationInsights;\n private analyticsGeneralInfo: AnalyticsGeneralInfo = {};\n private ingestionEndpoint?: string;\n\n constructor(\n public platformService: Platform,\n private versionService: VersionService,\n private telemetryInitializers: TelemetryInitializers,\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string\n ) {}\n\n public sendFeedback(message: string, email: string): boolean {\n const action = 'Send feedback';\n const browser = this.getCurrentBrowser();\n const properties: Record = {\n action,\n message,\n email,\n browser,\n };\n return this.logSendFeedback(action, properties);\n }\n\n /**\n * Will create the singleton instance of Application Insights\n */\n public setupAppInsightsAsync = async (): Promise => {\n if (this.appInsights) {\n return;\n }\n await this.retrieveVersionAsync();\n\n this.ingestionEndpoint = `${this.baseUrl}Api/Analytics/SendFeedbackProxy`;\n const appInsights = new ApplicationInsights({\n config: {\n connectionString: `InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=${this.ingestionEndpoint}`,\n enableAutoRouteTracking: false,\n },\n });\n\n appInsights.loadAppInsights();\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.filter(envelope));\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.addGeneralInfoToEnvelope(envelope, this.analyticsGeneralInfo));\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => this.telemetryInitializers.addPluginNameToEnvelope(envelope));\n\n this.appInsights = appInsights;\n };\n\n /**\n * Will track a send feedback event.\n *\n * @param name - the message corresponding to the trace event\n * @param properties - an object that can contain any key, should be representative of the event we want to track\n */\n public logSendFeedback(name: string, properties?: { [key: string]: any }): boolean {\n if (!this.appInsights) {\n return false;\n }\n this.appInsights.trackEvent({ name }, { customProperties: properties });\n return true;\n }\n\n /**\n * Will retrieve the values for the security center version and web app version and assign them to the class' properties.\n */\n private async retrieveVersionAsync(): Promise {\n const versionInfo = await this.versionService.retrieveVersionAsync();\n if (versionInfo) {\n this.analyticsGeneralInfo.securityCenterVersion = versionInfo.securityCenterVersion;\n this.analyticsGeneralInfo.appVersion = versionInfo.appVersion;\n }\n }\n\n /**\n * Will retrieve the current browser of the user.\n */\n private getCurrentBrowser(): string {\n if (this.platformService.EDGE) {\n return 'Edge (old: version less than 79)';\n }\n if (this.platformService.ANDROID) {\n return 'Android';\n }\n if (this.platformService.SAFARI) {\n return 'Safari';\n }\n if (this.platformService.FIREFOX) {\n return 'Firefox';\n }\n if (this.platformService.IOS) {\n return 'iOS';\n }\n if (this.platformService.WEBKIT) {\n return 'WebKit based browser (i.e. Opera)';\n }\n if (this.platformService.TRIDENT) {\n return 'IE';\n }\n if (this.platformService.BLINK) {\n return 'Chrome';\n }\n\n return 'Unknown';\n }\n}\n","import { UntypedFormArray, UntypedFormGroup } from '@angular/forms';\n\nexport const deepUpdateValueAndValidity = (group: UntypedFormGroup | UntypedFormArray): void => {\n group.markAllAsTouched();\n\n // call updateValueAndValidity on all form controls (statusChange will be emitted for each one)\n deepUpdateValueAndValidityInternal(group);\n};\n\nconst deepUpdateValueAndValidityInternal = (group: UntypedFormGroup | UntypedFormArray): void => {\n for (const control of Object.values(group.controls)) {\n if (control instanceof UntypedFormGroup || control instanceof UntypedFormArray) {\n deepUpdateValueAndValidityInternal(control);\n return;\n }\n\n control.updateValueAndValidity({ emitEvent: true });\n }\n};\n","import { Component } from '@angular/core';\nimport { ButtonFlavor } from '@genetec/gelato-angular';\nimport { TextFlavor, Icon } from '@genetec/gelato';\nimport { TrackedGenModalComponent } from '@modules/shared/components/tracked/tracked-gen-modal.component';\n\n@Component({\n selector: 'app-send-feedback-success',\n templateUrl: './send-feedback-success.component.html',\n styleUrls: ['./send-feedback-success.component.scss'],\n})\nexport class SendFeedbackSuccessComponent extends TrackedGenModalComponent {\n public readonly TextFlavor = TextFlavor;\n public readonly Icon = Icon;\n public readonly ButtonFlavor = ButtonFlavor;\n\n public onClose = (): Promise => {\n this.hide();\n return Promise.resolve(true);\n };\n}\n","\n \n
    \n
    {{ 'STE_MESSAGE_INFO_SEND_FEEDBACK_SUCCESS_TITLE' | translate }}
    \n
    \n \n
    \n\n
    {{ 'STE_MESSAGE_INFO_SEND_FEEDBACK_SUCCESS_DESCRIPTION' | translate }}
    \n {{ 'STE_BUTTON_CLOSE' | translate }}\n
    \n
    \n
    \n","import { Component, Injector } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { GenModalService, GenToastService, ToastFlavor } from '@genetec/gelato-angular';\nimport { SendFeedbackService } from '@modules/general/services/send-feedback.service';\nimport { TrackedGenModalComponent } from '@modules/shared/components/tracked/tracked-gen-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { TranslateService } from '@ngx-translate/core';\nimport { deepUpdateValueAndValidity } from '@modules/shared/forms';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { SendFeedbackSuccessComponent } from './success-component/send-feedback-success.component';\n\n@Component({\n selector: 'app-send-feedback',\n templateUrl: './send-feedback.component.html',\n styleUrls: ['./send-feedback.component.scss'],\n})\nexport class SendFeedbackComponent extends TrackedGenModalComponent {\n public form = new UntypedFormGroup({\n // AppInsights limitation for a value is 8192, if we change our way to send feedback we can remove that\n message: new UntypedFormControl('', [Validators.required, Validators.maxLength(8192)]),\n email: new UntypedFormControl('', [Validators.required, Validators.maxLength(320), Validators.email]),\n });\n\n public readonly sendFeedbackGenetecEmail = 'SCWebFeedback@genetec.com';\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n private modalService: GenModalService,\n private securityCenterProvider: SecurityCenterClientService,\n private sendFeedbackService: SendFeedbackService,\n private genToastService: GenToastService,\n private translateService: TranslateService,\n private analyticsService: AnalyticsService\n ) {\n super(injector, trackingService);\n this.analyticsService.logTrace(AnalyticsNames.SendFeedback.DialogOpened);\n\n this.setCurrentUserEmail().fireAndForget();\n }\n\n public onSubmit = (): Promise => {\n deepUpdateValueAndValidity(this.form);\n\n if (this.form.valid === false) {\n this.analyticsService.logTrace(AnalyticsNames.SendFeedback.SubmitFailed);\n return Promise.resolve(false);\n }\n // eslint-disable-next-line\n const result = this.sendFeedbackService.sendFeedback(this.form.value.message, this.form.value.email);\n\n if (result) {\n this.modalService.open(SendFeedbackSuccessComponent);\n } else {\n const error = this.translateService.instant('STE_MESSAGE_ERROR_UNABLE_SEND_FEEDBACK') as string;\n this.genToastService.show({ text: error, flavor: ToastFlavor.Error });\n }\n\n this.analyticsService.logTrace(AnalyticsNames.SendFeedback.DialogClosedSuccess);\n return Promise.resolve(result);\n };\n\n public handleCancel = (): Promise => {\n this.analyticsService.logTrace(AnalyticsNames.SendFeedback.DialogClosedCancel);\n return Promise.resolve(true);\n };\n\n private async setCurrentUserEmail(): Promise {\n if (this.securityCenterProvider?.scClient != null) {\n const userEntity = await this.securityCenterProvider.scClient.getEntityAsync(UserEntity, this.securityCenterProvider.scClient.userId);\n if (userEntity !== null && userEntity.emailAddress?.length > 0) {\n this.form.controls.email.setValue(userEntity.emailAddress);\n }\n }\n }\n}\n","\n \n \n \n {{ 'STE_LABEL_NOUN_EMAIL' | translate }}\n \n \n \n {{ 'STE_MESSAGE_INFO_SEND_FEEDBACK_MESSAGE_TITLE' | translate }}\n \n \n \n {{ 'STE_MESSAGE_INFO_SEND_FEEDBACK_NO_INTERNET' | translate | stringFormat: [sendFeedbackGenetecEmail] }}\n \n \n\n","
    \n \n \n \n
    \n \"user\n
    \n
    \n\n\n
    \n
    \n
    \n
    \n
    \n \"user\n
    \n
    \n
    \n \n {{ userNameDisplay }}\n \n
    \n \n {{ directoryDisplay }}\n \n
    \n
    \n\n
    \n \n \n \n \n {{ 'STE_BUTTON_CHANGEPASSWORD' | translate }}\n \n \n \n \n \n {{ 'STE_TITLE_OPTIONS' | translate }}\n \n \n \n \n \n \n {{ 'STE_LABEL_SEND_FEEDBACK' | translate }}\n \n \n \n \n {{ 'STE_LABEL_ABOUT' | translate }}\n \n \n \n \n {{ 'STE_LABEL_HELP' | translate }}\n \n \n \n \n \n \n \n {{ 'STE_BUTTON_LOGOFF' | translate }}\n \n \n
    \n
    \n
    \n","import { TranslateService } from '@ngx-translate/core';\nimport { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, IconSize, TextFlavor, PopupPosition } from '@genetec/gelato';\nimport { GenModalService, GenPopup } from '@genetec/gelato-angular';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { ResourcesService } from '@modules/shared/services/resources/resources.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { VersionService } from '@modules/shared/services/version/version.service';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { WINDOW } from '@utilities/common-helper';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AboutComponent } from '../about/about.component';\nimport { ChangePasswordComponent } from '../change-password/change-password.component';\nimport { SendFeedbackComponent } from '../send-feedback/send-feedback.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.scss'],\n})\nexport class ProfileComponent extends TrackedComponent implements OnInit {\n @ViewChild(GenPopup) profilePopup!: GenPopup;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly TextFlavor = TextFlavor;\n public readonly PopupPosition = PopupPosition;\n\n public optionsModal = 'optionsModal';\n public userPicture!: string;\n public userNameDisplay!: string;\n public isUserImportedFromExternalSystem = false;\n public directoryDisplay!: string | null | undefined;\n public hasUserPicture = false;\n public hasChangePasswordPrivilege = false;\n public isLoggedInWithOpenId = false;\n\n private readonly defaultTechdocsUrl = 'https://sc-webapp-help.genetec.com/';\n\n constructor(\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n private securityCenterClientService: SecurityCenterClientService,\n private authService: AuthService,\n private versionService: VersionService,\n private modalService: GenModalService,\n private resourcesService: ResourcesService,\n trackingService: TrackingService,\n private logger: LoggerService,\n @Inject(WINDOW) private window: Window,\n private translateServive: TranslateService\n ) {\n super(trackingService);\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((loggedIn) => {\n if (loggedIn) {\n this.loadAppInformation().fireAndForget();\n this.loadUserInformation().fireAndForget();\n }\n });\n this.isLoggedInWithOpenId = await this.authService.getIsAuthenticatedWithOpenIdAsync();\n }\n\n public async onAbout(): Promise {\n await this.profilePopup.close();\n this.modalService.open(AboutComponent);\n }\n\n public onHelp(): void {\n this.profilePopup.close().fireAndForget();\n this.window.open(this.defaultTechdocsUrl + this.translateServive.currentLang);\n }\n\n public async onSendFeedback(): Promise {\n await this.profilePopup.close();\n this.modalService.open(SendFeedbackComponent);\n }\n\n public async onChangePassword(): Promise {\n await this.profilePopup.close();\n this.modalService.open(ChangePasswordComponent);\n }\n\n public async onOptions(): Promise {\n await this.profilePopup.close();\n this.commandsService.executeCommand(SharedCommands.ShowOptions);\n }\n\n public async onProfile(): Promise {\n await this.profilePopup.toggle();\n }\n\n public async onSignOut(): Promise {\n try {\n await this.authService.logOutAsync();\n } catch (e) {}\n }\n\n public async outputComponentStats(): Promise {\n await this.profilePopup.close();\n this.trackingService.outputStats();\n }\n\n public async closeProfile(): Promise {\n await this.profilePopup.close();\n }\n\n private async loadAppInformation() {\n const scClient = this.securityCenterClientService?.scClient;\n const versionInfo = await this.versionService.retrieveVersionAsync();\n if (versionInfo) {\n this.directoryDisplay = versionInfo.securityCenterServerName ?? versionInfo.serverName;\n }\n\n // resolve permission for change password\n this.hasChangePasswordPrivilege = scClient.isGlobalPrivilegeGranted(KnownPrivileges.changeOwnPasswordPrivilege);\n }\n\n private async loadUserInformation() {\n const scClient = this.securityCenterClientService?.scClient;\n try {\n const user = await scClient?.getEntityAsync(UserEntity, this.securityCenterClientService?.scClient.userId);\n if (user) {\n // resolve the username to display\n this.userNameDisplay = user.name;\n // resolve if user is coming from an external system\n this.isUserImportedFromExternalSystem = user.isImportedFromExternalSystem;\n\n if (user.firstName !== null && user.firstName.length > 0 && user.lastName !== null && user.lastName.length > 0) {\n this.userNameDisplay = user.firstName + ' ' + user.lastName;\n }\n\n // download its thumbnail\n if (!user.thumbnailId.isEmpty()) {\n const fileResult = await this.resourcesService.getFilesCacheAsync([{ entity: user, fileCacheId: user.thumbnailId }], { encrypted: true });\n\n const thumbnail = fileResult[user.thumbnailId.toString()];\n if (thumbnail) {\n this.userPicture = thumbnail;\n this.hasUserPicture = true;\n }\n }\n }\n } catch (error) {\n this.userNameDisplay = scClient?.currentUserInfo?.name ?? (await scClient?.getCurrentUserInfoAsync())?.name;\n this.logger.traceError(error);\n }\n }\n}\n","\n \n \n {{ property.text }}\n {{ property.secondaryText }}\n \n \n\n","import { Component, OnInit } from '@angular/core';\nimport { SelectionType } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { Item } from '@modules/shared/interfaces/item';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n//\nexport const isContentSupported = (content: Content): boolean => {\n if (content) {\n if (content.parameters?.hasField('properties')) {\n return true;\n }\n }\n return false;\n};\n\nexport class PropertyItem {\n public Title!: string;\n public Type!: string;\n public Value!: string;\n}\n\n@Component({\n selector: 'app-properties-widget',\n templateUrl: './properties-widget.component.html',\n styleUrls: ['./properties-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: PropertiesWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: PropertiesWidgetComponent.pluginId, priority: 100 },\n isContentSupported,\n})\nexport class PropertiesWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('FA7942ED-1C22-4CD8-ABF4-24F473621BC3');\n public readonly ListSelectionType = SelectionType;\n public content?: Content;\n public dataContext?: ContentService;\n\n public properties: Item[] = [];\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.properties.length = 0;\n const parameters = this.content?.parameters;\n if (parameters) {\n if (parameters.hasField('properties')) {\n const json = parameters.getField('properties');\n if (json) {\n const items = JSON.parse(json) as PropertyItem[];\n if (items) {\n let id = 0;\n items.forEach((x) => {\n this.properties.push({ id: (id++).toString(), text: x.Title, secondaryText: x.Value });\n });\n }\n }\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","import { OnDestroy, ViewChild } from '@angular/core';\nimport { Component, Injector } from '@angular/core';\nimport { GenMeltedModalComponent, GenModalService, MeltedModalAction } from '@genetec/gelato-angular';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-send-message',\n templateUrl: './send-message.component.html',\n styleUrls: ['./send-message.component.scss'],\n})\nexport class SendMessageComponent extends ConnectionAwareModalComponent implements OnDestroy {\n private static onDestroy: Subject = new Subject();\n\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n public title = '';\n public actionText = 'OK';\n public cancelText: string | undefined;\n public message = '';\n public isValid = false;\n public closedHandler: ((value: boolean, message: string) => void) | undefined = undefined;\n\n constructor(protected authService: AuthService, injector: Injector, private translateService: TranslateService, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n }\n\n public static show(\n modalService: GenModalService,\n title: string,\n message: string,\n closedHandler: (value: boolean, message: string) => void,\n actionText: string | undefined = undefined,\n cancelText: string | undefined = undefined\n ): void {\n const component = modalService.open(SendMessageComponent, undefined);\n if (component) {\n component.title = title;\n component.message = message;\n component.closedHandler = closedHandler;\n if (actionText) {\n component.actionText = actionText;\n }\n if (cancelText) {\n component.cancelText = cancelText;\n }\n component.genModalAction.pipe(takeUntil(SendMessageComponent.onDestroy)).subscribe((modalAction: MeltedModalAction) => {\n if (closedHandler) {\n if (modalAction === MeltedModalAction.Default) {\n closedHandler(true, component.message);\n } else {\n closedHandler(false, '');\n }\n }\n });\n }\n }\n\n /**\n * TODO: MB make sure static subjects work as well\n */\n ngOnDestroy() {\n SendMessageComponent.onDestroy.next();\n SendMessageComponent.onDestroy.complete();\n\n super.ngOnDestroy();\n }\n\n public onChange(newValue: string): void {\n if (this.message) {\n this.isValid = true;\n } else {\n this.isValid = false;\n }\n }\n}\n","\n \n \n {{ 'STE_LABEL_BOOKMARK_MESSAGE' | translate }}\n \n \n\n","import { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Observable, OperatorFunction } from 'rxjs';\nimport { distinctUntilChanged, map, pluck } from 'rxjs/operators';\n/**\n * When a source entity changes, emits the new value of the field if it has changed.\n *\n * @example\n * const doorOpened$ = this.door$.pipe(filterFieldChanged('doorOpened'));\n */\nexport const filterFieldChanged =\n (field: F): OperatorFunction =>\n (source$: Observable) => {\n return source$.pipe(\n map((sourceEntity) => (sourceEntity?.[field] !== undefined ? sourceEntity : { [field]: null }) as T),\n pluck(field), // Made sure the field existed, will return null if sourceEntity is not valid.\n distinctUntilChanged()\n );\n };\n","import { Observable, OperatorFunction } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nexport const notNullOrUndefined =\n (): OperatorFunction> =>\n (source$: Observable) => {\n // we are checking that val is not null nor undefined\n return source$.pipe(filter((val: T): val is NonNullable => val != null));\n };\n","// Autogenerated: v2/help/enumerations/ApiZoneArmingState?codegen=ts&showresources=False on 2021-03-02 10:20:51 AM\n\nexport class ZoneArmingState {\n public static Unknown = 'Unknown';\n public static Armed = 'Armed';\n public static Disarmed = 'Disarmed';\n\n public static readonly values = [\n ZoneArmingState.Unknown,\n ZoneArmingState.Armed,\n ZoneArmingState.Disarmed\n ];\n}\n","// Autogenerated: v2/help/enumerations/ApiZoneState?codegen=ts&showresources=False on 2021-03-02 10:20:51 AM\n\nexport class ZoneState {\n public static Unknown = 'Unknown';\n public static Normal = 'Normal';\n public static Active = 'Active';\n public static Trouble = 'Trouble';\n\n public static readonly values = [\n ZoneState.Unknown,\n ZoneState.Normal,\n ZoneState.Active,\n ZoneState.Trouble\n ];\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { filterFieldChanged } from '@modules/shared/operators/filter-field-change';\nimport { notNullOrUndefined } from '@modules/shared/operators/not-null-or-undefined';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { ZoneArmingState } from 'RestClient/Client/Enumerations/ZoneArmingState';\nimport { ZoneState } from 'RestClient/Client/Enumerations/ZoneState';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { IZoneEntity, ZoneEntityFields } from 'RestClient/Client/Interface/IZoneEntity';\nimport { ZoneEntity } from 'RestClient/Client/Model/AccessControl/ZoneEntity';\nimport { Subject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { SecurityCenterClientService } from '../../../../security-center/services/client/security-center-client.service';\nimport { ContentPluginComponent } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\n\n@UntilDestroy()\n@Component({\n selector: 'app-zone-widget-base-component',\n template: '',\n})\nexport class ZoneWidgetBaseComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n private static monitoredFields = [\n ZoneEntityFields.customIconIdField,\n ZoneEntityFields.zoneStateField,\n ZoneEntityFields.armingStateField,\n ZoneEntityFields.runningStateField,\n ZoneEntityFields.maintenanceField,\n ];\n\n public dataContext?: ContentService;\n public zone: ZoneEntity | null = null;\n public content?: Content;\n public isLoading = true;\n public stateAddtionnalInfo = '';\n\n public zoneCustomIconId?: IGuid;\n public zoneArmingState?: string;\n public zoneIsArmed?: boolean;\n public zoneInputState?: string;\n public zoneRunningState?: RunningState;\n public zoneMaintenanceMode?: boolean;\n public zone$: Observable;\n public zoneIsArmed$: Observable;\n public zoneStateString$: Observable;\n protected entityCacheTask?: IEntityCacheTask;\n protected get monitoredFields(): string[] {\n return ZoneWidgetBaseComponent.monitoredFields;\n }\n protected scClient: WebAppClient | null = null;\n private zoneSubject = new Subject();\n constructor(securityCenterClientService: SecurityCenterClientService, protected translateService: TranslateService, trackingService: TrackingService) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n this.entityCacheTask = this.scClient?.buildEntityCache(this.monitoredFields);\n\n this.zone$ = this.zoneSubject.asObservable();\n this.zoneIsArmed$ = this.zone$.pipe(\n filterFieldChanged('armingState'),\n map((armingState) => armingState === ZoneArmingState.Armed),\n untilDestroyed(this)\n );\n\n this.zoneStateString$ = this.zone$.pipe(\n filterFieldChanged('zoneState'),\n notNullOrUndefined(),\n map((zoneState) => this.getTranslatedZoneStateString(zoneState)),\n untilDestroyed(this)\n );\n }\n\n public async ngOnDestroy() {\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n public ngOnInit() {\n super.ngOnInit();\n this.initializeZone().fireAndForget();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n protected async initializeZone(): Promise {\n if (this.content && this.entityCacheTask) {\n const zone = await this.entityCacheTask?.getEntityAsync(ZoneEntity, SafeGuid.parse(this.content.source), true);\n if (zone) {\n this.zoneSubject.next(zone);\n this.entityCacheTask\n .detectEntityChange(zone, 'armingState', 'maintenance', 'runningState', 'zoneState')\n .pipe(untilDestroyed(this))\n .subscribe((updatedZone) => {\n this.zoneSubject.next(updatedZone);\n });\n }\n }\n }\n\n private getTranslatedZoneStateString(state: string): string {\n switch (state) {\n case ZoneState.Active:\n return this.translateService.instant('STE_LABEL_ZONE_STATE_ACTIVE') as string;\n\n case ZoneState.Normal:\n return this.translateService.instant('STE_LABEL_ZONE_STATE_NORMAL') as string;\n\n case ZoneState.Trouble:\n return this.translateService.instant('STE_LABEL_ZONE_STATE_TROUBLE') as string;\n\n default:\n return this.translateService.instant('STE_LABEL_ZONE_STATE_UNKNOWN') as string;\n }\n }\n}\n","\n \n {{ content?.title }}\n \n {{\n (zoneIsArmed ? 'STE_LABEL_ZONE_ARMED' : 'STE_LABEL_ZONE_DISARMED') | translate\n }}\n {{ zoneStateString$ | async }} \n\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ZoneContentTypes } from '@modules/general/enumerations/zone-content-types';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { CommandsUsage } from '@modules/shared/services/commands/commands-usage/commands-usage';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { Observable, Subject } from 'rxjs';\nimport { SafeGuid } from 'safeguid';\nimport { ZoneWidgetBaseComponent } from '../../zone-widget-base.component';\n\n@Component({\n selector: 'app-zone-entity-state',\n templateUrl: './zone-entity-state.component.html',\n styleUrls: ['./zone-entity-state.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ZoneEntityStateComponent,\n pluginTypes: [PluginTypes.TileHeader],\n exposure: {\n id: ZoneEntityStateComponent.pluginId,\n priority: -1,\n },\n isContentSupported: (content: Content) => {\n if (content && !content.contextContent) {\n if (content.type) {\n return content.type.equals(ZoneContentTypes.Zone);\n }\n }\n return false;\n },\n requirements: { enabledFeatureFlags: [GeneralFeatureFlags.EntityState] },\n})\nexport class ZoneEntityStateComponent extends ZoneWidgetBaseComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('7688AFE1-3C61-4039-946A-535F8513456A');\n\n /**\n * List of commands to hide from the tile state overlay.\n * UX asked we remove the \"share\" button because it's already in the timeline.\n */\n public readonly excludedCommands = [SafeGuid.parse('2e13993e8f7a4cdaadf4e3cd6f46052a')];\n public readonly RunningState = RunningState;\n\n public commandsUsage$: Observable;\n\n private commandsUsageSubject = new Subject();\n private subscriptions = new SubscriptionCollection();\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n translateService: TranslateService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {\n super(securityCenterClientService, translateService, trackingService);\n this.commandsUsage$ = this.commandsUsageSubject.asObservable();\n }\n\n async ngOnDestroy() {\n await super.ngOnDestroy();\n this.subscriptions.unsubscribeAll();\n }\n\n setContent(content: Content): void {\n this.content = content;\n this.createCommandsUsageAsync().fireAndForget();\n }\n\n private async createCommandsUsageAsync() {\n if (this.content) {\n const commandsUsage = await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: this.content }, []);\n\n this.subscriptions.add(commandsUsage.subscribe());\n this.commandsUsageSubject.next(commandsUsage);\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent, PluginContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { ZoneEntity } from 'RestClient/Client/Model/AccessControl/ZoneEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { IZoneEntity, ZoneEntityFields } from 'RestClient/Client/Interface/IZoneEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { ZoneArmingState } from 'RestClient/Client/Enumerations/ZoneArmingState';\nimport { ZoneState } from 'RestClient/Client/Enumerations/ZoneState';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { ZoneContentTypes } from '../../../enumerations/zone-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n return !!(\n content?.type.equals(ZoneContentTypes.Zone) &&\n (content.contextContent === null || (content.contextContent.type.equals(ZoneContentTypes.Event) && pluginType.equals(PluginTypes.Widget)))\n );\n};\n\n@InternalContentPluginDescriptor({\n type: ZoneActionComponent,\n pluginTypes: [PluginTypes.Widget, PluginTypes.MapPopupCompact],\n exposure: { id: ZoneActionComponent.pluginId, priority: 0 },\n isContentSupported,\n})\n@Component({\n selector: 'app-zone-action',\n templateUrl: './zone-action.component.html',\n styleUrls: ['./zone-action.component.scss'],\n})\nexport class ZoneActionComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('0AD785B0-130A-44F0-BCDE-F6A542C9A950');\n public isLoading = true;\n\n public isArmed = false;\n public inputState = '';\n public content?: Content;\n public dataContext?: PluginContext;\n\n private entityCacheTask: IEntityCacheTask;\n\n private monitoredFields = [ZoneEntityFields.zoneStateField, ZoneEntityFields.armingStateField];\n\n constructor(securityCenterClientService: SecurityCenterClientService, private translateService: TranslateService, trackingService: TrackingService) {\n super(trackingService);\n\n this.entityCacheTask = securityCenterClientService?.scClient?.buildEntityCache(this.monitoredFields);\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n await this.initZone();\n\n this.isLoading = false;\n }\n\n public ngOnDestroy() {\n super.ngOnDestroy();\n this.entityCacheTask?.dispose().fireAndForget();\n }\n\n public setDataContext(context: ContentService): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n private async initZone() {\n if (this.entityCacheTask && this.content) {\n const zone = await this.entityCacheTask.getEntityAsync(ZoneEntity, SafeGuid.parse(this.content.source));\n if (zone) {\n await this.entityCacheTask.detectFieldChangeAsync(zone, () => zone.armingState, ((_: IZoneEntity, newValue: string, __: string) => {\n this.isArmed = newValue === ZoneArmingState.Armed;\n return new Deferred(true).promise;\n }) as modificationHandlerField);\n\n await this.entityCacheTask.detectFieldChangeAsync(zone, () => zone.zoneState, ((_: IZoneEntity, newValue: string, __: string) => {\n this.updateZoneState(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField);\n\n this.isArmed = zone.armingState === ZoneArmingState.Armed;\n this.updateZoneState(zone.zoneState);\n }\n }\n }\n\n private updateZoneState(state: string) {\n switch (state) {\n case ZoneState.Active:\n this.inputState = this.translateService.instant('STE_LABEL_ZONE_STATE_ACTIVE') as string;\n break;\n case ZoneState.Normal:\n this.inputState = this.translateService.instant('STE_LABEL_ZONE_STATE_NORMAL') as string;\n break;\n case ZoneState.Trouble:\n this.inputState = this.translateService.instant('STE_LABEL_ZONE_STATE_TROUBLE') as string;\n break;\n default:\n this.inputState = this.translateService.instant('STE_LABEL_ZONE_STATE_UNKNOWN') as string;\n }\n }\n}\n","\n {{\n (isArmed ? 'STE_LABEL_ZONE_ARMED' : 'STE_LABEL_ZONE_DISARMED') | translate\n }}\n {{ inputState }} \n\n","import { Component, OnInit } from '@angular/core';\nimport { Icon, ItemSlot } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ZoneContentTypes } from '../../../enumerations/zone-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n if (content?.type && content.contextContent) {\n return content.type.equals(ZoneContentTypes.Zone) && content.contextContent?.type.equals(ZoneContentTypes.Event);\n }\n return false;\n};\n\n@Component({\n selector: 'app-zone-event-widget',\n templateUrl: './zone-event-widget.component.html',\n styleUrls: ['./zone-event-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ZoneEventWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupCompact, PluginTypes.MapPopupExpand],\n exposure: { id: ZoneEventWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\nexport class ZoneEventWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('D5F59B9A-2BD0-4589-9783-B11CEC3F1425');\n\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n\n public content?: Content;\n public dataContext: unknown;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","
    \n \n \n {{ content?.contextContent?.title }}\n {{ this.content?.contextContent?.description }}\n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { SafeGuid } from 'safeguid';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { ZoneContentTypes } from '../../../enumerations/zone-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n if (content && !content.contextContent) {\n return content.type.equals(ZoneContentTypes.Zone);\n }\n return false;\n};\n\n@Component({\n selector: 'app-zone-events-widget',\n templateUrl: './zone-events-widget.component.html',\n styleUrls: ['./zone-events-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ZoneEventsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: ZoneEventsWidgetComponent.pluginId, priority: 10 },\n isContentSupported,\n})\nexport class ZoneEventsWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('19B7338B-DFC4-4DA1-94F6-7E7638334744');\n public content?: Content;\n public dataContext?: ContentService;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n","\n \n \n \n\n \n \n \n \n\n \n \n
    \n {{ currentCategoryDescriptor?.title }}\n {{ currentCategoryDescriptor?.description ?? '' }}\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n\n\n\n\n","import { AfterViewInit, Component, Inject, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AsidePosition, GenAlertComponent, GenAlertService, MeltedModalAction, Orientation } from '@genetec/gelato-angular';\nimport { TextFlavor } from '@genetec/gelato';\nimport { GenTabItem } from '@genetec/gelato-angular/lib/components/gen-tabs/interfaces/gen-tab-item';\nimport { TranslateService } from '@ngx-translate/core';\nimport { uniq } from 'lodash-es';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { GenAlerts } from '@modules/shared/enumerations/gen-alerts';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { UserSettingsService } from '@modules/shared/services/user-settings/user-settings.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface CategoryDescriptor {\n title: string;\n description?: string;\n}\n@UntilDestroy()\n@Component({\n selector: 'app-options',\n templateUrl: './options.component.html',\n styleUrls: ['./options.component.scss'],\n})\nexport class OptionsComponent extends ConnectionAwareModalComponent implements AfterViewInit, OnInit, OnDestroy {\n @ViewChild(GenAlertComponent) public genAlertComponent!: GenAlertComponent;\n\n public readonly AsidePosition = AsidePosition;\n public readonly Orientation = Orientation;\n public readonly TextFlavor = TextFlavor;\n\n public categories!: GenTabItem[];\n public allOptionPlugins: PluginItem[] = [];\n public currentOptionPlugins: PluginItem[] = [];\n public currentCategory?: GenTabItem;\n public currentCategoryDescriptor?: CategoryDescriptor;\n public optionsModal = 'optionsModal';\n public optionsConfirmRefreshAlertId = GenAlerts.OptionsConfirmRefreshAlert;\n\n private subSections: Map = new Map();\n private isClosing = false;\n private desiredCategory: IGuid | undefined;\n\n constructor(\n injector: Injector,\n private pluginService: PluginService,\n private activatedRoute: ActivatedRoute,\n private genAlertService: GenAlertService,\n private translateService: TranslateService,\n authService: AuthService,\n @Inject(USER_SETTINGS_SERVICE) private userSettingsService: UserSettingsService,\n trackingService: TrackingService\n ) {\n super(authService, injector, trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.setCategoryDescriptors();\n this.onAppear().fireAndForget();\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((isLoggedIn: boolean) => {\n if (isLoggedIn) {\n this.genModalComponent.show();\n if (this.genAlertComponent) {\n this.genAlertService.add(this.genAlertComponent);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.genAlertService.remove(this.genAlertComponent.id);\n super.ngOnDestroy();\n }\n\n public override hideModal(): void {\n this.onClosed();\n }\n\n public onModalDefaultAction = async (): Promise => {\n const changesSaved = await this.onApplyChanges();\n return Promise.resolve(changesSaved);\n };\n\n public onModalAlternativeAction = (): Promise => {\n this.onCancelChanges();\n return Promise.resolve(true);\n };\n\n public setCategory(id: IGuid): void {\n this.desiredCategory = id;\n }\n\n public onCategoryChanged(item: GenTabItem): void {\n const category: IGuid = SafeGuid.parse(item.id.toString());\n if (category) {\n this.showPlugins(category);\n this.currentCategoryDescriptor = this.subSections.get(category.toString().toLowerCase());\n }\n }\n\n public async onOptionsAction(action: MeltedModalAction): Promise {\n if (action === MeltedModalAction.Default) {\n await this.onApplyChanges();\n } else {\n this.onCancelChanges();\n }\n }\n\n public nextTab(event: KeyboardEvent): void {\n if (!event.ctrlKey) return;\n const nextIndex = this.currentCategory ? this.categories.indexOf(this.currentCategory) + 1 : 0;\n if (nextIndex === this.categories.length) return;\n this.currentCategory = this.categories[nextIndex];\n this.onCategoryChanged(this.currentCategory);\n }\n\n public previousTab(event: KeyboardEvent): void {\n if (!event.ctrlKey) return;\n const prevIndex = this.currentCategory ? this.categories.indexOf(this.currentCategory) - 1 : this.categories.length - 1;\n if (prevIndex === -1) return;\n this.currentCategory = this.categories[prevIndex];\n this.onCategoryChanged(this.currentCategory);\n }\n\n private onCancelChanges(): void {\n this.genModalComponent.hide();\n this.userSettingsService.cancel();\n }\n\n private showPlugins(category: IGuid) {\n this.currentOptionPlugins = Array.from(this.allOptionPlugins).filter((item) => (item.exposure.subSection ? item.exposure.subSection.equals(category) : false));\n }\n\n private setCategoryDescriptors() {\n //Subsections determines the fixed order in which the options appears\n this.subSections.set(OptionSubSections.General.toString().toLowerCase(), {\n title: this.translateService.instant('STE_TITLE_OPTIONS_GENERAL') as string,\n });\n\n this.subSections.set(OptionSubSections.Video.toString().toLowerCase(), {\n title: this.translateService.instant('STE_TITLE_OPTIONS_VIDEO') as string,\n description: this.translateService.instant('STE_MESSAGE_INFO_OPTIONS_VIDEO') as string,\n });\n\n this.subSections.set(OptionSubSections.Map.toString().toLowerCase(), {\n title: this.translateService.instant('STE_TITLE_OPTIONS_MAP') as string,\n description: this.translateService.instant('STE_MESSAGE_INFO_OPTIONS_MAP') as string,\n });\n\n this.subSections.set(OptionSubSections.Events.toString().toLowerCase(), {\n title: this.translateService.instant('STE_TITLE_OPTIONS_EVENTS') as string,\n description: this.translateService.instant('STE_MESSAGE_INFO_OPTIONS_EVENTS') as string,\n });\n\n this.subSections.set(OptionSubSections.Peripherals.toString().toLowerCase(), {\n title: this.translateService.instant('STE_TITLE_OPTIONS_PERIPHERALS') as string,\n description: this.translateService.instant('STE_MESSAGE_INFO_OPTIONS_PERIPHERALS') as string,\n });\n\n this.subSections.set(OptionSubSections.Advanced.toString().toLowerCase(), { title: this.translateService.instant('STE_LABEL_ADVANCED_OPTIONS') as string });\n }\n\n private async onAppear(): Promise {\n this.categories = [];\n\n this.allOptionPlugins = await this.pluginService.getPlugins(PluginTypes.Option, null);\n\n const sections: IGuid[] = [];\n this.allOptionPlugins.forEach((plugin) => {\n if (plugin.exposure.subSection) {\n sections.push(plugin.exposure.subSection);\n }\n });\n\n const distinctSections = uniq(sections);\n this.subSections.forEach((category, subSectionID) => {\n if (distinctSections.find((x) => x.toString().toLowerCase() === subSectionID)) {\n this.categories.push({\n id: subSectionID,\n text: category.title ?? '',\n });\n }\n });\n\n await this.userSettingsService.loadSettings();\n\n // if there no desired category yet\n if (!this.desiredCategory) {\n // be sure to select this category\n this.desiredCategory = OptionSubSections.General;\n\n // determine the category to select from the parameters\n this.activatedRoute.queryParams.pipe(untilDestroyed(this)).subscribe((params) => {\n const section = params.section as string;\n if (section) {\n const id = SafeGuid.parse(section);\n if (id) {\n this.desiredCategory = id;\n }\n }\n });\n }\n\n if (this.desiredCategory) {\n this.currentCategory = this.categories.find((x) => x.id === this.desiredCategory?.toString().toLowerCase());\n this.showPlugins(this.desiredCategory);\n }\n\n if (this.currentCategory) {\n this.onCategoryChanged(this.currentCategory);\n }\n }\n\n private onClosed(): void {\n // prevent reentrance\n if (this.isClosing) {\n return;\n }\n\n this.isClosing = true;\n if (this.genModalComponent) {\n this.genModalComponent.hide();\n this.userSettingsService.cancel();\n }\n\n this.isClosing = false;\n }\n\n private async onApplyChanges(): Promise {\n const obs = await this.userSettingsService.apply();\n const prom = new Promise((resolve, reject) => {\n obs.pipe(untilDestroyed(this)).subscribe((success) => {\n if (success) {\n this.genModalComponent.hide();\n resolve(true);\n } else {\n reject(false);\n }\n });\n });\n return prom\n .then((value: boolean) => {\n return value;\n })\n .catch((error: boolean) => {\n return error;\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { MapContentTypes } from '@modules/maps/enumerations/maps-content-types';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { EventsService } from '@modules/shared/services/events/events.service';\nimport { EventMonitoringFeatureFlags } from '@modules/shared/services/events/feature-flags';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { FeatureFlag } from '@modules/feature-flags/feature-flag';\nimport { TilesTaskComponent } from '@modules/tiles/components/tiles-task/tiles-task.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { ShareEntityModalComponent } from '@shared/components/share-entity-modal/share-entity-modal.component';\nimport { SharedCommands } from '@shared/enumerations/shared-commands';\nimport { SharedContentFields } from '@shared/enumerations/shared-content-fields';\nimport {\n CommandBindings,\n CommandDisplay,\n CommandsService,\n COMMANDS_SERVICE,\n ExecuteCommandData,\n FEATURES_SERVICE,\n} from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandArgs, CommandDescriptor } from '@shared/services/commands/command-provider-base';\nimport { EntityCommandContext } from '@shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '@shared/services/commands/entity-command-provider-base';\nimport { LanguageService } from '@shared/services/language/language.service';\nimport { NavigationService } from '@shared/services/navigation/navigation.service';\nimport { stringFormat } from '@shared/utilities/StringFormat';\nimport { OptionsComponent } from '@src/app/components/options/options.component';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IMobileApplicationEntity, MobileApplicationEntityFields } from 'RestClient/Client/Interface/IMobileApplicationEntity';\nimport { IUserEntity, UserEntityFields } from 'RestClient/Client/Interface/IUserEntity';\nimport { MobileApplicationEntity } from 'RestClient/Client/Model/Application/MobileApplicationEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { FullscreenService } from '@modules/shared/services/fullscreen/fullscreen.service';\nimport { take } from 'rxjs/operators';\nimport { SendMessageComponent } from '../components/send-message/send-message.component';\nimport { ShowMessageAction, ShowMessageComponent } from '../components/show-message/show-message.component';\nimport { MailboxEnvelop, MailboxService } from './mailbox.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class GeneralCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(SharedCommands.ShareEntity, {\n id: SharedCommands.ShareEntity,\n nameResourceId: 'STE_BUTTON_SHARE',\n icon: MeltedIcon.Share,\n requirements: this.fillCommandRequirements({\n requiredPrivileges: SafeGuid.createSet([KnownPrivileges.displayEntityInSecurityDeskPrivilege]),\n supportedEntityTypes: new Set([\n EntityTypes.Areas,\n EntityTypes.CustomEntities,\n EntityTypes.IntrusionAreas,\n EntityTypes.TileLayouts,\n EntityTypes.TilePlugins,\n EntityTypes.Zones,\n ]),\n }),\n });\n descriptors.set(SharedCommands.ShowOptions, {\n id: SharedCommands.ShowOptions,\n keyBinding: 'CTRL.O',\n });\n descriptors.set(SharedCommands.DisplayEntities, {\n id: SharedCommands.DisplayEntities,\n });\n descriptors.set(SharedCommands.ShowMessage, {\n id: SharedCommands.ShowMessage,\n });\n descriptors.set(SharedCommands.SendMessage, {\n id: SharedCommands.SendMessage,\n nameResourceId: 'STE_ACTION_SENDMESSAGE',\n icon: MeltedIcon.Message,\n groupIcon: MeltedIcon.Person,\n groupNameResourceId: 'STE_ENTITY_USER',\n requirements: this.fillCommandRequirements({\n requiredPrivileges: SafeGuid.createSet([KnownPrivileges.sendMessagePrivilege]),\n supportedContentTypes: SafeGuid.createSet([MapContentTypes.MobileUser]),\n supportedEntityTypes: new Set([EntityTypes.Users, EntityTypes.UserGroups]),\n }),\n });\n descriptors.set(SharedCommands.ToggleAddToWatchlist, {\n id: SharedCommands.ToggleAddToWatchlist,\n nameResourceId: 'STE_ACTION_ADDTOWATCHLIST',\n icon: MeltedIcon.Monitoring,\n requirements: this.fillCommandRequirements({\n enabledFeatureFlags: new Set([EventMonitoringFeatureFlags.General]),\n }),\n });\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n // Always make sure these commands are added last as they are often generic to all entities\n public get priority(): number {\n return 99;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, UserEntityFields.firstNameField, UserEntityFields.lastNameField, MobileApplicationEntityFields.loggedUserField]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n private modalService: GenModalService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n private navigationService: NavigationService,\n private mailboxService: MailboxService,\n protected advancedSettingsService: AdvancedSettingsService,\n private userWatchlistService: UserWatchlistService,\n private analyticsService: AnalyticsService,\n private eventsService: EventsService,\n private fullscreenService: FullscreenService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isShareEntityAvailable(commandContext, commandArgs)) {\n commandIds.push(SharedCommands.ShareEntity);\n }\n if (await this.isSendMessageAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(SharedCommands.SendMessage);\n }\n if (await this.isToggleAddToWatchlistAvailable(commandContext, commandArgs)) {\n commandIds.push(SharedCommands.ToggleAddToWatchlist);\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: SharedCommands.ShareEntity,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeShareEntity(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isShareEntityAvailable(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: SharedCommands.ShowOptions,\n executeCommandHandler: (executeCommandData) => this.executeOpenOptions(executeCommandData),\n });\n bindings.addCommand({\n commandId: SharedCommands.DisplayEntities,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteCommand((safeExecuteCommandData) => this.executeDisplayEntities(safeExecuteCommandData), executeCommandData),\n });\n bindings.addCommand({\n commandId: SharedCommands.ShowMessage,\n executeCommandHandler: (executeCommandData) => this.safeExecuteCommand((safeExecuteCommandData) => this.executeShowMessage(safeExecuteCommandData), executeCommandData),\n });\n bindings.addCommand({\n commandId: SharedCommands.SendMessage,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeSendMessage(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isSendMessageAvailableAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: SharedCommands.ToggleAddToWatchlist,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeToggleAddToWatchlist(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isToggleAddToWatchlistAvailable(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getToggleAddToWatchlistDisplay(entityCommandContext), commandContext),\n });\n }\n\n private executeDisplayEntities(executeCommandData: ExecuteCommandData): void {\n const args = this.extractArgs(executeCommandData.commandContext);\n if (args.specificData) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const entities = args.specificData.entities as IGuid[] | undefined;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const timestamp = args.specificData.timestamp as Date | undefined;\n\n if (entities && SafeGuid.isGuid(entities[0])) {\n let params = '';\n if (timestamp) {\n params = `&${SharedContentFields.Timestamp}=${timestamp.toString()}`;\n }\n\n if (entities.length === 1) {\n const id = entities[0];\n if (id) {\n const path = `/sidepane?id=${id.toString()}${params}`;\n this.navigationService.navigate(path).fireAndForget();\n }\n } else {\n entities.forEach((id) => {\n if (id) {\n const path = `/task/${TilesTaskComponent.pluginId.toString()}?id=${id.toString()}${params}`;\n this.navigationService.navigate(path).fireAndForget();\n }\n });\n }\n }\n }\n executeCommandData.isHandled = true;\n }\n\n private executeOpenOptions(executeCommandData: ExecuteCommandData): void {\n const args = this.extractArgs(executeCommandData.commandContext);\n const options = this.modalService.open(OptionsComponent);\n\n // apply the arguments if there is any\n if (args.specificData) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const id = args.specificData.section as string;\n if (id) {\n options.setCategory(SafeGuid.parse(id));\n }\n }\n executeCommandData.isHandled = true;\n }\n\n private executeSendMessage(executeCommandData: ExecuteEntityCommandData): void {\n this.sendMessageAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private executeShareEntity(executeCommandData: ExecuteEntityCommandData): void {\n this.executeShareEntityAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeShareEntityAsync(commandContext: EntityCommandContext): Promise {\n const args = this.extractArgs(commandContext);\n let entityId = args.entityId;\n let timestamp: Date | undefined;\n\n if (args.specificData) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const specificEntityId = args.specificData.entityId as IGuid | undefined;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const specificTimestamp = args.specificData.timestamp as Date | undefined;\n\n if (isNonEmptyGuid(specificEntityId)) {\n entityId = specificEntityId;\n }\n if (specificTimestamp instanceof Date) {\n timestamp = specificTimestamp;\n }\n } else if (args.content) {\n if (args.content.parameters?.hasField(SharedContentFields.Timestamp)) {\n timestamp = args.content.parameters.getFieldDate(SharedContentFields.Timestamp);\n }\n\n if (args.content.type.equals(MapContentTypes.MobileUser)) {\n const mobileAppEntity = await this.getEntityAsync(\n MobileApplicationEntity,\n new Set([MobileApplicationEntityFields.loggedUserField]),\n args.entity,\n args.entityId\n );\n if (mobileAppEntity && isNonEmptyGuid(mobileAppEntity.loggedUser)) {\n // Override entityId with loggedUser for privilege checks\n entityId = mobileAppEntity.loggedUser;\n }\n }\n }\n\n this.fullscreenService.displayModal(ShareEntityModalComponent, { entityId, timestamp });\n }\n\n private executeShowMessage(executeCommandData: ExecuteCommandData): void {\n const args = this.extractArgs(executeCommandData.commandContext);\n\n if (args.specificData) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n const title = args.specificData.title as string | undefined;\n const message = args.specificData.message as string | undefined;\n const timeout = args.specificData.timeout as number | undefined;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n if (message) {\n const onClosed = (result: ShowMessageAction) => {\n switch (result) {\n case ShowMessageAction.Timeout:\n {\n const envelop = new MailboxEnvelop();\n envelop.id = SafeGuid.newGuid();\n envelop.icon = MeltedIcon.Message;\n envelop.title = title;\n envelop.summary = message;\n envelop.isRead = false;\n this.mailboxService.add(envelop);\n }\n break;\n }\n };\n\n const actionText = this.translateService.instant('STE_BUTTON_CLOSE') as string;\n ShowMessageComponent.showMessage(this.modalService, title || '', message, onClosed, actionText, undefined, timeout);\n }\n }\n executeCommandData.isHandled = true;\n }\n\n private executeToggleAddToWatchlist(executeCommandData: ExecuteEntityCommandData): void {\n const args = this.extractArgs(executeCommandData.commandContext);\n\n if (args.entityId) {\n if (!this.userWatchlistService.isEntityBeingWatched(args.entityId)) {\n this.userWatchlistService.add([args.entityId]);\n this.analyticsService.logEvent(AnalyticsNames.Shared.EventMonitoring, {\n action: 'Added new monitored entity',\n description: 'New monitored entity has been added from a command',\n context: EventMonitoringContext.WatchlistCommand,\n });\n } else {\n this.userWatchlistService.remove(args.entityId);\n this.analyticsService.logEvent(AnalyticsNames.Shared.EventMonitoring, {\n action: 'Removed monitored entity',\n description: 'Monitored entity has been removed from a command',\n context: EventMonitoringContext.WatchlistCommand,\n });\n }\n }\n\n this.invalidateCommandDisplay(SharedCommands.ToggleAddToWatchlist, executeCommandData.commandContext);\n\n executeCommandData.isHandled = true;\n }\n\n private async isSendMessageAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const args = commandArgs ?? this.extractArgs(commandContext);\n if (args.content?.type.equals(MapContentTypes.MobileUser)) {\n const mobileAppEntity = await this.getEntityAsync(\n MobileApplicationEntity,\n new Set([MobileApplicationEntityFields.loggedUserField]),\n args.entity,\n args.entityId\n );\n if (mobileAppEntity && isNonEmptyGuid(mobileAppEntity.loggedUser)) {\n // Override entityId with loggedUser for privilege checks\n args.entityId = mobileAppEntity.loggedUser;\n }\n }\n return await this.areCommandRequirementsMetAsync(SharedCommands.SendMessage, commandContext);\n }\n\n private async isShareEntityAvailable(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n let commandArgsToUse: CommandArgs | undefined = commandArgs;\n if (!commandArgsToUse) {\n commandArgsToUse = this.extractArgs(commandContext);\n }\n\n return await this.areCommandRequirementsMetAsync(SharedCommands.ShareEntity, commandContext, commandArgsToUse);\n }\n\n private async isToggleAddToWatchlistAvailable(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const args = commandArgs ?? this.extractArgs(commandContext);\n if (!args?.entityId) {\n return false;\n }\n\n const entity = await this.getEntityAsync(Entity, new Set([EntityFields.entityTypeField]), undefined, args.entityId);\n if (!entity) {\n return false;\n }\n\n const supportedEntityTypes = await this.eventsService.supportedEntityTypes$.pipe(take(1)).toPromise();\n\n if (!Array.from(supportedEntityTypes.values()).find((entityType) => entity.entityType === entityType.type)) {\n return false;\n }\n\n return await this.areCommandRequirementsMetAsync(SharedCommands.ToggleAddToWatchlist, commandContext);\n }\n\n private async getToggleAddToWatchlistDisplay(commandContext: EntityCommandContext): Promise {\n const isToggleWatchlistAllowed = await this.isToggleAddToWatchlistAvailable(commandContext);\n const args = this.extractArgs(commandContext);\n\n let displayName = 'STE_ACTION_ADDTOWATCHLIST';\n if (args.entityId && this.userWatchlistService.isEntityBeingWatched(args.entityId)) {\n displayName = 'STE_ACTION_REMOVEFROMWATCHLIST';\n }\n\n const translatedDisplayName = this.translateService?.instant(displayName) as string;\n return { icon: MeltedIcon.Monitoring, name: () => translatedDisplayName, tooltip: () => translatedDisplayName, isAllowed: () => isToggleWatchlistAllowed };\n }\n\n private async sendMessageAsync(commandContext: EntityCommandContext): Promise {\n const args = this.extractArgs(commandContext);\n let recipient: IGuid | undefined;\n let message = '';\n let timeout: number | undefined;\n if (args.content?.type.equals(MapContentTypes.MobileUser)) {\n const mobileAppEntity = await this.getEntityAsync(\n MobileApplicationEntity,\n new Set([MobileApplicationEntityFields.loggedUserField]),\n args.entity,\n args.entityId\n );\n if (mobileAppEntity && isNonEmptyGuid(mobileAppEntity.loggedUser)) {\n // Override entityId with loggedUser for privilege checks\n recipient = mobileAppEntity.loggedUser;\n }\n } else if (args.entityId) {\n recipient = args.entityId;\n } else if (args.specificData) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n const specificRecipient = args.specificData.recipient as IGuid | undefined;\n const specificMessage = args.specificData.message as string | undefined;\n const specificTimeout = args.specificData.timeout as number | undefined;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n if (isNonEmptyGuid(specificRecipient)) {\n recipient = specificRecipient;\n }\n\n if (isString(specificMessage)) {\n message = specificMessage;\n }\n\n if (isNumber(specificTimeout)) {\n timeout = specificTimeout;\n }\n }\n\n if (isNonEmptyGuid(recipient)) {\n const user = await this.getEntityAsync(UserEntity, undefined, undefined, recipient, commandContext.entityCache);\n if (user) {\n // if no message is specified, ask the user\n if (!message) {\n const onClosed = async (result: boolean, msg: string) => {\n if (result && msg) {\n await user.sendMessageAsync(msg, timeout as any);\n }\n };\n\n let fullname = user.name;\n if (user.firstName && user.lastName) {\n fullname = user.firstName + ' ' + user.lastName;\n }\n\n const title = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_SEND_MESSAGE_TO_USER_X') as string, fullname);\n const cancelText = this.translateService.instant('STE_BUTTON_CANCEL') as string;\n SendMessageComponent.show(this.modalService, title, message, onClosed, undefined, cancelText);\n } else {\n await user.sendMessageAsync(message, timeout as any);\n }\n }\n }\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const GeneralCommands = Constants({\n ArmZone: SafeGuid.parse('A78BDC34-3076-4B1A-BDEE-3816DDC92FDA'),\n});\n","import { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { ZoneEntity } from 'RestClient/Client/Model/AccessControl/ZoneEntity';\nimport { IZoneEntity, ZoneEntityFields } from 'RestClient/Client/Interface/IZoneEntity';\nimport { ZoneType } from 'RestClient/Client/Enumerations/ZoneType';\nimport { ZoneArmingState } from 'RestClient/Client/Enumerations/ZoneArmingState';\nimport { ZoneState } from 'RestClient/Client/Enumerations/ZoneState';\nimport { AccessControlUnitEntity } from 'RestClient/Client/Model/AccessControl/AccessControlUnitEntity';\nimport { IAccessControlUnitEntity } from 'RestClient/Client/Interface/IAccessControlUnitEntity';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { GeneralCommands } from '../enumerations/general-commands';\nimport { ZoneContentTypes } from '../enumerations/zone-content-types';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport {\n CommandBindings,\n CommandsService,\n COMMANDS_SERVICE,\n CommandDisplay,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '../../shared/services/language/language.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class ZoneCommandProvider extends EntityCommandProviderBase {\n public get requiredEntityFields(): Set {\n return new Set([\n ...super.requiredEntityFields,\n ZoneEntityFields.armingStateField,\n ZoneEntityFields.zoneStateField,\n ZoneEntityFields.accessControlUnitField,\n ZoneEntityFields.maintenanceField,\n ZoneEntityFields.zoneTypeField,\n ]);\n }\n\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(\n GeneralCommands.ArmZone,\n this.createZoneCommandDescriptor(\n GeneralCommands.ArmZone,\n 'STE_BUTTON_ARMZONE',\n MeltedIcon.Lock,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.armDisarmZonesPrivilege]) })\n )\n );\n\n this.internalCommandDescriptors = descriptors;\n }\n\n return this.internalCommandDescriptors;\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isArmZoneAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(GeneralCommands.ArmZone);\n this.configureArmZoneInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: GeneralCommands.ArmZone,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeArmZone(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isArmZoneAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canArmZoneAsync(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getArmZoneDisplayAsync(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = SafeGuid.createSet([ZoneContentTypes.Zone]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Zones]);\n }\n\n return super.fillCommandRequirements(requirements);\n }\n\n private async armZoneAsync(commandContext: EntityCommandContext): Promise {\n const zone = await this.extractZoneEntity(commandContext);\n if (zone && (zone.zoneType === ZoneType.Software || zone.zoneType === ZoneType.IO)) {\n if (zone.armingState === ZoneArmingState.Armed) {\n await zone.disarmZoneAsync();\n } else if (zone.armingState === ZoneArmingState.Disarmed) {\n if (zone.zoneState === ZoneState.Active || zone.zoneState === ZoneState.Trouble) {\n // TODO YN: warn user\n // STE_MESSAGE_ARM_ZONE_WITH_ACTIVE_TROUBLE_INPUT\n // continue or not question\n }\n await zone.armZoneAsync();\n }\n }\n }\n\n private async canArmZoneAsync(commandContext: EntityCommandContext): Promise {\n let validState = false;\n const zoneEntity = await this.extractZoneEntity(commandContext);\n if (zoneEntity) {\n if (zoneEntity.zoneType === ZoneType.Software) {\n validState = true;\n } else if (zoneEntity.zoneType === ZoneType.IO && !zoneEntity.maintenance && (await this.canIOZoneManuallyArmOrDisarmAsync(zoneEntity))) {\n // We can also arm a IO zone manually if not in maintenance and master unit is online\n validState = true;\n }\n }\n return validState;\n }\n\n private async canIOZoneManuallyArmOrDisarmAsync(zoneEntity: IZoneEntity): Promise {\n if (!zoneEntity) {\n return false;\n }\n\n // Do not assume that zone.Running is a valid assumption about the Zone ability to be manually Armed or Disarmed\n // A zone not running could be a zone with all its inputs offline, but its master unit AND its outputs could be running\n // and still able to receive arm or disarm actions\n if (zoneEntity.accessControlUnit.isEmpty()) {\n return false;\n }\n\n const unit = await this.getEntityAsync(AccessControlUnitEntity, undefined, undefined, zoneEntity.accessControlUnit);\n if (!unit) {\n return false;\n }\n return true;\n }\n\n private async configureArmZoneInvalidateCanExecuteAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const zoneEntity = await this.extractZoneEntity(commandContext);\n if (zoneEntity) {\n commandContext.entityCache\n .detectFieldChangeAsync(zoneEntity, () => zoneEntity.armingState, ((entity1: IZoneEntity, newValue: string, oldValue: string) => {\n commandContext.invalidateCanExecute(GeneralCommands.ArmZone);\n commandContext.invalidateDisplay(GeneralCommands.ArmZone);\n return new Deferred(true).promise;\n }) as modificationHandlerField)\n .fireAndForget();\n }\n }\n }\n\n private createZoneCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: EntityCommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_ENTITY_ZONE',\n groupIcon: MeltedIcon.Perimeter,\n requirements,\n keyBinding,\n };\n }\n\n private executeArmZone(executeCommandData: ExecuteEntityCommandData): void {\n this.armZoneAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async extractZoneEntity(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return this.extractEntityAsync(ZoneEntity, commandContext, commandArgs);\n }\n\n private async getArmZoneDisplayAsync(commandContext: EntityCommandContext): Promise {\n const zoneEntity = await this.extractZoneEntity(commandContext);\n if (zoneEntity) {\n if (zoneEntity.armingState === ZoneArmingState.Armed) {\n return { name: () => this.translateService?.instant('STE_BUTTON_DISARMZONE') as string, icon: MeltedIcon.Unlock };\n } else {\n return { name: () => this.translateService?.instant('STE_BUTTON_ARMZONE') as string, icon: MeltedIcon.Lock };\n }\n }\n }\n\n private async isArmZoneAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(GeneralCommands.ArmZone, commandContext, commandArgs);\n }\n\n //#endregion\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'limitTo',\n})\n@Injectable()\nexport class LimitToPipe implements PipeTransform {\n public readonly DEFAULT_TRAIL = '+';\n\n public transform(value: number, limit: number, trail: string = this.DEFAULT_TRAIL): string {\n return value > limit ? `${limit}${trail}` : `${value}`;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { ButtonFlavor, Icon } from '@genetec/gelato';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { EventMonitoringFeatureFlags } from '@modules/shared/services/events/feature-flags';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { UserWatchlistRequestService } from '@modules/shared/services/watchlist/user-watchlist-request.service';\nimport { EventsMonitoringService } from '@modules/general/services/Events/events-monitoring.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'app-watchlist-tray',\n templateUrl: './watchlist-tray.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalPluginDescriptor({\n type: WatchlistTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: WatchlistTrayComponent.pluginId },\n isSupported: () => true,\n requirements: { enabledFeatureFlags: [EventMonitoringFeatureFlags.General] },\n})\nexport class WatchlistTrayComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('4321759f-e237-43b9-a35c-ed8cbf3ba22a');\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public missedEvents = 0;\n public maxEventsCount = 0;\n\n constructor(\n trackingService: TrackingService,\n private eventsMonitoringService: EventsMonitoringService,\n private userWatchlistRequestService: UserWatchlistRequestService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(trackingService);\n this.maxEventsCount = this.eventsMonitoringService.MAX_EVENTS_COUNT;\n }\n\n public ngOnInit() {\n this.eventsMonitoringService.missedEventsCount$.pipe(untilDestroyed(this)).subscribe((missedEventsCount) => {\n this.missedEvents = missedEventsCount;\n\n // Tell Angular our component has been modified.\n // showWatchList() indirectly triggers a new missedEventsCount$ value after our lifecycle, and the UI has to be updated to re-render.\n this.changeDetectorRef.detectChanges();\n });\n }\n\n /**\n * Fetch and open the watch list in the side pane if closed; else close the side pane\n */\n public async showWatchList(): Promise {\n await this.userWatchlistRequestService.toggleShowWatchListAsync();\n }\n}\n","\n \n {{ missedEvents | limitTo: maxEventsCount }}\n\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const KnownCustomHeaderIds = Constants({\n WatchlistCustomHeaderId: SafeGuid.parse('A2853EED-581C-47D0-A7AB-9B13B660F3E1'),\n});\n","
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n \n {{ headerTitle }}\n \n
    \n 0\" id=\"monitored-entities-tooltip-trigger\" flavor=\"flat\" (click)=\"enterEditMode()\">\n {{ monitoredEntitiesButtonLabel }}\n \n
    \n
    \n \n
    \n
    \n
    \n\n 0\" position=\"bottom\" targetSelector=\"#monitored-entities-tooltip-trigger\">\n
    \n \n \n {{ monitoredEntity.name }}\n \n
    \n
    \n\n\n \n {{ 'STE_MENU_ITEM_EVENT_OPTIONS' | translate }}\n \n \n {{ 'STE_MENU_ITEM_MARK_ALL_AS_READ' | translate }}\n \n \n {{ 'STE_MENU_ITEM_DISMISS_ALL' | translate }}\n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { CommandContext, COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { OptionSubSections, PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { EventMonitoringFeatureFlags } from '@modules/shared/services/events/feature-flags';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { UserWatchlistService } from '@modules/shared/services/watchlist/user-watchlist.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { IconsService } from '@modules/shared/services/icons.service';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { WatchlistEntry } from '@modules/shared/api/api';\nimport { from, Observable, of } from 'rxjs';\nimport { KnownCustomHeaderIds } from '@modules/shared/enumerations/side-pane-custom-headers';\nimport { UserWatchlistRequestService } from '@modules/shared/services/watchlist/user-watchlist-request.service';\nimport { EventMonitoringContext } from '@modules/shared/enumerations/analytics-event-monitoring-context';\nimport { EventMonitoringLoggerService } from '@modules/shared/services/analytics/event-monitoring-logger.service';\nimport { map, switchMap } from 'rxjs/operators';\nimport { EventsMonitoringService } from '@modules/general/services/Events/events-monitoring.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\ninterface MonitoredEntity {\n icon: string;\n name: string;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-watchlist-sidepane-header',\n templateUrl: './watchlist-sidepane-header.component.html',\n styleUrls: ['./watchlist-sidepane-header.component.scss'],\n})\n@InternalPluginDescriptor({\n type: WatchlistSidepaneHeaderComponent,\n pluginTypes: [PluginTypes.SidePaneHeader],\n exposure: {\n id: WatchlistSidepaneHeaderComponent.pluginId,\n subSection: KnownCustomHeaderIds.WatchlistCustomHeaderId,\n },\n isSupported: () => true,\n requirements: { enabledFeatureFlags: [EventMonitoringFeatureFlags.General] },\n})\nexport class WatchlistSidepaneHeaderComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('A2853EED-581C-47D0-A7AB-9B13B660F3E1');\n public monitoredEntities: MonitoredEntity[] = [];\n public isLoading = false;\n public isMenuOpened = false;\n public headerTitle = '';\n public monitoredEntitiesButtonLabel = '';\n public hasEvents$: Observable;\n public hasUnreadEvents$: Observable;\n\n constructor(\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n trackingService: TrackingService,\n private translateService: TranslateService,\n private userWatchlistService: UserWatchlistService,\n private securityCenterClientService: SecurityCenterClientService,\n private iconsService: IconsService,\n private eventsMonitoringService: EventsMonitoringService,\n private userWatchlistRequestService: UserWatchlistRequestService,\n private eventMonitoringLoggerService: EventMonitoringLoggerService\n ) {\n super(trackingService);\n this.hasEvents$ = eventsMonitoringService.receivedEvents$.pipe(map((events) => events.length > 0));\n this.hasUnreadEvents$ = eventsMonitoringService.receivedEvents$.pipe(map((events) => events.filter((event) => event.isNew).length > 0));\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.fetchMonitoredEntities();\n this.updateHeaderLabels();\n }\n\n public toggleMenu(forceClose: boolean = false): void {\n if (forceClose && this.isMenuOpened) this.isMenuOpened = false;\n else {\n this.isMenuOpened = !this.isMenuOpened;\n this.eventMonitoringLoggerService.logEvent(\n 'Watchlist header menu toggled',\n 'Watchlist header menu has been toggled',\n EventMonitoringContext.Watchlist,\n this.isMenuOpened ? 'Opened' : 'Closed'\n );\n }\n }\n\n public async enterEditMode(): Promise {\n await this.userWatchlistRequestService.showWatchlistEditorAsync();\n this.eventMonitoringLoggerService.logEvent('Opened edit watchlist', 'Opened edit watchlist from the watchlist header', EventMonitoringContext.Watchlist);\n }\n\n public openEventOptions(): void {\n this.commandsService.executeCommand(SharedCommands.ShowOptions, { type: ContextTypes.Specific, data: { section: OptionSubSections.Events } } as CommandContext);\n this.eventMonitoringLoggerService.logEvent('Opened event options', 'Opened event options from the watchlist header', EventMonitoringContext.Watchlist);\n }\n\n public markAllAsRead(): void {\n this.eventsMonitoringService.markAllAsRead();\n }\n\n public dismissAllEvents(): void {\n this.eventsMonitoringService.dismissAllEvents();\n this.eventMonitoringLoggerService.logEvent('Dismissed all events', 'Dismissed all events from the watchlist header', EventMonitoringContext.Watchlist);\n }\n\n private fetchMonitoredEntities(): void {\n this.isLoading = true;\n this.userWatchlistService.watchlist$\n .pipe(\n switchMap((watchlist) => (watchlist ? from(this.setMonitoredEntities(watchlist.entries)) : of(null))),\n untilDestroyed(this)\n )\n .subscribe(() => (this.isLoading = false));\n }\n\n private async setMonitoredEntities(entries: WatchlistEntry[]): Promise {\n if (this.monitoredEntities.length > 0) {\n this.monitoredEntities = [];\n }\n\n const scClient = this.securityCenterClientService?.scClient;\n\n if (!scClient || entries.length === 0) {\n this.updateHeaderLabels();\n return;\n }\n\n const monitoredEntitiesQuery = new EntityQuery();\n entries.forEach((userWatchlistItem) => {\n monitoredEntitiesQuery.guids.add(userWatchlistItem.entityId);\n });\n\n const entities = await scClient.getEntitiesAsync(Entity, monitoredEntitiesQuery);\n for (const entity of entities) {\n const icon = this.iconsService.getEntityIcon(entity);\n this.monitoredEntities.push({ icon: icon.toString(), name: entity.name } as MonitoredEntity);\n }\n\n this.updateHeaderLabels();\n }\n\n private updateHeaderLabels(): void {\n // Update header title\n this.headerTitle =\n (this.translateService.instant('STE_LABEL_WATCH_LIST') as string) +\n ' - ' +\n (this.monitoredEntities.length === 0 ? (this.translateService.instant('STE_LABEL_EMPTY') as string) : '');\n\n // Update monitored entities button label\n if (this.monitoredEntities.length === 1) {\n this.monitoredEntitiesButtonLabel = this.translateService.instant('STE_LABEL_SINGLE_ENTITYSELECTION') as string;\n } else {\n this.monitoredEntitiesButtonLabel = stringFormat(this.translateService.instant('STE_LABEL_N_ENTITIESSELECTED') as string, this.monitoredEntities.length.toString());\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { ZoneContentTypes } from '@modules/general/enumerations/zone-content-types';\nimport { IZoneEntity, ZoneEntityFields } from 'RestClient/Client/Interface/IZoneEntity';\nimport { ZoneEntity } from 'RestClient/Client/Model/AccessControl/ZoneEntity';\nimport { Observable, Subject } from 'rxjs';\n\nexport const isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n if (content?.type?.equals(ZoneContentTypes.Zone) && pluginType.equals(PluginTypes.Tile)) {\n // only display the zone controls in tiles if we don't have anything else to display\n return !content.parameters?.getField('HasAttachedData');\n }\n return false;\n};\n\n@Component({\n selector: 'app-zone-state',\n templateUrl: './zone-state.component.html',\n styleUrls: ['./zone-state.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ZoneStateComponent,\n pluginTypes: [PluginTypes.Tile],\n exposure: { id: ZoneStateComponent.pluginId, priority: 0 },\n isContentSupported,\n})\nexport class ZoneStateComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('E638751E-BA7E-4FBE-BA4C-5A98B1D8BCDC');\n public content?: Content;\n public dataContext: unknown;\n public zoneEntityId?: string;\n public zone$: Observable;\n public readonly parameterIcon = Icon.Perimeter;\n private entityCacheTask!: IEntityCacheTask;\n\n private scClient: WebAppClient | null = null;\n\n private zoneSubject = new Subject();\n\n constructor(private securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(trackingService);\n this.zone$ = this.zoneSubject.asObservable();\n }\n\n public async ngOnInit(): Promise {\n super.ngOnInit();\n await this.initializeEntityCache();\n }\n\n public async ngOnDestroy(): Promise {\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n this.zoneEntityId = content.source;\n }\n\n private async initializeEntityCache() {\n this.scClient = this.securityCenterClientService?.scClient;\n if (this.scClient) {\n this.entityCacheTask = this.scClient.buildEntityCache([ZoneEntityFields.customIconIdField]);\n\n if (this.entityCacheTask && this.content) {\n this.zoneSubject.next(await this.entityCacheTask.getEntityAsync(ZoneEntity, SafeGuid.parse(this.content.source), true));\n }\n }\n }\n}\n","
    \n \n \n \n
    \n","import { Component } from '@angular/core';\nimport { FilterTypes } from 'src/app/modules/shared/enumerations/filter-types';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { FilterPluginBaseComponent } from './filter-plugin-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n template: ``,\n})\n@InternalPluginDescriptor({\n type: FilterPluginSearchComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginSearchComponent.pluginId,\n subSection: FilterTypes.Search,\n },\n isSupported: () => true,\n})\nexport class FilterPluginSearchComponent extends FilterPluginBaseComponent {\n public static pluginId = SafeGuid.parse('9C951DCE-3A59-45B6-B1D7-71711221CAA2');\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginSearchComponent.pluginId);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { FeatureFlagsModule } from '@modules/feature-flags/feature-flags.module';\nimport { ActionType } from 'RestClient/Client/Enumerations/ActionTypes';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { GetBaseUriForCodeGen } from '@src/app/utilities/base-uri-getter';\nimport { ModuleDescriptor } from '../shared/interfaces/modules/public/module-public.interface';\nimport { ActionsService } from '../shared/services/actions/actions.service';\nimport { SharedModule } from '../shared/shared.module';\nimport { ExportVideoTrayComponent } from '../video/components/export-video-tray/export-video-tray.component';\nimport { DisplayEntitiesActionHandler } from './actions/display-entities-actionhandler';\nimport { PlaySoundActionHandler } from './actions/play-sound-actionhandler';\nimport { SendMessageActionHandler } from './actions/send-message-actionhandler';\nimport { AnalyticsClient, baseUrl } from './api/api';\nimport { AboutComponent } from './components/about/about.component';\nimport { ActionsTrayComponent } from './components/actions-tray/actions-tray.component';\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\nimport { ChangePasswordNotificationComponent } from './components/change-password/notification/change-password-notification.component';\nimport { EntityStateOverlayComponent } from './components/entity-state-overlay/entity-state-overlay.component';\nimport { FilterPluginDateComponent } from './components/filter-plugins/filter-plugin-date.component';\nimport { FilterPluginEntityComponent } from './components/filter-plugins/filter-plugin-entity.component';\nimport { FilterPluginEnumComponent } from './components/filter-plugins/filter-plugin-enum.component';\nimport { FilterPluginNumericRangeComponent } from './components/filter-plugins/filter-plugin-numeric-range.component';\nimport { FilterPluginTextComponent } from './components/filter-plugins/filter-plugin-text.component';\nimport { FilterPluginTreeViewComponent } from './components/filter-plugins/filter-plugin-tree-view.component';\nimport { MailboxTrayComponent } from './components/mailbox-tray/mailbox-tray.component';\nimport { MobileUserActionsWidgetComponent } from './components/mobile-user/mobile-user-actions-widget/mobile-user-actions-widget.component';\nimport { MobileUserWidgetComponent } from './components/mobile-user/mobile-user-widget/mobile-user-widget.component';\nimport { EventsOptionTreeComponent } from './components/options/events-option/events-option-tree/events-option-tree.component';\nimport { EventsOptionComponent } from './components/options/events-option/events-option.component';\nimport { JoystickOptionsComponent } from './components/options/joystick-options/joystick-options.component';\nimport { LanguageTimeOptionsComponent } from './components/options/language-time-options/language-time-options.component';\nimport { MapOptionsComponent } from './components/options/maps-options/maps-options.component';\nimport { TilesOptionsComponent } from './components/options/tiles-options/tiles-options.component';\nimport { VideoOptionsComponent } from './components/options/video-options/video-options.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { PropertiesWidgetComponent } from './components/properties-widget/properties-widget.component';\nimport { SendMessageComponent } from './components/send-message/send-message.component';\nimport { ShowMessageComponent } from './components/show-message/show-message.component';\nimport { ZoneEntityStateComponent } from './components/zone/tile/zone-entity-state/zone-entity-state.component';\nimport { ZoneActionComponent } from './components/zone/zone-action/zone-action.component';\nimport { ZoneEventWidgetComponent } from './components/zone/zone-event-widget/zone-event-widget.component';\nimport { ZoneEventsWidgetComponent } from './components/zone/zone-events-widget/zone-events-widget.component';\nimport { AreaBrowserItemModel } from './entity-browser/items/area-browser-item-model';\nimport { GeneralCommandProvider } from './services/general-command-provider';\nimport { JoystickService } from './services/joystick.service';\nimport { GamepadEventListenerService } from './services/gamepad-event-listener.service';\nimport { MailboxService } from './services/mailbox.service';\nimport { ZoneCommandProvider } from './services/zone-command-provider';\nimport { JoystickSelectionComponent } from './components/options/joystick-options/joystick-selection/joystick-selection.component';\nimport { WatchlistTrayComponent } from './components/watchlist-tray/watchlist-tray.component';\nimport { InsufficientPrivilegesComponent } from './components/options/components/insufficient-privileges/insufficient-privileges.component';\nimport { WatchlistSidepaneHeaderComponent } from './components/sidepane/watchlist-sidepane-header/watchlist-sidepane-header.component';\nimport { GeneralFeatureFlags } from './feature-flags';\nimport { SendFeedbackComponent } from './components/send-feedback/send-feedback.component';\nimport { SendFeedbackSuccessComponent } from './components/send-feedback/success-component/send-feedback-success.component';\nimport { LimitToPipe } from './pipes/limit-to.pipe';\nimport { ZoneStateComponent } from './components/zone/tile/zone-state/zone-state.component';\nimport { FilterPluginSearchComponent } from './components/filter-plugins/filter-plugin-search.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n declarations: [\n LanguageTimeOptionsComponent,\n VideoOptionsComponent,\n EventsOptionComponent,\n JoystickOptionsComponent,\n ActionsTrayComponent,\n ExportVideoTrayComponent,\n MailboxTrayComponent,\n ProfileComponent,\n PropertiesWidgetComponent,\n SendMessageComponent,\n ShowMessageComponent,\n MobileUserWidgetComponent,\n MobileUserActionsWidgetComponent,\n ZoneActionComponent,\n AboutComponent,\n ZoneEventsWidgetComponent,\n ZoneEventWidgetComponent,\n ChangePasswordComponent,\n FilterPluginTreeViewComponent,\n FilterPluginNumericRangeComponent,\n FilterPluginEntityComponent,\n FilterPluginDateComponent,\n FilterPluginEnumComponent,\n FilterPluginTextComponent,\n FilterPluginSearchComponent,\n ChangePasswordNotificationComponent,\n MapOptionsComponent,\n EventsOptionTreeComponent,\n EntityStateOverlayComponent,\n TilesOptionsComponent,\n ZoneEntityStateComponent,\n JoystickSelectionComponent,\n WatchlistTrayComponent,\n InsufficientPrivilegesComponent,\n WatchlistSidepaneHeaderComponent,\n SendFeedbackComponent,\n SendFeedbackSuccessComponent,\n LimitToPipe,\n ZoneStateComponent,\n ],\n imports: [CommonModule, GenAngularModule, SharedModule, PlatformModule, ReactiveFormsModule, FeatureFlagsModule.forRoot(GeneralFeatureFlags)],\n exports: [\n ProfileComponent,\n EntityStateOverlayComponent,\n FilterPluginTreeViewComponent,\n FilterPluginNumericRangeComponent,\n FilterPluginEntityComponent,\n FilterPluginDateComponent,\n FilterPluginEnumComponent,\n FilterPluginTextComponent,\n FilterPluginSearchComponent,\n LimitToPipe,\n ],\n providers: [\n DisplayEntitiesActionHandler,\n PlaySoundActionHandler,\n SendMessageActionHandler,\n JoystickService,\n GamepadEventListenerService,\n MailboxService,\n GeneralCommandProvider,\n ZoneCommandProvider,\n AnalyticsClient,\n { provide: baseUrl, deps: [], useFactory: GetBaseUriForCodeGen },\n ],\n})\n@ModuleDescriptor({\n type: GeneralModule,\n inclusions: {\n globalPrivileges: [KnownPrivileges.changeOwnPasswordPrivilege],\n },\n})\nexport class GeneralModule {\n public static references = [AreaBrowserItemModel];\n\n constructor(\n injector: Injector,\n actionsService: ActionsService,\n mailboxService: MailboxService, //Do not remove\n generalCommandProvider: GeneralCommandProvider, //Do not remove\n zoneCommandProvider: ZoneCommandProvider //Do not remove\n ) {\n // register action handlers\n const displayEntitiesHandler = injector.get(DisplayEntitiesActionHandler);\n if (displayEntitiesHandler) {\n actionsService.registerHandler(ActionType.DisplayEntity, displayEntitiesHandler);\n }\n const playSoundHandler = injector.get(PlaySoundActionHandler);\n if (playSoundHandler) {\n actionsService.registerHandler(ActionType.PlaySound, playSoundHandler);\n }\n const sendMessageHandler = injector.get(SendMessageActionHandler);\n if (sendMessageHandler) {\n actionsService.registerHandler(ActionType.SendMessage, sendMessageHandler);\n }\n }\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface ICardholderManagementClient {\n /**\n * @return Success\n */\n search(body: SearchRequest): Observable;\n /**\n * @param body (optional) \n * @return Success\n */\n update(body?: Cardholder | undefined): Observable;\n /**\n * @param body (optional) \n * @return Success\n */\n add(body?: Cardholder | undefined): Observable;\n /**\n * @return Success\n */\n delete(cardholderId: IGuid): Observable;\n /**\n * @return Success\n */\n getReportDescriptor(): Observable;\n /**\n * @param body (optional) \n * @return Success\n */\n getExtendedCardholdersInformation(body?: ReportExtendedSearchRequest | undefined): Observable;\n}\n\n@Injectable()\nexport class CardholderManagementClient implements ICardholderManagementClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n search(body: SearchRequest): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement/Search\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processSearch(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processSearch(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSearch(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportResult.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n update(body?: Cardholder | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement/Update\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processUpdate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processUpdate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n let resultData409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result409 = resultData409 !== undefined ? resultData409 : null;\n \n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n add(body?: Cardholder | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processAdd(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processAdd(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAdd(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n \n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n let resultData409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result409 = resultData409 !== undefined ? resultData409 : null;\n \n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n delete(cardholderId: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement/Delete?\";\n if (cardholderId === undefined || cardholderId === null)\n throw new Error(\"The parameter 'cardholderId' must be defined and cannot be null.\");\n else\n url_ += \"cardholderId=\" + encodeURIComponent(\"\" + cardholderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processDelete(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processDelete(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDelete(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportDescriptor.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getReportDescriptor(): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement/ReportDescriptor\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetReportDescriptor(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetReportDescriptor(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetReportDescriptor(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportDescriptor.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getExtendedCardholdersInformation(body?: ReportExtendedSearchRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/CardholderManagement/ExtendedCardholdersInformation\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetExtendedCardholdersInformation(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetExtendedCardholdersInformation(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetExtendedCardholdersInformation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportExtendedSearchResult.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ICredentialsClient {\n /**\n * @return Success\n */\n getCardFormats(): Observable;\n}\n\n@Injectable()\nexport class CredentialsClient implements ICredentialsClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n getCardFormats(): Observable {\n let url_ = this.baseUrl + \"/Api/Credentials/CardFormats\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetCardFormats(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetCardFormats(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCardFormats(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CardFormatModel.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class CardFormatModel implements ICardFormatModel {\n isDefault?: boolean;\n id?: IGuid;\n name?: string | null;\n formatLength?: number;\n formatType?: string | null;\n codeFormatString?: string | null;\n description?: string | null;\n version?: string | null;\n formatFieldDefinitions?: FormatFieldDefinition[] | null;\n parityChecks?: ParityCheck[] | null;\n\n constructor(data?: ICardFormatModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.isDefault = _data[\"isDefault\"] !== undefined ? _data[\"isDefault\"] : null;\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.formatLength = _data[\"formatLength\"] !== undefined ? _data[\"formatLength\"] : null;\n this.formatType = _data[\"formatType\"] !== undefined ? _data[\"formatType\"] : null;\n this.codeFormatString = _data[\"codeFormatString\"] !== undefined ? _data[\"codeFormatString\"] : null;\n this.description = _data[\"description\"] !== undefined ? _data[\"description\"] : null;\n this.version = _data[\"version\"] !== undefined ? _data[\"version\"] : null;\n if (Array.isArray(_data[\"formatFieldDefinitions\"])) {\n this.formatFieldDefinitions = [] as any;\n for (let item of _data[\"formatFieldDefinitions\"])\n this.formatFieldDefinitions!.push(FormatFieldDefinition.fromJS(item));\n }\n else { \n this.formatFieldDefinitions = null;\n }\n if (Array.isArray(_data[\"parityChecks\"])) {\n this.parityChecks = [] as any;\n for (let item of _data[\"parityChecks\"])\n this.parityChecks!.push(ParityCheck.fromJS(item));\n }\n else { \n this.parityChecks = null;\n }\n }\n }\n\n static fromJS(data: any): CardFormatModel {\n data = typeof data === 'object' ? data : {};\n let result = new CardFormatModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"isDefault\"] = this.isDefault !== undefined ? this.isDefault : null;\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"formatLength\"] = this.formatLength !== undefined ? this.formatLength : null;\n data[\"formatType\"] = this.formatType !== undefined ? this.formatType : null;\n data[\"codeFormatString\"] = this.codeFormatString !== undefined ? this.codeFormatString : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n data[\"version\"] = this.version !== undefined ? this.version : null;\n if (Array.isArray(this.formatFieldDefinitions)) {\n data[\"formatFieldDefinitions\"] = [];\n for (let item of this.formatFieldDefinitions)\n data[\"formatFieldDefinitions\"].push(item.toJSON());\n }\n if (Array.isArray(this.parityChecks)) {\n data[\"parityChecks\"] = [];\n for (let item of this.parityChecks)\n data[\"parityChecks\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): CardFormatModel {\n const json = this.toJSON();\n let result = new CardFormatModel();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICardFormatModel {\n isDefault?: boolean;\n id?: IGuid;\n name?: string | null;\n formatLength?: number;\n formatType?: string | null;\n codeFormatString?: string | null;\n description?: string | null;\n version?: string | null;\n formatFieldDefinitions?: FormatFieldDefinition[] | null;\n parityChecks?: ParityCheck[] | null;\n}\n\nexport class Cardholder implements ICardholder {\n id!: IGuid;\n firstName?: string | null;\n lastName?: string | null;\n emailAddress?: string | null;\n picture?: string | null;\n mobilePhoneNumber?: string | null;\n activation?: string;\n expiration?: string;\n expirationMode?: string | null;\n expirationDuration?: number;\n status?: string | null;\n useExtendedGrantTime?: boolean;\n canEscortVisitors?: boolean;\n displayName!: string;\n description?: string | null;\n logicalId?: number | null;\n bypassAntipassback?: boolean;\n securityClearance?: number;\n partition?: IGuid[] | null;\n cardholderGroups?: IGuid[] | null;\n credentials?: IGuid[] | null;\n newCredentials?: Credential[] | null;\n accessRules?: IGuid[] | null;\n inheritAccessPermissionLevelFromGroup?: boolean;\n antipassbackExemptionIsInherited?: boolean;\n\n constructor(data?: ICardholder) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.firstName = _data[\"firstName\"] !== undefined ? _data[\"firstName\"] : null;\n this.lastName = _data[\"lastName\"] !== undefined ? _data[\"lastName\"] : null;\n this.emailAddress = _data[\"emailAddress\"] !== undefined ? _data[\"emailAddress\"] : null;\n this.picture = _data[\"picture\"] !== undefined ? _data[\"picture\"] : null;\n this.mobilePhoneNumber = _data[\"mobilePhoneNumber\"] !== undefined ? _data[\"mobilePhoneNumber\"] : null;\n this.activation = _data[\"activation\"] !== undefined ? _data[\"activation\"] : null;\n this.expiration = _data[\"expiration\"] !== undefined ? _data[\"expiration\"] : null;\n this.expirationMode = _data[\"expirationMode\"] !== undefined ? _data[\"expirationMode\"] : null;\n this.expirationDuration = _data[\"expirationDuration\"] !== undefined ? _data[\"expirationDuration\"] : null;\n this.status = _data[\"status\"] !== undefined ? _data[\"status\"] : null;\n this.useExtendedGrantTime = _data[\"useExtendedGrantTime\"] !== undefined ? _data[\"useExtendedGrantTime\"] : null;\n this.canEscortVisitors = _data[\"canEscortVisitors\"] !== undefined ? _data[\"canEscortVisitors\"] : null;\n this.displayName = _data[\"displayName\"] !== undefined ? _data[\"displayName\"] : null;\n this.description = _data[\"description\"] !== undefined ? _data[\"description\"] : null;\n this.logicalId = _data[\"logicalId\"] !== undefined ? _data[\"logicalId\"] : null;\n this.bypassAntipassback = _data[\"bypassAntipassback\"] !== undefined ? _data[\"bypassAntipassback\"] : null;\n this.securityClearance = _data[\"securityClearance\"] !== undefined ? _data[\"securityClearance\"] : null;\n if (Array.isArray(_data[\"partition\"])) {\n this.partition = [] as any;\n for (let item of _data[\"partition\"])\n this.partition!.push(_guidConverters.toGuid(item));\n }\n else { \n this.partition = null;\n }\n if (Array.isArray(_data[\"cardholderGroups\"])) {\n this.cardholderGroups = [] as any;\n for (let item of _data[\"cardholderGroups\"])\n this.cardholderGroups!.push(_guidConverters.toGuid(item));\n }\n else { \n this.cardholderGroups = null;\n }\n if (Array.isArray(_data[\"credentials\"])) {\n this.credentials = [] as any;\n for (let item of _data[\"credentials\"])\n this.credentials!.push(_guidConverters.toGuid(item));\n }\n else { \n this.credentials = null;\n }\n if (Array.isArray(_data[\"newCredentials\"])) {\n this.newCredentials = [] as any;\n for (let item of _data[\"newCredentials\"])\n this.newCredentials!.push(Credential.fromJS(item));\n }\n else { \n this.newCredentials = null;\n }\n if (Array.isArray(_data[\"accessRules\"])) {\n this.accessRules = [] as any;\n for (let item of _data[\"accessRules\"])\n this.accessRules!.push(_guidConverters.toGuid(item));\n }\n else { \n this.accessRules = null;\n }\n this.inheritAccessPermissionLevelFromGroup = _data[\"inheritAccessPermissionLevelFromGroup\"] !== undefined ? _data[\"inheritAccessPermissionLevelFromGroup\"] : null;\n this.antipassbackExemptionIsInherited = _data[\"antipassbackExemptionIsInherited\"] !== undefined ? _data[\"antipassbackExemptionIsInherited\"] : null;\n }\n }\n\n static fromJS(data: any): Cardholder {\n data = typeof data === 'object' ? data : {};\n let result = new Cardholder();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"firstName\"] = this.firstName !== undefined ? this.firstName : null;\n data[\"lastName\"] = this.lastName !== undefined ? this.lastName : null;\n data[\"emailAddress\"] = this.emailAddress !== undefined ? this.emailAddress : null;\n data[\"picture\"] = this.picture !== undefined ? this.picture : null;\n data[\"mobilePhoneNumber\"] = this.mobilePhoneNumber !== undefined ? this.mobilePhoneNumber : null;\n data[\"activation\"] = this.activation !== undefined ? this.activation : null;\n data[\"expiration\"] = this.expiration !== undefined ? this.expiration : null;\n data[\"expirationMode\"] = this.expirationMode !== undefined ? this.expirationMode : null;\n data[\"expirationDuration\"] = this.expirationDuration !== undefined ? this.expirationDuration : null;\n data[\"status\"] = this.status !== undefined ? this.status : null;\n data[\"useExtendedGrantTime\"] = this.useExtendedGrantTime !== undefined ? this.useExtendedGrantTime : null;\n data[\"canEscortVisitors\"] = this.canEscortVisitors !== undefined ? this.canEscortVisitors : null;\n data[\"displayName\"] = this.displayName !== undefined ? this.displayName : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n data[\"logicalId\"] = this.logicalId !== undefined ? this.logicalId : null;\n data[\"bypassAntipassback\"] = this.bypassAntipassback !== undefined ? this.bypassAntipassback : null;\n data[\"securityClearance\"] = this.securityClearance !== undefined ? this.securityClearance : null;\n if (Array.isArray(this.partition)) {\n data[\"partition\"] = [];\n for (let item of this.partition)\n data[\"partition\"].push(item);\n }\n if (Array.isArray(this.cardholderGroups)) {\n data[\"cardholderGroups\"] = [];\n for (let item of this.cardholderGroups)\n data[\"cardholderGroups\"].push(item);\n }\n if (Array.isArray(this.credentials)) {\n data[\"credentials\"] = [];\n for (let item of this.credentials)\n data[\"credentials\"].push(item);\n }\n if (Array.isArray(this.newCredentials)) {\n data[\"newCredentials\"] = [];\n for (let item of this.newCredentials)\n data[\"newCredentials\"].push(item.toJSON());\n }\n if (Array.isArray(this.accessRules)) {\n data[\"accessRules\"] = [];\n for (let item of this.accessRules)\n data[\"accessRules\"].push(item);\n }\n data[\"inheritAccessPermissionLevelFromGroup\"] = this.inheritAccessPermissionLevelFromGroup !== undefined ? this.inheritAccessPermissionLevelFromGroup : null;\n data[\"antipassbackExemptionIsInherited\"] = this.antipassbackExemptionIsInherited !== undefined ? this.antipassbackExemptionIsInherited : null;\n return data;\n }\n\n clone(): Cardholder {\n const json = this.toJSON();\n let result = new Cardholder();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICardholder {\n id: IGuid;\n firstName?: string | null;\n lastName?: string | null;\n emailAddress?: string | null;\n picture?: string | null;\n mobilePhoneNumber?: string | null;\n activation?: string;\n expiration?: string;\n expirationMode?: string | null;\n expirationDuration?: number;\n status?: string | null;\n useExtendedGrantTime?: boolean;\n canEscortVisitors?: boolean;\n displayName: string;\n description?: string | null;\n logicalId?: number | null;\n bypassAntipassback?: boolean;\n securityClearance?: number;\n partition?: IGuid[] | null;\n cardholderGroups?: IGuid[] | null;\n credentials?: IGuid[] | null;\n newCredentials?: Credential[] | null;\n accessRules?: IGuid[] | null;\n inheritAccessPermissionLevelFromGroup?: boolean;\n antipassbackExemptionIsInherited?: boolean;\n}\n\nexport class Credential implements ICredential {\n credentialType?: string | null;\n pin?: number;\n cardFormat?: IGuid;\n facilityCode?: number;\n cardNumber?: number;\n name?: string | null;\n\n constructor(data?: ICredential) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.credentialType = _data[\"credentialType\"] !== undefined ? _data[\"credentialType\"] : null;\n this.pin = _data[\"pin\"] !== undefined ? _data[\"pin\"] : null;\n this.cardFormat = _guidImplementation.from(_data[\"cardFormat\"]) !== undefined ? _guidImplementation.from(_data[\"cardFormat\"]) : null;\n this.facilityCode = _data[\"facilityCode\"] !== undefined ? _data[\"facilityCode\"] : null;\n this.cardNumber = _data[\"cardNumber\"] !== undefined ? _data[\"cardNumber\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n }\n }\n\n static fromJS(data: any): Credential {\n data = typeof data === 'object' ? data : {};\n let result = new Credential();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"credentialType\"] = this.credentialType !== undefined ? this.credentialType : null;\n data[\"pin\"] = this.pin !== undefined ? this.pin : null;\n data[\"cardFormat\"] = this.cardFormat?.toString() !== undefined ? this.cardFormat?.toString() : null;\n data[\"facilityCode\"] = this.facilityCode !== undefined ? this.facilityCode : null;\n data[\"cardNumber\"] = this.cardNumber !== undefined ? this.cardNumber : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n return data;\n }\n\n clone(): Credential {\n const json = this.toJSON();\n let result = new Credential();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICredential {\n credentialType?: string | null;\n pin?: number;\n cardFormat?: IGuid;\n facilityCode?: number;\n cardNumber?: number;\n name?: string | null;\n}\n\nexport class FilterDescriptor implements IFilterDescriptor {\n filterId!: string;\n type!: IGuid;\n label!: string;\n icon!: string;\n lazyLoad!: boolean;\n providerId!: IGuid;\n hideable!: boolean;\n typeSpecificFields!: any[];\n\n protected _discriminator: string;\n\n constructor(data?: IFilterDescriptor) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.typeSpecificFields = [];\n }\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.FilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.filterId = _data[\"filterId\"] !== undefined ? _data[\"filterId\"] : null;\n this.type = _guidImplementation.from(_data[\"type\"]) !== undefined ? _guidImplementation.from(_data[\"type\"]) : null;\n this.label = _data[\"label\"] !== undefined ? _data[\"label\"] : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.lazyLoad = _data[\"lazyLoad\"] !== undefined ? _data[\"lazyLoad\"] : null;\n this.providerId = _guidImplementation.from(_data[\"providerId\"]) !== undefined ? _guidImplementation.from(_data[\"providerId\"]) : null;\n this.hideable = _data[\"hideable\"] !== undefined ? _data[\"hideable\"] : null;\n if (Array.isArray(_data[\"typeSpecificFields\"])) {\n this.typeSpecificFields = [] as any;\n for (let item of _data[\"typeSpecificFields\"])\n this.typeSpecificFields!.push(item);\n }\n else { \n this.typeSpecificFields = null;\n }\n }\n }\n\n static fromJS(data: any): FilterDescriptor {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.DateFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new DateFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.EntityListFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new EntityListFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.EnumFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new EnumFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.NumericRangeFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new NumericRangeFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.SearchFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new SearchFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.TextFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new TextFilterDescriptor();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Module.Common.Filters.Descriptors.TreeViewFilterDescriptor, Genetec.WebApp.Module.Common\") {\n let result = new TreeViewFilterDescriptor();\n result.init(data);\n return result;\n }\n let result = new FilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"filterId\"] = this.filterId !== undefined ? this.filterId : null;\n data[\"type\"] = this.type?.toString() !== undefined ? this.type?.toString() : null;\n data[\"label\"] = this.label !== undefined ? this.label : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"lazyLoad\"] = this.lazyLoad !== undefined ? this.lazyLoad : null;\n data[\"providerId\"] = this.providerId?.toString() !== undefined ? this.providerId?.toString() : null;\n data[\"hideable\"] = this.hideable !== undefined ? this.hideable : null;\n if (Array.isArray(this.typeSpecificFields)) {\n data[\"typeSpecificFields\"] = [];\n for (let item of this.typeSpecificFields)\n data[\"typeSpecificFields\"].push(item);\n }\n return data;\n }\n\n clone(): FilterDescriptor {\n const json = this.toJSON();\n let result = new FilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFilterDescriptor {\n filterId: string;\n type: IGuid;\n label: string;\n icon: string;\n lazyLoad: boolean;\n providerId: IGuid;\n hideable: boolean;\n typeSpecificFields: any[];\n}\n\nexport class DateFilterDescriptor extends FilterDescriptor implements IDateFilterDescriptor {\n\n constructor(data?: IDateFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.DateFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): DateFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new DateFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): DateFilterDescriptor {\n const json = this.toJSON();\n let result = new DateFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDateFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class EntityListFilterDescriptor extends FilterDescriptor implements IEntityListFilterDescriptor {\n\n constructor(data?: IEntityListFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.EntityListFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): EntityListFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new EntityListFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): EntityListFilterDescriptor {\n const json = this.toJSON();\n let result = new EntityListFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEntityListFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class EnumFilterDescriptor extends FilterDescriptor implements IEnumFilterDescriptor {\n\n constructor(data?: IEnumFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.EnumFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): EnumFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new EnumFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): EnumFilterDescriptor {\n const json = this.toJSON();\n let result = new EnumFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IEnumFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class FormatFieldDefinition implements IFormatFieldDefinition {\n order?: number;\n fixed?: boolean;\n name?: string | null;\n representation?: string | null;\n value?: string | null;\n minRange?: string | null;\n maxRange?: string | null;\n acceptsRange?: boolean;\n\n constructor(data?: IFormatFieldDefinition) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.order = _data[\"order\"] !== undefined ? _data[\"order\"] : null;\n this.fixed = _data[\"fixed\"] !== undefined ? _data[\"fixed\"] : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.representation = _data[\"representation\"] !== undefined ? _data[\"representation\"] : null;\n this.value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n this.minRange = _data[\"minRange\"] !== undefined ? _data[\"minRange\"] : null;\n this.maxRange = _data[\"maxRange\"] !== undefined ? _data[\"maxRange\"] : null;\n this.acceptsRange = _data[\"acceptsRange\"] !== undefined ? _data[\"acceptsRange\"] : null;\n }\n }\n\n static fromJS(data: any): FormatFieldDefinition {\n data = typeof data === 'object' ? data : {};\n let result = new FormatFieldDefinition();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"order\"] = this.order !== undefined ? this.order : null;\n data[\"fixed\"] = this.fixed !== undefined ? this.fixed : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"representation\"] = this.representation !== undefined ? this.representation : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n data[\"minRange\"] = this.minRange !== undefined ? this.minRange : null;\n data[\"maxRange\"] = this.maxRange !== undefined ? this.maxRange : null;\n data[\"acceptsRange\"] = this.acceptsRange !== undefined ? this.acceptsRange : null;\n return data;\n }\n\n clone(): FormatFieldDefinition {\n const json = this.toJSON();\n let result = new FormatFieldDefinition();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFormatFieldDefinition {\n order?: number;\n fixed?: boolean;\n name?: string | null;\n representation?: string | null;\n value?: string | null;\n minRange?: string | null;\n maxRange?: string | null;\n acceptsRange?: boolean;\n}\n\nexport class NumericRangeFilterDescriptor extends FilterDescriptor implements INumericRangeFilterDescriptor {\n\n constructor(data?: INumericRangeFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.NumericRangeFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): NumericRangeFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new NumericRangeFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): NumericRangeFilterDescriptor {\n const json = this.toJSON();\n let result = new NumericRangeFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface INumericRangeFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class ParityCheck implements IParityCheck {\n priority?: number;\n mask?: string | null;\n parityPosition?: number;\n parityType?: string | null;\n\n constructor(data?: IParityCheck) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n this.mask = _data[\"mask\"] !== undefined ? _data[\"mask\"] : null;\n this.parityPosition = _data[\"parityPosition\"] !== undefined ? _data[\"parityPosition\"] : null;\n this.parityType = _data[\"parityType\"] !== undefined ? _data[\"parityType\"] : null;\n }\n }\n\n static fromJS(data: any): ParityCheck {\n data = typeof data === 'object' ? data : {};\n let result = new ParityCheck();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n data[\"mask\"] = this.mask !== undefined ? this.mask : null;\n data[\"parityPosition\"] = this.parityPosition !== undefined ? this.parityPosition : null;\n data[\"parityType\"] = this.parityType !== undefined ? this.parityType : null;\n return data;\n }\n\n clone(): ParityCheck {\n const json = this.toJSON();\n let result = new ParityCheck();\n result.init(json);\n return result;\n }\n}\n\nexport interface IParityCheck {\n priority?: number;\n mask?: string | null;\n parityPosition?: number;\n parityType?: string | null;\n}\n\nexport class ReportDescriptor implements IReportDescriptor {\n id!: IGuid;\n label!: string;\n icon!: string;\n type?: ReportType;\n columns!: ReportTableColumnDescriptor[];\n filters!: FilterDescriptor[];\n enableStreamedResponse!: boolean;\n supportStreamedResponse!: boolean;\n\n constructor(data?: IReportDescriptor) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.columns = [];\n this.filters = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.label = _data[\"label\"] !== undefined ? _data[\"label\"] : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.type = _data[\"type\"] ? ReportType.fromJS(_data[\"type\"]) : null;\n if (Array.isArray(_data[\"columns\"])) {\n this.columns = [] as any;\n for (let item of _data[\"columns\"])\n this.columns!.push(ReportTableColumnDescriptor.fromJS(item));\n }\n else { \n this.columns = null;\n }\n if (Array.isArray(_data[\"filters\"])) {\n this.filters = [] as any;\n for (let item of _data[\"filters\"])\n this.filters!.push(FilterDescriptor.fromJS(item));\n }\n else { \n this.filters = null;\n }\n this.enableStreamedResponse = _data[\"enableStreamedResponse\"] !== undefined ? _data[\"enableStreamedResponse\"] : null;\n this.supportStreamedResponse = _data[\"supportStreamedResponse\"] !== undefined ? _data[\"supportStreamedResponse\"] : null;\n }\n }\n\n static fromJS(data: any): ReportDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new ReportDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"label\"] = this.label !== undefined ? this.label : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"type\"] = this.type ? this.type.toJSON() : null;\n if (Array.isArray(this.columns)) {\n data[\"columns\"] = [];\n for (let item of this.columns)\n data[\"columns\"].push(item.toJSON());\n }\n if (Array.isArray(this.filters)) {\n data[\"filters\"] = [];\n for (let item of this.filters)\n data[\"filters\"].push(item.toJSON());\n }\n data[\"enableStreamedResponse\"] = this.enableStreamedResponse !== undefined ? this.enableStreamedResponse : null;\n data[\"supportStreamedResponse\"] = this.supportStreamedResponse !== undefined ? this.supportStreamedResponse : null;\n return data;\n }\n\n clone(): ReportDescriptor {\n const json = this.toJSON();\n let result = new ReportDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportDescriptor {\n id: IGuid;\n label: string;\n icon: string;\n type?: ReportType;\n columns: ReportTableColumnDescriptor[];\n filters: FilterDescriptor[];\n enableStreamedResponse: boolean;\n supportStreamedResponse: boolean;\n}\n\nexport class ReportExtendedSearchRequest implements IReportExtendedSearchRequest {\n reportDescriptorId?: IGuid;\n extendedFieldId!: string;\n keys!: any[];\n\n constructor(data?: IReportExtendedSearchRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.keys = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.reportDescriptorId = _guidImplementation.from(_data[\"reportDescriptorId\"]) !== undefined ? _guidImplementation.from(_data[\"reportDescriptorId\"]) : null;\n this.extendedFieldId = _data[\"extendedFieldId\"] !== undefined ? _data[\"extendedFieldId\"] : null;\n if (Array.isArray(_data[\"keys\"])) {\n this.keys = [] as any;\n for (let item of _data[\"keys\"])\n this.keys!.push(item);\n }\n else { \n this.keys = null;\n }\n }\n }\n\n static fromJS(data: any): ReportExtendedSearchRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ReportExtendedSearchRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"reportDescriptorId\"] = this.reportDescriptorId?.toString() !== undefined ? this.reportDescriptorId?.toString() : null;\n data[\"extendedFieldId\"] = this.extendedFieldId !== undefined ? this.extendedFieldId : null;\n if (Array.isArray(this.keys)) {\n data[\"keys\"] = [];\n for (let item of this.keys)\n data[\"keys\"].push(item);\n }\n return data;\n }\n\n clone(): ReportExtendedSearchRequest {\n const json = this.toJSON();\n let result = new ReportExtendedSearchRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportExtendedSearchRequest {\n reportDescriptorId?: IGuid;\n extendedFieldId: string;\n keys: any[];\n}\n\nexport class ReportExtendedSearchResult implements IReportExtendedSearchResult {\n reportDescriptorId!: IGuid;\n extendedFieldId!: string;\n reportItems!: { [key: string]: any; }[];\n\n constructor(data?: IReportExtendedSearchResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.reportItems = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.reportDescriptorId = _guidImplementation.from(_data[\"reportDescriptorId\"]) !== undefined ? _guidImplementation.from(_data[\"reportDescriptorId\"]) : null;\n this.extendedFieldId = _data[\"extendedFieldId\"] !== undefined ? _data[\"extendedFieldId\"] : null;\n if (Array.isArray(_data[\"reportItems\"])) {\n this.reportItems = [] as any;\n for (let item of _data[\"reportItems\"])\n this.reportItems!.push(item);\n }\n else { \n this.reportItems = null;\n }\n }\n }\n\n static fromJS(data: any): ReportExtendedSearchResult {\n data = typeof data === 'object' ? data : {};\n let result = new ReportExtendedSearchResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"reportDescriptorId\"] = this.reportDescriptorId?.toString() !== undefined ? this.reportDescriptorId?.toString() : null;\n data[\"extendedFieldId\"] = this.extendedFieldId !== undefined ? this.extendedFieldId : null;\n if (Array.isArray(this.reportItems)) {\n data[\"reportItems\"] = [];\n for (let item of this.reportItems)\n data[\"reportItems\"].push(item);\n }\n return data;\n }\n\n clone(): ReportExtendedSearchResult {\n const json = this.toJSON();\n let result = new ReportExtendedSearchResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportExtendedSearchResult {\n reportDescriptorId: IGuid;\n extendedFieldId: string;\n reportItems: { [key: string]: any; }[];\n}\n\nexport class ReportResult implements IReportResult {\n reportItems!: { [key: string]: any; }[];\n successful!: boolean;\n error?: string | null;\n errorMessage?: string | null;\n errorSeverity?: string | null;\n errors!: ReportResultError[];\n source?: IGuid;\n lastResult!: boolean;\n\n constructor(data?: IReportResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.reportItems = [];\n this.errors = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"reportItems\"])) {\n this.reportItems = [] as any;\n for (let item of _data[\"reportItems\"])\n this.reportItems!.push(item);\n }\n else { \n this.reportItems = null;\n }\n this.successful = _data[\"successful\"] !== undefined ? _data[\"successful\"] : null;\n this.error = _data[\"error\"] !== undefined ? _data[\"error\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ? _data[\"errorMessage\"] : null;\n this.errorSeverity = _data[\"errorSeverity\"] !== undefined ? _data[\"errorSeverity\"] : null;\n if (Array.isArray(_data[\"errors\"])) {\n this.errors = [] as any;\n for (let item of _data[\"errors\"])\n this.errors!.push(ReportResultError.fromJS(item));\n }\n else { \n this.errors = null;\n }\n this.source = _guidImplementation.from(_data[\"source\"]) !== undefined ? _guidImplementation.from(_data[\"source\"]) : null;\n this.lastResult = _data[\"lastResult\"] !== undefined ? _data[\"lastResult\"] : null;\n }\n }\n\n static fromJS(data: any): ReportResult {\n data = typeof data === 'object' ? data : {};\n let result = new ReportResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.reportItems)) {\n data[\"reportItems\"] = [];\n for (let item of this.reportItems)\n data[\"reportItems\"].push(item);\n }\n data[\"successful\"] = this.successful !== undefined ? this.successful : null;\n data[\"error\"] = this.error !== undefined ? this.error : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n data[\"errorSeverity\"] = this.errorSeverity !== undefined ? this.errorSeverity : null;\n if (Array.isArray(this.errors)) {\n data[\"errors\"] = [];\n for (let item of this.errors)\n data[\"errors\"].push(item.toJSON());\n }\n data[\"source\"] = this.source?.toString() !== undefined ? this.source?.toString() : null;\n data[\"lastResult\"] = this.lastResult !== undefined ? this.lastResult : null;\n return data;\n }\n\n clone(): ReportResult {\n const json = this.toJSON();\n let result = new ReportResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportResult {\n reportItems: { [key: string]: any; }[];\n successful: boolean;\n error?: string | null;\n errorMessage?: string | null;\n errorSeverity?: string | null;\n errors: ReportResultError[];\n source?: IGuid;\n lastResult: boolean;\n}\n\nexport class ReportResultError implements IReportResultError {\n sourceName?: string | null;\n error!: string;\n errorMessage!: string;\n errorSeverity?: string | null;\n\n constructor(data?: IReportResultError) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sourceName = _data[\"sourceName\"] !== undefined ? _data[\"sourceName\"] : null;\n this.error = _data[\"error\"] !== undefined ? _data[\"error\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ? _data[\"errorMessage\"] : null;\n this.errorSeverity = _data[\"errorSeverity\"] !== undefined ? _data[\"errorSeverity\"] : null;\n }\n }\n\n static fromJS(data: any): ReportResultError {\n data = typeof data === 'object' ? data : {};\n let result = new ReportResultError();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sourceName\"] = this.sourceName !== undefined ? this.sourceName : null;\n data[\"error\"] = this.error !== undefined ? this.error : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n data[\"errorSeverity\"] = this.errorSeverity !== undefined ? this.errorSeverity : null;\n return data;\n }\n\n clone(): ReportResultError {\n const json = this.toJSON();\n let result = new ReportResultError();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportResultError {\n sourceName?: string | null;\n error: string;\n errorMessage: string;\n errorSeverity?: string | null;\n}\n\nexport class ReportTableColumnCommandContextDescriptor implements IReportTableColumnCommandContextDescriptor {\n contentType!: IGuid;\n isCommandColumn!: boolean;\n isContentRequired!: boolean;\n\n constructor(data?: IReportTableColumnCommandContextDescriptor) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.contentType = _guidImplementation.from(_data[\"contentType\"]) !== undefined ? _guidImplementation.from(_data[\"contentType\"]) : null;\n this.isCommandColumn = _data[\"isCommandColumn\"] !== undefined ? _data[\"isCommandColumn\"] : null;\n this.isContentRequired = _data[\"isContentRequired\"] !== undefined ? _data[\"isContentRequired\"] : null;\n }\n }\n\n static fromJS(data: any): ReportTableColumnCommandContextDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new ReportTableColumnCommandContextDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"contentType\"] = this.contentType?.toString() !== undefined ? this.contentType?.toString() : null;\n data[\"isCommandColumn\"] = this.isCommandColumn !== undefined ? this.isCommandColumn : null;\n data[\"isContentRequired\"] = this.isContentRequired !== undefined ? this.isContentRequired : null;\n return data;\n }\n\n clone(): ReportTableColumnCommandContextDescriptor {\n const json = this.toJSON();\n let result = new ReportTableColumnCommandContextDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportTableColumnCommandContextDescriptor {\n contentType: IGuid;\n isCommandColumn: boolean;\n isContentRequired: boolean;\n}\n\nexport class ReportTableColumnDescriptor implements IReportTableColumnDescriptor {\n readonly fieldId!: string;\n propertyName?: string | null;\n label!: string;\n readonly isHidden!: boolean;\n readonly isSortable!: boolean;\n cellType!: ReportTableColumnType;\n isContentSource!: boolean;\n commandContextDescriptor!: ReportTableColumnCommandContextDescriptor;\n readonly isTimezoneConvert!: boolean;\n defaultSortOrder!: string;\n cellRendererGuid!: IGuid;\n readonly isExtendedProperty!: boolean;\n readonly isKey!: boolean;\n readonly priority!: number;\n\n constructor(data?: IReportTableColumnDescriptor) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.commandContextDescriptor = new ReportTableColumnCommandContextDescriptor();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).fieldId = _data[\"fieldId\"] !== undefined ? _data[\"fieldId\"] : null;\n this.propertyName = _data[\"propertyName\"] !== undefined ? _data[\"propertyName\"] : null;\n this.label = _data[\"label\"] !== undefined ? _data[\"label\"] : null;\n (this).isHidden = _data[\"isHidden\"] !== undefined ? _data[\"isHidden\"] : null;\n (this).isSortable = _data[\"isSortable\"] !== undefined ? _data[\"isSortable\"] : null;\n this.cellType = _data[\"cellType\"] !== undefined ? _data[\"cellType\"] : null;\n this.isContentSource = _data[\"isContentSource\"] !== undefined ? _data[\"isContentSource\"] : null;\n this.commandContextDescriptor = _data[\"commandContextDescriptor\"] ? ReportTableColumnCommandContextDescriptor.fromJS(_data[\"commandContextDescriptor\"]) : new ReportTableColumnCommandContextDescriptor();\n (this).isTimezoneConvert = _data[\"isTimezoneConvert\"] !== undefined ? _data[\"isTimezoneConvert\"] : null;\n this.defaultSortOrder = _data[\"defaultSortOrder\"] !== undefined ? _data[\"defaultSortOrder\"] : null;\n this.cellRendererGuid = _guidImplementation.from(_data[\"cellRendererGuid\"]) !== undefined ? _guidImplementation.from(_data[\"cellRendererGuid\"]) : null;\n (this).isExtendedProperty = _data[\"isExtendedProperty\"] !== undefined ? _data[\"isExtendedProperty\"] : null;\n (this).isKey = _data[\"isKey\"] !== undefined ? _data[\"isKey\"] : null;\n (this).priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n }\n }\n\n static fromJS(data: any): ReportTableColumnDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new ReportTableColumnDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldId\"] = this.fieldId !== undefined ? this.fieldId : null;\n data[\"propertyName\"] = this.propertyName !== undefined ? this.propertyName : null;\n data[\"label\"] = this.label !== undefined ? this.label : null;\n data[\"isHidden\"] = this.isHidden !== undefined ? this.isHidden : null;\n data[\"isSortable\"] = this.isSortable !== undefined ? this.isSortable : null;\n data[\"cellType\"] = this.cellType !== undefined ? this.cellType : null;\n data[\"isContentSource\"] = this.isContentSource !== undefined ? this.isContentSource : null;\n data[\"commandContextDescriptor\"] = this.commandContextDescriptor ? this.commandContextDescriptor.toJSON() : null;\n data[\"isTimezoneConvert\"] = this.isTimezoneConvert !== undefined ? this.isTimezoneConvert : null;\n data[\"defaultSortOrder\"] = this.defaultSortOrder !== undefined ? this.defaultSortOrder : null;\n data[\"cellRendererGuid\"] = this.cellRendererGuid?.toString() !== undefined ? this.cellRendererGuid?.toString() : null;\n data[\"isExtendedProperty\"] = this.isExtendedProperty !== undefined ? this.isExtendedProperty : null;\n data[\"isKey\"] = this.isKey !== undefined ? this.isKey : null;\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n return data;\n }\n\n clone(): ReportTableColumnDescriptor {\n const json = this.toJSON();\n let result = new ReportTableColumnDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportTableColumnDescriptor {\n fieldId: string;\n propertyName?: string | null;\n label: string;\n isHidden: boolean;\n isSortable: boolean;\n cellType: ReportTableColumnType;\n isContentSource: boolean;\n commandContextDescriptor: ReportTableColumnCommandContextDescriptor;\n isTimezoneConvert: boolean;\n defaultSortOrder: string;\n cellRendererGuid: IGuid;\n isExtendedProperty: boolean;\n isKey: boolean;\n priority: number;\n}\n\nexport enum ReportTableColumnType {\n Custom = 0,\n Text = 1,\n Image = 2,\n Boolean = 3,\n Number = 4,\n Date = 5,\n Time = 6,\n DateTime = 7,\n Action = 8,\n}\n\nexport class ReportType implements IReportType {\n id!: IGuid;\n label!: string;\n priority!: number;\n\n constructor(data?: IReportType) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n this.label = _data[\"label\"] !== undefined ? _data[\"label\"] : null;\n this.priority = _data[\"priority\"] !== undefined ? _data[\"priority\"] : null;\n }\n }\n\n static fromJS(data: any): ReportType {\n data = typeof data === 'object' ? data : {};\n let result = new ReportType();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"label\"] = this.label !== undefined ? this.label : null;\n data[\"priority\"] = this.priority !== undefined ? this.priority : null;\n return data;\n }\n\n clone(): ReportType {\n const json = this.toJSON();\n let result = new ReportType();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReportType {\n id: IGuid;\n label: string;\n priority: number;\n}\n\nexport class SearchFilterDescriptor extends FilterDescriptor implements ISearchFilterDescriptor {\n\n constructor(data?: ISearchFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.SearchFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): SearchFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new SearchFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): SearchFilterDescriptor {\n const json = this.toJSON();\n let result = new SearchFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class SearchRequest implements ISearchRequest {\n filters?: { [key: string]: any; } | null;\n sourceTimeZone!: string;\n page!: number;\n pageSize!: number;\n sortBy?: string | null;\n sortOrder?: string | null;\n\n constructor(data?: ISearchRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"filters\"]) {\n this.filters = {} as any;\n for (let key in _data[\"filters\"]) {\n if (_data[\"filters\"].hasOwnProperty(key))\n (this.filters)![key] = _data[\"filters\"][key] !== undefined ? _data[\"filters\"][key] : null;\n }\n }\n else {\n this.filters = null;\n }\n this.sourceTimeZone = _data[\"sourceTimeZone\"] !== undefined ? _data[\"sourceTimeZone\"] : null;\n this.page = _data[\"page\"] !== undefined ? _data[\"page\"] : null;\n this.pageSize = _data[\"pageSize\"] !== undefined ? _data[\"pageSize\"] : null;\n this.sortBy = _data[\"sortBy\"] !== undefined ? _data[\"sortBy\"] : null;\n this.sortOrder = _data[\"sortOrder\"] !== undefined ? _data[\"sortOrder\"] : null;\n }\n }\n\n static fromJS(data: any): SearchRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SearchRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.filters) {\n data[\"filters\"] = {};\n for (let key in this.filters) {\n if (this.filters.hasOwnProperty(key))\n (data[\"filters\"])[key] = this.filters[key] !== undefined ? this.filters[key] : null;\n }\n }\n data[\"sourceTimeZone\"] = this.sourceTimeZone !== undefined ? this.sourceTimeZone : null;\n data[\"page\"] = this.page !== undefined ? this.page : null;\n data[\"pageSize\"] = this.pageSize !== undefined ? this.pageSize : null;\n data[\"sortBy\"] = this.sortBy !== undefined ? this.sortBy : null;\n data[\"sortOrder\"] = this.sortOrder !== undefined ? this.sortOrder : null;\n return data;\n }\n\n clone(): SearchRequest {\n const json = this.toJSON();\n let result = new SearchRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISearchRequest {\n filters?: { [key: string]: any; } | null;\n sourceTimeZone: string;\n page: number;\n pageSize: number;\n sortBy?: string | null;\n sortOrder?: string | null;\n}\n\nexport class TextFilterDescriptor extends FilterDescriptor implements ITextFilterDescriptor {\n\n constructor(data?: ITextFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.TextFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): TextFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new TextFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): TextFilterDescriptor {\n const json = this.toJSON();\n let result = new TextFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITextFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class TreeViewFilterDescriptor extends FilterDescriptor implements ITreeViewFilterDescriptor {\n\n constructor(data?: ITreeViewFilterDescriptor) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Module.Common.Filters.Descriptors.TreeViewFilterDescriptor, Genetec.WebApp.Module.Common\";\n }\n\n init(_data?: any) {\n super.init(_data);\n }\n\n static fromJS(data: any): TreeViewFilterDescriptor {\n data = typeof data === 'object' ? data : {};\n let result = new TreeViewFilterDescriptor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n super.toJSON(data);\n return data;\n }\n\n clone(): TreeViewFilterDescriptor {\n const json = this.toJSON();\n let result = new TreeViewFilterDescriptor();\n result.init(json);\n return result;\n }\n}\n\nexport interface ITreeViewFilterDescriptor extends IFilterDescriptor {\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","// Autogenerated: v2/help/enumerations/ApiExpirationMode?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class ExpirationMode {\n public static DontExpire = 'DontExpire';\n public static ExpiredAfterActivation = 'ExpiredAfterActivation';\n public static Expiring = 'Expiring';\n public static ActivateOn = 'ActivateOn';\n public static WhenNotUsed = 'WhenNotUsed';\n\n public static readonly values = [\n ExpirationMode.DontExpire,\n ExpirationMode.ExpiredAfterActivation,\n ExpirationMode.Expiring,\n ExpirationMode.ActivateOn,\n ExpirationMode.WhenNotUsed\n ];\n}\n","// Autogenerated: v2/help/Entities/ApiPartition?codegen=ts&InterfaceOnly=False&workflow=True on 2021-08-30 9:30:24 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EntityManager } from './EntityManager';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { Entity } from '../Model/Entity';\nimport { IGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { IPartitionManager } from '../Interface/IPartitionManager';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IEntity } from '../Interface/IEntity';\n\nexport class PartitionManager extends EntityManager implements IPartitionManager {\n // #region Constructor\n\n constructor() {\n super('v2/entities/Partitions');\n }\n\n // #endregion Constructor\n\n public async getGrantedPrivilegedPartitionsAsync(privilege: IGuid, transaction?: ITransaction): Promise | null> {\n const responseHandler = (response: IRestResponse): Promise> => {\n if (response.statusCode === HttpStatusCode.OK || response.statusCode === HttpStatusCode.CREATED) {\n const result = new Array();\n const body = response.body as Array;\n for (const entry of body) {\n const fo = new Entity();\n fo.loadFields(entry);\n result.push(fo);\n }\n return new Promise>(function (resolve, reject) { resolve(result); });\n } else {\n return new Promise>(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('privilege', privilege);\n\n return this.executeRequestTransactionAsync>('privilegedpartitions', 'POST', inParam, transaction, responseHandler);\n }\n\n}\n\n","import { Injectable } from '@angular/core';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IPartitionManager } from 'RestClient/Client/Interface/IPartitionManager';\nimport { PartitionManager } from 'RestClient/Client/Managers/PartitionManager';\nimport { IGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { SecurityCenterClientService } from '../../../security-center/services/client/security-center-client.service';\n\n@Injectable()\nexport class PrivilegeService {\n private scClient: WebAppClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n this.scClient = securityCenterProvider.scClient;\n }\n\n /**\n * Gets all the partitions for which the privilegeId is enabled.\n * Guids.SystemPartition (System partition) is removed from the list. This partition is not meaningful, because it is always there even when the privilege is disabled for all the partitions.\n * The only time System partition is not in the list is when the privilege is globally disabled.\n *\n * @param privilegeId IGuid of the privilege\n * @returns List of the partitions for which the privilege is enabled\n */\n public async getGrantedPrivilegedPartitionsAsync(privilegeId: IGuid): Promise {\n const partitionManager = await this.scClient.getAsync(PartitionManager);\n const partitions = await partitionManager.getGrantedPrivilegedPartitionsAsync(privilegeId);\n return partitions?.filter((partition) => partition.id !== Guids.SystemPartition) ?? [];\n }\n\n public isGlobalPrivilegeGranted(privilegeId: IGuid): boolean {\n return this.scClient.isGlobalPrivilegeGranted(privilegeId);\n }\n}\n","import { EvaluatedPrivileges } from '@modules/general/interfaces';\nimport { Constants } from '@modules/shared/utilities/constants';\nimport { IGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\n\nexport type EvaluatedCardholderGlobalPrivileges = EvaluatedPrivileges<'generalSettingsLogicalIdPrivilege'>;\n\nexport type EvaluatedCardholderPrivileges = EvaluatedPrivileges<\n | 'modifyCardholderNamePrivilege'\n | 'changeCardholderStatusPrivilege'\n | 'modifyCardholdersPrivilege'\n | 'modifyCardholderGroupsPrivilege'\n | 'modifyCredentialAssociationToCardholderPrivilege'\n | 'addCredentialsPrivilege'\n | 'modifyAccessRulesPrivilege'\n | 'changeCardholderOptionsPrivilege'\n | 'deleteCardholdersPrivilege'\n | 'generalSettingsLogicalIdPrivilege'\n | 'setCardholderSecurityClearancePrivilege'\n | 'modifyCardholderPicturePrivilege'\n | 'viewCardholdersPrivilege'\n>;\n\nexport interface EntityPrivilege {\n id: IGuid;\n isGlobal: boolean;\n}\n\nconst createEntityPrivilege = (id: IGuid, isGlobal = false): EntityPrivilege => ({\n id,\n isGlobal,\n});\n\nexport const CardholderPrivileges: Record = Constants({\n modifyCardholderNamePrivilege: createEntityPrivilege(KnownPrivileges.modifyCardholderNamePrivilege),\n changeCardholderStatusPrivilege: createEntityPrivilege(KnownPrivileges.changeCardholderStatusPrivilege),\n modifyCardholdersPrivilege: createEntityPrivilege(KnownPrivileges.modifyCardholdersPrivilege),\n modifyCardholderGroupsPrivilege: createEntityPrivilege(KnownPrivileges.modifyCardholderGroupsPrivilege),\n modifyCredentialAssociationToCardholderPrivilege: createEntityPrivilege(KnownPrivileges.modifyCredentialAssociationToCardholderPrivilege),\n addCredentialsPrivilege: createEntityPrivilege(KnownPrivileges.addCredentialsPrivilege),\n modifyAccessRulesPrivilege: createEntityPrivilege(KnownPrivileges.modifyAccessRulesPrivilege),\n changeCardholderOptionsPrivilege: createEntityPrivilege(KnownPrivileges.changeCardholderOptionsPrivilege),\n deleteCardholdersPrivilege: createEntityPrivilege(KnownPrivileges.deleteCardholdersPrivilege),\n generalSettingsLogicalIdPrivilege: createEntityPrivilege(KnownPrivileges.generalSettingsLogicalIdPrivilege, true),\n setCardholderSecurityClearancePrivilege: createEntityPrivilege(KnownPrivileges.setCardholderSecurityClearancePrivilege),\n modifyCardholderPicturePrivilege: createEntityPrivilege(KnownPrivileges.modifyCardholderPicturePrivilege),\n viewCardholdersPrivilege: createEntityPrivilege(KnownPrivileges.viewCardholdersPrivilege),\n});\n\n// TODO manageSecurityClearance come from license, will need to handle that permission too.\n","import { Injectable } from '@angular/core';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { toError } from '@src/app/utilities';\nimport { CardholderEntityFields, ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { QueryFilter } from 'RestClient/Client/Queries/QueryFilter';\nimport { Observable, from, of, Subject } from 'rxjs';\nimport { catchError, first, map, toArray, mergeMap } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AccessPointRuleEntity } from 'RestClient/Client/Model/AccessControl/AccessPointRuleEntity';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { CredentialEntityFields, ICredentialEntity } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { CardholderModel } from '../cardholder-edit-context.state';\nimport { CardholderPrivileges, EntityPrivilege, EvaluatedCardholderPrivileges } from '../interfaces';\n\nconst cardholderMonitoredFields = [\n CardholderEntityFields.firstNameField,\n CardholderEntityFields.lastNameField,\n CardholderEntityFields.lastAccessField,\n CardholderEntityFields.hasPictureField,\n CardholderEntityFields.pictureIdField,\n CardholderEntityFields.mobilePhoneNumberField,\n CardholderEntityFields.emailAddressField,\n CardholderEntityFields.accessStatusField,\n CardholderEntityFields.activationDateField,\n CardholderEntityFields.expirationDateField,\n CardholderEntityFields.expirationModeField,\n CardholderEntityFields.expirationDurationField,\n CardholderEntityFields.canEscortField,\n CardholderEntityFields.descriptionField,\n CardholderEntityFields.logicalIdField,\n CardholderEntityFields.antipassbackExemptionField,\n CardholderEntityFields.antipassbackExemptionIsInheritedField,\n CardholderEntityFields.accessPermissionLevelField,\n CardholderEntityFields.useExtendedGrantTimeField,\n CardholderEntityFields.inheritAccessPermissionLevelFromGroupField,\n EntityFields.nameField,\n EntityFields.isDeletableField,\n EntityFields.isFederatedField,\n EntityFields.isImportedFromExternalSystemField,\n EntityFields.isReadOnlyField,\n];\n\nexport interface CardholderRelations {\n credentials: CardholderRelationEntityModel[] | null;\n cardholderGroups: CardholderRelationEntityModel[] | null;\n accessRules: CardholderRelationEntityModel[] | null;\n}\n\nexport interface CardholderRelationEntityModel {\n id: IGuid;\n isDeletable: boolean;\n data: Record;\n}\n\nexport enum CardholderRelationType {\n CardholderGroups = 'CardholderGroups',\n AccessRules = 'AccessRules',\n Credentials = 'Credentials',\n Partitions = 'Partitions',\n}\n\n@Injectable()\nexport class CardholderEditService {\n public static readonly excludedCardholdersGroupIds: IGuid[] = [Guids.AllCardholders];\n public static readonly excludedAccessRulesIds: IGuid[] = [Guids.AllOpenRule, Guids.LockdownRule];\n\n public refreshCardholder$: Observable;\n\n private scClient: WebAppClient;\n private refreshCardholderSubject: Subject;\n\n constructor(securityCenterClientService: SecurityCenterClientService, private loggerService: LoggerService) {\n this.scClient = securityCenterClientService.scClient;\n\n this.refreshCardholderSubject = new Subject();\n this.refreshCardholder$ = this.refreshCardholderSubject.asObservable();\n }\n\n public async fetchRelationEntitiesAsync(ids: IGuid[], cardholderId?: IGuid, relationEntityType?: EntityTypes): Promise {\n if (ids.length === 0) {\n return [];\n }\n\n const query = new EntityQuery();\n query.guids = new Set(ids);\n query.fields = new Set([EntityFields.idField, EntityFields.nameField, EntityFields.descriptionField, CredentialEntityFields.accessStatusField]);\n\n const entities: Entity[] = await this.scClient.getEntitiesAsync(relationEntityType === EntityTypes.AccessRules ? AccessPointRuleEntity : Entity, query);\n\n // Gets whether each relation entity is inherited or not\n // In general, inherited relations from groups cannot be removed directly from cardholder (like Access Rules)\n const inheritedStates = await this.retrieveRelationInheritanceFromCardholder(entities, relationEntityType, cardholderId);\n\n return entities.map((entity) => this.toCardholderRelationEntityModel(entity, inheritedStates[entity.id.toString()]));\n }\n\n public fetchCardholder(cardholderId: IGuid): Observable {\n return from(this.scClient.getEntityAsync(CardholderEntity, cardholderId, null, null, ...cardholderMonitoredFields)).pipe(\n first(),\n map((cardholderEntity) => (cardholderEntity ? this.toSimpleModel(cardholderEntity) : null)),\n catchError(this.handleRequestError.bind(this))\n );\n }\n\n public fetchGrantedPrivileges(cardholderGuid: IGuid): Observable {\n const userEntityObservable = from(this.scClient.getEntityAsync(UserEntity, this.scClient.userId));\n\n // Call isPrivilegeGrantedAsync on the user entity for each cardholder privileges we are interesting in then\n // create evaluated privileges object.\n return userEntityObservable.pipe(\n mergeMap((userEntity) =>\n from(Object.entries(CardholderPrivileges)).pipe(\n mergeMap(([privilegeKey, entityPrivilege]) => this.isPrivilegeGrantedAsync(userEntity, cardholderGuid, privilegeKey, entityPrivilege)),\n toArray(),\n map((grantedPrivileges) => {\n // Assign each privilege key to their evaluated value.\n return grantedPrivileges.reduce((privileges: Partial, current: { key: string; granted: boolean }) => {\n privileges[current.key as keyof EvaluatedCardholderPrivileges] = current.granted;\n return privileges;\n }, {}) as EvaluatedCardholderPrivileges;\n })\n )\n )\n );\n }\n\n public async fetchCardholderRelationIdsAsync(cardholderId: IGuid | undefined, entityType: CardholderRelationType): Promise {\n // If cardholders is not defined, then return default relations entities ids\n if (!cardholderId) return this.getDefaultRelationsEntities(entityType).map((x) => x.id);\n\n const cardholderEntity = await this.scClient.getEntityAsync(\n CardholderEntity,\n cardholderId,\n null,\n null,\n CardholderEntityFields.logicalIdField\n );\n\n if (cardholderEntity === null) {\n return null;\n }\n\n const query = new QueryFilter(EntityFields.idField);\n let entities: ObservableCollection | null = null;\n switch (entityType) {\n case CardholderRelationType.CardholderGroups:\n entities = await cardholderEntity.getCardholdergroupsAsync(query);\n break;\n case CardholderRelationType.Credentials:\n entities = await cardholderEntity.getCredentialsAsync(query);\n break;\n case CardholderRelationType.AccessRules:\n entities = await cardholderEntity.getAccessPointRulesAsync(query);\n break;\n case CardholderRelationType.Partitions:\n entities = await cardholderEntity.getPartitionsAsync(query);\n break;\n default:\n return null;\n }\n\n return entities?.values().map((entity) => entity.id) ?? [];\n }\n\n public loadCardholders(): void {\n this.refreshCardholderSubject.next();\n }\n\n private getDefaultRelationsEntities(type?: CardholderRelationType): CardholderRelationEntityModel[] {\n switch (type) {\n case CardholderRelationType.AccessRules:\n return CardholderEditService.excludedAccessRulesIds.map(\n (id) =>\n ({\n id,\n isDeletable: false,\n } as CardholderRelationEntityModel)\n );\n case CardholderRelationType.CardholderGroups:\n case CardholderRelationType.Credentials:\n case CardholderRelationType.Partitions:\n default:\n return [];\n }\n }\n\n private isPrivilegeGrantedAsync(userEntity: IUserEntity | null, cardholderGuid: IGuid, key: string, privilege: EntityPrivilege): Observable<{ key: string; granted: boolean }> {\n return userEntity\n ? (privilege.isGlobal ? of(this.scClient.isGlobalPrivilegeGranted(privilege.id)) : from(userEntity.isPrivilegeGrantedAsync(privilege.id, cardholderGuid))).pipe(\n map((granted) => ({ key, granted: granted ?? false }))\n )\n : of({ key, granted: false });\n }\n\n private async retrieveRelationInheritanceFromCardholder(entities: Entity[], relationEntityType?: EntityTypes, cardholderId?: IGuid): Promise> {\n const inheritedStates: Record = {};\n\n // Only AccessRules can be inherited from Cardholder Group\n if (relationEntityType === EntityTypes.AccessRules) {\n if (cardholderId) {\n const query = new EntityQuery();\n query.fields = new Set([EntityFields.idField, EntityFields.nameField, EntityFields.descriptionField]);\n\n const cardholderEntity = await this.scClient.getEntityAsync(\n CardholderEntity,\n cardholderId,\n null,\n null,\n CardholderEntityFields.logicalIdField\n );\n\n // Get AccessRules already saved on the cardholder\n const savedAccessRules = await cardholderEntity?.getAccessPointRulesAsync(query);\n\n if (savedAccessRules) {\n await Promise.all(\n savedAccessRules.values().map(async (rule) => {\n const associatedCardholders = await (rule as AccessPointRuleEntity).getCardholdersAsync(query);\n\n // Checks that this rule isn't directly associated to currently edited cardholder (indirect = inherited)\n inheritedStates[rule.id.toString()] = !!(\n associatedCardholders &&\n associatedCardholders.size > 0 &&\n !associatedCardholders.any((cardholder) => cardholder.id.equals(cardholderId))\n );\n })\n );\n }\n } else {\n // If cardholder is undefined we should load default rules\n const defaultRules = this.getDefaultRelationsEntities(CardholderRelationType.AccessRules);\n entities.forEach((entity) => {\n let isInherited = false;\n const associatedDefaultRule = defaultRules.find((rule) => rule.id.equals(entity.id));\n if (associatedDefaultRule) {\n isInherited = !associatedDefaultRule.isDeletable;\n }\n inheritedStates[entity.id.toString()] = isInherited;\n });\n }\n }\n\n return inheritedStates;\n }\n\n private handleRequestError(error: any): Observable {\n this.loggerService.traceError(toError(error));\n return of(null);\n }\n\n private toCardholderRelationEntityModel(entity: IEntity, isInherited = false): CardholderRelationEntityModel {\n const commonModel = {\n id: entity.id,\n isDeletable: !isInherited,\n };\n switch (entity.entityType) {\n case EntityTypes.Credentials:\n return {\n ...commonModel,\n data: {\n name: entity.name,\n accessStatus: (entity as ICredentialEntity).accessStatus,\n },\n };\n default:\n return {\n ...commonModel,\n data: {\n name: entity.name,\n description: entity.description,\n },\n };\n }\n }\n\n private toSimpleModel(cardholderEntity: ICardholderEntity): CardholderModel {\n return {\n id: cardholderEntity.id,\n firstName: cardholderEntity.firstName,\n lastName: cardholderEntity.lastName,\n lastAccess: cardholderEntity.lastAccess,\n hasPicture: cardholderEntity.hasPicture,\n pictureId: cardholderEntity.pictureId,\n mobilePhoneNumber: cardholderEntity.mobilePhoneNumber,\n emailAddress: cardholderEntity.emailAddress,\n accessStatus: cardholderEntity.accessStatus,\n activationDate: cardholderEntity.activationDate,\n expirationDate: cardholderEntity.expirationDate,\n expirationMode: cardholderEntity.expirationMode,\n expirationDuration: cardholderEntity.expirationDuration,\n canEscort: cardholderEntity.canEscort,\n description: cardholderEntity.description,\n logicalId: cardholderEntity.logicalId,\n antipassbackExemption: cardholderEntity.antipassbackExemption,\n antipassbackExemptionIsInherited: cardholderEntity.antipassbackExemptionIsInherited,\n accessPermissionLevel: cardholderEntity.accessPermissionLevel,\n name: cardholderEntity.name,\n useExtendedGrantTime: cardholderEntity.useExtendedGrantTime,\n inheritAccessPermissionLevelFromGroup: cardholderEntity.inheritAccessPermissionLevelFromGroup,\n isDeletable: cardholderEntity.isDeletable,\n readonly: cardholderEntity.isFederated || cardholderEntity.isImportedFromExternalSystem || cardholderEntity.isReadOnly,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitterAction, Receiver } from '@ngxs-labs/emitter';\nimport { createSelector, NgxsOnInit, Selector, State, StateContext } from '@ngxs/store';\nimport { ExpirationMode } from 'RestClient/Client/Enumerations/ExpirationMode';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { combineLatest } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { CardholderPrivileges, EvaluatedCardholderPrivileges } from './interfaces';\nimport { CardholderEditService } from './services/cardholder-edit-service';\n\n/**\n * Type for a cardholder model, meant to be manipulated used with the view.\n */\nexport type CardholderModel = Pick<\n ICardholderEntity,\n | 'firstName'\n | 'lastName'\n | 'lastAccess'\n | 'hasPicture'\n | 'pictureId'\n | 'mobilePhoneNumber'\n | 'emailAddress'\n | 'accessStatus'\n | 'activationDate'\n | 'expirationDate'\n | 'expirationMode'\n | 'expirationDuration'\n | 'canEscort'\n | 'description'\n | 'logicalId'\n | 'antipassbackExemption'\n | 'antipassbackExemptionIsInherited'\n | 'accessPermissionLevel'\n | 'useExtendedGrantTime'\n | 'name'\n | 'inheritAccessPermissionLevelFromGroup'\n | 'isDeletable'\n> & { id?: IGuid; picture?: string; readonly?: boolean };\n\nexport const createDefaultCardholderModel = (): CardholderModel => {\n return {\n accessStatus: AccessStatus.Active,\n firstName: '',\n lastName: '',\n emailAddress: '',\n name: '',\n lastAccess: new Date('01/01/01'),\n activationDate: new Date(),\n expirationDate: new Date('1/1/0001 12:00:00 AM'),\n expirationMode: ExpirationMode.DontExpire,\n inheritAccessPermissionLevelFromGroup: true,\n accessPermissionLevel: 0,\n antipassbackExemption: false,\n antipassbackExemptionIsInherited: false,\n canEscort: false,\n description: '',\n hasPicture: false,\n isDeletable: true,\n logicalId: null,\n mobilePhoneNumber: '',\n picture: '',\n pictureId: SafeGuid.newGuid(),\n useExtendedGrantTime: false,\n expirationDuration: 0,\n };\n};\n\n/**\n * Context state for the cardholder's edit pane\n */\nexport interface CardholderEditContextStateModel {\n cardholder: CardholderModel | null;\n cardholderId?: IGuid | null;\n errorMessageId: string | null;\n /**\n * Whether the details pane is shown on the side (**true**) or fullscreen (**false**)\n */\n isSideBySide: boolean;\n isAddMode: boolean;\n privileges: EvaluatedCardholderPrivileges | null;\n}\n\nclass ClearCardholderEditContextCacheAction {\n static readonly type = '[CardholderEditContext] Clear cardholder edit context cached values';\n}\n\nclass FetchGloballyGrantedPrivilegesAction {\n static readonly type = '[CardholderEditContext] Fetch global privileges associated to cardholders';\n}\n\n@State({\n name: 'cardholderEditContext',\n defaults: {\n cardholderId: null,\n cardholder: null,\n errorMessageId: null,\n isSideBySide: true,\n isAddMode: false,\n privileges: null,\n },\n})\n@UntilDestroy()\n@Injectable()\nexport class CardholderEditContextState implements NgxsOnInit {\n private static cardholderEditService: CardholderEditService;\n private static privilegeService: PrivilegeService;\n private static globalPrivileges: CardholderEditContextStateModel['privileges'] | null;\n\n constructor(cardholderEditService: CardholderEditService, private privilegeService: PrivilegeService, private authService: AuthService) {\n CardholderEditContextState.cardholderEditService = cardholderEditService;\n CardholderEditContextState.privilegeService = privilegeService;\n }\n\n public static isPrivilegeGranted(privilege: keyof EvaluatedCardholderPrivileges): (state: CardholderEditContextStateModel) => boolean {\n return createSelector([CardholderEditContextState], (state: CardholderEditContextStateModel) => {\n return state.privileges?.[privilege] ?? false;\n });\n }\n\n @Selector()\n public static grantedPrivileges(state: CardholderEditContextStateModel): CardholderEditContextStateModel['privileges'] {\n return state.privileges;\n }\n\n @Selector()\n public static isSideBySide(state: CardholderEditContextStateModel): CardholderEditContextStateModel['isSideBySide'] {\n return state.isSideBySide;\n }\n\n @Selector()\n public static isAddMode(state: CardholderEditContextStateModel): CardholderEditContextStateModel['isAddMode'] {\n return state.isAddMode;\n }\n\n @Selector()\n public static cardholder(state: CardholderEditContextStateModel): CardholderEditContextStateModel['cardholder'] {\n return state.cardholder;\n }\n\n @Selector()\n public static cardholderId(state: CardholderEditContextStateModel): CardholderEditContextStateModel['cardholderId'] {\n return state.cardholderId;\n }\n\n @Selector()\n public static errorMessageId(state: CardholderEditContextStateModel): CardholderEditContextStateModel['errorMessageId'] {\n return state.errorMessageId;\n }\n\n /**\n * Sets a new cardholder id. Will automatically fetch the actual cardholder from the server and update the state with\n * the resulting cardholder. Also, will set the mode to Edit.\n *\n * For editing an existing cardholder\n */\n @Receiver()\n static setCardholderIdAndPicture(\n { patchState }: StateContext,\n { payload }: EmitterAction<{ id: CardholderEditContextStateModel['cardholderId'] | string; picture?: string | null } | null>\n ): void {\n patchState({ privileges: null, cardholder: null, cardholderId: null, errorMessageId: null, isAddMode: false });\n\n if (!payload?.id) {\n patchState({ cardholder: null, cardholderId: null });\n return;\n }\n\n const { value, success } = SafeGuid.tryParse(payload?.id.toString() ?? '');\n if (!success) {\n patchState({ errorMessageId: 'STE_MESSAGE_ERROR_CARDHOLDER_NOT_FOUND' });\n throw new Error('Cardholder load error: invalid Guid');\n }\n\n patchState({ cardholderId: value });\n\n const cardholder$ = this.cardholderEditService.fetchCardholder(value);\n const privileges$ = this.cardholderEditService.fetchGrantedPrivileges(value);\n\n combineLatest([cardholder$, privileges$])\n .pipe(take(1))\n .subscribe(([cardholder, privileges]) => {\n if (cardholder && payload.picture) {\n cardholder.picture = payload.picture;\n }\n if (privileges.viewCardholdersPrivilege) {\n patchState({\n cardholder,\n privileges,\n errorMessageId: cardholder ? null : 'STE_MESSAGE_ERROR_CARDHOLDER_NOT_FOUND',\n });\n } else {\n patchState({\n cardholder: null,\n privileges,\n errorMessageId: 'STE_MESSAGE_ERROR_NOTAVAILABLEORINSUFFICIENTPRIVILEGE',\n });\n }\n });\n }\n\n /**\n * For adding a new cardholder.\n */\n @Receiver()\n static setNewCardholder({ patchState }: StateContext): void {\n patchState({\n cardholder: createDefaultCardholderModel(),\n errorMessageId: null,\n cardholderId: null,\n privileges: this.globalPrivileges,\n });\n }\n\n @Receiver()\n static toggleSideBySide({ patchState, getState }: StateContext): void {\n patchState({ isSideBySide: !getState().isSideBySide });\n }\n\n @Receiver()\n static setFullScreen({ patchState }: StateContext): void {\n patchState({ isSideBySide: false });\n }\n\n @Receiver()\n static setAddMode({ patchState }: StateContext): void {\n patchState({ isAddMode: true });\n }\n\n @Receiver()\n static setEditMode({ patchState }: StateContext): void {\n patchState({ isAddMode: false });\n }\n\n @Receiver({ action: ClearCardholderEditContextCacheAction })\n public static clearCardholderEditContextCache({ patchState }: StateContext): void {\n this.globalPrivileges = null;\n\n // Reset all cardholder edit context values.\n patchState({\n cardholderId: null,\n cardholder: null,\n errorMessageId: null,\n isSideBySide: true,\n isAddMode: false,\n privileges: null,\n });\n }\n\n @Receiver({ action: FetchGloballyGrantedPrivilegesAction })\n public static fetchGloballyGrantedPrivileges({ patchState }: StateContext): void {\n const privileges: EvaluatedCardholderPrivileges = {} as EvaluatedCardholderPrivileges;\n Object.entries(CardholderPrivileges).forEach(([key, entityPrivilege]) => {\n privileges[key as keyof EvaluatedCardholderPrivileges] = this.privilegeService.isGlobalPrivilegeGranted(entityPrivilege.id);\n });\n\n this.globalPrivileges = privileges;\n\n patchState({\n privileges,\n });\n }\n\n ngxsOnInit({ dispatch }: StateContext): void {\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((loggedIn: boolean) => {\n if (!loggedIn) {\n dispatch(ClearCardholderEditContextCacheAction);\n } else {\n dispatch(FetchGloballyGrantedPrivilegesAction);\n }\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AsidePosition } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { PluginComponentExposure, PluginComponentRequirements } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { AccessControlFeatureFlags } from '@modules/access-control/feature-flags';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { Constants } from '@src/constants';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\n\n@Component({\n selector: 'app-access-control-task',\n templateUrl: './access-control-task.component.html',\n styleUrls: ['./access-control-task.component.scss'],\n})\n@InternalPluginDescriptor({\n type: AccessControlTaskComponent,\n pluginTypes: [PluginTypes.Task],\n exposure: {\n id: AccessControlTaskComponent.pluginId,\n icon: 'gen-ico-cardholder-group',\n title: 'STE_LABEL_CARDHOLDERS',\n tags: ['access control', 'cardholders', 'STE_TASK_ACCESS_CONTROL', 'STE_LABEL_CARDHOLDERS'],\n priority: 50,\n subTaskPluginType: PluginTypes.AccessControlSubTask,\n } as PluginComponentExposure,\n requirements: {\n features: [KnownFeatures.accessControlId],\n licenses: [KnownLicenses.accessControl],\n globalPrivileges: [KnownPrivileges.accessControlTaskPrivilege],\n enabledFeatureFlags: [AccessControlFeatureFlags.General],\n },\n isSupported: () => true,\n})\nexport class AccessControlTaskComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('91EE769A-EE99-4A2B-8445-34EA43FC1AE5');\n\n public readonly AsidePosition = AsidePosition;\n\n /**\n * Selected subTask (plugin) currently displayed\n */\n public subTaskPlugin: PluginItem | undefined;\n\n constructor(private pluginService: PluginService, public trackingService: TrackingService, private route: ActivatedRoute, private loggerService: LoggerService) {\n super(trackingService);\n }\n\n ngOnInit(): void {\n this.selectSubTaskPlugin().fireAndForget();\n }\n\n private async selectSubTaskPlugin(): Promise {\n this.subTaskPlugin = await this.getSubTaskPluginFromRouteAsync();\n\n if (!this.subTaskPlugin) {\n this.subTaskPlugin = await this.getFirstAvailablePluginAsync();\n }\n\n if (!this.subTaskPlugin) {\n this.loggerService.traceError('No Access Control sub task found!');\n }\n }\n\n private async getSubTaskPluginFromRouteAsync(): Promise {\n const params = this.route.snapshot?.paramMap;\n let pluginItem: PluginItem | undefined;\n if (params?.has(Constants.subTaskIdentifier)) {\n const subTaskId = this.route.snapshot?.paramMap?.get(Constants.subTaskIdentifier) ?? '';\n const { success, value } = SafeGuid.tryParse(subTaskId);\n if (success) {\n pluginItem = (await this.pluginService.getPlugin(PluginTypes.AccessControlSubTask, value, undefined)) ?? undefined;\n }\n }\n return pluginItem;\n }\n\n private async getFirstAvailablePluginAsync(): Promise {\n const subTaskPlugins = await this.pluginService.getPlugins(PluginTypes.AccessControlSubTask).then();\n return subTaskPlugins[0] ?? null;\n }\n}\n","
    \n
    \n \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\n\n@Component({\n selector: 'app-cardholder-widget-base-component',\n template: '',\n})\nexport class CardholderWidgetBaseComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public dataContext?: ContentService;\n public content?: Content;\n public isLoading = true;\n\n protected cardholder: CardholderEntity | null = null;\n protected scClient!: SecurityCenterClient;\n\n protected get monitoredFields(): string[] {\n return [];\n }\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n if (this.content?.source) {\n const sourceId = SafeGuid.parse(this.content?.source);\n if (!sourceId.isEmpty()) {\n await this.getCardholderAsync(sourceId);\n await this.initializeCardholerInfo();\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n protected async getCardholderAsync(cardholderId: IGuid): Promise {\n if (this.scClient) {\n this.cardholder = (await this.scClient.getEntityAsync(\n CardholderEntity,\n cardholderId,\n null,\n null,\n this.monitoredFields.toString()\n )) as CardholderEntity;\n }\n }\n\n protected async initializeCardholerInfo(): Promise {}\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { IAccessPointEntity, AccessPointEntityFields } from 'RestClient/Client/Interface/IAccessPointEntity';\nimport { IEntity, EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { AccessPointEntity } from 'RestClient/Client/Model/AccessControl/AccessPointEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CardholderEntityFields, ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { CardholderWidgetBaseComponent } from './cardholder-widget-base.component';\n\n@Component({\n selector: 'app-cardholder-state-widget-base-component',\n template: '',\n})\nexport class CardholderStateWidgetBaseComponent extends CardholderWidgetBaseComponent implements OnInit, OnDestroy {\n private static monitoredFields = [\n CardholderEntityFields.accessStatusField,\n CardholderEntityFields.lastAccessField,\n CardholderEntityFields.lastAccessLocationField,\n CardholderEntityFields.lastAccessGrantedField,\n ];\n\n public isActive = false;\n public displayLastAccess = false;\n public lastAccessLocation = '';\n public lastAccessTime = '';\n public wasLastAccessGranted = false;\n\n protected entityCacheTask!: IEntityCacheTask;\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(...CardholderStateWidgetBaseComponent.monitoredFields);\n return fields;\n }\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n protected translateService: TranslateService,\n protected timeService: TimeService,\n trackingService: TrackingService\n ) {\n super(securityCenterClientService, trackingService);\n }\n\n public async ngOnDestroy() {\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n protected async getCardholderAsync(cardholderId: IGuid): Promise {\n if (this.scClient) {\n this.entityCacheTask = this.scClient.buildEntityCache(this.monitoredFields);\n this.cardholder = (await this.entityCacheTask.getEntityAsync(CardholderEntity, cardholderId, true)) as CardholderEntity;\n }\n }\n\n protected async initializeCardholerInfo(): Promise {\n await super.initializeCardholerInfo();\n if (this.cardholder && this.entityCacheTask) {\n this.updateIsActive(this.cardholder.accessStatus);\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cardholder,\n () => {\n const _ = this.cardholder?.accessStatus;\n },\n ((_: ICardholderEntity, newValue: string, __: string) => {\n this.updateIsActive(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n if (this.cardholder.lastAccessGranted !== null) {\n this.updateLastAccessTime(this.cardholder.lastAccess);\n await this.updateLastAccessLocationAsync(this.cardholder.lastAccessLocation);\n this.updateWasLastAccessGranted(this.cardholder.lastAccessGranted);\n }\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cardholder,\n () => {\n const _ = this.cardholder?.lastAccessLocation;\n },\n (async (_: ICardholderEntity, newValue: IGuid, __: IGuid) => {\n await this.updateLastAccessLocationAsync(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cardholder,\n () => {\n const _ = this.cardholder?.lastAccess;\n },\n ((entity: ICardholderEntity, _: Date, __: Date) => {\n // TODO: use newValue instead of getting the field from the cardholder once newValue is a correctly formatted Date instead of string\n this.updateLastAccessTime(entity.lastAccess);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cardholder,\n () => {\n const _ = this.cardholder?.lastAccessGranted;\n },\n ((_: ICardholderEntity, newValue: boolean, __: boolean) => {\n this.updateWasLastAccessGranted(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n\n private updateIsActive(accessStatus: string) {\n this.isActive = accessStatus === AccessStatus.Active;\n }\n\n private async updateLastAccessLocationAsync(accessPointId: IGuid) {\n const accessPoint = await this.scClient.getEntityAsync(\n AccessPointEntity,\n accessPointId,\n null,\n null,\n AccessPointEntityFields.parentField\n );\n if (accessPoint) {\n const parentEntity = await this.scClient.getEntityAsync(Entity, accessPoint.parent, null, null, EntityFields.nameField);\n this.lastAccessLocation = parentEntity ? parentEntity.name : (this.translateService.instant('STE_LABEL_LASTACCESSLOCATION_UNKNOWN') as string);\n }\n }\n\n private updateLastAccessTime(time: Date) {\n if (time) {\n this.lastAccessTime = this.timeService.formatTime(time, DateFormat.DateTime, true, true);\n }\n }\n\n private updateWasLastAccessGranted(wasAccessGranted: boolean) {\n this.wasLastAccessGranted = wasAccessGranted;\n this.displayLastAccess = this.lastAccessTime.length > 0 && this.lastAccessLocation.length > 0;\n }\n}\n","\n {{\n (isActive ? 'STE_LABEL_CARDHOLDER_STATUS_ACTIVE' : 'STE_LABEL_CARDHOLDER_STATUS_INACTIVE') | translate\n }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_LASTSEEN' | translate }}: \n \n {{ 'STE_LABEL_FORMAT_LASTSEEN_AT_LOCATION_X_AT_Y_OCLOCK' | translate | stringFormat: lastAccessLocation:lastAccessTime }}\n \n\n","import { Component, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { CardholderStateWidgetBaseComponent } from '../cardholder-state-widget-base.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n if (content && !content.contextContent) {\n return content.type.equals(AccessControlContentTypes.Cardholder);\n }\n return false;\n};\n\n@InternalContentPluginDescriptor({\n type: CardholderActionWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CardholderActionWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\n@Component({\n selector: 'app-cardholder-action-widget',\n templateUrl: './cardholder-action-widget.component.html',\n styleUrls: ['./cardholder-action-widget.component.scss'],\n})\nexport class CardholderActionWidgetComponent extends CardholderStateWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('874BC2AD-0A11-4393-A238-0A650A10027F');\n\n public readonly TextFlavor = TextFlavor;\n\n constructor(securityCenterClientService: SecurityCenterClientService, translateService: TranslateService, timeService: TimeService, trackingService: TrackingService) {\n super(securityCenterClientService, translateService, timeService, trackingService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n\n this.isLoading = false;\n }\n}\n","
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Icon, ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\n\n@Component({\n selector: 'app-cardholder-card',\n templateUrl: './cardholder-card.component.html',\n styleUrls: ['./cardholder-card.component.scss'],\n})\nexport class CardholderCardComponent extends TrackedComponent {\n @Input() public entityName?: string;\n @Input() public groups?: string[];\n @Input() public picture?: string;\n @Input() public guid?: string;\n @Input() public isSelected = false;\n @Input() public isViewCardholdersPrivilegeGranted = false;\n\n @Output() itemSelected: EventEmitter<{ guid: string; picture?: string }> = new EventEmitter<{ guid: string; picture?: string }>();\n\n public readonly Icon = Icon;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly TextFlavor = TextFlavor;\n\n private accessStatus?: AccessStatus;\n\n @Input()\n public set status(value: AccessStatus) {\n this.accessStatus = value;\n }\n public get status(): AccessStatus {\n return this.accessStatus ?? '';\n }\n\n public onCardholderSelected(): void {\n if (this.guid) {\n this.itemSelected.emit({ guid: this.guid, picture: this.picture });\n }\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\nexport const AccessControlCommands = Constants({\n ShuntReader: SafeGuid.parse('BA6D0905-9E72-41A2-B86E-F98855C3E4F4'),\n ShuntReaderDevice: SafeGuid.parse('7E30E47F-B05F-4108-B71D-4C80CF2C037E'),\n UnlockDoor: SafeGuid.parse('9D153743-16E6-432A-B45A-4FA078C18E32'),\n OverrideUnlockSchedule: SafeGuid.parse('26871F1E-4525-458C-9112-0E3B1B5AF48F'),\n ForgiveAntiPassback: SafeGuid.parse('514B164E-D998-4650-B13C-49F0BAFAD922'),\n ActivateDeactivateCardholder: SafeGuid.parse('5F573758-13C7-4B05-B12F-70D7BFAB05D6'),\n ActivateDeactivateCredential: SafeGuid.parse('E7F858B3-75B1-4B19-AD7C-A05764DA4640'),\n ReportLostCredential: SafeGuid.parse('B3356646-7829-4753-91BC-14101CC9A03B'),\n ReportStolenCredential: SafeGuid.parse('80971DBE-50CB-4845-BEC6-F5E57268FDD9'),\n ReportLostCardholderCredential: SafeGuid.parse('5D9AE020-FE2D-4E55-A0B1-D33C89125BCE'),\n ReportStolenCardholderCredential: SafeGuid.parse('57507E74-251F-4605-99AE-15C8BF05E503'),\n ExitFullscreen: SafeGuid.parse('040AC660-8104-4561-8AB5-2B4CAC4DAE5F'),\n});\n","export enum ActivationModeLabel {\n Never = 'STE_LABEL_NEVER',\n ActivateOn = 'STE_LABEL_ACTIVATE_ON',\n}\n","import { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { ExpirationMode } from 'RestClient/Client/Enumerations/ExpirationMode';\n\nexport enum ActiveExpirationModeLabel {\n DontExpire = 'STE_LABEL_NEVER',\n Expiring = 'STE_LABEL_SPECIFIC_DATE',\n ExpiredAfterActivation = 'STE_LABEL_DAYSAFTERFIRSTUSE',\n WhenNotUsed = 'STE_LABEL_DAYSAFTERLASTUSE',\n}\nexport enum InactiveExpirationModeLabel {\n DontExpire = 'STE_LABEL_NEVER',\n ActivateOn = 'STE_LABEL_SPECIFIC_DATE',\n}\n\nexport const stringToExpirationModeKey = (expModeLabel: string | undefined, accessStatus: string): string => {\n if (accessStatus === AccessStatus.Inactive) {\n switch (expModeLabel) {\n case InactiveExpirationModeLabel.DontExpire:\n return ExpirationMode.DontExpire;\n case InactiveExpirationModeLabel.ActivateOn:\n return ExpirationMode.ActivateOn;\n default:\n return '';\n }\n } else {\n switch (expModeLabel) {\n case ActiveExpirationModeLabel.DontExpire:\n return ExpirationMode.DontExpire;\n case ActiveExpirationModeLabel.ExpiredAfterActivation:\n return ExpirationMode.ExpiredAfterActivation;\n case ActiveExpirationModeLabel.Expiring:\n return ExpirationMode.Expiring;\n case ActiveExpirationModeLabel.WhenNotUsed:\n return ExpirationMode.WhenNotUsed;\n default:\n return '';\n }\n }\n};\n","// TODO: Remove when we have a model for that generated by our codegen. Should reflect the enum coming from the Rest API.\nexport enum BypassAntipassbackRules {\n Inherited = 'Inherited',\n Yes = 'Yes',\n No = 'No',\n}\n","import { AbstractControl, FormGroup, UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { LabeledFormControl } from '@shared/forms/LabeledFormControl';\n\nconst addInvalidControlErrors = (invalidControl: AbstractControl, invalidControls: AbstractControl[]) => {\n if (invalidControl instanceof UntypedFormGroup || invalidControl instanceof UntypedFormArray) {\n // Iterate through invalid controls in the group or array and add its control in errors to the errors array.\n for (const innerInvalidControl of Object.values(invalidControl.controls).filter((innerControl) => innerControl.invalid)) {\n addInvalidControlErrors(innerInvalidControl, invalidControls);\n }\n } else {\n invalidControls.push(invalidControl);\n }\n\n return invalidControls;\n};\n\n/**\n * Returns the invalid controls in the form if there is any.\n */\nexport const getInvalidControls = >(form: FormGroup): (LabeledFormControl | AbstractControl)[] => {\n return Object.values(form.controls)\n .filter((control) => control.invalid)\n .reduce((invalidControls: AbstractControl[], currentInvalidControl: AbstractControl) => addInvalidControlErrors(currentInvalidControl, invalidControls), []);\n};\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nimport { AsyncValidatorFn, FormControl, FormControlOptions, FormControlState, ValidatorFn } from '@angular/forms';\n\n/**\n * Typed form control accepting a label which can be used to get the corresponding label to the form control (useful for error toasts).\n */\nexport class LabeledFormControl extends FormControl {\n constructor(\n public label: string,\n formState: T | FormControlState,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[]\n ) {\n super(formState, validatorOrOpts, asyncValidator);\n }\n}\n","export const isValidDate = (date: Date): boolean => {\n const dateYear = date.getFullYear();\n return dateYear > 1 && dateYear < 9999;\n};\n","import { CardholderModel } from '@modules/access-control/cardholder-edit-context.state';\nimport {\n ActivationModeLabel,\n ActiveExpirationModeLabel,\n BypassAntipassbackRules,\n InactiveExpirationModeLabel,\n stringToExpirationModeKey,\n} from '@modules/access-control/enumerations';\nimport { isValidDate } from '@src/app/utilities/date-validator';\nimport moment from 'moment';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { ExpirationMode } from 'RestClient/Client/Enumerations/ExpirationMode';\n\nexport class CardholderHelper {\n public static getExpirationModeLabel = (cardholderModel: CardholderModel): ActiveExpirationModeLabel | InactiveExpirationModeLabel => {\n let expirationModeLabel: ActiveExpirationModeLabel | InactiveExpirationModeLabel;\n if (cardholderModel.accessStatus === AccessStatus.Inactive) {\n expirationModeLabel =\n (Object.entries(InactiveExpirationModeLabel).find(([key]) => key.toLowerCase() === cardholderModel.expirationMode.toLowerCase())?.[1] as\n | InactiveExpirationModeLabel\n | undefined) ?? InactiveExpirationModeLabel.DontExpire;\n } else {\n expirationModeLabel =\n (Object.entries(ActiveExpirationModeLabel).find(([key]) => key.toLowerCase() === cardholderModel.expirationMode.toLowerCase())?.[1] as\n | ActiveExpirationModeLabel\n | undefined) ?? ActiveExpirationModeLabel.DontExpire;\n }\n if (expirationModeLabel === InactiveExpirationModeLabel.ActivateOn && !isValidDate(cardholderModel.expirationDate)) {\n expirationModeLabel = InactiveExpirationModeLabel.DontExpire;\n }\n\n return expirationModeLabel;\n };\n\n public static getActivationModeLabel = (cardholder: CardholderModel): ActivationModeLabel => {\n if (cardholder.accessStatus === AccessStatus.Expired && cardholder.expirationMode !== ExpirationMode.ActivateOn) {\n return ActivationModeLabel.Never;\n }\n const momentDate = moment(cardholder.activationDate);\n return momentDate.isValid() && moment(momentDate).isAfter(moment(0)) ? ActivationModeLabel.ActivateOn : ActivationModeLabel.Never;\n };\n\n public static getBypassAntipassbackRule = (cardholder: CardholderModel): BypassAntipassbackRules => {\n if (cardholder.antipassbackExemptionIsInherited) {\n return BypassAntipassbackRules.Inherited;\n }\n return cardholder.antipassbackExemption ? BypassAntipassbackRules.Yes : BypassAntipassbackRules.No;\n };\n\n public static buildExpirationMode(\n accessStatus: string | undefined,\n activationMode: string | undefined,\n expirationModeValue: ActiveExpirationModeLabel | InactiveExpirationModeLabel | undefined\n ): string {\n return (accessStatus === AccessStatus.Inactive || accessStatus === AccessStatus.Expired) && activationMode === ActivationModeLabel.ActivateOn\n ? ExpirationMode.ActivateOn\n : stringToExpirationModeKey(expirationModeValue, accessStatus ?? '');\n }\n\n public static isEntityNameDefaultValue(cardholderModel: CardholderModel): boolean {\n return cardholderModel.name === CardholderHelper.buildEntityName(cardholderModel);\n }\n\n public static buildEntityName(cardholderModel: CardholderModel): string {\n return `${cardholderModel.firstName} ${cardholderModel.lastName}`.trim();\n }\n}\n","import { AbstractControl, FormArray, FormGroup, ValidationErrors, Validators } from '@angular/forms';\nimport { ActivationModeLabel, ActiveExpirationModeLabel, InactiveExpirationModeLabel } from '@modules/access-control/enumerations';\nimport moment from 'moment';\nimport { StatusFormGroup } from '../cardholder-edit-form-group';\n\nconst invalidRangeError = { invalidRange: true };\n\nconst isStatusFormGroup = (control: FormGroup | FormArray | StatusFormGroup | null): control is StatusFormGroup => {\n return !!control && 'expirationDate' in control.controls && 'activationMode' in control.controls;\n};\n\n/**\n * Returns error only if both the firstName and lastName control are empty. If only one of them is empty and\n * the other one isn't, this validator won't return an error.\n *\n */\nexport const firstNameLastNameValidator = (control: AbstractControl): ValidationErrors | null => {\n const firstNameControl = control.get('firstName');\n const lastNameControl = control.get('lastName');\n\n if (firstNameControl && lastNameControl) {\n const firstNameErrors = Validators.required(firstNameControl);\n const lastNameErrors = Validators.required(lastNameControl);\n\n // Both empty\n if (firstNameErrors !== null && lastNameErrors !== null) {\n firstNameControl.setErrors(firstNameErrors);\n lastNameControl.setErrors(lastNameErrors);\n return firstNameErrors;\n }\n\n firstNameControl.setErrors(null);\n lastNameControl.setErrors(null);\n }\n\n return null;\n};\n\nexport const activationDateValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.parent) {\n return null;\n }\n\n if (!isStatusFormGroup(control.parent)) {\n throw new Error('Invalid form control for activationDateValidator.');\n }\n\n const form = control.parent;\n\n const activationMode = form.controls.activationMode.getRawValue();\n const expirationMode = form.controls.expirationMode.getRawValue();\n const activation = form.controls.activationDate.getRawValue();\n const expiration = form.controls.expirationDate.getRawValue();\n\n if (activationMode === ActivationModeLabel.ActivateOn) {\n // Activation date is valid?\n if (!activation || !moment(activation).isValid()) {\n return invalidRangeError;\n }\n\n // Validating 'activation < expiration' is only relevant when expiration mode is set to specific date\n if (expirationMode !== ActiveExpirationModeLabel.Expiring && expirationMode !== InactiveExpirationModeLabel.ActivateOn) {\n return null;\n }\n\n // If we have an expiration date, make sure expiration date > activation date\n if (expiration && activation > expiration) {\n return invalidRangeError;\n }\n }\n\n return null;\n};\n\nexport const expirationDateValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.parent) {\n return null;\n }\n\n if (!isStatusFormGroup(control.parent)) {\n throw new Error('Invalid form control for expirationDateValidator.');\n }\n\n const form = control.parent;\n\n const expirationMode = form.controls.expirationMode.getRawValue();\n const activation = form.controls.activationDate.getRawValue();\n const expiration = form.controls.expirationDate.getRawValue();\n\n if (expirationMode === ActiveExpirationModeLabel.Expiring || expirationMode === InactiveExpirationModeLabel.ActivateOn) {\n if (!expiration || !moment(expiration).isValid()) {\n return invalidRangeError;\n }\n\n // If we have an activation date, make sure expiration date < activation date\n if (activation && moment(activation).isValid() && activation > expiration) {\n return invalidRangeError;\n }\n }\n\n return null;\n};\n","import { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { CardholderModel } from '@modules/access-control/cardholder-edit-context.state';\nimport { ActivationModeLabel, ActiveExpirationModeLabel, BypassAntipassbackRules, InactiveExpirationModeLabel } from '@modules/access-control/enumerations';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { LabeledFormControl } from '@modules/shared/forms/LabeledFormControl';\nimport { EvaluatedCardholderPrivileges } from '@modules/access-control/interfaces';\nimport { IGuid } from 'safeguid';\nimport { CardholderHelper } from '../cardholder-helper';\nimport { activationDateValidator, expirationDateValidator, firstNameLastNameValidator } from './validators';\n\nexport type IdentityFormGroup = FormGroup<{\n firstName: LabeledFormControl;\n lastName: LabeledFormControl;\n emailAddress: LabeledFormControl;\n mobilePhoneNumber: LabeledFormControl;\n picture: FormControl;\n}>;\n\nexport type StatusFormGroup = FormGroup<{\n accessStatus: FormControl;\n activationDate: FormControl;\n expirationDate: FormControl;\n expirationMode: FormControl;\n activationMode: FormControl;\n expirationDuration: FormControl;\n}>;\n\nexport type AccessRightsFormGroup = FormGroup<{\n groups: LabeledFormControl;\n credentials: LabeledFormControl;\n rules: LabeledFormControl;\n}>;\n\nexport type AdvancedFormGroup = FormGroup<{\n useExtendedGrantTime: FormControl;\n canEscortVisitors: FormControl;\n displayName: FormControl;\n description: FormControl;\n logicalId: FormControl;\n bypassAntipassbackRules: FormControl;\n securityClearance: FormControl;\n isSecurityClearanceInheritedFromGroup: FormControl;\n partitions: FormControl;\n}>;\n\nexport class CardholderEditFormGroup extends FormGroup<{\n identityFormGroup: IdentityFormGroup;\n statusFormGroup: StatusFormGroup;\n accessRightsFormGroup: AccessRightsFormGroup;\n advancedFormGroup: AdvancedFormGroup;\n}> {\n private static readonly defaultExpirationDuration = 1;\n\n constructor(cardholderModel: CardholderModel, isAddMode: boolean, grantedPrivileges: EvaluatedCardholderPrivileges) {\n // TODO: Add the rest of the validations...\n super({\n identityFormGroup: new FormGroup(\n {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n firstName: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_FIRSTNAME',\n { value: cardholderModel.firstName, disabled: !grantedPrivileges.modifyCardholderNamePrivilege && !isAddMode },\n [Validators.maxLength(100)]\n ),\n lastName: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_LASTNAME',\n { value: cardholderModel.lastName, disabled: !grantedPrivileges.modifyCardholderNamePrivilege && !isAddMode },\n [Validators.maxLength(100)]\n ),\n emailAddress: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_EMAIL',\n { value: cardholderModel.emailAddress, disabled: !grantedPrivileges.modifyCardholderNamePrivilege },\n [Validators.maxLength(100), Validators.email]\n ),\n mobilePhoneNumber: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_MOBILEPHONENUMBER',\n { value: cardholderModel.mobilePhoneNumber, disabled: !grantedPrivileges.modifyCardholderNamePrivilege },\n [Validators.maxLength(100), Validators.maxLength(100)]\n ),\n picture: new FormControl({ value: cardholderModel.picture ?? null, disabled: !grantedPrivileges.modifyCardholderPicturePrivilege }),\n },\n { validators: [firstNameLastNameValidator] }\n ),\n\n statusFormGroup: new FormGroup({\n accessStatus: new FormControl({ value: cardholderModel.accessStatus, disabled: !grantedPrivileges.changeCardholderStatusPrivilege }, { nonNullable: true }),\n activationDate: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_ACTIVATIONDATE',\n { value: cardholderModel.activationDate.toISOString(), disabled: !grantedPrivileges.changeCardholderStatusPrivilege },\n {\n nonNullable: true,\n validators: activationDateValidator,\n }\n ),\n expirationDate: new LabeledFormControl(\n 'STE_LABEL_CARDHOLDER_EXPIRATIONDATE',\n { value: cardholderModel.expirationDate.toISOString(), disabled: !grantedPrivileges.changeCardholderStatusPrivilege },\n {\n nonNullable: true,\n validators: expirationDateValidator,\n }\n ),\n activationMode: new FormControl(\n {\n value: CardholderHelper.getActivationModeLabel(cardholderModel),\n disabled: !grantedPrivileges.changeCardholderStatusPrivilege,\n },\n { nonNullable: true }\n ),\n expirationMode: new FormControl(\n {\n value: CardholderHelper.getExpirationModeLabel(cardholderModel),\n disabled: !grantedPrivileges.changeCardholderStatusPrivilege,\n },\n { nonNullable: true }\n ),\n expirationDuration: new FormControl(\n {\n value: cardholderModel.expirationDuration ?? CardholderEditFormGroup.defaultExpirationDuration,\n disabled: !grantedPrivileges.changeCardholderStatusPrivilege,\n },\n { nonNullable: true }\n ),\n }),\n\n accessRightsFormGroup: new FormGroup({\n groups: new LabeledFormControl('', []),\n credentials: new LabeledFormControl('', []),\n rules: new LabeledFormControl('', []),\n }),\n\n advancedFormGroup: new FormGroup({\n useExtendedGrantTime: new FormControl(\n { value: cardholderModel.useExtendedGrantTime, disabled: !grantedPrivileges.changeCardholderOptionsPrivilege },\n { nonNullable: true }\n ),\n canEscortVisitors: new FormControl({ value: cardholderModel.canEscort, disabled: !grantedPrivileges.changeCardholderOptionsPrivilege }, { nonNullable: true }),\n displayName: new FormControl({ value: cardholderModel.name, disabled: !grantedPrivileges.modifyCardholderNamePrivilege && !isAddMode }, { nonNullable: true }),\n description: new FormControl(\n { value: cardholderModel.description, disabled: !grantedPrivileges.modifyCardholderNamePrivilege && !isAddMode },\n { nonNullable: true }\n ),\n logicalId: new FormControl(\n { value: cardholderModel.logicalId, disabled: !grantedPrivileges.generalSettingsLogicalIdPrivilege },\n {\n nonNullable: false,\n validators: [Validators.min(1), Validators.max(9999999)],\n }\n ),\n bypassAntipassbackRules: new FormControl(\n { value: CardholderHelper.getBypassAntipassbackRule(cardholderModel), disabled: !grantedPrivileges.changeCardholderOptionsPrivilege },\n { nonNullable: true }\n ),\n securityClearance: new FormControl(\n { value: cardholderModel.accessPermissionLevel, disabled: !grantedPrivileges.setCardholderSecurityClearancePrivilege },\n { nonNullable: true }\n ),\n isSecurityClearanceInheritedFromGroup: new FormControl(\n { value: cardholderModel.inheritAccessPermissionLevelFromGroup.toString(), disabled: !grantedPrivileges.setCardholderSecurityClearancePrivilege },\n { nonNullable: true }\n ),\n partitions: new FormControl([]),\n }),\n });\n }\n}\n","import { Component, Injector, Input, OnInit } from '@angular/core';\nimport { GenToastService, MeltedModalAction } from '@genetec/gelato-angular';\nimport { CardholderManagementClient } from '@modules/access-control/api/api';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { take } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-delete-modal',\n templateUrl: './cardholder-delete-modal.component.html',\n})\nexport class CardholderDeleteModalComponent extends ConnectionAwareModalComponent implements OnInit {\n @Input() public cardholderId?: SafeGuid;\n @Input() public cardholderName?: string;\n @Input() public onDeleteSuccessful?: () => void;\n\n public readonly modalAction = MeltedModalAction;\n\n constructor(\n protected authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private cardholderManagementClient: CardholderManagementClient,\n private toastService: GenToastService,\n private translateService: TranslateService,\n private logger: LoggerService\n ) {\n super(authService, injector, trackingService);\n }\n\n public onDeleteClicked = (): Promise => {\n if (this.cardholderId) {\n this.cardholderManagementClient\n .delete(this.cardholderId)\n .pipe(take(1))\n .subscribe(\n () => this.onDeleteSuccessful?.(),\n (error) => {\n this.logger.traceDebug(error);\n // TODO: Error toast to be added in separate PBI\n // this.toastService.show({\n // id: 'cardholder-save-error',\n // flavor: ToastFlavor.Error,\n // text: this.translateService.instant('STE_LABEL_ERROR') as string,\n // secondaryText: this.translateService.instant('STE_MESSAGE_ERROR_CARDHOLDERSAVE_ERROR') as string,\n // });\n }\n );\n }\n return Promise.resolve(true);\n };\n}\n","\n \n {{ 'STE_MESSAGE_CONFIRM_CARDHOLDER_DELETION' | translate | stringFormat: [this.cardholderName] }}\n \n\n","export enum UnsavedChangesModalActions {\n Discard = 'discard',\n Save = 'save',\n Cancel = 'cancel',\n}\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { MeltedModalAction, TextFlavor } from '@genetec/gelato-angular';\nimport { TypedConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { UnsavedChangesModalActions } from '../../../enumerations/unsaved-changes-modal-actions';\n\n@Component({\n selector: 'app-unsaved-changes-modal',\n templateUrl: './unsaved-changes-modal.component.html',\n})\nexport class CardholderCancelModalComponent extends TypedConnectionAwareModalComponent implements OnInit {\n public readonly MeltedModalAction = MeltedModalAction;\n public TextFlavor = TextFlavor;\n\n constructor(protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n public show(): void {\n if (this.genModalComponent) {\n this.genModalComponent.show();\n }\n }\n\n public onSave = (): Promise => {\n this.emitResult(UnsavedChangesModalActions.Save);\n return Promise.resolve(true);\n };\n\n public onDiscard = (): Promise => {\n this.emitResult(UnsavedChangesModalActions.Discard);\n return Promise.resolve(true);\n };\n\n public onCancel = (): Promise => {\n this.emitResult(UnsavedChangesModalActions.Cancel);\n return Promise.resolve(true);\n };\n}\n","\n \n {{ 'STE_MESSAGE_UNSAVED_CHANGES' | translate }}\n \n\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n// ==========================================================================\n// Copyright (C) 2023 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n/**\n * Wrapper service around native JS FileReader\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FileReaderService {\n public readAsDataURL(file: File): Observable {\n const fileReader = new FileReader();\n return new Observable((observer) => {\n fileReader.readAsDataURL(file);\n fileReader.onload = () => {\n observer.next(fileReader.result as string);\n observer.complete();\n };\n fileReader.onerror = () => {\n observer.error(fileReader.error);\n };\n });\n }\n}\n","
    \n \n \n \n \n\n \n \n \n \n \n
    \n\n\n\n \n \n {{ 'STE_LABEL_CHANGE' | translate }}\n \n \n \n {{ 'STE_LABEL_REMOVE' | translate }}\n \n\n\n\n\n\n\n {{ 'STE_LABEL_REMOVE' | translate }} {{ 'STE_LABEL_CARDHOLDER_PICTURE' | translate | lowercase }}\n {{ 'STE_MESSAGE_CONFIRM_CARDHOLDER_PICTURE_REMOVAL' | translate }}\n \n {{ 'STE_BUTTON_CANCEL' | translate }}\n {{ 'STE_LABEL_REMOVE' | translate }}\n \n\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Icon, ImageFit, ImageFlavor, ButtonFlavor } from '@genetec/gelato';\nimport { AccessControlFeatureFlags } from '@modules/access-control/feature-flags';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { FileReaderService } from '@shared/services/file-reader/file-reader.service';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-editable-picture',\n templateUrl: './cardholder-editable-picture.component.html',\n styleUrls: ['./cardholder-editable-picture.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CardholderEditablePictureComponent),\n multi: true,\n },\n ],\n})\nexport class CardholderEditablePictureComponent implements ControlValueAccessor {\n @ViewSelectSnapshot(FeatureFlagsState.featureFlags(AccessControlFeatureFlags.CardholderEditPicture))\n public isEditFeatureFlagEnabled!: boolean;\n\n @ViewChild('removePictureModal') public removePictureModal!: HTMLGenModalElement;\n @Input() readonly = false;\n\n public cardholderPictureSrc$: Observable;\n\n public isMouseOverCardholderPicture = false;\n public isPictureEditMenuOpen = false;\n\n public readonly Icon = Icon;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n\n protected isLoadingSubject = new BehaviorSubject(false);\n protected isDisabledSubject = new BehaviorSubject(false);\n\n private imageFileDataSubject = new BehaviorSubject(undefined);\n private cardholderPictureSubject = new BehaviorSubject(undefined);\n\n constructor(private fileReaderService: FileReaderService) {\n this.cardholderPictureSrc$ = combineLatest([this.cardholderPictureSubject, this.imageFileDataSubject]).pipe(\n map(([cardholderPicture, imageFileData]) => imageFileData ?? cardholderPicture)\n );\n }\n\n public onImageFileSelected(event: Event): void {\n const element = event.currentTarget as HTMLInputElement;\n this.readImageFileAsBase64(element.files?.item(0));\n }\n\n public readImageFileAsBase64(file?: File | null): void {\n if (file?.type.includes('image')) {\n this.isLoadingSubject.next(true);\n\n this.fileReaderService\n .readAsDataURL(file)\n .pipe(untilDestroyed(this))\n .subscribe(\n (result) => {\n const pictureData = result?.split(',')[1] ?? ''; // Remove base64 prefix;\n\n this.imageFileDataSubject.next(pictureData);\n this.onChange(pictureData);\n\n this.isLoadingSubject.next(false);\n },\n (error) => this.isLoadingSubject.next(false) // Error handling later\n );\n }\n }\n\n public removePicture(): void {\n this.imageFileDataSubject.next('');\n this.onChange('');\n this.toggleRemovePictureConfirmationModal(false);\n }\n\n public toggleMouseOver(isMouseOverPicture: boolean): void {\n this.isMouseOverCardholderPicture = isMouseOverPicture;\n }\n\n public toggleRemovePictureConfirmationModal(open: boolean): void {\n if (open) {\n this.removePictureModal.show()?.fireAndForget();\n } else {\n this.removePictureModal.close()?.fireAndForget();\n }\n }\n\n onChange: (value?: string) => void = () => {};\n onTouch: () => void = () => {};\n\n writeValue(value?: string): void {\n this.cardholderPictureSubject.next(value);\n }\n\n registerOnChange(fn: (value?: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSubject.next(isDisabled);\n }\n}\n","\n
    \n \n \n \n
    \n
    \n \n {{ formGroup.controls.firstName.label | translate }}\n \n \n
    \n
    \n \n {{ formGroup.controls.lastName.label | translate }}\n \n \n
    \n
    \n \n {{ formGroup.controls.emailAddress.label | translate }}\n \n \n
    \n
    \n \n {{ formGroup.controls.mobilePhoneNumber.label | translate }}\n \n \n
    \n
    \n
    \n
    \n","import { Component, Input } from '@angular/core';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { IdentityFormGroup } from '../cardholder-edit-form-group';\n\n@Component({\n selector: 'app-cardholder-identity-form',\n templateUrl: './cardholder-identity-form.component.html',\n styleUrls: ['./cardholder-identity-form.component.scss'],\n})\nexport class CardholderIdentityFormComponent {\n @ViewSelectSnapshot(CardholderEditContextState.cardholder)\n public cardholder!: ReturnType;\n\n @ViewSelectSnapshot(CardholderEditContextState.isPrivilegeGranted('modifyCardholderNamePrivilege'))\n public hasModifyCardholderNamePrivilege!: boolean;\n\n @Input() formGroup?: IdentityFormGroup;\n @Input() readonly = false;\n}\n","\n {{ 'STE_LABEL_STATUS' | translate }}\n
    \n
    \n \n \n
    \n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n {{ 'STE_UNIT_DAYS_LC' | translate }}\n
    \n
    \n
    \n \n\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { TextFlavor } from '@genetec/gelato';\nimport { CalendarFlavor, GenComboboxComponent, GenMeltedItem, Severity } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getAccessStatusResourceString } from '@modules/shared/utilities/accessStatusTranslate';\nimport { ActivationModeLabel, ActiveExpirationModeLabel, InactiveExpirationModeLabel } from '@modules/access-control/enumerations';\nimport moment from 'moment';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { isValidDate } from '@src/app/utilities/date-validator';\nimport { StatusFormGroup } from '../cardholder-edit-form-group';\n\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-status-form',\n templateUrl: './cardholder-status-form.component.html',\n styleUrls: ['./cardholder-status-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardholderStatusFormComponent implements OnDestroy, OnChanges {\n @ViewChild('activationMode') activationModeCombobox?: GenComboboxComponent;\n\n @Input() formGroup?: StatusFormGroup;\n @Input() readonly = false;\n\n @ViewSelectSnapshot(CardholderEditContextState.isPrivilegeGranted('changeCardholderStatusPrivilege'))\n public hasChangeCardholderStatusPrivilege!: boolean;\n\n @ViewSelectSnapshot(CardholderEditContextState.isAddMode)\n public isAddMode!: boolean;\n\n public selectedStatusItem: GenMeltedItem | null = null;\n public statuses!: GenMeltedItem[];\n public activationModes!: GenMeltedItem[];\n public activeExpirationModes!: GenMeltedItem[];\n public inactiveExpirationModes!: GenMeltedItem[];\n\n public readonly AccessStatus = AccessStatus;\n public readonly ActivationMode = ActivationModeLabel;\n public readonly ActiveExpirationMode = ActiveExpirationModeLabel;\n public readonly InactiveExpirationMode = InactiveExpirationModeLabel;\n public readonly errorSeverity = Severity.Error;\n public readonly dateTimeFlavor = CalendarFlavor.DateTime;\n public readonly header3Flavor = TextFlavor.Header3;\n\n public controls?: StatusFormGroup['controls'];\n public activationDate = '';\n private subscriptionCollection = new SubscriptionCollection();\n\n constructor(private translateService: TranslateService) {\n this.createAndTranslateItems();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.formGroup) {\n if (changes.formGroup.previousValue) {\n this.subscriptionCollection.unsubscribeAll();\n }\n if (changes.formGroup.currentValue) {\n this.initializeSubscriptions();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptionCollection.unsubscribeAll();\n }\n\n public isExpirationDateOtherThanDontExpire(): boolean {\n if (this.formGroup?.value.expirationMode === ActiveExpirationModeLabel.DontExpire) {\n return false;\n }\n // If ExpirationMode === ActivateOn, we need to verify if the ExpirationDate is valid or not.\n if (this.formGroup?.value.expirationMode === InactiveExpirationModeLabel.ActivateOn) {\n const isValid = isValidDate(moment(this.formGroup?.value.expirationDate).toDate());\n if (!isValid) {\n return false;\n }\n }\n\n return true;\n }\n\n private initializeSubscriptions() {\n if (!this.formGroup) {\n return;\n }\n\n this.subscriptionCollection.unsubscribeAll(); // Unsubscribe of previous form if needed.\n\n this.refreshStatusLayout(this.formGroup.getRawValue().accessStatus);\n\n this.subscriptionCollection.add(\n this.formGroup.controls.accessStatus.valueChanges.pipe(untilDestroyed(this)).subscribe((newStatus) => this.refreshStatusLayout(newStatus)),\n this.formGroup.controls.activationMode.valueChanges.pipe(untilDestroyed(this)).subscribe((newActivationMode) => this.updateActivationMode(newActivationMode)),\n this.formGroup.controls.expirationMode.valueChanges.pipe(untilDestroyed(this)).subscribe((newExpirationMode) => this.updateExpirationMode(newExpirationMode))\n );\n }\n\n private refreshStatusLayout(accessStatus: AccessStatus) {\n if (!this.formGroup) {\n return;\n }\n\n const isDefaultValue = this.formGroup.controls.accessStatus.defaultValue === accessStatus;\n\n this.assignNonSelectableComboboxItemIfApplicable(accessStatus);\n\n switch (accessStatus) {\n case AccessStatus.Active: {\n let activationDate = '';\n const defaultActivationDateMoment = isDefaultValue ? moment(this.formGroup.controls.activationDate.defaultValue ?? 0) : moment();\n // If date is start of time, set today as activationDate, otherwise use previously defined activation date.\n if (defaultActivationDateMoment.isValid() && moment(defaultActivationDateMoment).isAfter(moment(0))) {\n activationDate = defaultActivationDateMoment.toISOString();\n this.formGroup.controls.activationMode.reset();\n this.formGroup.controls.expirationMode.reset();\n } else {\n activationDate = moment().toISOString();\n this.formGroup.controls.activationMode.setValue(ActivationModeLabel.ActivateOn);\n this.formGroup.controls.expirationMode.reset(ActiveExpirationModeLabel.DontExpire);\n }\n\n this.formGroup.controls.activationDate.setValue(activationDate);\n this.activationDate = moment(activationDate).format('L LT'); // 09/04/1986 8:30 PM\n break;\n }\n default:\n if (this.isAddMode) {\n this.formGroup.controls.activationMode.reset(ActivationModeLabel.Never);\n this.formGroup.controls.expirationMode.reset(InactiveExpirationModeLabel.DontExpire);\n } else {\n this.formGroup.controls.activationMode.reset();\n this.formGroup.controls.expirationMode.reset();\n }\n\n this.activationDate = '';\n break;\n }\n }\n\n private updateActivationMode(activationMode: ActivationModeLabel) {\n if (!this.formGroup) {\n return;\n }\n\n switch (activationMode) {\n case ActivationModeLabel.Never:\n this.formGroup.controls.activationDate.setValue(null);\n this.formGroup.controls.expirationMode.setValue(ActiveExpirationModeLabel.DontExpire);\n break;\n case ActivationModeLabel.ActivateOn: {\n const today = moment();\n this.formGroup.controls.activationDate.setValue(today.toISOString() || this.formGroup.controls.activationDate.defaultValue);\n this.formGroup.controls.expirationMode.setValue(InactiveExpirationModeLabel.ActivateOn);\n break;\n }\n }\n }\n private updateExpirationMode(expirationMode: ActiveExpirationModeLabel | InactiveExpirationModeLabel) {\n if (!this.formGroup) {\n return;\n }\n const activationDateValue = this.formGroup.controls.activationDate.getRawValue();\n const accessStatusValue = this.formGroup.controls.accessStatus.getRawValue();\n\n switch (expirationMode) {\n case InactiveExpirationModeLabel.ActivateOn:\n case ActiveExpirationModeLabel.Expiring:\n if (accessStatusValue === AccessStatus.Inactive && isValidDate(moment(activationDateValue).toDate())) {\n this.formGroup.controls.expirationDate.setValue(moment(activationDateValue).add(1, 'days').toISOString());\n } else {\n this.formGroup.controls.expirationDate.setValue(moment().add(1, 'days').toISOString());\n }\n break;\n default:\n // DontExpire / ExpiredAfterActivation / WhenNotUsed\n this.formGroup.controls.expirationDate.setValue(null);\n this.resetExpirationDuration();\n break;\n }\n }\n\n /**\n * Initializes item in the various comboboxes.\n */\n private createAndTranslateItems() {\n this.statuses = [\n {\n id: AccessStatus.Active,\n text: this.translateService.instant(getAccessStatusResourceString(AccessStatus.Active)) as string,\n },\n {\n id: AccessStatus.Inactive,\n text: this.translateService.instant(getAccessStatusResourceString(AccessStatus.Inactive)) as string,\n },\n ];\n\n this.activationModes = Object.values(ActivationModeLabel).map(\n (activationMode) =>\n ({\n id: activationMode,\n text: this.translateService.instant(activationMode) as string,\n } as GenMeltedItem)\n );\n\n this.updateExpirationModesItems();\n }\n\n private updateExpirationModesItems(): void {\n this.activeExpirationModes = Object.values(ActiveExpirationModeLabel).map(\n (expirationMode) =>\n ({\n id: expirationMode,\n text: this.translateService.instant(expirationMode) as string,\n } as GenMeltedItem)\n );\n this.inactiveExpirationModes = Object.values(InactiveExpirationModeLabel).map(\n (expirationMode) =>\n ({\n id: expirationMode,\n text: this.translateService.instant(expirationMode) as string,\n } as GenMeltedItem)\n );\n }\n\n private assignNonSelectableComboboxItemIfApplicable(accessStatus: AccessStatus) {\n // Some possible access status are not selectable in the dropdown menu (Expired, Stolen, etc.), so assign item manually.\n const selectedStatus = this.statuses.find((item) => item.id === accessStatus);\n if (!selectedStatus) {\n this.selectedStatusItem = {\n id: accessStatus,\n text: this.translateService.instant(getAccessStatusResourceString(accessStatus)) as string,\n } as GenMeltedItem;\n }\n }\n\n private resetExpirationDuration() {\n if (!this.formGroup) {\n return;\n }\n\n if (this.formGroup.controls.expirationDuration.defaultValue <= 0) {\n this.formGroup.controls.expirationDuration.setValue(1);\n } else {\n this.formGroup.controls.expirationDuration.reset();\n }\n }\n}\n","import { Constants } from '@shared/utilities/constants';\nimport { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2023 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const EntityBrowserRefreshTypes = Constants({\n UnassignedCredentialView: SafeGuid.parse('C6F210F3-6277-44E1-A798-16AD5D2B6DE3'),\n});\n","\n\n{{ headerTitle }}\n\n \n \n \n \n {{ entityCount }} items\n \n \n \n \n 0\"\n [disabled]=\"forbidDelete$ | async\"\n [hidden]=\"!hasRequiredPrivileges\"\n [flavor]=\"ButtonFlavor.Flat\"\n (click)=\"removeAllSelectedRows()\"\n >\n \n \n \n \n \n \n \n \n {{ emptyMessage }} \n \n 0\">\n {{ 'STE_LABEL_NAME' | translate }}\n \n {{ columnDescriptor.columnName }}\n \n \n \n \n
    \n \n {{ entity.data.name }}\n
    \n
    \n \n \n \n
    \n \n
    \n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnChanges, OnInit, ViewChild } from '@angular/core';\nimport { ModalEntitiesSelectorComponent } from '@modules/shared/components/entity-browser/modal-entities-selector/modal-entities-selector.component';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { Color } from '@genetec/gelato-angular';\nimport { Icon, TableDensity, SelectionType, TextFlavor, ButtonFlavor, TableFlavor } from '@genetec/gelato';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { StateObservable } from '@src/app/store/decorators/state-observable.decorator';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Select } from '@ngxs/store';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CardholderEditService, CardholderRelationEntityModel, CardholderRelationType } from '@modules/access-control/services/cardholder-edit-service';\nimport { IGuid } from 'safeguid';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { map } from 'rxjs/operators';\nimport { TypedSimpleChanges } from '@shared/utilities/typed-simple-changes';\nimport { CardholderRelationsColumnDescriptor } from './interfaces';\n\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-relations-sub-form[entityType]',\n templateUrl: './cardholder-relations-sub-form.component.html',\n styleUrls: ['./cardholder-relations-sub-form.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CardholderRelationsSubFormComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardholderRelationsSubFormComponent implements OnInit, OnChanges, ControlValueAccessor {\n @Input() control?: UntypedFormControl;\n @Input() entityType!: CardholderRelationType;\n @Input() headerTitle?: string;\n @Input() modalTitle = '';\n @Input() emptyMessage: string = this.translateService.instant('STE_LABEL_NO_ITEMS') as string;\n @Input() formReset$?: Observable;\n @Input() showHeader = true;\n @Input() readonly = false;\n @Input() showDescriptionColumn = true;\n @Input() showDelete = true;\n @Input() showAdd = true;\n @Input() excludedIds: IGuid[] = [];\n @Input() hasRequiredPrivileges = false;\n @Input() refresherType?: IGuid;\n @Input() extraColumnsDescriptors?: CardholderRelationsColumnDescriptor[];\n\n @ViewChild('entitiesSelector') public entitiesSelector?: ModalEntitiesSelectorComponent;\n\n @Select(CardholderEditContextState.cardholderId)\n public cardholderId$!: StateObservable;\n\n public readonly Color = Color;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly TextFlavor = TextFlavor;\n public readonly Icon = Icon;\n public readonly SelectionType = SelectionType;\n public readonly TableDensity = TableDensity;\n public readonly TableFlavor = TableFlavor;\n\n public touched = false;\n public forbidDelete$!: Observable;\n\n protected selectedTableRowIdsSubject = new BehaviorSubject([] as IGuid[]);\n protected entitiesSubject = new BehaviorSubject([]);\n protected entityBrowserFilterSubject!: BehaviorSubject;\n protected isLoadingSubject = new BehaviorSubject(true);\n\n private currentCardholderId?: IGuid;\n private onCardholderChange: Subject = new Subject();\n private selectedIds: IGuid[] = [];\n\n constructor(private cardholderEditService: CardholderEditService, private logger: LoggerService, private translateService: TranslateService) {}\n\n ngOnChanges(changes: TypedSimpleChanges): void {\n if (changes.entityType || changes.refresherType) {\n const entityBrowserFilter = new EntityBrowserFilter(this.entityType);\n if (this.refresherType) {\n entityBrowserFilter.refresherType = this.refresherType;\n }\n this.entityBrowserFilterSubject.next(entityBrowserFilter);\n }\n }\n\n ngOnInit(): void {\n const entityBrowserFilter = new EntityBrowserFilter(this.entityType);\n if (this.refresherType) {\n entityBrowserFilter.refresherType = this.refresherType;\n }\n this.entityBrowserFilterSubject = new BehaviorSubject(entityBrowserFilter);\n this.formReset$?.pipe(untilDestroyed(this)).subscribe(async (cardholderId: IGuid | undefined) => {\n this.currentCardholderId = cardholderId;\n this.onCardholderChange.next();\n this.selectedIds = (await this.cardholderEditService.fetchCardholderRelationIdsAsync(cardholderId, this.entityType)) || [];\n this.updateDisplayedEntities(this.selectedIds);\n });\n this.forbidDelete$ = combineLatest([this.selectedTableRowIdsSubject, this.entitiesSubject]).pipe(\n map(([selected, entities]) =>\n selected.some((id) => {\n const associatedEntity = entities.find((entity) => entity.id.equals(id));\n return !associatedEntity?.isDeletable;\n })\n )\n );\n }\n\n public removeEntity(id: IGuid): void {\n this.onTouched();\n\n this.selectedIds = this.selectedIds.filter((selectedId) => !selectedId.equals(id));\n this.updateDisplayedEntities(this.selectedIds || []);\n\n this.onChange(this.selectedIds);\n }\n\n public removeAllSelectedRows(): void {\n this.onTouched();\n const selectedTableRowIds = this.selectedTableRowIdsSubject.getValue();\n\n this.selectedIds = this.selectedIds.filter((id1) => !selectedTableRowIds.find((id2) => id1.equals(id2)));\n this.selectedTableRowIdsSubject.next([]);\n\n this.removeNonIncludedEntities(this.selectedIds ?? []);\n\n this.onChange(this.selectedIds);\n }\n\n public toggleRowSelection(rowId: IGuid): void {\n const selectedTableRowIds = this.selectedTableRowIdsSubject.getValue();\n if (selectedTableRowIds.includes(rowId)) {\n selectedTableRowIds.remove(rowId);\n } else {\n selectedTableRowIds.push(rowId);\n }\n this.selectedTableRowIdsSubject.next(selectedTableRowIds);\n }\n\n public onEntityIdsSelected(ids: IGuid[]): void {\n this.onTouched();\n\n this.selectedIds.push(...ids);\n this.updateDisplayedEntities(this.selectedIds || []);\n\n this.onChange(this.selectedIds);\n }\n\n openAddEntitiesModal(): void {\n this.entitiesSelector?.show();\n }\n\n writeValue(selectedIds: IGuid[] | null): void {\n this.selectedIds = selectedIds || [];\n }\n\n registerOnChange(onChange: (selectedIds: IGuid[]) => Record): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => unknown): void {\n this.onTouched = onTouched;\n }\n\n private onTouched: () => unknown = () => {};\n\n private onChange = (_: IGuid[]): void => {};\n\n private updateEntityBrowserExcludedEntities(alreadySelectedIds: IGuid[]) {\n const entityBrowserFilter = this.entityBrowserFilterSubject?.getValue();\n if (entityBrowserFilter) {\n entityBrowserFilter.excludedEntities.clear();\n const ids = [...alreadySelectedIds, ...this.excludedIds];\n ids.forEach((id) => entityBrowserFilter?.excludedEntities.add(id));\n this.entityBrowserFilterSubject.next(entityBrowserFilter);\n }\n }\n\n private removeNonIncludedEntities(idsToKeep: IGuid[]) {\n // Keep only entities included in incoming list\n const remainingEntities = this.entitiesSubject.getValue().filter((entity) => idsToKeep.some((id) => id.equals(entity.id)));\n this.entitiesSubject.next(remainingEntities);\n\n // updates entity-browser's excluded entities\n this.updateEntityBrowserExcludedEntities(idsToKeep);\n }\n\n private updateDisplayedEntities(ids: IGuid[]) {\n // updates entities\n this.cardholderEditService\n .fetchRelationEntitiesAsync(ids, this.currentCardholderId, this.entityType)\n .then((entities) => {\n this.entitiesSubject.next(entities);\n this.isLoadingSubject.next(false);\n })\n .catch((error) => this.logger.traceDebug(error));\n\n // updates entity-browser's excluded entities\n this.updateEntityBrowserExcludedEntities(ids);\n\n this.selectedTableRowIdsSubject.next([]);\n }\n}\n","
    \n {{ 'STE_TITLE_CARDHOLDER_ACCESS_RIGHTS' | translate }}\n \n \n \n \n \n \n
    \n\n\n
    \n {{ entityData.description }}\n
    \n
    \n\n
    \n \n {{ entityData.accessStatus }}\n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { ButtonFlavor, Color } from '@genetec/gelato-angular';\nimport { StateObservable } from '@src/app/store/decorators/state-observable.decorator';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { Select } from '@ngxs/store';\nimport { CardholderEditService, CardholderRelationType } from '@modules/access-control/services/cardholder-edit-service';\nimport { Observable } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { EntityBrowserRefreshTypes } from '@modules/access-control/entity-browser/enumerations/entity-browser-refresher-types';\nimport { SharedEntityBrowserRefreshTypes } from '@shared/entity-browser/enumerations/shared-entity-browser-refresher-types';\nimport { CardholderEditFormGroup } from '../cardholder-edit-form-group';\n\n@Component({\n selector: 'app-cardholder-access-rights-form',\n templateUrl: './cardholder-access-rights-form.component.html',\n styleUrls: ['./cardholder-access-rights-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardholderAccessRightsFormComponent {\n @Input() formGroup?: CardholderEditFormGroup['controls']['accessRightsFormGroup'];\n @Input() formReset$?: Observable;\n @Input() readonly = false;\n\n @Select(CardholderEditContextState.cardholderId)\n public cardholderId$!: StateObservable;\n\n @Select(CardholderEditContextState.isPrivilegeGranted('modifyCardholderGroupsPrivilege'))\n public hasModifyCardholderGroupsPrivilege$!: StateObservable>;\n\n @Select(CardholderEditContextState.isPrivilegeGranted('modifyCredentialAssociationToCardholderPrivilege'))\n public hasModifyCredentialPrivilege$!: StateObservable>;\n\n @Select(CardholderEditContextState.isPrivilegeGranted('modifyAccessRulesPrivilege'))\n public hasModifyAccessRulesPrivilege$!: StateObservable>;\n\n public readonly Colors = Color;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly CardholderRelationType = CardholderRelationType;\n public readonly Flavor = TextFlavor;\n\n public readonly EntityBrowserRefreshTypes = EntityBrowserRefreshTypes;\n public readonly SharedEntityBrowserRefreshTypes = SharedEntityBrowserRefreshTypes;\n public readonly excludedCardholdersGroupIds = CardholderEditService.excludedCardholdersGroupIds;\n public readonly excludedAccessRulesIds = CardholderEditService.excludedAccessRulesIds;\n}\n","\n
    \n \n \n
    \n
    \n \n {{ 'STE_LABEL_CARDHOLDER_USE_EXTENDED_GRANT_TIME' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_CAN_ESCORT_VISITORS' | translate }}\n \n
    \n\n
    \n \n {{ 'STE_LABEL_CARDHOLDER_DISPLAY_NAME' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_DESCRIPTION' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_LOGICAL_ID' | translate }}\n \n \n
    \n\n
    \n {{ 'STE_LABEL_CARDHOLDER_BYPASS_ANTIPASSBACK_RULES' | translate }}\n \n {{ 'STE_LABEL_CARDHOLDER_BYPASS_ANTIPASSBACK_RULES_INHERITED' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_BYPASS_ANTIPASSBACK_RULES_YES' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_BYPASS_ANTIPASSBACK_RULES_NO' | translate }}\n \n
    \n\n
    \n {{ 'STE_LABEL_CARDHOLDER_SECURITY_CLEARANCE' | translate }}\n\n \n {{ 'STE_LABEL_CARDHOLDER_SECURITY_CLEARANCE_INHERITED' | translate }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_SECURITY_CLEARANCE_CUSTOM' | translate }}\n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { ButtonFlavor } from '@genetec/gelato-angular';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { BypassAntipassbackRules } from '@modules/access-control/enumerations';\nimport { CardholderRelationType } from '@modules/access-control/services/cardholder-edit-service';\nimport { ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { TypedSimpleChanges } from '@shared/utilities/typed-simple-changes';\nimport { Observable } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { AdvancedFormGroup } from '../cardholder-edit-form-group';\n\n@Component({\n selector: 'app-cardholder-advanced-form',\n templateUrl: './cardholder-advanced-form.component.html',\n styleUrls: ['./cardholder-advanced-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardholderAdvancedFormComponent implements OnChanges {\n @ViewSelectSnapshot(CardholderEditContextState.isPrivilegeGranted('modifyCardholderNamePrivilege'))\n public hasChangeCardholderNamePrivilege!: boolean;\n\n @ViewSelectSnapshot(CardholderEditContextState.isPrivilegeGranted('changeCardholderOptionsPrivilege'))\n public hasChangeCardholderOptionsPrivilege!: boolean;\n\n @ViewSelectSnapshot(CardholderEditContextState.isPrivilegeGranted('generalSettingsLogicalIdPrivilege'))\n public hasGeneralSettingsLogicalIdPrivilege!: boolean;\n\n @Input() formGroup?: AdvancedFormGroup;\n @Input() formReset$?: Observable;\n @Input() readonly = false;\n\n public readonly BypassAntipassbackRules = BypassAntipassbackRules;\n public readonly CardholderRelationType = CardholderRelationType;\n public readonly ButtonFlavor = ButtonFlavor;\n\n constructor() {}\n\n public ngOnChanges(changes: TypedSimpleChanges): void {\n // TODO: Use gelato component disabled input instead when this bug is fixed https://dev.azure.com/GenetecCentral/UXDev/_workitems/edit/70293/\n if (changes.readonly.currentValue) {\n this.formGroup?.disable({ emitEvent: false });\n } else {\n this.formGroup?.enable({ emitEvent: false });\n }\n }\n\n public onPassbackModeChanged(event: CustomEvent): void {\n // Workaround while the bug preventing correct value changes with gen-radio+reactive forms is still there\n this.formGroup?.controls.bypassAntipassbackRules.setValue(event.detail as BypassAntipassbackRules);\n }\n\n public onClearanceModeChanged(event: CustomEvent): void {\n // Workaround while the bug preventing correct value changes with gen-radio+reactive forms is still there\n this.formGroup?.controls.isSecurityClearanceInheritedFromGroup.setValue(event.detail);\n\n this.formGroup?.controls.securityClearance.reset();\n }\n}\n","
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n {{ 'STE_TITLE_NEW_CARDHOLDER' | translate }} \n \n \n \n \n {{ 'STE_MESSAGE_INFO_FEDERATED_EXTERNAL_READONLY' | translate }}\n \n \n \n {{ cardholder.firstName }} {{ cardholder.lastName }}\n \n \n {{ 'STE_LABEL_CARDHOLDER_LASTSEEN' | translate }}: \n {{ smartLastAccessString }}\n \n
    \n
    \n \n \n 0\"\n (click)=\"toggleMoreMenu()\"\n [flavor]=\"ButtonFlavor.Flat\"\n appTooltip=\"{{ 'STE_BUTTON_CARDHOLDER_SHOWMORE' | translate }}\"\n [genAutomaticNavigation]=\"true\"\n >\n \n \n \n \n {{ 'STE_BUTTON_CANCEL' | translate }}\n \n \n {{ (isAddMode ? 'STE_BUTTON_ADD' : 'STE_BUTTON_SAVE') | translate }}\n \n
    \n
    \n
    \n \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n\n \n \n
    \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n
    \n
    \n\n \n \n \n {{ cardholderErrorMessageId ?? 'STE_MESSAGE_INFO_NO_CARDHOLDER_SELECTED' | translate }}\n \n\n \n {{ 'STE_BUTTON_BACK' | translate }}\n \n \n
    \n","import { Component, ViewChild } from '@angular/core';\nimport { TextFlavor, ButtonFlavor, ButtonType } from '@genetec/gelato';\nimport { Color } from '@genetec/gelato-angular';\nimport { Cardholder, CardholderManagementClient } from '@modules/access-control/api/api';\nimport { DateFormat, GenMenu, GenToastService, ToastFlavor, MeltedIcon, GenModalService } from '@genetec/gelato-angular';\nimport { CardholderEditContextState, CardholderModel } from '@modules/access-control/cardholder-edit-context.state';\nimport { deepUpdateValueAndValidity } from '@modules/shared/forms';\nimport { DateHelper } from '@modules/shared/utilities/date.helper';\nimport { SelectSnapshot, ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter } from '@src/app/store';\nimport { StateEmitter } from '@src/app/store/decorators/state-emitter.decorator';\nimport { StateObservable } from '@src/app/store/decorators/state-observable.decorator';\nimport { BehaviorSubject, Observable, combineLatest, Subject } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { take, startWith, takeUntil, map } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { BypassAntipassbackRules } from '@modules/access-control/enumerations';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { ContextMenuItem } from '@modules/shared/interfaces/context-menu-item/context-menu-item';\nimport { CardholderEditService } from '@modules/access-control/services/cardholder-edit-service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { notNullOrUndefined } from '@modules/shared/operators/not-null-or-undefined';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { getInvalidControls } from '@shared/forms/form-helpers';\nimport { FormControl } from '@angular/forms';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { CardholderEditFormGroup } from '../cardholder-edit-form/cardholder-edit-form-group';\nimport { ActiveExpirationModeLabel } from '../../../enumerations/expiration-mode';\nimport { CardholderDeleteModalComponent } from '../cardholder-delete-modal/cardholder-delete-modal.component';\nimport { CardholderCancelModalComponent } from '../unsaved-changes-modal/unsaved-changes-modal.component';\nimport { UnsavedChangesModalActions } from '../../../enumerations/unsaved-changes-modal-actions';\nimport { CardholderHelper } from '../cardholder-helper';\n\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-details-pane',\n templateUrl: './cardholder-details-pane.component.html',\n styleUrls: ['./cardholder-details-pane.component.scss'],\n})\nexport class CardholderDetailsPaneComponent {\n @Select(CardholderEditContextState.cardholder)\n public cardholder$!: StateObservable;\n\n @Select(CardholderEditContextState.errorMessageId)\n public errorMessageId$!: StateObservable;\n\n @MethodEmitter(CardholderEditContextState.setCardholderIdAndPicture)\n public setCardholderIdAndPicture!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.setEditMode)\n public setEditMode!: StateEmitter;\n\n @ViewSelectSnapshot(CardholderEditContextState.isSideBySide)\n public isSideBySide!: ReturnType;\n\n @ViewSelectSnapshot(CardholderEditContextState.cardholderId)\n public cardholderId!: ReturnType;\n\n @ViewSelectSnapshot(CardholderEditContextState.isAddMode)\n public isAddMode!: ReturnType;\n\n @SelectSnapshot(CardholderEditContextState.cardholder)\n public cardholderSnapshot!: ReturnType;\n\n @SelectSnapshot(CardholderEditContextState.grantedPrivileges)\n public grantedPrivileges!: ReturnType;\n\n @ViewChild('moreMenu') public moreMenu?: GenMenu;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly ButtonType = ButtonType;\n public readonly TextFlavor = TextFlavor;\n public form?: CardholderEditFormGroup;\n public formReset$: Observable;\n public smartLastAccessString = '';\n public lastAccessString = '';\n public moreMenuItemSource: ContextMenuItem[] = [];\n public meltedIcon = MeltedIcon;\n\n public get isFormDirty(): boolean {\n return this.form?.dirty ?? false;\n }\n\n private formResetSubject: BehaviorSubject = new BehaviorSubject(undefined);\n private resetIsAddModeSubject: Subject = new Subject();\n private readonly minDateISOString = '0001-01-01T00:00:00Z';\n\n constructor(\n private translateService: TranslateService,\n private toastService: GenToastService,\n private cardholderManagementClient: CardholderManagementClient,\n private timeService: TimeService,\n private modalService: GenModalService,\n private editService: CardholderEditService,\n private loggerService: LoggerService\n ) {\n this.cardholder$.pipe(notNullOrUndefined(), untilDestroyed(this)).subscribe((cardholder) => {\n this.resetForm(cardholder);\n this.initializeMoreMenuItemSource();\n if (this.isLastAccessUnknown(cardholder)) {\n this.smartLastAccessString = this.translateService.instant('STE_LABEL_LASTACCESSTIME_UNKNOWN') as string;\n this.lastAccessString = '';\n } else {\n this.smartLastAccessString = this.timeService.formatRelative(cardholder.lastAccess);\n this.lastAccessString = this.timeService.formatTime(cardholder.lastAccess, DateFormat.DateTime);\n }\n }, this.loggerService.traceError);\n this.formReset$ = this.formResetSubject.asObservable();\n }\n\n public onCancelClick(): void {\n if (this.form?.dirty) {\n this.askForCancel().pipe(untilDestroyed(this)).subscribe();\n } else {\n this.resetCardholderChanges();\n }\n }\n\n public resetCardholderChanges(): void {\n // has to be called first, otherwise there will be an error when calling this.setCardholderIdAndPicture(null)\n if (this.isAddMode) {\n this.setEditMode();\n }\n this.setCardholderIdAndPicture(null);\n this.form?.markAsPristine();\n }\n\n /**\n * @returns true if the cardholder the submit was successful, false otherwise\n */\n public onSubmit(): boolean {\n if (!this.form) {\n return false; // No form so no submit\n }\n\n if (!this.form.valid) {\n // Trigger validation of all form controls recursively\n deepUpdateValueAndValidity(this.form);\n\n this.toastService.show({\n id: 'cardholder-save-fail',\n flavor: ToastFlavor.Error,\n text: this.translateService.instant('STE_LABEL_ERROR') as string,\n secondaryText: this.getErrorMessage(),\n });\n return false; // If its not valid, don't submit\n }\n\n const cardholderData = this.formToCardholder();\n\n if (this.isAddMode) {\n this.addCardholder(cardholderData);\n } else {\n this.updateCardholder(cardholderData);\n }\n\n this.form.markAsPristine();\n return true;\n }\n\n public showDeleteCardholderModal(): void {\n this.modalService.open(CardholderDeleteModalComponent, {\n cardholderId: this.cardholderId,\n cardholderName: `${this.cardholderSnapshot?.firstName || ''} ${this.cardholderSnapshot?.lastName || ''}`.trim(),\n onDeleteSuccessful: () => {\n this.setCardholderIdAndPicture(null);\n this.editService.loadCardholders();\n },\n });\n }\n\n public async toggleMoreMenu(): Promise {\n if (this.moreMenu) {\n await this.moreMenu.toggle();\n }\n }\n\n /**\n * @returns **true** if the user wants to cancel and **false** if the user wants to save or discard.\n */\n public askForCancel(): Observable {\n const modal = this.modalService.open(CardholderCancelModalComponent);\n return modal.result$.pipe(\n map((result) => {\n switch (result) {\n case UnsavedChangesModalActions.Discard:\n this.resetCardholderChanges();\n return false;\n case UnsavedChangesModalActions.Save:\n // onSubmit returns true if the form is valid and successfully submitted\n return !this.onSubmit();\n case UnsavedChangesModalActions.Cancel:\n default:\n return true;\n }\n })\n );\n }\n\n private addCardholder(cardholderData: Cardholder) {\n this.cardholderManagementClient\n .add(cardholderData)\n .pipe(take(1), untilDestroyed(this))\n .subscribe(\n (id) => {\n this.showSuccessToast();\n this.setEditMode();\n this.setCardholderIdAndPicture({ id, picture: this.form?.controls.identityFormGroup.controls.picture.value });\n this.editService.loadCardholders();\n },\n (error) => {\n this.showErrorToast(error as string);\n this.form?.markAsDirty();\n }\n );\n }\n\n private updateCardholder(cardholderData: Cardholder) {\n this.cardholderManagementClient\n .update(cardholderData)\n .pipe(take(1), untilDestroyed(this))\n .subscribe(\n () => {\n this.showSuccessToast();\n this.editService.loadCardholders();\n },\n (error) => {\n this.loggerService.traceError(error);\n this.showErrorToast(error as string);\n this.form?.markAsDirty();\n }\n );\n }\n\n private getErrorMessage(): string {\n if (this.form) {\n const invalidControls = getInvalidControls(this.form);\n if (invalidControls && invalidControls.length === 1 && 'label' in invalidControls[0] && invalidControls[0].label) {\n const labelString = this.translateService.instant(invalidControls[0].label) as string;\n if (labelString !== invalidControls[0].label) {\n // Display which control is in error.\n return stringFormat(\n this.translateService.instant('STE_MESSAGE_ERROR_CARDHOLDERSAVE_INVALID_FIELD') as string,\n this.translateService.instant(invalidControls[0].label) as string\n );\n }\n }\n }\n return this.translateService.instant('STE_MESSAGE_ERROR_CARDHOLDERSAVE_INVALID_FORM') as string;\n }\n\n private showSuccessToast(): void {\n this.toastService.show({\n id: 'cardholder-save-success',\n flavor: ToastFlavor.Success,\n text: this.translateService.instant('STE_LABEL_SUCCESS') as string,\n secondaryText: this.translateService.instant('STE_MESSAGE_INFO_CARDHOLDERSAVE_SUCCESS') as string,\n });\n }\n\n private showErrorToast(errorDetails: string): void {\n const details = errorDetails ?? (this.translateService.instant('STE_MESSAGE_ERROR_CARDHOLDERSAVE_ERROR') as string);\n this.toastService.show({\n id: 'cardholder-save-error',\n flavor: ToastFlavor.Error,\n text: this.translateService.instant('STE_LABEL_ERROR') as string,\n secondaryText: details,\n });\n }\n\n private resetForm(cardholder: CardholderModel) {\n if (this.grantedPrivileges && cardholder) {\n this.form = new CardholderEditFormGroup(cardholder, this.isAddMode, this.grantedPrivileges);\n\n if (this.isAddMode || CardholderHelper.isEntityNameDefaultValue(cardholder)) {\n this.setAutomaticUpdateEntityName();\n }\n }\n\n this.formResetSubject.next(cardholder?.id);\n }\n\n private setAutomaticUpdateEntityName(): void {\n if (!this.form) {\n return;\n }\n\n const firstName$ = this.form.controls.identityFormGroup.controls.firstName.valueChanges;\n const lastName$ = this.form.controls.identityFormGroup.controls.lastName.valueChanges;\n const displayName$ = this.form.controls.advancedFormGroup.controls.displayName.valueChanges;\n this.resetIsAddModeSubject.next();\n combineLatest([\n firstName$.pipe(startWith(this.form.controls.identityFormGroup.value.firstName)),\n lastName$.pipe(startWith(this.form.controls.identityFormGroup.value.lastName)),\n ])\n .pipe(takeUntil(this.resetIsAddModeSubject), takeUntil(displayName$), untilDestroyed(this))\n .subscribe(([firstName, lastName]) => {\n if (firstName || lastName) {\n const newEntityName = `${firstName || ''} ${lastName || ''}`.trim();\n this.form?.controls.advancedFormGroup.controls.displayName.setValue(newEntityName, { emitEvent: false });\n }\n });\n }\n\n private getBypassAntipassbackIsInherited(): boolean {\n const advancedGroup = this.form?.controls?.advancedFormGroup?.controls;\n const antipassBackControl = advancedGroup?.bypassAntipassbackRules;\n\n return antipassBackControl?.value === BypassAntipassbackRules.Inherited;\n }\n\n private getCalculatedBypassAntipassbackValue(): boolean {\n const advancedGroup = this.form?.controls?.advancedFormGroup?.controls;\n const antipassBackControl = advancedGroup?.bypassAntipassbackRules;\n\n if (this.getBypassAntipassbackIsInherited()) {\n return this.cardholderSnapshot?.antipassbackExemption || false;\n }\n\n return antipassBackControl?.value === BypassAntipassbackRules.Yes;\n }\n\n private isSecurityClearanceInherited(): boolean {\n const advancedGroup = this.form?.controls?.advancedFormGroup?.controls;\n const isSecurityClearanceInheritedControl = advancedGroup?.isSecurityClearanceInheritedFromGroup;\n\n return isSecurityClearanceInheritedControl?.value === 'true';\n }\n\n // TODO: method can be modified, when SC returns a lastTimeSeen in this format ending with a Z for 'null' dates: 0001-01-01T00:00:00Z\n // ie. 01-01-0001 is considered to be the null date\n private isLastAccessUnknown(cardholder: CardholderModel): boolean {\n const date = cardholder.lastAccess.getDate();\n const month = cardholder.lastAccess.getMonth();\n const year = cardholder.lastAccess.getFullYear();\n\n if (date === 1 && month === 0 && year === 1) {\n return true;\n }\n\n return false;\n }\n\n private returnNullIfControlPristine(control: FormControl | undefined): T | null {\n if (control?.dirty === true) {\n return control.value;\n }\n return null;\n }\n\n private formToCardholder(): Cardholder {\n const controls = this?.form?.controls;\n\n const activationDate = new Date(controls?.statusFormGroup?.controls?.activationDate?.value ?? this.minDateISOString);\n let expirationDate = new Date(controls?.statusFormGroup?.controls?.expirationDate?.value ?? this.minDateISOString);\n const accessStatus = controls?.statusFormGroup.controls.accessStatus.value.toString();\n const activationMode = controls?.statusFormGroup.controls.activationMode.value;\n\n // If ExpirationMode is set to WhenNotUsed, then we need to compute what is that expiration date value\n if (accessStatus === AccessStatus.Active && controls?.statusFormGroup.controls.expirationMode.value === ActiveExpirationModeLabel.WhenNotUsed) {\n expirationDate = DateHelper.addDays(new Date(), controls?.statusFormGroup?.controls?.expirationDuration?.value);\n }\n\n return new Cardholder({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: this.cardholderId!,\n firstName: controls?.identityFormGroup.controls.firstName.value,\n lastName: controls?.identityFormGroup.controls.lastName.value,\n displayName: controls?.advancedFormGroup?.controls?.displayName?.value ?? '',\n mobilePhoneNumber: controls?.identityFormGroup.controls.mobilePhoneNumber.value,\n picture: this.returnNullIfControlPristine(controls?.identityFormGroup.controls.picture),\n emailAddress: controls?.identityFormGroup.controls.emailAddress.value,\n status: accessStatus,\n activation: activationDate.toISOString(),\n expiration: expirationDate.toISOString(),\n // ExpirationMode is a bit complex, it is used for both Activation and Expiration\n expirationMode: CardholderHelper.buildExpirationMode(accessStatus, activationMode, controls?.statusFormGroup.controls.expirationMode.value),\n expirationDuration: controls?.statusFormGroup?.controls?.expirationDuration?.value ?? 0,\n canEscortVisitors: controls?.advancedFormGroup?.controls?.canEscortVisitors?.value,\n useExtendedGrantTime: controls?.advancedFormGroup?.controls?.useExtendedGrantTime?.value,\n description: controls?.advancedFormGroup?.controls?.description?.value,\n logicalId: controls?.advancedFormGroup?.controls?.logicalId?.value,\n bypassAntipassback: this.getCalculatedBypassAntipassbackValue(),\n antipassbackExemptionIsInherited: this.getBypassAntipassbackIsInherited(),\n securityClearance: controls?.advancedFormGroup?.controls?.securityClearance?.value,\n inheritAccessPermissionLevelFromGroup: this.isSecurityClearanceInherited(),\n //partition: controls?.advancedFormGroup.controls.partitions.value,\n // Access rights\n cardholderGroups: this.returnNullIfControlPristine(controls?.accessRightsFormGroup.controls.groups),\n accessRules: this.returnNullIfControlPristine(controls?.accessRightsFormGroup.controls.rules),\n credentials: this.returnNullIfControlPristine(controls?.accessRightsFormGroup.controls.credentials),\n });\n }\n\n private initializeMoreMenuItemSource() {\n this.moreMenuItemSource = [];\n\n // Only add Delete item if it can be execute by the current user\n if (this.cardholderSnapshot?.isDeletable && this.grantedPrivileges?.deleteCardholdersPrivilege) {\n this.moreMenuItemSource.push(\n // Delete Cardholder\n {\n id: 'DeleteCardholder',\n text: this.translateService.instant('STE_LABEL_CARDHOLDER_DELETE') as string,\n icon: MeltedIcon.Trash,\n iconColor: Color.Fragola,\n actionItem: {\n canExecute: () => (this.cardholderSnapshot?.isDeletable && this.grantedPrivileges?.deleteCardholdersPrivilege) ?? false,\n execute: () => this.showDeleteCardholderModal(),\n },\n }\n );\n }\n }\n}\n","export class DateHelper {\n public static addDays(date: Date, days: number): Date {\n const dateCopy = new Date(date);\n dateCopy.setDate(date.getDate() + days);\n return dateCopy;\n }\n}\n","
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n {{ 'STE_LABEL_OVERVIEW' | translate }}\n \n \n {{ 'STE_LABEL_NOUN_EMAIL' | translate }}\n
    \n
    {{ emailAddress }}
    \n
    \n {{ emailAddress }}\n
    \n
    \n
    \n \n {{ 'STE_LABEL_STATUS' | translate }}\n {{ status }}\n \n \n {{ 'STE_LABEL_NOUN_GROUP' | translate }}\n \n \n {{ groupName }}\n \n \n \n
    \n
    \n\n \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CardholderEntityFields } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { getAccessStatusResourceString } from '@shared/utilities/accessStatusTranslate';\nimport { CardholderWidgetBaseComponent } from '../cardholder-widget-base.component';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\nconst isContentSupported = (content: Content): boolean => {\n return content && !content.contextContent && content.type.equals(AccessControlContentTypes.Cardholder);\n};\n@InternalContentPluginDescriptor({\n type: CardholderInfoWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CardholderInfoWidgetComponent.pluginId, priority: 5 },\n isContentSupported,\n})\n@Component({\n selector: 'app-cardholder-info-widget',\n templateUrl: './cardholder-info-widget.component.html',\n styleUrls: ['./cardholder-info-widget.component.scss'],\n})\nexport class CardholderInfoWidgetComponent extends CardholderWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('16E5A3F2-4531-49AC-88F6-2FE76ED391A5');\n\n public readonly TextFlavor = TextFlavor;\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(CardholderEntityFields.emailAddressField);\n fields.push(CardholderEntityFields.accessStatusField);\n return fields;\n }\n\n public emailAddress = '';\n public groupNames: string[] = [];\n public status = '';\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService, private translateService: TranslateService) {\n super(securityCenterClientService, trackingService);\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n\n this.isLoading = false;\n }\n\n protected async initializeCardholerInfo(): Promise {\n await super.initializeCardholerInfo();\n\n if (this.cardholder) {\n this.emailAddress = this.cardholder.emailAddress ?? '-';\n this.status = this.translateService.instant(getAccessStatusResourceString(this.cardholder.accessStatus)) as string;\n\n const cardholderGroups = await this.cardholder.getCardholdergroupsAsync();\n if (cardholderGroups) {\n if (cardholderGroups.size === 0) {\n this.groupNames.push(this.translateService.instant('STE_LABEL_NO_GROUP') as string);\n } else {\n for (const group of cardholderGroups) {\n this.groupNames.push(group.name);\n }\n }\n }\n }\n }\n}\n","// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport enum ContentFields {\n Cardholder = 'Cardholder',\n Credentials = 'Credentials',\n Rule = 'Rule',\n AccessPointGroup = 'AccessPointGroup',\n ActivatedOn = 'ActivationDate',\n ExpiringOn = 'ExpirationDate',\n CardholderPicture = 'PicureId',\n HasAttachedData = 'HasAttachedData',\n}\n","
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SafeGuid } from 'safeguid';\nimport { ImageFit, ImageFlavor } from '@genetec/gelato';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { ContentFields } from '../../../enumerations/content-fields';\nimport { CardholderWidgetBaseComponent } from '../cardholder-widget-base.component';\n\nconst isContentSupported = (content: Content): boolean => {\n if (!content.contextContent && content.type.equals(AccessControlContentTypes.Cardholder)) {\n if (content.parameters?.hasField(ContentFields.CardholderPicture) === true) {\n const pictureId = content.parameters?.getFieldGuid(ContentFields.CardholderPicture);\n return !pictureId.isEmpty();\n }\n }\n return false;\n};\n\n@InternalContentPluginDescriptor({\n type: CardholderPictureWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CardholderPictureWidgetComponent.pluginId, priority: 1 },\n isContentSupported,\n})\n@Component({\n selector: 'app-cardholder-picture-widget',\n templateUrl: './cardholder-picture-widget.component.html',\n styleUrls: ['./cardholder-picture-widget.component.scss'],\n})\nexport class CardholderPictureWidgetComponent extends CardholderWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('87D91CAF-9455-49CC-B324-A3876E9E3A5D');\n\n public readonly ImageFlavor = ImageFlavor;\n public readonly ImageFit = ImageFit;\n\n public cardholderPicture: string | undefined = undefined;\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(securityCenterClientService, trackingService);\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n this.isLoading = false;\n }\n\n protected async initializeCardholerInfo(): Promise {\n await super.initializeCardholerInfo();\n\n if (this.cardholder && this.content) {\n const pictureId = this.content.parameters?.getFieldGuid(ContentFields.CardholderPicture);\n if (pictureId && !pictureId.isEmpty()) {\n const fileCache = await this.cardholder.getFilesCacheAsync(pictureId);\n if (fileCache !== null) {\n this.cardholderPicture = 'data: image/png;base64,' + fileCache.data;\n }\n }\n }\n }\n}\n","
    \n
    \n {{ title }}\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n \n \n \n
    \n
    \n {{ cardholderFullName }}\n \n {{ 'STE_LABEL_CARDHOLDER_LASTSEEN' | translate }}\n \n {{ (wasLastAccessGranted ? 'STE_EVENT_TYPE_NAME_ACCESSGRANTED' : 'STE_EVENT_TYPE_NAME_ACCESSREFUSED') | translate }}\n \n {{ lastAccessLocation }}\n {{ lastAccessTime }}\n \n
    \n
    \n
    \n\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Icon, ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CardholderEntityFields } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { KnownContentContext } from '@modules/shared/services/content/KnownContentContext';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { CardholderStateWidgetBaseComponent } from '../cardholder-state-widget-base.component';\n\nconst isContentSupported = (content: Content): boolean => {\n return content?.contextContent !== null && content.type.equals(AccessControlContentTypes.Cardholder);\n};\n\n@InternalContentPluginDescriptor({\n type: CardholderPreviewWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CardholderPreviewWidgetComponent.pluginId, priority: 4 },\n isContentSupported,\n})\n@Component({\n selector: 'app-cardholder-preview-widget',\n templateUrl: './cardholder-preview-widget.component.html',\n styleUrls: ['./cardholder-preview-widget.component.scss'],\n})\nexport class CardholderPreviewWidgetComponent extends CardholderStateWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('91A5F4A5-6BAA-4231-A426-79AF7178A15B');\n\n @Input() public title = '';\n\n public readonly Icon = Icon;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly TextFlavor = TextFlavor;\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(CardholderEntityFields.firstNameField);\n fields.push(CardholderEntityFields.lastNameField);\n fields.push(CardholderEntityFields.hasPictureField);\n return fields;\n }\n\n public cardholderFullName = '';\n public cardholderPicture: string | undefined = undefined;\n public hasPicture = false;\n public isLoadingPicture = false;\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n private contentProviderService: ContentProviderService,\n private sanitizer: DomSanitizer,\n timeService: TimeService,\n translateService: TranslateService,\n trackingService: TrackingService\n ) {\n super(securityCenterClientService, translateService, timeService, trackingService);\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n\n this.title = this.translateService.instant('STE_ENTITY_CARDHOLDER') as string;\n if (this.content?.contextContent) {\n if (this.content.contextContent.type === AccessControlContentTypes.Credential) {\n this.title = this.translateService.instant('STE_LABEL_CREDENTIAL_ASSIGNEDTO') as string;\n }\n }\n\n this.isLoading = false;\n\n if (this.hasPicture) {\n this.isLoadingPicture = true;\n const picture = await this.cardholder?.getPictureAsync();\n if (picture) {\n this.cardholderPicture = 'data: image/png;base64,' + picture.data;\n }\n this.isLoadingPicture = false;\n }\n }\n\n public async navigateToCardholderAsync(): Promise {\n if (this.cardholder) {\n const content = await this.contentProviderService.getContentAsync(this.cardholder.id, KnownContentContext.Navigation);\n if (content) {\n this.dataContext?.pushContent(content);\n }\n }\n }\n\n protected async initializeCardholerInfo(): Promise {\n await super.initializeCardholerInfo();\n\n if (this.cardholder) {\n this.cardholderFullName = this.cardholder.firstName + ' ' + this.cardholder.lastName;\n\n this.hasPicture = this.cardholder.hasPicture;\n }\n }\n}\n","/* eslint-disable */\nimport { SafeGuid } from 'safeguid';\n\nexport class SerializationHelper {\n static toInstance(obj: T, json: string): T {\n const jsonObj = JSON.parse(json);\n if (typeof (obj as any).fromJSON === 'function') {\n (obj as any).fromJSON(jsonObj);\n } else {\n for (const propName in jsonObj) {\n const propType = typeof (obj as any)[propName];\n if (propType === typeof SafeGuid) {\n (obj as any)[propName] = SafeGuid.parse(jsonObj[propName].value);\n } else {\n (obj as any)[propName] = jsonObj[propName];\n }\n }\n }\n return obj;\n }\n}\n\n/**\n * @param str String to parse\n * @returns The parsed object when it succeeds, else null\n */\nexport function tryParseJson(str: unknown): Record | null {\n try {\n return JSON.parse(str as string);\n } catch {\n return null;\n }\n}\n","
    \n
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n {{ 'STE_LABEL_NORESULTS' | translate }}\n {{ 'STE_MESSAGE_INFO_NORESULTS_DETAILS' | translate }}\n
    \n \n
    \n \n
    \n
    \n\n","import { Component, Input, EventEmitter, Output, ViewChild, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato-angular';\nimport { Datum } from '@modules/shared/interfaces/datum';\nimport { PrivilegeService } from '@shared/privilege/privilege.service';\nimport { TypedSimpleChanges } from '@modules/shared/utilities/typed-simple-changes';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\n\n@Component({\n selector: 'app-cardholder-card-view',\n templateUrl: './cardholder-card-view.component.html',\n styleUrls: ['./cardholder-card-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardholderCardViewComponent implements OnChanges {\n @Input() selectedId: IGuid | null = null;\n @Input() cardholders: Datum[] | null = null;\n @Input() refreshing = true;\n @Input() hasMore = true;\n @Output() loadMore = new EventEmitter();\n @Output() selectedChanged = new EventEmitter();\n\n @ViewChild('container') container!: HTMLElement;\n\n public isLoadingMore$: Observable;\n public readonly TextFlavor = TextFlavor;\n\n public isViewCardholdersPrivilegeGranted = false;\n private isLoadingMoreSubject = new BehaviorSubject(false);\n\n constructor(privilegeService: PrivilegeService) {\n this.isViewCardholdersPrivilegeGranted = privilegeService.isGlobalPrivilegeGranted(KnownPrivileges.viewCardholdersPrivilege);\n this.isLoadingMore$ = this.isLoadingMoreSubject.asObservable();\n }\n\n ngOnChanges(changes: TypedSimpleChanges): void {\n if (changes.cardholders?.previousValue && (changes.cardholders?.currentValue?.length ?? 0) > changes.cardholders.previousValue.length) {\n this.isLoadingMoreSubject.next(false);\n }\n }\n\n onLoadMore(): void {\n this.isLoadingMoreSubject.next(true);\n this.loadMore.emit();\n }\n\n onSelectedChanged(cardholder: Datum): void {\n if (!this.selectedId || (SafeGuid.isGuid(cardholder.guid) && !this.selectedId?.equals(cardholder.guid as string | IGuid))) {\n this.selectedChanged.emit(cardholder);\n }\n }\n\n public buildEntityName(cardholder: Datum): string {\n if (cardholder.firstName || cardholder.lastName) {\n return ((cardholder.firstName as string) + ' ' + (cardholder.lastName as string)).trim();\n }\n return cardholder.name as string;\n }\n}\n","
    \n \n
    \n\n\n \n \n
    \n
    \n \n \n \n \n {{ 'STE_BUTTON_ADD_CARDHOLDER' | translate }}\n \n \n \n \n
    \n \n {{ errorText }}\n \n\n
    \n \n \n \n \n\n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n \n \n
    \n
    \n \n {{ errorText }}\n \n
    \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
    \n \n {{ 'STE_LABEL_REPORT_ITEMS_COUNT_FORMAT' | translate | stringFormat: reportCount }}\n {{ hasMore ? '(' + ('STE_LABEL_SCROLL_TO_LOAD_MORE' | translate) + ')' : '' }}\n \n
    \n
    \n
    \n
    \n
    \n","import { AfterViewInit, Component, ComponentRef, ElementRef, Inject, OnDestroy, OnInit, ViewChild, ViewContainerRef, ViewRef } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ButtonFlavor, Color, GenMenu, TableCellType, BannerFlavor } from '@genetec/gelato-angular';\nimport { TextFlavor, Icon } from '@genetec/gelato';\nimport {\n CardholderManagementClient,\n FilterDescriptor,\n ReportDescriptor,\n SearchRequest,\n ReportTableColumnDescriptor,\n ReportResult,\n ReportExtendedSearchRequest,\n ReportTableColumnType,\n} from '@modules/access-control/api/api';\nimport { AccessControlFeatureFlags } from '@modules/access-control/feature-flags';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { ContextMenuItem } from '@modules/shared/interfaces/context-menu-item/context-menu-item';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginComponentExposure } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { Datum } from '@modules/shared/interfaces/datum';\nimport { FilterContext, FiltersMap } from '@modules/shared/services/filters/filter';\nimport { FilterCoordinatorService, FILTER_CONTEXT } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { FiltersContext } from '@modules/shared/store/filters.context';\nimport { tryParseJson } from '@modules/shared/utilities/serialization.helper';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { isEqual } from 'lodash';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, skip, take } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { FeatureFlagGroup } from '@modules/feature-flags/feature-flag';\nimport { MethodEmitter, StateEmitter } from '@src/app/store';\nimport { SelectSnapshot, ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { StateObservable } from '@src/app/store/decorators/state-observable.decorator';\nimport { Select } from '@ngxs/store';\nimport { CardholderEditContextState } from '@modules/access-control/cardholder-edit-context.state';\nimport { FiltersState } from '@modules/shared/store/filters.state';\nimport { CardholderEditService } from '@modules/access-control/services/cardholder-edit-service';\nimport { CommandBindings, CommandsService, COMMANDS_SERVICE, CommandsSubscription } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { AccessControlCommands } from '@modules/access-control/enumerations';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { SortOptions } from '@modules/shared/components/table/models/sort-options';\nimport { TableComponent } from '@shared/components/table/table.component';\nimport { TableColumnDescriptor } from '@shared/components/table/models/table-column-descriptor';\nimport { isValidDate } from '@src/app/utilities/date-validator';\nimport { CardholderDetailsPaneComponent } from '../cardholder-details-pane/cardholder-details-pane.component';\n@UntilDestroy()\n@Component({\n selector: 'app-cardholder-sub-task',\n templateUrl: './cardholder-sub-task.component.html',\n styleUrls: ['./cardholder-sub-task.component.scss'],\n providers: [{ provide: FilterCoordinatorService }, { provide: FILTER_CONTEXT, useValue: FilterContext.CardholderList }],\n})\n@InternalPluginDescriptor({\n type: CardholderSubTaskComponent,\n pluginTypes: [PluginTypes.AccessControlSubTask],\n exposure: {\n id: CardholderSubTaskComponent.pluginId,\n icon: 'gen-ico-cardholder',\n title: 'STE_LABEL_CARDHOLDERS',\n tags: ['access control', 'cardholders', 'STE_TASK_ACCESS_CONTROL', 'STE_LABEL_CARDHOLDERS'],\n priority: 50,\n } as PluginComponentExposure,\n requirements: {\n features: [KnownFeatures.accessControlId],\n licenses: [KnownLicenses.accessControl],\n globalPrivileges: [KnownPrivileges.accessControlTaskPrivilege, KnownPrivileges.viewCardholdersPrivilege],\n enabledFeatureFlags: [AccessControlFeatureFlags.Cardholders],\n },\n isSupported: () => true,\n})\nexport class CardholderSubTaskComponent extends TrackedComponent implements OnInit, OnDestroy, AfterViewInit {\n public static pluginId = SafeGuid.parse('A449ACC3-A6ED-493D-A604-B8435EC8F611');\n private static pageSize = 50;\n\n @ViewChild(TableComponent) public tableComponent?: TableComponent;\n @ViewChild('moreMenu') public moreMenu?: GenMenu;\n @ViewChild('detailsPane', { read: ElementRef }) cardholderDetailsPaneComponent!: ElementRef;\n @ViewChild('sidePaneDetailsContainer', { read: ViewContainerRef }) sidePaneViewContainerRef!: ViewContainerRef;\n @ViewChild('fullscreenDetailsContainer', { read: ViewContainerRef }) fullScreenViewContainerRef!: ViewContainerRef;\n\n @ViewSelectSnapshot(FeatureFlagsState.featureFlags(AccessControlFeatureFlags.AddCardholders))\n public isAddFeatureFlagEnabled!: boolean;\n\n @ViewSelectSnapshot(FeatureFlagsState.featureFlagGroups(AccessControlFeatureFlags))\n public featureFlags!: FeatureFlagGroup;\n\n @Select(CardholderEditContextState.cardholderId)\n public selectedCardholderId$!: StateObservable;\n\n @ViewSelectSnapshot(CardholderEditContextState.cardholderId)\n public selectedCardholderId!: ReturnType;\n\n @MethodEmitter(CardholderEditContextState.setCardholderIdAndPicture)\n public setCardholderIdAndPicture!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.toggleSideBySide)\n public toggleSideBySide!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.setFullScreen)\n public setFullScreen!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.setAddMode)\n public setAddMode!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.setEditMode)\n public setEditMode!: StateEmitter;\n\n @MethodEmitter(CardholderEditContextState.setNewCardholder)\n public setNewCardholder!: StateEmitter;\n\n @Select(CardholderEditContextState.isSideBySide)\n public isSideBySide$!: StateObservable;\n\n @ViewSelectSnapshot(CardholderEditContextState.isSideBySide)\n public isSideBySide!: ReturnType;\n\n @ViewSelectSnapshot(CardholderEditContextState.isAddMode)\n public isAddMode!: ReturnType;\n\n @SelectSnapshot(FiltersState.filters)\n private filters!: ReturnType;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Colors = Color;\n public readonly TextFlavor = TextFlavor;\n public readonly Icon = Icon;\n\n public reportData$: Observable;\n public hasMore$: Observable;\n /**\n * Stores all the results shown in the DOM.\n * If we want to update the DOM list, consider using reportDataSubject.\n */\n public allResults: Datum[] = [];\n public refreshing$: Observable;\n public isCardView$: Observable;\n public reportDescriptor?: ReportDescriptor | null;\n public reportItemCount$!: Observable;\n public isMoreMenuOpen = false;\n public isDetailsPaneOpened = false;\n public moreMenuItemSource: ContextMenuItem[] = [];\n public isBannerShowing = false;\n public errorText = '';\n public bannerFlavor = BannerFlavor.Error;\n public hasAddPrivilege = false;\n public currentPageNumber = 0;\n\n public set selectedCardholder(value: string | null) {\n this.cardholder = value;\n if (this.cardholder) {\n this.isDetailsPaneOpened = true;\n }\n }\n public get selectedCardholder(): string | null {\n return this.cardholder;\n }\n\n public get reportColumnDescriptors(): ReportTableColumnDescriptor[] | null {\n return this.reportDescriptor?.columns ?? null;\n }\n\n public get reportFilters(): FilterDescriptor[] | null {\n return this.reportDescriptor?.filters ?? null;\n }\n\n private cardholder: string | null = null;\n private cardholderEditPaneRef: ComponentRef;\n /**\n * Subject that will update the subscribers when called next on it.\n * If we want to modify the states of the table rows without calling next,\n * consider using allResults.\n */\n private reportDataSubject = new BehaviorSubject(null);\n private isCardViewSubject = new BehaviorSubject(false);\n private hasMoreSubject = new BehaviorSubject(true);\n private escapeCommandSubscription: CommandsSubscription;\n private refreshingSubject = new BehaviorSubject(false);\n private searchSubscription?: Subscription;\n private currentSort?: SortOptions;\n\n constructor(\n trackingService: TrackingService,\n private cardholderManagementClient: CardholderManagementClient,\n private timeService: TimeService,\n private sanitizer: DomSanitizer,\n private translateService: TranslateService,\n private cardholderEditService: CardholderEditService,\n private viewContainerRef: ViewContainerRef,\n private privilegeService: PrivilegeService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n public reportFiltersService: FiltersContext\n ) {\n super(trackingService);\n\n this.hasMore$ = this.hasMoreSubject.asObservable();\n this.refreshing$ = this.refreshingSubject.asObservable();\n this.reportData$ = this.reportDataSubject.asObservable();\n this.isCardView$ = this.isCardViewSubject.asObservable();\n\n this.reportItemCount$ = this.reportDataSubject.pipe(map((data) => data?.length ?? 0));\n\n this.commandsService.registerCommandShortcut(AccessControlCommands.ExitFullscreen, 'Esc');\n const commandBindings = new CommandBindings();\n commandBindings.addCommand({\n commandId: AccessControlCommands.ExitFullscreen,\n executeCommandHandler: (executeCommandData) => {\n this.toggleSideBySide();\n executeCommandData.isHandled = true;\n },\n });\n this.escapeCommandSubscription = this.commandsService.subscribe(commandBindings, { priority: 200 });\n\n this.subscribeToRefreshRequests();\n this.cardholderEditPaneRef = this.viewContainerRef.createComponent(CardholderDetailsPaneComponent);\n }\n\n ngOnInit() {\n this.initializePrivileges().fireAndForget();\n this.initializeMoreMenuItemSource();\n this.setReportDescriptor();\n }\n\n ngAfterViewInit() {\n this.isSideBySide$.pipe(untilDestroyed(this)).subscribe((isSideBySide) => {\n const cardholderDetailsPaneViewRef = this.cardholderEditPaneRef?.hostView;\n if (!cardholderDetailsPaneViewRef) {\n return;\n }\n\n if (isSideBySide) {\n this.sidePaneViewContainerRef.move(cardholderDetailsPaneViewRef, 0);\n } else {\n this.fullScreenViewContainerRef.move(cardholderDetailsPaneViewRef, 0);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.escapeCommandSubscription.unsubscribe();\n }\n\n public async initializePrivileges(): Promise {\n const partitions = await this.privilegeService.getGrantedPrivilegedPartitionsAsync(KnownPrivileges.addCardholdersPrivilege);\n if (partitions === null || partitions.length === 0) {\n this.hasAddPrivilege = false;\n return;\n }\n\n this.hasAddPrivilege = true;\n }\n\n // Used for loading the initial batch, since we don`t want the loading spinner\n // over the table when loading additionnal pages (the table has its own at the bottom)\n public refreshCardholders(): void {\n this.refreshingSubject.next(true);\n this.resetSearch();\n this.loadMoreCardholders();\n }\n\n public loadMoreCardholders(): void {\n const searchRequest = new SearchRequest({\n page: ++this.currentPageNumber,\n pageSize: CardholderSubTaskComponent.pageSize,\n sourceTimeZone: this.timeService.getBrowserTimezone(),\n filters: this.modifyFilters(this.filters),\n });\n\n if (this.currentSort) {\n searchRequest.sortBy = this.currentSort.columnKey;\n searchRequest.sortOrder = this.currentSort.sortOrder;\n }\n\n this.searchSubscription?.unsubscribe();\n\n this.searchSubscription = this.cardholderManagementClient\n .search(searchRequest)\n .pipe(take(1), untilDestroyed(this))\n .subscribe((result: ReportResult) => this.onSearchResultsReceived(result));\n }\n\n public setListViewMode(): void {\n this.isCardViewSubject.next(false);\n }\n\n public setCardViewMode(): void {\n this.isCardViewSubject.next(true);\n }\n\n public async toggleMoreMenu(): Promise {\n if (this.moreMenu) {\n await this.moreMenu.toggle();\n this.isMoreMenuOpen = !this.isMoreMenuOpen;\n }\n }\n\n public onCardholderSelected(cardholder: Datum): void {\n if (!this.featureFlags.CardholdersEditPane) {\n return;\n }\n this.askForFormCancelIfDirty(() => {\n if (isObject(cardholder) && typeof cardholder.guid === 'string') {\n const picture = typeof cardholder.picture === 'string' ? cardholder.picture : undefined;\n this.setCardholderIdAndPicture({ id: cardholder.guid, picture });\n }\n });\n }\n\n public onAddCardholderButtonClicked(): void {\n this.askForFormCancelIfDirty(() => {\n this.setAddMode();\n this.setNewCardholder();\n });\n }\n\n public onSortChanged(sortOption: SortOptions): void {\n this.currentSort = sortOption;\n this.refreshCardholders();\n }\n\n private askForFormCancelIfDirty(action: () => void): void {\n if (this.cardholderEditPaneRef.instance.isFormDirty) {\n this.cardholderEditPaneRef.instance\n .askForCancel()\n .pipe(untilDestroyed(this))\n .subscribe((shouldCancel) => {\n if (!shouldCancel) {\n action();\n }\n });\n } else {\n action();\n }\n }\n\n private showColumnSelection(): void {\n this.tableComponent?.showColumnSelection();\n }\n\n private subscribeToRefreshRequests(): void {\n this.cardholderEditService.refreshCardholder$.pipe(untilDestroyed(this)).subscribe(() => {\n this.refreshCardholders();\n });\n }\n\n private onSearchResultsReceived(results: ReportResult): void {\n const newData = this.getReportData(results.reportItems);\n this.allResults = this.allResults.concat(newData);\n\n this.reportDataSubject.next(this.allResults);\n\n this.fetchExtendedProperties((this.currentPageNumber - 1) * CardholderSubTaskComponent.pageSize);\n\n if (results.error) {\n this.showError(results.error, results.errorSeverity ?? BannerFlavor.Error);\n } else {\n this.removeError();\n }\n\n this.refreshingSubject.next(false);\n\n if (results.lastResult) {\n this.hasMoreSubject.next(false);\n }\n }\n\n private showError(errorText: string, errorSeverity: string) {\n this.isBannerShowing = true;\n this.errorText = errorText;\n this.bannerFlavor = errorSeverity.toLowerCase() === BannerFlavor.Warning ? BannerFlavor.Warning : BannerFlavor.Error;\n }\n\n private removeError() {\n this.isBannerShowing = false;\n this.errorText = '';\n }\n\n // Orchestrate the loading of the properties marked as extended\n private fetchExtendedProperties(currentRowIndex: number) {\n const extendedProperties = this.getExtendedProperties();\n\n if (!extendedProperties.length || !this.reportDescriptor) return;\n\n const keyColumns = this.getKeyColumns();\n const newResults = this.allResults.slice(currentRowIndex, currentRowIndex + CardholderSubTaskComponent.pageSize);\n const dataKeyColumns = this.getExtendedSearchQueryParams(newResults, keyColumns);\n\n extendedProperties.forEach((propertyDescriptor) => {\n this.cardholderManagementClient\n .getExtendedCardholdersInformation(\n new ReportExtendedSearchRequest({\n extendedFieldId: propertyDescriptor.fieldId,\n keys: dataKeyColumns,\n })\n )\n .pipe(take(1), untilDestroyed(this))\n .subscribe((extendedInfoResults) => {\n newResults.forEach((item, index) => {\n const extendedFieldValue: unknown = extendedInfoResults.reportItems[index][extendedInfoResults.extendedFieldId];\n if (extendedFieldValue) {\n item[extendedInfoResults.extendedFieldId] = tryParseJson(extendedFieldValue) ?? extendedFieldValue;\n }\n });\n\n this.reportDataSubject.next([...this.allResults]); // Update the report with the new extended data\n });\n });\n }\n\n // Get the columns that need to be loaded separatly from the report\n private getExtendedProperties(): TableColumnDescriptor[] {\n if (!this.reportDescriptor) return [];\n return this.reportDescriptor.columns.filter((x) => x.isExtendedProperty);\n }\n\n // Build a query string based on the reportItems and the columns to use\n private getExtendedSearchQueryParams(reportItems: Datum[], extendedColumns: TableColumnDescriptor[]): Record[] {\n const extendedSearchQueryParams: Record[] = [];\n reportItems.forEach((result: Datum) => {\n const field: Record = {};\n extendedColumns.forEach((column) => {\n field[column.fieldId] = result[column.fieldId];\n });\n extendedSearchQueryParams.push(field);\n });\n return extendedSearchQueryParams;\n }\n\n // Get the columns descriptors that are used to identify uniquely a report record\n private getKeyColumns(): TableColumnDescriptor[] {\n if (!this.reportColumnDescriptors) return [];\n return this.reportColumnDescriptors.filter((column) => column.isKey);\n }\n\n private getReportData(reportItems: Datum[]): Datum[] {\n const reportData: Datum[] = [];\n const keys = this.reportColumnDescriptors?.filter((column) => column.isKey);\n const currentData = this.allResults;\n if (keys) {\n reportItems.forEach((reportItem) => {\n const rowData: Datum = this.buildTableRowForReportItem(reportItem);\n\n if (!this.isRowDataDuplicate(currentData, keys, rowData, reportItem)) {\n reportData.push(rowData);\n }\n });\n }\n return reportData;\n }\n\n private setReportDescriptor(): void {\n this.cardholderManagementClient\n .getReportDescriptor()\n .pipe(untilDestroyed(this))\n .subscribe((reportDescriptor: ReportDescriptor) => {\n this.reportDescriptor = reportDescriptor;\n this.onReportDescriptionInitialized();\n });\n }\n\n private onReportDescriptionInitialized(): void {\n this.reportFiltersService.filters$\n .pipe(\n skip(1),\n debounceTime(10),\n distinctUntilChanged((previous: FiltersMap, current: FiltersMap) => isEqual(current, previous)),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.refreshCardholders();\n });\n }\n\n private modifyFilters(filters: FiltersMap): Record {\n const modifiedFilters: Record = {};\n filters.forEach((f) => {\n modifiedFilters[f.filterId] = f.value;\n });\n\n return modifiedFilters;\n }\n\n private buildTableRowForReportItem(reportItem: Datum): Datum {\n const rowData: Datum = {};\n if (this.reportColumnDescriptors) {\n this.reportColumnDescriptors.forEach((column) => {\n const field = this.getFieldFromReportItem(reportItem, column);\n\n if (column.fieldId === 'picture') {\n // Set every image as default item before real ones are loaded with extended properties\n rowData[column.fieldId] = 'Icon.Cardholder';\n } else if (field != null) {\n if (column.cellType === ReportTableColumnType.Image && typeof field === 'string') {\n rowData[column.fieldId] = this.sanitizer.bypassSecurityTrustUrl(field);\n } else {\n rowData[column.fieldId] = field;\n }\n }\n });\n }\n return rowData;\n }\n\n private isRowDataDuplicate(currentData: Datum[], keys: TableColumnDescriptor[], rowData: Datum, reportItem: Datum): boolean {\n let isDuplicated = false;\n if (currentData.length > 0 && keys && keys.length > 0) {\n isDuplicated = true;\n keys?.forEach((key) => {\n if (!isDuplicated) {\n return;\n }\n if (!(key.fieldId in rowData)) {\n isDuplicated = false;\n return;\n }\n isDuplicated = currentData.some((existingRowData) => {\n return key.fieldId in existingRowData && existingRowData[key.fieldId] === reportItem[key.fieldId];\n });\n });\n }\n return isDuplicated;\n }\n\n private getFieldFromReportItem(reportItemCell: Record, column: TableColumnDescriptor): boolean | string | Record | null {\n const key = column.fieldId;\n\n if (key in reportItemCell) {\n switch (Number(column.cellType) as TableCellType) {\n case TableCellType.Boolean:\n return reportItemCell[key] as boolean;\n case TableCellType.Custom: {\n const cellValue = reportItemCell[key] as string;\n return tryParseJson(cellValue) ?? cellValue;\n }\n case TableCellType.DateTime: {\n const cellValue = reportItemCell[key] as string;\n if (!isValidDate(new Date(cellValue))) {\n return '';\n }\n return cellValue;\n }\n default:\n return reportItemCell[key] as string;\n }\n }\n return null;\n }\n\n private initializeMoreMenuItemSource() {\n this.isCardViewSubject.pipe(untilDestroyed(this)).subscribe((isCardView) => {\n this.moreMenuItemSource = [\n // Refresh\n {\n id: 'refresh',\n text: this.translateService.instant('STE_BUTTON_REFRESH') as string,\n actionItem: {\n execute: () => {\n this.refreshCardholders();\n },\n },\n },\n ];\n if (!isCardView) {\n this.moreMenuItemSource.push(\n // Select columns\n {\n id: 'selectColumns',\n text: this.translateService.instant('STE_ACTION_SELECTCOLUMNS') as string,\n actionItem: {\n execute: () => this.showColumnSelection(),\n },\n }\n );\n }\n });\n }\n\n private resetSearch() {\n this.allResults = [];\n this.currentPageNumber = 0;\n this.hasMoreSubject.next(true);\n this.reportDataSubject.next(null);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ICredentialEntity } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { CredentialEntity } from 'RestClient/Client/Model/AccessControl/CredentialEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\n\n@Component({\n selector: 'app-credential-widget-base-component',\n template: '',\n})\nexport class CredentialWidgetBaseComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public dataContext?: ContentService;\n public content?: Content;\n public isLoading = true;\n\n protected credential: CredentialEntity | null = null;\n protected scClient!: SecurityCenterClient;\n\n protected get monitoredFields(): string[] {\n return [];\n }\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n if (this.content?.source) {\n if (SafeGuid.isGuid(this.content.source)) {\n const sourceId = SafeGuid.parse(this.content.source);\n if (!sourceId.isEmpty()) {\n await this.getCredentialAsync(sourceId);\n await this.initializeCredentialInfo();\n }\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n protected async getCredentialAsync(credentialId: IGuid): Promise {\n if (this.scClient) {\n this.credential = (await this.scClient.getEntityAsync(\n CredentialEntity,\n credentialId,\n null,\n null,\n this.monitoredFields.toString()\n )) as CredentialEntity;\n }\n }\n\n protected async initializeCredentialInfo(): Promise {}\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { CredentialEntityFields, ICredentialEntity } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CredentialEntity } from 'RestClient/Client/Model/AccessControl/CredentialEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { CredentialWidgetBaseComponent } from '../credential-widget-base.component';\n\nconst isContentSupported = (content: Content): boolean => {\n return !!(content.contextContent === null && content.type.equals(AccessControlContentTypes.Credential));\n};\n\n@InternalContentPluginDescriptor({\n type: CredentialActionWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CredentialActionWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\n@Component({\n selector: 'app-credential-action-widget',\n templateUrl: './credential-action-widget.component.html',\n styleUrls: ['./credential-action-widget.component.scss'],\n})\nexport class CredentialActionWidgetComponent extends CredentialWidgetBaseComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('19E22D1F-BC3B-4629-B9B4-86075826BB4B');\n\n public readonly TextFlavor = TextFlavor;\n\n public isActive = false;\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(CredentialEntityFields.accessStatusField);\n return fields;\n }\n\n private entityCacheTask!: IEntityCacheTask;\n\n constructor(securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(securityCenterClientService, trackingService);\n }\n\n public async changeCredentialStatusAsync(isActive: boolean): Promise {\n if (this.credential && this.scClient) {\n this.credential.accessStatus = isActive ? AccessStatus.Active : AccessStatus.Inactive;\n await this.scClient.updateAsync(this.credential);\n }\n }\n\n public async findCredentialAsync(): Promise {\n // TODO FM: Find credential\n }\n\n public async ngOnDestroy() {\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n\n this.isLoading = false;\n }\n\n protected async getCredentialAsync(credentialId: IGuid): Promise {\n if (this.scClient) {\n this.entityCacheTask = this.scClient.buildEntityCache(this.monitoredFields);\n this.credential = (await this.entityCacheTask.getEntityAsync(CredentialEntity, credentialId, true)) as CredentialEntity;\n }\n }\n\n protected async initializeCredentialInfo(): Promise {\n await super.initializeCredentialInfo();\n\n if (this.credential) {\n this.updateIsActive(this.credential.accessStatus);\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.credential,\n () => {\n const _ = this.credential?.accessStatus;\n },\n ((_: ICredentialEntity, newValue: string, __: string) => {\n this.updateIsActive(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n\n private updateIsActive(accessStatus: string) {\n this.isActive = accessStatus === AccessStatus.Active;\n }\n}\n","\n {{\n (isActive ? 'STE_LABEL_CREDENTIAL_ACTIVE' : 'STE_LABEL_CREDENTIAL_INACTIVE') | translate\n }}\n\n","{{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n {{ 'STE_LABEL_OVERVIEW' | translate }}\n
    \n \n \n {{ 'STE_LABEL_CREDENTIAL_ACTIVATEDON' | translate }}\n {{ activationDate }}\n \n \n {{ 'STE_LABEL_CREDENTIAL_EXPIRINGON' | translate }}\n {{ expirationDate }}\n \n \n\n \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { CredentialEntityFields } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { CredentialWidgetBaseComponent } from '../credential-widget-base.component';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n return !!(!content.contextContent && content.type.equals(AccessControlContentTypes.Credential));\n};\n\n@Component({\n selector: 'app-credential-info-widget',\n templateUrl: './credential-info-widget.component.html',\n styleUrls: ['./credential-info-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: CredentialInfoWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CredentialInfoWidgetComponent.pluginId, priority: 5 },\n isContentSupported,\n})\nexport class CredentialInfoWidgetComponent extends CredentialWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('7C43F5DA-55A8-4216-9E52-639C5834FFBA');\n\n public readonly TextFlavor = TextFlavor;\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(CredentialEntityFields.activationDateField);\n fields.push(CredentialEntityFields.expirationDateField);\n return fields;\n }\n\n public activationDate: string | undefined;\n public expirationDate: string | undefined;\n\n constructor(securityCenterClientService: SecurityCenterClientService, private timeService: TimeService, trackingService: TrackingService) {\n super(securityCenterClientService, trackingService);\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n\n this.isLoading = false;\n }\n\n protected async initializeCredentialInfo(): Promise {\n await super.initializeCredentialInfo();\n\n if (this.credential) {\n const activationDate = this.credential.activationDate;\n this.activationDate = this.timeService.formatTime(activationDate, DateFormat.DateTime);\n\n const expirationDate = this.credential.expirationDate;\n if (expirationDate > activationDate) {\n this.expirationDate = this.timeService.formatTime(expirationDate, DateFormat.DateTime);\n } else {\n this.expirationDate = '-';\n }\n } else {\n this.activationDate = '-';\n this.expirationDate = '-';\n }\n }\n}\n","{{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n {{ 'STE_ENTITY_CREDENTIAL' | translate }}\n \n
    \n \n {{ credentialName }}\n {{ status }}\n \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Icon, TextFlavor, ItemSlot } from '@genetec/gelato';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CredentialEntityFields } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { KnownContentContext } from '@modules/shared/services/content/KnownContentContext';\nimport { CredentialWidgetBaseComponent } from '../credential-widget-base.component';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\nconst isContentSupported = (content: Content): boolean => {\n return !!(content?.contextContent && content.type.equals(AccessControlContentTypes.Credential));\n};\n\n@InternalContentPluginDescriptor({\n type: CredentialPreviewWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CredentialPreviewWidgetComponent.pluginId, priority: 4 },\n isContentSupported,\n})\n@Component({\n selector: 'app-credential-preview-widget',\n templateUrl: './credential-preview-widget.component.html',\n styleUrls: ['./credential-preview-widget.component.scss'],\n})\nexport class CredentialPreviewWidgetComponent extends CredentialWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('C583E613-0D7E-41FE-9D1E-689901B033AE');\n\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n public readonly TextFlavor = TextFlavor;\n\n public credentialName = '';\n public status = '';\n\n protected get monitoredFields(): string[] {\n const fields = super.monitoredFields;\n fields.push(CredentialEntityFields.accessStatusField);\n return fields;\n }\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n private contentProviderService: ContentProviderService,\n private translateService: TranslateService,\n trackingService: TrackingService\n ) {\n super(securityCenterClientService, trackingService);\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n this.isLoading = false;\n }\n\n public async navigateToCredentialAsync(): Promise {\n if (this.credential) {\n const content = await this.contentProviderService.getContentAsync(this.credential.id, KnownContentContext.Navigation);\n if (content) {\n this.dataContext?.pushContent(content);\n }\n }\n }\n\n protected async initializeCredentialInfo(): Promise {\n await super.initializeCredentialInfo();\n\n if (this.credential) {\n this.credentialName = this.credential.name;\n const now = new Date();\n this.status = this.translateService.instant(\n this.credential.accessStatus === AccessStatus.Active ? 'STE_LABEL_CREDENTIAL_ACTIVE' : 'STE_LABEL_CREDENTIAL_INACTIVE'\n ) as string;\n } else {\n this.credentialName = this.translateService.instant('STE_LABEL_CREDENTIAL_UNKNOWN') as string;\n this.status = '';\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ItemSlot } from '@genetec/gelato';\nimport { AccessControlCommands } from '@modules/access-control/enumerations/access-control-commands';\nimport { AccessControlContentTypes } from '@modules/access-control/enumerations/access-control-content-types';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Component({\n selector: 'app-door-compact-info',\n templateUrl: './door-compact-info.component.html',\n styleUrls: ['./door-compact-info.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: DoorCompactInfoComponent,\n pluginTypes: [PluginTypes.Tile],\n exposure: {\n id: DoorCompactInfoComponent.pluginId,\n priority: -1,\n availableCommands: [AccessControlCommands.ShuntReader, AccessControlCommands.UnlockDoor],\n },\n isContentSupported: (content: Content) => !!content?.type.equals(AccessControlContentTypes.Door),\n requirements: { licenses: [KnownLicenses.accessControl], disabledFeatureFlags: [GeneralFeatureFlags.EntityState] },\n})\nexport class DoorCompactInfoComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('EE6B793C-3D71-4D8B-88EC-7A93E43B6702');\n public content?: Content;\n public dataContext: unknown;\n\n public title = '';\n public titleIcon = '';\n public titleCustomIconId?: IGuid;\n public entityId = '';\n public titleColor?: string;\n public description = '';\n public readonly ItemSlot = ItemSlot;\n\n constructor() {}\n\n ngOnInit() {\n const content = this.content;\n if (content) {\n this.entityId = content.source;\n this.title = content.title;\n this.description = content.description;\n this.titleIcon = content.icon;\n this.titleCustomIconId = content.customIconId;\n this.titleColor = content.color;\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n ngOnDestroy() {}\n}\n","\n \n \n {{ title }}\n {{ description }}\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { filterFieldChanged } from '@modules/shared/operators/filter-field-change';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { DoorEntityFields, IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\n\n@Component({\n selector: 'app-door-widget-base-component',\n template: '',\n})\nexport class DoorWidgetBaseComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n private static monitoredFields = [\n DoorEntityFields.runningStateField,\n DoorEntityFields.doorOpenedField,\n DoorEntityFields.isLockedField,\n DoorEntityFields.maintenanceModeActiveField,\n DoorEntityFields.customIconIdField,\n ];\n\n public dataContext?: ContentService;\n public content?: Content;\n public isLoading = true;\n\n public doorIcon$: Observable;\n\n public door$!: Observable;\n\n protected entityCacheTask?: IEntityCacheTask;\n protected scClient: WebAppClient | null = null;\n protected get monitoredFields(): string[] {\n return DoorWidgetBaseComponent.monitoredFields;\n }\n\n protected get door(): IDoorEntity | null {\n return this.doorSubject.getValue();\n }\n\n private doorSubject = new BehaviorSubject(null);\n private onDestroy = new Subject();\n\n constructor(securityCenterClientService: SecurityCenterClientService, protected translateService: TranslateService, trackingService: TrackingService) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n this.entityCacheTask = this.scClient?.buildEntityCache(this.monitoredFields);\n\n this.door$ = this.doorSubject.asObservable();\n this.doorIcon$ = this.door$.pipe(\n filterFieldChanged('doorOpened'),\n map((doorOpened) => (doorOpened ? Icon.DoorOpened : Icon.DoorClosed))\n );\n }\n\n public async ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n if (this.content && this.entityCacheTask) {\n const door = await this.entityCacheTask?.getEntityAsync(DoorEntity, SafeGuid.parse(this.content.source), true);\n if (door) {\n this.doorSubject.next(door);\n this.entityCacheTask\n .detectEntityChange(door, 'doorOpened', 'isLocked', 'runningState', 'maintenanceModeActive')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((updatedDoor) => {\n this.doorSubject.next(updatedDoor);\n });\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n {{ isOpenedStateString$ | async }}\n\n {{ maintenanceModeActiveString }}\n \n\n\n\n {{ isLockedStateString$ | async }} \n\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { filterFieldChanged } from '@modules/shared/operators/filter-field-change';\nimport { DoorWidgetBaseComponent } from '../door-widget-base.component';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n return !!(\n content?.type.equals(AccessControlContentTypes.Door) &&\n (content.contextContent === null || (content.contextContent.type.equals(AccessControlContentTypes.Event) && pluginType.equals(PluginTypes.Widget)))\n );\n};\n\n@Component({\n selector: 'app-door-actions-widget',\n templateUrl: './door-actions-widget.component.html',\n styleUrls: ['./door-actions-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: DoorActionsWidgetComponent,\n pluginTypes: [PluginTypes.Widget, PluginTypes.MapPopupCompact],\n exposure: { id: DoorActionsWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\nexport class DoorActionsWidgetComponent extends DoorWidgetBaseComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('F9B8C125-E1C8-48D8-A0D9-4A5DDF387E08');\n\n public stateAdditionalInfoString$: Observable;\n public isMaintenanceModeActiveStateString$: Observable;\n public isLockedStateString$: Observable;\n public isOpenedStateString$: Observable;\n private stateAdditionalInfoStringSubject = new Subject();\n\n constructor(securityCenterClientService: SecurityCenterClientService, translateService: TranslateService, trackingService: TrackingService) {\n super(securityCenterClientService, translateService, trackingService);\n\n this.isMaintenanceModeActiveStateString$ = this.door$.pipe(\n filterFieldChanged('maintenanceModeActive'),\n map((maintenanceModeActive) => (maintenanceModeActive ? (this.translateService.instant('STE_LABEL_DOOR_MAINTENANCE_MODE') as string) : ''))\n );\n\n this.isOpenedStateString$ = this.door$.pipe(\n filterFieldChanged('doorOpened'),\n map((doorOpened) => this.translateService.instant(doorOpened ? 'STE_LABEL_DOOROPENED' : 'STE_LABEL_DOORCLOSED') as string)\n );\n\n this.isLockedStateString$ = this.door$.pipe(\n filterFieldChanged('isLocked'),\n map((isLocked) => this.translateService.instant(isLocked ? 'STE_LABEL_DOOR_LOCKED' : 'STE_LABEL_DOOR_UNLOCKED') as string)\n );\n\n this.stateAdditionalInfoString$ = this.stateAdditionalInfoStringSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n this.isLoading = false;\n\n const door = this.door;\n if (door && this.entityCacheTask) {\n this.entityCacheTask\n .detectRelationChangeAsync(\n door,\n () => {\n const _ = door?.getAutoUnlockOverrideAsync();\n },\n async (doorEntity: IDoorEntity): Promise => {\n return this.updateAdditionnalInfo(doorEntity);\n }\n )\n .fireAndForget();\n }\n }\n\n private async updateAdditionnalInfo(door: IDoorEntity): Promise {\n if (door) {\n const scheduleOverride = await door.getAutoUnlockOverrideAsync();\n if (scheduleOverride?.hasField('isUnlocking') && door.runningState === RunningState.NotRunning) {\n this.stateAdditionalInfoStringSubject.next(this.translateService.instant('STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE_WIDGET_TOOLTIP') as string);\n return;\n }\n }\n\n this.stateAdditionalInfoStringSubject.next('');\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SafeGuid } from 'safeguid';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n if (content && !content.contextContent) {\n return (\n content.type.equals(AccessControlContentTypes.Door) ||\n content.type.equals(AccessControlContentTypes.Cardholder) ||\n content.type.equals(AccessControlContentTypes.Credential)\n );\n }\n return false;\n};\n\n@Component({\n selector: 'app-door-events-widget',\n templateUrl: './door-events-widget.component.html',\n styleUrls: ['./door-events-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: DoorEventsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: DoorEventsWidgetComponent.pluginId, priority: 10 },\n requirements: { globalPrivileges: [KnownPrivileges.unitActivityReportPrivilege] },\n isContentSupported,\n})\nexport class DoorEventsWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('9698F4F7-7F83-444F-958E-E1ADF01364CF');\n public content?: Content;\n public dataContext!: ContentService;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n","
    \n
    \n {{ 'STE_ENTITY_DOOR' | translate }}\n \n
    \n \n \n {{ (door$ | async)?.name ?? '' }}\n {{ doorSecondaryText$ | async }} \n \n
    \n\n\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n","import { Component, OnInit } from '@angular/core';\nimport { Icon, ItemSlot, TextFlavor } from '@genetec/gelato';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { KnownContentContext } from '@modules/shared/services/content/KnownContentContext';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { DoorWidgetBaseComponent } from '../door-widget-base.component';\n\nconst isContentSupported = (content: Content): boolean => {\n return !!(content?.contextContent !== null && content?.type.equals(AccessControlContentTypes.Door || content?.type.equals(AccessControlContentTypes.Reader)));\n};\n@InternalContentPluginDescriptor({\n type: DoorPreviewWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: DoorPreviewWidgetComponent.pluginId, priority: 1 },\n isContentSupported,\n})\n@Component({\n selector: 'app-door-preview-widget',\n templateUrl: './door-preview-widget.component.html',\n styleUrls: ['./door-preview-widget.component.scss'],\n})\nexport class DoorPreviewWidgetComponent extends DoorWidgetBaseComponent implements OnInit {\n public static pluginId = SafeGuid.parse('CC369303-8FBF-4E1B-9B1E-891945070998');\n\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n public readonly TextFlavor = TextFlavor;\n\n public doorSecondaryText$: Observable;\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n translateService: TranslateService,\n trackingService: TrackingService,\n private contentProviderService: ContentProviderService\n ) {\n super(securityCenterClientService, translateService, trackingService);\n this.doorSecondaryText$ = this.door$.pipe(map((door) => this.getDoorString(door)));\n }\n\n public async ngOnInit() {\n await super.ngOnInit();\n\n this.isLoading = false;\n }\n\n public async navigateToDoorAsync(): Promise {\n const door = this.door;\n if (door) {\n const content = await this.contentProviderService.getContentAsync(door.id, KnownContentContext.Navigation);\n if (content) {\n const contentService = this.dataContext as ContentService;\n contentService.pushContent(content);\n }\n }\n }\n\n private getDoorString(door: IDoorEntity | null): string {\n if (!door) {\n return '';\n }\n\n const openedStateString = this.translateService.instant(door.doorOpened ? 'STE_LABEL_DOOROPENED' : 'STE_LABEL_DOORCLOSED') as string;\n let stateString;\n if (door.maintenanceModeActive) {\n stateString = this.translateService.instant('STE_LABEL_DOOR_MAINTENANCE_MODE') as string;\n } else {\n stateString = this.translateService.instant(door.isLocked ? 'STE_LABEL_DOOR_LOCKED' : 'STE_LABEL_DOOR_UNLOCKED') as string;\n }\n\n return `${openedStateString} - ${stateString}`;\n }\n}\n","/**\n * Different option for the temporary override schedule\n */\nexport enum TemporaryOverrideScheduleOption {\n ForNextX = 0,\n Range = 1,\n}\n","/**\n * Different options for overriding schedule\n */\nexport enum OverrideScheduleOption {\n Maintenance = 0,\n TemporaryOverride = 1,\n}\n","\n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
      \n
    • \n \n {{ 'STE_LABEL_DOORUNLOCKEDFORMAINTENANCE' | translate }}\n \n
    • \n
    • \n \n {{ 'STE_LABEL_TEMPORARYOVERRIDESCHEDULE' | translate }}\n \n
        \n
      • \n
        \n \n \n \n
        \n
      • \n
      • \n \n {{ 'STE_LABEL_FORTHENEXT_X_YEARS_MONTHS_WEEKS_HOURS_MINUTES' | translate }}\n \n
        \n \n \n
        \n
      • \n
      • \n \n {{ 'STE_LABEL_SPECIFICDATE' | translate }}\n \n
        \n \n \n {{ rangeTimeError }}\n
        \n
      • \n
      \n
    • \n
    \n \n \n {{ 'STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE' | translate }}\n \n
    \n\n\n\n\n","import { Component, Injector, OnInit, Version } from '@angular/core';\nimport { Icon, TextFlavor } from '@genetec/gelato';\nimport { Color, GenAlertService, GenMeltedItem, GenToastService } from '@genetec/gelato-angular';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { AutoUnlockOverride, DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport moment from 'moment';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DateFilterPeriod } from 'src/app/modules/shared/components/filters/common-filters/filter-date/enums/date-filter-period.enum';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { TypedConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { TemporaryOverrideScheduleOption } from './enum/temporary-override-schedule-options.enum';\nimport { OverrideScheduleOption } from './enum/override-schedule-options.enum';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\n\n@Component({\n selector: 'app-override-schedule-modal',\n templateUrl: './override-schedule-modal.component.html',\n styleUrls: ['./override-schedule-modal.component.scss'],\n})\nexport class OverrideScheduleModalComponent extends TypedConnectionAwareModalComponent implements OnInit {\n private static readonly defaultTimePeriod = DateFilterPeriod.Minutes;\n private static readonly defaultDuration = 5;\n\n // Override unlock schedule and maintenance mode for federated door not supported before 5.11.1\n public static readonly MinimumSecurityCenterVersionForFederatedDoors = new Version('5.11.1');\n\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly Colors = Color;\n\n public entityId?: IGuid;\n public canUnlockForMaintenance?: boolean;\n public hasOverrideSchedule = false;\n\n public OverrideScheduleOption = OverrideScheduleOption;\n public TemporaryOverrideScheduleOption = TemporaryOverrideScheduleOption;\n public periodItems: Array = [];\n public option = OverrideScheduleOption.TemporaryOverride;\n public isOverrideLocking = true;\n public temporaryOverrideOption = TemporaryOverrideScheduleOption.ForNextX;\n public duration = OverrideScheduleModalComponent.defaultDuration;\n public period?: GenMeltedItem;\n public durationTimeStart: string | null = null;\n public durationTimeEnd: string | null = null;\n public rangeTimeStart: string | null = null;\n public rangeTimeEnd: string | null = null;\n\n public maxDuration = 1;\n\n public durationError = false;\n public rangeTimeError = '';\n\n public isOnline = true;\n\n public isLoading = true;\n\n private scClient!: WebAppClient;\n private doorEntity: DoorEntity | null = null;\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService,\n private genAlertService: GenAlertService,\n protected authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private toastService: GenToastService\n ) {\n super(authService, injector, trackingService);\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n this.scClient = this.securityCenterClientService?.scClient;\n if (this.scClient && this.entityId) {\n this.doorEntity = (await this.scClient.getEntityAsync(DoorEntity, this.entityId)) as DoorEntity;\n this.isOnline = this.doorEntity?.runningState !== RunningState.NotRunning;\n }\n this.initializePeriodItems();\n this.initializeTimeInputs();\n this.genModalComponent.onDefaultActionClick = (): Promise => Promise.resolve(this.onOverrideScheduleSave());\n this.isLoading = false;\n }\n\n public onLockOverrideChange(): void {\n this.isOverrideLocking = !this.isOverrideLocking;\n }\n\n public onDurationChange(newDuration: number): void {\n this.duration = newDuration;\n this.checkDurationError();\n }\n\n public onPeriodChange(newPeriod: GenMeltedItem): void {\n this.period = newPeriod;\n this.checkDurationError();\n }\n\n public onRangeTimeStartChange(newDate: string): void {\n this.rangeTimeStart = newDate;\n this.checkRangeTimeError();\n }\n\n public onRangeTimeEndChange(newDate: string): void {\n this.rangeTimeEnd = newDate;\n this.checkRangeTimeError();\n }\n public onOptionChange(newOption: string): void {\n this.option = Number.parseInt(newOption);\n }\n\n public onTemporaryOverrideOptionChange(newOption: string): void {\n this.temporaryOverrideOption = Number.parseInt(newOption);\n\n switch (this.temporaryOverrideOption) {\n case TemporaryOverrideScheduleOption.ForNextX:\n this.rangeTimeError = '';\n this.checkDurationError();\n break;\n case TemporaryOverrideScheduleOption.Range:\n this.durationError = false;\n this.checkRangeTimeError();\n break;\n }\n }\n\n public onOverrideScheduleSave(): void {\n this.genAlertService.show('overrideScheduleAlert');\n }\n\n public onOverrideScheduleConfirm = async (): Promise => {\n if (this.doorEntity) {\n switch (this.option) {\n case OverrideScheduleOption.Maintenance:\n this.doorEntity.maintenanceModeActive = true;\n break;\n case OverrideScheduleOption.TemporaryOverride: {\n const override = new AutoUnlockOverride();\n override.isUnlocking = !this.isOverrideLocking;\n\n switch (this.temporaryOverrideOption) {\n case TemporaryOverrideScheduleOption.ForNextX:\n this.durationTimeStart = moment.utc().toISOString();\n this.durationTimeEnd = moment\n .utc()\n .add(this.duration, this.period?.id as moment.unitOfTime.DurationConstructor)\n .toISOString();\n\n override.start = moment(this.durationTimeStart).toDate();\n override.end = moment(this.durationTimeEnd).toDate();\n break;\n case TemporaryOverrideScheduleOption.Range:\n if (this.rangeTimeStart && this.rangeTimeEnd) {\n override.start = moment(this.rangeTimeStart).toDate();\n override.end = moment(this.rangeTimeEnd).toDate();\n }\n break;\n }\n await this.doorEntity.addAutoUnlockOverrideAsync(override);\n break;\n }\n }\n const response = await this.scClient.updateAsync(this.doorEntity);\n if (response.statusCode === HttpStatusCode.OK) {\n this.hasOverrideSchedule = true;\n this.emitResult(this.hasOverrideSchedule);\n this.updateOverrideSchedule();\n this.genModalComponent.hide();\n return true;\n } else {\n const msg = stringFormat(\n this.translateService.instant('STE_LABEL_FORMAT_ERROR_OCCURRED_EXECUTING_ACTION_X') as string,\n this.translateService.instant('STE_BUTTON_OVERRIDE_UNLOCK_SCHEDULES') as string\n );\n this.toastService.show({ text: msg, flavorCustomColor: this.Color.Fragola });\n return false;\n }\n }\n return false;\n };\n\n public updateOverrideSchedule(): void {}\n\n public isSaveDisabled = (): boolean => {\n if (this.option === OverrideScheduleOption.TemporaryOverride) {\n switch (this.temporaryOverrideOption) {\n case TemporaryOverrideScheduleOption.ForNextX:\n return this.durationError;\n case TemporaryOverrideScheduleOption.Range:\n return this.rangeTimeError !== '';\n }\n }\n return false;\n };\n\n private initializeTimeInputs() {\n this.durationTimeStart = moment.utc().toISOString();\n this.durationTimeEnd = moment\n .utc()\n .add(this.duration, this.period?.id as moment.unitOfTime.DurationConstructor)\n .toISOString();\n\n this.rangeTimeStart = moment.utc().toISOString();\n this.rangeTimeEnd = moment.utc().add(OverrideScheduleModalComponent.defaultDuration, OverrideScheduleModalComponent.defaultTimePeriod).toISOString();\n }\n\n private initializePeriodItems() {\n this.periodItems = [\n {\n id: DateFilterPeriod.Minutes,\n text: this.translateService.instant('STE_UNIT_MINUTES_LC') as string,\n },\n {\n id: DateFilterPeriod.Hours,\n text: this.translateService.instant('STE_UNIT_HOURS_LC') as string,\n },\n ];\n\n this.period = this.periodItems.find((x) => x.id === OverrideScheduleModalComponent.defaultTimePeriod);\n this.checkDurationError();\n }\n\n private checkDurationError() {\n this.maxDuration = this.period?.id === DateFilterPeriod.Minutes ? 24 * 60 : 24;\n this.durationError = isNaN(this.duration) || this.duration > this.maxDuration || this.duration < 1;\n }\n\n private checkRangeTimeError() {\n if (this.rangeTimeEnd && this.rangeTimeStart) {\n if (!moment(this.rangeTimeEnd).isValid() || !moment(this.rangeTimeStart).isValid()) {\n this.rangeTimeError = this.translateService.instant('STE_MESSAGE_ERROR_INVALIDDATETIMES') as string;\n } else if (moment(this.rangeTimeEnd).isBefore(this.rangeTimeStart)) {\n this.rangeTimeError = this.translateService.instant('STE_MESSAGE_ERROR_ENDTIMEEARLIERTHANSTARTTIME') as string;\n } else if (moment(this.rangeTimeEnd).isSame(this.rangeTimeStart)) {\n this.rangeTimeError = this.translateService.instant('STE_MESSAGE_ERROR_ENDTIMESAMEASSTARTTIME') as string;\n } else if (Math.abs(moment(this.rangeTimeStart).diff(moment(this.rangeTimeEnd), 'hours')) >= 24) {\n this.rangeTimeError = this.translateService.instant('STE_MESSAGE_ERROR_EXCEED24HOURS') as string;\n } else {\n this.rangeTimeError = '';\n }\n } else {\n this.rangeTimeError = this.translateService.instant('STE_MESSAGE_ERROR_INVALIDDATETIMES') as string;\n }\n }\n}\n","export enum DeviceStates {\n Enabled = 'Enabled',\n Disabled = 'Disabled',\n}\n","\n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n
    \n {{ 'STE_LABEL_FORMAT_READER_X' | translate | stringFormat: [device.name] }}\n
    \n \n \n \n
    \n
    \n
    \n\n","import { Component, Injector, Input, OnInit } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { DoorSideAccessPointEntity } from 'RestClient/Client/Model/AccessControl/DoorSideAccessPointEntity';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IGuid } from 'safeguid';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { DeviceStates } from '@modules/shared/enumerations/device-states';\n\n@Component({\n selector: 'app-shunt-reader-modal',\n templateUrl: './shunt-reader-modal.component.html',\n styleUrls: ['./shunt-reader-modal.component.scss'],\n})\nexport class ShuntReaderModalComponent extends ConnectionAwareModalComponent implements OnInit {\n @Input()\n public entityId!: IGuid;\n public doorSideAccessPointEntityWithReaders?: DoorSideAccessPointEntity[] | null = null;\n public devicesShuntState: boolean[] = [];\n\n private scClient!: WebAppClient;\n private doorEntity: DoorEntity | null = null;\n\n constructor(private securityCenterClientService: SecurityCenterClientService, protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n this.scClient = this.securityCenterClientService?.scClient;\n if (this.scClient) {\n this.doorEntity = (await this.scClient.getEntityAsync(DoorEntity, this.entityId)) as DoorEntity;\n if (this.doorEntity) {\n this.initializeDevices();\n }\n }\n }\n\n public onShuntStateChange(value: boolean, index: number): void {\n this.devicesShuntState[index] = value;\n }\n\n public onShuntStateConfirm = (): Promise => {\n this.doorSideAccessPointEntityWithReaders?.forEach(async (device, index) => {\n if ((device.deviceState === DeviceStates.Disabled) !== this.devicesShuntState[index]) {\n const response = await device.setDeviceStateAsync(this.devicesShuntState[index]);\n if (response?.statusCode === HttpStatusCode.OK) {\n device.deviceState = this.devicesShuntState[index] ? DeviceStates.Disabled : DeviceStates.Enabled;\n }\n }\n });\n return Promise.resolve(true);\n };\n\n private initializeDevices() {\n if (this.doorSideAccessPointEntityWithReaders) {\n const devicesShuntState: Array = [];\n this.doorSideAccessPointEntityWithReaders.forEach((entity) => {\n devicesShuntState.push(entity.deviceState === DeviceStates.Disabled);\n });\n\n this.devicesShuntState = devicesShuntState;\n }\n }\n}\n","
    \n \n \n \n {{ this.content?.contextContent?.title }}\n {{ description }}\n \n
    \n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { Icon, ItemSlot } from '@genetec/gelato';\nimport { ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SafeGuid } from 'safeguid';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n//\nconst isContentSupported = (content: Content): boolean => {\n return !!(content?.contextContent && content.type.equals(AccessControlContentTypes.Door) && content.contextContent?.type.equals(AccessControlContentTypes.Event));\n};\n\n@Component({\n selector: 'app-door-event-widget',\n templateUrl: './door-event-widget.component.html',\n styleUrls: ['./door-event-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalContentPluginDescriptor({\n type: DoorEventWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupCompact, PluginTypes.MapPopupExpand],\n exposure: { id: DoorEventWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\nexport class DoorEventWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('6E3428A3-D538-4DA2-93B1-56ECF98FC0F2');\n\n public content?: Content;\n public dataContext: unknown;\n\n public icon: Icon | null = Icon.Cardholder;\n public readonly ItemSlot = ItemSlot;\n public description: string | undefined = 'Unknown';\n public cardholderPicture: string | undefined = undefined;\n\n private scClient!: SecurityCenterClient;\n\n constructor(private securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n if (this.content) {\n this.description = this.content.contextContent?.description;\n const chContent = this.content.contextsubContents?.find((content) => content.type.equals(AccessControlContentTypes.Cardholder));\n\n if (chContent) {\n this.description = chContent.title;\n this.scClient = this.securityCenterClientService?.scClient;\n const cardholder = await this.scClient?.getEntityAsync(CardholderEntity, SafeGuid.parse(chContent.source), null, null, '');\n\n if (cardholder) {\n const picture = await cardholder.getPictureAsync();\n if (picture !== null) {\n const pictureData = picture.data;\n if (pictureData) {\n this.cardholderPicture = 'data:image/png;base64,' + pictureData;\n }\n }\n }\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AccessPointEntityFields, IAccessPointEntity } from 'RestClient/Client/Interface/IAccessPointEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { AccessPointEntity } from 'RestClient/Client/Model/AccessControl/AccessPointEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { DeviceStates } from '@modules/shared/enumerations/device-states';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n return !!(content?.type.equals(AccessControlContentTypes.Reader) && (content.contextContent === null || pluginType.equals(PluginTypes.Widget)));\n};\n\n@Component({\n selector: 'app-reader-actions-widget',\n templateUrl: './reader-actions-widget.component.html',\n})\n@InternalContentPluginDescriptor({\n type: ReaderActionsWidgetComponent,\n pluginTypes: [PluginTypes.Widget, PluginTypes.MapPopupCompact],\n exposure: {\n id: ReaderActionsWidgetComponent.pluginId,\n priority: 0,\n },\n isContentSupported,\n})\nexport class ReaderActionsWidgetComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('1D8422E1-A445-4010-9556-1A17DAE529CE');\n private static monitoredFields = [AccessPointEntityFields.deviceStateField, AccessPointEntityFields.runningStateField];\n\n public content?: Content;\n public dataContext?: ContentService;\n public get entityName(): string {\n return stringFormat(this.translateService.instant('STE_LABEL_FORMAT_READER_X') as string, this.readerName);\n }\n public isLoading = true;\n public get isShunted(): boolean {\n return this.isShuntedValue;\n }\n public set isShunted(value: boolean) {\n this.isShuntedValue = value;\n this.isShuntedString = this.translateService.instant(value ? 'STE_LABEL_DOOR_READER_SHUNTED' : 'STE_LABEL_DOOR_READER_ENABLED') as string;\n }\n public isShuntedString = '';\n public reader: AccessPointEntity | null = null;\n\n protected entityCacheTask!: IEntityCacheTask;\n protected get monitoredFields(): string[] {\n return ReaderActionsWidgetComponent.monitoredFields;\n }\n protected scClient: WebAppClient | null = null;\n\n private isShuntedValue = false;\n private get readerName(): string {\n return this.reader?.name || '';\n }\n\n constructor(securityCenterClientService: SecurityCenterClientService, protected translateService: TranslateService, trackingService: TrackingService) {\n super(trackingService);\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnDestroy() {\n await this.entityCacheTask?.dispose();\n super.ngOnDestroy();\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n if (this.content) {\n await this.getAccessPointAsync(SafeGuid.parse(this.content.source));\n await this.initializeAccessPointInfo();\n }\n this.isLoading = false;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n protected async getAccessPointAsync(accessPointId: IGuid): Promise {\n if (this.scClient) {\n this.entityCacheTask = this.scClient.buildEntityCache(this.monitoredFields);\n this.reader = (await this.entityCacheTask.getEntityAsync(AccessPointEntity, accessPointId, true)) as AccessPointEntity;\n }\n }\n\n protected async initializeAccessPointInfo(): Promise {\n if (this.reader && this.entityCacheTask) {\n this.isShunted = this.reader.deviceState === DeviceStates.Disabled;\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.reader,\n () => {\n const _ = this.reader?.deviceState === DeviceStates.Disabled;\n },\n ((_: IAccessPointEntity, newValue: string, __: string) => {\n this.isShunted = newValue === DeviceStates.Disabled;\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n\n return Promise.resolve();\n }\n}\n","\n {{ entityName }}\n \n\n","\n \n {{ content?.title }}\n \n {{ (door.doorOpened ? 'STE_LABEL_DOOROPENED' : 'STE_LABEL_DOORCLOSED') | translate }} \n \n {{ (door.isLocked ? 'STE_LABEL_DOOR_LOCKED' : 'STE_LABEL_DOOR_UNLOCKED') | translate }}\n \n \n {{ 'STE_LABEL_DOOR_MAINTENANCE_MODE' | translate }}\n \n
    \n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { filterFieldChanged } from '@modules/shared/operators/filter-field-change';\nimport { CommandsUsage } from '@modules/shared/services/commands/commands-usage/commands-usage';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { DoorWidgetBaseComponent } from '../../door/door-widget-base.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-door-entity-state',\n templateUrl: './door-entity-state.component.html',\n styleUrls: ['./door-entity-state.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: DoorEntityStateComponent,\n pluginTypes: [PluginTypes.TileHeader],\n exposure: {\n id: DoorEntityStateComponent.pluginId,\n priority: -1,\n },\n isContentSupported: (content: Content) => {\n if (content && !content.contextContent) {\n if (content.type) {\n return content.type.equals(AccessControlContentTypes.Door);\n }\n }\n return false;\n },\n requirements: { licenses: [KnownLicenses.accessControl], enabledFeatureFlags: [GeneralFeatureFlags.EntityState] },\n})\nexport class DoorEntityStateComponent extends DoorWidgetBaseComponent implements OnInit, ContentPluginComponent, OnDestroy {\n public static pluginId = SafeGuid.parse('8A4EA39D-36B5-4C9E-826B-0C4763D06E0B');\n\n public readonly RunningState = RunningState;\n\n // public properties\n public commandsUsage!: CommandsUsage;\n public doorCustomIconState$: Observable;\n\n // Private properties\n private subscriptions = new SubscriptionCollection();\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n translateService: TranslateService,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(securityCenterClientService, translateService, trackingService);\n\n this.doorCustomIconState$ = this.door$.pipe(\n filterFieldChanged('doorOpened'),\n map((doorOpened) => (doorOpened ? CustomIconState.Active : CustomIconState.Normal), distinctUntilChanged())\n );\n }\n\n public async ngOnDestroy(): Promise {\n await super.ngOnDestroy();\n this.subscriptions.unsubscribeAll();\n }\n\n public setContent(content: Content): void {\n this.content = content;\n this.createCommandsUsageAsync().fireAndForget();\n }\n\n private async createCommandsUsageAsync() {\n this.commandsUsage = await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: this.content }, []);\n this.subscriptions.add(this.commandsUsage.subscribe());\n this.changeDetectorRef.markForCheck();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { DoorEntityFields, IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { filterFieldChanged } from '@modules/shared/operators/filter-field-change';\nimport { notNullOrUndefined } from '@modules/shared/operators/not-null-or-undefined';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { CustomIconState } from '@modules/shared/api/api';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { AccessControlContentTypes } from '../../../enumerations/access-control-content-types';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, pluck, takeUntil } from 'rxjs/operators';\n\n//\nexport const isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n if (content?.type?.equals(AccessControlContentTypes.Door) && pluginType.equals(PluginTypes.Tile)) {\n // only display the door controls in tiles if we don't have anything else to display\n return !content.parameters?.getField('HasAttachedData');\n }\n return false;\n};\n\n@Component({\n selector: 'app-door-state',\n templateUrl: './door-state.component.html',\n styleUrls: ['./door-state.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: DoorStateComponent,\n pluginTypes: [PluginTypes.Tile],\n exposure: { id: DoorStateComponent.pluginId, priority: 0 },\n isContentSupported,\n requirements: { licenses: [KnownLicenses.accessControl] },\n})\nexport class DoorStateComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('E5666486-A150-49A0-9934-2E50F2541FC4');\n public content?: Content;\n public dataContext: unknown;\n public doorIcon$: Observable;\n public doorId$: Observable;\n public doorCustomIconId$: Observable;\n public doorCustomIconState$: Observable;\n private entityCacheTask!: IEntityCacheTask;\n\n private scClient: WebAppClient | null = null;\n private doorSubject = new BehaviorSubject(null);\n private onDestroy = new Subject();\n\n constructor(private securityCenterClientService: SecurityCenterClientService, trackingService: TrackingService) {\n super(trackingService);\n\n this.scClient = securityCenterClientService?.scClient;\n this.entityCacheTask = this.scClient?.buildEntityCache([DoorEntityFields.doorOpenedField, EntityFields.customIconIdField]);\n\n const door$ = this.doorSubject.asObservable();\n const doorOpened$ = door$.pipe(filterFieldChanged('doorOpened'));\n this.doorIcon$ = doorOpened$.pipe(map((doorOpened) => (doorOpened ? Icon.DoorOpened : Icon.DoorClosed)));\n this.doorId$ = door$.pipe(notNullOrUndefined(), pluck('id'), distinctUntilChanged());\n this.doorCustomIconId$ = door$.pipe(filterFieldChanged('customIconId'));\n this.doorCustomIconState$ = doorOpened$.pipe(map((doorOpened) => (doorOpened ? CustomIconState.Active : CustomIconState.Normal)));\n }\n\n public async ngOnInit(): Promise {\n super.ngOnInit();\n await this.initializeEntityCache();\n }\n\n public async ngOnDestroy(): Promise {\n await this.entityCacheTask?.dispose();\n this.onDestroy.next();\n this.onDestroy.complete();\n super.ngOnDestroy();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n private async initializeEntityCache() {\n this.scClient = this.securityCenterClientService?.scClient;\n if (this.scClient && this.content) {\n const door = await this.entityCacheTask?.getEntityAsync(DoorEntity, SafeGuid.parse(this.content.source), true);\n this.doorSubject.next(door);\n if (door) {\n this.entityCacheTask\n .detectEntityChange(door, 'doorOpened', 'isLocked', 'runningState', 'maintenanceModeActive')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((updatedDoor) => {\n this.doorSubject.next(updatedDoor);\n });\n }\n }\n }\n}\n","
    \n \n \n \n
    \n","import { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { CardholderEntityFields, ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { AccessControlCommands } from '../enumerations/access-control-commands';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { AccessControlContentTypes } from '../enumerations/access-control-content-types';\nimport {\n CommandBindings,\n CommandsService,\n COMMANDS_SERVICE,\n CommandDisplay,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '../../shared/services/language/language.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class CardholderCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(\n AccessControlCommands.ActivateDeactivateCardholder,\n this.createCardholderCommandDescriptor(\n AccessControlCommands.ActivateDeactivateCardholder,\n 'STE_ACTION_DEACTIVATECARDHOLDER',\n MeltedIcon.Denied,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.changeCardholderStatusPrivilege]), isFederated: false })\n )\n );\n // FM: Diabled for now until discussed with UX\n // descriptors.set(\n // AccessControlCommands.reportLostCardholderCredential,\n // this.createCardholderCommandDescriptor(\n // AccessControlCommands.reportLostCardholderCredential,\n // 'STE_EVENT_REASON_NAME_LOSTCREDENTIAL',\n // MeltedIcon.Badge,\n // this.fillCommandRequirements({ requiredPrivileges: [KnownPrivileges.changeCardholderStatusPrivilege], isFederated: false })\n // )\n // );\n // descriptors.set(\n // AccessControlCommands.reportStolenCardholderCredential,\n // this.createCardholderCommandDescriptor(\n // AccessControlCommands.reportStolenCardholderCredential,\n // 'STE_EVENT_REASON_NAME_STOLENCREDENTIAL',\n // MeltedIcon.Badge,\n // this.fillCommandRequirements({ requiredPrivileges: [KnownPrivileges.changeCardholderStatusPrivilege], isFederated: false })\n // )\n // );\n this.internalCommandDescriptors = descriptors;\n }\n\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, CardholderEntityFields.accessStatusField, EntityFields.isFederatedField]);\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, KnownFeatures.accessControlId]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isActivateDeactivateAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ActivateDeactivateCardholder);\n this.configureActivateDeactivateInvalidateDisplayAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n // FM: Diabled for now until discussed with UX\n // if (await this.isReportLostCredentialAvailableAsync(commandContext, commandArgs)) {\n // commandIds.push(AccessControlCommands.reportLostCardholderCredential);\n // this.configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext, AccessControlCommands.reportLostCardholderCredential).catch();\n // }\n // if (await this.isReportStolenCredentialAvailableAsync(commandContext, commandArgs)) {\n // commandIds.push(AccessControlCommands.reportStolenCardholderCredential);\n // this.configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext, AccessControlCommands.reportStolenCardholderCredential).catch();\n // }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: AccessControlCommands.ActivateDeactivateCardholder,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeActivateDeactivate(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isActivateDeactivateAvailableAsync(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getActivateDeactivateDisplayAsync(entityCommandContext), commandContext),\n });\n // FM: Diabled for now until discussed with UX\n // bindings.addCommand({\n // commandId: AccessControlCommands.reportLostCredential,\n // executeCommandHandler: (executeCommandData) =>\n // this.safeExecuteCommand((entityExecuteCommandData) => this.executeReportLostCredential(entityExecuteCommandData), executeCommandData),\n // isCommandAvailableHandler: (commandContext) =>\n // this.safeIsCommandAvailableAsync((entityCommandContext) => this.isReportLostCredentialAvailableAsync(entityCommandContext), commandContext),\n // canExecuteCommandHandler: (commandContext) =>\n // this.safeCanExecuteCommandAsync((entityCommandContext) => this.canReportCredentialLostAsync(entityCommandContext), commandContext),\n // });\n // bindings.addCommand({\n // commandId: AccessControlCommands.reportStolenCredential,\n // executeCommandHandler: (executeCommandData) =>\n // this.safeExecuteCommand((entityExecuteCommandData) => this.executeReportStolenCredential(entityExecuteCommandData), executeCommandData),\n // isCommandAvailableHandler: (commandContext) =>\n // this.safeIsCommandAvailableAsync((entityCommandContext) => this.isReportStolenCredentialAvailableAsync(entityCommandContext), commandContext),\n // canExecuteCommandHandler: (commandContext) =>\n // this.safeCanExecuteCommandAsync((entityCommandContext) => this.canReportCredentialStolenAsync(entityCommandContext), commandContext),\n // });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = SafeGuid.createSet([AccessControlContentTypes.Cardholder]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Cardholders]);\n }\n return super.fillCommandRequirements(requirements);\n }\n\n private async canReportCredentialLostAsync(commandContext: EntityCommandContext): Promise {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n return cardholderEntity !== null && cardholderEntity.accessStatus !== AccessStatus.Lost;\n }\n\n private async canReportCredentialStolenAsync(commandContext: EntityCommandContext): Promise {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n return cardholderEntity !== null && cardholderEntity.accessStatus !== AccessStatus.Stolen;\n }\n\n private async changeAccessStatusAsync(commandContext: EntityCommandContext, accessStatus: string, cardholderEntity?: ICardholderEntity): Promise {\n let entity = cardholderEntity || null;\n if (!entity) {\n entity = await this.extractCardholderEntity(commandContext);\n }\n if (entity) {\n entity.accessStatus = accessStatus;\n await this.updateEntityAsync(entity, commandContext.entityCache);\n }\n }\n\n private async configureActivateDeactivateInvalidateDisplayAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateDisplay) {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n cardholderEntity,\n () => {\n const _ = cardholderEntity.accessStatus;\n },\n (() => {\n commandContext.invalidateDisplay(AccessControlCommands.ActivateDeactivateCardholder);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private async configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext: EntityCommandsUsageContext, commandId: IGuid): Promise {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n cardholderEntity,\n () => {\n const _ = cardholderEntity.accessStatus;\n },\n (() => {\n commandContext.invalidateCanExecute(commandId);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private createCardholderCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: EntityCommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_ENTITY_CARDHOLDER',\n groupIcon: MeltedIcon.Cardholder,\n requirements,\n keyBinding,\n };\n }\n\n private executeActivateDeactivate(executeCommandData: ExecuteEntityCommandData): void {\n this.executeActivateDeactivateAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeActivateDeactivateAsync(commandContext: EntityCommandContext): Promise {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n await this.changeAccessStatusAsync(commandContext, this.isActive(cardholderEntity) ? AccessStatus.Inactive : AccessStatus.Active, cardholderEntity);\n }\n }\n\n private executeReportLostCredential(executeCommandData: ExecuteEntityCommandData): void {\n this.changeAccessStatusAsync(executeCommandData.commandContext, AccessStatus.Lost).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private executeReportStolenCredential(executeCommandData: ExecuteEntityCommandData): void {\n this.changeAccessStatusAsync(executeCommandData.commandContext, AccessStatus.Stolen).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async extractCardholderEntity(commandContext: EntityCommandContext): Promise {\n return this.extractEntityAsync(CardholderEntity, commandContext);\n }\n\n private async getActivateDeactivateDisplayAsync(commandContext: EntityCommandContext): Promise {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n if (!this.isActive(cardholderEntity)) {\n return { name: () => this.translateService?.instant('STE_ACTION_ACTIVATECARDHOLDER') as string, icon: MeltedIcon.Update };\n }\n return { name: () => this.translateService?.instant('STE_ACTION_DEACTIVATECARDHOLDER') as string, icon: MeltedIcon.Denied };\n }\n }\n\n private async isActivateDeactivateAvailableAsync(commandContext?: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ActivateDeactivateCardholder, commandContext, commandArgs);\n }\n\n private isActive(cardholderEntity: ICardholderEntity): boolean {\n return this.isSameAccessStatus(cardholderEntity, AccessStatus.Active);\n }\n\n private async isReportLostCredentialAvailableAsync(commandContext?: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ReportLostCardholderCredential, commandContext, commandArgs);\n }\n\n private async isReportStolenCredentialAvailableAsync(commandContext?: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ReportStolenCardholderCredential, commandContext, commandArgs);\n }\n\n private isSameAccessStatus(cardholderEntity: ICardholderEntity, accessStatus: string): boolean {\n return cardholderEntity.accessStatus === accessStatus;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AccessStatus } from 'RestClient/Client/Enumerations/AccessStatus';\nimport { CredentialEntityFields, ICredentialEntity } from 'RestClient/Client/Interface/ICredentialEntity';\nimport { CredentialEntity } from 'RestClient/Client/Model/AccessControl/CredentialEntity';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { AccessControlCommands } from '../enumerations/access-control-commands';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { AccessControlContentTypes } from '../enumerations/access-control-content-types';\nimport {\n CommandBindings,\n CommandsService,\n COMMANDS_SERVICE,\n CommandDisplay,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '../../shared/services/language/language.service';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class CredentialCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(\n AccessControlCommands.ActivateDeactivateCredential,\n this.createCredentialCommandDescriptor(\n AccessControlCommands.ActivateDeactivateCredential,\n 'STE_ACTION_DEACTIVATECARDHOLDER',\n MeltedIcon.Denied,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.changeCredentialStatusPrivilege]), isFederated: false })\n )\n );\n descriptors.set(\n AccessControlCommands.ReportLostCredential,\n this.createCredentialCommandDescriptor(\n AccessControlCommands.ReportLostCredential,\n 'STE_EVENT_REASON_NAME_LOSTCREDENTIAL',\n MeltedIcon.Badge,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.changeCredentialStatusPrivilege]), isFederated: false })\n )\n );\n descriptors.set(\n AccessControlCommands.ReportStolenCredential,\n this.createCredentialCommandDescriptor(\n AccessControlCommands.ReportStolenCredential,\n 'STE_EVENT_REASON_NAME_STOLENCREDENTIAL',\n MeltedIcon.Badge,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.changeCredentialStatusPrivilege]), isFederated: false })\n )\n );\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, CredentialEntityFields.accessStatusField, EntityFields.isFederatedField]);\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, KnownFeatures.accessControlId]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isActivateDeactivateAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ActivateDeactivateCredential);\n this.configureActivateDeactivateInvalidateDisplayAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n if (await this.isReportLostCredentialAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ReportLostCredential);\n this.configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext, AccessControlCommands.ReportLostCredential).fireAndForget();\n }\n if (await this.isReportStolenCredentialAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ReportStolenCredential);\n this.configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext, AccessControlCommands.ReportStolenCredential).fireAndForget();\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: AccessControlCommands.ActivateDeactivateCredential,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeActivateDeactivate(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isActivateDeactivateAvailableAsync(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getActivateDeactivateDisplayAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AccessControlCommands.ReportLostCredential,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeReportLostCredential(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isReportLostCredentialAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canReportCredentialLostAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AccessControlCommands.ReportStolenCredential,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeReportStolenCredential(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isReportStolenCredentialAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canReportCredentialStolenAsync(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = SafeGuid.createSet([AccessControlContentTypes.Credential]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Credentials]);\n }\n return super.fillCommandRequirements(requirements);\n }\n\n private async canReportCredentialLostAsync(commandContext: EntityCommandContext): Promise {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n return credentialEntity !== null && credentialEntity.accessStatus !== AccessStatus.Lost;\n }\n\n private async canReportCredentialStolenAsync(commandContext: EntityCommandContext): Promise {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n return credentialEntity !== null && credentialEntity.accessStatus !== AccessStatus.Stolen;\n }\n\n private async changeAccessStatusAsync(commandContext: EntityCommandContext, accessStatus: string, credentialEntity?: ICredentialEntity): Promise {\n let entity = credentialEntity || null;\n if (!entity) {\n entity = await this.extractCredentialEntity(commandContext);\n }\n if (entity) {\n entity.accessStatus = accessStatus;\n await this.updateEntityAsync(entity, commandContext.entityCache);\n }\n }\n\n private async configureActivateDeactivateInvalidateDisplayAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateDisplay) {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n if (credentialEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n credentialEntity,\n () => {\n const _ = credentialEntity.accessStatus;\n },\n (() => {\n commandContext.invalidateDisplay(AccessControlCommands.ActivateDeactivateCredential);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private async configureChangeAccessStatusInvalidateCanExecuteAsync(commandContext: EntityCommandsUsageContext, commandId: IGuid): Promise {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n if (credentialEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n credentialEntity,\n () => {\n const _ = credentialEntity.accessStatus;\n },\n (() => {\n commandContext.invalidateCanExecute(commandId);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private createCredentialCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: EntityCommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_ENTITY_CREDENTIAL',\n groupIcon: MeltedIcon.Badge,\n requirements,\n keyBinding,\n };\n }\n\n private executeActivateDeactivate(executeCommandData: ExecuteEntityCommandData): void {\n this.executeActivateDeactivateAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeActivateDeactivateAsync(commandContext: EntityCommandContext): Promise {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n if (credentialEntity) {\n await this.changeAccessStatusAsync(commandContext, this.isActive(credentialEntity) ? AccessStatus.Inactive : AccessStatus.Active, credentialEntity);\n }\n }\n\n private executeReportLostCredential(executeCommandData: ExecuteEntityCommandData): void {\n this.changeAccessStatusAsync(executeCommandData.commandContext, AccessStatus.Lost).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private executeReportStolenCredential(executeCommandData: ExecuteEntityCommandData): void {\n this.changeAccessStatusAsync(executeCommandData.commandContext, AccessStatus.Stolen).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async extractCredentialEntity(commandContext: EntityCommandContext): Promise {\n return this.extractEntityAsync(CredentialEntity, commandContext);\n }\n\n private async getActivateDeactivateDisplayAsync(commandContext: EntityCommandContext): Promise {\n const credentialEntity = await this.extractCredentialEntity(commandContext);\n if (credentialEntity) {\n if (!this.isActive(credentialEntity)) {\n return { name: () => this.translateService?.instant('STE_ACTION_ACTIVATECARDHOLDER') as string, icon: MeltedIcon.Update };\n }\n return { name: () => this.translateService?.instant('STE_ACTION_DEACTIVATECARDHOLDER') as string, icon: MeltedIcon.Denied };\n }\n }\n\n private isActive(credentialEntity: ICredentialEntity): boolean {\n return this.isSameAccessStatus(credentialEntity, AccessStatus.Active);\n }\n\n private async isActivateDeactivateAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ActivateDeactivateCredential, commandContext, commandArgs);\n }\n\n private async isReportLostCredentialAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ReportLostCredential, commandContext, commandArgs);\n }\n\n private async isReportStolenCredentialAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ReportStolenCredential, commandContext, commandArgs);\n }\n\n private isSameAccessStatus(credentialEntity: ICredentialEntity, accessStatus: string): boolean {\n return credentialEntity.accessStatus === accessStatus;\n }\n}\n","// Autogenerated: v2/help/Entities/ApiDoorSideAccessPoint?codegen=ts&InterfaceOnly=True&workflow=False on 2021-04-15 12:15:52 PM\nimport { ObservableCollection } from './../../Helpers/ObservableCollection';\nimport { IRestResponse } from './IRestResponse';\nimport { IEntity } from './IEntity';\nimport { IDoorAccessPointEntity, DoorAccessPointEntityFields } from './IDoorAccessPointEntity';\nimport { IQueryFilter } from './IQueryFilter';\nimport { ITransaction } from './ITransaction';\n\n// #region Fields\n\nexport class DoorSideAccessPointEntityFields extends DoorAccessPointEntityFields {\n}\n\n// #endregion Fields\n\nexport interface IDoorSideAccessPointEntity extends IDoorAccessPointEntity {\n // #region REST Methods\n\n getRulesAsync(query?: IQueryFilter|null, transaction?: ITransaction|null): Promise|null>;\n setDeviceStateAsync(shunt: boolean, transaction?: ITransaction): Promise;\n\n // #endregion REST Methods\n\n}\n\n","export enum AccessControlContentFields {\n Cardholder = 'Cardholder',\n Credentials = 'Credentials',\n}\n","import { Inject, Injectable, Version } from '@angular/core';\nimport { GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { ActivityTrailClient, ForgiveAntipassbackViolation } from '@modules/shared/api/api';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { ICardholderEntity } from 'RestClient/Client/Interface/ICardholderEntity';\nimport { DoorEntityFields, IDoorEntity } from 'RestClient/Client/Interface/IDoorEntity';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CardholderEntity } from 'RestClient/Client/Model/AccessControl/CardholderEntity';\nimport { DoorEntity } from 'RestClient/Client/Model/AccessControl/DoorEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { take } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { DoorSideAccessPointEntity } from 'RestClient/Client/Model/AccessControl/DoorSideAccessPointEntity';\nimport { DoorSideAccessPointEntityFields, IDoorSideAccessPointEntity } from 'RestClient/Client/Interface/IDoorSideAccessPointEntity';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { FullscreenService } from '@modules/shared/services/fullscreen/fullscreen.service';\nimport {\n CommandBindings,\n CommandContext,\n CommandDisplay,\n CommandsService,\n COMMANDS_SERVICE,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { LanguageService } from '../../shared/services/language/language.service';\nimport { OverrideScheduleModalComponent } from '../components/door/override-schedule-modal/override-schedule-modal.component';\nimport { ShuntReaderModalComponent } from '../components/door/shunt-reader-modal/shunt-reader-modal.component';\nimport { AccessControlCommands } from '../enumerations/access-control-commands';\nimport { AccessControlContentFields } from '../enumerations/access-control-content-fields';\nimport { AccessControlContentTypes } from '../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Injectable()\nexport class DoorCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(\n AccessControlCommands.UnlockDoor,\n this.createDoorCommandDescriptor(\n AccessControlCommands.UnlockDoor,\n 'STE_ACTION_UNLOCKDOOR',\n MeltedIcon.Unlock,\n this.fillCommandRequirements({\n requiredPrivileges: SafeGuid.createSet([KnownPrivileges.explicitlyUnlockDoorPrivilege]),\n }),\n 'U'\n )\n );\n descriptors.set(\n AccessControlCommands.OverrideUnlockSchedule,\n this.createDoorCommandDescriptor(\n AccessControlCommands.OverrideUnlockSchedule,\n 'STE_BUTTON_OVERRIDE_UNLOCK_SCHEDULES',\n MeltedIcon.Calendar,\n this.fillCommandRequirements({ requiredPrivileges: SafeGuid.createSet([KnownPrivileges.autoUnlockOverridePrivilege, KnownPrivileges.modifyDoorsPrivilege]) })\n )\n );\n descriptors.set(\n AccessControlCommands.ShuntReader,\n this.createDoorCommandDescriptor(\n AccessControlCommands.ShuntReader,\n 'STE_BUTTON_SHUNT_READER',\n MeltedIcon.Reader,\n this.fillCommandRequirements({\n requiredPrivileges: SafeGuid.createSet([KnownPrivileges.maintenanceModePrivilege, KnownPrivileges.modifyAccessControlUnitsPrivilege]),\n })\n )\n );\n descriptors.set(\n AccessControlCommands.ForgiveAntiPassback,\n this.createDoorCommandDescriptor(AccessControlCommands.ForgiveAntiPassback, 'STE_TOOLTIP_FORGIVE_ANTIPASSBACK', MeltedIcon.Eraser, this.fillCommandRequirements({}))\n );\n this.internalCommandDescriptors = descriptors;\n }\n\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([\n ...super.requiredEntityFields,\n DoorEntityFields.isLockedField,\n DoorEntityFields.maintenanceModeActiveField,\n EntityFields.runningStateField,\n EntityFields.isFederatedField,\n ]);\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, KnownFeatures.accessControlId]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n private modalService: GenModalService,\n private activityTrailClient: ActivityTrailClient,\n protected advancedSettingsService: AdvancedSettingsService,\n private fullscreenService: FullscreenService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isUnlockDoorAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.UnlockDoor);\n this.configureUnlockDoorInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n if (await this.isOverrideUnlockScheduleAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.OverrideUnlockSchedule);\n this.configureOverrideUnlockScheduleInvalidatesAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n if (await this.isShuntReaderAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ShuntReader);\n this.configureShuntReaderInvalidateCanExecuteAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n if (await this.isForgiveAntiPassbackAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ForgiveAntiPassback);\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: AccessControlCommands.UnlockDoor,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeUnlockDoor(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isUnlockDoorAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canUnlockAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AccessControlCommands.OverrideUnlockSchedule,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeOverrideUnlockSchedule(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isOverrideUnlockScheduleAvailableAsync(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getOverrideUnlockScheduleDisplay(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AccessControlCommands.ShuntReader,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeShuntReaderAsync(entityExecuteCommandData).fireAndForget(), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isShuntReaderAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canShuntReaderAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AccessControlCommands.ForgiveAntiPassback,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeForgiveAntiPassback(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isForgiveAntiPassbackAvailableAsync(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = SafeGuid.createSet([AccessControlContentTypes.Door]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Doors]);\n }\n return super.fillCommandRequirements(requirements);\n }\n\n private async cancelOverrideScheduleAsync(commandContext: EntityCommandContext): Promise {\n const doorEntity = await this.extractDoorEntity(commandContext);\n if (doorEntity) {\n const result = await this.modalService.showMessage(\n this.translateService?.instant('STE_MESSAGE_WARNING_CANCELOVERRIDESCHEDULE') as string,\n this.translateService?.instant('STE_MESSAGE_WARNING_CAUSETEMPORARYDISRUPTIONS') as string,\n this.translateService?.instant('STE_BUTTON_CONTINUE') as string,\n this.translateService?.instant('STE_BUTTON_CANCEL') as string\n );\n if (result === 'default') {\n if (doorEntity.maintenanceModeActive) {\n doorEntity.maintenanceModeActive = false;\n } else {\n await doorEntity.deleteAutoUnlockOverrideAsync();\n }\n const response = await this.scClient.updateAsync(doorEntity);\n if (response.statusCode === HttpStatusCode.OK) {\n this.setCommandCanExecute(AccessControlCommands.OverrideUnlockSchedule, commandContext, false);\n }\n }\n }\n }\n\n private async canShuntReaderAsync(commandContext: EntityCommandContext): Promise {\n const doorentity = await this.extractDoorEntity(commandContext);\n if (doorentity) {\n return doorentity.runningState !== RunningState.NotRunning;\n }\n return false;\n }\n\n private async canUnlockAsync(commandContext: EntityCommandContext): Promise {\n const doorentity = await this.extractDoorEntity(commandContext);\n if (doorentity) {\n return doorentity.isLocked && doorentity.runningState !== RunningState.NotRunning;\n }\n return false;\n }\n\n private async configureOverrideUnlockScheduleInvalidatesAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache) {\n const doorEntity = await this.extractDoorEntity(commandContext);\n if (doorEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n doorEntity,\n () => {\n const _ = doorEntity.maintenanceModeActive;\n },\n (async (entity1: IDoorEntity, _: boolean, __: boolean) => {\n const commandDisplay = await this.getOverrideUnlockScheduleDisplay(undefined, entity1);\n if (commandDisplay) {\n this.setCommandDisplay(AccessControlCommands.OverrideUnlockSchedule, commandContext, commandDisplay);\n }\n this.setCommandCanExecute(AccessControlCommands.OverrideUnlockSchedule, commandContext, true);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n await commandContext.entityCache.detectRelationChangeAsync(\n doorEntity,\n async () => {\n const _ = await doorEntity.getAutoUnlockOverrideAsync();\n },\n async (newEntity: IDoorEntity, _): Promise => {\n const commandDisplay = await this.getOverrideUnlockScheduleDisplay(undefined, newEntity);\n if (commandDisplay) {\n this.setCommandDisplay(AccessControlCommands.OverrideUnlockSchedule, commandContext, commandDisplay);\n }\n this.setCommandCanExecute(AccessControlCommands.OverrideUnlockSchedule, commandContext, true);\n return new Deferred(true).promise;\n }\n );\n }\n }\n }\n\n private async configureShuntReaderInvalidateCanExecuteAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const doorEntity = await this.extractDoorEntity(commandContext);\n if (doorEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n doorEntity,\n () => {\n const _ = doorEntity.runningState !== RunningState.NotRunning;\n },\n (() => {\n commandContext.invalidateCanExecute(AccessControlCommands.ShuntReader);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private async configureUnlockDoorInvalidateCanExecuteAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const doorEntity = await this.extractDoorEntity(commandContext);\n if (doorEntity) {\n commandContext.entityCache\n .detectFieldChangeAsync(\n doorEntity,\n () => {\n const _ = doorEntity.isLocked;\n },\n (() => {\n commandContext.invalidateCanExecute(AccessControlCommands.UnlockDoor);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n )\n .fireAndForget();\n }\n }\n }\n\n private createDoorCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: EntityCommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_ENTITY_DOOR',\n groupIcon: MeltedIcon.DoorClosed,\n requirements,\n keyBinding,\n };\n }\n\n private executeForgiveAntiPassback(executeCommandData: ExecuteEntityCommandData): void {\n this.forgiveAntiPassbackAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private executeOverrideUnlockSchedule(executeCommandData: ExecuteEntityCommandData): void {\n this.executeOverrideUnlockScheduleAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeOverrideUnlockScheduleAsync(commandContext: EntityCommandContext): Promise {\n const doorEntity = await this.extractDoorEntity(commandContext);\n if (doorEntity) {\n if (await this.isDoorUnlockOverrideActiveAsync(doorEntity)) {\n await this.cancelOverrideScheduleAsync(commandContext);\n } else if (this.isDoorInMaintenanceMode(doorEntity)) {\n doorEntity.maintenanceModeActive = false;\n const response = await this.scClient.updateAsync(doorEntity);\n if (response.statusCode === HttpStatusCode.OK) {\n this.setCommandCanExecute(AccessControlCommands.OverrideUnlockSchedule, commandContext, false);\n }\n } else {\n await this.overrideUnlockScheduleAsync(commandContext);\n }\n }\n }\n\n private async executeShuntReaderAsync(executeCommandData: ExecuteEntityCommandData): Promise {\n const args = this.extractArgs(executeCommandData.commandContext);\n if (args.entityId) {\n this.fullscreenService.displayModal(ShuntReaderModalComponent, {\n entityId: args.entityId,\n doorSideAccessPointEntityWithReaders: await this.getShuntReadersAsync(executeCommandData.commandContext),\n });\n }\n executeCommandData.isHandled = true;\n }\n\n private executeUnlockDoor(executeCommandData: ExecuteEntityCommandData): void {\n this.unlockDoorAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async extractCardholderEntity(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const content = commandArgs?.content ?? this.extractArgs(commandContext)?.content;\n if (content?.type.equals(AccessControlContentTypes.Door)) {\n const eventContent = content.contextContent;\n if (eventContent?.type.equals(AccessControlContentTypes.Event) && eventContent.parameters && eventContent.parameters.hasField(AccessControlContentFields.Cardholder)) {\n const cardholderId = eventContent.parameters.getFieldGuid(AccessControlContentFields.Cardholder);\n const cardholder = await this.getEntityAsync(\n CardholderEntity,\n new Set(),\n undefined,\n cardholderId,\n commandContext.entityCache\n );\n if (cardholder) {\n return cardholder;\n }\n }\n }\n }\n\n private async extractDoorEntity(commandContext: EntityCommandContext): Promise {\n return this.extractEntityAsync(DoorEntity, commandContext);\n }\n\n private async forgiveAntiPassbackAsync(commandContext: EntityCommandContext): Promise {\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n const response = await cardholderEntity.forgiveAntipassbackAsync();\n\n if (response?.statusCode === 200) {\n const forgiveEntry = new ForgiveAntipassbackViolation();\n forgiveEntry.cardholderToForgive = cardholderEntity.id;\n await this.activityTrailClient.forgiveAntipassbackViolation(forgiveEntry).toPromise();\n }\n }\n }\n\n private async getOverrideUnlockScheduleDisplay(commandContext?: EntityCommandContext, doorEntity?: IDoorEntity): Promise {\n let entity = doorEntity || null;\n if (!entity && commandContext) {\n entity = await this.extractDoorEntity(commandContext);\n }\n\n if (!entity) {\n return undefined;\n }\n\n if ((await this.isDoorUnlockOverrideActiveAsync(entity)) || this.isDoorInMaintenanceMode(entity)) {\n return { name: () => this.translateService?.instant('STE_ACTION_REMOVEUNLOCKSCHEDULEOVERRIDE') as string, icon: MeltedIcon.Denied };\n } else {\n return { name: () => this.translateService?.instant('STE_BUTTON_OVERRIDE_UNLOCK_SCHEDULES') as string, icon: MeltedIcon.Calendar };\n }\n }\n\n private isDoorInMaintenanceMode(doorEntity: IDoorEntity): boolean {\n return doorEntity?.maintenanceModeActive ?? false;\n }\n\n private async isDoorUnlockOverrideActiveAsync(doorEntity: IDoorEntity): Promise {\n if (doorEntity) {\n const autoUnlockOverride = await doorEntity.getAutoUnlockOverrideAsync();\n if (autoUnlockOverride?.hasField('isUnlocking')) {\n return true;\n }\n }\n return false;\n }\n\n private async isForgiveAntiPassbackAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const areCommandRequirementsMet = await this.areCommandRequirementsMetAsync(AccessControlCommands.ForgiveAntiPassback, commandContext, commandArgs);\n if (!areCommandRequirementsMet) {\n return false;\n }\n\n const door = await this.extractDoorEntity(commandContext);\n if (door === null || door.isFederated) {\n return false;\n }\n\n const cardholderEntity = await this.extractCardholderEntity(commandContext);\n if (cardholderEntity) {\n return await this.arePrivilegesGrantedAsync(SafeGuid.createSet([KnownPrivileges.forgiveAntipassbackViolationPrivilege]), undefined, cardholderEntity);\n }\n return false;\n }\n\n private async isOverrideUnlockScheduleAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const areCommandRequirementsMet = await this.areCommandRequirementsMetAsync(AccessControlCommands.OverrideUnlockSchedule, commandContext, commandArgs);\n if (!areCommandRequirementsMet) {\n return false;\n }\n\n const door = await this.extractDoorEntity(commandContext);\n if (door === null || this.scClient.securityCenterVersion === null) {\n return false;\n }\n\n // Override unlock schedule and maintenance mode for federated door not supported before 5.11.1\n const scVersion = new Version(this.scClient.securityCenterVersion.securityCenterVersion);\n if (door.isFederated && scVersion.full < OverrideScheduleModalComponent.MinimumSecurityCenterVersionForFederatedDoors.full) {\n return false;\n }\n\n return true;\n }\n\n private async isShuntReaderAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const areCommaandRequirementsMet = await this.areCommandRequirementsMetAsync(AccessControlCommands.ShuntReader, commandContext, commandArgs);\n if (!areCommaandRequirementsMet) {\n return false;\n }\n return this.isShuntReaderDefinedAsync(commandContext);\n }\n\n private async isUnlockDoorAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.UnlockDoor, commandContext, commandArgs);\n }\n\n private async overrideUnlockScheduleAsync(commandContext: CommandContext): Promise {\n const args = this.extractArgs(commandContext);\n\n let grantedPrivileges: Set | undefined;\n const content = args.content;\n if (content) {\n grantedPrivileges = SafeGuid.createSet(content.grantedPrivileges);\n }\n const canUnlockForMaintenance = await this.arePrivilegesGrantedAsync(\n SafeGuid.createSet([KnownPrivileges.acknowledgeAlarmsPrivilege]),\n grantedPrivileges,\n args.entity,\n args.entityId\n );\n\n const overrideScheduleModal = this.fullscreenService.displayModal(OverrideScheduleModalComponent, { entityId: args.entityId, canUnlockForMaintenance });\n\n overrideScheduleModal.result$.pipe(take(1), untilDestroyed(this)).subscribe((result) => {\n if (result) {\n this.setCommandCanExecute(AccessControlCommands.OverrideUnlockSchedule, commandContext, false);\n }\n });\n }\n\n private async unlockDoorAsync(commandContext: EntityCommandContext): Promise {\n const door = await this.extractDoorEntity(commandContext);\n if (door) {\n await door.unlockAsync();\n }\n }\n\n private async getShuntReadersAsync(commandContext: EntityCommandContext): Promise {\n const door = await this.extractDoorEntity(commandContext);\n const doorSideAccessPointEntityWithReaders: IDoorSideAccessPointEntity[] = [];\n\n if (door) {\n const doorSideAccessPointEntities = await door.getDoorSidesAsync();\n\n doorSideAccessPointEntities?.forEach((entity) => {\n if (entity && !entity.getFieldGuid(DoorSideAccessPointEntityFields.deviceField).isEmpty()) {\n doorSideAccessPointEntityWithReaders.push(FieldObject.buildFrom(DoorSideAccessPointEntity, entity));\n }\n });\n }\n return doorSideAccessPointEntityWithReaders;\n }\n\n private async isShuntReaderDefinedAsync(commandContext: EntityCommandContext): Promise {\n const shuntReader = await this.getShuntReadersAsync(commandContext);\n\n return shuntReader.length > 0;\n }\n\n //#endregion\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep } from 'lodash-es';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AccessPointEntityFields, IAccessPointEntity } from 'RestClient/Client/Interface/IAccessPointEntity';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { AccessPointEntity } from 'RestClient/Client/Model/AccessControl/AccessPointEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { DeviceStates } from '../../shared/enumerations/device-states';\nimport {\n CommandBindings,\n CommandDisplay,\n CommandsService,\n COMMANDS_SERVICE,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { LanguageService } from '../../shared/services/language/language.service';\nimport { AccessControlCommands } from '../enumerations/access-control-commands';\nimport { AccessControlContentTypes } from '../enumerations/access-control-content-types';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class ReaderCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(AccessControlCommands.ShuntReaderDevice, {\n id: AccessControlCommands.ShuntReaderDevice,\n nameResourceId: 'STE_BUTTON_SHUNT_READER',\n requirements: this.fillCommandRequirements({\n requiredPrivileges: SafeGuid.createSet([KnownPrivileges.modifyAccessControlUnitsPrivilege, KnownPrivileges.maintenanceModePrivilege]),\n }),\n });\n this.internalCommandDescriptors = descriptors;\n }\n\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, AccessPointEntityFields.deviceStateField]);\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, KnownFeatures.accessControlId]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isShuntCommandAvailable(commandContext, commandArgs)) {\n commandIds.push(AccessControlCommands.ShuntReaderDevice);\n this.configureShuntReaderInvalidateDisplayAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: AccessControlCommands.ShuntReaderDevice,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeShuntReader(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isShuntCommandAvailable(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getShuntDisplay(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = SafeGuid.createSet([AccessControlContentTypes.Reader]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.AccessPoints]);\n }\n return super.fillCommandRequirements(requirements);\n }\n\n private async configureShuntReaderInvalidateDisplayAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateDisplay) {\n const accessPointEntity = await this.extractAccessPointEntity(commandContext);\n if (accessPointEntity) {\n await commandContext.entityCache.detectFieldChangeAsync(\n accessPointEntity,\n () => {\n const _ = accessPointEntity.deviceState;\n },\n (() => {\n commandContext.invalidateDisplay(AccessControlCommands.ShuntReaderDevice);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n }\n\n private async executeShuntReader(executeCommandData: ExecuteEntityCommandData): Promise {\n const accessPoint = await this.extractAccessPointEntity(executeCommandData.commandContext);\n if (accessPoint) {\n const currentShuntState = accessPoint.deviceState === DeviceStates.Disabled;\n const entity = cloneDeep(accessPoint);\n entity.deviceState = currentShuntState ? DeviceStates.Enabled : DeviceStates.Disabled;\n await this.scClient.updateAsync(entity);\n }\n executeCommandData.isHandled = true;\n }\n\n private async extractAccessPointEntity(commandContext: EntityCommandContext): Promise {\n return await this.extractEntityAsync(AccessPointEntity, commandContext);\n }\n\n private async getShuntDisplay(commandContext: EntityCommandContext): Promise {\n const accessPointEntity = await this.extractAccessPointEntity(commandContext);\n if (accessPointEntity) {\n if (accessPointEntity.deviceState === DeviceStates.Disabled) {\n return {\n name: () => this.translateService.instant('STE_ACTION_ACTIVATEREADER') as string,\n icon: MeltedIcon.None,\n };\n } else if (accessPointEntity.deviceState === DeviceStates.Enabled) {\n return {\n name: () => this.translateService.instant('STE_ACTION_SHUNTREADER') as string,\n icon: MeltedIcon.None,\n };\n }\n }\n }\n\n private async isShuntCommandAvailable(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AccessControlCommands.ShuntReaderDevice, commandContext, commandArgs);\n }\n\n //#endregion\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, NgModule } from '@angular/core';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { GeneralModule } from '@modules/general/general.module';\nimport { NgxsModule } from '@ngxs/store';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FeatureFlagsModule } from '@modules/feature-flags/feature-flags.module';\nimport { ModuleDescriptor } from '@modules/shared/interfaces/modules/public/module-public.interface';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { GetBaseUriForCodeGen } from '@src/app/utilities/base-uri-getter';\nimport { SharedCommands } from '../shared/enumerations/shared-commands';\nimport { CommandsService, COMMANDS_SERVICE } from '../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SharedModule } from '../shared/shared.module';\nimport { baseUrl, CardholderManagementClient, CredentialsClient } from './api/api';\nimport { CardholderEditContextState } from './cardholder-edit-context.state';\nimport { AccessControlTaskComponent } from './components/access-control-task/access-control-task.component';\nimport { CardholderActionWidgetComponent } from './components/cardholder/cardholder-action-widget/cardholder-action-widget.component';\nimport { CardholderCardComponent } from './components/cardholder/cardholder-card/cardholder-card.component';\nimport { CardholderDetailsPaneComponent } from './components/cardholder/cardholder-details-pane/cardholder-details-pane.component';\nimport { CardholderInfoWidgetComponent } from './components/cardholder/cardholder-info-widget/cardholder-info-widget.component';\nimport { CardholderPictureWidgetComponent } from './components/cardholder/cardholder-picture-widget/cardholder-picture-widget.component';\nimport { CardholderPreviewWidgetComponent } from './components/cardholder/cardholder-preview-widget/cardholder-preview-widget.component';\nimport { CardholderStateWidgetBaseComponent } from './components/cardholder/cardholder-state-widget-base.component';\nimport { CardholderSubTaskComponent } from './components/cardholder/cardholder-sub-task/cardholder-sub-task.component';\nimport { CardholderWidgetBaseComponent } from './components/cardholder/cardholder-widget-base.component';\nimport { CredentialActionWidgetComponent } from './components/credential/credential-action-widget/credential-action-widget.component';\nimport { CredentialInfoWidgetComponent } from './components/credential/credential-info-widget/credential-info-widget.component';\nimport { CredentialPreviewWidgetComponent } from './components/credential/credential-preview-widget/credential-preview-widget.component';\nimport { CredentialWidgetBaseComponent } from './components/credential/credential-widget-base.component';\nimport { DoorCompactInfoComponent } from './components/door-compact-info/door-compact-info.component';\nimport { DoorActionsWidgetComponent } from './components/door/door-actions-widget/door-actions-widget.component';\nimport { DoorEventsWidgetComponent } from './components/door/door-events-widget/door-events-widget.component';\nimport { DoorPreviewWidgetComponent } from './components/door/door-preview-widget/door-preview-widget.component';\nimport { DoorWidgetBaseComponent } from './components/door/door-widget-base.component';\nimport { OverrideScheduleModalComponent } from './components/door/override-schedule-modal/override-schedule-modal.component';\nimport { ShuntReaderModalComponent } from './components/door/shunt-reader-modal/shunt-reader-modal.component';\nimport { DoorEventWidgetComponent } from './components/maps/door-event-widget/door-event-widget.component';\nimport { ReaderActionsWidgetComponent } from './components/reader/reader-actions-widget/reader-actions-widget.component';\nimport { DoorEntityStateComponent } from './components/tile/door-entity-state/door-entity-state.component';\nimport { DoorStateComponent } from './components/tile/door-state/door-state.component';\nimport { AccessControlFeatureFlags } from './feature-flags';\nimport { CardholderCommandProvider } from './services/cardholder-command-provider';\nimport { CredentialCommandProvider } from './services/credential-command-provider';\nimport { DoorCommandProvider } from './services/door-command-provider';\nimport { ReaderCommandProvider } from './services/reader-command-provider';\nimport { CardholderEditService } from './services/cardholder-edit-service';\nimport { CardholderIdentityFormComponent } from './components/cardholder/cardholder-edit-form/cardholder-identity-form/cardholder-identity-form.component';\nimport { CardholderStatusFormComponent } from './components/cardholder/cardholder-edit-form/cardholder-status-form/cardholder-status-form.component';\nimport { CardholderAccessRightsFormComponent } from './components/cardholder/cardholder-edit-form/cardholder-access-rights-form/cardholder-access-rights-form.component';\nimport { CardholderAdvancedFormComponent } from './components/cardholder/cardholder-edit-form/cardholder-advanced-form/cardholder-advanced-form.component';\nimport { CardholderRelationsSubFormComponent } from './components/cardholder/cardholder-edit-form/cardholder-access-rights-sub-form/cardholder-relations-sub-form.component';\nimport { CardholderDeleteModalComponent } from './components/cardholder/cardholder-delete-modal/cardholder-delete-modal.component';\nimport { CardholderCancelModalComponent } from './components/cardholder/unsaved-changes-modal/unsaved-changes-modal.component';\nimport { CardholderCardViewComponent } from './components/cardholder/cardholder-card-view/cardholder-card-view.component';\nimport { CardholderEditablePictureComponent } from './components/cardholder/cardholder-edit-form/cardholder-editable-picture/cardholder-editable-picture.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SharedModule,\n GenAngularModule,\n GeneralModule,\n NgxsModule.forFeature([CardholderEditContextState]),\n FeatureFlagsModule.forRoot(AccessControlFeatureFlags),\n InfiniteScrollModule,\n ],\n declarations: [\n DoorActionsWidgetComponent,\n DoorEventsWidgetComponent,\n CardholderWidgetBaseComponent,\n CardholderStateWidgetBaseComponent,\n CardholderActionWidgetComponent,\n CardholderPreviewWidgetComponent,\n CardholderPictureWidgetComponent,\n CardholderInfoWidgetComponent,\n CredentialActionWidgetComponent,\n CredentialWidgetBaseComponent,\n CredentialPreviewWidgetComponent,\n DoorEventWidgetComponent,\n CredentialInfoWidgetComponent,\n OverrideScheduleModalComponent,\n ShuntReaderModalComponent,\n DoorCompactInfoComponent,\n DoorEntityStateComponent,\n DoorStateComponent,\n DoorPreviewWidgetComponent,\n DoorWidgetBaseComponent,\n ReaderActionsWidgetComponent,\n AccessControlTaskComponent,\n CardholderSubTaskComponent,\n CardholderCardComponent,\n CardholderDetailsPaneComponent,\n CardholderIdentityFormComponent,\n CardholderStatusFormComponent,\n CardholderAccessRightsFormComponent,\n CardholderAdvancedFormComponent,\n CardholderRelationsSubFormComponent,\n CardholderDeleteModalComponent,\n CardholderCancelModalComponent,\n CardholderCardViewComponent,\n CardholderEditablePictureComponent,\n ],\n providers: [\n DoorCommandProvider,\n CardholderCommandProvider,\n CredentialCommandProvider,\n ReaderCommandProvider,\n CardholderManagementClient,\n CredentialsClient,\n CardholderEditService,\n { provide: baseUrl, deps: [], useFactory: GetBaseUriForCodeGen },\n ],\n})\n@ModuleDescriptor({\n type: AccessControlModule,\n inclusions: {\n globalPrivileges: [\n KnownPrivileges.addCardholdersPrivilege,\n KnownPrivileges.modifyCardholderNamePrivilege,\n KnownPrivileges.changeCardholderStatusPrivilege,\n KnownPrivileges.modifyCardholdersPrivilege,\n KnownPrivileges.modifyCardholderGroupsPrivilege,\n KnownPrivileges.modifyCredentialAssociationToCardholderPrivilege,\n KnownPrivileges.addCredentialsPrivilege,\n KnownPrivileges.modifyCardholdersPrivilege,\n KnownPrivileges.modifyAccessRulesPrivilege,\n KnownPrivileges.changeCardholderOptionsPrivilege,\n KnownPrivileges.deleteCardholdersPrivilege,\n KnownPrivileges.generalSettingsLogicalIdPrivilege,\n KnownPrivileges.setCardholderSecurityClearancePrivilege,\n KnownPrivileges.modifyCardholderPicturePrivilege,\n ],\n },\n})\nexport class AccessControlModule {\n constructor(\n doorCommandProvider: DoorCommandProvider, // DO NOT DELETE\n cardholderCommandProvider: CardholderCommandProvider, // DO NOT DELETE\n credentialCommandProvider: CredentialCommandProvider, // DO NOT DELETE\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n readerCommandProvider: ReaderCommandProvider // DO NOT DELETE\n ) {\n commandsService.appendRequirements(SharedCommands.ShareEntity, {\n supportedEntityTypes: new Set([\n EntityTypes.Doors,\n EntityTypes.Elevators,\n EntityTypes.Credentials,\n EntityTypes.Cardholders,\n EntityTypes.CardholderGroups,\n EntityTypes.AccessPoints,\n ]),\n });\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const AlarmContentTypes = Constants({\n AlarmList: SafeGuid.parse('35E506A8-B5CA-40DB-BE3A-BD64DCB7324B'),\n Instance: SafeGuid.parse('C96A7865-4569-4AFB-8081-05DF70BC2B37'),\n Alarm: SafeGuid.parse('5231F6F5-B2E4-4D18-B05C-7BB785277EAB'),\n});\n","// Autogenerated: v2/help/enumerations/ApiAlarmStates?codegen=ts&showresources=False on 2020-07-23 3:40:04 PM\n\nexport class AlarmStates {\n public static None = 'None';\n public static Active = 'Active';\n public static Acked = 'Acked';\n public static SourceConditionInvestigating = 'SourceConditionInvestigating';\n public static AcknowledgeRequired = 'AcknowledgeRequired';\n\n public static readonly values = [\n AlarmStates.None,\n AlarmStates.Active,\n AlarmStates.Acked,\n AlarmStates.SourceConditionInvestigating,\n AlarmStates.AcknowledgeRequired\n ];\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class RefreshAlarmsEvent extends EventBase {}\n","// Autogenerated: CodeGen/AlarmInstance?language=ts&InterfaceOnly=True on 2021-08-30 12:04:35 PM\n// Autogenerated: CodeGen/AlarmInstance?language=ts&InterfaceOnly=False on 2021-08-30 12:04:35 PM\n\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport interface IAlarmInstance extends IFieldObject {\n instanceID: number;\n alarmId: IGuid;\n alarmName: string;\n triggerTime: Date;\n triggerEntity: IGuid;\n triggerEvent: string;\n customEventId: number;\n creationTime: Date;\n ackTime: Date;\n ackBy: IGuid;\n ackReason: string;\n externalInstanceID: number;\n offlinePeriod: number;\n triggerEventSubType: number;\n state: string;\n investigatedBy: IGuid;\n investigatedTime: Date;\n hasSourceCondition: boolean;\n dynamicContent: string;\n priority: number;\n latitude: number;\n longitude: number;\n propagationLevel: number;\n}\n\nexport class AlarmInstance extends FieldObject implements IAlarmInstance {\n // InstanceID\n public get instanceID(): number {\n return this.getField('InstanceID');\n }\n public set instanceID(value: number) {\n this.setField('InstanceID', value);\n }\n // AlarmId\n public get alarmId(): IGuid {\n return this.getFieldGuid('AlarmId');\n }\n public set alarmId(value: IGuid) {\n this.setFieldGuid('AlarmId', value);\n }\n // AlarmName\n public get alarmName(): string {\n return this.getField('AlarmName');\n }\n public set alarmName(value: string) {\n this.setField('AlarmName', value);\n }\n // TriggerTime\n public get triggerTime(): Date {\n return this.getFieldDate('TriggerTime');\n }\n public set triggerTime(value: Date) {\n this.setFieldDate('TriggerTime', value);\n }\n // TriggerEntity\n public get triggerEntity(): IGuid {\n return this.getFieldGuid('TriggerEntity');\n }\n public set triggerEntity(value: IGuid) {\n this.setFieldGuid('TriggerEntity', value);\n }\n // TriggerEvent\n public get triggerEvent(): string {\n return this.getField('TriggerEvent');\n }\n public set triggerEvent(value: string) {\n this.setField('TriggerEvent', value);\n }\n // CustomEventId\n public get customEventId(): number {\n return this.getField('CustomEventId');\n }\n public set customEventId(value: number) {\n this.setField('CustomEventId', value);\n }\n // CreationTime\n public get creationTime(): Date {\n return this.getFieldDate('CreationTime');\n }\n public set creationTime(value: Date) {\n this.setFieldDate('CreationTime', value);\n }\n // AckTime\n public get ackTime(): Date {\n return this.getFieldDate('AckTime');\n }\n public set ackTime(value: Date) {\n this.setFieldDate('AckTime', value);\n }\n // AckBy\n public get ackBy(): IGuid {\n return this.getFieldGuid('AckBy');\n }\n public set ackBy(value: IGuid) {\n this.setFieldGuid('AckBy', value);\n }\n // AckReason\n public get ackReason(): string {\n return this.getField('AckReason');\n }\n public set ackReason(value: string) {\n this.setField('AckReason', value);\n }\n // ExternalInstanceID\n public get externalInstanceID(): number {\n return this.getField('ExternalInstanceID');\n }\n public set externalInstanceID(value: number) {\n this.setField('ExternalInstanceID', value);\n }\n // OfflinePeriod\n public get offlinePeriod(): number {\n return this.getField('OfflinePeriod');\n }\n public set offlinePeriod(value: number) {\n this.setField('OfflinePeriod', value);\n }\n // TriggerEventSubType\n public get triggerEventSubType(): number {\n return this.getField('TriggerEventSubType');\n }\n public set triggerEventSubType(value: number) {\n this.setField('TriggerEventSubType', value);\n }\n // State\n public get state(): string {\n return this.getField('State');\n }\n public set state(value: string) {\n this.setField('State', value);\n }\n // InvestigatedBy\n public get investigatedBy(): IGuid {\n return this.getFieldGuid('InvestigatedBy');\n }\n public set investigatedBy(value: IGuid) {\n this.setFieldGuid('InvestigatedBy', value);\n }\n // InvestigatedTime\n public get investigatedTime(): Date {\n return this.getFieldDate('InvestigatedTime');\n }\n public set investigatedTime(value: Date) {\n this.setFieldDate('InvestigatedTime', value);\n }\n // HasSourceCondition\n public get hasSourceCondition(): boolean {\n return this.getField('HasSourceCondition');\n }\n public set hasSourceCondition(value: boolean) {\n this.setField('HasSourceCondition', value);\n }\n // DynamicContent\n public get dynamicContent(): string {\n return this.getField('DynamicContent');\n }\n public set dynamicContent(value: string) {\n this.setField('DynamicContent', value);\n }\n // Priority\n public get priority(): number {\n return this.getField('Priority');\n }\n public set priority(value: number) {\n this.setField('Priority', value);\n }\n // Latitude\n public get latitude(): number {\n return this.getField('Latitude');\n }\n public set latitude(value: number) {\n this.setField('Latitude', value);\n }\n // Longitude\n public get longitude(): number {\n return this.getField('Longitude');\n }\n public set longitude(value: number) {\n this.setField('Longitude', value);\n }\n // PropagationLevel\n public get propagationLevel(): number {\n return this.getField('PropagationLevel');\n }\n public set propagationLevel(value: number) {\n this.setField('PropagationLevel', value);\n }\n\n public initializeAllFields(): void {\n this.setField('InstanceID', 0);\n this.setFieldGuid('AlarmId', SafeGuid.EMPTY);\n this.setField('AlarmName', '');\n this.setFieldDate('TriggerTime', new Date());\n this.setFieldGuid('TriggerEntity', SafeGuid.EMPTY);\n this.setField('TriggerEvent', '');\n this.setField('CustomEventId', 0);\n this.setFieldDate('CreationTime', new Date());\n this.setFieldDate('AckTime', new Date());\n this.setFieldGuid('AckBy', SafeGuid.EMPTY);\n this.setField('AckReason', '');\n this.setField('ExternalInstanceID', 0);\n this.setField('OfflinePeriod', 0);\n this.setField('TriggerEventSubType', 0);\n this.setField('State', '');\n this.setFieldGuid('InvestigatedBy', SafeGuid.EMPTY);\n this.setFieldDate('InvestigatedTime', new Date());\n this.setField('HasSourceCondition', false);\n this.setField('DynamicContent', '');\n this.setField('Priority', 0);\n this.setField('Latitude', 0);\n this.setField('Longitude', 0);\n this.setField('PropagationLevel', 0);\n }\n}\n","// Autogenerated: CodeGen/AlarmsController?language=ts&InterfaceOnly=False on 2021-04-21 3:54:19 PM\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { IAlarmAcknowledgeAction, IAlarmCountResult, IAlarmResult, IAlarmsController } from './alarms.controller.interfaces';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { IFieldObject } from 'RestClient/Client/Interface/IFieldObject';\nimport { AlarmInstance, IAlarmInstance } from './alarm-instance';\n\nexport class AlarmAcknowledgeAction extends FieldObject implements IAlarmAcknowledgeAction {\n // InstanceId\n public get instanceId(): number {\n return this.getField('InstanceId');\n }\n public set instanceId(value: number) {\n this.setField('InstanceId', value);\n }\n // AlarmId\n public get alarmId(): IGuid {\n return this.getFieldGuid('AlarmId');\n }\n public set alarmId(value: IGuid) {\n this.setFieldGuid('AlarmId', value);\n }\n // alternate\n public get alternate(): boolean {\n return this.getField('alternate');\n }\n public set alternate(value: boolean) {\n this.setField('alternate', value);\n }\n // force\n public get force(): boolean {\n return this.getField('force');\n }\n public set force(value: boolean) {\n this.setField('force', value);\n }\n\n public initializeAllFields(): void {\n this.setField('InstanceId', 0);\n this.setFieldGuid('AlarmId', SafeGuid.EMPTY);\n this.setField('alternate', false);\n this.setField('force', false);\n }\n}\n\nexport class AlarmCountResult extends FieldObject implements IAlarmCountResult {\n // Count\n public get count(): number {\n return this.getField('Count');\n }\n public set count(value: number) {\n this.setField('Count', value);\n }\n\n public initializeAllFields(): void {\n this.setField('Count', 0);\n }\n}\n\nexport class AlarmResult extends FieldObject implements IAlarmResult {\n // AlarmInstances\n public get alarmInstances(): ObservableCollection {\n return this.getFieldObjectArray(AlarmInstance, 'AlarmInstances');\n }\n public set alarmInstances(value: ObservableCollection) {\n this.setFieldObjectArray('AlarmInstances', value);\n }\n // EntityLookup\n public get entityLookup(): Map {\n return this.getFieldObjectDictionary(FieldObject, 'EntityLookup', undefined, 'string');\n }\n public set entityLookup(value: Map) {\n this.setFieldObjectDictionary('EntityLookup', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldArray('AlarmInstances', new ObservableCollection());\n this.setFieldDictionary('EntityLookup', new Map());\n }\n}\n\nexport class AlarmsController extends RestObject implements IAlarmsController {\n constructor() {\n super('api/Alarms');\n this._canGet = false;\n }\n\n // #region Rest Methods\n\n public async acknowledgeAsync(value: IAlarmAcknowledgeAction, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('Acknowledge', 'POST', value, transaction, responseHandler);\n }\n\n public async getActiveInstancesCountAsync(transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(AlarmCountResult, 'ActiveInstancesCount', false, null, transaction);\n }\n\n public async forceAcknowledgeAllAsync(transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n return this.executeRequestTransactionAsync('ForceAcknowledgeAll', 'POST', null, transaction, responseHandler);\n }\n\n public async forwardAsync(instanceId: number, users: ObservableCollection, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('instanceId', instanceId);\n inParam.setFieldArrayGuid('users', users);\n\n return this.executeRequestTransactionAsync('Forward', 'POST', inParam, transaction, responseHandler);\n }\n\n public async getInstancesAsync(maxCount: number, transaction?: ITransaction | null): Promise {\n return await this.getDataRelationAsync(AlarmResult, 'Instances/' + maxCount, false, null, transaction);\n }\n\n public async investigateAsync(instanceId: number, alarmId: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setField('instanceId', instanceId);\n inParam.setFieldGuid('alarmId', alarmId);\n\n return this.executeRequestTransactionAsync('Investigate', 'POST', inParam, transaction, responseHandler);\n }\n\n public async triggerAsync(alarmId: IGuid, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n const inParam = new FieldObject();\n inParam.setFieldGuid('alarmId', alarmId);\n\n return this.executeRequestTransactionAsync('Trigger', 'POST', inParam, transaction, responseHandler);\n }\n\n // #endregion Rest Methods\n\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { IGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { Subject, BehaviorSubject, Observable } from 'rxjs';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AlarmStates } from 'RestClient/Client/Enumerations/AlarmStates';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { tap } from 'rxjs/operators';\nimport { RefreshAlarmsEvent } from '../controllers/events/RefreshAlarmsEvent';\nimport { IAlarmAcknowledgeAction, IAlarmCountResult, IAlarmResult, IAlarmsController } from '../controllers/alarms.controller.interfaces';\nimport { AlarmsController } from '../controllers/alarms.controller';\nimport { AdvancedSettingsService } from '../../shared/services/advanced-settings/advanced-settings.service';\n\n@UntilDestroy()\n@Injectable()\nexport class AlarmsService implements OnDestroy {\n public alarmEventReceived$: Observable;\n public activeAlarmCountUpdated$: Observable;\n\n private alarmEventReceivedSubject$ = new Subject();\n private activeAlarmCountUpdatedSubject$ = new BehaviorSubject(0);\n\n private readonly defaultMaxAlarmsCount = 50;\n private readonly strictMaxAlarmsCount = 500;\n\n private initialActiveAlarmsCountFetched = false;\n\n private scClient: WebAppClient;\n private subscriptions = new SubscriptionCollection();\n\n constructor(\n securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService,\n private advancedSettingsService: AdvancedSettingsService,\n private authService: AuthService,\n private logger: LoggerService\n ) {\n this.scClient = securityCenterClientService?.scClient;\n\n this.alarmEventReceived$ = this.alarmEventReceivedSubject$.asObservable();\n this.activeAlarmCountUpdated$ = this.activeAlarmCountUpdatedSubject$.asObservable();\n\n if (this.scClient) {\n this.scClient.registerAdditionalEventTypes('RefreshAlarmsEvent', RefreshAlarmsEvent);\n this.subscriptions.add(this.scClient.onEventReceived((arg) => this.onAlarmTrayEventReceived(arg)));\n if (this.scClient.isLoggedOn) {\n this.refreshActiveAlarmsCountAsync().fireAndForget();\n }\n }\n\n this.subscribeAuthService();\n }\n\n public async acknowledgeAsync(alarmAction: IAlarmAcknowledgeAction): Promise {\n const controller = await this.getController();\n return await controller?.acknowledgeAsync(alarmAction);\n }\n\n public async getActiveInstancesCountAsync(): Promise {\n const controller = await this.getController();\n return await controller?.getActiveInstancesCountAsync();\n }\n\n public getAlarmStateString(alarmState: string): string {\n switch (alarmState) {\n case AlarmStates.Active: {\n return this.translateService.instant('STE_LABEL_ALARM_ACTIVE') as string;\n }\n case AlarmStates.Acked: {\n return this.translateService.instant('STE_LABEL_ALARMSTATE_ACKED') as string;\n }\n case AlarmStates.AcknowledgeRequired: {\n return this.translateService.instant('STE_LABEL_ALARMSTATE_ACKNOWLEDGEMENT_REQUIRED') as string;\n }\n case AlarmStates.SourceConditionInvestigating: {\n return this.translateService.instant('STE_LABEL_ALARMSTATE_INVESTIGATING') as string;\n }\n default: {\n this.logger.traceDebug(`Unknown alarm state, cannot translate ${alarmState}`);\n }\n }\n return '';\n }\n\n public getListMaxCount(): number {\n let count = this.advancedSettingsService.get('AlarmsListMaxCount', this.defaultMaxAlarmsCount);\n\n if (count < 0) {\n count = this.defaultMaxAlarmsCount;\n }\n\n return Math.min(count, this.strictMaxAlarmsCount);\n }\n\n public async getInstancesAsync(): Promise {\n const controller = await this.getController();\n\n return await controller?.getInstancesAsync(this.getListMaxCount());\n }\n\n public async investigateAsync(instanceId: number, alarmId: IGuid): Promise {\n const controller = await this.getController();\n return await controller?.investigateAsync(instanceId, alarmId);\n }\n\n public ngOnDestroy() {\n this.subscriptions.unsubscribeAll();\n }\n\n public async triggerAsync(alarmId: IGuid): Promise {\n const controller = await this.getController();\n return await controller?.triggerAsync(alarmId);\n }\n\n private async getController(): Promise {\n return await this.scClient.getAsync(AlarmsController);\n }\n\n private async onAlarmTrayEventReceived(arg: EventReceivedArg) {\n if (arg.event) {\n if (arg.event.eventType === EventTypes.AlarmTriggered) {\n this.setActiveAlarmCount(this.activeAlarmCountUpdatedSubject$.getValue() + 1);\n this.alarmEventReceivedSubject$.next(arg);\n } else if (\n arg.event.eventType === EventTypes.AlarmAcknowledged ||\n arg.event.eventType === EventTypes.AlarmAcknowledgedAlternate ||\n arg.event.eventType === EventTypes.AlarmForciblyAcked\n ) {\n this.setActiveAlarmCount(this.activeAlarmCountUpdatedSubject$.getValue() - 1);\n this.alarmEventReceivedSubject$.next(arg);\n } else if (arg.event.eventType === EventTypes.AlarmInvestigating) {\n this.alarmEventReceivedSubject$.next(arg);\n } else if (arg.event.eventType === 'RefreshAlarmsEvent') {\n await this.refreshActiveAlarmsCountAsync();\n this.alarmEventReceivedSubject$.next(arg);\n }\n }\n }\n\n private async refreshActiveAlarmsCountAsync() {\n this.initialActiveAlarmsCountFetched = false;\n const alarmCountResult = await this.getActiveInstancesCountAsync();\n if (alarmCountResult) {\n // After receiving the count, we can now start to listen to events and do +1 and -1\n this.initialActiveAlarmsCountFetched = true;\n\n this.setActiveAlarmCount(alarmCountResult.count);\n }\n }\n\n private setActiveAlarmCount(count: number) {\n if (!this.initialActiveAlarmsCountFetched) {\n this.logger.traceDebug(`Trying to set AlarmCount to ${count} but initial count not yet fetch.`);\n return;\n }\n\n if (count < 0) {\n // Log if less than 0, something not normal!\n this.logger.traceWarning(`Setting AlarmCount to ${count}`);\n\n // Prevent user from seeing -1 and force value to 0 in that case\n this.activeAlarmCountUpdatedSubject$.next(0);\n\n // Force a refresh, if we were in a state where we have less than 0 alarm, we need to restart our count\n this.refreshActiveAlarmsCountAsync().fireAndForget();\n\n return;\n }\n\n this.activeAlarmCountUpdatedSubject$.next(count);\n }\n\n private subscribeAuthService(): void {\n this.authService.loggedIn$\n .pipe(\n tap((isLoggedIn) => (isLoggedIn ? this.onLoggedIn() : this.onLoggedOut())),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n private onLoggedIn(): void {\n this.refreshActiveAlarmsCountAsync().fireAndForget();\n }\n\n private onLoggedOut(): void {\n this.initialActiveAlarmsCountFetched = false;\n }\n}\n"," 0, 'focus-style-override': true }\"\n appTooltip=\"{{ 'STE_TOOLTIP_BUTTON_ACTIVEALARMS' | translate }}\"\n [flavor]=\"ButtonFlavor.Flat\"\n (click)=\"showMonitoredAlarms()\"\n>\n \n {{ instanceCount }}\n\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ButtonFlavor, Icon } from '@genetec/gelato';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Observable } from 'rxjs';\nimport { SIDE_CONTEXT_SERVICE, ContentService } from '../../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '../../../shared/interfaces/plugins/public/plugin-types';\nimport { InternalPluginDescriptor } from '../../../shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { AlarmContentTypes } from '../../enumerations/alarm-content-types';\nimport { AlarmsService } from '../../services/alarms.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-alarms-tray',\n templateUrl: './alarms-tray.component.html',\n styleUrls: ['./alarms-tray.component.scss'],\n})\n@InternalPluginDescriptor({\n type: AlarmsTrayComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: AlarmsTrayComponent.pluginId },\n isSupported: () => true,\n requirements: { features: [KnownFeatures.alarmsId], globalPrivileges: [KnownPrivileges.allowAlarmManagementPrivilege] },\n})\nexport class AlarmsTrayComponent extends TrackedComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('A77326F6-C6BC-4A7F-82B7-E0192E2F6A27');\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n\n public instanceCount$: Observable;\n\n constructor(\n @Inject(SIDE_CONTEXT_SERVICE) private sideContextService: ContentService,\n private contentProviderService: ContentProviderService,\n trackingService: TrackingService,\n private alarmsService: AlarmsService\n ) {\n super(trackingService);\n this.instanceCount$ = this.alarmsService.activeAlarmCountUpdated$;\n }\n\n public async showMonitoredAlarms(): Promise {\n const currentContent = this.sideContextService.currentContent;\n if (!currentContent?.mainContent.type.equals(AlarmContentTypes.AlarmList)) {\n const alarmListRequest = new FieldObject();\n alarmListRequest.setField('AlarmListRequest', '');\n const content = await this.contentProviderService.getContentFromFieldsAsync(alarmListRequest);\n if (content) {\n this.sideContextService.setMainContent(content);\n }\n } else {\n this.sideContextService.clearMainContent();\n }\n }\n}\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { GenMenu } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { MenuItemsComponent } from '@shared/components/menu-item/menu-item.component';\n\ninterface Coords {\n x: number;\n y: number;\n}\n\n/**\n * This factory allows to generate a ContextMenuPopup (GenMenu) based on a dynamic list of MenuItem(with children or not) and coordinates or targetSelector.\n * This factory takes into account whether there is a fullscreen element, if it does the ContextMenu will be display on top of it, otherwise, it will be appended to\n * the gen-design-menu-system.\n *\n * This factory is designed in a way that there can only be one contextMenu at a time.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ContextMenuFactory {\n public currentMenu?: ComponentRef;\n\n public get isContextMenuOpen(): boolean {\n return this.currentMenu?.instance?.open ?? false;\n }\n\n /**\n * Builds a GenMenu component reference and attaches it to the DOM.\n * The menu is not shown automatically.\n * Caller is in charge of destroying the menu once done with it.\n */\n public buildMenu(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], coords?: Coords): ComponentRef;\n public buildMenu(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], targetSelector?: string): ComponentRef;\n public buildMenu(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], targetElement?: HTMLElement): ComponentRef;\n public buildMenu(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], target?: HTMLElement | Coords | string): ComponentRef {\n return this.build(viewContainerRef, dataSource, target);\n }\n\n /**\n * Builds and shows a menu\n */\n public async showMenuAsync(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], coords?: Coords): Promise>;\n public async showMenuAsync(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], targetSelector?: string): Promise>;\n public async showMenuAsync(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], targetElement?: HTMLElement): Promise>;\n public async showMenuAsync(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], target?: HTMLElement | Coords | string): Promise> {\n // ensures there is only one popup at a time.\n this.currentMenu?.destroy();\n\n this.currentMenu = this.build(viewContainerRef, dataSource, target);\n\n // Then show it.\n await this.currentMenu.instance.show();\n\n return this.currentMenu;\n }\n\n public destroy(): void {\n this.currentMenu?.instance?.close().fireAndForget();\n this.currentMenu?.destroy();\n }\n\n private build(viewContainerRef: ViewContainerRef, dataSource: ContextMenuItem[], target?: HTMLElement | Coords | string): ComponentRef {\n const genMenuRef = viewContainerRef.createComponent(GenMenu);\n\n // Create the menu items.\n const menuItems = viewContainerRef.createComponent(MenuItemsComponent);\n menuItems.instance.dataSource = dataSource;\n\n // Run change detection for bindings.\n menuItems.changeDetectorRef.detectChanges();\n\n // Inject them in the context menu\n const domElement = genMenuRef.location.nativeElement as HTMLElement;\n domElement.appendChild(menuItems.location.nativeElement);\n\n // Append the menu to the appropriate section.\n let appendToElement;\n if (document.fullscreenEnabled && document.fullscreenElement) {\n appendToElement = document.fullscreenElement;\n } else {\n appendToElement = document.querySelector('gen-design-system-provider');\n }\n\n appendToElement?.appendChild(domElement);\n if (target) {\n if (typeof target === 'string') {\n genMenuRef.instance.targetSelector = target;\n } else if (isCoords(target)) {\n genMenuRef.instance.positionX = target.x;\n genMenuRef.instance.positionY = target.y;\n } else {\n genMenuRef.instance.targetElement = target;\n }\n }\n\n return genMenuRef;\n }\n}\n\nconst isCoords = (target: HTMLElement | Coords): target is Coords => {\n return 'x' in target && 'y' in target && !isNaN(target.x) && !isNaN(target.y);\n};\n","{{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n 0 || isLoading\" [flavor]=\"TextFlavor.Label\">{{ 'STE_LABEL_NOACTIVEALARMS' | translate }}\n\n
      \n
    • \n
      \n \n \n {{ item.name }}\n {{ item.description }}\n \n \n \n \n
      \n
    • \n
    \n","import { Component, Inject, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { ButtonFlavor, Icon, ItemSlot, TextFlavor } from '@genetec/gelato';\nimport { Color, ContextMenuPosition, DateFormat, MeltedIcon } from '@genetec/gelato-angular';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandsService, COMMANDS_SERVICE, ContentService, SIDE_CONTEXT_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { ContextMenuFactory } from '@modules/shared/services/context-menu/context-menu.factory';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { IAlarmAcknowledgedEvent } from 'RestClient/Client/Interface/IAlarmAcknowledgedEvent';\nimport { AlarmEntityFields, IAlarmEntity } from 'RestClient/Client/Interface/IAlarmEntity';\nimport { IAlarmInvestigatingEvent } from 'RestClient/Client/Interface/IAlarmInvestigatingEvent';\nimport { IAlarmTriggeredEvent } from 'RestClient/Client/Interface/IAlarmTriggeredEvent';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { AlarmEntity } from 'RestClient/Client/Model/AlarmEntity';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Observable, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { WINDOW } from '@utilities/common-helper';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AlarmAcknowledgeAction } from '../../controllers/alarms.controller';\nimport { AlarmContentTypes } from '../../enumerations/alarm-content-types';\nimport { AlarmsService } from '../../services/alarms.service';\nimport { AlarmItem } from './alarm-item';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-alarms-context-widget',\n templateUrl: './alarms-context-widget.component.html',\n styleUrls: ['./alarms-context-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: AlarmsContextWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: AlarmsContextWidgetComponent.pluginId, standalone: true },\n isContentSupported: (content: Content) => !!content?.type.equals(AlarmContentTypes.AlarmList),\n requirements: { features: [KnownFeatures.alarmsId], globalPrivileges: [KnownPrivileges.allowAlarmManagementPrivilege] },\n})\nexport class AlarmsContextWidgetComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('FAC4D8FD-2A84-4FC8-9C1A-4B0088B7EC78');\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly ContextMenuPosition = ContextMenuPosition;\n public readonly Icon = Icon;\n public readonly ItemSlot = ItemSlot;\n public readonly TextFlavor = TextFlavor;\n\n public alarmItems: AlarmItem[] = [];\n public alarmActions$: Observable;\n public isAlarmActionsOpen = false;\n public actionTarget = '';\n public content?: Content;\n public dataContext?: ContentService;\n public isLoading = true;\n\n private readonly scClient: ISecurityCenterClient;\n private isAdminUser = false;\n private alarmActionsSubject = new Subject();\n\n constructor(\n @Inject(SIDE_CONTEXT_SERVICE) private sideContextService: ContentService,\n @Inject(COMMANDS_SERVICE) public commandsService: CommandsService,\n private alarmService: AlarmsService,\n private contentProviderService: ContentProviderService,\n private timeService: TimeService,\n securityCenterProvider: SecurityCenterClientService,\n trackingService: TrackingService,\n private translateService: TranslateService,\n private contextMenuFactory: ContextMenuFactory,\n @Inject(WINDOW) private window: Window,\n private viewContainerRef: ViewContainerRef\n ) {\n super(trackingService);\n\n this.scClient = securityCenterProvider?.scClient;\n this.alarmActions$ = this.alarmActionsSubject.asObservable();\n }\n\n async ngOnInit() {\n super.ngOnInit();\n\n if (this.scClient) {\n const userInfo = this.scClient.currentUserInfo;\n if (userInfo) {\n this.isAdminUser = userInfo.isAdministrator;\n }\n\n this.alarmService.alarmEventReceived$.pipe(untilDestroyed(this)).subscribe((eventArg) => this.onAlarmContextEventReceived(eventArg));\n\n await this.refreshAlarmInstances(true);\n }\n\n this.isLoading = false;\n }\n\n public setDataContext(context: ContentService): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public getAlarmIcon(alarmItem: AlarmItem): MeltedIcon {\n return alarmItem.investigating ? MeltedIcon.Search : MeltedIcon.Alarm;\n }\n\n public async onOptionsClicked(alarmItem: AlarmItem, event: MouseEvent): Promise {\n event.stopPropagation();\n\n // reclicking the dots will close previous popup if already open\n if (this.contextMenuFactory.isContextMenuOpen) {\n this.contextMenuFactory.destroy();\n return;\n }\n\n // Listen for incoming data;\n this.alarmActions$.pipe(take(1), untilDestroyed(this)).subscribe((menuItems: ContextMenuItem[]) => {\n const targetSelector = `#alarm${alarmItem.instanceId.toString()}`;\n this.contextMenuFactory.showMenuAsync(this.viewContainerRef, menuItems, targetSelector).fireAndForget();\n });\n\n // Fetch menu information.\n const alarmActions = await this.loadAlarmActions(alarmItem);\n if (alarmActions) {\n this.alarmActionsSubject.next(alarmActions);\n }\n }\n\n public async onAlarmInfoRequested(item: AlarmItem): Promise {\n if (item) {\n const contentRequest = new FieldObject();\n contentRequest.setField('AlarmInstanceId', item.instanceId);\n const content = await this.contentProviderService.getContentFromFieldsAsync(contentRequest);\n if (content) {\n this.sideContextService.pushContent(content);\n }\n }\n }\n\n private async refreshAlarmInstances(clear: boolean) {\n if (clear) {\n this.alarmItems.length = 0;\n }\n\n const alarmResult = await this.alarmService?.getInstancesAsync();\n const instances = alarmResult?.alarmInstances;\n if (instances && alarmResult) {\n const sortedInstances = Array.from(instances).sort((a, b) => {\n if (a.triggerTime && b.triggerTime) {\n return b.triggerTime.getTime() - a.triggerTime.getTime();\n } else return -1;\n });\n\n this.alarmItems.removeWhere((item) => sortedInstances.every((sortedItem) => sortedItem.instanceID !== item.instanceId));\n for (let i = 0; i < sortedInstances.length; i++) {\n const instance = sortedInstances[i];\n\n const entityData = alarmResult.entityLookup.get(instance.alarmId.toString());\n if (entityData) {\n const descriptionText = this.timeService.formatTime(instance.triggerTime, DateFormat.DateTime);\n\n if (clear || this.alarmItems.findIndex((item) => item.instanceId === instance.instanceID) === -1) {\n this.alarmItems[i] = {\n name: entityData.getField('name'),\n description: descriptionText,\n color: '#' + entityData.getField('color').slice(3), // removes alpha\n instanceId: instance.instanceID,\n alarmId: instance.alarmId,\n investigating: !instance.investigatedBy.isEmpty(),\n customIconId: entityData.getField('customIconId'),\n hasMoreMenu: await this.hasAlarmMoreMenuAsync(instance.alarmId),\n };\n }\n }\n }\n }\n }\n\n private async getAlarmEntityWithProcedureFieldsAsync(alarmId: IGuid): Promise {\n const alarmFields = [EntityFields.idField, AlarmEntityFields.enableProcedureField, AlarmEntityFields.procedureField];\n return await this.scClient.getEntityAsync(AlarmEntity, alarmId, undefined, undefined, alarmFields.toString());\n }\n\n private async hasAlarmMoreMenuAsync(alarmId: IGuid): Promise {\n const alarmEntity = await this.getAlarmEntityWithProcedureFieldsAsync(alarmId);\n if (!alarmEntity) {\n return false;\n }\n const hasAcknowledgeAlarmsPrivilege = (await alarmEntity.hasPrivilegesAsync(SafeGuid.createSet([KnownPrivileges.acknowledgeAlarmsPrivilege]))) ?? false;\n const hasProcedure = alarmEntity.enableProcedure && !!alarmEntity.procedure;\n return hasAcknowledgeAlarmsPrivilege || hasProcedure;\n }\n\n private async loadAlarmActions(alarmItem: AlarmItem): Promise {\n const alarmActions = [];\n const alarmEntity = await this.getAlarmEntityWithProcedureFieldsAsync(alarmItem.alarmId);\n if (alarmEntity) {\n if (await alarmEntity.hasPrivilegesAsync(SafeGuid.createSet([KnownPrivileges.acknowledgeAlarmsPrivilege]))) {\n alarmActions.push({\n id: this.translateService.instant('STE_ACTION_ALARM_ACK') as string,\n text: this.translateService.instant('STE_ACTION_ALARM_ACK') as string,\n icon: MeltedIcon.Checkmark,\n iconColor: Color.Pistacchio,\n actionItem: {\n execute: async () => {\n const action = this.buildAckAction(alarmItem);\n await this.alarmService.acknowledgeAsync(action);\n },\n },\n });\n alarmActions.push({\n id: this.translateService.instant('STE_ACTION_ALARM_NACK') as string,\n text: this.translateService.instant('STE_ACTION_ALARM_NACK') as string,\n icon: MeltedIcon.Checkmark,\n iconColor: Color.Arancia,\n actionItem: {\n execute: async () => {\n const action = this.buildAckAction(alarmItem);\n action.alternate = true;\n await this.alarmService.acknowledgeAsync(action);\n },\n },\n });\n if (this.isAdminUser) {\n alarmActions.push({\n id: this.translateService.instant('STE_ACTION_ALARM_FORCE_ACK') as string,\n text: this.translateService.instant('STE_ACTION_ALARM_FORCE_ACK') as string,\n icon: MeltedIcon.ForciblyAcknowledge,\n actionItem: {\n execute: async () => {\n const action = this.buildAckAction(alarmItem);\n action.force = true;\n await this.alarmService.acknowledgeAsync(action);\n },\n },\n });\n }\n if (!alarmItem.investigating) {\n alarmActions.push({\n id: this.translateService.instant('STE_ACTION_ALARM_INVESTIGATE') as string,\n text: this.translateService.instant('STE_ACTION_ALARM_INVESTIGATE') as string,\n icon: MeltedIcon.Search,\n actionItem: {\n execute: async () => {\n await this.alarmService.investigateAsync(alarmItem.instanceId, alarmItem.alarmId);\n },\n },\n });\n }\n }\n if (alarmEntity.enableProcedure && alarmEntity.procedure) {\n alarmActions.push({\n id: this.translateService.instant('STE_ACTION_SHOWALARMPROCEDURE') as string,\n text: this.translateService.instant('STE_ACTION_SHOWALARMPROCEDURE') as string,\n icon: MeltedIcon.Link,\n actionItem: {\n execute: () => {\n let procedure = alarmEntity.procedure;\n if (procedure.indexOf('https://') < 0 && procedure.indexOf('http://') < 0) {\n procedure = 'http://' + procedure;\n }\n this.window.open(procedure, '_blank');\n },\n },\n });\n }\n return alarmActions;\n }\n }\n\n private async onAlarmContextEventReceived(arg: EventReceivedArg) {\n if (arg.event) {\n const maxCount = this.alarmService.getListMaxCount();\n if (arg.event.eventType === EventTypes.AlarmTriggered) {\n const alarmEvent = arg.event as IAlarmTriggeredEvent;\n const alarmEntity = await this.scClient.getEntityAsync(\n AlarmEntity,\n alarmEvent.sourceEntity,\n null,\n null,\n EntityFields.customIconIdField,\n AlarmEntityFields.colorField\n );\n\n if (alarmEntity) {\n const descriptionText = this.timeService.formatTime(alarmEvent.timestamp, DateFormat.DateTime);\n\n if (this.alarmItems.length === maxCount) {\n this.alarmItems.pop();\n }\n\n this.alarmItems.unshift({\n name: alarmEntity.name,\n description: descriptionText,\n color: '#' + alarmEntity.color.slice(3), // removes alpha\n instanceId: alarmEvent.instanceId,\n alarmId: alarmEvent.sourceEntity,\n investigating: false,\n customIconId: alarmEntity.customIconId,\n hasMoreMenu: await this.hasAlarmMoreMenuAsync(alarmEntity.id),\n });\n }\n }\n\n if (\n arg.event.eventType === EventTypes.AlarmAcknowledged ||\n arg.event.eventType === EventTypes.AlarmAcknowledgedAlternate ||\n arg.event.eventType === EventTypes.AlarmForciblyAcked\n ) {\n if (this.alarmItems.length === maxCount) {\n // needs to refresh to fill in the gap... do not clear, add only new ones\n await this.refreshAlarmInstances(false);\n } else {\n const alarmEvent = arg.event as IAlarmAcknowledgedEvent;\n const alarmIndex = this.alarmItems.findIndex((item) => item.instanceId === alarmEvent.instanceId);\n if (alarmIndex !== -1) {\n this.alarmItems.splice(alarmIndex, 1);\n }\n }\n }\n\n if (arg.event.eventType === EventTypes.AlarmInvestigating) {\n const alarmEvent = arg.event as IAlarmInvestigatingEvent;\n const alarmIndex = this.alarmItems.findIndex((item) => item.instanceId === alarmEvent.instanceId);\n if (alarmIndex !== -1) {\n this.alarmItems[alarmIndex].investigating = true;\n }\n }\n\n if (arg.event.eventType === 'RefreshAlarmsEvent') {\n await this.refreshAlarmInstances(true);\n }\n }\n }\n\n private buildAckAction(alarmItem: AlarmItem) {\n const action = new AlarmAcknowledgeAction();\n action.instanceId = alarmItem.instanceId;\n action.alarmId = alarmItem.alarmId;\n return action;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { AlarmContentTypes } from '../../../enumerations/alarm-content-types';\n\n@Component({\n selector: 'app-alarm-event-compact-widget',\n templateUrl: './alarm-event-compact-widget.component.html',\n styleUrls: ['./alarm-event-compact-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: AlarmEventCompactWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupCompact],\n exposure: { id: AlarmEventCompactWidgetComponent.pluginId, priority: 0 },\n isContentSupported: (content: Content) => !!content?.type.equals(AlarmContentTypes.Instance),\n})\nexport class AlarmEventCompactWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('BBD79E59-8BE5-4E60-BCC5-29C61AE82872');\n\n public dataContext: unknown;\n public alarmName!: string;\n public entityName = 'Unknown';\n public icon: MeltedIcon | null = MeltedIcon.Alarm;\n public content?: Content;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.content) {\n let alarmContent;\n if (this.content.type.equals(AlarmContentTypes.Instance)) {\n alarmContent = this.content;\n }\n\n if (!alarmContent) {\n alarmContent = this.content.contextsubContents?.find((content) => content.type.equals(AlarmContentTypes.Instance));\n }\n\n if (alarmContent) {\n this.entityName = alarmContent.title;\n\n if (alarmContent.parameters) {\n this.alarmName = alarmContent.parameters.getField('SourceEntityName');\n }\n }\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","
    \n \n \n {{ alarmName }}\n \n
    \n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { DateFormat, MeltedIcon } from '@genetec/gelato-angular';\nimport { ItemSlot } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { CommandsUsage } from '@modules/shared/services/commands/commands-usage/commands-usage';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { AlarmContentTypes } from '../../../enumerations/alarm-content-types';\nimport { AlarmAcknowledgeAction } from '../../../controllers/alarms.controller';\nimport { AlarmsService } from '../../../services/alarms.service';\nimport { AlarmEventCompactWidgetComponent } from '../alarm-event-compact-widget/alarm-event-compact-widget.component';\n\n@Component({\n selector: 'app-alarm-event-expand-widget',\n templateUrl: './alarm-event-expand-widget.component.html',\n styleUrls: ['./alarm-event-expand-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: AlarmEventExpandWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupExpand],\n exposure: { id: AlarmEventCompactWidgetComponent.pluginId, priority: 0 },\n isContentSupported: (content: Content) => !!content?.type.equals(AlarmContentTypes.Instance),\n})\nexport class AlarmEventExpandWidgetComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('653CDDA2-9881-4394-87D8-F015BB82925C');\n\n public alarmName!: string;\n public commandsUsage!: CommandsUsage;\n public dataContext: unknown;\n public icon: MeltedIcon | null = MeltedIcon.Alarm;\n public readonly ItemSlot = ItemSlot;\n public content?: Content;\n public timestamp!: string;\n\n private alarmId!: IGuid;\n private instanceId!: number;\n private subscriptions = new SubscriptionCollection();\n\n constructor(\n trackingService: TrackingService,\n private alarmsService: AlarmsService,\n private timeService: TimeService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService\n ) {\n super(trackingService);\n }\n\n public ngOnDestroy() {\n this.subscriptions.unsubscribeAll();\n super.ngOnDestroy();\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n if (this.content) {\n let alarmContent;\n if (this.content.type.equals(AlarmContentTypes.Instance)) {\n alarmContent = this.content;\n }\n\n if (alarmContent?.parameters) {\n this.instanceId = alarmContent.parameters.getField('AlarmInstanceId');\n this.alarmId = alarmContent.parameters.getFieldGuid('SourceEntityGuid');\n this.alarmName = `${alarmContent.parameters.getField('SourceEntityName')} (${this.instanceId})`;\n this.timestamp = this.timeService.formatTime(alarmContent.parameters.getFieldDate('Timestamp'), DateFormat.DateTime);\n }\n\n this.commandsUsage = await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: alarmContent });\n this.subscriptions.add(this.commandsUsage.subscribe());\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public async onAckAlarmClicked(event?: MouseEvent): Promise {\n event?.stopPropagation();\n const action = new AlarmAcknowledgeAction();\n action.instanceId = this.instanceId;\n action.alarmId = this.alarmId;\n await this.alarmsService?.acknowledgeAsync(action);\n }\n}\n","
    \n
    \n \n \n {{ alarmName }}\n {{ timestamp }}\n \n\n \n
    \n
    \n","import { SharedContentFields } from '../../shared/enumerations/shared-content-fields';\nimport { Constants } from '../../shared/utilities/constants';\n\nexport const AlarmContentFields = Constants({\n ...SharedContentFields,\n AlarmInstanceId: 'AlarmInstanceId',\n AlarmProcedure: 'AlarmProcedure',\n IsUserRecipient: 'IsUserRecipient',\n ActiveAlarmCount: 'ActiveAlarmCount',\n State: 'State',\n InvestigatedTime: 'InvestigatedTime',\n Priority: 'Priority',\n InvestigatedBy: 'InvestigatedBy',\n});\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { IAlarmEvent } from 'RestClient/Client/Interface/IAlarmEvent';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { AlarmStates } from 'RestClient/Client/Enumerations/AlarmStates';\nimport { IAlarmAcknowledgedEvent } from 'RestClient/Client/Interface/IAlarmAcknowledgedEvent';\nimport { IAlarmInvestigatingEvent } from 'RestClient/Client/Interface/IAlarmInvestigatingEvent';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TrackedComponent } from '../../shared/components/tracked/tracked.component';\nimport { Content, ContentPluginComponent } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '../../shared/services/tracking.service';\nimport { AlarmContentFields } from '../enumerations/alarm-content-fields';\nimport { AlarmContentTypes } from '../enumerations/alarm-content-types';\nimport { AlarmsService } from '../services/alarms.service';\nimport { SharedContentFields } from '../../shared/enumerations/shared-content-fields';\nimport { TimeService } from '../../shared/services/time/time.service';\nimport { ContentService } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\n\n@UntilDestroy()\n@Component({\n selector: 'app-alarm-instance-widget-base-component',\n template: '',\n})\nexport class AlarmInstanceWidgetBaseComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public alarmState = '';\n public alarmStateString = '';\n public content?: Content;\n public dataContext?: ContentService;\n public instanceId!: number;\n public isLoading = true;\n\n protected alarmId?: IGuid;\n protected triggerTime?: string;\n\n constructor(protected alarmsService: AlarmsService, protected timeService: TimeService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n if (this.content) {\n this.alarmId = SafeGuid.parse(this.content.source);\n\n this.alarmsService.alarmEventReceived$.pipe(untilDestroyed(this)).subscribe((eventArgs) => {\n this.onEventReceived(eventArgs);\n });\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n protected tryGetAlarmInstanceInfo(content: Content | null | undefined): boolean {\n if (content?.type.equals(AlarmContentTypes.Instance) && content.parameters) {\n this.setAlarmState(content.parameters.getField(AlarmContentFields.State));\n this.instanceId = content.parameters.getField(AlarmContentFields.AlarmInstanceId);\n\n const triggerTime = content.parameters.getField(SharedContentFields.Timestamp);\n this.triggerTime = this.timeService.formatTime(triggerTime, DateFormat.DateTime);\n return true;\n }\n return false;\n }\n\n protected onAlarmAcknowledged(alarmEvent: IAlarmAcknowledgedEvent): void {\n this.setAlarmState(AlarmStates.Acked);\n }\n\n protected onAlarmInvestigating(alarmEvent: IAlarmInvestigatingEvent): void {\n this.setAlarmState(AlarmStates.SourceConditionInvestigating);\n }\n\n private setAlarmState(alarmState: string): void {\n this.alarmState = alarmState;\n this.alarmStateString = this.alarmsService.getAlarmStateString(alarmState);\n }\n\n private onEventReceived(eventArg: EventReceivedArg) {\n const event = eventArg.event as IAlarmEvent;\n if (this.alarmId && event.sourceEntity.equals(this.alarmId) && event.instanceId === this.instanceId) {\n if (\n event.eventType === EventTypes.AlarmAcknowledged ||\n event.eventType === EventTypes.AlarmAcknowledgedAlternate ||\n event.eventType === EventTypes.AlarmForciblyAcked\n ) {\n this.onAlarmAcknowledged(event as IAlarmAcknowledgedEvent);\n } else if (event.eventType === EventTypes.AlarmInvestigating) {\n this.onAlarmInvestigating(event as IAlarmInvestigatingEvent);\n }\n }\n }\n}\n","\n {{ isEventContent ? alarmStateString : recipientInfo }}\n \n {{ instanceCountString }}\n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginComponentExposure, PluginComponentRequirements } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { IAlarmAcknowledgedEvent } from 'RestClient/Client/Interface/IAlarmAcknowledgedEvent';\nimport { AlarmInstanceWidgetBaseComponent } from '../../alarm-instance-widget-base.component';\nimport { AlarmsService } from '../../../services/alarms.service';\nimport { AlarmContentFields } from '../../../enumerations/alarm-content-fields';\nimport { AlarmContentTypes } from '../../../enumerations/alarm-content-types';\n\n@Component({\n selector: 'app-alarm-actions-widget.component',\n templateUrl: './alarm-actions-widget.component.html',\n styleUrls: ['./alarm-actions-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: AlarmActionsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: AlarmActionsWidgetComponent.pluginId, priority: 0 } as PluginComponentExposure,\n isContentSupported: (content: Content) => !!content?.type.equals(AlarmContentTypes.Alarm),\n requirements: { features: [KnownFeatures.alarmsId] },\n})\nexport class AlarmActionsWidgetComponent extends AlarmInstanceWidgetBaseComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('B36DF810-3AE4-4AFE-853A-8780B9AAC97E');\n\n public alarmName!: string;\n public recipientInfo = '';\n public instanceCountString = '';\n public instanceCount!: number;\n public isRecipient = false;\n public isEventContent = false;\n\n constructor(trackingService: TrackingService, private translateService: TranslateService, alarmsService: AlarmsService, timeService: TimeService) {\n super(alarmsService, timeService, trackingService);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n if (this.tryGetAlarmInstanceInfo(this.content?.contextContent)) {\n this.isRecipient = true;\n this.isEventContent = true;\n }\n\n const alarmContent = this.content;\n if (alarmContent) {\n this.alarmName = alarmContent.title;\n\n if (alarmContent.parameters) {\n if (!this.isEventContent) {\n if (alarmContent.parameters.hasField(AlarmContentFields.IsUserRecipient)) {\n this.isRecipient = alarmContent.parameters.getField(AlarmContentFields.IsUserRecipient);\n }\n if (alarmContent.parameters.hasField(AlarmContentFields.ActiveAlarmCount)) {\n this.instanceCount = alarmContent.parameters.getField(AlarmContentFields.ActiveAlarmCount);\n }\n }\n }\n }\n\n if (!this.isEventContent) {\n this.recipientInfo = (this.isRecipient ? this.translateService.instant('STE_LABEL_RECIPIENT') : this.translateService.instant('STE_LABEL_NOTARECIPIENT')) as string;\n\n if (this.instanceCount > 0) {\n this.instanceCountString = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_N_ACTIVE_INSTANCES') as string, this.instanceCount.toString());\n }\n }\n\n this.isLoading = false;\n }\n\n protected onAlarmAcknowledged(alarmEvent: IAlarmAcknowledgedEvent): void {\n super.onAlarmAcknowledged(alarmEvent);\n this.dataContext?.popContent();\n }\n}\n","import { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginComponentExposure, PluginComponentRequirements } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { SharedContentFields } from '@modules/shared/enumerations/shared-content-fields';\nimport { IAlarmInvestigatingEvent } from 'RestClient/Client/Interface/IAlarmInvestigatingEvent';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { AlarmsService } from '../../../services/alarms.service';\nimport { AlarmInstanceWidgetBaseComponent } from '../../alarm-instance-widget-base.component';\nimport { AlarmContentFields } from '../../../enumerations/alarm-content-fields';\nimport { AlarmContentTypes } from '../../../enumerations/alarm-content-types';\n\n@Component({\n selector: 'app-instance-info-actions-widget.component',\n templateUrl: './alarm-instance-info-widget.component.html',\n styleUrls: ['./alarm-instance-info-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: AlarmInstanceInfoWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: AlarmInstanceInfoWidgetComponent.pluginId, priority: 3 } as PluginComponentExposure,\n isContentSupported: (data: Content) => !!data?.type.equals(AlarmContentTypes.Instance),\n requirements: { features: [KnownFeatures.alarmsId] },\n})\nexport class AlarmInstanceInfoWidgetComponent extends AlarmInstanceWidgetBaseComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('D19BFE61-E130-4024-8AAB-87DCD6FCF6B1');\n\n public readonly TextFlavor = TextFlavor;\n\n public priority: number | undefined;\n public sourceName: string | undefined;\n public investigatedBy = '-';\n public investigatedTime = '-';\n\n private scClient: SecurityCenterClient;\n\n constructor(securityCenterClientService: SecurityCenterClientService, alarmsService: AlarmsService, timeService: TimeService, trackingService: TrackingService) {\n super(alarmsService, timeService, trackingService);\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n this.tryGetAlarmInstanceInfo(this.content);\n\n this.isLoading = false;\n }\n\n protected onAlarmInvestigating(event: IAlarmInvestigatingEvent): void {\n super.onAlarmInvestigating(event);\n this.updateInvestigationInfoAsync(event.investigatedBy, event.timestamp).fireAndForget();\n }\n\n protected tryGetAlarmInstanceInfo(content?: Content | null): boolean {\n const result = super.tryGetAlarmInstanceInfo(content);\n if (content?.type.equals(AlarmContentTypes.Instance) && content.parameters) {\n this.sourceName = content.parameters.getField(SharedContentFields.SourceEntityName);\n this.priority = content.parameters.getField(AlarmContentFields.Priority);\n\n this.updateInvestigationInfoAsync(\n content.parameters.getFieldGuid(AlarmContentFields.InvestigatedBy),\n content.parameters.getField(AlarmContentFields.InvestigatedTime)\n ).fireAndForget();\n }\n return result;\n }\n\n private async updateInvestigationInfoAsync(investigatedBy: IGuid, investigationTime: Date) {\n const userEntity = await this.scClient.getEntityAsync(UserEntity, investigatedBy);\n if (userEntity) {\n this.investigatedBy = userEntity.name;\n }\n\n this.investigatedTime = this.timeService.formatTime(investigationTime, DateFormat.DateTime);\n }\n}\n","
    \n {{ 'STE_LABEL_OVERVIEW' | translate }}\n
    \n \n \n {{ 'STE_ENTITY_ALARM' | translate }} {{ sourceName }}\n\n {{ 'STE_LABEL_ABBREV_IDENTIFIER' | translate }} {{ instanceId }}\n \n \n {{ 'STE_LABEL_PRIORITY' | translate }} {{ priority }}\n\n {{ 'STE_LABEL_STATE' | translate }} {{ alarmStateString }}\n \n \n {{ 'STE_LABEL_ALARM_INVESTIGATED_BY' | translate }}\n {{ investigatedBy }}\n \n \n {{ 'STE_LABEL_ALARM_INVESTIGATED_ON' | translate }}\n {{ investigatedTime }}\n \n \n\n \n \n
    \n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\nexport const AlarmCommands = Constants({\n AcknowledgeAlarm: SafeGuid.parse('3925326B-B3F1-42FB-8387-38CB25651FF9'),\n AlternateAcknowledgeAlarm: SafeGuid.parse('7FE810E9-1485-4A9F-B1FE-137C7C17F8E1'),\n ForceAcknowledgeAlarm: SafeGuid.parse('FB7CDC9B-A004-4B7A-A3B6-D704424A663E'),\n InvestigateAlarm: SafeGuid.parse('61FABE62-94D6-4F26-B858-4A2F3A69E17B'),\n TriggerAlarm: SafeGuid.parse('C8E461B0-C413-4954-9C6D-B18627960F88'),\n ShowAlarmProcedure: SafeGuid.parse('4B99EFAE-FFC4-4220-BFE1-8AA4BC62E1C4'),\n});\n","import { Inject, Injectable } from '@angular/core';\nimport { Color, GenToastService, MeltedIcon, ToastFlavor } from '@genetec/gelato-angular';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { AlarmStates } from 'RestClient/Client/Enumerations/AlarmStates';\nimport { AlarmEntityFields, IAlarmEntity } from 'RestClient/Client/Interface/IAlarmEntity';\nimport { AlarmEntity } from 'RestClient/Client/Model/AlarmEntity';\nimport { IAlarmEvent } from 'RestClient/Client/Interface/IAlarmEvent';\nimport { IGuid, GuidSet, GuidMap } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { WINDOW } from '@utilities/common-helper';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport {\n CommandBindings,\n CommandContext,\n CommandsService,\n COMMANDS_SERVICE,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { Content } from '../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandDescriptor, CommandArgs } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { SharedContentFields } from '../../shared/enumerations/shared-content-fields';\nimport { AlarmCommands } from '../enumerations/alarm-commands';\nimport { AlarmContentFields } from '../enumerations/alarm-content-fields';\nimport { AlarmContentTypes } from '../enumerations/alarm-content-types';\nimport { AlarmAcknowledgeAction } from '../controllers/alarms.controller';\nimport { LanguageService } from '../../shared/services/language/language.service';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { AlarmsService } from './alarms.service';\n\nenum AckType {\n Ack,\n Nack,\n Force,\n}\n\ninterface AlarmInfo {\n alarmId: IGuid;\n}\n\ninterface AlarmInstanceInfo extends AlarmInfo {\n instanceId: number;\n}\n\nconst isAlarmInstanceInfo = (instance: any): instance is AlarmInstanceInfo => {\n return isOfType(instance, 'alarmId', 'instanceId');\n};\n\n@UntilDestroy()\n@Injectable()\nexport class AlarmCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const ackAlarmRequirements = this.fillCommandRequirements({\n requiredPrivileges: new GuidSet([KnownPrivileges.acknowledgeAlarmsPrivilege]),\n supportedContentTypes: new GuidSet([AlarmContentTypes.Instance]),\n });\n const descriptors = new GuidMap();\n descriptors.set(\n AlarmCommands.AcknowledgeAlarm,\n this.createAlarmCommandDescriptor(AlarmCommands.AcknowledgeAlarm, 'STE_ACTION_ALARM_ACK', MeltedIcon.Checkmark, ackAlarmRequirements, Color.Pistacchio)\n );\n descriptors.set(\n AlarmCommands.AlternateAcknowledgeAlarm,\n this.createAlarmCommandDescriptor(AlarmCommands.AlternateAcknowledgeAlarm, 'STE_ACTION_ALARM_NACK', MeltedIcon.Checkmark, ackAlarmRequirements, Color.Arancia)\n );\n descriptors.set(\n AlarmCommands.ForceAcknowledgeAlarm,\n this.createAlarmCommandDescriptor(\n AlarmCommands.ForceAcknowledgeAlarm,\n 'STE_ACTION_ALARM_FORCE_ACK',\n MeltedIcon.ForciblyAcknowledge,\n this.fillCommandRequirements({ supportedContentTypes: new GuidSet([AlarmContentTypes.Instance]) })\n )\n );\n descriptors.set(\n AlarmCommands.InvestigateAlarm,\n this.createAlarmCommandDescriptor(AlarmCommands.InvestigateAlarm, 'STE_ACTION_ALARM_INVESTIGATE', MeltedIcon.Search, ackAlarmRequirements)\n );\n descriptors.set(\n AlarmCommands.TriggerAlarm,\n this.createAlarmCommandDescriptor(\n AlarmCommands.TriggerAlarm,\n 'STE_ACTION_ALARM_TRIGGER',\n MeltedIcon.Alarm,\n this.fillCommandRequirements({\n requiredPrivileges: new GuidSet([KnownPrivileges.triggerAlarmPrivilege]),\n supportedContentTypes: new GuidSet([AlarmContentTypes.Alarm]),\n })\n )\n );\n descriptors.set(\n AlarmCommands.ShowAlarmProcedure,\n this.createAlarmCommandDescriptor(\n AlarmCommands.ShowAlarmProcedure,\n 'STE_ACTION_SHOWALARMPROCEDURE',\n MeltedIcon.Link,\n this.fillCommandRequirements({ supportedContentTypes: new GuidSet([AlarmContentTypes.Alarm, AlarmContentTypes.Instance]) })\n )\n );\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, AlarmEntityFields.procedureField, AlarmEntityFields.enableProcedureField]);\n }\n\n public get requiredFeatures(): Set {\n return new GuidSet([...super.requiredFeatures, KnownFeatures.alarmsId]);\n }\n\n constructor(\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n @Inject(WINDOW) private window: Window,\n private alarmsService: AlarmsService,\n private toastService: GenToastService,\n @Inject(COMMANDS_SERVICE) protected commandsService: CommandsService,\n protected translateService: TranslateService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n const canAck = await this.isAckAvailableAsync(commandContext, commandArgs);\n if (canAck) {\n commandIds.push(AlarmCommands.AcknowledgeAlarm);\n commandIds.push(AlarmCommands.AlternateAcknowledgeAlarm);\n if (await this.isForceAckAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AlarmCommands.ForceAcknowledgeAlarm);\n }\n commandIds.push(AlarmCommands.InvestigateAlarm);\n this.configureAckAlarmInvalidateCanExecute(commandContext as EntityCommandsUsageContext);\n }\n if (await this.isTriggerAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AlarmCommands.TriggerAlarm);\n }\n if (await this.isShowProcedureAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(AlarmCommands.ShowAlarmProcedure);\n }\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: AlarmCommands.AcknowledgeAlarm,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeAck(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isAckAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) => this.safeCanExecuteEntityCommand((entityCommandContext) => this.canAck(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AlarmCommands.AlternateAcknowledgeAlarm,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeNack(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isAckAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) => this.safeCanExecuteEntityCommand((entityCommandContext) => this.canAck(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AlarmCommands.ForceAcknowledgeAlarm,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeForceAck(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isForceAckAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) => this.safeCanExecuteEntityCommand((entityCommandContext) => this.canAck(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AlarmCommands.InvestigateAlarm,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeInvestigate(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isAckAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) => this.safeCanExecuteEntityCommand((entityCommandContext) => this.canInvestigate(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AlarmCommands.TriggerAlarm,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeTrigger(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isTriggerAvailableAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: AlarmCommands.ShowAlarmProcedure,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeShowProcedure(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isShowProcedureAvailableAsync(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Alarms]);\n }\n return super.fillCommandRequirements(requirements);\n }\n\n private async ackAlarmAsync(commandContext: CommandContext, ackType: AckType): Promise {\n const alarmInstanceInfo = this.extractAlarmInstanceInfo(commandContext);\n if (alarmInstanceInfo) {\n const action = this.buildAckAction(alarmInstanceInfo);\n switch (ackType) {\n case AckType.Force:\n action.force = true;\n break;\n case AckType.Nack:\n action.alternate = true;\n break;\n }\n await this.alarmsService.acknowledgeAsync(action);\n }\n\n return null;\n }\n\n private buildAckAction(alarmInfo: AlarmInstanceInfo): AlarmAcknowledgeAction {\n const action = new AlarmAcknowledgeAction();\n action.instanceId = alarmInfo.instanceId;\n action.alarmId = alarmInfo.alarmId;\n return action;\n }\n\n private canAck(commandContext: CommandContext, commandArgs?: CommandArgs): boolean {\n const args = commandArgs || this.extractArgs(commandContext);\n const content = args.content;\n if (content?.parameters?.hasField(AlarmContentFields.State)) {\n const alarmState = content.parameters.getField(AlarmContentFields.State);\n if (alarmState) {\n return alarmState !== AlarmStates.Acked;\n }\n }\n return false;\n }\n\n private canInvestigate(commandContext: CommandContext, commandArgs?: CommandArgs): boolean {\n const args = commandArgs || this.extractArgs(commandContext);\n const content = args.content;\n if (content?.parameters?.hasField(AlarmContentFields.State)) {\n const alarmState = content.parameters.getField(AlarmContentFields.State);\n if (alarmState) {\n return alarmState === AlarmStates.Active;\n }\n }\n return false;\n }\n\n private configureAckAlarmInvalidateCanExecute(commandContext: EntityCommandsUsageContext): void {\n if (commandContext.entityCache && commandContext.invalidateCanExecute) {\n const args = this.extractArgs(commandContext);\n if (args?.content && isNonEmptyGuid(args.entityId)) {\n const alarmInstanceId = args.content.parameters?.getField(AlarmContentFields.AlarmInstanceId);\n\n commandContext.subscriptions.add(\n this.alarmsService.alarmEventReceived$.pipe(untilDestroyed(this)).subscribe((eventArg) => {\n if (args.entityId && eventArg.event.sourceEntity.equals(args.entityId) && (eventArg.event as IAlarmEvent).instanceId === alarmInstanceId) {\n if (eventArg.event.eventType === EventTypes.AlarmAcknowledged || eventArg.event.eventType === EventTypes.AlarmAcknowledgedAlternate) {\n this.updateAlarmInstanceContentState(args.content, AlarmStates.Acked);\n this.invalidateAckRelatedCommandsCanExecute(commandContext);\n }\n\n if (eventArg.event.eventType === EventTypes.AlarmInvestigating) {\n this.updateAlarmInstanceContentState(args.content, AlarmStates.SourceConditionInvestigating);\n commandContext.invalidateCanExecute(AlarmCommands.InvestigateAlarm);\n }\n }\n })\n );\n }\n }\n }\n\n private createAlarmCommandDescriptor(commandId: IGuid, nameResourceId: string, icon: MeltedIcon, requirements?: EntityCommandRequirements, color?: string): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n color,\n groupNameResourceId: 'STE_ENTITY_ALARM',\n groupIcon: MeltedIcon.Alarm,\n requirements,\n };\n }\n\n private executeTrigger(executeCommandData: ExecuteEntityCommandData): void {\n const args = this.extractArgs(executeCommandData.commandContext);\n if (args.entityId) {\n this.alarmsService\n .triggerAsync(args.entityId)\n .then(() => {\n // we only send this toast for the trigger alarm request since the other has visual feedbacks already (if you can ack, you have the instance of the alarm already).\n // the trigger might not be applied due to multiple reasons (i.e. reactivation treshold) and since this is an action to the directory in the end\n // we don't know if it has worked or not. So simply tell that the request has been sent as a visual feedback.\n const notification = this.translateService.instant('STE_ACTION_TRIGGER_ALARM_REQUEST_SENT') as string;\n this.toastService.clear();\n this.toastService.show({ text: notification, flavor: ToastFlavor.Success });\n })\n .fireAndForget();\n }\n executeCommandData.isHandled = true;\n }\n\n private executeAck(executeCommandData: ExecuteEntityCommandData): void {\n this.ackAlarmAsync(executeCommandData.commandContext, AckType.Ack).fireAndForget();\n\n executeCommandData.isHandled = true;\n }\n\n private executeNack(executeCommandData: ExecuteEntityCommandData): void {\n this.ackAlarmAsync(executeCommandData.commandContext, AckType.Nack).fireAndForget();\n\n executeCommandData.isHandled = true;\n }\n\n private executeForceAck(executeCommandData: ExecuteEntityCommandData): void {\n this.ackAlarmAsync(executeCommandData.commandContext, AckType.Force).fireAndForget();\n\n executeCommandData.isHandled = true;\n }\n\n private executeInvestigate(executeCommandData: ExecuteEntityCommandData): void {\n const alarmInstanceInfo = this.extractAlarmInstanceInfo(executeCommandData.commandContext);\n if (alarmInstanceInfo) {\n this.alarmsService.investigateAsync(alarmInstanceInfo.instanceId, alarmInstanceInfo.alarmId).fireAndForget();\n }\n\n executeCommandData.isHandled = true;\n }\n\n private executeShowProcedure(executeCommandData: ExecuteEntityCommandData): void {\n this.executeShowProcedureAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeShowProcedureAsync(commandContext: EntityCommandContext): Promise {\n let procedure = await this.extractAlarmProcedureAsync(commandContext);\n if (procedure) {\n if (procedure.indexOf('https://') < 0 && procedure.indexOf('http://') < 0) {\n procedure = 'http://' + procedure;\n }\n this.window.open(procedure, '_blank');\n }\n }\n\n private extractAlarmInstanceInfo(commandContext: CommandContext): AlarmInstanceInfo | undefined {\n const args = this.extractArgs(commandContext);\n let alarmInstanceInfo: AlarmInstanceInfo | undefined;\n const content = args.content;\n if (content) {\n if (\n content.type.equals(AlarmContentTypes.Instance) &&\n content.parameters &&\n content.parameters.hasField(SharedContentFields.SourceEntityGuid) &&\n content.parameters.hasField(AlarmContentFields.AlarmInstanceId)\n ) {\n alarmInstanceInfo = {\n alarmId: content.parameters.getFieldGuid(SharedContentFields.SourceEntityGuid),\n instanceId: content.parameters.getField(AlarmContentFields.AlarmInstanceId),\n };\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const specificData = args.specificData;\n if (isAlarmInstanceInfo(specificData)) {\n alarmInstanceInfo = specificData;\n }\n }\n return alarmInstanceInfo;\n }\n\n private async extractAlarmProcedureAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const args = commandArgs || this.extractArgs(commandContext);\n let procedure: string | undefined;\n const content = args.content;\n if (content) {\n if (content.type.equals(AlarmContentTypes.Alarm) && content.parameters && content.parameters.hasField(AlarmContentFields.AlarmProcedure)) {\n procedure = content.parameters.getField(AlarmContentFields.AlarmProcedure);\n }\n } else if (args.entity || args.entityId) {\n const alarm = await this.getEntityAsync(AlarmEntity, undefined, args.entity, args.entityId, commandContext.entityCache);\n if (alarm?.enableProcedure) {\n procedure = alarm.procedure;\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const specificData = args.specificData;\n if (isString(specificData)) {\n procedure = specificData;\n }\n }\n\n if (procedure) {\n return procedure;\n }\n }\n\n private invalidateAckRelatedCommandsCanExecute(commandContext: EntityCommandsUsageContext): void {\n commandContext.invalidateCanExecute(AlarmCommands.AcknowledgeAlarm);\n commandContext.invalidateCanExecute(AlarmCommands.AlternateAcknowledgeAlarm);\n commandContext.invalidateCanExecute(AlarmCommands.ForceAcknowledgeAlarm);\n commandContext.invalidateCanExecute(AlarmCommands.InvestigateAlarm);\n }\n\n private async isAckAvailableAsync(commandContext: EntityCommandContext, args?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AlarmCommands.AcknowledgeAlarm, commandContext, args);\n }\n\n private async isForceAckAvailableAsync(commandContext: EntityCommandContext, args?: CommandArgs): Promise {\n const areRequirementsMet = await this.areCommandRequirementsMetAsync(AlarmCommands.ForceAcknowledgeAlarm, commandContext, args);\n if (areRequirementsMet) {\n return this.isUserAdmin;\n }\n return false;\n }\n\n private async isShowProcedureAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n const args = commandArgs || this.extractArgs(commandContext);\n const areRequirementsMet = await this.areCommandRequirementsMetAsync(AlarmCommands.ForceAcknowledgeAlarm, commandContext, args);\n if (areRequirementsMet) {\n const procedure = await this.extractAlarmProcedureAsync(commandContext, args);\n if (procedure) {\n return true;\n }\n }\n return false;\n }\n\n private async isTriggerAvailableAsync(commandContext: EntityCommandContext, args?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(AlarmCommands.TriggerAlarm, commandContext, args);\n }\n\n private updateAlarmInstanceContentState(content: Content | undefined, alarmState: string): void {\n if (content?.type.equals(AlarmContentTypes.Instance) && content.parameters && content.parameters.hasField(AlarmContentFields.State)) {\n content.parameters.setField(AlarmContentFields.State, alarmState);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { SharedModule } from '../shared/shared.module';\nimport { AlarmsTrayComponent } from './components/alarms-tray/alarms-tray.component';\nimport { AlarmsContextWidgetComponent } from './components/alarms-context-widget/alarms-context-widget.component';\nimport { AlarmEventCompactWidgetComponent } from './components/maps/alarm-event-compact-widget/alarm-event-compact-widget.component';\nimport { AlarmEventExpandWidgetComponent } from './components/maps/alarm-event-expand-widget/alarm-event-expand-widget.component';\nimport { AlarmActionsWidgetComponent } from './components/widgets/alarm-actions-widget/alarm-actions-widget.component';\nimport { AlarmInstanceInfoWidgetComponent } from './components/widgets/alarm-instance-info-widget/alarm-instance-info-widget.component';\nimport { AlarmCommandProvider } from './services/alarm-command-provider';\nimport { AlarmsService } from './services/alarms.service';\nimport { AlarmInstanceWidgetBaseComponent } from './components/alarm-instance-widget-base.component';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n imports: [CommonModule, SharedModule, GenAngularModule],\n declarations: [\n AlarmsTrayComponent,\n AlarmsContextWidgetComponent,\n AlarmEventCompactWidgetComponent,\n AlarmEventExpandWidgetComponent,\n AlarmActionsWidgetComponent,\n AlarmInstanceInfoWidgetComponent,\n AlarmInstanceWidgetBaseComponent,\n ],\n providers: [AlarmCommandProvider, AlarmsService],\n})\nexport class AlarmsModule {\n constructor(_alarmCommandHandlersService: AlarmCommandProvider) {}\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class OptionTypes {\n public static readonly clearanceOptions: IGuid = SafeGuid.parse('25dccd5a-7ad5-49b7-a5d0-da482288d765');\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport class ClearanceFeatures {\n public static readonly clearanceFeature = SafeGuid.parse('e0e1c76a-66c9-41f9-aa45-c315fd6d162e');\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { SafeGuid } from 'safeguid';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes, OptionSubSections } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SettingsService, USER_SETTINGS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { TextFlavor } from '@genetec/gelato-angular';\nimport { OptionTypes } from '../../enumerations/option-types';\nimport { ClearanceFeatures } from '../../enumerations/clearance-features';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-clearance-options',\n templateUrl: './clearance-options.component.html',\n styleUrls: ['./clearance-options.component.scss'],\n})\n@InternalPluginDescriptor({\n type: ClearanceOptionsComponent,\n pluginTypes: [PluginTypes.Option],\n exposure: {\n id: ClearanceOptionsComponent.pluginId,\n subSection: OptionSubSections.Advanced,\n },\n isSupported: () => true,\n requirements: {\n features: [ClearanceFeatures.clearanceFeature],\n },\n})\nexport class ClearanceOptionsComponent extends TrackedComponent implements OnInit {\n public static readonly pluginId = new SafeGuid('4d33e967-0b87-4a21-a769-9bcb6c346b1f');\n\n public TextFlavor = TextFlavor;\n public currentSettings = '';\n\n constructor(private translateService: TranslateService, trackingService: TrackingService, @Inject(USER_SETTINGS_SERVICE) public userSettingsService: SettingsService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const clearanceSettings = this.userSettingsService.get(OptionTypes.clearanceOptions, 'ClearanceConfiguration');\n if (clearanceSettings) {\n this.currentSettings = clearanceSettings;\n }\n }\n\n public settingsUpdated(text: string): void {\n this.userSettingsService.set(OptionTypes.clearanceOptions, 'ClearanceConfiguration', text);\n }\n}\n","{{ 'STE_TITLE_CLEARANCE_OPTIONS' | translate }}\n\n
    \n \n {{ 'STE_LABEL_CONFIGURATION_FILE' | translate }}\n {{ 'STE_MESSAGE_CLEARANCE_CONFIGURATION_FILE' | translate }}\n \n
    \n","/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// \n// Generated using the NSwag toolchain v13.11.1.0 (NJsonSchema v10.4.4.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IClearanceClient {\n /**\n * Export a video clip to Clearance\n * @param body The export parameters + clearance upload properties\n */\n pushVideoEvidenceToClearance(body: ExportToClearanceRequest): Observable;\n}\n\n@Injectable()\nexport class ClearanceClient implements IClearanceClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Export a video clip to Clearance\n * @param body The export parameters + clearance upload properties\n */\n pushVideoEvidenceToClearance(body: ExportToClearanceRequest): Observable {\n let url_ = this.baseUrl + \"/Api/Clearance/ExportVideo\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processPushVideoEvidenceToClearance(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processPushVideoEvidenceToClearance(response_);\n } catch (e) {\n return >_observableThrow(e);\n }\n } else\n return >_observableThrow(response_);\n }));\n }\n\n protected processPushVideoEvidenceToClearance(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response).error instanceof Blob ? (response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n result400![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result401: any = null;\n let resultData401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result401 = resultData401 !== undefined ?resultData401 : null;\n return throwException(\"Unauthorized\", status, _responseText, _headers, result401);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ?resultData404 : null;\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status === 412) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result412: any = null;\n let resultData412 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result412 = resultData412 !== undefined ?resultData412 : null;\n return throwException(\"Client Error\", status, _responseText, _headers, result412);\n }));\n } else if (status === 424) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Client Error\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ?resultData500 : null;\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null);\n }\n}\n\nexport class ExportRequest implements IExportRequest {\n cameraId!: IGuid;\n timeRange?: SerializableDateTimeSpan;\n alwaysZip?: boolean;\n signalRConnectionId?: string | null;\n\n protected _discriminator: string;\n\n constructor(data?: IExportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.alwaysZip = false;\n }\n this._discriminator = \"ExportRequest\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.cameraId = _guidImplementation.from(_data[\"cameraId\"]) !== undefined ?_guidImplementation.from(_data[\"cameraId\"]) : null;\n this.timeRange = _data[\"timeRange\"] ? SerializableDateTimeSpan.fromJS(_data[\"timeRange\"]) : null;\n this.alwaysZip = _data[\"alwaysZip\"] !== undefined ?_data[\"alwaysZip\"] : false;\n this.signalRConnectionId = _data[\"signalRConnectionId\"] !== undefined ?_data[\"signalRConnectionId\"] : null;\n }\n }\n\n static fromJS(data: any): ExportRequest {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportG64Request, Genetec.WebApp.Video\") {\n let result = new ExportG64Request();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportG64XRequest, Genetec.WebApp.Video\") {\n let result = new ExportG64XRequest();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportMp4Request, Genetec.WebApp.Video\") {\n let result = new ExportMp4Request();\n result.init(data);\n return result;\n }\n if (data[\"$type\"] === \"Genetec.WebApp.Video.Models.ExportAsfRequest, Genetec.WebApp.Video\") {\n let result = new ExportAsfRequest();\n result.init(data);\n return result;\n }\n let result = new ExportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator; \n data[\"cameraId\"] = this.cameraId?.toString() !== undefined ? this.cameraId?.toString() : null;\n data[\"timeRange\"] = this.timeRange ? this.timeRange.toJSON() : null;\n data[\"alwaysZip\"] = this.alwaysZip !== undefined ? this.alwaysZip : null;\n data[\"signalRConnectionId\"] = this.signalRConnectionId !== undefined ? this.signalRConnectionId : null;\n return data; \n }\n\n clone(): ExportRequest {\n const json = this.toJSON();\n let result = new ExportRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportRequest {\n cameraId: IGuid;\n timeRange?: SerializableDateTimeSpan;\n alwaysZip?: boolean;\n signalRConnectionId?: string | null;\n}\n\nexport class ExportAsfRequest extends ExportRequest implements IExportAsfRequest {\n excludeAudio?: boolean;\n includeDateTime?: boolean;\n includeCameraName?: boolean;\n\n constructor(data?: IExportAsfRequest) {\n super(data);\n if (!data) {\n this.excludeAudio = true;\n this.includeDateTime = false;\n this.includeCameraName = false;\n }\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportAsfRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.excludeAudio = _data[\"excludeAudio\"] !== undefined ?_data[\"excludeAudio\"] : true;\n this.includeDateTime = _data[\"includeDateTime\"] !== undefined ?_data[\"includeDateTime\"] : false;\n this.includeCameraName = _data[\"includeCameraName\"] !== undefined ?_data[\"includeCameraName\"] : false;\n }\n }\n\n static fromJS(data: any): ExportAsfRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportAsfRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"excludeAudio\"] = this.excludeAudio !== undefined ? this.excludeAudio : null;\n data[\"includeDateTime\"] = this.includeDateTime !== undefined ? this.includeDateTime : null;\n data[\"includeCameraName\"] = this.includeCameraName !== undefined ? this.includeCameraName : null;\n super.toJSON(data);\n return data; \n }\n\n clone(): ExportAsfRequest {\n const json = this.toJSON();\n let result = new ExportAsfRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportAsfRequest extends IExportRequest {\n excludeAudio?: boolean;\n includeDateTime?: boolean;\n includeCameraName?: boolean;\n}\n\nexport class ExportG64Request extends ExportRequest implements IExportG64Request {\n encryptionKey?: string | null;\n\n constructor(data?: IExportG64Request) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportG64Request, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.encryptionKey = _data[\"encryptionKey\"] !== undefined ?_data[\"encryptionKey\"] : null;\n }\n }\n\n static fromJS(data: any): ExportG64Request {\n data = typeof data === 'object' ? data : {};\n let result = new ExportG64Request();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"encryptionKey\"] = this.encryptionKey !== undefined ? this.encryptionKey : null;\n super.toJSON(data);\n return data; \n }\n\n clone(): ExportG64Request {\n const json = this.toJSON();\n let result = new ExportG64Request();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportG64Request extends IExportRequest {\n encryptionKey?: string | null;\n}\n\nexport class ExportG64XRequest extends ExportRequest implements IExportG64XRequest {\n encryptionKey?: string | null;\n\n constructor(data?: IExportG64XRequest) {\n super(data);\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportG64XRequest, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.encryptionKey = _data[\"encryptionKey\"] !== undefined ?_data[\"encryptionKey\"] : null;\n }\n }\n\n static fromJS(data: any): ExportG64XRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportG64XRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"encryptionKey\"] = this.encryptionKey !== undefined ? this.encryptionKey : null;\n super.toJSON(data);\n return data; \n }\n\n clone(): ExportG64XRequest {\n const json = this.toJSON();\n let result = new ExportG64XRequest();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportG64XRequest extends IExportRequest {\n encryptionKey?: string | null;\n}\n\nexport class ExportMp4Request extends ExportRequest implements IExportMp4Request {\n excludeAudio?: boolean;\n\n constructor(data?: IExportMp4Request) {\n super(data);\n if (!data) {\n this.excludeAudio = true;\n }\n this._discriminator = \"Genetec.WebApp.Video.Models.ExportMp4Request, Genetec.WebApp.Video\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n this.excludeAudio = _data[\"excludeAudio\"] !== undefined ?_data[\"excludeAudio\"] : true;\n }\n }\n\n static fromJS(data: any): ExportMp4Request {\n data = typeof data === 'object' ? data : {};\n let result = new ExportMp4Request();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"excludeAudio\"] = this.excludeAudio !== undefined ? this.excludeAudio : null;\n super.toJSON(data);\n return data; \n }\n\n clone(): ExportMp4Request {\n const json = this.toJSON();\n let result = new ExportMp4Request();\n result.init(json);\n return result;\n }\n}\n\nexport interface IExportMp4Request extends IExportRequest {\n excludeAudio?: boolean;\n}\n\n/** A request to export a video snippet to clearance */\nexport class ExportToClearanceRequest implements IExportToClearanceRequest {\n /** The name of the evidence */\n evidenceName!: string;\n videoExportProperties!: ExportRequest;\n /** The case id to export to */\n caseId?: number | null;\n /** The description of the evidence */\n description?: string | null;\n /** The category to apply to the evidence */\n categoryId?: string | null;\n\n constructor(data?: IExportToClearanceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.videoExportProperties = new ExportRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.evidenceName = _data[\"evidenceName\"] !== undefined ?_data[\"evidenceName\"] : null;\n this.videoExportProperties = _data[\"videoExportProperties\"] ? ExportRequest.fromJS(_data[\"videoExportProperties\"]) : new ExportRequest();\n this.caseId = _data[\"caseId\"] !== undefined ?_data[\"caseId\"] : null;\n this.description = _data[\"description\"] !== undefined ?_data[\"description\"] : null;\n this.categoryId = _data[\"categoryId\"] !== undefined ?_data[\"categoryId\"] : null;\n }\n }\n\n static fromJS(data: any): ExportToClearanceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportToClearanceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"evidenceName\"] = this.evidenceName !== undefined ? this.evidenceName : null;\n data[\"videoExportProperties\"] = this.videoExportProperties ? this.videoExportProperties.toJSON() : null;\n data[\"caseId\"] = this.caseId !== undefined ? this.caseId : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n data[\"categoryId\"] = this.categoryId !== undefined ? this.categoryId : null;\n return data; \n }\n\n clone(): ExportToClearanceRequest {\n const json = this.toJSON();\n let result = new ExportToClearanceRequest();\n result.init(json);\n return result;\n }\n}\n\n/** A request to export a video snippet to clearance */\nexport interface IExportToClearanceRequest {\n /** The name of the evidence */\n evidenceName: string;\n videoExportProperties: ExportRequest;\n /** The case id to export to */\n caseId?: number | null;\n /** The description of the evidence */\n description?: string | null;\n /** The category to apply to the evidence */\n categoryId?: string | null;\n}\n\nexport class ModelError implements IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n\n constructor(data?: IModelError) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.exception = _data[\"exception\"] !== undefined ?_data[\"exception\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ?_data[\"errorMessage\"] : null;\n }\n }\n\n static fromJS(data: any): ModelError {\n data = typeof data === 'object' ? data : {};\n let result = new ModelError();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"exception\"] = this.exception !== undefined ? this.exception : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n return data; \n }\n\n clone(): ModelError {\n const json = this.toJSON();\n let result = new ModelError();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n}\n\nexport class ModelStateEntry implements IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n readonly errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n readonly isContainerNode?: boolean;\n readonly children?: ModelStateEntry[] | null;\n\n protected _discriminator: string;\n\n constructor(data?: IModelStateEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"ModelStateEntry\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.rawValue = _data[\"rawValue\"] !== undefined ?_data[\"rawValue\"] : null;\n this.attemptedValue = _data[\"attemptedValue\"] !== undefined ?_data[\"attemptedValue\"] : null;\n if (Array.isArray(_data[\"errors\"])) {\n (this).errors = [] as any;\n for (let item of _data[\"errors\"])\n (this).errors!.push(ModelError.fromJS(item));\n }\n this.validationState = _data[\"validationState\"] !== undefined ?_data[\"validationState\"] : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ?_data[\"isContainerNode\"] : null;\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ModelStateEntry {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\") {\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n let result = new ModelStateEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator; \n data[\"rawValue\"] = this.rawValue !== undefined ? this.rawValue : null;\n data[\"attemptedValue\"] = this.attemptedValue !== undefined ? this.attemptedValue : null;\n if (Array.isArray(this.errors)) {\n data[\"errors\"] = [];\n for (let item of this.errors)\n data[\"errors\"].push(item.toJSON());\n }\n data[\"validationState\"] = this.validationState !== undefined ? this.validationState : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n return data; \n }\n\n clone(): ModelStateEntry {\n const json = this.toJSON();\n let result = new ModelStateEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n isContainerNode?: boolean;\n children?: ModelStateEntry[] | null;\n}\n\nexport class ModelStateNode extends ModelStateEntry implements IModelStateNode {\n childNodes?: ModelStateNode[] | null;\n readonly children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n readonly isContainerNode?: boolean;\n\n constructor(data?: IModelStateNode) {\n super(data);\n this._discriminator = \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"childNodes\"])) {\n this.childNodes = [] as any;\n for (let item of _data[\"childNodes\"])\n this.childNodes!.push(ModelStateNode.fromJS(item));\n }\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n this.key = _data[\"key\"] !== undefined ?_data[\"key\"] : null;\n this.subKey = _data[\"subKey\"] ? StringSegment.fromJS(_data[\"subKey\"]) : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ?_data[\"isContainerNode\"] : null;\n }\n }\n\n static fromJS(data: any): ModelStateNode {\n data = typeof data === 'object' ? data : {};\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.childNodes)) {\n data[\"childNodes\"] = [];\n for (let item of this.childNodes)\n data[\"childNodes\"].push(item.toJSON());\n }\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n data[\"key\"] = this.key !== undefined ? this.key : null;\n data[\"subKey\"] = this.subKey ? this.subKey.toJSON() : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n super.toJSON(data);\n return data; \n }\n\n clone(): ModelStateNode {\n const json = this.toJSON();\n let result = new ModelStateNode();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateNode extends IModelStateEntry {\n childNodes?: ModelStateNode[] | null;\n children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n isContainerNode?: boolean;\n}\n\nexport enum ModelValidationState {\n _0 = 0,\n _1 = 1,\n _2 = 2,\n _3 = 3,\n}\n\nexport enum PushEvidenceResultCode {\n _0 = 0,\n _1 = 1,\n _2 = 2,\n _3 = 3,\n _4 = 4,\n _5 = 5,\n _6 = 6,\n _7 = 7,\n _8 = 8,\n _9 = 9,\n _10 = 10,\n}\n\nexport class SerializableDateTimeSpan implements ISerializableDateTimeSpan {\n start!: string;\n end!: string;\n\n constructor(data?: ISerializableDateTimeSpan) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.start = _data[\"start\"] !== undefined ?_data[\"start\"] : null;\n this.end = _data[\"end\"] !== undefined ?_data[\"end\"] : null;\n }\n }\n\n static fromJS(data: any): SerializableDateTimeSpan {\n data = typeof data === 'object' ? data : {};\n let result = new SerializableDateTimeSpan();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"start\"] = this.start !== undefined ? this.start : null;\n data[\"end\"] = this.end !== undefined ? this.end : null;\n return data; \n }\n\n clone(): SerializableDateTimeSpan {\n const json = this.toJSON();\n let result = new SerializableDateTimeSpan();\n result.init(json);\n return result;\n }\n}\n\nexport interface ISerializableDateTimeSpan {\n start: string;\n end: string;\n}\n\nexport class StringSegment implements IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n readonly value?: string | null;\n readonly hasValue?: boolean;\n\n constructor(data?: IStringSegment) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.buffer = _data[\"buffer\"] !== undefined ?_data[\"buffer\"] : null;\n this.offset = _data[\"offset\"] !== undefined ?_data[\"offset\"] : null;\n this.length = _data[\"length\"] !== undefined ?_data[\"length\"] : null;\n (this).value = _data[\"value\"] !== undefined ?_data[\"value\"] : null;\n (this).hasValue = _data[\"hasValue\"] !== undefined ?_data[\"hasValue\"] : null;\n }\n }\n\n static fromJS(data: any): StringSegment {\n data = typeof data === 'object' ? data : {};\n let result = new StringSegment();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"buffer\"] = this.buffer !== undefined ? this.buffer : null;\n data[\"offset\"] = this.offset !== undefined ? this.offset : null;\n data[\"length\"] = this.length !== undefined ? this.length : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n data[\"hasValue\"] = this.hasValue !== undefined ? this.hasValue : null;\n return data; \n }\n\n clone(): StringSegment {\n const json = this.toJSON();\n let result = new StringSegment();\n result.init(json);\n return result;\n }\n}\n\nexport interface IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n value?: string | null;\n hasValue?: boolean;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","import { GenAngularModule } from '@genetec/gelato-angular';\nimport { Router } from '@angular/router';\nimport { Injector, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GetBaseUriForCodeGen } from '@utilities/base-uri-getter';\nimport { SharedModule } from '@shared/shared.module';\nimport { ClearanceOptionsComponent } from './components/options/clearance-options.component';\nimport { baseUrl, ClearanceClient } from './api/api';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n imports: [CommonModule, SharedModule, GenAngularModule],\n declarations: [ClearanceOptionsComponent],\n providers: [\n ClearanceClient,\n {\n provide: baseUrl,\n deps: [],\n useFactory: GetBaseUriForCodeGen,\n },\n ],\n exports: [],\n})\nexport class ClearanceModule {\n //#region Constructors\n\n constructor(router: Router, injector: Injector) {}\n\n //#endregion\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface ICorrelationClient {\n /**\n * Retrive the registered data types in the system\n * @return Success\n */\n listDataTypes(): Observable;\n /**\n * Retrieve the correlation registrations, optionally limiting to just a sub-set\n * @param body (optional) \n * @return Success\n */\n getRegistrations(body?: IGuid[] | undefined): Observable;\n /**\n * Execute a correlation query for formatted data\n * @return Success\n */\n query(body: CorrelationQueryArguments): Observable;\n /**\n * Load the \"first\" extended fields for a collection of datums.\n * @param body (optional) \n * @return Success\n */\n loadExtendedImages(body?: string[] | undefined): Observable;\n /**\n * Compute an aggregation operation\n * @param body (optional) The aggregation query arguments\n * @return Success\n */\n computeAggregation(body?: AggregationQueryFilter | undefined): Observable;\n}\n\n@Injectable()\nexport class CorrelationClient implements ICorrelationClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * Retrive the registered data types in the system\n * @return Success\n */\n listDataTypes(): Observable {\n let url_ = this.baseUrl + \"/Api/Correlation/DataTypes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processListDataTypes(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processListDataTypes(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processListDataTypes(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(DataTypeDisplayModel.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve the correlation registrations, optionally limiting to just a sub-set\n * @param body (optional) \n * @return Success\n */\n getRegistrations(body?: IGuid[] | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Correlation/Registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetRegistrations(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetRegistrations(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRegistrations(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(LightDataSourceRegistration.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Execute a correlation query for formatted data\n * @return Success\n */\n query(body: CorrelationQueryArguments): Observable {\n let url_ = this.baseUrl + \"/Api/Correlation/Query\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processQuery(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processQuery(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processQuery(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CorrelationQueryResult.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = resultData500 !== undefined ? resultData500 : null;\n \n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Load the \"first\" extended fields for a collection of datums.\n * @param body (optional) \n * @return Success\n */\n loadExtendedImages(body?: string[] | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Correlation/ExtendedImages\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processLoadExtendedImages(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processLoadExtendedImages(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLoadExtendedImages(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(LightCorrelationExtendedFieldResult.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Compute an aggregation operation\n * @param body (optional) The aggregation query arguments\n * @return Success\n */\n computeAggregation(body?: AggregationQueryFilter | undefined): Observable {\n let url_ = this.baseUrl + \"/Api/Correlation/Aggregate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processComputeAggregation(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processComputeAggregation(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processComputeAggregation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(AggregationChartable.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (resultData400) {\n result400 = {} as any;\n for (let key in resultData400) {\n if (resultData400.hasOwnProperty(key))\n (result400)![key] = resultData400[key] ? ModelStateEntry.fromJS(resultData400[key]) : new ModelStateEntry();\n }\n }\n else {\n result400 = null;\n }\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IDataIngestionClient {\n /**\n * List the available types for ingestion\n * @return Success\n */\n listIngestionTypes(): Observable;\n /**\n * Retrieve a specific schema\n * @param role The ingestion role\n * @param datatype The data type on the specific role\n * @return Success\n */\n getSchema(role: IGuid, datatype: IGuid): Observable;\n /**\n * Retrieve a record given the key properties\n * @return Success\n */\n getRecord(role: IGuid, datatype: IGuid, id: string): Observable;\n /**\n * Add a record\n * @param body The record to add\n * @return Success\n */\n addRecord(body: DataRow): Observable;\n /**\n * Update a given record\n * @param body The record to update\n * @return Success\n */\n updateRecord(body: DataRow): Observable;\n /**\n * Delete a given record\n * @return Success\n */\n deleteRecord(body: DatumKey): Observable;\n}\n\n@Injectable()\nexport class DataIngestionClient implements IDataIngestionClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * List the available types for ingestion\n * @return Success\n */\n listIngestionTypes(): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/IngestionTypes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processListIngestionTypes(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processListIngestionTypes(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processListIngestionTypes(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(IngestionType.fromJS(item));\n }\n else { \n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve a specific schema\n * @param role The ingestion role\n * @param datatype The data type on the specific role\n * @return Success\n */\n getSchema(role: IGuid, datatype: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/Schema/{role}/{datatype}\";\n if (role === undefined || role === null)\n throw new Error(\"The parameter 'role' must be defined.\");\n url_ = url_.replace(\"{role}\", encodeURIComponent(\"\" + role));\n if (datatype === undefined || datatype === null)\n throw new Error(\"The parameter 'datatype' must be defined.\");\n url_ = url_.replace(\"{datatype}\", encodeURIComponent(\"\" + datatype));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetSchema(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetSchema(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSchema(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DataSchema.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Retrieve a record given the key properties\n * @return Success\n */\n getRecord(role: IGuid, datatype: IGuid, id: string): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/Record/{role}/{datatype}/{id}\";\n if (role === undefined || role === null)\n throw new Error(\"The parameter 'role' must be defined.\");\n url_ = url_.replace(\"{role}\", encodeURIComponent(\"\" + role));\n if (datatype === undefined || datatype === null)\n throw new Error(\"The parameter 'datatype' must be defined.\");\n url_ = url_.replace(\"{datatype}\", encodeURIComponent(\"\" + datatype));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetRecord(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetRecord(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRecord(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DataRow.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ? resultData404 : null;\n \n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Add a record\n * @param body The record to add\n * @return Success\n */\n addRecord(body: DataRow): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/Record\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processAddRecord(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processAddRecord(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddRecord(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ? resultData404 : null;\n \n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Update a given record\n * @param body The record to update\n * @return Success\n */\n updateRecord(body: DataRow): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/Record\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processUpdateRecord(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processUpdateRecord(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateRecord(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ? resultData404 : null;\n \n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * Delete a given record\n * @return Success\n */\n deleteRecord(body: DatumKey): Observable {\n let url_ = this.baseUrl + \"/Api/DataIngestion/Record\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json-patch+json\",\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processDeleteRecord(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processDeleteRecord(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteRecord(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = resultData404 !== undefined ? resultData404 : null;\n \n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 500) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Server Error\", status, _responseText, _headers);\n }));\n } else if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 408) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Request Timeout\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class AggregationChartable implements IAggregationChartable {\n formattedName!: string;\n value!: number;\n group!: GroupAggregationResult;\n\n constructor(data?: IAggregationChartable) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.group = new GroupAggregationResult();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.formattedName = _data[\"formattedName\"] !== undefined ? _data[\"formattedName\"] : null;\n this.value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n this.group = _data[\"group\"] ? GroupAggregationResult.fromJS(_data[\"group\"]) : new GroupAggregationResult();\n }\n }\n\n static fromJS(data: any): AggregationChartable {\n data = typeof data === 'object' ? data : {};\n let result = new AggregationChartable();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"formattedName\"] = this.formattedName !== undefined ? this.formattedName : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n data[\"group\"] = this.group ? this.group.toJSON() : null;\n return data;\n }\n\n clone(): AggregationChartable {\n const json = this.toJSON();\n let result = new AggregationChartable();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAggregationChartable {\n formattedName: string;\n value: number;\n group: GroupAggregationResult;\n}\n\nexport enum AggregationFieldType {\n Id = \"Id\",\n Time = \"Time\",\n Latitude = \"Latitude\",\n Longitude = \"Longitude\",\n Custom = \"Custom\",\n}\n\nexport enum AggregationGrouping {\n None = \"None\",\n Year = \"Year\",\n Month = \"Month\",\n Day = \"Day\",\n Hour = \"Hour\",\n Minute = \"Minute\",\n Custom = \"Custom\",\n DataType = \"DataType\",\n SourceRole = \"SourceRole\",\n}\n\nexport class AggregationQueryFilter implements IAggregationQueryFilter {\n aggregationType!: AggregationType;\n aggregationFieldType!: AggregationFieldType;\n customAggregationField?: string | null;\n aggregationGroup!: AggregationGrouping;\n customAggregationGroup?: string | null;\n dataTypes!: IGuid[];\n centerPoint?: GeoCoordinate;\n referenceTimeUtc?: string;\n radius?: number | null;\n timeWindow?: string | null;\n additionalParameters?: LightCorrelationSearchParameter[] | null;\n\n constructor(data?: IAggregationQueryFilter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dataTypes = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.aggregationType = _data[\"aggregationType\"] !== undefined ? _data[\"aggregationType\"] : null;\n this.aggregationFieldType = _data[\"aggregationFieldType\"] !== undefined ? _data[\"aggregationFieldType\"] : null;\n this.customAggregationField = _data[\"customAggregationField\"] !== undefined ? _data[\"customAggregationField\"] : null;\n this.aggregationGroup = _data[\"aggregationGroup\"] !== undefined ? _data[\"aggregationGroup\"] : null;\n this.customAggregationGroup = _data[\"customAggregationGroup\"] !== undefined ? _data[\"customAggregationGroup\"] : null;\n if (Array.isArray(_data[\"dataTypes\"])) {\n this.dataTypes = [] as any;\n for (let item of _data[\"dataTypes\"])\n this.dataTypes!.push(_guidConverters.toGuid(item));\n }\n else { \n this.dataTypes = null;\n }\n this.centerPoint = _data[\"centerPoint\"] ? GeoCoordinate.fromJS(_data[\"centerPoint\"]) : null;\n this.referenceTimeUtc = _data[\"referenceTimeUtc\"] !== undefined ? _data[\"referenceTimeUtc\"] : null;\n this.radius = _data[\"radius\"] !== undefined ? _data[\"radius\"] : null;\n this.timeWindow = _data[\"timeWindow\"] !== undefined ? _data[\"timeWindow\"] : null;\n if (Array.isArray(_data[\"additionalParameters\"])) {\n this.additionalParameters = [] as any;\n for (let item of _data[\"additionalParameters\"])\n this.additionalParameters!.push(LightCorrelationSearchParameter.fromJS(item));\n }\n else { \n this.additionalParameters = null;\n }\n }\n }\n\n static fromJS(data: any): AggregationQueryFilter {\n data = typeof data === 'object' ? data : {};\n let result = new AggregationQueryFilter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"aggregationType\"] = this.aggregationType !== undefined ? this.aggregationType : null;\n data[\"aggregationFieldType\"] = this.aggregationFieldType !== undefined ? this.aggregationFieldType : null;\n data[\"customAggregationField\"] = this.customAggregationField !== undefined ? this.customAggregationField : null;\n data[\"aggregationGroup\"] = this.aggregationGroup !== undefined ? this.aggregationGroup : null;\n data[\"customAggregationGroup\"] = this.customAggregationGroup !== undefined ? this.customAggregationGroup : null;\n if (Array.isArray(this.dataTypes)) {\n data[\"dataTypes\"] = [];\n for (let item of this.dataTypes)\n data[\"dataTypes\"].push(item);\n }\n data[\"centerPoint\"] = this.centerPoint ? this.centerPoint.toJSON() : null;\n data[\"referenceTimeUtc\"] = this.referenceTimeUtc !== undefined ? this.referenceTimeUtc : null;\n data[\"radius\"] = this.radius !== undefined ? this.radius : null;\n data[\"timeWindow\"] = this.timeWindow !== undefined ? this.timeWindow : null;\n if (Array.isArray(this.additionalParameters)) {\n data[\"additionalParameters\"] = [];\n for (let item of this.additionalParameters)\n data[\"additionalParameters\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): AggregationQueryFilter {\n const json = this.toJSON();\n let result = new AggregationQueryFilter();\n result.init(json);\n return result;\n }\n}\n\nexport interface IAggregationQueryFilter {\n aggregationType: AggregationType;\n aggregationFieldType: AggregationFieldType;\n customAggregationField?: string | null;\n aggregationGroup: AggregationGrouping;\n customAggregationGroup?: string | null;\n dataTypes: IGuid[];\n centerPoint?: GeoCoordinate;\n referenceTimeUtc?: string;\n radius?: number | null;\n timeWindow?: string | null;\n additionalParameters?: LightCorrelationSearchParameter[] | null;\n}\n\nexport enum AggregationType {\n Count = \"Count\",\n CountDistinct = \"CountDistinct\",\n Average = \"Average\",\n Maximum = \"Maximum\",\n Minimum = \"Minimum\",\n StandardDeviation = \"StandardDeviation\",\n Sum = \"Sum\",\n Variance = \"Variance\",\n Median = \"Median\",\n}\n\nexport class CorrelationQueryArguments implements ICorrelationQueryArguments {\n locationFilter!: LocationFilter;\n dataTypes!: IGuid[];\n parameters?: LightCorrelationSearchParameter[] | null;\n startTime?: string | null;\n endTime?: string | null;\n maxResults?: number | null;\n\n constructor(data?: ICorrelationQueryArguments) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.locationFilter = new LocationFilter();\n this.dataTypes = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.locationFilter = _data[\"locationFilter\"] ? LocationFilter.fromJS(_data[\"locationFilter\"]) : new LocationFilter();\n if (Array.isArray(_data[\"dataTypes\"])) {\n this.dataTypes = [] as any;\n for (let item of _data[\"dataTypes\"])\n this.dataTypes!.push(_guidConverters.toGuid(item));\n }\n else { \n this.dataTypes = null;\n }\n if (Array.isArray(_data[\"parameters\"])) {\n this.parameters = [] as any;\n for (let item of _data[\"parameters\"])\n this.parameters!.push(LightCorrelationSearchParameter.fromJS(item));\n }\n else { \n this.parameters = null;\n }\n this.startTime = _data[\"startTime\"] !== undefined ? _data[\"startTime\"] : null;\n this.endTime = _data[\"endTime\"] !== undefined ? _data[\"endTime\"] : null;\n this.maxResults = _data[\"maxResults\"] !== undefined ? _data[\"maxResults\"] : null;\n }\n }\n\n static fromJS(data: any): CorrelationQueryArguments {\n data = typeof data === 'object' ? data : {};\n let result = new CorrelationQueryArguments();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"locationFilter\"] = this.locationFilter ? this.locationFilter.toJSON() : null;\n if (Array.isArray(this.dataTypes)) {\n data[\"dataTypes\"] = [];\n for (let item of this.dataTypes)\n data[\"dataTypes\"].push(item);\n }\n if (Array.isArray(this.parameters)) {\n data[\"parameters\"] = [];\n for (let item of this.parameters)\n data[\"parameters\"].push(item.toJSON());\n }\n data[\"startTime\"] = this.startTime !== undefined ? this.startTime : null;\n data[\"endTime\"] = this.endTime !== undefined ? this.endTime : null;\n data[\"maxResults\"] = this.maxResults !== undefined ? this.maxResults : null;\n return data;\n }\n\n clone(): CorrelationQueryArguments {\n const json = this.toJSON();\n let result = new CorrelationQueryArguments();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICorrelationQueryArguments {\n locationFilter: LocationFilter;\n dataTypes: IGuid[];\n parameters?: LightCorrelationSearchParameter[] | null;\n startTime?: string | null;\n endTime?: string | null;\n maxResults?: number | null;\n}\n\nexport class CorrelationQueryResult implements ICorrelationQueryResult {\n successful!: boolean;\n errorSeverity!: ErrorSeverity;\n error?: string | null;\n errorMessage?: string | null;\n source!: IGuid;\n lastResult!: boolean;\n items!: CorrelationQueryResultItem[];\n\n constructor(data?: ICorrelationQueryResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.items = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.successful = _data[\"successful\"] !== undefined ? _data[\"successful\"] : null;\n this.errorSeverity = _data[\"errorSeverity\"] !== undefined ? _data[\"errorSeverity\"] : null;\n this.error = _data[\"error\"] !== undefined ? _data[\"error\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ? _data[\"errorMessage\"] : null;\n this.source = _guidImplementation.from(_data[\"source\"]) !== undefined ? _guidImplementation.from(_data[\"source\"]) : null;\n this.lastResult = _data[\"lastResult\"] !== undefined ? _data[\"lastResult\"] : null;\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(CorrelationQueryResultItem.fromJS(item));\n }\n else { \n this.items = null;\n }\n }\n }\n\n static fromJS(data: any): CorrelationQueryResult {\n data = typeof data === 'object' ? data : {};\n let result = new CorrelationQueryResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"successful\"] = this.successful !== undefined ? this.successful : null;\n data[\"errorSeverity\"] = this.errorSeverity !== undefined ? this.errorSeverity : null;\n data[\"error\"] = this.error !== undefined ? this.error : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n data[\"source\"] = this.source?.toString() !== undefined ? this.source?.toString() : null;\n data[\"lastResult\"] = this.lastResult !== undefined ? this.lastResult : null;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): CorrelationQueryResult {\n const json = this.toJSON();\n let result = new CorrelationQueryResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICorrelationQueryResult {\n successful: boolean;\n errorSeverity: ErrorSeverity;\n error?: string | null;\n errorMessage?: string | null;\n source: IGuid;\n lastResult: boolean;\n items: CorrelationQueryResultItem[];\n}\n\nexport class CorrelationQueryResultItem implements ICorrelationQueryResultItem {\n sourceId!: string;\n latitude!: number;\n longitude!: number;\n timestamp!: string;\n hasThumbnailImage!: boolean;\n sourceRoleName?: string | null;\n dataTypeName?: string | null;\n title?: string | null;\n description?: string | null;\n backgroundColor?: string | null;\n reportColor?: string | null;\n gelatoIcon?: string | null;\n iconColor?: string | null;\n customIcon?: string | null;\n fields?: CorrelationQueryResultItemField[] | null;\n\n constructor(data?: ICorrelationQueryResultItem) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sourceId = _data[\"sourceId\"] !== undefined ? _data[\"sourceId\"] : null;\n this.latitude = _data[\"latitude\"] !== undefined ? _data[\"latitude\"] : null;\n this.longitude = _data[\"longitude\"] !== undefined ? _data[\"longitude\"] : null;\n this.timestamp = _data[\"timestamp\"] !== undefined ? _data[\"timestamp\"] : null;\n this.hasThumbnailImage = _data[\"hasThumbnailImage\"] !== undefined ? _data[\"hasThumbnailImage\"] : null;\n this.sourceRoleName = _data[\"sourceRoleName\"] !== undefined ? _data[\"sourceRoleName\"] : null;\n this.dataTypeName = _data[\"dataTypeName\"] !== undefined ? _data[\"dataTypeName\"] : null;\n this.title = _data[\"title\"] !== undefined ? _data[\"title\"] : null;\n this.description = _data[\"description\"] !== undefined ? _data[\"description\"] : null;\n this.backgroundColor = _data[\"backgroundColor\"] !== undefined ? _data[\"backgroundColor\"] : null;\n this.reportColor = _data[\"reportColor\"] !== undefined ? _data[\"reportColor\"] : null;\n this.gelatoIcon = _data[\"gelatoIcon\"] !== undefined ? _data[\"gelatoIcon\"] : null;\n this.iconColor = _data[\"iconColor\"] !== undefined ? _data[\"iconColor\"] : null;\n this.customIcon = _data[\"customIcon\"] !== undefined ? _data[\"customIcon\"] : null;\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(CorrelationQueryResultItemField.fromJS(item));\n }\n else { \n this.fields = null;\n }\n }\n }\n\n static fromJS(data: any): CorrelationQueryResultItem {\n data = typeof data === 'object' ? data : {};\n let result = new CorrelationQueryResultItem();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sourceId\"] = this.sourceId !== undefined ? this.sourceId : null;\n data[\"latitude\"] = this.latitude !== undefined ? this.latitude : null;\n data[\"longitude\"] = this.longitude !== undefined ? this.longitude : null;\n data[\"timestamp\"] = this.timestamp !== undefined ? this.timestamp : null;\n data[\"hasThumbnailImage\"] = this.hasThumbnailImage !== undefined ? this.hasThumbnailImage : null;\n data[\"sourceRoleName\"] = this.sourceRoleName !== undefined ? this.sourceRoleName : null;\n data[\"dataTypeName\"] = this.dataTypeName !== undefined ? this.dataTypeName : null;\n data[\"title\"] = this.title !== undefined ? this.title : null;\n data[\"description\"] = this.description !== undefined ? this.description : null;\n data[\"backgroundColor\"] = this.backgroundColor !== undefined ? this.backgroundColor : null;\n data[\"reportColor\"] = this.reportColor !== undefined ? this.reportColor : null;\n data[\"gelatoIcon\"] = this.gelatoIcon !== undefined ? this.gelatoIcon : null;\n data[\"iconColor\"] = this.iconColor !== undefined ? this.iconColor : null;\n data[\"customIcon\"] = this.customIcon !== undefined ? this.customIcon : null;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): CorrelationQueryResultItem {\n const json = this.toJSON();\n let result = new CorrelationQueryResultItem();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICorrelationQueryResultItem {\n sourceId: string;\n latitude: number;\n longitude: number;\n timestamp: string;\n hasThumbnailImage: boolean;\n sourceRoleName?: string | null;\n dataTypeName?: string | null;\n title?: string | null;\n description?: string | null;\n backgroundColor?: string | null;\n reportColor?: string | null;\n gelatoIcon?: string | null;\n iconColor?: string | null;\n customIcon?: string | null;\n fields?: CorrelationQueryResultItemField[] | null;\n}\n\nexport class CorrelationQueryResultItemField implements ICorrelationQueryResultItemField {\n key?: string | null;\n value?: string | null;\n\n constructor(data?: ICorrelationQueryResultItemField) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.key = _data[\"key\"] !== undefined ? _data[\"key\"] : null;\n this.value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n }\n }\n\n static fromJS(data: any): CorrelationQueryResultItemField {\n data = typeof data === 'object' ? data : {};\n let result = new CorrelationQueryResultItemField();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"key\"] = this.key !== undefined ? this.key : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n return data;\n }\n\n clone(): CorrelationQueryResultItemField {\n const json = this.toJSON();\n let result = new CorrelationQueryResultItemField();\n result.init(json);\n return result;\n }\n}\n\nexport interface ICorrelationQueryResultItemField {\n key?: string | null;\n value?: string | null;\n}\n\nexport class DataRow implements IDataRow {\n roleId!: IGuid;\n dataType!: IGuid;\n id!: string;\n time?: string | null;\n location?: GeoCoordinate;\n otherFields?: { [key: string]: string; } | null;\n\n constructor(data?: IDataRow) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.roleId = _guidImplementation.from(_data[\"roleId\"]) !== undefined ? _guidImplementation.from(_data[\"roleId\"]) : null;\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n this.id = _data[\"id\"] !== undefined ? _data[\"id\"] : null;\n this.time = _data[\"time\"] !== undefined ? _data[\"time\"] : null;\n this.location = _data[\"location\"] ? GeoCoordinate.fromJS(_data[\"location\"]) : null;\n if (_data[\"otherFields\"]) {\n this.otherFields = {} as any;\n for (let key in _data[\"otherFields\"]) {\n if (_data[\"otherFields\"].hasOwnProperty(key))\n (this.otherFields)![key] = _data[\"otherFields\"][key] !== undefined ? _data[\"otherFields\"][key] : null;\n }\n }\n else {\n this.otherFields = null;\n }\n }\n }\n\n static fromJS(data: any): DataRow {\n data = typeof data === 'object' ? data : {};\n let result = new DataRow();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"roleId\"] = this.roleId?.toString() !== undefined ? this.roleId?.toString() : null;\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n data[\"id\"] = this.id !== undefined ? this.id : null;\n data[\"time\"] = this.time !== undefined ? this.time : null;\n data[\"location\"] = this.location ? this.location.toJSON() : null;\n if (this.otherFields) {\n data[\"otherFields\"] = {};\n for (let key in this.otherFields) {\n if (this.otherFields.hasOwnProperty(key))\n (data[\"otherFields\"])[key] = this.otherFields[key] !== undefined ? this.otherFields[key] : null;\n }\n }\n return data;\n }\n\n clone(): DataRow {\n const json = this.toJSON();\n let result = new DataRow();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDataRow {\n roleId: IGuid;\n dataType: IGuid;\n id: string;\n time?: string | null;\n location?: GeoCoordinate;\n otherFields?: { [key: string]: string; } | null;\n}\n\nexport class DataSchema implements IDataSchema {\n dataType!: IGuid;\n name!: string;\n geofenceAreaId?: IGuid;\n isEventDriven!: boolean;\n timeField?: string | null;\n locationFields?: string[] | null;\n idField!: string;\n fields!: FieldTypeSpecification[];\n\n constructor(data?: IDataSchema) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.fields = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.geofenceAreaId = _guidImplementation.from(_data[\"geofenceAreaId\"]) !== undefined ? _guidImplementation.from(_data[\"geofenceAreaId\"]) : null;\n this.isEventDriven = _data[\"isEventDriven\"] !== undefined ? _data[\"isEventDriven\"] : null;\n this.timeField = _data[\"timeField\"] !== undefined ? _data[\"timeField\"] : null;\n if (Array.isArray(_data[\"locationFields\"])) {\n this.locationFields = [] as any;\n for (let item of _data[\"locationFields\"])\n this.locationFields!.push(item);\n }\n else { \n this.locationFields = null;\n }\n this.idField = _data[\"idField\"] !== undefined ? _data[\"idField\"] : null;\n if (Array.isArray(_data[\"fields\"])) {\n this.fields = [] as any;\n for (let item of _data[\"fields\"])\n this.fields!.push(FieldTypeSpecification.fromJS(item));\n }\n else { \n this.fields = null;\n }\n }\n }\n\n static fromJS(data: any): DataSchema {\n data = typeof data === 'object' ? data : {};\n let result = new DataSchema();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"geofenceAreaId\"] = this.geofenceAreaId?.toString() !== undefined ? this.geofenceAreaId?.toString() : null;\n data[\"isEventDriven\"] = this.isEventDriven !== undefined ? this.isEventDriven : null;\n data[\"timeField\"] = this.timeField !== undefined ? this.timeField : null;\n if (Array.isArray(this.locationFields)) {\n data[\"locationFields\"] = [];\n for (let item of this.locationFields)\n data[\"locationFields\"].push(item);\n }\n data[\"idField\"] = this.idField !== undefined ? this.idField : null;\n if (Array.isArray(this.fields)) {\n data[\"fields\"] = [];\n for (let item of this.fields)\n data[\"fields\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): DataSchema {\n const json = this.toJSON();\n let result = new DataSchema();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDataSchema {\n dataType: IGuid;\n name: string;\n geofenceAreaId?: IGuid;\n isEventDriven: boolean;\n timeField?: string | null;\n locationFields?: string[] | null;\n idField: string;\n fields: FieldTypeSpecification[];\n}\n\nexport class DataTypeDisplayModel implements IDataTypeDisplayModel {\n name!: string;\n dataType!: IGuid;\n icon?: string | null;\n customIcon?: string | null;\n foreground?: string | null;\n background?: string | null;\n\n constructor(data?: IDataTypeDisplayModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n this.icon = _data[\"icon\"] !== undefined ? _data[\"icon\"] : null;\n this.customIcon = _data[\"customIcon\"] !== undefined ? _data[\"customIcon\"] : null;\n this.foreground = _data[\"foreground\"] !== undefined ? _data[\"foreground\"] : null;\n this.background = _data[\"background\"] !== undefined ? _data[\"background\"] : null;\n }\n }\n\n static fromJS(data: any): DataTypeDisplayModel {\n data = typeof data === 'object' ? data : {};\n let result = new DataTypeDisplayModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n data[\"icon\"] = this.icon !== undefined ? this.icon : null;\n data[\"customIcon\"] = this.customIcon !== undefined ? this.customIcon : null;\n data[\"foreground\"] = this.foreground !== undefined ? this.foreground : null;\n data[\"background\"] = this.background !== undefined ? this.background : null;\n return data;\n }\n\n clone(): DataTypeDisplayModel {\n const json = this.toJSON();\n let result = new DataTypeDisplayModel();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDataTypeDisplayModel {\n name: string;\n dataType: IGuid;\n icon?: string | null;\n customIcon?: string | null;\n foreground?: string | null;\n background?: string | null;\n}\n\nexport class DatumKey implements IDatumKey {\n sourceId!: string;\n sourceRole!: IGuid;\n dataType!: IGuid;\n\n constructor(data?: IDatumKey) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sourceId = _data[\"sourceId\"] !== undefined ? _data[\"sourceId\"] : null;\n this.sourceRole = _guidImplementation.from(_data[\"sourceRole\"]) !== undefined ? _guidImplementation.from(_data[\"sourceRole\"]) : null;\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n }\n }\n\n static fromJS(data: any): DatumKey {\n data = typeof data === 'object' ? data : {};\n let result = new DatumKey();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sourceId\"] = this.sourceId !== undefined ? this.sourceId : null;\n data[\"sourceRole\"] = this.sourceRole?.toString() !== undefined ? this.sourceRole?.toString() : null;\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n return data;\n }\n\n clone(): DatumKey {\n const json = this.toJSON();\n let result = new DatumKey();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDatumKey {\n sourceId: string;\n sourceRole: IGuid;\n dataType: IGuid;\n}\n\nexport class DisplayCategory implements IDisplayCategory {\n id!: string;\n text!: string;\n\n constructor(data?: IDisplayCategory) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"] !== undefined ? _data[\"id\"] : null;\n this.text = _data[\"text\"] !== undefined ? _data[\"text\"] : null;\n }\n }\n\n static fromJS(data: any): DisplayCategory {\n data = typeof data === 'object' ? data : {};\n let result = new DisplayCategory();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id !== undefined ? this.id : null;\n data[\"text\"] = this.text !== undefined ? this.text : null;\n return data;\n }\n\n clone(): DisplayCategory {\n const json = this.toJSON();\n let result = new DisplayCategory();\n result.init(json);\n return result;\n }\n}\n\nexport interface IDisplayCategory {\n id: string;\n text: string;\n}\n\nexport enum ErrorSeverity {\n Information = \"Information\",\n Warning = \"Warning\",\n Error = \"Error\",\n}\n\nexport enum ExtendedSearchParameterType {\n String = \"String\",\n Int = \"Int\",\n Long = \"Long\",\n Double = \"Double\",\n DateTime = \"DateTime\",\n Bool = \"Bool\",\n DatumType = \"DatumType\",\n TimeWindow = \"TimeWindow\",\n RadiusMeters = \"RadiusMeters\",\n Frequency = \"Frequency\",\n Region = \"Region\",\n Entity = \"Entity\",\n Categorical = \"Categorical\",\n}\n\nexport enum FieldType {\n Text = \"Text\",\n Image = \"Image\",\n Link = \"Link\",\n Clipboard = \"Clipboard\",\n WebView = \"WebView\",\n SoundPlayer = \"SoundPlayer\",\n Entity = \"Entity\",\n EntityIcon = \"EntityIcon\",\n Barcode = \"Barcode\",\n Geocode = \"Geocode\",\n Color = \"Color\",\n Timestamp = \"Timestamp\",\n Unknown = \"Unknown\",\n}\n\nexport class FieldTypeSpecification implements IFieldTypeSpecification {\n name!: string;\n type!: string;\n\n constructor(data?: IFieldTypeSpecification) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.type = _data[\"type\"] !== undefined ? _data[\"type\"] : null;\n }\n }\n\n static fromJS(data: any): FieldTypeSpecification {\n data = typeof data === 'object' ? data : {};\n let result = new FieldTypeSpecification();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"type\"] = this.type !== undefined ? this.type : null;\n return data;\n }\n\n clone(): FieldTypeSpecification {\n const json = this.toJSON();\n let result = new FieldTypeSpecification();\n result.init(json);\n return result;\n }\n}\n\nexport interface IFieldTypeSpecification {\n name: string;\n type: string;\n}\n\nexport class GeoCoordinate implements IGeoCoordinate {\n altitude?: number | null;\n latitude!: number;\n longitude!: number;\n\n constructor(data?: IGeoCoordinate) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.altitude = 0;\n this.latitude = 0;\n this.longitude = 0;\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.altitude = _data[\"altitude\"] !== undefined ? _data[\"altitude\"] : 0;\n this.latitude = _data[\"latitude\"] !== undefined ? _data[\"latitude\"] : 0;\n this.longitude = _data[\"longitude\"] !== undefined ? _data[\"longitude\"] : 0;\n }\n }\n\n static fromJS(data: any): GeoCoordinate {\n data = typeof data === 'object' ? data : {};\n let result = new GeoCoordinate();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"altitude\"] = this.altitude !== undefined ? this.altitude : null;\n data[\"latitude\"] = this.latitude !== undefined ? this.latitude : null;\n data[\"longitude\"] = this.longitude !== undefined ? this.longitude : null;\n return data;\n }\n\n clone(): GeoCoordinate {\n const json = this.toJSON();\n let result = new GeoCoordinate();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGeoCoordinate {\n altitude?: number | null;\n latitude: number;\n longitude: number;\n}\n\nexport class GroupAggregationResult implements IGroupAggregationResult {\n aggregationType!: AggregationType;\n group!: string;\n count?: number | null;\n sumOrValue?: number | null;\n values?: string[] | null;\n\n constructor(data?: IGroupAggregationResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.aggregationType = _data[\"aggregationType\"] !== undefined ? _data[\"aggregationType\"] : null;\n this.group = _data[\"group\"] !== undefined ? _data[\"group\"] : null;\n this.count = _data[\"count\"] !== undefined ? _data[\"count\"] : null;\n this.sumOrValue = _data[\"sumOrValue\"] !== undefined ? _data[\"sumOrValue\"] : null;\n if (Array.isArray(_data[\"values\"])) {\n this.values = [] as any;\n for (let item of _data[\"values\"])\n this.values!.push(item);\n }\n else { \n this.values = null;\n }\n }\n }\n\n static fromJS(data: any): GroupAggregationResult {\n data = typeof data === 'object' ? data : {};\n let result = new GroupAggregationResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"aggregationType\"] = this.aggregationType !== undefined ? this.aggregationType : null;\n data[\"group\"] = this.group !== undefined ? this.group : null;\n data[\"count\"] = this.count !== undefined ? this.count : null;\n data[\"sumOrValue\"] = this.sumOrValue !== undefined ? this.sumOrValue : null;\n if (Array.isArray(this.values)) {\n data[\"values\"] = [];\n for (let item of this.values)\n data[\"values\"].push(item);\n }\n return data;\n }\n\n clone(): GroupAggregationResult {\n const json = this.toJSON();\n let result = new GroupAggregationResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface IGroupAggregationResult {\n aggregationType: AggregationType;\n group: string;\n count?: number | null;\n sumOrValue?: number | null;\n values?: string[] | null;\n}\n\nexport class IngestionType implements IIngestionType {\n roleGuid!: IGuid;\n roleName?: string | null;\n dataType!: IGuid;\n name!: string;\n customIcon?: string | null;\n\n constructor(data?: IIngestionType) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.roleGuid = _guidImplementation.from(_data[\"roleGuid\"]) !== undefined ? _guidImplementation.from(_data[\"roleGuid\"]) : null;\n this.roleName = _data[\"roleName\"] !== undefined ? _data[\"roleName\"] : null;\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.customIcon = _data[\"customIcon\"] !== undefined ? _data[\"customIcon\"] : null;\n }\n }\n\n static fromJS(data: any): IngestionType {\n data = typeof data === 'object' ? data : {};\n let result = new IngestionType();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"roleGuid\"] = this.roleGuid?.toString() !== undefined ? this.roleGuid?.toString() : null;\n data[\"roleName\"] = this.roleName !== undefined ? this.roleName : null;\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"customIcon\"] = this.customIcon !== undefined ? this.customIcon : null;\n return data;\n }\n\n clone(): IngestionType {\n const json = this.toJSON();\n let result = new IngestionType();\n result.init(json);\n return result;\n }\n}\n\nexport interface IIngestionType {\n roleGuid: IGuid;\n roleName?: string | null;\n dataType: IGuid;\n name: string;\n customIcon?: string | null;\n}\n\nexport class LightCorrelationExtendedFieldResult implements ILightCorrelationExtendedFieldResult {\n name!: string;\n content!: string;\n datumKey!: string;\n\n constructor(data?: ILightCorrelationExtendedFieldResult) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n this.content = _data[\"content\"] !== undefined ? _data[\"content\"] : null;\n this.datumKey = _data[\"datumKey\"] !== undefined ? _data[\"datumKey\"] : null;\n }\n }\n\n static fromJS(data: any): LightCorrelationExtendedFieldResult {\n data = typeof data === 'object' ? data : {};\n let result = new LightCorrelationExtendedFieldResult();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name !== undefined ? this.name : null;\n data[\"content\"] = this.content !== undefined ? this.content : null;\n data[\"datumKey\"] = this.datumKey !== undefined ? this.datumKey : null;\n return data;\n }\n\n clone(): LightCorrelationExtendedFieldResult {\n const json = this.toJSON();\n let result = new LightCorrelationExtendedFieldResult();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILightCorrelationExtendedFieldResult {\n name: string;\n content: string;\n datumKey: string;\n}\n\nexport class LightCorrelationReportColumn implements ILightCorrelationReportColumn {\n fieldName?: string | null;\n renderType?: FieldType;\n valueType?: UnderlyingType;\n displayName?: string | null;\n isDisplayed?: boolean;\n isExtended?: boolean;\n\n constructor(data?: ILightCorrelationReportColumn) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fieldName = _data[\"fieldName\"] !== undefined ? _data[\"fieldName\"] : null;\n this.renderType = _data[\"renderType\"] !== undefined ? _data[\"renderType\"] : null;\n this.valueType = _data[\"valueType\"] !== undefined ? _data[\"valueType\"] : null;\n this.displayName = _data[\"displayName\"] !== undefined ? _data[\"displayName\"] : null;\n this.isDisplayed = _data[\"isDisplayed\"] !== undefined ? _data[\"isDisplayed\"] : null;\n this.isExtended = _data[\"isExtended\"] !== undefined ? _data[\"isExtended\"] : null;\n }\n }\n\n static fromJS(data: any): LightCorrelationReportColumn {\n data = typeof data === 'object' ? data : {};\n let result = new LightCorrelationReportColumn();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldName\"] = this.fieldName !== undefined ? this.fieldName : null;\n data[\"renderType\"] = this.renderType !== undefined ? this.renderType : null;\n data[\"valueType\"] = this.valueType !== undefined ? this.valueType : null;\n data[\"displayName\"] = this.displayName !== undefined ? this.displayName : null;\n data[\"isDisplayed\"] = this.isDisplayed !== undefined ? this.isDisplayed : null;\n data[\"isExtended\"] = this.isExtended !== undefined ? this.isExtended : null;\n return data;\n }\n\n clone(): LightCorrelationReportColumn {\n const json = this.toJSON();\n let result = new LightCorrelationReportColumn();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILightCorrelationReportColumn {\n fieldName?: string | null;\n renderType?: FieldType;\n valueType?: UnderlyingType;\n displayName?: string | null;\n isDisplayed?: boolean;\n isExtended?: boolean;\n}\n\nexport class LightCorrelationSearchParameter implements ILightCorrelationSearchParameter {\n fieldName!: string;\n valueType!: ExtendedSearchParameterType;\n comparison!: ParameterComparison;\n value?: string | null;\n\n constructor(data?: ILightCorrelationSearchParameter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fieldName = _data[\"fieldName\"] !== undefined ? _data[\"fieldName\"] : null;\n this.valueType = _data[\"valueType\"] !== undefined ? _data[\"valueType\"] : null;\n this.comparison = _data[\"comparison\"] !== undefined ? _data[\"comparison\"] : null;\n this.value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n }\n }\n\n static fromJS(data: any): LightCorrelationSearchParameter {\n data = typeof data === 'object' ? data : {};\n let result = new LightCorrelationSearchParameter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldName\"] = this.fieldName !== undefined ? this.fieldName : null;\n data[\"valueType\"] = this.valueType !== undefined ? this.valueType : null;\n data[\"comparison\"] = this.comparison !== undefined ? this.comparison : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n return data;\n }\n\n clone(): LightCorrelationSearchParameter {\n const json = this.toJSON();\n let result = new LightCorrelationSearchParameter();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILightCorrelationSearchParameter {\n fieldName: string;\n valueType: ExtendedSearchParameterType;\n comparison: ParameterComparison;\n value?: string | null;\n}\n\nexport class LightCorrelationSupportedSearchParameter implements ILightCorrelationSupportedSearchParameter {\n fieldName!: string;\n valueType!: ExtendedSearchParameterType;\n supportedComparison!: ParameterComparison[];\n displayName!: string;\n categories?: DisplayCategory[] | null;\n entityTypes?: string[] | null;\n customEntityTypes?: IGuid[] | null;\n minimum?: number | null;\n maximum?: number | null;\n minDate?: string | null;\n maxDate?: string | null;\n\n constructor(data?: ILightCorrelationSupportedSearchParameter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.supportedComparison = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fieldName = _data[\"fieldName\"] !== undefined ? _data[\"fieldName\"] : null;\n this.valueType = _data[\"valueType\"] !== undefined ? _data[\"valueType\"] : null;\n if (Array.isArray(_data[\"supportedComparison\"])) {\n this.supportedComparison = [] as any;\n for (let item of _data[\"supportedComparison\"])\n this.supportedComparison!.push(item);\n }\n else { \n this.supportedComparison = null;\n }\n this.displayName = _data[\"displayName\"] !== undefined ? _data[\"displayName\"] : null;\n if (Array.isArray(_data[\"categories\"])) {\n this.categories = [] as any;\n for (let item of _data[\"categories\"])\n this.categories!.push(DisplayCategory.fromJS(item));\n }\n else { \n this.categories = null;\n }\n if (Array.isArray(_data[\"entityTypes\"])) {\n this.entityTypes = [] as any;\n for (let item of _data[\"entityTypes\"])\n this.entityTypes!.push(item);\n }\n else { \n this.entityTypes = null;\n }\n if (Array.isArray(_data[\"customEntityTypes\"])) {\n this.customEntityTypes = [] as any;\n for (let item of _data[\"customEntityTypes\"])\n this.customEntityTypes!.push(_guidConverters.toGuid(item));\n }\n else { \n this.customEntityTypes = null;\n }\n this.minimum = _data[\"minimum\"] !== undefined ? _data[\"minimum\"] : null;\n this.maximum = _data[\"maximum\"] !== undefined ? _data[\"maximum\"] : null;\n this.minDate = _data[\"minDate\"] !== undefined ? _data[\"minDate\"] : null;\n this.maxDate = _data[\"maxDate\"] !== undefined ? _data[\"maxDate\"] : null;\n }\n }\n\n static fromJS(data: any): LightCorrelationSupportedSearchParameter {\n data = typeof data === 'object' ? data : {};\n let result = new LightCorrelationSupportedSearchParameter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fieldName\"] = this.fieldName !== undefined ? this.fieldName : null;\n data[\"valueType\"] = this.valueType !== undefined ? this.valueType : null;\n if (Array.isArray(this.supportedComparison)) {\n data[\"supportedComparison\"] = [];\n for (let item of this.supportedComparison)\n data[\"supportedComparison\"].push(item);\n }\n data[\"displayName\"] = this.displayName !== undefined ? this.displayName : null;\n if (Array.isArray(this.categories)) {\n data[\"categories\"] = [];\n for (let item of this.categories)\n data[\"categories\"].push(item.toJSON());\n }\n if (Array.isArray(this.entityTypes)) {\n data[\"entityTypes\"] = [];\n for (let item of this.entityTypes)\n data[\"entityTypes\"].push(item);\n }\n if (Array.isArray(this.customEntityTypes)) {\n data[\"customEntityTypes\"] = [];\n for (let item of this.customEntityTypes)\n data[\"customEntityTypes\"].push(item);\n }\n data[\"minimum\"] = this.minimum !== undefined ? this.minimum : null;\n data[\"maximum\"] = this.maximum !== undefined ? this.maximum : null;\n data[\"minDate\"] = this.minDate !== undefined ? this.minDate : null;\n data[\"maxDate\"] = this.maxDate !== undefined ? this.maxDate : null;\n return data;\n }\n\n clone(): LightCorrelationSupportedSearchParameter {\n const json = this.toJSON();\n let result = new LightCorrelationSupportedSearchParameter();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILightCorrelationSupportedSearchParameter {\n fieldName: string;\n valueType: ExtendedSearchParameterType;\n supportedComparison: ParameterComparison[];\n displayName: string;\n categories?: DisplayCategory[] | null;\n entityTypes?: string[] | null;\n customEntityTypes?: IGuid[] | null;\n minimum?: number | null;\n maximum?: number | null;\n minDate?: string | null;\n maxDate?: string | null;\n}\n\nexport class LightDataSourceRegistration implements ILightDataSourceRegistration {\n dataType!: IGuid;\n sourceRole!: IGuid;\n name!: string;\n supportedSearchParameters?: LightCorrelationSupportedSearchParameter[] | null;\n supportsTemporalSearch!: boolean;\n supportsSpatialSearch!: boolean;\n columns!: LightCorrelationReportColumn[];\n\n constructor(data?: ILightDataSourceRegistration) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.columns = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dataType = _guidImplementation.from(_data[\"dataType\"]) !== undefined ? _guidImplementation.from(_data[\"dataType\"]) : null;\n this.sourceRole = _guidImplementation.from(_data[\"sourceRole\"]) !== undefined ? _guidImplementation.from(_data[\"sourceRole\"]) : null;\n this.name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n if (Array.isArray(_data[\"supportedSearchParameters\"])) {\n this.supportedSearchParameters = [] as any;\n for (let item of _data[\"supportedSearchParameters\"])\n this.supportedSearchParameters!.push(LightCorrelationSupportedSearchParameter.fromJS(item));\n }\n else { \n this.supportedSearchParameters = null;\n }\n this.supportsTemporalSearch = _data[\"supportsTemporalSearch\"] !== undefined ? _data[\"supportsTemporalSearch\"] : null;\n this.supportsSpatialSearch = _data[\"supportsSpatialSearch\"] !== undefined ? _data[\"supportsSpatialSearch\"] : null;\n if (Array.isArray(_data[\"columns\"])) {\n this.columns = [] as any;\n for (let item of _data[\"columns\"])\n this.columns!.push(LightCorrelationReportColumn.fromJS(item));\n }\n else { \n this.columns = null;\n }\n }\n }\n\n static fromJS(data: any): LightDataSourceRegistration {\n data = typeof data === 'object' ? data : {};\n let result = new LightDataSourceRegistration();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dataType\"] = this.dataType?.toString() !== undefined ? this.dataType?.toString() : null;\n data[\"sourceRole\"] = this.sourceRole?.toString() !== undefined ? this.sourceRole?.toString() : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n if (Array.isArray(this.supportedSearchParameters)) {\n data[\"supportedSearchParameters\"] = [];\n for (let item of this.supportedSearchParameters)\n data[\"supportedSearchParameters\"].push(item.toJSON());\n }\n data[\"supportsTemporalSearch\"] = this.supportsTemporalSearch !== undefined ? this.supportsTemporalSearch : null;\n data[\"supportsSpatialSearch\"] = this.supportsSpatialSearch !== undefined ? this.supportsSpatialSearch : null;\n if (Array.isArray(this.columns)) {\n data[\"columns\"] = [];\n for (let item of this.columns)\n data[\"columns\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): LightDataSourceRegistration {\n const json = this.toJSON();\n let result = new LightDataSourceRegistration();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILightDataSourceRegistration {\n dataType: IGuid;\n sourceRole: IGuid;\n name: string;\n supportedSearchParameters?: LightCorrelationSupportedSearchParameter[] | null;\n supportsTemporalSearch: boolean;\n supportsSpatialSearch: boolean;\n columns: LightCorrelationReportColumn[];\n}\n\nexport class LocationFilter implements ILocationFilter {\n wkt?: string | null;\n intersection!: boolean;\n includedAreas?: IGuid[] | null;\n excludedAreas?: IGuid[] | null;\n whereMode!: WhereMode;\n\n constructor(data?: ILocationFilter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.intersection = true;\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.wkt = _data[\"wkt\"] !== undefined ? _data[\"wkt\"] : null;\n this.intersection = _data[\"intersection\"] !== undefined ? _data[\"intersection\"] : true;\n if (Array.isArray(_data[\"includedAreas\"])) {\n this.includedAreas = [] as any;\n for (let item of _data[\"includedAreas\"])\n this.includedAreas!.push(_guidConverters.toGuid(item));\n }\n else { \n this.includedAreas = null;\n }\n if (Array.isArray(_data[\"excludedAreas\"])) {\n this.excludedAreas = [] as any;\n for (let item of _data[\"excludedAreas\"])\n this.excludedAreas!.push(_guidConverters.toGuid(item));\n }\n else { \n this.excludedAreas = null;\n }\n this.whereMode = _data[\"whereMode\"] !== undefined ? _data[\"whereMode\"] : null;\n }\n }\n\n static fromJS(data: any): LocationFilter {\n data = typeof data === 'object' ? data : {};\n let result = new LocationFilter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"wkt\"] = this.wkt !== undefined ? this.wkt : null;\n data[\"intersection\"] = this.intersection !== undefined ? this.intersection : null;\n if (Array.isArray(this.includedAreas)) {\n data[\"includedAreas\"] = [];\n for (let item of this.includedAreas)\n data[\"includedAreas\"].push(item);\n }\n if (Array.isArray(this.excludedAreas)) {\n data[\"excludedAreas\"] = [];\n for (let item of this.excludedAreas)\n data[\"excludedAreas\"].push(item);\n }\n data[\"whereMode\"] = this.whereMode !== undefined ? this.whereMode : null;\n return data;\n }\n\n clone(): LocationFilter {\n const json = this.toJSON();\n let result = new LocationFilter();\n result.init(json);\n return result;\n }\n}\n\nexport interface ILocationFilter {\n wkt?: string | null;\n intersection: boolean;\n includedAreas?: IGuid[] | null;\n excludedAreas?: IGuid[] | null;\n whereMode: WhereMode;\n}\n\nexport class ModelError implements IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n\n constructor(data?: IModelError) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.exception = _data[\"exception\"] !== undefined ? _data[\"exception\"] : null;\n this.errorMessage = _data[\"errorMessage\"] !== undefined ? _data[\"errorMessage\"] : null;\n }\n }\n\n static fromJS(data: any): ModelError {\n data = typeof data === 'object' ? data : {};\n let result = new ModelError();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"exception\"] = this.exception !== undefined ? this.exception : null;\n data[\"errorMessage\"] = this.errorMessage !== undefined ? this.errorMessage : null;\n return data;\n }\n\n clone(): ModelError {\n const json = this.toJSON();\n let result = new ModelError();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelError {\n exception?: any | null;\n errorMessage?: string | null;\n}\n\nexport class ModelStateEntry implements IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n readonly errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n readonly isContainerNode?: boolean;\n readonly children?: ModelStateEntry[] | null;\n\n protected _discriminator: string;\n\n constructor(data?: IModelStateEntry) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n this._discriminator = \"ModelStateEntry\";\n }\n\n init(_data?: any) {\n if (_data) {\n this.rawValue = _data[\"rawValue\"] !== undefined ? _data[\"rawValue\"] : null;\n this.attemptedValue = _data[\"attemptedValue\"] !== undefined ? _data[\"attemptedValue\"] : null;\n if (Array.isArray(_data[\"errors\"])) {\n (this).errors = [] as any;\n for (let item of _data[\"errors\"])\n (this).errors!.push(ModelError.fromJS(item));\n }\n else { \n (this).errors = null;\n }\n this.validationState = _data[\"validationState\"] !== undefined ? _data[\"validationState\"] : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ? _data[\"isContainerNode\"] : null;\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n else { \n (this).children = null;\n }\n }\n }\n\n static fromJS(data: any): ModelStateEntry {\n data = typeof data === 'object' ? data : {};\n if (data[\"$type\"] === \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\") {\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n let result = new ModelStateEntry();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"$type\"] = this._discriminator;\n data[\"rawValue\"] = this.rawValue !== undefined ? this.rawValue : null;\n data[\"attemptedValue\"] = this.attemptedValue !== undefined ? this.attemptedValue : null;\n if (Array.isArray(this.errors)) {\n data[\"errors\"] = [];\n for (let item of this.errors)\n data[\"errors\"].push(item.toJSON());\n }\n data[\"validationState\"] = this.validationState !== undefined ? this.validationState : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n return data;\n }\n\n clone(): ModelStateEntry {\n const json = this.toJSON();\n let result = new ModelStateEntry();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateEntry {\n rawValue?: any | null;\n attemptedValue?: string | null;\n errors?: ModelError[] | null;\n validationState?: ModelValidationState;\n isContainerNode?: boolean;\n children?: ModelStateEntry[] | null;\n}\n\nexport class ModelStateNode extends ModelStateEntry implements IModelStateNode {\n childNodes?: ModelStateNode[] | null;\n readonly children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n readonly isContainerNode?: boolean;\n\n constructor(data?: IModelStateNode) {\n super(data);\n this._discriminator = \"Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary+ModelStateNode, Microsoft.AspNetCore.Mvc.Abstractions\";\n }\n\n init(_data?: any) {\n super.init(_data);\n if (_data) {\n if (Array.isArray(_data[\"childNodes\"])) {\n this.childNodes = [] as any;\n for (let item of _data[\"childNodes\"])\n this.childNodes!.push(ModelStateNode.fromJS(item));\n }\n else { \n this.childNodes = null;\n }\n if (Array.isArray(_data[\"children\"])) {\n (this).children = [] as any;\n for (let item of _data[\"children\"])\n (this).children!.push(ModelStateEntry.fromJS(item));\n }\n else { \n (this).children = null;\n }\n this.key = _data[\"key\"] !== undefined ? _data[\"key\"] : null;\n this.subKey = _data[\"subKey\"] ? StringSegment.fromJS(_data[\"subKey\"]) : null;\n (this).isContainerNode = _data[\"isContainerNode\"] !== undefined ? _data[\"isContainerNode\"] : null;\n }\n }\n\n static fromJS(data: any): ModelStateNode {\n data = typeof data === 'object' ? data : {};\n let result = new ModelStateNode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.childNodes)) {\n data[\"childNodes\"] = [];\n for (let item of this.childNodes)\n data[\"childNodes\"].push(item.toJSON());\n }\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n data[\"key\"] = this.key !== undefined ? this.key : null;\n data[\"subKey\"] = this.subKey ? this.subKey.toJSON() : null;\n data[\"isContainerNode\"] = this.isContainerNode !== undefined ? this.isContainerNode : null;\n super.toJSON(data);\n return data;\n }\n\n clone(): ModelStateNode {\n const json = this.toJSON();\n let result = new ModelStateNode();\n result.init(json);\n return result;\n }\n}\n\nexport interface IModelStateNode extends IModelStateEntry {\n childNodes?: ModelStateNode[] | null;\n children?: ModelStateEntry[] | null;\n key?: string | null;\n subKey?: StringSegment;\n isContainerNode?: boolean;\n}\n\nexport enum ModelValidationState {\n Unvalidated = 0,\n Invalid = 1,\n Valid = 2,\n Skipped = 3,\n}\n\nexport enum ParameterComparison {\n GreaterThan = \"GreaterThan\",\n GreaterThanOrEqualTo = \"GreaterThanOrEqualTo\",\n LessThan = \"LessThan\",\n LessThanOrEqualTo = \"LessThanOrEqualTo\",\n Equal = \"Equal\",\n NotEqual = \"NotEqual\",\n Like = \"Like\",\n In = \"In\",\n NotIn = \"NotIn\",\n Regex = \"Regex\",\n}\n\nexport class StringSegment implements IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n readonly value?: string | null;\n readonly hasValue?: boolean;\n\n constructor(data?: IStringSegment) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.buffer = _data[\"buffer\"] !== undefined ? _data[\"buffer\"] : null;\n this.offset = _data[\"offset\"] !== undefined ? _data[\"offset\"] : null;\n this.length = _data[\"length\"] !== undefined ? _data[\"length\"] : null;\n (this).value = _data[\"value\"] !== undefined ? _data[\"value\"] : null;\n (this).hasValue = _data[\"hasValue\"] !== undefined ? _data[\"hasValue\"] : null;\n }\n }\n\n static fromJS(data: any): StringSegment {\n data = typeof data === 'object' ? data : {};\n let result = new StringSegment();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"buffer\"] = this.buffer !== undefined ? this.buffer : null;\n data[\"offset\"] = this.offset !== undefined ? this.offset : null;\n data[\"length\"] = this.length !== undefined ? this.length : null;\n data[\"value\"] = this.value !== undefined ? this.value : null;\n data[\"hasValue\"] = this.hasValue !== undefined ? this.hasValue : null;\n return data;\n }\n\n clone(): StringSegment {\n const json = this.toJSON();\n let result = new StringSegment();\n result.init(json);\n return result;\n }\n}\n\nexport interface IStringSegment {\n buffer?: string | null;\n offset?: number;\n length?: number;\n value?: string | null;\n hasValue?: boolean;\n}\n\nexport enum UnderlyingType {\n Text = 0,\n Number = 1,\n DateTime = 2,\n Boolean = 3,\n Guid = 4,\n}\n\nexport enum WhereMode {\n Anywhere = \"Anywhere\",\n Physical = \"Physical\",\n Logical = \"Logical\",\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","import { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class CorrelationFeatures {\n public static readonly investigationTaskFeature = SafeGuid.parse('89ddadb9-b63c-4e65-999d-a06b8c0c3d1b');\n public static readonly ingestDataFeature = SafeGuid.parse('c1259362-89d0-43cf-9ecb-2946ca312a54');\n public static readonly mobileUserDatumFeatureId = SafeGuid.parse('19435acc-4456-4786-adfc-470f76f7d2cc');\n public static readonly datumSidepaneFeatureId = SafeGuid.parse('9c5d4232-319f-4ea6-913d-222e49d15098');\n public static readonly aggregationWidgetFeatureId = SafeGuid.parse('c90654b2-5885-44f2-be85-88b4dc9a9823');\n\n public static readonly all = [\n CorrelationFeatures.investigationTaskFeature,\n CorrelationFeatures.ingestDataFeature,\n CorrelationFeatures.mobileUserDatumFeatureId,\n CorrelationFeatures.datumSidepaneFeatureId,\n CorrelationFeatures.aggregationWidgetFeatureId,\n ];\n}\n","/* eslint-disable id-blacklist */\nimport { Inject, Injectable } from '@angular/core';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid } from 'safeguid';\nimport { LoggerService } from '../../shared/services/logger/logger.service';\nimport { DataIngestionClient, DataRow, DataSchema, DatumKey, IngestionType } from '../api/api';\nimport { FEATURES_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { FeaturesService } from '../../shared/services/features/features.service';\nimport { CorrelationFeatures } from '../enumerations/correlation.features';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport enum IngestionFieldType {\n String = 'String',\n Integer = 'Integer',\n Long = 'Long',\n Double = 'Double',\n DateTime = 'DateTime',\n Boolean = 'Boolean',\n Entity = 'Entity',\n Base64Binary = 'Base64Binary',\n LargeString = 'LargeString',\n File = 'File',\n}\n\ninterface IngestionFieldContainerBase {\n display: string;\n id: string;\n type: T;\n value: V;\n}\n\nexport type IngestionFieldContainer = IngestionFieldContainerBase &\n (\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n | IngestionFieldContainerBase\n );\n\n@Injectable()\nexport class IngestionService {\n //#region Fields\n\n private readonly scClient: ISecurityCenterClient;\n private subscriptions: (() => void)[] = [];\n\n private ingestionTypes: IngestionType[] | undefined;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n private securityCenterClientService: SecurityCenterClientService,\n @Inject(FEATURES_SERVICE) private featuresService: FeaturesService,\n private loggerService: LoggerService,\n private ingestionApiController: DataIngestionClient\n ) {\n this.scClient = this.securityCenterClientService.scClient;\n this.subscriptions.push(\n this.scClient.onLogonStateChanged((arg) => {\n this.onLogonStateChanged(arg);\n })\n );\n }\n\n //#endregion\n\n //#region Public Methods\n\n public getIngestionTypeCache(): IngestionType[] | undefined {\n return this.ingestionTypes;\n }\n\n public async listTypes(): Promise {\n if (!this.ingestionTypes) {\n await this.constructIngestionCache();\n }\n\n return this.ingestionTypes;\n }\n\n public async getSchema(role: IGuid, type: IGuid): Promise {\n const result = await this.ingestionApiController.getSchema(role, type).toPromise();\n if (result) {\n return result;\n }\n return null;\n }\n\n public async getData(id: string, type: IGuid, role: IGuid): Promise {\n const result = await this.ingestionApiController.getRecord(role, type, id).toPromise();\n if (result) {\n return result;\n }\n return null;\n }\n\n public async addData(row: DataRow): Promise {\n try {\n await this.ingestionApiController.addRecord(row).toPromise();\n return true;\n } catch (err) {\n this.loggerService.traceError(`Failed to add record: ${JSON.stringify(err)}`);\n return false;\n }\n }\n\n public async updateData(row: DataRow): Promise {\n try {\n await this.ingestionApiController.updateRecord(row).toPromise();\n return true;\n } catch (err) {\n this.loggerService.traceError(`Failed to update record: ${JSON.stringify(err)}`);\n return false;\n }\n }\n\n public async deleteData(id: string, type: IGuid, role: IGuid): Promise {\n // TODO: pop dialog and confirm record deletion\n try {\n const key = new DatumKey({\n sourceId: id,\n sourceRole: role,\n dataType: type,\n });\n await this.ingestionApiController.deleteRecord(key).toPromise();\n return true;\n } catch (err) {\n this.loggerService.traceError(`Failed to delete record: ${JSON.stringify(err)}`);\n return false;\n }\n }\n\n //#endregion\n\n //#region Events\n\n private onLogonStateChanged(e: LogonStateChangedArgs): void {\n if (e.loggedOn() === true) {\n void this.listTypes();\n } else {\n this.ingestionTypes = undefined;\n }\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async constructIngestionCache(): Promise {\n if (!this.ingestionTypes) {\n // ensure the feature is enabled\n if (setSome(await this.featuresService.getFeaturesAsync(), (feat) => feat.equals(CorrelationFeatures.ingestDataFeature))) {\n const data = await this.ingestionApiController.listIngestionTypes().toPromise();\n if (data) {\n this.ingestionTypes = data;\n const message = `There are ${data.length} ingestable data types available`;\n this.loggerService.traceInformation(message);\n }\n }\n }\n }\n\n //#endregion\n}\n","\n \n {{ params.display }}\n \n\n\n \n {{ params.display }}\n \n\n\n \n {{ params.display }}\n \n\n\n \n {{ params.display }}\n \n\n\n \n\n\n \n {{ params.display }}\n \n\n\n \n\n\n \n\n\n \n {{ params.display }}\n \n\n\n\n \n {{ 'STE_LABEL_SELECTADATATYPE' | translate }}\n \n\n\n\n \n
    \n \n \n\n \n \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n\n \n \n \n
    \n
    \n \n {{ 'STE_LABEL_ABBREV_IDENTIFIER' | translate }}\n \n \n {{ sourceId }}\n \n
    \n
    \n \n {{ 'STE_LABEL_ABBREV_IDENTIFIER' | translate }}\n \n
    \n \n
    \n \n \n \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n \n {{ 'STE_LABEL_LATITUDE' | translate }}\n \n
    \n
    \n \n {{ 'STE_LABEL_LONGITUDE' | translate }}\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n\n","import { AfterViewInit, Component, Injector, OnInit, ViewChild } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Icon, IconSize, TextFlavor } from '@genetec/gelato';\nimport { GenMeltedModalComponent, GenToastService, MeltedIcon, MeltedModalAction } from '@genetec/gelato-angular';\nimport { GenMeltedItem } from '@genetec/gelato-angular/lib/interfaces/gen-melted-item';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { toInteger, toNumber } from 'lodash-es';\nimport moment from 'moment';\nimport { Coordinate } from 'RestClient/Client/Model/MapEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { DataRow, DataSchema, GeoCoordinate } from '../../api/api';\nimport { IngestionFieldContainer, IngestionFieldType, IngestionService } from '../../services/ingestion.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport const parseBase64FileAsync = (file: File): Promise => {\n // Always return a Promise\n return new Promise((resolve, reject) => {\n let content = '';\n const reader = new FileReader();\n // Wait till complete\n reader.onloadend = (e: ProgressEvent) => {\n content = e.target?.result as string;\n if (content) {\n resolve(btoa(content));\n } else {\n resolve(null);\n }\n };\n // Make sure to handle error states\n reader.onerror = (e: ProgressEvent) => {\n reject(e);\n };\n reader.readAsBinaryString(file);\n });\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-data-ingestion-modal',\n templateUrl: './data-ingestion-modal.component.html',\n styleUrls: ['./data-ingestion-modal.component.scss'],\n})\nexport class IngestDataModalComponent extends ConnectionAwareModalComponent implements AfterViewInit, OnInit {\n //#region Fields\n\n @ViewChild(GenMeltedModalComponent)\n public genModalComponent!: GenMeltedModalComponent;\n\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly TextFlavor = TextFlavor;\n\n public selectedRoleGuid: IGuid | null = null;\n public selectedSchema: DataSchema | null = null;\n public selectedTypeItem: ContextMenuItem | null = null;\n public types: GenMeltedItem[] = [];\n public sourceId: string = SafeGuid.newGuid().toString();\n public time: string | null = null;\n public location: Coordinate | null = null;\n public fields: Array | null = null;\n\n public advanced = false;\n public cannotSave = true;\n public isUpdate = false;\n\n private previousRecord: DataRow | null = null;\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n authService: AuthService,\n private ingestionService: IngestionService,\n private toastService: GenToastService,\n private translateService: TranslateService,\n protected sanitizer: DomSanitizer,\n private loggerService: LoggerService\n ) {\n super(authService, injector, trackingService);\n\n // hook up to the modal send action\n this.genModalAction.pipe(untilDestroyed(this)).subscribe((modalAction: MeltedModalAction) => this.onSubmit(modalAction));\n }\n\n //#endregion\n\n //#region Methods\n\n public ngOnInit() {\n super.ngOnInit();\n }\n\n public async ngAfterViewInit() {\n super.ngAfterViewInit();\n // populate the types choices\n const types = await this.ingestionService.listTypes();\n if (types) {\n this.types = [];\n\n types.forEach((element) => {\n const id = element.roleGuid.toString() + '_' + element.dataType.toString();\n const text = element.name;\n const subText = `(${element.roleName ?? ''})`;\n\n // TODO: sanitize the image below within Gelato?\n if (element.customIcon?.startsWith('gelato:')) {\n this.types?.push({\n id,\n text,\n secondaryText: subText,\n icon: element.customIcon.substring('gelato:'.length) as MeltedIcon,\n });\n } else if (element.customIcon) {\n this.types?.push({\n id,\n text,\n secondaryText: subText,\n image: this.sanitizer.bypassSecurityTrustUrl(element.customIcon) as string,\n });\n } else {\n this.types?.push({\n id,\n text,\n icon: MeltedIcon.CorrelationService,\n secondaryText: subText,\n });\n }\n });\n }\n }\n\n public setPreviousRecord(row: DataRow): void {\n this.previousRecord = row;\n this.isUpdate = true;\n this.updateSchemaChanges();\n }\n\n public clearPreviousRecord(): void {\n this.previousRecord = null;\n this.isUpdate = false;\n this.updateSchemaChanges();\n }\n\n public getDefaultValue(fieldType: IngestionFieldType): string | number | boolean | IGuid {\n switch (fieldType) {\n case IngestionFieldType.String:\n case IngestionFieldType.Base64Binary:\n case IngestionFieldType.LargeString:\n case IngestionFieldType.File:\n return '';\n case IngestionFieldType.Integer:\n return 0;\n case IngestionFieldType.Long:\n return 0;\n case IngestionFieldType.Double:\n return 0.0;\n case IngestionFieldType.Boolean:\n return true;\n case IngestionFieldType.Entity:\n return SafeGuid.EMPTY;\n case IngestionFieldType.DateTime:\n return moment().toISOString();\n }\n }\n\n public getFormattedValue(fieldType: IngestionFieldType, map: { [key: string]: string }, key: string): string | number | boolean | IGuid {\n const value = map[key];\n if (!value) {\n return this.getDefaultValue(fieldType);\n }\n switch (fieldType) {\n case IngestionFieldType.String:\n case IngestionFieldType.Base64Binary:\n case IngestionFieldType.LargeString:\n case IngestionFieldType.File:\n return value;\n case IngestionFieldType.Integer:\n case IngestionFieldType.Long:\n return toInteger(value);\n case IngestionFieldType.Double:\n return toNumber(value);\n case IngestionFieldType.Boolean:\n return value.toLowerCase() === 'true';\n case IngestionFieldType.Entity:\n return SafeGuid.parse(value);\n case IngestionFieldType.DateTime:\n return moment(value).toISOString();\n default:\n return this.getDefaultValue(fieldType);\n }\n }\n\n public getInstance(fieldType: string): IngestionFieldType {\n if (fieldType === 'Integer') {\n return IngestionFieldType.Integer;\n }\n if (fieldType === 'Long') {\n return IngestionFieldType.Long;\n }\n if (fieldType === 'Double') {\n return IngestionFieldType.Double;\n }\n if (fieldType === 'Boolean') {\n return IngestionFieldType.Boolean;\n }\n if (fieldType === 'Entity') {\n return IngestionFieldType.Entity;\n }\n if (fieldType === 'Base64Binary') {\n return IngestionFieldType.Base64Binary;\n }\n if (fieldType === 'LargeString') {\n return IngestionFieldType.LargeString;\n }\n if (fieldType === 'File') {\n return IngestionFieldType.File;\n }\n if (fieldType === 'DateTime') {\n return IngestionFieldType.DateTime;\n }\n return IngestionFieldType.String;\n }\n\n //#endregion\n\n //#region Events\n\n public async onSubmit(modalAction: MeltedModalAction): Promise {\n if (modalAction === MeltedModalAction.Default) {\n let saved = true;\n try {\n const record = new DataRow({\n roleId: this.selectedRoleGuid?.isEmpty() === false ? this.selectedRoleGuid : SafeGuid.EMPTY,\n dataType: this.selectedSchema?.dataType ?? SafeGuid.EMPTY,\n id: this.sourceId,\n });\n\n // save clicked\n if (this.previousRecord) {\n // is update\n record.id = this.sourceId;\n if (this.selectedRoleGuid?.isEmpty() === false) {\n record.roleId = this.selectedRoleGuid;\n }\n if (this.selectedSchema) {\n record.dataType = this.selectedSchema.dataType;\n }\n\n record.time = null;\n if (this.time) {\n const mmt = moment(this.time).utc();\n if (this.previousRecord.time) {\n const previousMmt = moment(this.previousRecord.time);\n if (previousMmt !== mmt) {\n // the time has changed, update it\n record.time = mmt.toISOString();\n }\n }\n }\n\n record.location = new GeoCoordinate({ latitude: 0, longitude: 0 });\n if (this.location && Math.abs(this.location.latitude) > 0 && Math.abs(this.location.longitude) > 0) {\n if (this.location.latitude !== this.previousRecord.location?.latitude && this.location.longitude !== this.previousRecord.location?.longitude) {\n // location has changed, update the record\n record.location.latitude = this.location.latitude;\n record.location.longitude = this.location.longitude;\n }\n }\n\n record.otherFields = {};\n if (this.fields) {\n for (const field of this.fields) {\n switch (field.type) {\n case IngestionFieldType.String:\n case IngestionFieldType.LargeString:\n case IngestionFieldType.Integer:\n case IngestionFieldType.Long:\n case IngestionFieldType.Double:\n case IngestionFieldType.Boolean:\n case IngestionFieldType.Entity:\n {\n const value = field.value;\n if (value?.toString()) {\n record.otherFields[field.display] = value.toString();\n }\n }\n break;\n case IngestionFieldType.Base64Binary:\n case IngestionFieldType.File:\n {\n const fileList = field.value;\n if (fileList) {\n const content = await parseBase64FileAsync(fileList[0]);\n if (content) {\n record.otherFields[field.display] = content;\n }\n }\n }\n break;\n case IngestionFieldType.DateTime:\n {\n if (field.value) {\n const item = field.value;\n if (item) {\n const mmt = moment(item).utc().toISOString();\n record.otherFields[field.display] = mmt;\n }\n }\n }\n break;\n }\n }\n }\n\n saved = await this.ingestionService.updateData(record);\n } else {\n // is new record (i.e. create operation)\n record.id = this.sourceId;\n if (this.selectedRoleGuid?.isEmpty() === false) {\n record.roleId = this.selectedRoleGuid;\n }\n if (this.selectedSchema) {\n record.dataType = this.selectedSchema.dataType;\n }\n\n record.time = null;\n if (this.time) {\n record.time = moment(this.time).utc().toISOString();\n }\n record.location = new GeoCoordinate({ latitude: 0, longitude: 0 });\n\n if (this.location && Math.abs(this.location.latitude) > 0 && Math.abs(this.location.longitude) > 0) {\n record.location.latitude = this.location.latitude;\n record.location.longitude = this.location.longitude;\n }\n record.otherFields = {};\n if (this.fields) {\n for (const field of this.fields) {\n switch (field.type) {\n case IngestionFieldType.String:\n case IngestionFieldType.LargeString:\n case IngestionFieldType.Integer:\n case IngestionFieldType.Long:\n case IngestionFieldType.Double:\n case IngestionFieldType.Boolean:\n case IngestionFieldType.Entity:\n {\n const value = field.value;\n if (value?.toString()) {\n record.otherFields[field.display] = value.toString();\n }\n }\n break;\n case IngestionFieldType.Base64Binary:\n case IngestionFieldType.File:\n {\n const fileList = field.value;\n if (fileList) {\n const content = await parseBase64FileAsync(fileList[0]);\n if (content) {\n record.otherFields[field.display] = content;\n }\n }\n }\n break;\n case IngestionFieldType.DateTime:\n {\n if (field.value) {\n const item = field.value;\n if (item) {\n const mmt = moment(item).utc().toISOString();\n record.otherFields[field.display] = mmt;\n }\n }\n }\n break;\n }\n }\n }\n // fields are set, fire off the record\n saved = await this.ingestionService.addData(record);\n }\n } catch (err) {\n saved = false;\n if (this.loggerService) {\n this.loggerService.traceError(err);\n }\n }\n if (!saved) {\n const notification = this.translateService.instant('STE_MESSAGE_ERROR_DATA_SAVE_FAILED') as string;\n this.toastService.show({ text: notification, flavorCustomColor: this.Color.Fragola });\n } else {\n const notification = this.translateService.instant('STE_MESSAGE_INFO_DATA_SAVED') as string;\n this.toastService.show({ text: notification, flavorCustomColor: this.Color.Pistacchio });\n }\n }\n }\n\n public async onSelectedTypeChanged(newType: ContextMenuItem): Promise {\n this.selectedSchema = null;\n this.selectedRoleGuid = null;\n\n if (newType?.id) {\n const parts = newType.id.split('_', 2);\n if (parts.length === 2) {\n const roleGuid = SafeGuid.parse(parts[0]);\n const typeGuid = SafeGuid.parse(parts[1]);\n const schema = await this.ingestionService.getSchema(roleGuid, typeGuid);\n this.selectedRoleGuid = roleGuid;\n this.selectedSchema = schema;\n this.updateSchemaChanges();\n }\n }\n }\n\n public toggleAdvancedSection(event: MouseEvent): void {\n this.advanced = !this.advanced;\n }\n\n public regenerateId(event: MouseEvent): void {\n this.sourceId = SafeGuid.newGuid().toString();\n }\n\n public onValueChanged(): void {\n this.cannotSave = false;\n }\n\n //#endregion\n\n //#region Private Methods\n\n private updateSchemaChanges() {\n this.fields = null;\n if (this.selectedSchema) {\n // re-disable the save ability\n this.cannotSave = true;\n\n // check & set time\n if (this.selectedSchema.timeField) {\n if (this.previousRecord?.time) {\n this.time = moment(this.previousRecord.time).toISOString();\n } else {\n this.time = moment().toISOString();\n }\n } else {\n this.time = null;\n }\n\n // check and set the location\n if (!this.selectedSchema?.locationFields) {\n this.location = null;\n } else if (this.selectedSchema.locationFields.length === 0) {\n this.location = null;\n } else if (this.location == null) {\n this.location = new Coordinate();\n this.location.initializeAllFields();\n }\n\n // check and set the fields array\n this.fields = [];\n this.selectedSchema.fields.forEach((element) => {\n if (this.selectedSchema?.idField) {\n if (element.name === this.selectedSchema.idField) {\n // ignore this field\n return;\n }\n }\n if (this.selectedSchema?.timeField) {\n if (element.name === this.selectedSchema.timeField) {\n // ignore this field\n return;\n }\n }\n if (this.selectedSchema?.locationFields) {\n if (\n this.selectedSchema.locationFields.some((fieldName) => {\n return fieldName === element.name;\n })\n ) {\n // ignore this field (indexed location field)\n return;\n }\n }\n\n const type = this.getInstance(element.type);\n if (this.fields) {\n if (this.previousRecord?.otherFields) {\n // we're reloading an existing record (for edit). Load the appropriate fields\n let value: string | IGuid = this.previousRecord.otherFields[element.name];\n if (!value) {\n value = this.getDefaultValue(type) as string | IGuid;\n } else if (type === IngestionFieldType.Entity) {\n const guid = SafeGuid.tryParse(value);\n if (guid.success) {\n value = guid.value;\n }\n }\n this.fields?.push({\n display: element.name,\n value: this.getFormattedValue(type, this.previousRecord.otherFields, element.name) as string,\n type,\n id: SafeGuid.newGuid().toString(),\n } as IngestionFieldContainer);\n } else {\n this.fields?.push({\n display: element.name,\n value: this.getDefaultValue(type),\n type,\n id: SafeGuid.newGuid().toString(),\n } as IngestionFieldContainer);\n }\n }\n });\n }\n }\n\n //#endregion\n}\n","import { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class CorrelationContentTypes {\n public static readonly datum = new SafeGuid('5473813F-AA41-42E5-A37D-62BA0314BEAF');\n //e205ee2d-c132-43ec-b52a-10401ba294cc\n public static readonly mobileUser = new SafeGuid('e205ee2d-c132-43ec-b52a-10401ba294cc');\n\n public static readonly visualModel = 'visualmodel';\n public static readonly dataType = 'datatype';\n public static readonly showTooltip = 'showtooltip';\n\n public static readonly specialCaseDatums = [CorrelationContentTypes.mobileUser];\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ItemSlot } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { CorrelationContentTypes } from '../../../enumerations/correlation-content-types';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-correlation-datum-map-widget',\n templateUrl: './correlation-datum-map-widget.component.html',\n styleUrls: ['./correlation-datum-map-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: CorrelationDatumMapWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupCompact, PluginTypes.MapPopupExpand],\n exposure: { id: CorrelationDatumMapWidgetComponent.pluginId, priority: 0 },\n isContentSupported: (content: Content) => {\n // if the showtooltip flag is not there or is true, then we can show the popup\n if (content?.type) {\n if (CorrelationContentTypes.datum.equals(content.type)) {\n if (content.parameters?.hasField(CorrelationContentTypes.showTooltip)) {\n const shouldShow = content.parameters.getField(CorrelationContentTypes.showTooltip);\n return shouldShow;\n } else {\n return true;\n }\n }\n }\n return false;\n },\n})\nexport class CorrelationDatumMapWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('32A4C964-2E25-4805-8369-2A746C28A9F9');\n\n public content?: Content;\n public dataContext: unknown;\n\n public readonly ItemSlot = ItemSlot;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public onClick(): void {}\n}\n","
    \n \n {{ this.content?.title }}\n {{ this.content?.description }}\n \n
    \n","import { Inject, Injectable } from '@angular/core';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FEATURES_SERVICE } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CorrelationClient, DataTypeDisplayModel, LightCorrelationExtendedFieldResult, LightDataSourceRegistration } from '../api/api';\nimport { CorrelationFeatures } from '../enumerations/correlation.features';\n\nexport class CorrelationDataSourcesRefreshedEvent extends EventBase {\n constructor() {\n super();\n }\n}\n\n@Injectable()\n@UntilDestroy()\nexport class CorrelationService {\n //#region Fields\n\n private dataTypes: DataTypeDisplayModel[] | undefined;\n private allRegistrations: LightDataSourceRegistration[] | undefined;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n private correlationClient: CorrelationClient,\n private scClientService: SecurityCenterClientService,\n @Inject(FEATURES_SERVICE) private featuresService: FeaturesService,\n private authService: AuthService,\n private languageService: LanguageService\n ) {\n this.initialize().fireAndForget();\n }\n\n //#endregion\n\n //#region Methods\n\n public async getDataTypes(): Promise {\n // check if there's a cached value, if miss load it\n if (!this.dataTypes) {\n await this.buildCaches(false, true);\n }\n // return them\n return this.dataTypes;\n }\n\n public async getRegistrations(dataTypes: IGuid[] | string[] | undefined): Promise | undefined> {\n // construct the guid filter\n const filter: IGuid[] = [];\n if (dataTypes instanceof Array) {\n for (const item of dataTypes) {\n const safeGuid = new SafeGuid(item);\n filter.push(safeGuid);\n }\n }\n // check the cache, if miss, load the cache\n if (!this.allRegistrations) {\n await this.buildCaches(true, false);\n }\n // apply the filter if needed\n if (filter.length > 0) {\n return this.allRegistrations?.filter((reg) => filter.some((f) => f.equals(reg.dataType)));\n }\n // no filter\n return this.allRegistrations;\n }\n\n public async loadFirstImages(keys: string[]): Promise {\n if (keys?.length > 0) {\n const result = await this.correlationClient.loadExtendedImages(keys).toPromise();\n if (result) {\n return result;\n }\n }\n return null;\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async initialize(): Promise {\n const client = this.scClientService?.scClient;\n\n //Prevent initialization if no Correlation feature is enabled\n const correlationFeatures = setFilter(await this.featuresService.getFeaturesAsync(), (x) => !!CorrelationFeatures.all.find((y) => x.equals(y)));\n const hasCorrelationFeaturesEnabled = correlationFeatures.length > 0;\n\n if (client && hasCorrelationFeaturesEnabled) {\n // add the event def\n client.registerAdditionalEventTypes('CorrelationDataSourcesRefreshedEvent', CorrelationDataSourcesRefreshedEvent);\n // wire up the subscription\n client.eventsReceived$.pipe(untilDestroyed(this)).subscribe((events) => {\n if (events.some((eventArg) => eventArg.event?.eventType === 'CorrelationDataSourcesRefreshedEvent')) {\n this.flushCaches();\n }\n });\n // wire up the loggedIn authService observable\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe((loggedIn) => {\n if (loggedIn) {\n this.flushCaches();\n } else {\n this.invalidateCaches();\n }\n });\n // reset cache if language changed to display the correct report name\n this.languageService.languageChanged.pipe(untilDestroyed(this)).subscribe(() => {\n this.flushCaches();\n });\n }\n }\n\n private flushCaches(): void {\n this.invalidateCaches();\n this.buildCaches().fireAndForget();\n }\n\n private invalidateCaches(): void {\n // flush the caches\n this.dataTypes = undefined;\n this.allRegistrations = undefined;\n }\n\n private async buildCaches(reg: boolean = true, dt: boolean = true): Promise {\n // check the cache, if miss, load the cache\n if (!this.allRegistrations && reg) {\n this.allRegistrations = await this.correlationClient.getRegistrations(undefined).toPromise();\n }\n // check if there's a cached value, if miss load it\n if (!this.dataTypes && dt) {\n this.dataTypes = await this.correlationClient.listDataTypes().toPromise();\n }\n }\n\n //#endregion\n}\n","import { CreateFeatureFlag, CreateFeatureFlagGroup } from '@modules/feature-flags/feature-flag';\n\nexport const UnifiedReportFeatureFlags = CreateFeatureFlagGroup({\n General: CreateFeatureFlag('Flag.UnifiedReport', true),\n UnifiedReportGenTable: CreateFeatureFlag('Flag.UnifiedReportGenTable', true),\n MultiSelectWhatFilterFeatureFlag: CreateFeatureFlag('Flag.UnifiedReport.MultiSelectWhatFilter', false),\n});\n\nexport const RecordFusionFeatureFlags = CreateFeatureFlagGroup({\n General: CreateFeatureFlag('Flag.RecordFusion', false),\n});\n","\n
    \n \n \n\n \n
    \n {{ params.value[0] }}\n \n \n \n
    \n\n \n
    \n {{ params.value[0] }}\n \n \n \n
    \n\n \n {{ params.value[0] }}\n \n \n\n \n \n\n \n \n \n\n \n \n\n \n \n
    \n {{ block }}\n
    \n
    \n
    \n
    \n \n {{ 'STE_LABEL_RECORD_DETAILS' | translate }}\n \n \n \n {{ row.name }}\n \n \n \n \n \n
    \n","import { AfterViewInit, Component, Inject, Input, OnInit } from '@angular/core';\nimport { IconSize, Icon, ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { ButtonFlavor, GenMeltedTableRow, GenModalService } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { MODAL_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { ISecurityCenterClient } from 'RestClient/Client/Interface/ISecurityCenterClient';\nimport { IconsService } from '@modules/shared/services/icons.service';\nimport { ImageViewerModalComponent } from '@modules/shared/components/image-viewer-modal/image-viewer-modal.component';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { DatumVisualDirective } from '@modules/correlation/interfaces/correlation-datum';\nimport { CorrelationContentTypes } from '../../../enumerations/correlation-content-types';\nimport { CorrelationFeatures } from '../../../enumerations/correlation.features';\nimport { RecordFusionFeatureFlags } from '@modules/correlation/feature-flags';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-correlation-datum-sidepane-widget',\n templateUrl: './correlation-datum-sidepane-widget.component.html',\n styleUrls: ['./correlation-datum-sidepane-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: CorrelationDatumSidepaneWidgetComponent,\n pluginTypes: [PluginTypes.Tile, PluginTypes.Widget], //, PluginTypes.MapPopupExpand, PluginTypes.MapPopupCompact\n exposure: {\n id: CorrelationDatumSidepaneWidgetComponent.pluginId,\n priority: 4,\n },\n isContentSupported: (content: Content) => {\n if (content?.type && content.parameters) {\n if (\n CorrelationContentTypes.datum.equals(content.type) &&\n content.parameters?.hasField(CorrelationContentTypes.visualModel) &&\n content.parameters?.hasField(CorrelationContentTypes.dataType)\n ) {\n const dataTypeString = content.parameters.getField(CorrelationContentTypes.dataType);\n if (dataTypeString) {\n for (const special of CorrelationContentTypes.specialCaseDatums) {\n if (special.equals(dataTypeString)) return false;\n }\n return true;\n }\n }\n }\n return false;\n },\n requirements: {\n licenses: [KnownLicenses.correlation],\n features: [CorrelationFeatures.datumSidepaneFeatureId],\n enabledFeatureFlags: [RecordFusionFeatureFlags.General],\n },\n})\nexport class CorrelationDatumSidepaneWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent, AfterViewInit {\n //#region Fields\n\n public static pluginId = SafeGuid.parse('39ECB286-35CB-4777-BAF6-8B384AA31D70');\n\n @Input()\n public dataContext: unknown;\n\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n\n public content?: Content;\n\n public directive!: DatumVisualDirective;\n public datumTableRows: Array = [];\n\n private scClient: ISecurityCenterClient | null = null;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n trackingService: TrackingService,\n private securityCenterClientService: SecurityCenterClientService,\n @Inject(MODAL_SERVICE) private modalService: GenModalService,\n private iconsService: IconsService\n ) {\n super(trackingService);\n }\n\n //#endregion\n\n //#region Methods\n\n public static copyMessage(val: string): void {\n const selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = val;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n\n ngAfterViewInit() {\n this.scClient = this.securityCenterClientService.scClient;\n setTimeout(() => {\n const parameters = this.content?.parameters;\n if (parameters) {\n if (parameters.hasField(CorrelationContentTypes.visualModel)) {\n const json = parameters.getField(CorrelationContentTypes.visualModel);\n if (json) {\n const data = JSON.parse(json) as DatumVisualDirective;\n if (data) {\n this.directive = data;\n void this.onDirectiveChanged();\n }\n }\n }\n }\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n //#endregion\n\n //#region Events\n\n public copyToClipboard(text: string): void {\n if (text) {\n CorrelationDatumSidepaneWidgetComponent.copyMessage(text);\n }\n }\n\n public onImageOpened(event: MouseEvent): void {\n const target = (event?.target || event?.currentTarget) as HTMLImageElement;\n const field = target?.src;\n if (target && field) {\n const modal = this.modalService.open(ImageViewerModalComponent, undefined);\n modal.image = field;\n }\n }\n\n private async onDirectiveChanged() {\n const results = [];\n\n if (this.directive) {\n if (this.directive.Fields) {\n for (const field of this.directive.Fields) {\n // value must be defined in order to render the field control\n if (field.Value?.length > 0) {\n // Transformations on the value as needed\n if (field.FieldType === 'Image') {\n field.Value = ['data:image/png;base64,' + field.Value[0]];\n } else if (field.FieldType === 'SoundPlayer') {\n field.Value = ['data:audio/mp3;base64,' + field.Value[0]];\n } else if (field.FieldType === 'Entity') {\n const entityId = SafeGuid.parse(field.Value[0]);\n if (entityId) {\n if (this.scClient) {\n const entity = await this.scClient.getEntityAsync(Entity, entityId, null, null, EntityFields.nameField, EntityFields.idField);\n if (entity?.name) {\n field.Value[0] = entity.name;\n } else {\n field.Value[0] = '';\n }\n }\n }\n } else if (field.FieldType === 'EntityIcon') {\n const entityId = SafeGuid.parse(field.Value[0]);\n if (entityId) {\n if (this.scClient) {\n const entity = await this.scClient.getEntityAsync(Entity, entityId, null, null, EntityFields.entityTypeField, EntityFields.idField);\n if (entity) {\n const icon = this.iconsService.getEntityIcon(entity);\n if (icon) {\n field.Value[0] = icon;\n } else {\n field.Value[0] = '';\n }\n }\n }\n }\n }\n results.push({ name: field.DisplayText, value: { fieldType: field.FieldType, value: field.Value, allText: field.Value.join('\\n') } });\n }\n }\n }\n\n this.datumTableRows = results;\n }\n }\n\n //#endregion\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport moment from 'moment';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Injector } from '@angular/core';\nimport { DisplayCategory, ExtendedSearchParameterType, LightCorrelationSearchParameter, LightCorrelationSupportedSearchParameter, ParameterComparison } from '../../api/api';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class CorrelationSearchParameter {\n //#region Properties\n\n public get id(): string {\n return this.FieldName + '||' + this.ValueType + '||' + this.Value;\n }\n\n public FieldName!: string;\n public ValueType!: ExtendedSearchParameterType;\n public Comparison!: ParameterComparison;\n public Value!: string;\n public DisplayName!: string;\n public DisplayText = '';\n\n public get isMultiselect(): boolean {\n return this.Comparison === ParameterComparison.In || this.Comparison === ParameterComparison.NotIn;\n }\n\n //#endregion\n\n //#region Constructors\n\n constructor() {\n this.FieldName = '';\n this.ValueType = ExtendedSearchParameterType.String;\n this.Comparison = ParameterComparison.Equal;\n this.Value = '';\n this.DisplayName = this.FieldName;\n }\n\n //#endregion\n\n //#region Methods\n\n public static parseId(id: string): { fieldName: string; valueType: string; value: string } | undefined {\n if (id) {\n const parts = id.split('||');\n if (parts.length >= 3) {\n const last = id.indexOf('||', 2);\n if (last > 0) {\n return {\n fieldName: parts[0],\n valueType: parts[1],\n value: id.substring(last),\n };\n }\n }\n }\n return undefined;\n }\n\n public static getDefaultValue(valueType: ExtendedSearchParameterType): string {\n switch (valueType) {\n case ExtendedSearchParameterType.DateTime:\n return moment().utc().toISOString();\n case ExtendedSearchParameterType.Bool:\n return 'false';\n case ExtendedSearchParameterType.Int:\n case ExtendedSearchParameterType.Long:\n return '0';\n case ExtendedSearchParameterType.Double:\n return '0.0';\n case ExtendedSearchParameterType.Entity:\n return SafeGuid.EMPTY.toString();\n case ExtendedSearchParameterType.Categorical:\n return '';\n }\n return '';\n }\n\n public static localizeComparison(translateService: TranslateService, comparison: ParameterComparison): string {\n switch (comparison) {\n case ParameterComparison.GreaterThan:\n return '>';\n case ParameterComparison.GreaterThanOrEqualTo:\n return '>=';\n case ParameterComparison.LessThan:\n return '<';\n case ParameterComparison.LessThanOrEqualTo:\n return '<=';\n case ParameterComparison.Equal:\n return translateService.instant('STE_LABEL_OPERATORTYPE_EQUALS') as string;\n case ParameterComparison.NotEqual:\n return translateService.instant('STE_LABEL_OPERATORTYPE_DOESNOTEQUAL') as string;\n case ParameterComparison.Like:\n return translateService.instant('STE_LABEL_OPERATORTYPE_CONTAINS') as string;\n case ParameterComparison.In:\n return translateService.instant('STE_LABEL_OPERATORTYPE_IN') as string;\n case ParameterComparison.NotIn:\n return translateService.instant('STE_LABEL_OPERATORTYPE_NOTIN') as string;\n case ParameterComparison.Regex:\n return translateService.instant('STE_LABEL_OPERATORTYPE_REGULAREXPRESSION') as string;\n }\n }\n\n public static getDisplayTextFromComparison(parameter: CorrelationSearchParameter, text: string): string {\n if (parameter) {\n if (parameter.Comparison === ParameterComparison.In || parameter.Comparison === ParameterComparison.NotIn) {\n return '{' + text + '}';\n }\n }\n return text;\n }\n\n public static async setDisplayText(\n parameter: CorrelationSearchParameter,\n translateService: TranslateService,\n securityCenterClientService: SecurityCenterClientService,\n supported: LightCorrelationSupportedSearchParameter | undefined\n ): Promise {\n if (parameter) {\n // base value\n let text =\n parameter.DisplayName +\n ' ' +\n CorrelationSearchParameter.localizeComparison(translateService, parameter.Comparison) +\n \" '\" +\n parameter.getDisplayTextFromComparison(parameter.Value) +\n \"'\";\n\n if (parameter.ValueType === ExtendedSearchParameterType.Entity) {\n const scClient = securityCenterClientService?.scClient;\n if (scClient) {\n const guids = parameter.Value.split(',')\n // eslint-disable-next-line @typescript-eslint/unbound-method\n .map(SafeGuid.tryParse)\n .filter((guid) => guid.success)\n .map((guid) => guid.value);\n if (guids && guids.length > 0) {\n const query = new EntityQuery();\n query.fields.add(EntityFields.nameField);\n for (const guid of guids) {\n query.guids.add(guid);\n }\n\n const entities = await scClient.getEntitiesAsync(Entity, query, null, null);\n if (entities) {\n text =\n parameter.DisplayName +\n ' ' +\n CorrelationSearchParameter.localizeComparison(translateService, parameter.Comparison) +\n \" '\" +\n parameter.getDisplayTextFromComparison(\n entities\n .map((e) => e.name)\n .filter((e) => e)\n .join(',')\n ) +\n \"'\";\n }\n }\n }\n } else if (parameter.ValueType === ExtendedSearchParameterType.Categorical) {\n // map the categories to their supported display names for the UI\n if (supported) {\n const lst: string[] = [];\n const parts = parameter.Value.split(',');\n for (const part of parts) {\n // find the field & push the proper text\n const field: DisplayCategory | undefined = supported.categories?.find((cat) => cat.id === part);\n if (field) {\n lst.push(field.text);\n } else {\n lst.push(part); // push the raw since we couldn't find anything\n }\n }\n\n text =\n parameter.DisplayName +\n ' ' +\n CorrelationSearchParameter.localizeComparison(translateService, parameter.Comparison) +\n \" '\" +\n parameter.getDisplayTextFromComparison(lst.join(',')) +\n \"'\";\n }\n }\n\n parameter.DisplayText = text;\n }\n }\n\n public static ofLightParameter(parameter: LightCorrelationSearchParameter): CorrelationSearchParameter {\n const result = new CorrelationSearchParameter();\n result.Value = parameter.value ?? '';\n result.Comparison = parameter.comparison;\n result.DisplayName = parameter.fieldName;\n result.ValueType = parameter.valueType;\n result.FieldName = parameter.fieldName;\n return result;\n }\n\n // begin instance methods\n\n public async setDisplayText(\n translateService: TranslateService,\n securityCenterClientService: SecurityCenterClientService,\n supported: LightCorrelationSupportedSearchParameter | undefined\n ): Promise {\n await CorrelationSearchParameter.setDisplayText(this, translateService, securityCenterClientService, supported);\n }\n\n public async setDisplayTextAuto(injector: Injector, supported: LightCorrelationSupportedSearchParameter | undefined): Promise {\n const translateService = injector.get(TranslateService);\n const securityCenterClientService = injector.get(SecurityCenterClientService);\n if (translateService && securityCenterClientService) {\n await this.setDisplayText(translateService, securityCenterClientService, supported);\n }\n }\n\n public getDisplayTextFromComparison(text: string): string {\n return CorrelationSearchParameter.getDisplayTextFromComparison(this, text);\n }\n\n public resetValue(): void {\n this.Value = CorrelationSearchParameter.getDefaultValue(this.ValueType);\n }\n\n public setValueString(value: object | boolean | number): void {\n this.resetValue();\n if (this.ValueType && value != null) {\n switch (this.ValueType) {\n case ExtendedSearchParameterType.DateTime:\n {\n const mmt = moment(value as moment.MomentInput);\n if (mmt) {\n this.Value = mmt.utc().toISOString();\n }\n }\n break;\n case ExtendedSearchParameterType.Bool:\n {\n const b = value as boolean;\n if (b) {\n this.Value = 'true';\n } else {\n this.Value = 'false';\n }\n }\n break;\n case ExtendedSearchParameterType.Int:\n case ExtendedSearchParameterType.Long:\n case ExtendedSearchParameterType.Double:\n {\n const num = value as number;\n if (num) {\n this.Value = num.toString();\n }\n }\n break;\n case ExtendedSearchParameterType.Entity:\n {\n if (this.Comparison === 'In' || this.Comparison === 'NotIn') {\n if (typeof value === 'object') {\n if (value instanceof Array) {\n const guids = value as IGuid[];\n if (guids?.length > 0) {\n this.Value = guids.map((guid) => guid.toString()).join(',');\n }\n } else if (value?.toString && typeof value.toString === 'function') {\n this.Value = value.toString();\n }\n }\n } else {\n if (typeof value === 'object') {\n if (value instanceof Array) {\n const arr = value as IGuid[];\n if (arr?.length > 0) {\n this.Value = arr[0].toString();\n } else {\n this.Value = SafeGuid.EMPTY.toString();\n }\n } else if (value?.toString && typeof value.toString === 'function') {\n this.Value = value.toString();\n }\n } else {\n this.Value = SafeGuid.EMPTY.toString();\n }\n }\n }\n break;\n case ExtendedSearchParameterType.Categorical:\n if (typeof value === 'object' && value instanceof Array) {\n this.Value = value.join(',');\n } else {\n if (value?.toString && typeof value.toString === 'function') {\n this.Value = value.toString();\n }\n }\n break;\n default:\n if (value?.toString && typeof value.toString === 'function') {\n this.Value = value.toString();\n }\n break;\n }\n }\n }\n\n public getFormattedValue(): string | boolean | number | IGuid | string[] | IGuid[] {\n let value: string | boolean | number | IGuid | string[] | IGuid[] = '';\n if (this.ValueType && this.Value != null) {\n switch (this.ValueType) {\n case ExtendedSearchParameterType.DateTime:\n {\n const mmt = moment(this.Value);\n if (mmt) {\n value = mmt.local().toISOString();\n }\n }\n break;\n case ExtendedSearchParameterType.Bool:\n if (this.Value.toLowerCase() === 'true') {\n value = true;\n } else {\n value = false;\n }\n break;\n case ExtendedSearchParameterType.Int:\n case ExtendedSearchParameterType.Long:\n value = parseInt(this.Value);\n break;\n case ExtendedSearchParameterType.Double:\n value = parseFloat(this.Value);\n break;\n case ExtendedSearchParameterType.Entity:\n if (this.Comparison === 'In' || this.Comparison === 'NotIn') {\n const parts = this.Value.split(',').map(SafeGuid.tryParse);\n if (parts.every((a) => a.success)) {\n value = parts.map((a) => a.value);\n }\n } else {\n if (SafeGuid.isGuid(this.Value)) {\n value = SafeGuid.parse(this.Value);\n }\n }\n break;\n case ExtendedSearchParameterType.Region:\n value = this.Value;\n break;\n case ExtendedSearchParameterType.Categorical:\n if (this.Comparison === 'In' || this.Comparison === 'NotIn') {\n const parts = this.Value.split(',').map((item) => item.replace('\"', ''));\n if (parts) {\n value = parts;\n }\n } else {\n value = this.Value.toString();\n }\n break;\n default:\n value = this.Value.toString();\n break;\n }\n }\n return value;\n }\n\n public toLightParameter(): LightCorrelationSearchParameter {\n const parameter = new LightCorrelationSearchParameter();\n parameter.fieldName = this.FieldName;\n parameter.value = this.Value;\n parameter.valueType = this.ValueType;\n parameter.comparison = this.Comparison;\n return parameter;\n }\n\n //#endregion\n}\n","
    \n \n \n \n \n
    \n {{ genPlaceholder }}\n
    \n \n
    \n \n {{ values[0].text }}\n
    \n \n
    1 && multiSelect\">\n {{ selectedText }} \n
    \n
    \n \n
    \n
    \n \n
    \n 15\"\n [genDelay]=\"100\"\n placeholder=\"{{ 'STE_ACTION_SEARCH' | translate }}\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onSearchChange($event)\"\n (click)=\"searchInputClick($event)\"\n >\n \n
    \n
      \n \n \n \n \n \n \n \n {{ item.text }}\n {{ item.secondaryText }}\n \n \n
    \n
    \n
    \n
    \n \n {{ 'STE_LABEL_CLEAR' | translate }}\n \n \n \n {{ 'STE_LABEL_OK' | translate }}\n \n
    \n
    \n\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ButtonFlavor, ItemSlot, PopupPosition } from '@genetec/gelato';\nimport { ComboboxFlavor, Gelato, GenMeltedListItem, GenPopup, ItemDensity } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { uniqueId } from 'lodash-es';\nimport { coerceBooleanProperty } from '@modules/shared/utilities/coerceBooleanProperty';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-one-or-many-combobox-combobox',\n templateUrl: './one-or-many-combobox-combobox.component.html',\n styleUrls: ['./one-or-many-combobox-combobox.component.scss'],\n})\nexport class OneOrManyComboboxComponent extends Gelato implements OnInit {\n //#region Properties\n\n @ViewChild(GenPopup) popup!: GenPopup;\n\n @Input()\n public values: GenMeltedListItem[] = [];\n\n @Input()\n public get options(): GenMeltedListItem[] {\n return this.privateOptions;\n }\n public set options(values: GenMeltedListItem[]) {\n if (values?.length > 0) {\n this.privateOptions = values;\n } else {\n this.privateOptions = [];\n }\n this.visibleOptions = this.privateOptions;\n }\n\n @Input()\n public get multiSelect(): boolean {\n return this.privateMultiSelect;\n }\n public set multiSelect(v: boolean) {\n this.privateMultiSelect = coerceBooleanProperty(v);\n this.onMultiSelectChanged();\n }\n\n @Output()\n public valuesChanged = new EventEmitter();\n\n /**\n * String to describe the accociated component\n */\n @Input()\n public genLabel = '';\n\n /**\n * Style of element\n *\n * Ex: Flavor.Combobox.Flat\n */\n @Input()\n public genFlavor: ComboboxFlavor = ComboboxFlavor.Solid;\n\n /**\n * Text to show when nothing is selected.\n */\n @Input()\n public genPlaceholder!: string;\n\n /**\n * #### [HTML id Attribute](https://www.w3schools.com/tags/att_id.asp)\n * The id attribute specifies a unique id for an HTML element (the value must be unique within the HTML document).\n * The id attribute is most used to point to a style in a style sheet, and by JavaScript to manipulate the element with the specific id.\n */\n @Input()\n public id!: string;\n\n /**\n * Disallows user interaction\n */\n @Input()\n public get disabled(): boolean {\n return this.isDisabled;\n }\n public set disabled(value: boolean) {\n this.isDisabled = coerceBooleanProperty(value);\n }\n\n /**\n * Shows a button to clear the selection\n * Default: False\n */\n @Input()\n public get genShowClearButton(): boolean {\n return this.showClearButton;\n }\n public set genShowClearButton(value: boolean) {\n this.showClearButton = coerceBooleanProperty(value);\n }\n\n /**\n * Event emitted when the combo panel has been toggled.\n */\n @Output()\n public readonly genIsOpenChange: EventEmitter = new EventEmitter();\n\n public readonly ItemDensity = ItemDensity;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly ItemSlot = ItemSlot;\n public readonly PopupPosition = PopupPosition;\n\n /**\n * The ID to be set to the combobox\n */\n public comboboxId = '';\n\n /**\n * If combobox list is currently opened\n */\n public selectedText = '';\n public searchText = '';\n public visibleOptions: GenMeltedListItem[] = [];\n\n private showClearButton = false;\n private privateMultiSelect = false;\n private privateOptions: GenMeltedListItem[] = [];\n\n /**\n * Emits whenever the component is destroyed.\n */\n private isDisabled = false;\n\n //#endregion\n\n //#region Constructors\n\n constructor(private translateService: TranslateService) {\n super();\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * A callback method that is invoked immediately after the default change detector\n * has checked the directive's data-bound properties for the first time, and before any of\n * the view or content children have been checked. It is invoked only once when the directive\n * is instantiated.\n */\n public ngOnInit(): void {\n this.ensureIdGenerated();\n this.comboboxId = 'component-child--' + this.id;\n\n if (!this.genPlaceholder) {\n this.translateService\n .get('STE_LABEL_SELECT')\n .pipe(untilDestroyed(this))\n .subscribe((value) => {\n this.genPlaceholder = value as string;\n });\n }\n }\n\n //#endregion\n\n //#region Events\n\n public onSearchChange(newSearchText: string): void {\n this.searchText = newSearchText;\n if (this.searchText) {\n this.visibleOptions = this.options.filter((item) => item.text.toLowerCase().includes(this.searchText.toLowerCase()));\n } else {\n this.visibleOptions = this.options;\n }\n }\n public searchBackspace(): void {}\n\n /**\n * Called when an item is clicked in the combobox list\n */\n public async selectItem(newValue: GenMeltedListItem): Promise {\n if (this.multiSelect) {\n // toggle the check mark in the event of a click\n newValue.isChecked = !newValue.isChecked;\n } else {\n this.options.forEach((item) => (item.isChecked = false));\n newValue.isChecked = true;\n await this.closeDropdown();\n }\n\n this.values = this.options.filter((opt) => opt.isChecked);\n this.valuesChanged.emit(this.values);\n this.setSelectedText();\n }\n\n /**\n * Called when an item's checkbox is toggled\n */\n public onItemCheckChanged(checked: boolean, id: string): void {\n const found = this.options.find((item) => item.id === id);\n if (found) {\n found.isChecked = checked;\n this.values = this.options.filter((opt) => opt.isChecked);\n this.valuesChanged.emit(this.values);\n }\n\n this.setSelectedText();\n }\n\n public onItemCheckClicked(id: string, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n const found = this.options.find((item) => item.id === id);\n if (found) {\n found.isChecked = !found.isChecked;\n this.values = this.options.filter((opt) => opt.isChecked);\n this.valuesChanged.emit(this.values);\n }\n this.setSelectedText();\n }\n }\n\n /**\n * Called when the Clear button is clicked\n *\n * _genShowClearButton must be set_\n */\n public async clearSelection(event: Event): Promise {\n this.values = [];\n this.valuesChanged.emit(this.values);\n await this.closeDropdown();\n\n this.setSelectedText();\n }\n\n /**\n * Closes the dropdown and emits the close event.\n */\n public async closeDropdown(): Promise {\n if (this.popup.open) {\n await this.popup.close();\n this.genIsOpenChange.emit(false);\n // this.onTouched();\n }\n\n this.setSelectedText();\n }\n\n /**\n * Opens the dropdown.\n */\n public async openDropdown(): Promise {\n if (this.disabled) {\n return;\n }\n await this.popup.show();\n this.genIsOpenChange.emit(true);\n\n this.setSelectedText();\n }\n\n /**\n * Toggles the dropdown.\n */\n public async toggleDropdown(event?: MouseEvent): Promise {\n if (this.isDisabled) {\n return;\n }\n\n if (event !== undefined && event !== null) {\n event.preventDefault();\n }\n\n if (!this.multiSelect) {\n await this.popup.toggle();\n } else if (!this.popup.open) {\n await this.popup.show();\n }\n }\n\n public searchInputClick(event?: MouseEvent): void {\n if (event !== undefined && event !== null) {\n event.stopPropagation();\n }\n }\n\n private onMultiSelectChanged() {\n if (this.multiSelect) {\n if (this.values.length > 0) {\n this.values[0].isChecked = true;\n }\n // enabled\n } else {\n // disabled\n if (this.options?.length && this.options.length > 0) {\n this.options.forEach((opt) => (opt.isChecked = false));\n this.options[0].isChecked = true;\n this.values = this.options.filter((opt) => opt.isChecked);\n this.valuesChanged.emit(this.values);\n }\n }\n }\n\n //#endregion\n\n //#region Private Methods\n\n private setSelectedText() {\n this.selectedText = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: this.privateOptions.filter((item) => item.isChecked).length }) as string;\n }\n\n /**\n * Make sure that an id is generated\n */\n private ensureIdGenerated(): void {\n if (!this.id) {\n this.id = uniqueId();\n }\n }\n\n //#endregion\n}\n","\n \n
    \n
    \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ 'STE_LABEL_DATAFIELD' | translate }}\n \n \n {{ selectedSupportedParameter.text }}\n \n \n \n \n \n \n \n
    \n \n {{ 'STE_LABEL_NOUN_VALUE' | translate }}\n \n
    \n
    \n \n {{ 'STE_LABEL_NOUN_VALUE' | translate }}\n
    \n
    \n {{ 'STE_LABEL_NOUN_VALUE' | translate }}\n
    \n
    \n
    \n \n \n {{ 'STE_LABEL_NOUN_VALUE' | translate }}\n \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n {{ 'STE_LABEL_NOUN_VALUE' | translate }}\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { GenMeltedItem, GenMeltedListItem, GenMeltedModalComponent, ItemDensity, MeltedModalAction } from '@genetec/gelato-angular';\nimport { SpinnerSize } from '@genetec/gelato-angular';\nimport { isNullOrWhitespace } from '@genetec/web-maps';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { EntityBrowserService } from '@modules/shared/entity-browser/entity-browser.service';\nimport { EntityTypeSet } from '@modules/shared/entity-browser/entity-type-set';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { EntityTypeData } from '@modules/shared/models/entity-type-data';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ExtendedSearchParameterType, LightCorrelationSupportedSearchParameter, LightDataSourceRegistration, ParameterComparison } from '../../api/api';\nimport { CorrelationService } from '../../services/correlation.service';\nimport { CorrelationSearchParameter } from './correlation-search-parameter';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-correlation-parameters-modal',\n templateUrl: './correlation-parameters-modal.component.html',\n styleUrls: ['./correlation-parameters-modal.component.scss'],\n})\nexport class CorrelationParametersModalComponent extends ConnectionAwareModalComponent implements OnInit {\n //#region Fields\n\n @ViewChild(GenMeltedModalComponent)\n public genModalComponent!: GenMeltedModalComponent;\n\n @Input()\n public returnResult!: (parameter?: CorrelationSearchParameter) => void;\n\n public readonly TextFlavor = TextFlavor;\n public readonly SpinnerSize = SpinnerSize;\n\n public querying = false;\n public allSupportedParameters: Array = [];\n public selectedSupportedParameter: GenMeltedListItem | undefined;\n public comparisons: Array = [];\n public selectedComparison: ContextMenuItem | undefined;\n public comboValue: GenMeltedListItem[] = [];\n public comboOptions: Array = [];\n public searchText = '';\n\n public parameter: CorrelationSearchParameter = new CorrelationSearchParameter();\n // default entity browser filter\n public entityFilter = new EntityBrowserFilter();\n\n public get parameterValue(): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.parameter.getFormattedValue();\n }\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public set parameterValue(theValue: any) {\n if (theValue !== null) {\n this.parameter.setValueString(theValue);\n } else {\n this.parameter.resetValue();\n }\n }\n\n public get selectedLightSupportedParameter(): LightCorrelationSupportedSearchParameter {\n const defaultRangeParameter = new LightCorrelationSupportedSearchParameter({\n displayName: '',\n fieldName: '',\n supportedComparison: [],\n valueType: ExtendedSearchParameterType.String,\n minDate: undefined,\n maxDate: undefined,\n minimum: undefined,\n maximum: undefined,\n });\n const param = this.selectedSupportedParameter;\n if (param) {\n const parts = param.id.split('||');\n if (parts.length >= 2) {\n const supported = this.supportedParameters.find((el) => el.fieldName === parts[0] && el.valueType === parts[1]);\n return supported ?? defaultRangeParameter;\n }\n }\n return defaultRangeParameter;\n }\n\n private registrations: Array = [];\n private supportedParameters: Array = [];\n private isClosing = false;\n //#endregion\n\n //#region Constructor\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n authService: AuthService,\n private correlationService: CorrelationService,\n private translateService: TranslateService,\n private securityCenterClientService: SecurityCenterClientService,\n private entityBrowserService: EntityBrowserService\n ) {\n super(authService, injector, trackingService);\n\n // hook up to the modal send action\n this.genModalAction.pipe(untilDestroyed(this)).subscribe((modalAction: MeltedModalAction) => this.onSubmit(modalAction));\n }\n\n //#endregion\n\n //#region Methods\n\n async ngOnInit() {\n super.ngOnInit();\n this.entityFilter = new EntityBrowserFilter(await this.entityBrowserService.getDefaultLogicalTypesAsync());\n }\n\n public hideModal(): void {\n void this.onSubmit(MeltedModalAction.Dismiss);\n if (this.genModalComponent) {\n this.genModalComponent.hide();\n }\n }\n\n public async refresh(dataTypes: Array | undefined, parameter: CorrelationSearchParameter | undefined): Promise {\n let registrations: Array | undefined;\n this.registrations = [];\n this.supportedParameters = [];\n this.allSupportedParameters = [];\n this.selectedSupportedParameter = undefined;\n this.querying = true;\n try {\n if (this.correlationService) {\n if (dataTypes && dataTypes?.length > 0) {\n registrations = await this.correlationService.getRegistrations(dataTypes);\n } else {\n registrations = await this.correlationService.getRegistrations(undefined);\n }\n if (registrations) {\n for (const reg of registrations) {\n this.registrations.push(reg);\n if (reg.supportedSearchParameters) {\n for (const param of reg.supportedSearchParameters) {\n if (\n this.supportedParameters.findIndex(\n (item) => item.fieldName === param.fieldName && item.displayName === param.displayName && item.valueType === param.valueType\n ) > -1\n ) {\n // parameter already exists, don't add it 2x\n } else {\n this.supportedParameters.push(param);\n }\n }\n }\n }\n }\n }\n // sort the supported params by name\n this.supportedParameters.sort((a, b) => {\n if (a.displayName > b.displayName) return 1;\n return -1;\n });\n\n // convert the supported parameters to GenItem's for display\n this.supportedParameters.forEach((parameter2) => {\n this.allSupportedParameters.push({\n text: parameter2.displayName,\n id: parameter2.fieldName + '||' + parameter2.valueType,\n density: ItemDensity.Compact,\n });\n });\n\n // there is a previous parameter, reload it!\n if (parameter?.FieldName && parameter?.ValueType && parameter?.Comparison) {\n this.parameter.Value = parameter.Value;\n this.parameter.FieldName = parameter.FieldName;\n this.parameter.ValueType = parameter.ValueType;\n this.parameter.Comparison = parameter.Comparison;\n\n const fid = parameter.FieldName + '||' + parameter.ValueType;\n const supported = this.supportedParameters.find((item) => item.fieldName === parameter.FieldName && item.valueType === parameter.ValueType);\n const selectedSupported = this.allSupportedParameters.find((item) => item.id === fid);\n if (selectedSupported && supported) {\n await this.setEntityFilterAsync(supported);\n this.selectedSupportedParameter = selectedSupported;\n this.comparisons = Array.from(supported.supportedComparison).map((item) => {\n return {\n text: CorrelationSearchParameter.localizeComparison(this.translateService, item),\n id: item,\n };\n });\n this.selectedComparison = this.comparisons.find((item) => item.id === this.parameter.Comparison);\n this.parameter.DisplayName = supported.displayName;\n }\n }\n } finally {\n this.querying = false;\n }\n }\n\n //#region Events\n\n public async onSubmit(modalAction: MeltedModalAction): Promise {\n if (this.isClosing) {\n // prevent re-entrance\n return;\n }\n\n this.isClosing = true;\n try {\n if (modalAction === MeltedModalAction.Default && this.parameter) {\n await this.setParameterDisplayText();\n this.returnResult(this.parameter);\n } else {\n this.returnResult(undefined);\n }\n } finally {\n this.isClosing = false;\n }\n }\n\n public onSearchChange(text: string): void {\n this.searchText = text;\n if (text) {\n this.limitSupportedParameters(text);\n } else {\n this.limitSupportedParameters(null);\n }\n }\n\n public async onSelectedSupportedParameterChanged(event: GenMeltedListItem | null): Promise {\n if (!event) {\n // early exit if event is null.\n return;\n }\n this.selectedSupportedParameter = event;\n this.selectedComparison = undefined;\n this.comparisons = [];\n this.comboOptions = [];\n this.comboValue = [];\n\n let previousValueType = ExtendedSearchParameterType.String;\n if (this.parameter) {\n previousValueType = this.parameter.ValueType;\n }\n\n const parts = event.id.split('||');\n if (parts.length >= 2) {\n const supported = this.supportedParameters.find((el) => el.fieldName === parts[0] && el.valueType === parts[1]);\n if (supported) {\n await this.setEntityFilterAsync(supported);\n\n // change the parameter\n this.parameter = new CorrelationSearchParameter();\n\n // set the value type\n this.parameter.ValueType = supported.valueType;\n\n // save the value (if possible)\n if (!this.valueTypeConversionExists(previousValueType, supported.valueType)) {\n this.parameterValue = null;\n }\n\n // update the parameter's field name\n this.parameter.FieldName = supported.fieldName;\n this.parameter.DisplayName = supported.displayName;\n\n // reset the comparisons\n if (supported.supportedComparison) {\n supported.supportedComparison.forEach((item) => {\n this.comparisons.push({\n text: CorrelationSearchParameter.localizeComparison(this.translateService, item),\n id: item,\n });\n });\n if (this.comparisons.length > 0) {\n this.selectedComparison = this.comparisons[0];\n }\n }\n\n if (supported.valueType === 'Categorical' && supported.categories) {\n supported.categories.forEach((cat) => {\n this.comboOptions.push({\n id: cat.id,\n text: cat.text,\n isChecked: false,\n });\n });\n if (this.comboOptions.length > 0) {\n this.comboValue = [this.comboOptions[0]];\n this.parameterValue = this.comboValue.map((item) => item.id);\n }\n }\n\n // set the first supported comparison as the selected comparison\n if (this.comparisons.length > 0) {\n this.parameter.Comparison = this.comparisons[0].id as ParameterComparison;\n this.selectedComparison = this.comparisons[0];\n }\n }\n }\n }\n\n public onComparisonChanged(newValue: ContextMenuItem): void {\n // the comparison was changed, apply to the current \"parameter\"\n if (newValue?.id && this.parameter) {\n this.parameter.Comparison = newValue.id as ParameterComparison;\n }\n }\n\n public onComboboxValueChanged(newValues: GenMeltedListItem[]): void {\n if (newValues) {\n this.parameterValue = newValues.map((item) => item.id);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public onValueChanged(value: any): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.parameterValue = value;\n }\n\n public onEntityGuidsChanged(value: IGuid[]): void {\n if (this.parameter?.Comparison === 'In' || this.parameter?.Comparison === 'NotIn') {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.parameterValue = value.map(SafeGuid.from);\n } else if (value.length > 0) {\n this.parameterValue = new SafeGuid(value[0]);\n } else {\n this.parameterValue = '';\n }\n }\n\n //#endregion\n\n private valueTypeConversionExists(previousType: ExtendedSearchParameterType, newType: ExtendedSearchParameterType) {\n if (newType === ExtendedSearchParameterType.String) return true;\n if (newType === previousType) return true;\n\n if (newType === ExtendedSearchParameterType.Int && previousType === ExtendedSearchParameterType.Long) return true;\n if (newType === ExtendedSearchParameterType.Long && previousType === ExtendedSearchParameterType.Int) return true;\n if (newType === ExtendedSearchParameterType.Double && (previousType === ExtendedSearchParameterType.Int || previousType === ExtendedSearchParameterType.Long)) return true;\n\n return false;\n }\n\n private limitSupportedParameters(text: string | null) {\n const pselected = this.selectedSupportedParameter?.id;\n const allSupportedParameters: GenMeltedItem[] = [];\n if (!isNullOrWhitespace(text)) {\n // convert the supported parameters to GenItem's for display\n this.supportedParameters.forEach((parameter) => {\n if (!parameter.displayName.toLowerCase().includes(text.toLowerCase())) {\n // skip this parameter\n return;\n }\n\n allSupportedParameters.push({\n text: parameter.displayName,\n id: parameter.fieldName + '||' + parameter.valueType,\n density: ItemDensity.Compact,\n });\n });\n } else {\n // no filter, reload everything\n this.supportedParameters.forEach((parameter) => {\n allSupportedParameters.push({\n text: parameter.displayName,\n id: parameter.fieldName + '||' + parameter.valueType,\n density: ItemDensity.Compact,\n });\n });\n }\n\n this.allSupportedParameters = allSupportedParameters;\n\n const previouslySelected = this.allSupportedParameters.find((item) => !isNullOrWhitespace(pselected) && item.id === pselected);\n if (previouslySelected) {\n this.selectedSupportedParameter = previouslySelected;\n } else if (this.allSupportedParameters.length > 0) {\n this.selectedSupportedParameter = this.allSupportedParameters[0];\n } else {\n this.selectedSupportedParameter = undefined;\n }\n }\n\n private async setEntityFilterAsync(supported: LightCorrelationSupportedSearchParameter | undefined): Promise {\n if (supported) {\n if (supported.entityTypes && supported.entityTypes?.length > 0) {\n const set = new EntityTypeSet();\n for (const ty of supported.entityTypes) {\n set.add(new EntityTypeData(ty));\n }\n if (supported.entityTypes.some((item) => item === EntityTypes.CustomEntities) && supported.customEntityTypes && supported.customEntityTypes?.length > 0) {\n for (const custom of supported.customEntityTypes) {\n set.add(new EntityTypeData(EntityTypes.CustomEntities, custom));\n }\n }\n this.entityFilter = new EntityBrowserFilter(set);\n } else {\n this.entityFilter = new EntityBrowserFilter(await this.entityBrowserService.getDefaultLogicalTypesAsync());\n }\n }\n }\n\n private async setParameterDisplayText(): Promise {\n if (this.parameter) {\n let supported: LightCorrelationSupportedSearchParameter | undefined;\n if (this.selectedSupportedParameter) {\n supported = this.supportedParameters.find((item) => item.fieldName === this.parameter.FieldName && item.valueType === this.parameter.ValueType);\n }\n await this.parameter.setDisplayText(this.translateService, this.securityCenterClientService, supported);\n }\n }\n\n //#endregion\n}\n","import { IGuid } from 'safeguid';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class FilterDataTypesModel {\n public dataTypes: Array = [];\n public parameters: Array = [];\n public description!: string;\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { GenAction, GenMeltedItem, GenListActions, GenMeltedListItem, GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { FilterClient } from '@modules/shared/api/api';\nimport { FilterBaseComponent } from '@modules/shared/components/filters/common-filters/filter-base.component';\nimport { MODAL_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { FilterCoordinatorService } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { CorrelationService } from '../../../services/correlation.service';\nimport { CorrelationParametersModalComponent } from '../../parameters-modal/correlation-parameters-modal.component';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\nimport { FilterDataTypesModel } from './filter-data-types.model';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class DataTypesFilter {\n public DataTypes: Array = [];\n public Parameters: Array = [];\n public Description!: string;\n}\n\n@Component({\n selector: 'app-filter-data-types',\n templateUrl: './filter-data-types.component.html',\n styleUrls: ['./filter-data-types.component.scss'],\n})\nexport class FilterDataTypesComponent extends FilterBaseComponent implements OnInit, OnDestroy {\n public static addParameterAction = '1acc3f1b-2978-4eec-a238-31cdff1422bd';\n public static editParameterAction = 'e8fc447c-eed0-4e40-9d9f-53b6d603021f';\n public static removeParameterAction = '96b5e08e-11fc-42ae-b194-9ccfb9f5694f';\n\n //#region Fields\n\n public currentFilter: FilterDataTypesModel = new FilterDataTypesModel();\n public dataTypes: Array = [];\n public parameters: Array = [];\n\n public conditionActions!: GenListActions;\n\n private addParameterAction: GenAction = {\n execute: (items) => this.addParameterActionExecute(items),\n canExecute: () => true,\n id: FilterDataTypesComponent.addParameterAction,\n };\n private editParameterAction: GenAction = {\n execute: (items) => this.editParameterActionExecute(items),\n canExecute: (items) => this.editParameterActionCanExecute(items),\n id: FilterDataTypesComponent.editParameterAction,\n };\n private removeParameterAction: GenAction = {\n execute: (items) => this.removeParameterActionExecute(items),\n canExecute: (items) => this.removeParameterActionCanExecute(items),\n id: FilterDataTypesComponent.removeParameterAction,\n };\n\n private selectedItems: Array = [];\n\n //#endregion\n\n constructor(\n trackingService: TrackingService,\n private correlationService: CorrelationService,\n @Inject(MODAL_SERVICE) private modalService: GenModalService,\n filterClient: FilterClient,\n filterCoordinatorService: FilterCoordinatorService,\n translateService: TranslateService\n ) {\n super(trackingService, filterClient, filterCoordinatorService, translateService);\n this.conditionActions = {\n add: this.addParameterAction,\n edit: this.editParameterAction,\n delete: this.removeParameterAction,\n };\n }\n\n //#region Public Methods\n\n public onParametersChanged(items: unknown): void {}\n\n public onDataTypesChanged(items: Array | GenMeltedListItem | null): void {\n if (!items) {\n // early exit if items is null\n return;\n }\n\n let selectedItemsIds: string[];\n if (items instanceof Array) {\n this.selectedItems = items;\n selectedItemsIds = items.map((x: GenMeltedListItem) => x.id);\n } else {\n this.selectedItems = [items];\n selectedItemsIds = [items.id];\n }\n this.currentFilter.dataTypes = selectedItemsIds.map((grp: string) => SafeGuid.parse(grp));\n this.value = this.currentFilter;\n }\n\n public onFilterToggled(isFilterOpened: boolean): void {\n super.onFilterToggled(isFilterOpened);\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n this.selectedItems = [];\n\n await this.loadDataTypes();\n\n this.value = this.currentFilter;\n }\n\n public updateState(): void {\n const selectedItems = this.selectedItems;\n let selection = this.state.selection;\n\n if (!selectedItems?.length) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (selectedItems.length === 1) {\n selection = selectedItems[0].text;\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.value = new FilterDataTypesModel();\n }\n\n public isDefaulted(): boolean {\n return this.value.dataTypes.length === 0 && this.value.parameters.length === 0;\n }\n\n public override getDefaultValue(): FilterDataTypesModel {\n return new FilterDataTypesModel();\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async loadDataTypes() {\n this.dataTypes = [];\n if (this.correlationService) {\n const dataTypes = await this.correlationService.getDataTypes();\n if (dataTypes) {\n for (const dt of dataTypes) {\n const item: GenMeltedItem = { text: dt.name, id: dt.dataType.toString() };\n if (dt.customIcon) {\n item.image = dt.customIcon;\n } else if (dt.icon) {\n item.icon = dt.icon as MeltedIcon;\n } else {\n item.icon = MeltedIcon.CorrelationService;\n }\n this.dataTypes.push(item);\n }\n }\n }\n }\n\n private async addParameterActionExecute(items?: any[] | undefined): Promise {\n if (this.modalService) {\n const modal = this.modalService.open(CorrelationParametersModalComponent, undefined);\n if (modal) {\n // set the modal data & refresh the view\n await modal.refresh(this.currentFilter.dataTypes, undefined);\n\n const promise = new Promise((resolve) => {\n modal.returnResult = resolve;\n });\n const result = await promise;\n if (result) {\n const item = {\n id: result.FieldName + '||' + result.ValueType,\n text: result.DisplayText,\n };\n this.parameters.push(item);\n // set the value\n this.currentFilter.parameters.push(result);\n this.value = this.currentFilter;\n }\n }\n }\n }\n\n private async editParameterActionExecute(items?: any[] | undefined) {\n let parameter: CorrelationSearchParameter | undefined;\n if (items) {\n const item = items[0] as unknown;\n if (isObject(item) && typeof item.id === 'string') {\n const parts = item.id.split('||');\n if (parts.length >= 2) {\n const filter = this.value;\n if (filter?.parameters) {\n parameter = filter?.parameters.find((param) => param.FieldName === parts[0] && param.ValueType === parts[1]);\n }\n }\n }\n }\n if (parameter) {\n if (this.modalService) {\n const modal = this.modalService.open(CorrelationParametersModalComponent, undefined);\n if (modal) {\n // set the modal data & refresh the view\n await modal.refresh(this.currentFilter.dataTypes, parameter);\n\n const promise = new Promise((resolve) => {\n modal.returnResult = resolve;\n });\n const result = await promise;\n if (result) {\n const id = result.FieldName + '||' + result.ValueType;\n this.parameters = this.parameters.filter((param: GenMeltedItem) => param.id !== id);\n const item = {\n id,\n text: result.DisplayText,\n };\n this.parameters.push(item);\n\n // set the value\n this.currentFilter.parameters = this.currentFilter.parameters.filter(\n (item2) => item2.FieldName !== result?.FieldName && item2.ValueType !== result?.ValueType\n );\n this.currentFilter.parameters.push(result);\n this.value = this.currentFilter;\n }\n }\n }\n }\n }\n\n private editParameterActionCanExecute(items?: any[] | undefined): boolean {\n if (items) {\n if (items.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n private removeParameterActionExecute(items?: any[] | undefined) {\n if (items) {\n const item = items[0] as unknown;\n if (isObject(item) && typeof item.id === 'string') {\n const parts = item.id.split('||');\n if (parts.length >= 2) {\n this.parameters = this.parameters.filter((param) => param.id !== item.id);\n this.currentFilter.parameters = this.currentFilter.parameters.filter((param) => param.FieldName !== parts[0] && param.ValueType !== parts[1]);\n this.value = this.currentFilter;\n }\n }\n }\n }\n\n private removeParameterActionCanExecute(items?: any[] | undefined): boolean {\n if (items) {\n if (items.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n //#endregion\n}\n","\n
    \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n","import { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class Commands {\n public static readonly ingestData: IGuid = SafeGuid.parse('98cc3a1b-b19c-46d1-adcf-9f8eed5ea2db');\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SafeGuid, IGuid } from 'safeguid';\nimport { GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { Coordinate } from 'RestClient/Client/Model/MapEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { LanguageService } from '../../shared/services/language/language.service';\nimport {\n CommandBindings,\n CommandContext,\n CommandRequirements,\n CommandsService,\n COMMANDS_SERVICE,\n ExecuteCommandData,\n FEATURES_SERVICE,\n GeoCoordinate,\n MODAL_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { Commands } from '../enumerations/commands';\nimport { IngestDataModalComponent } from '../components/ingest-data-modal/data-ingestion-modal.component';\nimport { FeaturesService } from '../../shared/services/features/features.service';\nimport { CorrelationFeatures } from '../enumerations/correlation.features';\nimport { CommandProviderBase, CommandDescriptor, CommandArgs } from '../../shared/services/commands/command-provider-base';\nimport { IngestionService } from './ingestion.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class IngestionCommandProvider extends CommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(Commands.ingestData, this.createIngestionCommandDescriptor(Commands.ingestData, 'STE_ACTION_INGESTDATA', MeltedIcon.Database));\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, CorrelationFeatures.ingestDataFeature]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n @Inject(MODAL_SERVICE) private modalService: GenModalService,\n private ingestionService: IngestionService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: CommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n if (await this.isIngestAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(Commands.ingestData);\n }\n return new Promise((resolve) => resolve(commandIds));\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: Commands.ingestData,\n executeCommandHandler: (executeCommandData) => this.safeExecuteCommand((safeExecuteCommandData) => this.executeIngestData(safeExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsCommandAvailableAsync((safeCommandContext) => this.isIngestAvailableAsync(safeCommandContext), commandContext),\n });\n }\n\n private createIngestionCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: CommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_LABEL_NOUN_RECORDCACHING',\n groupIcon: MeltedIcon.CorrelationService,\n keyBinding,\n requirements,\n };\n }\n\n private executeIngestData(executeCommandData: ExecuteCommandData): void {\n let coordinate: GeoCoordinate | undefined;\n const args = this.extractArgs(executeCommandData.commandContext);\n if (args.mapContext) {\n if (args.mapContext.geoLocalised) {\n coordinate = args.mapContext.location as GeoCoordinate;\n }\n }\n\n if (coordinate && this.modalService) {\n // pop ingest data modal\n const modal = this.modalService.open(IngestDataModalComponent, undefined);\n if (modal) {\n const coord = new Coordinate();\n coord.initializeAllFields();\n coord.latitude = coordinate.latitude;\n coord.longitude = coordinate.longitude;\n modal.location = coord;\n }\n }\n executeCommandData.isHandled = true;\n }\n\n private async isIngestAvailableAsync(commandContext: CommandContext, commandArgs?: CommandArgs): Promise {\n let args = commandArgs;\n if (!args) {\n args = this.extractArgs(commandContext);\n }\n\n if (this.ingestionService && args.mapContext?.geoLocalised && (await this.areCommandRequirementsMetAsync(Commands.ingestData, commandContext, commandArgs))) {\n const cache = this.ingestionService.getIngestionTypeCache();\n if (cache && cache.length > 0) {\n return true;\n }\n }\n return false;\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { ContentPluginComponent, Content, PluginContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandsService, COMMANDS_SERVICE, ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { DatumVisualDirective } from '@modules/correlation/interfaces/correlation-datum';\nimport { CorrelationContentTypes } from '../../../enumerations/correlation-content-types';\nimport { CorrelationFeatures } from '../../../enumerations/correlation.features';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Component({\n selector: 'app-mobile-state-sidepane-widget',\n templateUrl: './mobile-sidepane-state-widget.component.html',\n styleUrls: ['./mobile-sidepane-state-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: MobileUserStateSidepaneWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: MobileUserStateSidepaneWidgetComponent.pluginId, priority: 1 },\n isContentSupported: (content: Content) => {\n if (content) {\n if (content.type && content.parameters) {\n if (\n CorrelationContentTypes.datum.equals(content.type) &&\n content.parameters?.hasField(CorrelationContentTypes.visualModel) &&\n content.parameters?.hasField(CorrelationContentTypes.dataType)\n ) {\n const dataTypeString = content.parameters.getField(CorrelationContentTypes.dataType);\n if (dataTypeString) {\n if (CorrelationContentTypes.mobileUser.equals(dataTypeString)) return true;\n }\n }\n }\n }\n return false;\n },\n requirements: {\n licenses: [KnownLicenses.correlation],\n features: [CorrelationFeatures.mobileUserDatumFeatureId],\n },\n})\nexport class MobileUserStateSidepaneWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('39ECB286-35CB-4777-BAF6-8B384AA31D71');\n\n public dataContext?: PluginContext;\n public content?: Content;\n public isLoading = true;\n public isOnlineStateString = '';\n public userStateString = '';\n public isOnlineValue = false;\n\n public get isOnline(): boolean {\n return this.isOnlineValue;\n }\n public set isOnline(value: boolean) {\n this.isOnlineValue = value;\n this.isOnlineStateString = this.translateService.instant(value ? 'STE_LABEL_MOBILEUSER_ONLINE' : 'STE_LABEL_MOBILEUSER_OFFLINE') as string;\n }\n\n private userGuid: IGuid = SafeGuid.EMPTY;\n private directive!: DatumVisualDirective;\n\n constructor(trackingService: TrackingService, private translateService: TranslateService, @Inject(COMMANDS_SERVICE) public commandsService: CommandsService) {\n super(trackingService);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n const parameters = this.content?.parameters;\n if (parameters?.hasField(CorrelationContentTypes.visualModel)) {\n const data = parameters.getField(CorrelationContentTypes.visualModel);\n if (data) {\n const directive = JSON.parse(data) as DatumVisualDirective;\n if (directive) {\n if (directive.Datum) {\n this.directive = directive;\n const online = this.directive.Datum.AdditionalParameters.IsOnline?.toLowerCase();\n if (online && online === 'true') {\n this.isOnline = true;\n } else {\n this.isOnline = false;\n }\n\n const username = this.directive.Datum.AdditionalParameters.UserName;\n const entity = this.directive.Datum.AdditionalParameters.EntityName;\n if (username) {\n this.userStateString = username;\n } else if (entity) {\n this.userStateString = entity;\n } else {\n this.userStateString = this.translateService.instant('STE_LABEL_USER_UNKNOWN') as string;\n }\n\n const userGuidString = this.directive?.Datum?.AdditionalParameters.UserGuid;\n if (userGuidString && SafeGuid.isGuid(userGuidString)) {\n const userGuid = SafeGuid.parse(userGuidString);\n if (!userGuid.equals(SafeGuid.EMPTY)) {\n this.userGuid = userGuid;\n }\n }\n }\n this.isLoading = false;\n }\n }\n }\n }\n\n public setDataContext(context: ContentService): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n {{ userStateString }}\n {{ isOnlineStateString }} \n\n","\n {{ 'STE_LABEL_OVERVIEW' | translate }}\n\n
    \n {{ 'STE_LABEL_LOADING' | translate }}\n\n \n \n \n \n \n \n {{ 'STE_LABEL_APPLICATION' | translate }}\n \n \n {{ application }}\n \n \n \n \n {{ 'STE_LABEL_USERNAME' | translate }}\n \n \n {{ user }}\n \n \n \n \n {{ 'STE_LABEL_LASTCONNECTIONTIME' | translate }}\n \n {{ lastConnectionTime }} \n \n \n \n {{ 'STE_LABEL_ADDRESS' | translate }}\n \n \n {{ lastKnownAddress }}\n \n \n \n \n {{ 'STE_LABEL_NOUN_EMAIL' | translate }}\n \n {{ email }}\n \n \n
    \n","import { AfterViewInit, Component, Inject, OnInit } from '@angular/core';\nimport { ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandsService, COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport moment from 'moment';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { CorrelationContentTypes } from '@modules/correlation/enumerations/correlation-content-types';\nimport { CorrelationFeatures } from '@modules/correlation/enumerations/correlation.features';\nimport { DatumVisualDirective } from '@modules/correlation/interfaces/correlation-datum';\nimport { CorrelationDatumSidepaneWidgetComponent } from '../datum-sidepane-widget/correlation-datum-sidepane-widget.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-mobile-details-sidepane-widget',\n templateUrl: './mobile-details-sidepane-widget.component.html',\n styleUrls: ['./mobile-details-sidepane-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: MobileUserDetailsSidepaneWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: MobileUserDetailsSidepaneWidgetComponent.pluginId, priority: 2 },\n isContentSupported: (content: Content) => {\n if (content) {\n if (content.type && content.parameters) {\n if (\n CorrelationContentTypes.datum.equals(content.type) &&\n content.parameters?.hasField(CorrelationContentTypes.visualModel) &&\n content.parameters?.hasField(CorrelationContentTypes.dataType)\n ) {\n const dataTypeString = content.parameters.getField(CorrelationContentTypes.dataType);\n if (dataTypeString) {\n if (CorrelationContentTypes.mobileUser.equals(dataTypeString)) return true;\n }\n }\n }\n }\n return false;\n },\n requirements: {\n licenses: [KnownLicenses.correlation],\n features: [CorrelationFeatures.mobileUserDatumFeatureId],\n },\n})\nexport class MobileUserDetailsSidepaneWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent, AfterViewInit {\n //#region Fields\n\n public static pluginId = SafeGuid.parse('39ECB286-35CB-4777-BAF6-8B384AA31D72');\n\n public readonly ImageFlavor = ImageFlavor;\n public readonly ImageFit = ImageFit;\n public readonly TextFlavor = TextFlavor;\n\n public dataContext: unknown;\n public content: Content | undefined;\n\n public isLoading = true;\n public application = '';\n public user = '';\n public lastConnectionTime = '';\n public lastKnownAddress = '';\n public email = '';\n public emailLink = '';\n public picture = '';\n\n private directive!: DatumVisualDirective;\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n trackingService: TrackingService,\n private translateService: TranslateService,\n @Inject(COMMANDS_SERVICE) public commandsService: CommandsService,\n private timeService: TimeService\n ) {\n super(trackingService);\n }\n\n //#endregion\n\n //#region Methods\n\n public ngAfterViewInit(): void {\n const parameters = this.content?.parameters;\n if (parameters?.hasField(CorrelationContentTypes.visualModel)) {\n const data = parameters.getField(CorrelationContentTypes.visualModel);\n if (data) {\n const directive = JSON.parse(data) as DatumVisualDirective;\n if (directive) {\n if (directive.Datum) {\n this.directive = directive;\n\n // app\n const entity = this.directive.Datum.AdditionalParameters.EntityName;\n if (entity) {\n this.application = entity;\n } else {\n this.application = this.translateService.instant('STE_LABEL_APPLICATION_UNKNOWN') as string;\n }\n\n // user\n const user = this.directive.Datum.AdditionalParameters.UserName;\n if (user) {\n this.user = user;\n } else {\n this.user = this.translateService.instant('STE_LABEL_USER_UNKNOWN') as string;\n }\n\n // last seen\n if (this.directive.Datum.TimestampUtc) {\n const local = moment.utc(this.directive.Datum.TimestampUtc).local();\n this.lastConnectionTime = this.timeService.formatRelative(local.toDate());\n } else {\n this.lastConnectionTime = this.translateService.instant('STE_LABEL_LASTCONNECTIONTIME_UNKNOWN') as string;\n }\n\n // email address\n this.email = '';\n const email = this.directive.Datum.AdditionalParameters.Email;\n if (email) {\n this.email = email;\n this.emailLink = 'mailto:' + this.email;\n }\n\n // last known address (get from formatted datum)\n this.lastKnownAddress = '';\n const addresses = this.directive.Fields?.filter((item) => item.FieldType === 'Geocode');\n if (addresses?.length > 0) {\n this.lastKnownAddress = addresses[0].Value[0];\n }\n\n // picture (get from formatted datum)\n const picture = this.directive.Fields?.filter((item) => item.FieldType === 'Image');\n if (picture?.length > 0) {\n this.picture = 'data:image/png;base64,' + picture[0].Value[0];\n }\n }\n this.isLoading = false;\n }\n }\n }\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n //#endregion\n\n //#region Events\n\n public copyToClipboard(text: string): void {\n if (text) {\n CorrelationDatumSidepaneWidgetComponent.copyMessage(text);\n }\n }\n\n public goToUser(username: string): void {\n if (username) {\n // TODO:\n }\n }\n\n //#endregion\n}\n","export enum SortOrder {\n Ascending,\n Descending,\n}\n","export enum ViewMode {\n Tile = 'Tile',\n Map = 'Map',\n Grid = 'Grid',\n}\n","// This enum is used for adding some context to investigate analytics.\nexport enum InvestigateContext {\n // This context is to differentiate when a user is coming back to a report that was already generated\n Refresh = 'Refresh',\n // This context is for new report that has been generated (splash screen or new filters values)\n Report = 'Report',\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { Receiver, Selector } from '../../../../../store';\nimport { ContextDataStateModel } from '../../../../shared/services/side-context-data/side-context-data.state';\nimport { ContentGroup } from '../../../../shared/interfaces/plugins/public/plugin-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport type InvestigateContextDataStateModel = ContextDataStateModel;\n\n@State({\n name: 'investigateContextDataState',\n defaults: { contents: [], currentContent: null },\n})\n@Injectable()\nexport class InvestigateSideContextDataState {\n @Selector()\n public static currentContent(state: ContextDataStateModel): ContentGroup | null {\n return state.currentContent;\n }\n\n @Selector()\n public static contentCount(state: ContextDataStateModel): number {\n return state.contents.length;\n }\n\n @Receiver()\n public static setMainContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.length = 0;\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static pushContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.push(payload);\n state.currentContent = payload;\n return state;\n });\n }\n\n @Receiver()\n public static popContent({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: ContextDataStateModel) => {\n state.contents.pop();\n state.currentContent = state.contents.length > 0 ? state.contents[state.contents.length - 1] : null;\n return state;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter } from '@src/app/store';\nimport { Observable } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterStateService } from '@modules/shared/services/state/security-center-state.service';\nimport { ContentLoad, ContentLoadingSupport } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { SafeGuid } from 'safeguid';\nimport { ContentGroup, DisplayContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { InvestigateSideContextDataState } from './investigate-side-context-data.state';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class InvestigateSideContextDataService extends SecurityCenterStateService implements ContentService, ContentLoadingSupport {\n @Select(InvestigateSideContextDataState.currentContent)\n public currentContent$!: Observable;\n\n @SelectSnapshot(InvestigateSideContextDataState.currentContent)\n public currentContent!: ContentGroup | null;\n\n @SelectSnapshot(InvestigateSideContextDataState.contentCount)\n public contentCount!: number;\n\n displayContext: DisplayContext = DisplayContext.Sidepane;\n\n constructor(securityCenterClient: SecurityCenterClientService) {\n super(securityCenterClient);\n }\n\n @MethodEmitter(InvestigateSideContextDataState.setMainContent)\n public setMainContent(_content: ContentGroup | undefined | null): void {}\n\n @MethodEmitter(InvestigateSideContextDataState.pushContent)\n public pushContent(_content: ContentGroup): void {}\n\n @MethodEmitter(InvestigateSideContextDataState.popContent)\n public popContent(): void {}\n\n public setLoadingMainContent(): void {\n this.setMainContent({ id: SafeGuid.newGuid(), mainContent: new ContentLoad(), subContents: [] });\n }\n\n public clearMainContent(): void {\n this.setMainContent(null);\n }\n\n protected clearState(): void {\n super.clearState();\n\n this.setMainContent(null);\n }\n}\n","import { State, StateContext } from '@ngxs/store';\nimport { EmitterAction } from '@ngxs-labs/emitter';\nimport { Injectable } from '@angular/core';\nimport { Receiver, Selector } from '../../../../../store';\nimport { ColumnDescriptor, InvestigateDataStateModel as InvestigateDataStateModel, WhatFilter, WhenFilter, WhereFilter } from './investigate-data.interfaces';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@State({\n name: 'investigateDataState',\n defaults: { whatFilter: null, whenFilter: null, whereFilter: null, columns: [], tableBusy: false },\n})\n@Injectable()\nexport class InvestigateDataState {\n @Selector()\n public static whatFilter(state: InvestigateDataStateModel): WhatFilter | null {\n return state.whatFilter;\n }\n\n @Selector()\n public static whenFilter(state: InvestigateDataStateModel): WhenFilter | null {\n return state.whenFilter;\n }\n\n @Selector()\n public static whereFilter(state: InvestigateDataStateModel): WhereFilter | null {\n return state.whereFilter;\n }\n\n @Selector()\n public static columns(state: InvestigateDataStateModel): ColumnDescriptor[] {\n return state.columns;\n }\n\n @Selector()\n public static tableBusy(state: InvestigateDataStateModel): boolean {\n return state.tableBusy ?? false;\n }\n\n @Receiver()\n public static setWhatFilter({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: InvestigateDataStateModel) => {\n state.whatFilter = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setWhenFilter({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: InvestigateDataStateModel) => {\n state.whenFilter = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setWhereFilter({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: InvestigateDataStateModel) => {\n state.whereFilter = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setColumns({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: InvestigateDataStateModel) => {\n state.columns = payload;\n return state;\n });\n }\n\n @Receiver()\n public static setTableBusy({ setState }: StateContext, { payload }: EmitterAction): void {\n setState((state: InvestigateDataStateModel) => {\n state.tableBusy = payload;\n return state;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { Select } from '@ngxs/store';\nimport { MethodEmitter } from '@src/app/store';\nimport { Observable } from 'rxjs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SecurityCenterStateService } from '@modules/shared/services/state/security-center-state.service';\nimport { ColumnDescriptor, WhatFilter, WhenFilter, WhereFilter } from './investigate-data.interfaces';\nimport { InvestigateDataState } from './investigate-data.state';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable()\nexport class InvestigateDataContext extends SecurityCenterStateService {\n //#region Properties\n\n // Filters\n\n @Select(InvestigateDataState.whatFilter)\n public whatFilter$!: Observable;\n\n @Select(InvestigateDataState.whenFilter)\n public whenFilter$!: Observable;\n\n @Select(InvestigateDataState.whereFilter)\n public whereFilter$!: Observable;\n\n @SelectSnapshot(InvestigateDataState.whatFilter)\n public whatFilter!: WhatFilter | null;\n\n @SelectSnapshot(InvestigateDataState.whenFilter)\n public whenFilter!: WhenFilter | null;\n\n @SelectSnapshot(InvestigateDataState.whereFilter)\n public whereFilter!: WhereFilter | null;\n\n // Table state\n\n @Select(InvestigateDataState.columns)\n public columns$!: Observable;\n\n @Select(InvestigateDataState.tableBusy)\n public tableBusy$!: Observable;\n\n @SelectSnapshot(InvestigateDataState.columns)\n public columns!: ColumnDescriptor[];\n\n @SelectSnapshot(InvestigateDataState.tableBusy)\n public tableBusy!: boolean;\n\n //#endregion\n\n //#region Constructors\n constructor(securityCenterClient: SecurityCenterClientService) {\n super(securityCenterClient);\n }\n\n //#endregion\n\n //#region Methods\n\n @MethodEmitter(InvestigateDataState.setWhatFilter)\n public setWhatFilter(what?: WhatFilter | null): void {}\n\n @MethodEmitter(InvestigateDataState.setWhenFilter)\n public setWhenFilter(when?: WhenFilter | null): void {}\n\n @MethodEmitter(InvestigateDataState.setWhereFilter)\n public setWhereFilter(where?: WhereFilter | null): void {}\n\n @MethodEmitter(InvestigateDataState.setColumns)\n public setColumns(columns?: ColumnDescriptor[]): void {}\n\n @MethodEmitter(InvestigateDataState.setTableBusy)\n public setTableBusy(tableBusy: boolean): void {}\n\n protected clearState(): void {\n super.clearState();\n\n this.setWhatFilter(null);\n this.setWhereFilter(null);\n this.setWhenFilter(null);\n\n this.setTableBusy(false);\n }\n\n //#endregion\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandUsage } from '@modules/shared/services/commands/commands-usage/command-usage';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Observable, BehaviorSubject, Subject, from } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@UntilDestroy()\n@Injectable()\nexport class RowActionsService {\n public expandedCommandUsages$: Observable;\n public collapsedCommandUsages$: Observable;\n public areRowActionsReady$: Observable;\n\n private maximumVisibleCommands?: number | undefined;\n private loadedCommandUsages = new Map();\n\n private currentRowDatumKeySubject = new Subject();\n private expandedCommandUsagesSubject = new BehaviorSubject([]);\n private collapsedCommandUsagesSubject = new BehaviorSubject([]);\n private areRowActionsReadySubject = new BehaviorSubject(false);\n\n constructor(@Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService, private contentProviderService: ContentProviderService) {\n this.expandedCommandUsages$ = this.expandedCommandUsagesSubject.asObservable().pipe(untilDestroyed(this));\n this.collapsedCommandUsages$ = this.collapsedCommandUsagesSubject.asObservable().pipe(untilDestroyed(this));\n this.areRowActionsReady$ = this.areRowActionsReadySubject.asObservable().pipe(untilDestroyed(this));\n\n this.currentRowDatumKeySubject\n .pipe(\n switchMap((datumKey: string) => from(this.loadRowActions(datumKey))),\n untilDestroyed(this)\n )\n .subscribe((commandUsages: CommandUsage[]) => {\n this.areRowActionsReadySubject.next(true);\n this.sortCommandUsagesByVisibility(commandUsages);\n });\n }\n\n public setCurrentRowDatumKey(newDatumKey: string): void {\n this.currentRowDatumKeySubject.next(newDatumKey);\n }\n\n public setMaximumVisibleCommands(maximumVisibleCommands: number): void {\n this.maximumVisibleCommands = maximumVisibleCommands;\n }\n\n private async loadRowActions(datumKey: string): Promise {\n // Tell subscribers we are loading the content\n this.areRowActionsReadySubject.next(false);\n\n // Check if actions for this row have already been loaded\n const commandUsages = this.loadedCommandUsages.get(datumKey);\n if (commandUsages) return commandUsages;\n\n // Get content\n const content = await this.contentProviderService.getContentAsync(datumKey);\n if (!content?.mainContent) return [];\n\n // Get commands usage\n const commandsUsage = await this.commandsService.getCommandsUsage({ type: ContextTypes.Content, data: content.mainContent }, undefined, undefined);\n this.loadedCommandUsages.set(datumKey, commandsUsage.commands);\n\n return commandsUsage.commands;\n }\n\n private sortCommandUsagesByVisibility(commandUsages: CommandUsage[]): void {\n if (!this.maximumVisibleCommands) {\n this.expandedCommandUsagesSubject.next(commandUsages);\n return;\n }\n\n const expandedCommandUsages: CommandUsage[] = [];\n const collapsedCommandUsages: CommandUsage[] = [];\n for (const [index, commandUsage] of commandUsages.entries()) {\n if (index < this.maximumVisibleCommands) {\n expandedCommandUsages.push(commandUsage);\n } else {\n collapsedCommandUsages.push(commandUsage);\n }\n }\n\n this.expandedCommandUsagesSubject.next(expandedCommandUsages);\n this.collapsedCommandUsagesSubject.next(collapsedCommandUsages);\n }\n}\n","\n \n \n
    \n {{ 'STE_LABEL_NORESULTS' | translate }}\n {{ 'STE_MESSAGE_INFO_NORESULTS_DETAILS' | translate }}\n
    \n
    \n \n \n \n {{ col.name | translate }} ({{ col.dataType.name }})\n \n \n \n \n \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n \n {{ commandUsage.name() }}\n \n \n \n
    \n
    \n \n\n\n
    \n \n {{ (visibleResults$ | async)?.length ?? 0 }} / {{ 'STE_LABEL_REPORT_ITEMS_COUNT_FORMAT' | translate | stringFormat: allResults?.length }}\n
    \n
    \n\n\n
    \n {{ 'STE_LABEL_NORESULTS' | translate }}\n {{ 'STE_MESSAGE_INFO_NORESULTS_DETAILS' | translate }}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n {{ col.name | translate }} ({{ col.dataType.name }})\n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ result[fieldKey] }}\n \n \n \n
    \n \n {{ result[fieldKey] }}\n \n \n \n \n
    \n
    \n \n \n \n {{ time }}\n \n \n \n \n \n {{ result[fieldKey] }}\n \n \n
    \n
    \n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Icon, IconSize, TextFlavor, ImageFit, ImageFlavor, TableColumnHeaderSort, TableFlavor } from '@genetec/gelato';\nimport { Marker, Polyline } from '@genetec/web-maps';\nimport { ButtonFlavor, Gelato, GenPopup, GenToastService, ToastFlavor } from '@genetec/gelato-angular';\nimport { MapService } from '@modules/maps/services/map/map-service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IWebMapObject } from '@modules/maps/controllers/map.controller.data';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { ResourcesService } from '@modules/shared/services/resources/resources.service';\nimport { IGuid } from 'safeguid';\nimport { ViewMode } from '@modules/correlation/enumerations/view-mode';\nimport { RowResult } from '@modules/correlation/interfaces/row-result';\nimport moment from 'moment-timezone';\nimport { delayAsPromise, toError } from '@src/app/utilities';\nimport { isEqual } from 'lodash-es';\nimport { SelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { Debouncer } from 'RestClient/Helpers/Debouncer';\nimport { CommandUsage } from '@modules/shared/services/commands/commands-usage/command-usage';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { UnifiedReportFeatureFlags } from '@modules/correlation/feature-flags';\nimport { CorrelationService } from '../../../services/correlation.service';\nimport { InvestigateSideContextDataService } from '../services/investigate-side-context-data.service';\nimport { CorrelationQueryResult, CorrelationQueryResultItem, FieldType } from '../../../api/api';\nimport { InvestigateDataContext } from '../services/investigate-data.context';\nimport { ColumnDescriptor } from '../services/investigate-data.interfaces';\nimport { RowActionsService } from '../services/row-actions.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\ntype SortingType = 'asc' | 'desc';\ninterface ColumnSorting {\n sortingType: SortingType;\n columnFieldKey: string;\n}\n@UntilDestroy()\n@Component({\n selector: 'app-investigate-results-container',\n templateUrl: './investigate-results-container.component.html',\n styleUrls: ['./investigate-results-container.component.scss'],\n providers: [MapService, InvestigateSideContextDataService, RowActionsService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [trigger('inOutAnimation', [transition(':enter', [style({ opacity: 0 }), animate('0.3s ease-in-out', style({ opacity: 1 }))])])],\n})\nexport class InvestigateResultsContainerComponent extends Gelato implements OnInit, OnDestroy {\n //#region Properties\n\n @Input()\n public get viewMode(): ViewMode {\n return this.privateViewMode;\n }\n public set viewMode(mode: ViewMode) {\n this.privateViewMode = mode;\n // TODO : Uncomment when implementing view mode (tile/grid/map)\n // if (mode === ViewMode.Map) {\n // void this.tryInitializeMap();\n // }\n // else if (mode === ViewMode.Tile || mode === ViewMode.Grid) {\n // void this.loadImagesAsync();\n // }\n }\n\n @Output()\n public selectionChanged = new EventEmitter();\n\n @Output()\n public loadingMessageChanged = new EventEmitter();\n\n @Output()\n public queryingChanged = new EventEmitter();\n\n @Output()\n public resultsChanged = new EventEmitter();\n\n @SelectSnapshot(FeatureFlagsState.featureFlags(UnifiedReportFeatureFlags.UnifiedReportGenTable))\n public isUnifiedReportGenTableFeatureFlagEnabled!: boolean;\n\n public readonly ViewMode = ViewMode;\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly TextFlavor = TextFlavor;\n public readonly TableColumnHeaderSort = TableColumnHeaderSort;\n public readonly FieldType = FieldType;\n public readonly TableFlavor = TableFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n\n public readonly infiniteScrollThresholdPx = 100;\n\n public currentResult: RowResult | null = null;\n\n public visibleResults$ = new BehaviorSubject([] as RowResult[]);\n public allResults?: RowResult[];\n\n public columns: ColumnDescriptor[] = [];\n public visibleColumns: string[] = [];\n public columnSorting: ColumnSorting;\n public tableBusy$: Observable | undefined;\n public isMultiDataType = false;\n\n public cachedIcons: string[] = [];\n\n public hasMoreResults?: boolean = true;\n\n public scrollBatchSize = 50;\n\n public currentHoveredRowDatumKey = '';\n public isLoadRowActionsDebouncing$: Observable;\n public areRowActionsReady$: Observable;\n public expandedCommandUsages$: Observable;\n public collapsedCommandUsages$: Observable;\n\n private privateViewMode = ViewMode.Tile;\n private downloadMapObjects = true;\n\n private isMapInitialized = false;\n\n private currentMapObjects: IWebMapObject[] = [];\n private allMapObjects: IWebMapObject[] = [];\n\n private readonly defaultColumnSorting: ColumnSorting = { sortingType: 'desc', columnFieldKey: 'timestamp' };\n\n private readonly defaultMaximumRowActions = 3;\n private isLoadRowActionsDebouncingSubject = new BehaviorSubject(false);\n private loadRowActionsDebouncer = new Debouncer(false, () => this.loadRowActions(), 1000, -1);\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n public mapService: MapService,\n private translateService: TranslateService,\n private correlationService: CorrelationService,\n private loggerService: LoggerService,\n private resourcesService: ResourcesService,\n private dataContext: InvestigateDataContext,\n private toastService: GenToastService,\n private elementRef: ElementRef,\n private changeDetector: ChangeDetectorRef,\n private rowActionsService: RowActionsService\n ) {\n super();\n this.columnSorting = this.defaultColumnSorting;\n this.rowActionsService.setMaximumVisibleCommands(this.defaultMaximumRowActions);\n this.isLoadRowActionsDebouncing$ = this.isLoadRowActionsDebouncingSubject.asObservable();\n this.areRowActionsReady$ = this.rowActionsService.areRowActionsReady$;\n this.expandedCommandUsages$ = this.rowActionsService.expandedCommandUsages$;\n this.collapsedCommandUsages$ = this.rowActionsService.collapsedCommandUsages$;\n }\n\n //#endregion\n\n //#region Public Methods\n\n ngOnInit(): void {\n this.dataContext.columns$.pipe(untilDestroyed(this)).subscribe((columnDescriptors) => this.handleColumnsChanged(columnDescriptors));\n this.tableBusy$ = this.dataContext.tableBusy$;\n }\n\n ngOnDestroy(): void {\n this.mapService.destroy();\n }\n\n public handleColumnsChanged(cols: ColumnDescriptor[]): void {\n // Dont trigger change if nothing changed\n if (isEqual(this.columns, cols)) return;\n this.columns = cols;\n this.isMultiDataType = (this.dataContext.whatFilter && this.dataContext.whatFilter.dataTypes.length > 1) ?? false;\n this.changeDetector.detectChanges();\n }\n\n public setResults(report: RowResult[]): void {\n this.downloadMapObjects = true;\n this.allResults = report;\n\n this.allResults = this.sortResults(this.columnSorting);\n\n this.visibleResults$.next([]);\n this.changeDetector.detectChanges();\n this.loadMore();\n }\n\n public loadMore(): void {\n if (this.allResults) {\n const visibleResults = this.visibleResults$.getValue();\n const newVisibleResults = this.allResults.slice(visibleResults.length, Math.min(visibleResults.length + this.scrollBatchSize, this.allResults.length));\n newVisibleResults.forEach((rowResult: RowResult) => visibleResults.push(rowResult));\n this.visibleResults$.next(visibleResults);\n this.hasMoreResults = visibleResults.length < this.allResults.length;\n this.changeDetector.detectChanges();\n this.loadImagesAsync(newVisibleResults).fireAndForget();\n }\n }\n\n public fetchData(): void {\n // Let Gelato the time to show a spinner before pushing new rows in the table\n // TODO : Remove when https://dev.azure.com/GenetecCentral/UXDev/_workitems/edit/51093/ is fixed\n delayAsPromise(100)\n .then(() => this.loadMore())\n .fireAndForget();\n }\n\n public onSortChange(columnHeaderSort: CustomEvent, column: ColumnDescriptor): void {\n column.sortOrder = columnHeaderSort.detail;\n this.sort(column);\n }\n\n public onSortClick(column: ColumnDescriptor): void {\n let sortOrder;\n if (column.sortOrder === TableColumnHeaderSort.Ascending) {\n sortOrder = TableColumnHeaderSort.Descending;\n } else if (column.sortOrder === TableColumnHeaderSort.Descending) {\n sortOrder = TableColumnHeaderSort.None;\n } else {\n sortOrder = TableColumnHeaderSort.Ascending;\n }\n this.columns.forEach((col) => (col.sortOrder = undefined));\n column.sortOrder = sortOrder;\n this.sort(column);\n }\n\n public async showPopup(popup: GenPopup, event: MouseEvent): Promise {\n // Move the popup outside of the grid so it's not clipped by the grid's edges\n const element = event.target;\n if (element) {\n const htmlElement = element as HTMLElement;\n\n const popupElement = htmlElement.parentElement?.querySelector('gen-popup');\n\n if (popupElement) {\n this.elementRef.nativeElement.appendChild(popupElement);\n }\n }\n await popup.show();\n }\n\n //#endregion\n\n //#region Events\n\n public rowClicked(datum: RowResult): void {\n if (datum.datumKey) {\n this.selectionChanged.emit(datum.datumKey);\n }\n }\n\n public getReportData(reportResult: CorrelationQueryResult | null): RowResult[] {\n this.cachedIcons = [];\n const reportData: RowResult[] = [];\n if (reportResult?.items) {\n for (const item of reportResult.items) {\n if (item.sourceId) {\n const row = {\n datumKey: item.sourceId,\n backgroundColor: item.backgroundColor ?? null,\n gelatoIcon: this.extractResultGelatoIcon(item),\n iconColor: item.iconColor ?? null,\n reportColor: item.reportColor ?? null,\n title: item.title,\n description: item.description,\n latitude: item.latitude,\n longitude: item.longitude,\n hasThumbnail: item.hasThumbnailImage,\n icon: this.extractResultImageIndex(item),\n timestamp: item.timestamp ?? '',\n mmtTime: item.timestamp && moment(item.timestamp),\n } as RowResult;\n if (item.fields) {\n // Add property entries for each fields\n for (const field of item.fields) {\n if (field.key && field.value) {\n row[field.key] = field.value;\n }\n }\n }\n if (row.title || row.image) {\n reportData.push(row);\n }\n }\n }\n }\n return reportData;\n }\n\n public async copyToClipboard(text: string, event: Event): Promise {\n event.stopPropagation(); // Prevent click on row to open sidepane\n await navigator.clipboard.writeText(text);\n const toastMessage = this.translateService.instant('STE_MESSAGE_INFO_COPIED_CLIPBOARD') as string;\n this.toastService.show({ text: toastMessage, flavor: ToastFlavor.Success });\n }\n\n public onContextMenuRequested(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onMouseEnterRow(datumKey: string): void {\n if (!datumKey) return;\n\n this.isLoadRowActionsDebouncingSubject.next(true);\n this.currentHoveredRowDatumKey = datumKey;\n this.loadRowActionsDebouncer.resume();\n this.loadRowActionsDebouncer.trigger();\n }\n\n public onMouseLeaveRow(): void {\n this.loadRowActionsDebouncer.dispose();\n }\n\n private extractResultImageIndex(item: CorrelationQueryResultItem) {\n if (item.customIcon && !item.customIcon.includes('gelato:')) {\n let key = this.cachedIcons.indexOf(item.customIcon);\n if (key === -1) {\n this.cachedIcons.push(item.customIcon);\n key = this.cachedIcons.length - 1;\n }\n return key;\n }\n return null;\n }\n\n private extractResultGelatoIcon(item: CorrelationQueryResultItem) {\n if (item.customIcon?.includes('gelato:')) return item.customIcon.replace('gelato:', '');\n return item.gelatoIcon ?? Icon.None;\n }\n\n private async loadImagesAsync(rows: RowResult[]) {\n if (rows?.length > 0) {\n let keys = rows.filter((row) => row.hasThumbnail).map((row) => row.datumKey);\n\n // first try and process all the keys for (client-side) cached data\n const clientCachedData = keys.map((key) =>\n this.resourcesService.getCachedItem(`datumext:${key}`).then((item) => {\n // cache hit\n if (item) {\n const row = rows.find((part) => part.datumKey === key);\n if (row) {\n row.image = item;\n return undefined;\n }\n }\n // cache miss, return the key for full later retrieval\n return key;\n })\n );\n const cachedMisses = await Promise.all(clientCachedData);\n keys = cachedMisses.filter((key) => key !== undefined && key) as string[];\n\n const fulfilled = await this.correlationService.loadFirstImages(keys);\n if (fulfilled != null && fulfilled.length > 0) {\n for (const imageResult of fulfilled) {\n const row = rows.find((result) => result.datumKey === imageResult.datumKey);\n if (row) {\n row.image = `data:image/png;base64,${imageResult.content}`;\n // cache the result\n this.resourcesService.updateCachedItem(`datumext:${imageResult.datumKey}`, row.image as string, true).fireAndForget();\n }\n }\n }\n this.changeDetector.detectChanges();\n }\n }\n\n private tryInitializeMap() {\n if (!this.isMapInitialized) {\n // background the loading of the map so the div is there\n this.queryingChanged.emit(true);\n this.loadingMessageChanged.emit(this.translateService.instant('STE_LABEL_LOADINGMAP') as string);\n\n setTimeout(async () => {\n try {\n await this.mapService.initializeMap({\n mapId: null,\n withEvents: false,\n });\n\n this.isMapInitialized = this.mapService?.mapAvailable ?? false;\n if (this.isMapInitialized) {\n this.mapService.onMapObjectSelected$.pipe(untilDestroyed(this)).subscribe((event) => {\n // Retrieve the underlying datum key...\n if (event.mapObjectView.data?.link) {\n this.selectionChanged.emit(event.mapObjectView.data.link);\n }\n });\n await this.loadMapObjectsAsync();\n }\n } catch (ex) {\n this.loggerService.traceError(toError(`Failed to initialize the map`, ex));\n this.isMapInitialized = false;\n } finally {\n this.queryingChanged.emit(false);\n }\n }, 100);\n }\n }\n\n private sort(column: ColumnDescriptor) {\n const SortingOrder = new Map([\n [TableColumnHeaderSort.Ascending, 'asc'],\n [TableColumnHeaderSort.Descending, 'desc'],\n ]);\n\n let columnSorting: ColumnSorting = this.defaultColumnSorting;\n const sortingMethod = SortingOrder.get(column.sortOrder ?? TableColumnHeaderSort.Ascending);\n if (sortingMethod) {\n columnSorting = { sortingType: sortingMethod, columnFieldKey: column.fieldKey };\n }\n\n this.allResults = this.sortResults(columnSorting);\n // Reset infinite scroll and load the first page\n this.visibleResults$.next([]);\n this.loadMore();\n }\n\n private async loadMapObjectsAsync() {\n this.queryingChanged.emit(true);\n this.loadingMessageChanged.emit(this.translateService.instant('STE_LABEL_LOADINGITEMS') as string);\n\n try {\n // wipe the previous map objects\n if (this.allMapObjects.length > 0) {\n // wipe the visible MOs\n this.mapService.map?.removeItems(this.currentMapObjects.map((item) => item.guid.toString()));\n }\n\n if (this.downloadMapObjects) {\n // delete the MO cache, since we're reloading from scratch\n this.allMapObjects = [];\n this.currentMapObjects = [];\n }\n\n // render the new MO's\n if (this.allResults && this.allResults.length > 0) {\n const ids = this.allResults.map((record) => record.datumKey);\n if (this.downloadMapObjects) {\n const mapObjects = await this.mapService.getMapObjectsFromSourceIds(this.allResults?.map((record) => record.datumKey) ?? []);\n if (mapObjects) {\n // cache the result for rendering refreshes\n this.allMapObjects = mapObjects;\n // since the user may have filtered _prior_ to opening map mode, we need to download the world of MOs, then we can render the subset as needed\n // and refreshes won't trigger re-queries\n this.currentMapObjects = this.allMapObjects.filter((item) => ids.some((id) => id === item.source));\n }\n } else {\n // we're just filtering the MOs, compute the viewed MOs set\n this.currentMapObjects = this.allMapObjects.filter((item) => ids.some((id) => id === item.source));\n }\n\n // render the MOs to be viewed\n if (this.currentMapObjects.length > 0) {\n this.mapService.insertMapObjects(this.currentMapObjects, true);\n this.fitMoViews(this.currentMapObjects.map((item) => item.guid));\n }\n }\n } catch (ex) {\n this.loggerService.traceError(toError(`Failed to query map objects`, ex));\n this.isMapInitialized = false;\n } finally {\n this.queryingChanged.emit(false);\n this.downloadMapObjects = false;\n }\n }\n\n private fitMoViews(ids: Iterable | undefined) {\n if (ids) {\n const latLngBounds: [number, number][] = [];\n\n const idArray = Array.from(ids);\n if (idArray.length > 0) {\n for (const mapObjectId of idArray) {\n if (mapObjectId) {\n const view = this.mapService.map?.getMapObjectView(mapObjectId.toTypescriptGuid());\n if (view instanceof Marker) {\n const offset = 0.002;\n latLngBounds.push([view.getLatLng().lat + offset, view.getLatLng().lng - offset]);\n latLngBounds.push([view.getLatLng().lat - offset, view.getLatLng().lng + offset]);\n } else if (view instanceof Polyline) {\n const bounds = view.getBounds().pad(0.25);\n const nw = bounds.getNorthWest();\n latLngBounds.push([nw.lat, nw.lng]);\n const se = bounds.getSouthEast();\n latLngBounds.push([se.lat, se.lng]);\n }\n }\n }\n }\n\n if (latLngBounds.length > 0) {\n if (this.mapService.map) {\n this.mapService.map.fitBounds(latLngBounds);\n }\n }\n }\n }\n\n private sortResults(columnSorting: ColumnSorting) {\n // We will use the timestamp descending as default sorting.\n const sortingColumn = columnSorting.columnFieldKey ?? 'timestamp';\n\n // Consider any column as number to have a numerical first sorting\n const sortOptions: Intl.CollatorOptions = {\n numeric: true,\n ignorePunctuation: true,\n sensitivity: 'base',\n };\n\n const sortedResults = this.allResults?.sort((a, b) => {\n const col1 = a[sortingColumn];\n const col2 = b[sortingColumn];\n\n if (!col1 && col2) return 1;\n else if (col1 && !col2) return -1;\n else if (!col1 && !col2) return 0;\n\n const columnToSort = col1.toLowerCase() === col2.toLowerCase() ? 'timestamp' : sortingColumn;\n const result = a[columnToSort].localeCompare(b[columnToSort], undefined, sortOptions);\n return columnSorting.sortingType === 'asc' ? result : -result;\n });\n\n this.columnSorting = columnSorting;\n return sortedResults ?? [];\n }\n\n private loadRowActions(): void {\n this.isLoadRowActionsDebouncingSubject.next(false);\n this.rowActionsService.setCurrentRowDatumKey(this.currentHoveredRowDatumKey);\n }\n\n //#endregion\n}\n","import { FieldType } from '../api/api';\nimport { ColumnDescriptor } from '../components/investigate/services/investigate-data.interfaces';\n\nexport const commonInvestigateColumns: ReadonlyArray = [\n { name: 'STE_LABEL_TITLE', fieldKey: 'title', type: FieldType.Text, colIndex: 0, displayed: true, isSortable: true },\n { name: 'STE_LABEL_DESCRIPTION', fieldKey: 'description', type: FieldType.Text, colIndex: 1, displayed: true, isSortable: true },\n { name: 'STE_LABEL_TIME', fieldKey: 'timestamp', type: FieldType.Timestamp, colIndex: 2, displayed: true, isSortable: true },\n { name: 'STE_LABEL_THUMBNAIL', fieldKey: 'image', type: FieldType.Image, colIndex: 3, displayed: false, isSortable: false },\n];\n","/**\n * Creates a sort function to passe through arrays' sort method.\n *\n * @param prop The key of the prop to sort by\n * @example\n * ```\n * const list = [\n * {\n * label: \"H\",\n * },\n * {\n * label: \"A\",\n * },\n * {\n * label: \"Z\",\n * },\n * ]\n * list.sort(sortAscending('label'));\n *\n * // [\n * // {\n * // label: \"A\",\n * // },\n * // {\n * // label: \"H\",\n * // },\n * // {\n * // label: \"Z\",\n * // },\n * // ]\n * ```\n * @returns The sort function.\n */\nexport const sortAscending = (prop: keyof T): ((obj1: T, obj2: T) => number) => {\n return (obj1, obj2) => (obj1[prop] === obj2[prop] ? 0 : obj1[prop] > obj2[prop] ? 1 : -1);\n};\n","\n \n
    \n \n \n \n {{ item.text | translate }}\n \n \n {{\n child.text | translate\n }}\n \n \n \n
    \n
    \n\n","import { AfterViewInit, Component, Injector, OnInit, OnDestroy } from '@angular/core';\nimport { GenMeltedTreeItem, GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { TreeFlavor } from '@genetec/gelato';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { commonInvestigateColumns } from '@modules/correlation/enumerations/common-columns';\nimport { CorrelationService } from '@modules/correlation/services/correlation.service';\nimport { FieldType } from '@modules/correlation/api/api';\nimport { sortAscending } from '@modules/shared/utilities/sort.helper';\nimport { TreeItem } from '@modules/shared/interfaces/tree-item/tree-item';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ColumnDescriptor } from '../../investigate/services/investigate-data.interfaces';\nimport { InvestigateDataContext } from '../../investigate/services/investigate-data.context';\n\ninterface ColumnVisibilityTupple {\n fieldKey: string;\n displayed: boolean;\n column: ColumnDescriptor;\n}\n\ninterface DataTypeColumns {\n dataType: { id?: string; name: string };\n columns: { id: string; name: string; columnType: string }[];\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-select-investigate-columns',\n templateUrl: './select-investigate-columns.component.html',\n styleUrls: ['./select-investigate-columns.component.scss'],\n})\nexport class SelectInvestigateColumnsComponent extends ConnectionAwareModalComponent implements OnInit, AfterViewInit, OnDestroy {\n public selectedDataTypes: IGuid[] = [];\n public treeItems: TreeItem[] = [];\n public columns = new Map();\n public modalId = 'investigateColumnSelector';\n public readonly TreeFlavor = TreeFlavor;\n\n // Unwanted + not supported column types\n private excludedColumnTypes = [FieldType.Entity, FieldType.SoundPlayer, FieldType.WebView, FieldType.Geocode, FieldType.Barcode, FieldType.EntityIcon];\n\n constructor(\n authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private genModalService: GenModalService,\n private dataContext: InvestigateDataContext,\n private correlationService: CorrelationService,\n private logger: LoggerService,\n private analyticsService: AnalyticsService\n ) {\n super(authService, injector, trackingService);\n }\n\n public ngOnInit(): void {\n this.dataContext.whatFilter$\n .pipe(\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)),\n untilDestroyed(this)\n )\n .subscribe(async (filter) => {\n this.selectedDataTypes = filter?.dataTypes ?? [];\n await this.initializeColumns();\n });\n }\n\n public ngAfterViewInit(): void {\n this.genModalService.hide(this.modalId);\n }\n\n public handleApply = (): Promise => {\n this.updateStateWithSpinner();\n this.logSelectedColumns();\n\n return Promise.resolve(true);\n };\n\n public handleCancel = (): Promise => {\n this.restoreFromState();\n return Promise.resolve(true);\n };\n\n public onItemChecked(item: TreeItem, event: CustomEvent): void {\n if (item.children?.length) return; // Ignore parents\n this.setColumnDisplayed(item.id, event.detail);\n }\n\n public show(): void {\n this.genModalService.show(this.modalId);\n }\n\n private setColumnDisplayed(colKey: string, displayed: boolean): void {\n const columnVis = this.getColumn(colKey);\n if (!columnVis) throw new Error(`Column '${colKey}' not found`);\n this.columns.set(colKey, { ...columnVis, displayed });\n this.treeItems = this.updateTreeItemsIsChecked(this.treeItems, colKey);\n }\n\n private async initializeColumns(): Promise {\n for (const iterator of this.columns.values()) {\n // If datatype is not selected or not datatype (core columns), remove the column\n if (iterator.column.dataType && !this.selectedDataTypes.find((col) => col.equals(iterator.column.dataType?.dataType))) {\n this.columns.delete(this.generateColKey(iterator.column));\n }\n }\n this.treeItems = commonInvestigateColumns.map((col) => {\n const colKey = this.generateColKey(col);\n if (!this.columns.has(colKey)) this.columns.set(colKey, { displayed: col.displayed, column: col, fieldKey: col.fieldKey });\n return {\n id: colKey,\n text: col.name,\n isChecked: col.displayed || this.getColumn(col)?.displayed,\n } as GenMeltedTreeItem;\n });\n if (this.selectedDataTypes.length === 0) return;\n const allDataTypes = await this.correlationService.getDataTypes();\n const registrations = await this.correlationService.getRegistrations(this.selectedDataTypes);\n const colIndexSart = commonInvestigateColumns[commonInvestigateColumns.length - 1].colIndex + 1;\n registrations?.forEach((reg) => {\n const dataType = allDataTypes?.find((x) => x.dataType.equals(reg.dataType));\n if (dataType) {\n const dataTypeTreeViewRoot = {\n id: dataType.dataType.toString(),\n text: dataType.name,\n icon: dataType.icon as MeltedIcon,\n children: [],\n } as TreeItem;\n\n reg.columns?.forEach((col, index) => {\n // Exclude unwanted column types\n if (!col.renderType || this.excludedColumnTypes.includes(col.renderType)) return;\n\n if (!col.fieldName || !col.displayName || !col.renderType) {\n if (!col.isExtended) {\n this.logger.traceError(`Investigate column selection : Invalid column`, col);\n }\n return; // Skip columns without a name or fieldId\n }\n\n const colDesc: ColumnDescriptor = {\n colIndex: colIndexSart + index,\n fieldKey: col.fieldName,\n name: col.displayName,\n dataType,\n type: col.renderType, // Have text for now, but we can add more types later\n displayed: col.isDisplayed ?? false,\n isSortable: true,\n };\n const colKey = this.generateColKey(colDesc);\n if (!this.columns.has(colKey)) {\n this.columns.set(colKey, { column: colDesc, displayed: col.isDisplayed ?? false, fieldKey: col.fieldName });\n }\n dataTypeTreeViewRoot.children?.push({\n id: colKey,\n text: col.displayName,\n isChecked: col.isDisplayed || this.getColumn(colDesc)?.displayed,\n });\n });\n if (dataTypeTreeViewRoot.children?.length) {\n this.treeItems.push(dataTypeTreeViewRoot);\n }\n }\n });\n this.updateState();\n }\n\n private updateTreeItemsIsChecked(tree: GenMeltedTreeItem[], fieldId?: string) {\n for (const child of tree) {\n if (child.children?.length) {\n child.children = this.updateTreeItemsIsChecked(child.children, fieldId);\n\n // Update parent checkbox according to children\n child.isChecked = child.children.every((x) => x.isChecked);\n } else {\n if (fieldId && child.id !== fieldId) continue; // Only update the given field\n const colVis = this.getColumn(child.id);\n child.isChecked = colVis?.displayed ?? false;\n }\n }\n return [...tree];\n }\n\n private restoreFromState(): void {\n for (const colEntry of this.columns.entries()) {\n const [key, col] = colEntry;\n const fieldKey = col.fieldKey;\n const selected = this.dataContext.columns.find((x) => x.fieldKey === fieldKey);\n this.setColumnDisplayed(key, selected?.displayed ?? false);\n }\n this.treeItems = this.updateTreeItemsIsChecked(this.treeItems);\n }\n\n private updateStateWithSpinner(): void {\n this.dataContext.setTableBusy(true);\n\n // Wait until the spinner is displayed before doing the heavy lifting\n this.updateState();\n }\n\n private updateState(): void {\n setTimeout(() => {\n this.updateColumns();\n });\n }\n\n private updateColumns() {\n const columns = [];\n for (const col of this.columns.values()) {\n const column = { ...col.column, displayed: col.displayed };\n columns.push(column);\n }\n\n // All the columns are set, but their visibility (displayed field) can be toggled to false\n this.dataContext.setColumns(columns.sort(sortAscending('colIndex')));\n\n this.dataContext.setTableBusy(false);\n }\n\n private getColumn(col: ColumnDescriptor | string): ColumnVisibilityTupple | undefined {\n let key;\n if (typeof col !== 'string') key = this.generateColKey(col);\n else key = col;\n const colVis = this.columns.get(key);\n return colVis;\n }\n\n private generateColKey(col: ColumnDescriptor): string {\n return `${col.dataType?.dataType.toString() ?? 'core'}_${col.fieldKey}`;\n }\n\n private logSelectedColumns() {\n const coreColumnsName = 'Core';\n // Log the new selected columns.\n const columnsPerDataType: DataTypeColumns[] = [{ dataType: { name: coreColumnsName }, columns: [] }];\n const visibleColumns = [...this.columns.values()].filter((columnVisibility) => {\n return columnVisibility.displayed;\n });\n\n for (const { column } of visibleColumns) {\n // Core columns like description, title etc. does not contain dataType object.\n const dataType = columnsPerDataType.find((dataTypeColumns) => dataTypeColumns.dataType.name === (column.dataType?.name ?? coreColumnsName));\n if (dataType) {\n dataType.columns.push({ name: column.name, id: column.fieldKey, columnType: column.type });\n } else {\n columnsPerDataType.push({\n dataType: { name: column.dataType?.name ?? coreColumnsName, id: column.dataType?.dataType.toString() },\n columns: [{ name: column.name, id: column.fieldKey, columnType: column.type }],\n });\n }\n }\n this.analyticsService.logEvent(AnalyticsNames.Investigate.SelectedColumns, { selectedColumnsByDataType: columnsPerDataType });\n }\n}\n","import { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-investigate-filter-base',\n template: '',\n})\nexport abstract class InvestigateFilterBaseComponent extends TrackedComponent implements OnInit, OnDestroy {\n //#region Properties\n\n @Output() filterToggle = new EventEmitter();\n\n @Input()\n public get value(): TFilter {\n return this.privateValue;\n }\n public set value(newValue: TFilter) {\n if (newValue && newValue !== this.privateValue) {\n this.privateValue = newValue;\n // fire value changed\n this.onValueChanged();\n }\n }\n\n @Output()\n public valueChange = new EventEmitter();\n\n public filterStatus!: string;\n\n private privateValue!: TFilter;\n private dataSubscription: Subscription | undefined = undefined;\n\n //#endregion\n\n //#region Constructors\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n //#endregion\n\n //#region Methods\n\n @HostListener('pointerdown')\n @HostListener('pointerup')\n @HostListener('keydown')\n @HostListener('keyup')\n public onUserInteracted(): void {\n this.onValueChanged();\n }\n\n public ngOnInit() {\n const sub = this.setupSubscription();\n if (sub) {\n this.dataSubscription = sub;\n }\n }\n\n public ngOnDestroy() {\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n }\n\n //#endregion\n\n //#region Events\n\n public onFilterToggled(isFilterOpened: boolean): void {\n if (isFilterOpened) {\n this.onUserInteracted();\n }\n }\n\n protected onValueChanged(): void {\n this.valueChange.emit(this.value);\n }\n\n protected silentSetValue(value: TFilter): void {\n this.privateValue = value;\n }\n\n protected abstract setupSubscription(): Subscription | undefined;\n\n //#endregion\n}\n","\n
    \n \n \n \n {{ item.text }}\n \n\n \n \n \n\n \n \n \n
    \n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Icon, IconSize, ImageFit, ImageFlavor, TextFlavor } from '@genetec/gelato';\nimport { ButtonFlavor, Gelato, GenMeltedListItem } from '@genetec/gelato-angular';\n@Component({\n selector: 'app-image-name-toggle-button',\n templateUrl: './image-name-toggle-button.component.html',\n styleUrls: ['./image-name-toggle-button.component.scss'],\n})\nexport class ImageNameToggleButtonComponent extends Gelato {\n @Input()\n public item?: GenMeltedListItem;\n\n @Output()\n public isCheckedChanged = new EventEmitter();\n\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly ImageFit = ImageFit;\n public readonly ImageFlavor = ImageFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly TextFlavor = TextFlavor;\n\n public toggleButtonClick(): void {\n if (!this.item) {\n return;\n }\n if (!this.item.isChecked) {\n this.item.isChecked = false;\n }\n this.item.isChecked = !this.item.isChecked;\n this.isCheckedChanged.emit(this.item.isChecked);\n }\n}\n","
    \n 15\"\n [genDelay]=\"100\"\n placeholder=\"{{ 'STE_ACTION_SEARCH' | translate }}\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onSearchChange($event)\"\n >\n \n \n \n
    \n \n
    \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n \n \n \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TextFlavor, Icon } from '@genetec/gelato';\nimport { GenMeltedListItem, ImageFit, ImageFlavor, MeltedIcon, SpinnerSize } from '@genetec/gelato-angular';\nimport { CorrelationService } from '@modules/correlation/services/correlation.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SafeGuid } from 'safeguid';\nimport { Subscription } from 'rxjs';\nimport { DataTypeDisplayModel } from '@modules/correlation/api/api';\nimport { sortAscending } from '@modules/shared/utilities/sort.helper';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { UnifiedReportFeatureFlags } from '@modules/correlation/feature-flags';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { InvestigateFilterBaseComponent } from '../investigate-filter-base.component';\nimport { WhatFilter } from '../../services/investigate-data.interfaces';\nimport { InvestigateDataContext } from '../../services/investigate-data.context';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-investigate-what-filter',\n templateUrl: './what-filter.component.html',\n styleUrls: ['./what-filter.component.scss'],\n providers: [],\n})\nexport class InvestigateWhatFilterComponent extends InvestigateFilterBaseComponent implements AfterViewInit {\n public static AnythingDataTypeId = SafeGuid.parse('7E8D6D16-9B9A-4B92-93CD-CCF4E11726E0');\n @Input() public tilesView = false;\n @Output() itemSelected: EventEmitter = new EventEmitter();\n\n public readonly TextFlavor = TextFlavor;\n public readonly ImageFlavor = ImageFlavor;\n public readonly ImageFit = ImageFit;\n public readonly Icon = Icon;\n public readonly SpinnerSize = SpinnerSize;\n\n public visibleDataTypes: Array = [];\n public dataTypesListItems: Array = [];\n public dataTypeDisplayModel: DataTypeDisplayModel[] = [];\n public searchText = '';\n public isLoading = false;\n public hasMultiSelectFeatureFlag = false;\n public isValid = false;\n\n constructor(\n trackingService: TrackingService,\n private correlationService: CorrelationService,\n protected sanitizer: DomSanitizer,\n private translateService: TranslateService,\n private dataContext: InvestigateDataContext,\n private advancedSettingsService: AdvancedSettingsService\n ) {\n super(trackingService);\n\n this.hasMultiSelectFeatureFlag = UnifiedReportFeatureFlags.MultiSelectWhatFilterFeatureFlag.isEnabled(this.advancedSettingsService);\n }\n\n public onDataTypeChanged(item?: GenMeltedListItem): void {\n if (item) {\n if (!this.hasMultiSelectFeatureFlag) {\n // Limit to single selection only\n if (item.isChecked) {\n this.uncheckAllItemsExcept(item);\n } else {\n // do not allow to uncheck everything\n item.isChecked = true;\n return;\n }\n }\n const selectedItems = this.dataTypesListItems.filter((dt) => dt.isChecked);\n this.onDataTypesChanged(selectedItems);\n this.filterToggle.emit(false);\n }\n }\n\n public onReportSelectedFromCard(item: DataTypeDisplayModel): void {\n const selectedItems = this.dataTypesListItems.filter((dt) => dt.id === item.dataType.toString());\n this.onDataTypesChanged(selectedItems);\n this.itemSelected.emit();\n\n this.tilesView = false;\n }\n\n public onDataTypesChanged(items: Array): void {\n this.setSelectionStatus(items);\n\n const selectedItemsIds = items.map((x) => x.id);\n\n this.value.description = this.filterStatus;\n this.value.dataTypes = selectedItemsIds.map(SafeGuid.parse);\n // if Anything is selected, add all types (except anything) to the dataTypes\n const anythingFound = this.value.dataTypes.find((x) => x.toString() === InvestigateWhatFilterComponent.AnythingDataTypeId.toString());\n if (anythingFound) {\n this.value.dataTypes = this.dataTypesListItems\n .filter((dt) => dt.id !== InvestigateWhatFilterComponent.AnythingDataTypeId.toString())\n .map(({ id }) => SafeGuid.parse(id));\n }\n\n this.onValueChanged();\n }\n\n public onSearchChange(newSearchText: string): void {\n this.searchText = newSearchText;\n if (this.searchText) {\n this.visibleDataTypes = this.dataTypesListItems.filter((item) => item.text.toLowerCase().includes(this.searchText.toLowerCase()));\n } else {\n this.visibleDataTypes = this.dataTypesListItems;\n }\n }\n\n async ngAfterViewInit() {\n await this.loadDataTypes();\n }\n\n protected setupSubscription(): Subscription | undefined {\n if (!this.dataContext) return undefined;\n\n return this.dataContext.whatFilter$.pipe(untilDestroyed(this)).subscribe((newValue) => {\n if (newValue) {\n // special case so we don't just cycle setting value, getting value changed, setting value, etc. This will NOT trigger the value changed evt\n this.silentSetValue(newValue);\n this.setSelectedItems();\n } else {\n // someone set undefined, re-set it to just an empty filter\n this.value = { dataTypes: [], parameters: [], description: this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string };\n }\n });\n }\n\n protected onValueChanged(): void {\n this.setSelectedItems();\n if (this.dataContext) {\n // copy the other stuff manually, since cloneDeep has limited support for classes\n const guids = this.value.dataTypes.map((item) => item.clone());\n const newValue: WhatFilter = { dataTypes: guids, parameters: [], description: this.value.description };\n\n this.dataContext.setWhatFilter(newValue);\n }\n super.onValueChanged();\n }\n\n private uncheckAllItemsExcept(item: GenMeltedListItem) {\n this.dataTypesListItems.forEach((element) => {\n if (element !== item) {\n element.isChecked = false;\n }\n });\n }\n\n private checkAllItems() {\n this.dataTypesListItems.forEach((element) => {\n element.isChecked = true;\n });\n }\n\n private setAnythingDataType(): void {\n const anythingDataType = this.dataTypesListItems.find((item) => item.id === InvestigateWhatFilterComponent.AnythingDataTypeId.toString());\n if (anythingDataType) {\n anythingDataType.isChecked = true;\n } else {\n // if anything does not exist, check all items\n this.checkAllItems();\n }\n }\n\n private setSelectedItems() {\n if (this.dataTypesListItems) {\n // wipe all the check's\n this.dataTypesListItems.forEach((dt) => (dt.isChecked = false));\n // reset the checks\n if (this.value?.dataTypes) {\n if (this.value?.dataTypes.length === this.dataTypesListItems.length - 1) {\n // check only Anything\n this.setAnythingDataType();\n } else {\n this.value.dataTypes.forEach((item) => {\n const dataTypeItem = this.dataTypesListItems.find((item2) => item.equals(item2.id));\n if (dataTypeItem) {\n dataTypeItem.isChecked = true;\n }\n });\n }\n }\n }\n\n this.setSelectionStatus(this.dataTypesListItems.filter((item) => item.isChecked));\n this.value.description = this.filterStatus;\n }\n\n private async loadDataTypes() {\n this.isLoading = true;\n const dataTypeResults: GenMeltedListItem[] = [];\n if (this.correlationService) {\n const dataTypes = await this.correlationService.getDataTypes();\n if (dataTypes) {\n if (dataTypes.length > 1) {\n // Add Anything as the last item only when we have 2 or more data types\n this.dataTypeDisplayModel = [...dataTypes.sort(sortAscending('name')), this.createAnythingDataType()];\n } else {\n this.dataTypeDisplayModel = dataTypes.sort(sortAscending('name'));\n }\n\n for (const dt of this.dataTypeDisplayModel) {\n const item: GenMeltedListItem = { text: dt.name, id: dt.dataType.toString() };\n if (dt.customIcon) {\n item.image = dt.customIcon;\n } else if (dt.icon) {\n item.icon = (dt.icon as MeltedIcon) ?? MeltedIcon.CorrelationService;\n } else {\n item.icon = MeltedIcon.CorrelationService;\n }\n dataTypeResults.push(item);\n }\n }\n }\n this.dataTypesListItems = dataTypeResults;\n this.visibleDataTypes = this.dataTypesListItems;\n // if there is no value set already, initialize the value\n if (!this.value) {\n this.value = { dataTypes: [], parameters: [], description: this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string };\n } else {\n // there's a previous value, reload the selected items\n this.setSelectedItems();\n this.onValueChanged();\n }\n this.isLoading = false;\n }\n\n private createAnythingDataType(): DataTypeDisplayModel {\n const anythingModel = new DataTypeDisplayModel();\n anythingModel.name = this.translateService.instant('STE_LABEL_FILTER_ANY_DATA_TYPE') as string;\n anythingModel.icon = MeltedIcon.CheckAll;\n anythingModel.dataType = InvestigateWhatFilterComponent.AnythingDataTypeId;\n\n return anythingModel;\n }\n\n private setSelectionStatus(selectedItems?: GenMeltedListItem[] | null) {\n if (!selectedItems?.length) {\n this.isValid = false;\n this.filterStatus = this.translateService.instant('STE_LABEL_EMPTY') as string;\n } else if (selectedItems.length === 1) {\n this.isValid = true;\n this.filterStatus = selectedItems[0].text;\n } else {\n this.isValid = true;\n this.filterStatus = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: selectedItems.length }) as string;\n }\n }\n}\n","export enum DurationUnit {\n Minutes = 'STE_UNIT_MINUTES_LC',\n Hours = 'STE_UNIT_HOURS_LC',\n Days = 'STE_UNIT_DAYS_LC',\n Weeks = 'STE_UNIT_WEEKS_LC',\n Months = 'STE_UNIT_MONTHS_LC',\n Years = 'STE_UNIT_YEARS_LC',\n}\n","import { DateFilterMode } from '@modules/shared/components/filters/common-filters/filter-date/enums/date-filter-mode.enum';\nimport { unitOfTime } from 'moment-timezone';\nimport { IGuid } from 'safeguid';\nimport { DataTypeDisplayModel, FieldType, WhereMode } from '../../../api/api';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\nimport { DurationUnit } from './investigate-filter-data.enumerations';\n\nexport interface DisplayableFilter {\n description: string;\n isValid?: boolean;\n}\n\nexport interface WhatFilter extends DisplayableFilter {\n dataTypes: IGuid[];\n parameters: CorrelationSearchParameter[];\n}\n\nexport interface WhenFilter extends DisplayableFilter {\n mode: DateFilterMode;\n timeStart: string | null;\n timeEnd: string | null;\n period: LastPeriodPreset | null;\n}\nexport interface WhereFilter extends DisplayableFilter {\n wkt: string | null;\n intersection: boolean;\n includedAreas: IGuid[] | null;\n excludedAreas: IGuid[] | null;\n mode: WhereMode;\n}\n\nexport interface ColumnDescriptor {\n colIndex: number;\n name: string;\n dataType?: DataTypeDisplayModel;\n fieldKey: string;\n isSortable: boolean;\n sortOrder?: string;\n type: FieldType;\n displayed: boolean;\n}\n\nexport interface InvestigateDataStateModel {\n whatFilter: WhatFilter | null;\n whenFilter: WhenFilter | null;\n whereFilter: WhereFilter | null;\n columns: ColumnDescriptor[];\n tableBusy: boolean;\n}\n\nexport class LastPeriodPreset {\n public id: string;\n constructor(public label: DurationUnit, public duration: number, public durationUnit: unitOfTime.Base) {\n this.id = duration.toString().concat(`-${durationUnit}`);\n }\n}\n","
    \n \n \n \n
    \n {{ 'STE_LABEL_DURINGTHELAST_X_YEARS_MONTHS_WEEKS_HOURS_MINUTES' | translate }}\n \n
    \n
    \n \n
    \n {{ 'STE_LABEL_SPECIFICDATE' | translate }}\n \n
    \n
    \n \n {{ 'STE_LABEL_ANYTIME' | translate }}\n \n
    \n
    \n \n
    \n \n \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n \n {{ specificDateTimePeriodValidationState | translate }}\n \n
    \n
    \n
    \n","import { AfterViewInit, Component, OnInit } from '@angular/core';\nimport { CalendarTimeFrame, DateFormat, Flavor } from '@genetec/gelato-angular';\nimport { SelectionType, TextFlavor } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport moment from 'moment';\nimport { Subscription } from 'rxjs';\nimport { SafeGuid } from 'safeguid';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { DurationItem } from '@shared/interfaces/duration-item';\nimport { Item } from '@modules/shared/interfaces/item';\nimport { DateFilterMode } from '@modules/shared/components/filters/common-filters/filter-date/enums/date-filter-mode.enum';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { DurationUnit } from '../../services/investigate-filter-data.enumerations';\nimport { LastPeriodPreset, WhenFilter } from '../../services/investigate-data.interfaces';\nimport { InvestigateFilterBaseComponent } from '../investigate-filter-base.component';\nimport { InvestigateDataContext } from '../../services/investigate-data.context';\n\nenum DateTimePeriodValidationState {\n InvalidRange = 'STE_MESSAGE_ERROR_ENDTIMEEARLIERTHANSTARTTIME',\n Valid = '',\n}\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-investigate-when-filter',\n templateUrl: './when-filter.component.html',\n styleUrls: ['./when-filter.component.scss'],\n providers: [],\n})\nexport class InvestigateWhenFilterComponent extends InvestigateFilterBaseComponent implements OnInit, AfterViewInit {\n //#region Properties\n\n public readonly ListSelectionType = SelectionType;\n public readonly DateFormat = DateFormat;\n public readonly CalendarFlavor = Flavor.Calendar;\n public readonly TextFlavor = TextFlavor;\n\n public readonly filterId = SafeGuid.newGuid().toStringFormat('N');\n public readonly CalendarTimeFrame = CalendarTimeFrame;\n public readonly dateFilterMode = DateFilterMode;\n public readonly DateTimePeriodValidationState = DateTimePeriodValidationState;\n\n public readonly MaxDurationValue = 999;\n public readonly MinDurationValue = 1;\n\n public currentLastPeriod?: LastPeriodPreset;\n public mode = DateFilterMode.DuringLastPeriod;\n public timeStart: string | null = null;\n public timeEnd: string | null = null;\n public specificDateTimePeriodValidationState: DateTimePeriodValidationState = DateTimePeriodValidationState.Valid;\n public lastPeriodFilters: LastPeriodPreset[] = [];\n public durationUnitsComboboxItems: DurationItem[] = [];\n public selectedDurationUnit?: Item;\n public lastPeriodDuration = 1;\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n trackingService: TrackingService,\n private translateService: TranslateService,\n private dataContext: InvestigateDataContext,\n private languageService: LanguageService\n ) {\n super(trackingService);\n this.loadLastXFilters();\n }\n\n //#endregion\n\n //#region Public Methods\n\n ngOnInit() {\n super.ngOnInit();\n this.updateFilterState();\n // reset filter status if language changed to display the correct filter state\n this.languageService.languageChanged.pipe(untilDestroyed(this)).subscribe(() => {\n this.updateFilterState();\n });\n }\n\n ngAfterViewInit() {}\n\n //#endregion\n\n //#region Events\n\n public onFilterChange(newMode: DateFilterMode, silent: boolean = false): void {\n if (this.mode === newMode) return;\n this.mode = newMode;\n\n switch (this.mode) {\n case DateFilterMode.Any:\n this.timeStart = null;\n this.timeEnd = null;\n this.filterToggle.emit(false);\n break;\n case DateFilterMode.DuringLastPeriod:\n case DateFilterMode.ForNextPeriod:\n this.onDurationValueChange(this.lastPeriodDuration);\n break;\n case DateFilterMode.Range:\n this.timeStart = this.timeStart ?? moment.utc(moment().subtract(1, 'day').startOf('day')).toISOString();\n this.timeEnd = this.timeEnd ?? moment.utc(moment().endOf('day')).toISOString();\n break;\n }\n this.updateFilterState();\n }\n\n public onTimeStartChange(newDate: string): void {\n this.timeStart = newDate;\n this.updateFilterState();\n }\n\n public onTimeEndChange(newDate: string): void {\n // When we set a end time, make sure it ends at the last second of the minute\n // the UI only allow to set hour and minutes, so the seconds/ms need to be added manually\n // ex: 03h30 --> we want to query until 03h30 59sec\n // This way, if we query from 03:30 to 03:30, we will get results from events at 3:30 15sec\n try {\n this.timeEnd = this.toEndOfMinute(newDate);\n } catch {\n this.timeEnd = newDate;\n }\n this.updateFilterState();\n }\n\n public onDurationUnitComboboxChange(durationUnitItem: DurationItem): void {\n const durationUnitLabel = this.lastPeriodFilters.find((filter) => filter.durationUnit === durationUnitItem.durationUnit)?.label;\n if (durationUnitLabel) {\n this.setDuringLastX(new LastPeriodPreset(durationUnitLabel, this.lastPeriodDuration, durationUnitItem.durationUnit ?? 'h'));\n }\n }\n\n public onDurationValueChange(duration: number): void {\n const currentPeriod = this.currentLastPeriod;\n if (currentPeriod) {\n currentPeriod.duration = duration;\n this.setDuringLastX(currentPeriod);\n }\n }\n\n public setDuringLastX(period: LastPeriodPreset): void {\n this.mode = DateFilterMode.DuringLastPeriod;\n this.currentLastPeriod = period;\n this.timeStart = null;\n this.timeEnd = null;\n\n this.updateFilterState();\n }\n\n //#endregion\n\n //#region Protected Methods\n\n protected setupSubscription(): Subscription | undefined {\n if (!this.dataContext) return undefined;\n\n return this.dataContext.whenFilter$.pipe(untilDestroyed(this)).subscribe((newValue) => {\n if (newValue) {\n // special case so we don't just cycle setting value, getting value changed, setting value, etc. This will NOT trigger the value changed evt\n this.silentSetValue(newValue);\n // reset the old information (silently without triggering an update evt)\n this.mode = this.value.mode;\n const period = this.value.period;\n if (period) {\n this.currentLastPeriod = period;\n\n // Since we are using the gelato angular combobox we need to update the selectedDurationUnit prop.\n this.selectedDurationUnit = this.durationUnitsComboboxItems.find((durationUnitItem) => durationUnitItem.durationUnit === period.durationUnit);\n this.lastPeriodDuration = period.duration;\n }\n this.timeStart = this.value.timeStart;\n this.timeEnd = this.value.timeEnd;\n\n // save the new description\n this.updateFilterStatus();\n this.value.description = this.filterStatus;\n } else {\n // someone set undefined, re-set it to just an empty filter\n this.setFilterDefaultValue();\n }\n });\n }\n\n protected onValueChanged(): void {\n if (this.dataContext) {\n const newValue: WhenFilter = {\n description: this.value.description,\n mode: this.value.mode,\n period: this.value.period,\n timeEnd: this.value.timeEnd,\n timeStart: this.value.timeStart,\n isValid: this.value.isValid,\n };\n this.dataContext.setWhenFilter(newValue);\n }\n super.onValueChanged();\n }\n\n //#endregion\n\n //#region Private Methods\n\n private loadLastXFilters() {\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Minutes, 1, 'm'));\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Hours, 1, 'h'));\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Days, 1, 'd'));\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Weeks, 1, 'w'));\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Months, 1, 'M'));\n this.lastPeriodFilters.push(new LastPeriodPreset(DurationUnit.Years, 1, 'y'));\n\n // Default Duration Units Items\n this.durationUnitsComboboxItems = this.lastPeriodFilters.map((filter) => ({\n id: filter.id,\n text: this.translateService.instant(filter.label) as string,\n durationUnit: filter.durationUnit,\n }));\n }\n\n private updateFilterStatus() {\n switch (this.mode) {\n case DateFilterMode.Any:\n this.filterStatus = this.translateService.instant('STE_LABEL_ANYTIME') as string;\n break;\n case DateFilterMode.DuringLastPeriod:\n case DateFilterMode.ForNextPeriod:\n {\n if (this.currentLastPeriod) {\n this.filterStatus = stringFormat(\n this.translateService.instant('STE_LABEL_LAST_XY_DURATION_UNIT') as string,\n this.currentLastPeriod.duration.toString(),\n this.translateService.instant(this.currentLastPeriod.label) as string\n );\n } else {\n this.filterStatus = '';\n }\n }\n break;\n case DateFilterMode.Range:\n this.filterStatus = this.translateService.instant('STE_LABEL_SPECIFICDATE') as string;\n break;\n }\n }\n\n private updateFilterState() {\n this.updateFilterStatus();\n const isPeriodValid = this.validateTimePeriod();\n const period = this.mode === DateFilterMode.DuringLastPeriod ? this.currentLastPeriod : null;\n this.value = {\n timeStart: this.timeStart,\n timeEnd: this.timeEnd,\n description: this.filterStatus,\n mode: this.mode,\n period: period ?? null,\n isValid: isPeriodValid,\n };\n }\n\n private setFilterDefaultValue() {\n this.mode = DateFilterMode.DuringLastPeriod;\n // We are using last hour preset as the default period.\n const period = this.lastPeriodFilters.find((lastPeriod) => lastPeriod.duration === 1 && ['h', 'hour', 'hours'].includes(lastPeriod.durationUnit));\n this.selectedDurationUnit = this.durationUnitsComboboxItems.find((item) => ['h', 'hour', 'hours'].includes(item.durationUnit));\n if (period) {\n this.setDuringLastX(period);\n }\n }\n\n private toEndOfMinute(newDate: string): string {\n const dateTimeEnd = moment(newDate, moment.ISO_8601).toDate();\n dateTimeEnd.setSeconds(59, 999);\n return dateTimeEnd.toISOString();\n }\n\n private validateTimePeriod(): boolean {\n let isValid = false;\n this.specificDateTimePeriodValidationState = DateTimePeriodValidationState.Valid;\n\n if (this.mode === DateFilterMode.Any) {\n // Anytime\n isValid = true;\n } else if (this.mode === DateFilterMode.DuringLastPeriod && this.currentLastPeriod) {\n // During the last\n isValid = this.currentLastPeriod.duration <= this.MaxDurationValue && this.currentLastPeriod.duration >= this.MinDurationValue;\n } else {\n // Specific date\n const timeStart = this.timeStart;\n const timeEnd = this.timeEnd;\n if (timeStart && timeEnd) {\n const dateTimeEnd = new Date(timeEnd);\n const dateTimeStart = new Date(timeStart);\n isValid = dateTimeEnd.getTime() >= dateTimeStart.getTime();\n this.specificDateTimePeriodValidationState = isValid ? DateTimePeriodValidationState.Valid : DateTimePeriodValidationState.InvalidRange;\n }\n }\n return isValid;\n }\n\n //#endregion\n}\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { Subscription } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { WhereMode } from '@modules/correlation/api/api';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { LanguageService } from '@modules/shared/services/language/language.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { EntityBrowserComponent } from '@modules/shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { EntityBrowserCheckSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityBrowserService } from '@modules/shared/entity-browser/entity-browser.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { InvestigateFilterBaseComponent } from '../investigate-filter-base.component';\nimport { InvestigateDataContext } from '../../services/investigate-data.context';\nimport { WhereFilter } from '../../services/investigate-data.interfaces';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-investigate-where-filter',\n templateUrl: './where-filter.component.html',\n styleUrls: ['./where-filter.component.scss'],\n providers: [],\n})\nexport class InvestigateWhereFilterComponent extends InvestigateFilterBaseComponent implements OnInit, AfterViewInit {\n // Area browser filter\n @ViewChild('whereEntityBrowser') public whereEntityBrowser!: EntityBrowserComponent;\n public readonly filterId = SafeGuid.newGuid().toStringFormat('N');\n public readonly whereMode = WhereMode;\n\n public includedAreas: IGuid[] = [];\n public excludedAreas: IGuid[] = [];\n public wkt: string | null = null;\n public mode: WhereMode = WhereMode.Anywhere;\n\n private isError = false;\n\n // Allow selection of only Areas and SystemConfig\n private selectableEntityTypes = [EntityTypes.Areas, EntityTypes.SystemConfigurations];\n\n constructor(\n trackingService: TrackingService,\n private translateService: TranslateService,\n private dataContext: InvestigateDataContext,\n private entityBrowserService: EntityBrowserService,\n private languageService: LanguageService\n ) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.updateFilterState();\n // reset filter status if language changed to display the correct filter state\n this.languageService.languageChanged.pipe(untilDestroyed(this)).subscribe(() => {\n this.updateFilterState();\n });\n }\n\n async ngAfterViewInit() {\n // Display all logical entity types in the where filter entity browser\n const displayableEntityTypes = await this.entityBrowserService.getDefaultLogicalTypesAsync();\n\n this.whereEntityBrowser.refreshAsync(new EntityBrowserFilter(displayableEntityTypes, this.selectableEntityTypes)).fireAndForget();\n }\n\n public onCheckedEntitiesChanged(areaSelection: EntityBrowserCheckSelection): void {\n this.onAreaGuidChanged(areaSelection.ids, areaSelection.exclusions);\n }\n\n public onAnywhereClicked(): void {\n this.mode = this.whereMode.Anywhere;\n this.includedAreas = [];\n this.excludedAreas = [];\n this.updateFilterState();\n this.filterToggle.emit(false);\n }\n\n public onLogicalClicked(): void {\n this.mode = this.whereMode.Logical;\n this.includedAreas = this.whereEntityBrowser?.checkedEntities?.ids ?? [];\n this.excludedAreas = this.whereEntityBrowser?.checkedEntities?.exclusions ?? [];\n this.updateFilterState();\n }\n\n public onAreaGuidChanged(includedAreas: IGuid[], excludedAreas: IGuid[]): void {\n if (this.mode !== WhereMode.Logical) {\n return;\n }\n\n if (includedAreas?.length) {\n this.includedAreas = includedAreas;\n } else {\n this.includedAreas = [];\n }\n if (excludedAreas?.length) {\n this.excludedAreas = excludedAreas;\n } else {\n this.excludedAreas = [];\n }\n this.updateFilterState();\n }\n\n protected setupSubscription(): Subscription | undefined {\n if (!this.dataContext) return undefined;\n\n return this.dataContext.whereFilter$.pipe(untilDestroyed(this)).subscribe((newValue) => {\n if (newValue) {\n // special case so we don't just cycle setting value, getting value changed, setting value, etc. This will NOT trigger the value changed evt\n this.silentSetValue(newValue);\n\n // reset the old information (silently without triggering an update evt)\n this.wkt = this.value.wkt;\n this.isError = !this.value.isValid;\n if (this.value.includedAreas !== null) {\n this.includedAreas = this.value.includedAreas;\n }\n if (this.value.excludedAreas !== null) {\n this.excludedAreas = this.value.excludedAreas;\n }\n this.mode = this.value.mode;\n\n // save the new description\n this.updateFilterStatus();\n this.value.description = this.filterStatus;\n } else {\n // someone set undefined, re-set it to just an empty filter\n this.value = {\n wkt: null,\n description: this.translateService.instant('STE_LABEL_ANYWHERE') as string,\n intersection: true,\n isValid: true,\n includedAreas: null,\n excludedAreas: null,\n mode: WhereMode.Anywhere,\n };\n }\n });\n }\n\n protected onValueChanged(): void {\n if (this.dataContext) {\n const newValue: WhereFilter = {\n includedAreas: this.value.includedAreas && [...this.value.includedAreas],\n excludedAreas: this.value.excludedAreas && [...this.value.excludedAreas],\n description: this.value.description,\n intersection: this.value.intersection,\n mode: this.value.mode,\n isValid: this.value.isValid,\n wkt: this.value.wkt,\n };\n this.dataContext.setWhereFilter(newValue);\n }\n super.onValueChanged();\n }\n\n private updateFilterStatus() {\n if (this.isError) {\n this.filterStatus = this.translateService.instant('STE_LABEL_INVALIDFILTER') as string;\n return;\n }\n this.filterStatus = this.translateService.instant('STE_LABEL_ANYWHERE') as string;\n\n switch (this.mode) {\n case WhereMode.Anywhere:\n this.filterStatus = this.translateService.instant('STE_LABEL_ANYWHERE') as string;\n break;\n case WhereMode.Logical:\n if (this.includedAreas?.length) {\n this.filterStatus = this.translateService.instant('STE_LABEL_INAREA') as string;\n }\n break;\n default:\n break;\n }\n }\n\n private updateFilterState() {\n this.updateFilterStatus();\n\n this.value = {\n wkt: this.wkt,\n intersection: true,\n description: this.filterStatus,\n isValid: !this.isError,\n includedAreas: this.includedAreas && [...this.includedAreas],\n excludedAreas: this.excludedAreas && [...this.excludedAreas],\n mode: this.mode,\n };\n }\n}\n","
    \n
      \n
    • \n \n \n
      \n \n \n {{ 'STE_LABEL_WHERE_FILTER_SPECIFIC' | translate }}\n \n \n \n
      \n
    \n \n
  • \n \n \n
    \n \n \n {{ 'STE_LABEL_ANYWHERE' | translate }}\n \n \n
    \n \n
  • \n \n
      \n
    • \n \n
      \n \n \n
      \n
    • \n
    \n\n","import { Component } from '@angular/core';\nimport { InvestigateSideContextDataService } from '../services/investigate-side-context-data.service';\n\n@Component({\n selector: 'app-investigate-side-pane',\n templateUrl: 'investigate-side-pane.component.html',\n})\nexport class InvestigateSidePaneComponent {\n constructor(public contextDataService: InvestigateSideContextDataService) {}\n}\n","\n","\n
    \n
    \n \n
    \n
    \n\n\n\n \n \n
    \n
    \n
    \n \n
    \n \n {{ 'STE_LABEL_WHAT' | translate }} \n \n {{ whatFilterDescription$ | async }}\n \n \n \n \n \n
    \n\n \n
    \n \n {{ 'STE_LABEL_WHEN' | translate }} \n \n {{ (isWhenFilterValid$ | async) ? (whenFilterDescription$ | async) : ('STE_LABEL_INVALIDFILTER' | translate) }}\n \n \n \n \n \n
    \n \n
    \n \n {{ 'STE_LABEL_WHERE' | translate }} \n {{ whereFilterDescription$ | async }} \n \n \n \n \n
    \n\n
    \n \n \n \n {{ 'STE_BUTTON_GENERATE' | translate }}\n \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n {{ 'STE_ACTION_EDITCOLUMNS' | translate }}\n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n\n \n \n
    \n \n
    \n \n {{ 'STE_TASK_REPORTS' | translate }}\n {{ 'STE_MESSAGE_INFO_WHATAREYOULOOKINGFOR' | translate }}\n \n \n\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ButtonFlavor, Icon, IconSize, ItemSlot, PopupPosition, TextFlavor, SpinnerSize } from '@genetec/gelato';\nimport { GenPopup, GenToastService, MeltedIcon, ToastFlavor } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Observable } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { UnifiedReportFeatureFlags } from '@modules/correlation/feature-flags';\nimport { CorrelationService } from '@modules/correlation/services/correlation.service';\nimport { SortOrder } from '@modules/correlation/enumerations/sort-order';\nimport { ViewMode } from '@modules/correlation/enumerations/view-mode';\nimport { RowResult } from '@modules/correlation/interfaces/row-result';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { AnalyticsNames } from '@modules/shared/enumerations/analytics-names';\nimport { InvestigateContext } from '@modules/correlation/enumerations/analytics-investigate-context';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport moment from 'moment';\nimport { DateFilterMode } from '@modules/shared/components/filters/common-filters/filter-date/enums/date-filter-mode.enum';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { distinctUntilChanged, map, pluck } from 'rxjs/operators';\nimport { notNullOrUndefined } from '@modules/shared/operators/not-null-or-undefined';\nimport { Select } from '@ngxs/store';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { Constants } from '@src/constants';\nimport { ContentOverlayService } from '@shared/services/content-overlay/content-overlay.service';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\nimport { WhatFilter } from '../services/investigate-data.interfaces';\nimport { ApiException, CorrelationClient, CorrelationQueryArguments, CorrelationQueryResult, ErrorSeverity, LocationFilter, ModelStateEntry, WhereMode } from '../../../api/api';\nimport { CorrelationFeatures } from '../../../enumerations/correlation.features';\nimport { InvestigateResultsContainerComponent } from '../results/investigate-results-container.component';\nimport { InvestigateDataContext } from '../services/investigate-data.context';\nimport { InvestigateSideContextDataService } from '../services/investigate-side-context-data.service';\nimport { SelectInvestigateColumnsComponent } from '../../general/select-investigate-columns/select-investigate-columns.component';\nimport { InvestigateWhatFilterComponent } from '../filters/what/what-filter.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@UntilDestroy()\n@Component({\n selector: 'app-investigate',\n templateUrl: './investigate-task.component.html',\n styleUrls: ['./investigate-task.component.scss'],\n providers: [InvestigateSideContextDataService, InvestigateDataContext, ContentOverlayService],\n})\n@InternalPluginDescriptor({\n type: InvestigateTaskComponent,\n pluginTypes: [PluginTypes.Task],\n exposure: {\n id: InvestigateTaskComponent.pluginId,\n icon: 'gen-ico-charts',\n title: 'STE_TASK_REPORTS',\n tags: ['STE_BUTTON_INVESTIGATE', 'STE_TASK_REPORTS', 'STE_LABEL_DATA', 'datum'],\n priority: 20,\n },\n requirements: {\n features: [CorrelationFeatures.investigationTaskFeature],\n licenses: [KnownLicenses.correlation],\n globalPrivileges: [KnownPrivileges.correlationReportPrivilege],\n enabledFeatureFlags: [UnifiedReportFeatureFlags.General],\n },\n isSupported: () => true,\n})\nexport class InvestigateTaskComponent extends TrackedComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('EE14C544-8E6E-4626-8737-55B2A7AF9B49');\n public static maxResultCount = 500;\n\n @ViewChild(InvestigateResultsContainerComponent) public resultsContainerComponent!: InvestigateResultsContainerComponent;\n @ViewChild('whatPopup') whatPopup!: GenPopup;\n @ViewChild('whenPopup') whenPopup!: GenPopup;\n @ViewChild('wherePopup') wherePopup!: GenPopup;\n @ViewChild('selectColumns') selectColumnsComponent!: SelectInvestigateColumnsComponent;\n\n @Select(FeatureFlagsState.featureFlags(GeneralFeatureFlags.ExpandWidget))\n public isPortalEnabled$!: Observable;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly ItemSlot = ItemSlot;\n public readonly TextFlavor = TextFlavor;\n public readonly PopupPosition = PopupPosition;\n public readonly SpinnerSize = SpinnerSize;\n\n public isSplashSreenOpen = true;\n public isMoreMenuOpen = false;\n public viewMode = ViewMode.Grid;\n public numResults!: string;\n public querying = false;\n public sortOrder = SortOrder.Ascending;\n\n public isWhenFilterValid$: Observable;\n public whatFilterDescription$: Observable;\n public whereFilterDescription$: Observable;\n public whenFilterDescription$: Observable;\n\n public maxNumberOfResultsToDisplayInView;\n\n private readonly defaultNumberOfResultsToDisplayInView = 2000;\n private timeout: number | null = null;\n private lastQueriedResults: RowResult[] = [];\n\n constructor(\n trackingService: TrackingService,\n private translateService: TranslateService,\n private loggerService: LoggerService,\n private contentProviderService: ContentProviderService,\n private contextDataService: InvestigateSideContextDataService,\n private route: ActivatedRoute,\n public dataContext: InvestigateDataContext,\n public notificationService: GenToastService,\n private correlationClient: CorrelationClient,\n private changeDetectorRef: ChangeDetectorRef,\n private correlationService: CorrelationService,\n private securityCenterClientService: SecurityCenterClientService,\n private analyticsService: AnalyticsService,\n private advancedSettingsService: AdvancedSettingsService\n ) {\n super(trackingService);\n this.maxNumberOfResultsToDisplayInView = this.getMaxUnifiedReportRows();\n\n this.whatFilterDescription$ = this.dataContext.whatFilter$.pipe(notNullOrUndefined(), pluck('description'), distinctUntilChanged());\n this.whenFilterDescription$ = this.dataContext.whenFilter$.pipe(notNullOrUndefined(), pluck('description'), distinctUntilChanged());\n this.whereFilterDescription$ = this.dataContext.whereFilter$.pipe(notNullOrUndefined(), pluck('description'), distinctUntilChanged());\n this.isWhenFilterValid$ = this.dataContext.whenFilter$.pipe(\n notNullOrUndefined(),\n map((filter) => filter.isValid ?? false),\n distinctUntilChanged()\n );\n }\n\n //#region Methods\n\n public ngOnInit() {\n super.ngOnInit();\n\n const params = this.route.snapshot?.paramMap;\n if (params?.has(Constants.subTaskIdentifier)) {\n const subTaskId = params.get(Constants.subTaskIdentifier);\n if (subTaskId) {\n const dataTypeId = SafeGuid.from(subTaskId) ?? InvestigateWhatFilterComponent.AnythingDataTypeId;\n if (!dataTypeId.isEmpty()) {\n this.openReport(dataTypeId).fireAndForget();\n return;\n }\n }\n }\n\n // This will load the last generated report if the filters are still stored in the dataContext\n this.displayLastGeneratedReport();\n }\n\n public ngOnDestroy() {\n this.contextDataService?.clearMainContent();\n super.ngOnDestroy();\n }\n\n //#endregion\n\n //#region Methods\n\n public onItemSelected(): void {\n this.investigate().fireAndForget();\n this.isSplashSreenOpen = false;\n }\n\n public toggleMoreMenu(override?: boolean): void {\n this.isMoreMenuOpen = override ?? !this.isMoreMenuOpen;\n }\n\n public async investigate(context: InvestigateContext = InvestigateContext.Report): Promise {\n this.logInvestigateEvent(context).fireAndForget();\n await this.executeQueryAsync();\n }\n\n public async executeQueryAsync(): Promise {\n try {\n // set display status\n this.querying = true;\n // build arguments\n const args = this.buildQueryArguments();\n // execute query\n const report = await this.correlationClient.query(args).toPromise();\n // if the report has an error message, display the toast\n if (report.error) {\n this.loggerService.traceDebug(`Investigate report error received ${report.error}`);\n this.displayReportError(report).fireAndForget();\n }\n let len = report.items.length ?? 0;\n if (len && len > this.maxNumberOfResultsToDisplayInView) {\n len = this.maxNumberOfResultsToDisplayInView;\n }\n this.numResults = len.toString();\n this.loggerService.traceDebug(`Investigate report retrieved ${this.numResults} items`);\n this.setReportResults(report);\n } catch (err) {\n this.loggerService.traceDebug(`Error while execute investigate query report`);\n let showNoResults = true;\n if (err instanceof ApiException) {\n if (err.status === 400) {\n let subText: string | undefined;\n if (err.result instanceof ModelStateEntry && err.result.errors) {\n subText = err.result.errors?.length > 0 ? err.result.errors[0]?.errorMessage ?? undefined : undefined;\n }\n // bad request\n this.notificationService.show({\n text: this.translateService.instant('STE_LABEL_INVALIDFILTER') as string,\n flavor: ToastFlavor.Warning,\n icon: MeltedIcon.Warning,\n secondaryText: subText,\n });\n showNoResults = false;\n } else if (err.status === 500) {\n let subtext: string | undefined;\n if (typeof err.result === 'string' && err.result) {\n subtext = err.result;\n }\n // something fatal happened\n this.notificationService.show({\n text: this.translateService.instant('STE_LABEL_UNKNOWNERROR') as string,\n flavor: ToastFlavor.Error,\n icon: MeltedIcon.Error,\n secondaryText: subtext,\n });\n showNoResults = false;\n }\n }\n // fallback, some other API error occurred. Just show no results\n if (showNoResults) {\n this.notificationService.show({\n text: this.translateService.instant('STE_LABEL_NORESULTS') as string,\n secondaryText: this.translateService.instant('STE_MESSAGE_INFO_NORESULTS_DETAILS') as string,\n flavor: ToastFlavor.Information,\n icon: MeltedIcon.Info,\n });\n }\n } finally {\n // clear status + pop notification window if now results\n this.querying = false;\n }\n }\n\n public async toggleWhatFilter(open?: boolean): Promise {\n if (open !== undefined) {\n this.whatPopup.open = open;\n } else {\n await this.whatPopup.toggle();\n }\n }\n\n public async toggleWhenFilter(open?: boolean): Promise {\n if (open !== undefined) {\n this.whenPopup.open = open;\n } else {\n await this.whenPopup.toggle();\n }\n }\n\n public async toggleWhereFilter(open?: boolean): Promise {\n if (open !== undefined) {\n this.wherePopup.open = open;\n } else {\n await this.wherePopup.toggle();\n }\n }\n\n public onSelectionChanged(key?: string): void {\n if (key) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.timeout = window.setTimeout(async () => {\n this.contextDataService?.setLoadingMainContent();\n\n const fo = new FieldObject();\n fo.setField('SourceId', key);\n await this.updateSidePane(fo);\n });\n }\n }\n\n public onQueryingChanged(querying: boolean): void {\n this.querying = querying;\n }\n\n public showColumnSelector(): void {\n this.selectColumnsComponent.show();\n this.changeDetectorRef.detectChanges();\n }\n\n //#endregion\n\n //#region Private Methods\n\n private async openReport(dataTypeId: IGuid): Promise {\n this.dataContext.setWhatFilter({\n dataTypes: [dataTypeId],\n parameters: [] as CorrelationSearchParameter[],\n description: await this.getDataTypeDescription(dataTypeId),\n } as WhatFilter);\n setTimeout(() => this.investigate(), 50);\n this.displayLastGeneratedReport();\n }\n\n private async getDataTypeDescription(requestedDataType: IGuid): Promise {\n let dataTypeDescription = '';\n const dataTypes = await this.correlationService.getDataTypes();\n if (dataTypes && requestedDataType) {\n dataTypes.forEach((element) => {\n if (element.dataType.equals(requestedDataType)) {\n dataTypeDescription = element.name;\n }\n });\n }\n return dataTypeDescription;\n }\n\n private getMaxUnifiedReportRows(): number {\n const count = this.advancedSettingsService.get('MaxUnifiedReportRows', this.defaultNumberOfResultsToDisplayInView);\n if (count < 0) {\n return this.defaultNumberOfResultsToDisplayInView;\n }\n return count;\n }\n\n private async logInvestigateEvent(investigateContext: InvestigateContext) {\n // Get what filter analytics description\n const whatFilterAnalyticsDescription = await this.getSelectedDataTypesName();\n\n // Get when filter analytics description\n const whenFilter = this.dataContext?.whenFilter;\n\n // TODO: Get where filter analystics description when that filter will be refactored\n const filterMap = { what: whatFilterAnalyticsDescription, when: whenFilter, where: this.whereFilterDescription$, context: investigateContext };\n this.analyticsService.logEvent(AnalyticsNames.Investigate.ReportGenerated, filterMap);\n }\n\n private async getSelectedDataTypesName() {\n const whatFilterDataTypes = this.dataContext.whatFilter?.dataTypes;\n const dataTypes = await this.correlationService.getDataTypes();\n\n const whatFilterAnalyticsDescription = dataTypes\n ?.filter((dataTypeModel) => whatFilterDataTypes?.find((wFilter) => wFilter.equals(dataTypeModel.dataType)))\n .map((data) => ({ guid: data.dataType.toString(), friendlyName: data.name }));\n return whatFilterAnalyticsDescription ?? [];\n }\n\n private displayLastGeneratedReport() {\n const whatFilter = this.dataContext.whatFilter;\n if (whatFilter && whatFilter.dataTypes?.length > 0) {\n this.isSplashSreenOpen = false;\n this.investigate(InvestigateContext.Refresh).fireAndForget();\n }\n }\n\n private computeTimeFilter(): { timeStart: string | null; timeEnd: string | null } {\n if (this.dataContext?.whenFilter && this.dataContext.whenFilter.mode === DateFilterMode.DuringLastPeriod && this.dataContext.whenFilter.period) {\n const timeStartComputed = moment.utc().subtract(this.dataContext.whenFilter.period.duration, this.dataContext.whenFilter.period.durationUnit).toISOString() as\n | string\n | null;\n const timeEndComputed = moment.utc().toISOString() as string | null;\n return { timeStart: timeStartComputed, timeEnd: timeEndComputed };\n }\n const timeStart = this.dataContext.whenFilter?.timeStart ?? null;\n const timeEnd = this.dataContext.whenFilter?.timeEnd ?? null;\n return { timeStart, timeEnd };\n }\n\n private buildQueryArguments(): CorrelationQueryArguments {\n // build arguments\n const { timeStart, timeEnd } = this.computeTimeFilter();\n const args = new CorrelationQueryArguments({\n dataTypes: this.dataContext.whatFilter?.dataTypes?.map((item) => item) ?? [],\n locationFilter: new LocationFilter({\n intersection: this.dataContext.whereFilter?.intersection ?? true,\n whereMode: this.dataContext.whereFilter?.mode ?? WhereMode.Anywhere,\n includedAreas: this.dataContext.whereFilter?.includedAreas ?? null,\n excludedAreas: this.dataContext.whereFilter?.excludedAreas ?? null,\n wkt: this.dataContext.whereFilter?.wkt ?? undefined,\n }),\n parameters: this.dataContext.whatFilter?.parameters?.map((item) => item.toLightParameter()) ?? [],\n endTime: timeEnd,\n startTime: timeStart,\n maxResults: InvestigateTaskComponent.maxResultCount,\n });\n return args;\n }\n\n private async displayReportError(report: CorrelationQueryResult) {\n // the report has a message, display the toast\n if (report.error) {\n let flavor = ToastFlavor.Information;\n let icon = MeltedIcon.None;\n if (report.errorSeverity === ErrorSeverity.Warning) {\n flavor = ToastFlavor.Warning;\n icon = MeltedIcon.Warning;\n } else if (report.errorSeverity === ErrorSeverity.Error) {\n flavor = ToastFlavor.Error;\n icon = MeltedIcon.Error;\n }\n let toasted = false;\n if (report.source && !report.source.equals(SafeGuid.EMPTY)) {\n // retrieve the source entity and display it with the error\n const client = this.securityCenterClientService?.scClient;\n if (client) {\n const entityName = await client.getEntityAsync(Entity, report.source, null, null, EntityFields.nameField);\n if (entityName) {\n this.notificationService.show({\n text: `(${entityName.name}) ${report.error}`,\n flavor,\n icon,\n secondaryText: report.errorMessage ? report.errorMessage : undefined,\n });\n toasted = true;\n }\n }\n }\n if (!toasted) {\n this.notificationService.show({\n text: report.error,\n flavor,\n icon,\n secondaryText: report.errorMessage ? report.errorMessage : undefined,\n });\n }\n }\n }\n\n private setReportResults(report: CorrelationQueryResult) {\n const data = this.resultsContainerComponent.getReportData(report);\n if (data?.length > 0) {\n this.lastQueriedResults = data;\n this.resultsContainerComponent.setResults(data.slice(0, this.maxNumberOfResultsToDisplayInView));\n } else {\n this.lastQueriedResults = [];\n this.resultsContainerComponent.setResults([]);\n }\n }\n\n private async updateSidePane(contentSourceData: FieldObject) {\n if (contentSourceData) {\n const content = await this.contentProviderService.getContentFromFieldsAsync(contentSourceData, InvestigateTaskComponent.pluginId);\n this.contextDataService?.setMainContent(content ? content : undefined);\n }\n }\n\n //#endregion\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Color, Gelato } from '@genetec/gelato-angular';\nimport moment from 'moment';\nimport { debounce } from 'lodash-es';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CoreRowResult } from '@modules/correlation/interfaces/row-result';\nimport { Moment } from 'moment-timezone';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport interface HistogramBin {\n center: moment.Moment;\n widthMs: number;\n count: number;\n}\n\n@Component({\n selector: 'app-investigate-results-event-timeline',\n templateUrl: './event-timeline.component.html',\n styleUrls: ['./event-timeline.component.scss'],\n providers: [],\n})\nexport class InvestigateResultsEventTimelineComponent extends Gelato {\n // #region Constants\n\n private static readonly minLength = 30000; // 30 s\n private static readonly maxLength = 86400000 * 365; // 1 day * 365 = 1 yr\n private static readonly tickIntervals: { ms: number; ticks: number }[] = [\n { ms: -1, ticks: 0 }, // invalid\n { ms: 1, ticks: 5 }, // 5 ms\n { ms: 10, ticks: 5 }, // 50 ms\n { ms: 1000, ticks: 5 }, // 5 s\n { ms: 5000, ticks: 6 }, // 30 s\n { ms: 10000, ticks: 6 }, // 1 min\n { ms: 30000, ticks: 4 }, // 2 min\n { ms: 60000, ticks: 5 }, // 5 min\n { ms: 120000, ticks: 5 }, // 10 min\n { ms: 300000, ticks: 6 }, // 30 min\n { ms: 600000, ticks: 6 }, // 1 hr\n { ms: 1800000, ticks: 4 }, // 2 hr\n { ms: 3600000, ticks: 6 }, // 6 hr\n { ms: 7200000, ticks: 6 }, // 12 hr\n { ms: 14400000, ticks: 6 }, // 1 d\n { ms: 28800000, ticks: 6 }, // 2 d\n { ms: 86400000, ticks: 7 }, // 1 w\n { ms: 483800000, ticks: 8 }, // 4 w\n { ms: 3154000000, ticks: 6 }, // 6 mo\n { ms: 6308000000, ticks: 6 }, // 1 y\n ];\n\n // #endregion\n\n //#region Fields\n\n /* ViewChild, Input, and Output bindings */\n @ViewChild('maindiv') public maindiv!: ElementRef;\n @ViewChild('canvas') public canvas!: ElementRef;\n @ViewChild('ticks') public ticks!: ElementRef;\n\n @Input()\n public get results(): CoreRowResult[] {\n return this.privateResults;\n }\n public set results(value: CoreRowResult[]) {\n if (value) {\n this.privateResults = InvestigateResultsEventTimelineComponent.sortByTimeDesc(value);\n if (this.privateResults.length >= 2) {\n const min = this.privateResults[0];\n const max = this.privateResults[this.privateResults.length - 1];\n const range = max.mmtTime.clone().diff(min.mmtTime.clone()); // in ms\n // add +/- 5% of the time range to the tails, so the bins are inside the span\n this.dataStartTime = min.mmtTime.clone().subtract(range * 0.05, 'ms') as unknown as moment.Moment;\n this.dataEndTime = max.mmtTime.clone().add(range * 0.05, 'ms') as unknown as moment.Moment;\n this.privateTime = {\n start: this.dataStartTime.clone(),\n end: this.dataEndTime.clone(),\n };\n } else if (this.privateResults.length === 1) {\n // +/- 1 minute around \"the only element\"\n this.dataStartTime = this.privateResults[0].mmtTime.clone().subtract(1, 'minute') as unknown as moment.Moment;\n this.dataEndTime = this.privateResults[0].mmtTime.clone().add(1, 'minute') as unknown as moment.Moment;\n this.privateTime = {\n start: this.dataStartTime.clone(),\n end: this.dataStartTime.clone(),\n };\n } else {\n // +/- 1 minute around \"now\"\n const time = moment().clone();\n this.dataStartTime = time.clone().subtract(1, 'minute');\n this.dataEndTime = time.clone().add(1, 'minute');\n this.privateTime = {\n start: this.dataStartTime.clone(),\n end: this.dataStartTime.clone(),\n };\n }\n\n this.draw();\n setTimeout(() => this.debouncedDraw(), 51);\n }\n }\n\n @Output()\n public timeRangeChanged = new EventEmitter<[moment.Moment, moment.Moment]>();\n\n @Output()\n public query = new EventEmitter<[moment.Moment, moment.Moment]>();\n\n @Output()\n public binSelected = new EventEmitter<[moment.Moment, moment.Moment] | null>();\n\n /* Public Fields */\n public get time(): { start: moment.Moment; end: moment.Moment } {\n return this.privateTime;\n }\n public set time(newRange: { start: moment.Moment; end: moment.Moment }) {\n this.privateTime = {\n start: newRange.start.clone(),\n end: newRange.end.clone(),\n };\n this.debouncedChanges();\n }\n public tooltips: string[] = [];\n public captureMouse = -1;\n public isPanning = false;\n public cursorX = 0;\n public currentBin: HistogramBin | null = null;\n public get currentBinCount(): string {\n return stringFormat(this.translateService.instant('STE_LABEL_RESULTCOUNT') as string, this.currentBin?.count?.toString() ?? '');\n }\n\n /* Private Fields */\n private debouncedDraw = debounce(() => {\n this.draw();\n }, 50);\n private debouncedChanges = debounce(() => {\n const low = this.privateTime.start.clone();\n const high = this.privateTime.end.clone();\n this.timeRangeChanged.emit([low, high]);\n }, 100);\n private currentBins: HistogramBin[] = [];\n private mouseDownPosition?: number = undefined;\n private zoomFactor = 2;\n private initialMovingTime?: moment.Moment;\n private currentHeight = 0;\n private currentWidth = 0;\n private privateResults: CoreRowResult[] = [];\n private dataStartTime!: moment.Moment;\n private dataEndTime!: moment.Moment;\n private privateTime!: { start: moment.Moment; end: moment.Moment };\n private currentTickInterval!: { ms: number; ticks: number };\n private selectedBin: HistogramBin | null = null;\n\n //#endregion\n\n //#region Constructors\n\n constructor(private timeService: TimeService, private translateService: TranslateService) {\n super();\n }\n\n //#endregion\n\n // #region Drawing\n\n /**\n * Draws a rounded rectangle using the current state of the canvas.\n * If you omit the last three params, it will draw a rectangle\n * outline with a 5 pixel border radius\n */\n private static roundRect(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n width: number,\n height: number,\n o_radius: number | { tl: number; tr: number; br: number; bl: number },\n fill: boolean,\n o_stroke?: boolean\n ) {\n let stroke = o_stroke;\n let radius = o_radius;\n if (typeof stroke === 'undefined') {\n stroke = true;\n }\n if (typeof radius === 'undefined') {\n radius = 5;\n }\n if (typeof radius === 'number') {\n radius = { tl: radius, tr: radius, br: radius, bl: radius };\n } else {\n radius.tl = radius.tl || 0;\n radius.tr = radius.tr || 0;\n radius.br = radius.br || 0;\n radius.bl = radius.bl || 0;\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n if (stroke) {\n ctx.stroke();\n }\n }\n\n private static filterTime(values: CoreRowResult[], start: moment.Moment, end: moment.Moment): CoreRowResult[] {\n const s = start.toDate().getTime();\n const e = end.toDate().getTime();\n\n return values.filter((item) => {\n const time = item.mmtTime.toDate().getTime();\n return time >= s && time < e;\n });\n }\n\n private static hist(values: CoreRowResult[], nbins: number, startDate: moment.Moment, endDate: moment.Moment): HistogramBin[] {\n const bins: HistogramBin[] = new Array(nbins);\n\n const duration = Math.abs(endDate.diff(startDate));\n const binWidth = duration / nbins;\n const halfWidth = binWidth / 2.0;\n for (let i = 0; i < nbins; i++) {\n let center = startDate.clone().add(halfWidth, 'ms');\n if (i > 0) {\n center = center.clone().add(binWidth * i, 'ms');\n }\n\n // left edge\n const low = center.clone().subtract(halfWidth, 'ms');\n // right edge\n const high = center.clone().add(halfWidth, 'ms');\n // count the points between the edges\n const count = this.filterTime(values, low, high).length;\n bins[i] = {\n center,\n widthMs: binWidth,\n count,\n };\n }\n\n return bins;\n }\n\n private static sortByTimeDesc(value: CoreRowResult[]): CoreRowResult[] {\n // Apply the sorting\n if (!value) return value;\n\n return value.sort((a, b) => {\n if (a.mmtTime && b.mmtTime) {\n return a.mmtTime.toDate().getTime() - b.mmtTime.toDate().getTime();\n } else return -1;\n });\n }\n\n public draw(): void {\n const canvas = this.canvas.nativeElement;\n if (!canvas) {\n return;\n }\n\n // ensure we have a valid length\n const length = this.time.end.diff(this.time.start);\n if (length <= 0) {\n this.time.end = this.time.end.clone().add(1, 'minute');\n this.time.start = this.time.start.clone().add(1, 'minute');\n }\n\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n this.currentWidth = ctx.canvas.scrollWidth;\n this.currentHeight = ctx.canvas.scrollHeight;\n canvas.width = this.currentWidth;\n\n // apply a different style depending on mouse over\n canvas.height = 50;\n\n // draw background\n ctx.fillStyle = 'black';\n ctx.globalAlpha = 0.5;\n ctx.fillRect(0, 0, this.currentWidth, this.currentHeight);\n ctx.globalAlpha = 1;\n\n // draw sequence events first\n // unselected: #007CAA\n ctx.fillStyle = Color.Puffo;\n this.drawEvents(ctx, InvestigateResultsEventTimelineComponent.filterTime(this.privateResults, this.time.start, this.time.end), false);\n\n this.drawTicks(length);\n\n // draw the region which the data covers\n ctx.fillStyle = '#C0C0C0'; // Silver\n ctx.globalAlpha = 0.2;\n\n const loopStartX =\n this.time.start.toDate().getTime() >= this.dataStartTime.toDate().getTime() ? 0 : this.getPercentageFromTime(this.dataStartTime.clone()) * this.currentWidth;\n const loopEndX =\n this.time.end.toDate().getTime() <= this.dataEndTime.toDate().getTime() ? this.currentWidth : this.getPercentageFromTime(this.dataEndTime.clone()) * this.currentWidth;\n if (loopEndX > loopStartX) {\n ctx.fillRect(loopStartX, 0, loopEndX, this.currentHeight);\n }\n }\n\n public drawEvents(ctx: CanvasRenderingContext2D, events: CoreRowResult[], isPonctual: boolean): void {\n const histogram = InvestigateResultsEventTimelineComponent.hist(events, 50, this.time.start, this.time.end);\n if (histogram == null) return;\n\n // we only care about the non-zero bins\n this.currentBins = histogram.filter((bin) => bin.count > 0);\n\n // there are no bins to render, just exit\n if (this.currentBins.length === 0) {\n return;\n }\n\n const selected = this.selectedBin?.center?.toDate()?.getTime();\n\n const maxCount = Math.max.apply(\n null,\n histogram.map((item) => item.count)\n );\n for (const element of histogram) {\n // don't draw 0-elements\n if (element.count <= 0) continue;\n\n const fractionalDraw = element.count / maxCount;\n let posStartPercent = this.getPercentageFromTime(\n element.center\n .clone()\n .subtract(element.widthMs / 2.0, 'ms')\n .clone()\n );\n const posEndPercent = this.getPercentageFromTime(\n element.center\n .clone()\n .add(element.widthMs / 2.0, 'ms')\n .clone()\n );\n\n // ensure events starting before start time are drawn from x=0\n if (posStartPercent < 0) {\n if (isPonctual) {\n continue;\n } else {\n posStartPercent = 0;\n }\n }\n\n const histPadding = 3; // pixels\n const startX = posStartPercent * this.currentWidth + histPadding;\n let stopX = posEndPercent * this.currentWidth - histPadding;\n\n // ensure events ending after end time stop at the end of the timeline\n if (stopX > this.currentWidth) {\n stopX = this.currentWidth;\n }\n\n /*\n // if we need to apply transparency\n let alpha = 1.0;\n ctx.globalAlpha = alpha;\n */\n\n // only draw if it's in the timeline boundaries\n if (startX >= 0 && startX <= this.currentWidth && stopX >= 0 && stopX <= this.currentWidth) {\n const y = this.currentHeight - this.currentHeight * fractionalDraw;\n if (selected && element.center.toDate().getTime() !== selected) {\n // fade \"unselected\" bins\n ctx.globalAlpha = 0.4;\n } else {\n ctx.globalAlpha = 1.0;\n }\n\n InvestigateResultsEventTimelineComponent.roundRect(\n ctx,\n startX,\n y,\n stopX - startX,\n this.currentHeight * fractionalDraw,\n { tl: 5, tr: 5, bl: 0, br: 0 },\n true,\n false\n );\n }\n }\n // restore the alpha\n ctx.globalAlpha = 1.0;\n }\n\n public drawTicks(length: number): void {\n const ticks = this.ticks.nativeElement;\n if (!ticks) {\n return;\n }\n\n const ticskHeight = 14;\n const ctx = ticks.getContext('2d') as CanvasRenderingContext2D;\n ticks.width = this.currentWidth;\n ticks.height = ticskHeight;\n\n this.updateTickSpacing();\n\n // draw ticks\n const ms = this.currentTickInterval.ms;\n const majorTicks = this.currentTickInterval.ticks;\n // const showMilliseconds = ms < 200;\n const showSeconds = ms < 10000;\n const showMinutes = ms < 600000;\n const showHours = ms < 14400000;\n const showDays = ms >= 14400000;\n const is24HourFormat = this.timeService.is24HourFormat;\n\n let timeFormat = 'h a';\n if (showDays) {\n timeFormat = 'DDMMM';\n } else if (showHours && !showMinutes && !showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH') : (timeFormat = 'h a');\n } else if (showHours && showMinutes && !showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH:mm') : (timeFormat = 'h:mm a');\n } else if (showHours && showMinutes && showSeconds) {\n timeFormat = is24HourFormat ? (timeFormat = 'HH:mm:ss') : (timeFormat = 'h:mm:ss');\n }\n\n const tickCount = length / ms;\n\n // draw every tick\n ctx.beginPath();\n ctx.lineWidth = 0.5;\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n ctx.strokeStyle = '#000000';\n ctx.fillStyle = 'white';\n ctx.font = '11px Arial';\n ctx.textAlign = 'left';\n\n let currentTimestamp = this.time.start.clone();\n for (let i = 0; i <= tickCount; ++i) {\n currentTimestamp.add(ms, 'ms');\n const percentX = this.getPercentageFromTime(currentTimestamp);\n const x = Math.floor(percentX * this.currentWidth) + 0.5;\n let y = ticskHeight / 2;\n let lineHeight = ticskHeight / 2;\n\n // detect major ticks\n const isMajorTick = majorTicks !== 0 && i % majorTicks === 0;\n if (isMajorTick) {\n y = 0;\n lineHeight = ticskHeight;\n }\n\n ctx.moveTo(x, y);\n ctx.lineTo(x, y + lineHeight);\n ctx.stroke();\n }\n\n // draw start time\n const startTimeText = this.time.start.clone().format('ddd D');\n ctx.fillText(startTimeText, 2, 11);\n // const startTextWidth = ctx.measureText(startTimeText);\n\n // draw total time\n ctx.textAlign = 'right';\n const totalMs = this.time.end.clone().diff(this.time.start);\n const totalTimeText = '(' + this.timeService.formatDuration(totalMs) + ')';\n ctx.fillText(totalTimeText, this.currentWidth - 3, 11);\n const totalTextWidth = ctx.measureText(totalTimeText);\n const totalTextX = this.currentWidth - 3 - totalTextWidth.width;\n\n // draw timestamps\n currentTimestamp = this.time.start.clone();\n for (let i = 1; i <= tickCount - 1; ++i) {\n currentTimestamp.add(ms, 'ms');\n const percentX = this.getPercentageFromTime(currentTimestamp);\n const x = Math.floor(percentX * this.currentWidth) + 0.5;\n\n // detect major ticks\n const isMajorTick = majorTicks !== 0 && i % majorTicks === 0;\n // skip the first time because we will dispaly date\n if (isMajorTick) {\n const text = currentTimestamp.clone().format(timeFormat);\n const textWidth = ctx.measureText(text).width;\n const textX = x + 3;\n // ensure the text doesn't overlap\n if (textX + textWidth < totalTextX + 6) {\n ctx.fillText(text, textX, 11);\n }\n }\n }\n }\n\n // #endregion\n\n //#region Events\n\n public onResize(event: UIEvent): void {\n this.debouncedDraw();\n }\n\n public onMouseUp(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onPointerDown(event: PointerEvent): void {\n // note the mouse down position because we are going to determine the action to perfrom on mouse move\n this.mouseDownPosition = event.offsetX;\n\n if (this.currentBin && this.currentBin.center.toDate().getTime() !== this.selectedBin?.center?.toDate()?.getTime()) {\n const center = this.currentBin.center;\n const left = center.clone().subtract(this.currentBin.widthMs / 2, 'ms');\n const right = center.clone().add(this.currentBin.widthMs / 2, 'ms');\n this.selectedBin = this.currentBin;\n this.binSelected.emit([left, right]);\n this.draw();\n } else {\n this.binSelected.emit(null);\n this.selectedBin = null;\n this.draw();\n }\n }\n\n public onPointerUp(event: PointerEvent): void {\n let handled = false;\n\n if (this.isPanning) {\n // if we were pannig, cancel it\n this.isPanning = false;\n this.initialMovingTime = undefined;\n handled = true;\n }\n\n // if the click was handled, force a redraw\n if (handled) {\n this.draw();\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.captureMouse = -1; // release mouse capture\n }\n\n public onPointerMove(event: PointerEvent): void {\n // adapt the x position relative to the main div\n const divRect = this.maindiv.nativeElement.getBoundingClientRect();\n const x = event.x - divRect.x;\n this.cursorX = x;\n\n const timestamp = this.getTimeFromPercentage(this.cursorX / this.currentWidth);\n\n let handled = false;\n\n // find the current bin the pointer is over\n const currentbin = this.currentBins.find((bin) => {\n const centerMs = bin.center.toDate().getTime();\n const pt = timestamp.toDate().getTime();\n const halfWidth = bin.widthMs / 2.0;\n return centerMs - halfWidth < pt && centerMs + halfWidth >= pt;\n });\n if (currentbin) {\n this.currentBin = currentbin;\n } else {\n this.currentBin = null;\n }\n\n if (this.mouseDownPosition) {\n // detect mouse move threshold\n if (Math.abs(this.mouseDownPosition - event.offsetX) > 2) {\n // if left button down\n if (event.buttons === 1) {\n // if the user is not dragging, perform a seek\n if (!this.isPanning) {\n this.initialMovingTime = timestamp.clone();\n this.isPanning = true;\n this.captureMouse = event.pointerId;\n this.currentBin = null;\n handled = true;\n }\n }\n\n // clear the mouse down\n this.mouseDownPosition = undefined;\n }\n }\n\n // are we panning the timeline?\n if (this.isPanning) {\n const diff = moment(timestamp).diff(this.initialMovingTime);\n this.time = {\n start: this.time.start.clone().subtract(diff, 'ms'),\n end: this.time.end.clone().subtract(diff, 'ms'),\n };\n this.selectedBin = null;\n handled = true;\n }\n\n if (handled) {\n this.draw();\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n public onMouseWheel(event: Event): void {\n if (event instanceof WheelEvent) {\n const percentX = event.offsetX / this.currentWidth;\n\n if (event.deltaY > 0) {\n this.expand(percentX);\n } else if (event.deltaY < 0) {\n this.compress(percentX);\n }\n }\n }\n\n public onZoomIn(): void {\n this.compress(0.5);\n }\n\n public onZoomOut(): void {\n this.expand(0.5);\n }\n\n public onRequery(): void {\n const low = this.privateTime.start.clone();\n const high = this.privateTime.end.clone();\n this.query.emit([low, high]);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private getTotalDifference(): number {\n return Math.abs(this.time.end.diff(this.time.start));\n }\n\n private getPercentageFromTime(time: moment.Moment): number {\n // 1pm -> 2pm (7600 seconds). 2pm - 1:45pm (15 minutes = 900 seconds)\n // 900/7600 ~ 12% | 100 - 12 ~ 88% | return 88%\n const totalDifference = this.getTotalDifference();\n if (totalDifference < 1) {\n // who knows what will happen if we divide by 0\n return -1;\n }\n\n const timeDifference = time.diff(this.time.start);\n return timeDifference / totalDifference;\n }\n\n private getTimeFromPercentage(percentage: number): moment.Moment {\n const totalDifference = this.getTotalDifference();\n const result = totalDifference * percentage;\n return this.time.start.clone().add(result, 'ms');\n }\n\n private updateTickSpacing() {\n const length = this.time.end.clone().diff(this.time.start);\n const tickSpacing = (10 * length) / this.currentWidth;\n\n // find the best tick interval for the current time range\n for (let i = 0; i < InvestigateResultsEventTimelineComponent.tickIntervals.length; ++i) {\n if (i < InvestigateResultsEventTimelineComponent.tickIntervals.length - 1) {\n if (tickSpacing >= InvestigateResultsEventTimelineComponent.tickIntervals[i].ms && tickSpacing < InvestigateResultsEventTimelineComponent.tickIntervals[i + 1].ms) {\n this.currentTickInterval = InvestigateResultsEventTimelineComponent.tickIntervals[i + 1];\n break;\n }\n } else {\n this.currentTickInterval = InvestigateResultsEventTimelineComponent.tickIntervals[i];\n break;\n }\n }\n }\n\n private moveTo(start: Date, end: Date) {\n this.time = {\n start: moment(start),\n end: moment(end),\n };\n\n this.draw();\n }\n\n private compress(origin: number) {\n const length = this.time.end.clone().diff(this.time.start);\n let newLength = length / this.zoomFactor;\n\n // we cannot go under 30 seconds range\n if (newLength < InvestigateResultsEventTimelineComponent.minLength) {\n newLength = InvestigateResultsEventTimelineComponent.minLength;\n }\n\n const offset = newLength * origin;\n const centerTime = this.time.start.clone().add(length * origin, 'ms');\n const start = centerTime.clone().subtract(offset, 'ms').toDate();\n const end = centerTime\n .clone()\n .add(newLength - offset, 'ms')\n .toDate();\n\n if (start && end) {\n this.moveTo(start, end);\n this.draw();\n }\n }\n\n private expand(origin: number) {\n const length = this.time.end.clone().diff(this.time.start);\n let newLength = length * this.zoomFactor;\n\n // we cannot go over 24 hours\n if (newLength > InvestigateResultsEventTimelineComponent.maxLength) {\n newLength = InvestigateResultsEventTimelineComponent.maxLength;\n }\n\n const offset = newLength * origin;\n const centerTime = this.time.start.clone().add(length * origin, 'ms');\n const start = centerTime.clone().subtract(offset, 'ms').toDate();\n const end = centerTime\n .clone()\n .add(newLength - offset, 'ms')\n .toDate();\n this.moveTo(start, end);\n this.draw();\n }\n\n //#endregion\n}\n","
    \n
    \n \n
    \n
    \n {{ currentBinCount }}\n
    \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n","\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { isNullOrUndefined } from '@genetec/web-maps';\nimport { Gelato, MeltedIcon } from '@genetec/gelato-angular';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface Breadcrumb {\n text: string;\n icon?: MeltedIcon;\n crumb: TCrumb;\n click?: (context: Breadcrumb) => void;\n selected: boolean;\n}\n\n@Component({\n selector: 'app-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n})\nexport class BreadcrumbsComponent extends Gelato {\n //#region Properties\n\n @Input()\n public get breadcrumbs(): Breadcrumb[] {\n return this.crumbs;\n }\n public set breadcrumbs(crumbs: Breadcrumb[]) {\n this.crumbs = crumbs;\n const visible = this.getVisibleBreadcrumbs();\n this.theCache = visible;\n }\n\n @Input()\n public home!: Breadcrumb;\n\n @Input()\n public moreDataIcon: MeltedIcon = MeltedIcon.EllipsisHorizontal;\n\n @Input()\n public truncation?: number;\n\n @Input()\n public levelLimit?: number;\n\n @Output()\n public crumbSelected = new EventEmitter>();\n\n public get leftCrumbs(): Breadcrumb[] {\n return this.theCache.left;\n }\n\n public get rightCrumbs(): Breadcrumb[] {\n return this.theCache.right;\n }\n\n /**\n * Determines if the '...' item should be shown on the left of the breadcrumbs.\n */\n public get hasBreadcrumbOverflowLeft(): boolean {\n return this.theCache.overflowLeft;\n }\n\n /**\n * Determines if the '...' item should be shown on the right of the breadcrumbs.\n */\n public get hasBreadcrumbOverflowRight(): boolean {\n return this.theCache.overflowRight;\n }\n\n private theCache: { left: Breadcrumb[]; right: Breadcrumb[]; overflowLeft: boolean; overflowRight: boolean } = {\n left: [],\n right: [],\n overflowLeft: false,\n overflowRight: false,\n };\n private crumbs: Breadcrumb[] = [];\n\n //#endregion\n\n //#region Constructor\n\n constructor() {\n super();\n }\n\n //#endregion\n\n //#region Public Methods\n\n public refreshView(): void {\n this.theCache = this.getVisibleBreadcrumbs();\n }\n\n /**\n * Indicates if the given breadcrumb item shoudl have a tooltip\n */\n public hasTooltip(item: Breadcrumb): boolean {\n return this.truncation !== undefined && !isNullOrUndefined(item?.text) && item.text.length > this.truncation;\n }\n\n public getVisibleBreadcrumbs(): { left: Breadcrumb[]; right: Breadcrumb[]; overflowLeft: boolean; overflowRight: boolean } {\n // else a crumb is selected, compute the L/R amounts to show\n if (isNullOrUndefined(this.levelLimit) || this.levelLimit <= 0 || isNullOrUndefined(this.breadcrumbs) || this.breadcrumbs.length === 0) {\n return {\n left: this.breadcrumbs,\n right: [],\n overflowLeft: false,\n overflowRight: false,\n };\n }\n\n const idx = this.getSelectedIndex();\n if (idx < 0) {\n // home is selected, show leveLimit to the right\n return {\n left: this.breadcrumbs.slice(0, this.levelLimit),\n right: [],\n overflowLeft: false,\n overflowRight: this.breadcrumbs.length > this.levelLimit,\n };\n }\n\n let lOrR = true;\n let depth = 1;\n let nbLeft = 0;\n let nbRight = 0;\n while (nbLeft + nbRight < this.levelLimit - 1) {\n // the \"selected\" item is already in view & counts so we need ll-1 on the left AND right\n if (lOrR) {\n // try and add to the left\n if (idx - depth >= 0) {\n nbLeft += 1;\n }\n } else {\n // try and add to the right\n if (idx + depth < this.breadcrumbs.length) {\n nbRight += 1;\n }\n }\n\n lOrR = !lOrR;\n if (lOrR) {\n depth += 1;\n }\n\n nbLeft = Math.min(nbLeft, idx);\n nbRight = Math.min(nbRight, this.breadcrumbs.length - idx - 1);\n\n if (idx - depth < 0 && idx + depth >= this.breadcrumbs.length) {\n break;\n }\n }\n\n // get the number of left & right elements to show\n const nleft = nbLeft;\n const nright = nbRight;\n\n // push the selected item to the LEFT side of the RIGHT array\n const left = this.breadcrumbs.sub(Math.max(idx - nleft - 1, 0), nleft);\n const right = this.breadcrumbs.sub(idx, nright + 1); // the + 1 is to include the \"selected\" node in the \"right\"\n\n return {\n left,\n right,\n overflowLeft: nleft > 0 && idx - nleft > 0,\n overflowRight: nright > 0 && this.breadcrumbs.length - idx - nright - 1 > 0,\n };\n }\n\n public nbOfBreadcrumbsExceptRootToShow(): number {\n let nb = 0;\n if (isNullOrUndefined(this.levelLimit) || (!isNullOrUndefined(this.breadcrumbs) && this.levelLimit > this.breadcrumbs?.length)) {\n nb = this.breadcrumbs?.length;\n } else if (this.levelLimit > 0) {\n nb = this.levelLimit;\n }\n return nb;\n }\n\n /**\n * Returns true if the root should be shown\n */\n public showRoot(): boolean {\n return this.breadcrumbs?.length === 0 || isNullOrUndefined(this.levelLimit) || this.levelLimit > 0;\n }\n\n public getIcon(item: Breadcrumb): MeltedIcon {\n return item?.icon ?? MeltedIcon.None;\n }\n\n public hasIcon(item: Breadcrumb): boolean {\n return !isNullOrUndefined(item?.icon);\n }\n\n public truncate(itemName: string): string {\n return (!isNullOrUndefined(this.truncation) && this.truncation >= 0 && itemName.length > this.truncation && `${itemName.slice(0, this.truncation)}...`) || itemName;\n }\n\n //#endregion\n\n //#region Events\n\n public clickItem(item?: Breadcrumb | undefined): void {\n if (item && !item.selected) {\n this.crumbSelected.emit(item);\n }\n }\n\n //#endregion\n\n //#region Private Methods\n\n private getSelectedIndex() {\n if (this.home?.selected) {\n return -1;\n }\n\n return this.breadcrumbs.findIndex((item) => item?.selected);\n }\n\n //#endregion\n}\n","\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {{ 'STE_LABEL_NOUN_RECORDTYPES' | translate }}\n \n \n \n 15\"\n [genDelay]=\"100\"\n placeholder=\"{{ 'STE_ACTION_SEARCH' | translate }}\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onSearchChange($event)\"\n >\n \n \n \n \n \n \n \n \n
    \n
    \n\n \n \n \n \n \n \n \n \n {{ 'STE_LABEL_CUSTOM_AGGREGATION_FIELD' | translate }}\n \n \n \n \n \n \n \n \n \n \n {{ 'STE_LABEL_CUSTOM_AGGREGATION_GROUPING' | translate }}\n \n \n \n \n {{ 'STE_LABEL_WHEN' | translate }} \n \n \n \n {{ 'STE_LABEL_WHERE' | translate }} \n \n\n \n \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { GenAction, GenMeltedItem, GenListActions, GenMeltedListItem, GenMeltedModalComponent, GenModalService, MeltedIcon, MeltedModalAction } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport moment from 'moment';\nimport { SafeGuid } from 'safeguid';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AggregationFieldType, AggregationGrouping, AggregationQueryFilter, AggregationType, GeoCoordinate, LightCorrelationSearchParameter } from '../../../api/api';\nimport { CorrelationService } from '../../../services/correlation.service';\nimport { CorrelationParametersModalComponent } from '../../parameters-modal/correlation-parameters-modal.component';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-aggregation-widget-settings-modal',\n templateUrl: './aggregation-widget-settings-modal.component.html',\n styleUrls: ['./aggregation-widget-settings-modal.component.scss'],\n})\nexport class AggregationWidgetSettingsModalComponent extends ConnectionAwareModalComponent implements OnInit {\n //#region Constants\n\n public static readonly addParameterAction = '3acc3f1b-2978-4eec-a238-31cdff1422bd';\n public static readonly editParameterAction = '18fc447c-eed0-4e40-9d9f-53b6d603021f';\n public static readonly removeParameterAction = 'b6b5e08e-11fc-42ae-b194-9ccfb9f5694f';\n\n //#endregion\n\n //#region Properties\n @Input()\n public returnResult!: (parameter?: AggregationQueryFilter) => void;\n\n @ViewChild(GenMeltedModalComponent)\n public genModalComponent!: GenMeltedModalComponent;\n\n @Input()\n public parameter!: AggregationQueryFilter;\n\n public readonly TextFlavor = TextFlavor;\n\n public dirty = false;\n public isValid = this.parameter?.dataTypes?.length > 0;\n public aggregationType: GenMeltedItem | undefined = undefined;\n public aggregationTypes: GenMeltedItem[] = [];\n public aggregationGroup: GenMeltedItem | undefined = undefined;\n public aggregationGroups: GenMeltedItem[] = [];\n public aggregationField: GenMeltedItem | undefined = undefined;\n public aggregationFields: GenMeltedItem[] = [];\n public visibleDataTypes: GenMeltedListItem[] = [];\n public dataTypes: GenMeltedListItem[] = [];\n public additionalParameters: Array = [];\n public conditionActions!: GenListActions;\n public searchText = '';\n\n private addParameterAction: GenAction = {\n execute: (items) => this.addParameterActionExecute(items),\n canExecute: () => true,\n id: AggregationWidgetSettingsModalComponent.addParameterAction,\n };\n private editParameterAction: GenAction = {\n execute: (items) => this.editParameterActionExecute(items),\n canExecute: (items) => this.editParameterActionCanExecute(items),\n id: AggregationWidgetSettingsModalComponent.editParameterAction,\n };\n private removeParameterAction: GenAction = {\n execute: (items) => this.removeParameterActionExecute(items),\n canExecute: (items) => this.removeParameterActionCanExecute(items),\n id: AggregationWidgetSettingsModalComponent.removeParameterAction,\n };\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n authService: AuthService,\n private translateService: TranslateService,\n private correlationService: CorrelationService,\n private modalService: GenModalService\n ) {\n super(authService, injector, trackingService);\n\n // hook up to the modal send action\n this.genModalAction.pipe(untilDestroyed(this)).subscribe((modalAction: MeltedModalAction) => this.onSubmit(modalAction));\n\n this.conditionActions = {\n add: this.addParameterAction,\n edit: this.editParameterAction,\n delete: this.removeParameterAction,\n };\n }\n\n //#endregion\n\n //#region Public Methods\n\n ngOnInit() {\n super.ngOnInit();\n this.setupLocalizations();\n }\n\n public async refresh(parameter?: AggregationQueryFilter | null | undefined): Promise {\n if (parameter) {\n this.parameter = parameter;\n if (!this.parameter.dataTypes) {\n this.parameter.dataTypes = [];\n }\n if (!this.parameter.additionalParameters) {\n this.parameter.additionalParameters = [];\n }\n }\n\n if (!this.parameter) {\n this.parameter = new AggregationQueryFilter();\n this.parameter.centerPoint = new GeoCoordinate({ latitude: 0, longitude: 0 });\n this.parameter.radius = null;\n\n // configurable properties\n this.parameter.referenceTimeUtc = moment().utc().toISOString();\n this.parameter.timeWindow = null;\n this.parameter.aggregationType = AggregationType.Count;\n this.parameter.aggregationGroup = AggregationGrouping.None;\n this.parameter.aggregationFieldType = AggregationFieldType.Id;\n this.parameter.additionalParameters = [];\n this.parameter.customAggregationField = null;\n this.parameter.customAggregationGroup = null;\n this.parameter.dataTypes = [];\n this.isValid = false;\n }\n // reload the existing parameter\n\n // if the types are not loaded, load them since the translation service is now available\n if (this.aggregationTypes.length === 0) {\n this.setupLocalizations();\n }\n\n this.aggregationType = this.aggregationTypes.find((agg) => agg.id === this.parameter.aggregationType);\n this.aggregationGroup = this.aggregationGroups.find((agg) => agg.id === this.parameter.aggregationGroup);\n this.aggregationField = this.aggregationFields.find((agg) => agg.id === this.parameter.aggregationFieldType);\n await this.loadDataTypes();\n this.dirty = false;\n this.isValid = this.parameter.dataTypes?.length > 0;\n }\n\n //#endregion\n\n //#region Events\n\n public onSubmit(modalAction: MeltedModalAction): void {\n if (modalAction === MeltedModalAction.Default && this.parameter && this.parameter !== null) {\n this.returnResult(this.parameter);\n } else {\n this.returnResult(undefined);\n }\n }\n\n public onAggregationTypeChanged(item: GenMeltedItem): void {\n this.aggregationType = item;\n const ty = item.id as AggregationType;\n if (ty) {\n if (ty !== this.parameter.aggregationType) {\n this.dirty = true;\n this.parameter.aggregationType = ty;\n }\n }\n }\n\n public onAggregationGroupChanged(item: GenMeltedItem): void {\n this.aggregationGroup = item;\n const ty = item.id as AggregationGrouping;\n if (ty) {\n if (ty !== this.parameter.aggregationGroup) {\n this.dirty = true;\n this.parameter.aggregationGroup = ty;\n }\n }\n }\n\n public onAggregationCustomGroupChanged(text: string): void {\n if (text) {\n this.parameter.customAggregationGroup = text;\n this.dirty = true;\n }\n }\n\n public onAggregationFieldChanged(item: GenMeltedItem): void {\n this.aggregationField = item;\n const ty = item.id as AggregationFieldType;\n if (ty) {\n if (ty !== this.parameter.aggregationFieldType) {\n this.dirty = true;\n this.parameter.aggregationFieldType = ty;\n }\n }\n }\n\n public onAggregationCustomFieldChanged(text: string): void {\n if (text) {\n this.parameter.customAggregationField = text;\n this.dirty = true;\n }\n }\n\n public onDataTypeChanged(item?: GenMeltedListItem): void {\n if (item) {\n if (item.isChecked) {\n this.parameter.dataTypes.push(SafeGuid.parse(item.id));\n } else {\n this.parameter.dataTypes = this.parameter.dataTypes.filter((a) => !a.equals(item.id));\n }\n this.dirty = true;\n this.isValid = this.parameter.dataTypes?.length > 0;\n }\n }\n\n public onSearchChange(newSearchText: string): void {\n this.searchText = newSearchText;\n if (this.searchText) {\n this.visibleDataTypes = this.dataTypes.filter((item) => item.text.toLowerCase().includes(this.searchText.toLowerCase()));\n } else {\n this.visibleDataTypes = this.dataTypes;\n }\n }\n\n //#endregion\n\n //#region Private Methods\n\n private setupLocalizations() {\n if (this.aggregationTypes.length === 0) {\n // apply the necessary string translations\n this.aggregationTypes = Object.values(AggregationType).map((s) => {\n return {\n id: s.toString(),\n text: this.translateService.instant('STE_LABEL_AGGREGATIONTYPE_' + s.toUpperCase()) as string,\n };\n });\n this.aggregationGroups = Object.values(AggregationGrouping).map((s) => {\n return {\n id: s.toString(),\n text: this.translateService.instant('STE_LABEL_AGGREGATIONGROUPING_' + s.toUpperCase()) as string,\n };\n });\n this.aggregationFields = Object.values(AggregationFieldType).map((s) => {\n return {\n id: s.toString(),\n text: this.translateService.instant('STE_LABEL_AGGREGATIONFIELDTYPE_' + s.toUpperCase()) as string,\n };\n });\n }\n }\n\n private async loadDataTypes() {\n const dataTypeResults: GenMeltedListItem[] = [];\n if (this.correlationService) {\n const dataTypes = await this.correlationService.getDataTypes();\n if (dataTypes) {\n for (const dt of dataTypes) {\n const item: GenMeltedListItem = { text: dt.name, id: dt.dataType.toString() };\n if (dt.customIcon) {\n // TODO: santization is needed?\n item.image = dt.customIcon;\n } else {\n item.icon = (dt.icon as MeltedIcon) ?? MeltedIcon.CorrelationService;\n }\n dataTypeResults.push(item);\n }\n }\n }\n this.dataTypes = dataTypeResults.sort((a, b) => (a.text > b.text ? 1 : -1));\n this.visibleDataTypes = this.dataTypes;\n // if there is no value set already, initialize the value, otherwise set the checked items\n if (this.parameter?.dataTypes?.length > 0) {\n this.setSelectedDataTypes();\n } else if (this.parameter) {\n this.parameter.dataTypes = [];\n }\n\n if (this.parameter?.additionalParameters) {\n for (const parameter of this.parameter.additionalParameters) {\n const csp = CorrelationSearchParameter.ofLightParameter(parameter);\n if (csp) {\n void csp.setDisplayTextAuto(this.injector, undefined);\n this.pushParameter(csp);\n }\n }\n } else {\n this.additionalParameters = [];\n }\n }\n\n private setSelectedDataTypes() {\n if (this.dataTypes) {\n // wipe all the check's\n this.dataTypes.forEach((dt) => (dt.isChecked = false));\n // reset the checks\n if (this.parameter?.dataTypes) {\n this.parameter.dataTypes.forEach((item) => {\n const dataTypeItem = this.dataTypes.find((item2) => item.equals(item2.id));\n if (dataTypeItem) {\n dataTypeItem.isChecked = true;\n }\n });\n }\n }\n }\n\n private pushParameter(result: CorrelationSearchParameter | undefined, previous?: string | undefined) {\n if (result) {\n const theItem = {\n id: result.id,\n text: result.DisplayText,\n };\n // if there's a previous value, wipe it before setting the new parameter\n if (previous) {\n this.additionalParameters = this.additionalParameters.filter((item) => item.id !== previous);\n this.parameter.additionalParameters = this.parameter.additionalParameters?.filter((item) => this.getId(item) !== previous);\n }\n\n if (!this.additionalParameters.find((item) => item.id === theItem.id)) {\n this.additionalParameters.push(theItem);\n }\n }\n }\n\n private async addParameterActionExecute(items?: any[] | undefined): Promise {\n if (this.modalService) {\n const modal = this.modalService.open(CorrelationParametersModalComponent, undefined);\n if (modal) {\n // set the modal data & refresh the view\n await modal.refresh(this.parameter.dataTypes, undefined);\n\n const promise = new Promise((resolve) => {\n modal.returnResult = resolve;\n });\n const result = await promise;\n if (result) {\n this.pushParameter(result);\n // set the value\n this.parameter.additionalParameters?.push(result.toLightParameter());\n this.dirty = true;\n }\n }\n }\n }\n\n private async editParameterActionExecute(items?: any[] | undefined) {\n let parameter: CorrelationSearchParameter | undefined;\n if (items && items.length > 0) {\n if (this.parameter?.additionalParameters) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const found = this.parameter.additionalParameters.find((item) => this.getId(item) === items[0].id);\n if (found) {\n parameter = CorrelationSearchParameter.ofLightParameter(found);\n }\n }\n }\n\n if (parameter) {\n if (this.modalService) {\n const modal = this.modalService.open(CorrelationParametersModalComponent, undefined);\n if (modal) {\n // set the modal data & refresh the view\n await modal.refresh(this.parameter.dataTypes, parameter);\n\n const promise = new Promise((resolve) => {\n modal.returnResult = resolve;\n });\n const result = await promise;\n if (result) {\n this.pushParameter(result, parameter.id);\n // set the value\n this.parameter.additionalParameters?.push(result.toLightParameter());\n this.dirty = true;\n }\n }\n }\n }\n }\n\n private editParameterActionCanExecute(items?: any[] | undefined): boolean {\n if (items) {\n if (items.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n private removeParameterActionExecute(items?: any[] | undefined) {\n if (items) {\n if (items.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.additionalParameters = this.additionalParameters.filter((item) => item.id !== items[0].id);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.parameter.additionalParameters = this.parameter.additionalParameters?.filter((item) => this.getId(item) !== items[0].id);\n this.dirty = true;\n }\n }\n }\n\n private removeParameterActionCanExecute(items?: any[] | undefined): boolean {\n if (items) {\n if (items.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n private getId(parameter: LightCorrelationSearchParameter) {\n return `${parameter.fieldName}||${parameter.valueType}||${parameter.value ?? ''}`;\n }\n\n //#endregion\n}\n","import { Component, Injector, OnInit, ViewChild } from '@angular/core';\nimport { ButtonFlavor, Icon, ItemSlot } from '@genetec/gelato';\nimport { Color, ContextMenuPosition, ContextMenuSize, GenMeltedItem, GenMenu, GenModalService, GenToastService, MeltedIcon, ToastFlavor } from '@genetec/gelato-angular';\nimport { DateFilterMode } from '@modules/shared/components/filters/common-filters/filter-date/enums/date-filter-mode.enum';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { NavigationService } from '@modules/shared/services/navigation/navigation.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Chart, ChartDataSets, ChartOptions, ChartType } from 'chart.js';\nimport moment from 'moment';\nimport { Label, PluginServiceGlobalRegistrationAndOptions } from 'ng2-charts';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { UnifiedReportFeatureFlags } from '@modules/correlation/feature-flags';\nimport {\n AggregationChartable,\n AggregationFieldType,\n AggregationGrouping,\n AggregationQueryFilter,\n AggregationType,\n ApiException,\n CorrelationClient,\n ExtendedSearchParameterType,\n GeoCoordinate,\n GroupAggregationResult,\n LightCorrelationSearchParameter,\n LightDataSourceRegistration,\n ParameterComparison,\n WhereMode,\n} from '../../../api/api';\nimport { CorrelationFeatures } from '../../../enumerations/correlation.features';\nimport { CorrelationService } from '../../../services/correlation.service';\nimport { Breadcrumb, BreadcrumbsComponent } from '../../general/breadcrumbs/breadcrumbs.component';\nimport { WhatFilter, WhenFilter, WhereFilter } from '../../investigate/services/investigate-data.interfaces';\nimport { InvestigateDataContext } from '../../investigate/services/investigate-data.context';\nimport { InvestigateTaskComponent } from '../../investigate/task/investigate-task.component';\nimport { CorrelationSearchParameter } from '../../parameters-modal/correlation-search-parameter';\nimport { AggregationWidgetSettingsModalComponent } from '../aggregation-widget-settings-modal/aggregation-widget-settings-modal.component';\n\n// ==========================================================================\n// Copyright (C) 2021 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport interface ChartColor {\n backgroundColor?: string | string[];\n borderWidth?: number | number[];\n borderColor?: string | string[];\n borderCapStyle?: string;\n borderDash?: number[];\n borderDashOffset?: number;\n borderJoinStyle?: string;\n pointBorderColor?: string | string[];\n pointBackgroundColor?: string | string[];\n pointBorderWidth?: number | number[];\n pointRadius?: number | number[];\n pointHoverRadius?: number | number[];\n pointHitRadius?: number | number[];\n pointHoverBackgroundColor?: string | string[];\n pointHoverBorderColor?: string | string[];\n pointHoverBorderWidth?: number | number[];\n pointStyle?: string | string[];\n hoverBackgroundColor?: string | string[];\n hoverBorderColor?: string | string[];\n hoverBorderWidth?: number;\n}\n\n@Component({\n selector: 'app-aggregation-widget',\n templateUrl: './aggregation-widget.component.html',\n styleUrls: ['./aggregation-widget.component.scss'],\n providers: [InvestigateDataContext],\n})\n@InternalPluginDescriptor({\n type: AggregationDashboardWidgetComponent,\n pluginTypes: [PluginTypes.Dashboard],\n exposure: { id: AggregationDashboardWidgetComponent.pluginId, icon: MeltedIcon.BarLineChart, title: 'STE_LABEL_AGGREGATION' },\n isSupported: () => true,\n requirements: {\n licenses: [KnownLicenses.correlation],\n features: [CorrelationFeatures.aggregationWidgetFeatureId],\n enabledFeatureFlags: [UnifiedReportFeatureFlags.General],\n },\n})\nexport class AggregationDashboardWidgetComponent implements OnInit {\n //#region Constants\n\n public static pluginId = SafeGuid.parse('58e8bd9d-91bc-49fe-ae7c-a23b8283a9ab');\n // 'bubble', 'scatter' <- not supported by this widget\n public static readonly knownChartingTypes: string[] = ['line', 'bar', 'horizontalBar', 'radar', 'doughnut', 'polarArea', 'pie'];\n\n private static readonly excludedAggregationDrillDownOptions = [AggregationGrouping.None, AggregationGrouping.Custom];\n\n private static readonly drillNoFurther = [AggregationGrouping.Month, AggregationGrouping.Day, AggregationGrouping.Hour, AggregationGrouping.Minute];\n\n //#endregion\n\n //#region Properties\n\n @ViewChild(BreadcrumbsComponent)\n public breadcrumbsComponent!: BreadcrumbsComponent;\n\n @ViewChild('contextMenu') public contextMenu!: GenMenu;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly ContextMenuSize = ContextMenuSize;\n public readonly ContextMenuPosition = ContextMenuPosition;\n public readonly ItemSlot = ItemSlot;\n\n public results: AggregationChartable[] = [];\n public baseFilter: AggregationQueryFilter | null = null;\n public breadcrumbs: Breadcrumb[] = [];\n public home!: Breadcrumb;\n public get filter(): AggregationQueryFilter | null {\n if (this.currentFilterPointer !== null) {\n return this.currentFilterPointer;\n }\n return this.baseFilter;\n }\n\n public chartOptions: ChartOptions = {\n responsive: true,\n onClick: (event?: MouseEvent, activeElements?: []) => this.onElementClick(event, activeElements),\n };\n public chartLegend = false;\n public chartPlugins: PluginServiceGlobalRegistrationAndOptions[] = [];\n public chartLabels: Label[] = [];\n public chartData: ChartDataSets[] = [];\n public chartColors: ChartColor[] = [\n {\n backgroundColor: Object.values(Color)\n .filter((item) => item !== Color.Transparent)\n .shuffle(),\n },\n ];\n\n public chartTypes: GenMeltedItem[] = [];\n // default to bar chart\n public selectedChartType: GenMeltedItem | undefined = undefined;\n public get chartType(): ChartType {\n if (this.selectedChartType) {\n return this.selectedChartType.id as ChartType;\n }\n return 'bar';\n }\n\n // context menu\n public contextMenuPositionX = 0;\n public contextMenuPositionY = 0;\n public contextMenuItemsSource: ContextMenuItem[] = [];\n public contextMenuOpened = false;\n\n // private properties\n private currentFilterPointer: AggregationQueryFilter | null = null;\n private localPopupTarget: AggregationChartable | null = null;\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n private correlationClient: CorrelationClient,\n private toastService: GenToastService,\n private modalService: GenModalService,\n private translateService: TranslateService,\n private correlationService: CorrelationService,\n private securityCenterClientService: SecurityCenterClientService,\n private navigationService: NavigationService,\n private injector: Injector\n ) {}\n\n //#endregion\n\n //#region Static Methods\n\n private static getChartingIcon(chartType: string): MeltedIcon {\n switch (chartType) {\n case 'line':\n return MeltedIcon.LineChart;\n case 'bar':\n return MeltedIcon.BarChart;\n case 'horizontalBar':\n return MeltedIcon.BarChart;\n case 'radar':\n return MeltedIcon.PieChart;\n case 'doughnut':\n return MeltedIcon.PieChart;\n case 'polarArea':\n return MeltedIcon.AreaChart;\n case 'bubble':\n return MeltedIcon.AreaChart;\n case 'pie':\n return MeltedIcon.PieChart;\n case 'scatter':\n return MeltedIcon.Charts;\n }\n return MeltedIcon.None;\n }\n\n //#endregion\n\n //#region Public Methods\n\n ngOnInit() {\n // Setup a fake filter, with some data for a 4hr window\n this.baseFilter = new AggregationQueryFilter();\n\n this.baseFilter.dataTypes.push(SafeGuid.parse('8957b022-4b9b-4756-982c-4b449ceeb08d')); // arrest\n this.baseFilter.dataTypes.push(SafeGuid.parse('bee80f95-d6a1-4b12-9ef8-f9d1b21c8e7a')); // sex offenders\n this.baseFilter.dataTypes.push(SafeGuid.parse('409a3c91-7d2c-4c8b-b622-88c663f7aa74')); // gun offenders\n //this.baseFilter.dataTypes.push('4e4fb526-7dbd-42b9-bca1-f955d5aeab3f'); // alarms\n //this.baseFilter.dataTypes.push('e205ee2d-c132-43ec-b52a-10401ba294d8'); // building\n\n this.baseFilter.aggregationType = AggregationType.Average;\n this.baseFilter.aggregationGroup = AggregationGrouping.DataType;\n this.baseFilter.aggregationFieldType = AggregationFieldType.Custom;\n this.baseFilter.customAggregationField = 'Age';\n this.baseFilter.referenceTimeUtc = moment().utc().toISOString();\n //this.baseFilter.timeWindow = \"4.00:00:00\";\n this.baseFilter.timeWindow = null;\n this.baseFilter.radius = null;\n this.baseFilter.additionalParameters = null;\n this.baseFilter.centerPoint = new GeoCoordinate({ latitude: 0, longitude: 0 });\n\n this.home = {\n selected: true,\n icon: MeltedIcon.Home,\n crumb: this.baseFilter,\n text: '',\n };\n\n // Initialize strings which need to be translated\n this.chartTypes = AggregationDashboardWidgetComponent.knownChartingTypes.map((chartType) => {\n return {\n id: chartType,\n text: this.translateService.instant('STE_LABEL_CHARTTYPE_' + chartType.toUpperCase()) as string,\n icon: AggregationDashboardWidgetComponent.getChartingIcon(chartType),\n };\n });\n this.selectedChartType = this.chartTypes.find((chart) => chart.id === 'bar');\n\n // initial query\n void this.query();\n }\n\n //#endregion\n\n //#region Event Handlers\n\n public async onSettingsClick(): Promise {\n this.hideContextMenu();\n const modal = this.modalService.open(AggregationWidgetSettingsModalComponent, undefined);\n if (modal) {\n await modal.refresh(this.baseFilter);\n const promise = new Promise((resolve) => {\n modal.returnResult = resolve;\n });\n const result = await promise;\n if (result) {\n this.baseFilter = result;\n this.home = {\n selected: true,\n crumb: this.baseFilter,\n icon: MeltedIcon.Home,\n text: '',\n };\n await this.refresh();\n }\n }\n }\n\n public onOpenReport(): void {\n this.hideContextMenu();\n const currentFilter = this.filter;\n const filterDataService = this.injector.get(InvestigateDataContext);\n if (filterDataService && this.navigationService && currentFilter) {\n const parameters = currentFilter.additionalParameters?.map(CorrelationSearchParameter.ofLightParameter) ?? [];\n for (const parameter of parameters) {\n void parameter.setDisplayTextAuto(this.injector, undefined);\n }\n\n const what: WhatFilter = {\n dataTypes: currentFilter.dataTypes,\n description: '',\n parameters,\n };\n const when: WhenFilter | null = {\n description: '',\n mode: DateFilterMode.Range,\n period: null,\n timeStart: currentFilter.timeWindow === null ? null : moment.utc(currentFilter.referenceTimeUtc).subtract(currentFilter.timeWindow).toISOString(),\n timeEnd: currentFilter.timeWindow === null ? null : moment.utc(currentFilter.referenceTimeUtc).add(currentFilter.timeWindow).toISOString(),\n };\n // default \"wildcard\" where filter\n let where: WhereFilter = {\n includedAreas: null,\n excludedAreas: null,\n description: '',\n intersection: false,\n mode: WhereMode.Anywhere,\n isValid: true,\n wkt: null,\n };\n // if there is a region parameter, set the physical filter\n const regionFilter = currentFilter.additionalParameters?.find((item) => item.valueType === ExtendedSearchParameterType.Region);\n if (regionFilter) {\n where = {\n includedAreas: null,\n excludedAreas: null,\n description: '',\n intersection: regionFilter.comparison !== ParameterComparison.In ? false : true,\n mode: WhereMode.Physical,\n isValid: regionFilter.value !== null,\n wkt: regionFilter.value ?? '',\n };\n }\n\n filterDataService.setWhatFilter(what);\n filterDataService.setWhenFilter(when);\n filterDataService.setWhereFilter(where);\n // navigate to the investigate task with the auto-query flag = true\n void this.navigationService.navigate(`/task/${InvestigateTaskComponent.pluginId.toString()}?query=true`);\n }\n }\n\n public async refresh(): Promise {\n this.hideContextMenu();\n this.breadcrumbs = [];\n this.currentFilterPointer = this.baseFilter;\n await this.query();\n }\n\n public onSelectedChartTypeChanged(selection?: GenMeltedItem | undefined): void {\n this.hideContextMenu();\n if (selection && selection?.id !== this.selectedChartType?.id) {\n this.selectedChartType = selection;\n }\n }\n\n public breadcrumbClicked(crumb: Breadcrumb): void {\n this.hideContextMenu();\n if (crumb?.crumb) {\n if (crumb.crumb instanceof AggregationQueryFilter) {\n this.currentFilterPointer = crumb.crumb;\n\n this.home.selected = false;\n this.breadcrumbs.forEach((c) => (c.selected = false));\n // select THIS crumb\n crumb.selected = true;\n\n void this.query();\n }\n }\n\n this.breadcrumbsComponent?.refreshView();\n }\n\n private async onElementClick(event: MouseEvent | undefined, activeElements: any[] | undefined) {\n this.localPopupTarget = null;\n this.hideContextMenu();\n\n // find the clicked result field, we'll need it to generate the popup fields\n if (event && activeElements) {\n if (event.button === 0) {\n if (activeElements.length > 0 && activeElements[0]) {\n if ('_index' in activeElements[0]) {\n const activeElement = activeElements[0] as { _index: number };\n // eslint-disable-next-line no-underscore-dangle\n const idx = activeElement._index;\n if (idx >= 0) {\n const originalData = this.results[idx];\n if (originalData) {\n this.localPopupTarget = originalData;\n }\n }\n }\n }\n }\n }\n\n if (AggregationDashboardWidgetComponent.drillNoFurther.find((item) => item === this.filter?.aggregationGroup)) {\n // we cannot drill further on these specific types\n return;\n }\n\n if (event && this.localPopupTarget !== null) {\n const menuItems: ContextMenuItem[] = [];\n\n // Menu Header\n {\n const header = {\n id: this.translateService.instant('STE_MENU_ITEM_DRILL_DOWN_OPTIONS') as string,\n text: this.translateService.instant('STE_MENU_ITEM_DRILL_DOWN_OPTIONS') as string,\n icon: MeltedIcon.ZoomIn,\n };\n menuItems.push(header);\n }\n\n // General Drill-Down options\n {\n const category: ContextMenuItem = {\n id: this.translateService.instant('STE_TITLE_OPTIONS_GENERAL') as string,\n text: this.translateService.instant('STE_TITLE_OPTIONS_GENERAL') as string,\n children: [],\n icon: MeltedIcon.Cog,\n };\n\n for (const grouping of Object.values(AggregationGrouping).filter(\n (grp) => !AggregationDashboardWidgetComponent.excludedAggregationDrillDownOptions.some((itm) => itm === grp)\n )) {\n if (grouping === this.filter?.aggregationGroup) {\n // filter out this grouping since it's what's currently applied\n continue;\n }\n\n if (grouping === AggregationGrouping.SourceRole && this.filter?.additionalParameters?.some((param) => param.fieldName === '_sourcerole_')) {\n // source role is already in the filter, cannot drill down by this factor\n continue;\n }\n\n if (this.filter?.dataTypes && this.filter?.dataTypes.length === 1) {\n // we're filtered to a single data-type, we cannot group further by record type\n if (grouping === AggregationGrouping.DataType) {\n continue;\n }\n }\n\n const item = {\n id: this.translateService.instant('STE_LABEL_AGGREGATIONGROUPING_' + grouping.toUpperCase()) as string,\n text: this.translateService.instant('STE_LABEL_AGGREGATIONGROUPING_' + grouping.toUpperCase()) as string,\n actionItem: {\n execute: () => this.drillDownClicked(grouping),\n },\n };\n category.children?.push(item);\n }\n\n menuItems.push(category);\n }\n\n // Specific drill-down options\n {\n const currentGrouping = this.filter?.aggregationGroup ?? AggregationGrouping.None;\n const groupingValue = currentGrouping === AggregationGrouping.DataType ? this.localPopupTarget.group?.group : '';\n const registrations = await this.getValidRegistrations(groupingValue);\n if (registrations !== null) {\n for (const registration of registrations) {\n let fields: { value: string; name: string }[] = [];\n if (registration.supportedSearchParameters && registration.supportedSearchParameters?.length > 0) {\n fields = registration.supportedSearchParameters\n .filter((item) => item.valueType !== ExtendedSearchParameterType.Region)\n .map((item) => {\n return {\n value: item.fieldName,\n name: item.displayName,\n };\n })\n .sort((a, b) => {\n if (a.name > b.name) {\n return 1;\n } else {\n return -1;\n }\n })\n .distinctBy((item) => item.value);\n }\n\n if (fields.length > 0) {\n const category: ContextMenuItem = {\n children: [],\n id: registration.name,\n text: registration.name,\n icon: MeltedIcon.CorrelationService,\n };\n\n for (const field of fields) {\n if (currentGrouping === AggregationGrouping.Custom && field.value === this.filter?.customAggregationGroup) {\n continue;\n }\n\n // check the additional parameters to see if they are already being filtered and don't add\n // them to the context menu since splitting from an existing filter makes no sense\n if (this.filter?.additionalParameters && this.filter?.additionalParameters?.length > 0) {\n if (\n this.filter.additionalParameters.find((param) => {\n return param.fieldName === field.value;\n })\n ) {\n continue;\n }\n }\n\n const item = {\n text: field.name,\n id: field.value,\n actionItem: {\n execute: () => this.drillDownClicked(AggregationGrouping.Custom, field.value),\n },\n };\n category.children?.push(item);\n }\n\n menuItems.push(category);\n }\n }\n }\n }\n\n this.showContextMenu(event, menuItems);\n }\n }\n\n private async drillDownClicked(grp: AggregationGrouping, customGrouping?: string | undefined) {\n this.hideContextMenu();\n // trim off the breadcrumbs, as a \"branch\" is being created\n if (this.filter === this.baseFilter) {\n // the pointer is at the \"home\" position, wipe the breadcrumbs\n this.breadcrumbs = [];\n } else {\n this.breadcrumbs = this.breadcrumbs.removeAfter((item) => item.crumb === this.filter);\n }\n\n const registrations = await this.getValidRegistrations(undefined);\n\n if (this.filter && this.filter !== null && this.localPopupTarget?.group) {\n const breadcrumb = await this.computeNewOptions(this.filter, this.localPopupTarget.group, registrations);\n // if (breadcrumb?.text)\n breadcrumb.crumb.aggregationGroup = grp;\n breadcrumb.crumb.customAggregationGroup = customGrouping;\n\n // clear any old selections\n this.home.selected = false;\n\n this.breadcrumbs.forEach((crumb) => (crumb.selected = false));\n this.breadcrumbs.push(breadcrumb);\n\n // increment the pointer\n this.currentFilterPointer = breadcrumb.crumb;\n void this.query();\n }\n\n this.breadcrumbsComponent?.refreshView();\n }\n\n //#endregion\n\n //#region Private Methods\n\n private setData() {\n if (this.results?.length > 0) {\n this.chartLabels = this.results.map((item) => item.formattedName);\n this.chartData = [\n {\n data: this.results.map((item) => item.value),\n },\n ];\n\n // set chart bounds so there's a buffer above & below the data range\n const values = this.results.map((item) => item.value);\n const max = values.max() ?? 0;\n const min = values.min() ?? 0;\n\n let maxP20 = max + (max - min) * 0.2;\n let minM20 = min - (max - min) * 0.2;\n if (maxP20 > 2) {\n maxP20 = Math.ceil(maxP20);\n minM20 = Math.floor(minM20);\n }\n\n Chart.scaleService.updateScaleDefaults('linear', {\n ticks: {\n max: maxP20,\n min: minM20,\n },\n });\n }\n }\n\n private async query() {\n this.hideContextMenu();\n this.toastService.show({\n flavor: ToastFlavor.Information,\n text: this.translateService.instant('STE_LABEL_DATASOURCE_REFRESHING') as string,\n icon: MeltedIcon.None,\n });\n\n if (this.filter && this.filter !== null) {\n try {\n const results = await this.correlationClient.computeAggregation(this.filter).toPromise();\n if (results) {\n this.results = results;\n\n this.setData();\n this.toastService.show({\n flavor: ToastFlavor.Success,\n text: this.translateService.instant('STE_LABEL_DATASOURCE_REFRESHED') as string,\n icon: MeltedIcon.None,\n });\n } else {\n this.toastService.show({\n flavor: ToastFlavor.Warning,\n text: this.translateService.instant('STE_LABEL_NO_DATA_AVAILABLE') as string,\n icon: MeltedIcon.Warning,\n });\n }\n } catch (err) {\n if (err instanceof ApiException) {\n const ex = err;\n this.toastService.show({\n flavor: ToastFlavor.Error,\n text: ex.message,\n icon: MeltedIcon.BarLineChart,\n secondaryText: ex?.result as string,\n });\n } else if (typeof err === 'string') {\n const msg = err;\n this.toastService.show({\n flavor: ToastFlavor.Error,\n text: msg,\n icon: MeltedIcon.BarLineChart,\n });\n }\n }\n }\n }\n\n private showContextMenu(mouseEvent: MouseEvent, menuItems?: ContextMenuItem[]): void {\n this.hideContextMenu();\n\n if (!menuItems || menuItems.length === 0) {\n return;\n }\n\n this.contextMenuPositionX = mouseEvent.x;\n this.contextMenuPositionY = mouseEvent.y;\n this.contextMenuItemsSource = menuItems;\n this.contextMenuOpened = true;\n this.contextMenu.show().fireAndForget();\n }\n\n private hideContextMenu(): void {\n this.contextMenuOpened = false;\n this.contextMenu.close().fireAndForget();\n }\n\n private async getValidRegistrations(selectedGroup?: string | undefined) {\n const registrations = await this.correlationService.getRegistrations(undefined);\n const keys: LightDataSourceRegistration[] = [];\n if (registrations) {\n if (this.filter?.dataTypes && this.filter.dataTypes.length > 0) {\n for (const reg of registrations.filter((item) => this.filter?.dataTypes.find((a) => a.equals(item.dataType)))) {\n keys.push(reg);\n }\n } else {\n for (const reg of registrations) {\n keys.push(reg);\n }\n }\n }\n\n if (selectedGroup) {\n const tryParse = SafeGuid.tryParse(selectedGroup);\n if (tryParse.success) {\n return keys.filter((key) => key.dataType.equals(tryParse.value));\n }\n }\n\n return keys;\n }\n\n private getFirstValueTypeForFieldName(registrations: LightDataSourceRegistration[], customGroup: string) {\n let regs = registrations;\n if (this.filter?.dataTypes && this.filter.dataTypes?.length > 0) {\n regs = registrations.filter((reg) => this.filter?.dataTypes.some((item) => item.equals(reg.dataType)));\n }\n for (const reg of regs) {\n if (reg.supportedSearchParameters) {\n for (const param of reg.supportedSearchParameters) {\n if (param.fieldName === customGroup) {\n return {\n name: param.displayName,\n type: param.valueType,\n };\n }\n }\n }\n }\n return {\n name: customGroup,\n type: ExtendedSearchParameterType.String,\n };\n }\n\n private async formatValueFromGroupingType(value: string, registrations: LightDataSourceRegistration[], group?: AggregationGrouping | undefined) {\n if (group) {\n switch (group) {\n case AggregationGrouping.Month:\n {\n const month = parseInt(value);\n switch (month) {\n case 1:\n return this.translateService.instant('STE_LABEL_MONTH_JANUARY') as string;\n case 2:\n return this.translateService.instant('STE_LABEL_MONTH_FEBRUARY') as string;\n case 3:\n return this.translateService.instant('STE_LABEL_MONTH_MARCH') as string;\n case 4:\n return this.translateService.instant('STE_LABEL_MONTH_APRIL') as string;\n case 5:\n return this.translateService.instant('STE_LABEL_MONTH_MAY') as string;\n case 6:\n return this.translateService.instant('STE_LABEL_MONTH_JUNE') as string;\n case 7:\n return this.translateService.instant('STE_LABEL_MONTH_JULY') as string;\n case 8:\n return this.translateService.instant('STE_LABEL_MONTH_AUGUST') as string;\n case 9:\n return this.translateService.instant('STE_LABEL_MONTH_SEPTEMBER') as string;\n case 10:\n return this.translateService.instant('STE_LABEL_MONTH_OCTOBER') as string;\n case 11:\n return this.translateService.instant('STE_LABEL_MONTH_NOVEMBER') as string;\n case 12:\n return this.translateService.instant('STE_LABEL_MONTH_DECEMBER') as string;\n default:\n break;\n }\n }\n break;\n case AggregationGrouping.Day:\n {\n const day = parseInt(value);\n switch (day) {\n case 0:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_SUNDAY') as string;\n case 1:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_MONDAY') as string;\n case 2:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_TUESDAY') as string;\n case 3:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_WEDNESDAY') as string;\n case 4:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_THURSDAY') as string;\n case 5:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_FRIDAY') as string;\n case 6:\n return this.translateService.instant('STE_LABEL_DAYOFWEEK_SATURDAY') as string;\n default:\n break;\n }\n }\n break;\n case AggregationGrouping.DataType:\n {\n const tryParse = SafeGuid.tryParse(value);\n if (tryParse.success) {\n const reg = registrations.find((item) => item.dataType.equals(tryParse.value));\n if (reg) {\n return reg.name;\n }\n }\n }\n break;\n case AggregationGrouping.SourceRole:\n case AggregationGrouping.Custom:\n {\n const tryParse = SafeGuid.tryParse(value);\n const client = this.securityCenterClientService?.scClient;\n if (client && tryParse.success) {\n const entity = await client.getEntityAsync(Entity, tryParse.value, undefined, undefined, EntityFields.name);\n if (entity) {\n return entity.name;\n }\n }\n }\n // TODO: else run the base localizer on the value, server-side :(\n break;\n default:\n break;\n }\n }\n return value;\n }\n\n private async computeNewOptions(oldOptions: AggregationQueryFilter, aggregationResult: GroupAggregationResult, registrations: LightDataSourceRegistration[]) {\n const result: Breadcrumb = {\n text: '',\n crumb: oldOptions.clone(),\n selected: true,\n };\n\n const scClient = this.securityCenterClientService?.scClient;\n const grouping = result.crumb.aggregationGroup;\n const customGroup = result.crumb.customAggregationGroup ?? '';\n\n result.text = `[${this.translateService.instant(`STE_LABEL_AGGREGATIONGROUPING_${grouping.toUpperCase()}`) as string}]=\"${aggregationResult.group}\"`;\n\n switch (grouping) {\n case AggregationGrouping.None:\n result.text = this.translateService.instant('STE_LABEL_RESULT_NONE') as string;\n break;\n case AggregationGrouping.Custom:\n {\n const displayAndValue = this.getFirstValueTypeForFieldName(registrations, customGroup);\n const parameter = new LightCorrelationSearchParameter();\n parameter.valueType = displayAndValue.type;\n parameter.comparison = ParameterComparison.Equal;\n parameter.fieldName = customGroup;\n parameter.value = aggregationResult.group;\n if (!result.crumb.additionalParameters) {\n result.crumb.additionalParameters = [];\n }\n result.crumb.additionalParameters.push(parameter);\n\n const breadcrumbDisplay = await this.formatValueFromGroupingType(parameter.value, registrations, this.filter?.aggregationGroup);\n result.text = '[' + parameter.fieldName + ']=\"' + breadcrumbDisplay + '\"';\n }\n break;\n case AggregationGrouping.DataType:\n {\n const tryParse = SafeGuid.tryParse(aggregationResult.group);\n if (tryParse.success && !tryParse.value.isEmpty()) {\n result.crumb.dataTypes = [tryParse.value];\n const regName = registrations.find((item) => item.dataType.equals(tryParse.value))?.name ?? aggregationResult.group;\n result.text = `[${this.translateService.instant('STE_LABEL_AGGREGATIONGROUPING_DATATYPE') as string}]=\"${regName}\"`;\n }\n }\n break;\n case AggregationGrouping.SourceRole:\n {\n const tryParse = SafeGuid.tryParse(aggregationResult.group);\n if (tryParse.success && !tryParse.value.isEmpty()) {\n const parameter = new LightCorrelationSearchParameter();\n parameter.valueType = ExtendedSearchParameterType.Entity;\n parameter.comparison = ParameterComparison.Equal;\n parameter.fieldName = '_sourcerole_';\n parameter.value = tryParse.value.toString();\n if (!result.crumb.additionalParameters) {\n result.crumb.additionalParameters = [];\n }\n result.crumb.additionalParameters.push(parameter);\n\n let entityName = '';\n if (scClient) {\n const entity = await scClient.getEntityAsync(Entity, tryParse.value, undefined, undefined, EntityFields.name);\n entityName = entity?.name ?? aggregationResult.group;\n }\n result.text = `[${this.translateService.instant('STE_LABEL_AGGREGATIONGROUPING_SOURCEROLE') as string}]=\"${entityName}\"`;\n }\n }\n break;\n case AggregationGrouping.Year:\n {\n const value = parseInt(aggregationResult.group);\n if (value > 0) {\n result.crumb.referenceTimeUtc = moment.utc([value, 1, 1]).add(0.5, 'years').toISOString();\n result.crumb.timeWindow = '182.12:00:00'; // 1/2 a year\n }\n }\n break;\n case AggregationGrouping.Month:\n {\n let year = moment.utc().year();\n const value = parseInt(aggregationResult.group);\n if (value > 0) {\n const utcTime = moment.utc(result.crumb.referenceTimeUtc);\n if (result.crumb.referenceTimeUtc && utcTime) {\n year = utcTime.year();\n }\n result.crumb.referenceTimeUtc = moment.utc([year, value, 1]).add(0.5, 'months').toISOString();\n result.crumb.timeWindow = '15.00:00:00';\n }\n }\n break;\n case AggregationGrouping.Day:\n {\n let year = moment.utc().year();\n let month = moment.utc().month();\n const value = parseInt(aggregationResult.group);\n if (value > 0) {\n const utcTime = moment.utc(result.crumb.referenceTimeUtc);\n if (result.crumb.referenceTimeUtc && utcTime) {\n year = utcTime.year();\n month = utcTime.month();\n }\n result.crumb.referenceTimeUtc = moment.utc([year, month, value]).add(0.5, 'days').toISOString();\n result.crumb.timeWindow = '12:00:00';\n }\n }\n break;\n case AggregationGrouping.Hour:\n {\n let year = moment.utc().year();\n let month = moment.utc().month();\n let day = moment.utc().day();\n const value = parseInt(aggregationResult.group);\n if (value >= 0) {\n const utcTime = moment.utc(result.crumb.referenceTimeUtc);\n if (result.crumb.referenceTimeUtc && utcTime) {\n year = utcTime.year();\n month = utcTime.month();\n day = utcTime.day();\n }\n result.crumb.referenceTimeUtc = moment.utc([year, month, day, value, 0, 0]).add(0.5, 'hours').toISOString();\n result.crumb.timeWindow = '00:30:00';\n }\n }\n break;\n case AggregationGrouping.Minute:\n {\n let year = moment.utc().year();\n let month = moment.utc().month();\n let day = moment.utc().day();\n let hour = moment.utc().hour();\n\n const value = parseInt(aggregationResult.group);\n if (value >= 0) {\n const utcTime = moment.utc(result.crumb.referenceTimeUtc);\n if (result.crumb.referenceTimeUtc && utcTime) {\n year = utcTime.year();\n month = utcTime.month();\n day = utcTime.day();\n hour = utcTime.hour();\n }\n result.crumb.referenceTimeUtc = moment.utc([year, month, day, hour, value, 0]).add(0.5, 'minutes').toISOString();\n result.crumb.timeWindow = '00:00:30';\n }\n }\n break;\n default:\n break;\n }\n\n return result;\n }\n\n //#endregion\n}\n","
    \n \n \n \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n {{ 'STE_BUTTON_OPEN_REPORT' | translate }}\n \n \n \n \n
    \n
    \n
    \n
    \n
    \n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport class CorrelationFilterTypes {\n public static readonly DataTypes: IGuid = SafeGuid.parse('49a91c6f-6d4d-499b-b066-2c9b18b03645');\n public static readonly Location: IGuid = SafeGuid.parse('8dc80495-248e-4c59-aade-7b93d85fe282');\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TrackingService } from 'src/app/modules/shared/services/tracking.service';\nimport { InternalPluginDescriptor } from 'src/app/modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from 'src/app/modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { UnifiedReportFeatureFlags } from '@modules/correlation/feature-flags';\nimport { CorrelationFilterTypes } from '../../../enumerations/filter-types';\nimport { FilterPluginBaseComponent } from '../../../../general/components/filter-plugins/filter-plugin-base.component';\n\n@Component({\n template: ``,\n})\n@InternalPluginDescriptor({\n type: FilterPluginDataTypesComponent,\n pluginTypes: [PluginTypes.Filter],\n exposure: {\n id: FilterPluginDataTypesComponent.pluginId,\n subSection: CorrelationFilterTypes.DataTypes,\n },\n isSupported: () => true,\n requirements: {\n licenses: [KnownLicenses.correlation],\n globalPrivileges: [KnownPrivileges.correlationReportPrivilege],\n enabledFeatureFlags: [UnifiedReportFeatureFlags.General],\n },\n})\nexport class FilterPluginDataTypesComponent extends FilterPluginBaseComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('7c9e8e68-c555-48ff-83ec-85f421b24efd');\n\n constructor(trackingService: TrackingService) {\n super(trackingService, FilterPluginDataTypesComponent.pluginId);\n }\n}\n","import { GenAngularModule, GenModalService } from '@genetec/gelato-angular';\nimport { Router } from '@angular/router';\nimport { Inject, Injector, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxsModule } from '@ngxs/store';\nimport { GetBaseUriForCodeGen } from '@utilities/base-uri-getter';\nimport { FeatureFlagsModule } from '@modules/feature-flags/feature-flags.module';\nimport { ChartsModule } from 'ng2-charts';\nimport { CommandsService, COMMANDS_SERVICE, MODAL_SERVICE } from '../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { SharedModule } from '../shared/shared.module';\nimport { GeneralModule } from '../general/general.module';\nimport { IngestionService } from './services/ingestion.service';\nimport { IngestDataModalComponent } from './components/ingest-data-modal/data-ingestion-modal.component';\nimport { CorrelationDatumMapWidgetComponent } from './components/datum/correlation-datum-map-widget/correlation-datum-map-widget.component';\nimport { CorrelationService } from './services/correlation.service';\nimport { CorrelationDatumSidepaneWidgetComponent } from './components/datum/datum-sidepane-widget/correlation-datum-sidepane-widget.component';\nimport { FilterDataTypesComponent } from './components/filters/data-types/filter-data-types.component';\nimport { CorrelationParametersModalComponent } from './components/parameters-modal/correlation-parameters-modal.component';\nimport { IngestionCommandProvider } from './services/ingestion-command-provider';\nimport { MobileUserStateSidepaneWidgetComponent } from './components/datum/mobile-state-sidepane-widget/mobile-sidepane-state-widget.component';\nimport { MobileUserDetailsSidepaneWidgetComponent } from './components/datum/mobile-details-sidepane-widget/mobile-details-sidepane-widget.component';\nimport { InvestigateTaskComponent } from './components/investigate/task/investigate-task.component';\nimport { InvestigateWhatFilterComponent } from './components/investigate/filters/what/what-filter.component';\nimport { InvestigateSideContextDataState } from './components/investigate/services/investigate-side-context-data.state';\nimport { InvestigateSidePaneComponent } from './components/investigate/sidepane/investigate-side-pane.component';\nimport { InvestigateDataState } from './components/investigate/services/investigate-data.state';\nimport { ImageNameToggleButtonComponent } from './components/general/image-name-toggle-button/image-name-toggle-button.component';\nimport { InvestigateResultsContainerComponent } from './components/investigate/results/investigate-results-container.component';\nimport { InvestigateWhenFilterComponent } from './components/investigate/filters/when/when-filter.component';\nimport { InvestigateResultsEventTimelineComponent } from './components/investigate/timeline/event-timeline.component';\nimport { InvestigateWhereFilterComponent } from './components/investigate/filters/where/where-filter.component';\nimport { baseUrl, CorrelationClient, DataIngestionClient } from './api/api';\nimport { AggregationDashboardWidgetComponent } from './components/dashboard/aggregation-widget/aggregation-widget.component';\nimport { AggregationWidgetSettingsModalComponent } from './components/dashboard/aggregation-widget-settings-modal/aggregation-widget-settings-modal.component';\nimport { BreadcrumbsComponent } from './components/general/breadcrumbs/breadcrumbs.component';\nimport { OneOrManyComboboxComponent } from './components/general/one-or-many-combobox/one-or-many-combobox-combobox.component';\nimport { FilterPluginDataTypesComponent } from './components/filters/data-types/filter-plugin-data-types.component';\nimport { SelectInvestigateColumnsComponent } from './components/general/select-investigate-columns/select-investigate-columns.component';\nimport { InvestigateDataContext } from './components/investigate/services/investigate-data.context';\nimport { UnifiedReportFeatureFlags } from './feature-flags';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n GenAngularModule,\n GeneralModule, // we need this for app-filters in the investigate task... that's not ideal :/\n NgxsModule.forFeature([InvestigateSideContextDataState, InvestigateDataState]),\n ChartsModule,\n FeatureFlagsModule.forRoot(UnifiedReportFeatureFlags),\n ],\n declarations: [\n IngestDataModalComponent,\n CorrelationDatumMapWidgetComponent,\n CorrelationDatumSidepaneWidgetComponent,\n FilterDataTypesComponent,\n CorrelationParametersModalComponent,\n MobileUserStateSidepaneWidgetComponent,\n MobileUserDetailsSidepaneWidgetComponent,\n InvestigateTaskComponent,\n InvestigateWhatFilterComponent,\n InvestigateWhenFilterComponent,\n InvestigateWhereFilterComponent,\n InvestigateSidePaneComponent,\n ImageNameToggleButtonComponent,\n InvestigateResultsContainerComponent,\n InvestigateResultsEventTimelineComponent,\n AggregationDashboardWidgetComponent,\n AggregationWidgetSettingsModalComponent,\n BreadcrumbsComponent,\n OneOrManyComboboxComponent,\n FilterPluginDataTypesComponent,\n SelectInvestigateColumnsComponent,\n ],\n providers: [\n IngestionService,\n CorrelationService,\n IngestionCommandProvider,\n CorrelationClient,\n DataIngestionClient,\n InvestigateDataContext,\n {\n provide: baseUrl,\n deps: [],\n useFactory: GetBaseUriForCodeGen,\n },\n ],\n exports: [],\n})\nexport class CorrelationModule {\n //#region Constructors\n\n constructor(\n router: Router,\n injector: Injector,\n private ingestionService: IngestionService,\n private correlationService: CorrelationService,\n @Inject(MODAL_SERVICE) private modalService: GenModalService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n ingestionCommandProvider: IngestionCommandProvider\n ) {}\n\n //#endregion\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport const toGuid = (value: IGuid | string): IGuid => (isInstanceOfGuid(value) ? value : SafeGuid.parse(value));\n","import { IGuid } from 'safeguid';\n\nexport class IncidentLocation {\n constructor(public entityId: IGuid | null, public latitude: number | null, public longitude: number | null) {\n }\n\n public isSet = (): boolean => this.isGeoCoordinated() || this.entityId !== null;\n\n public isGeoCoordinated = (): boolean => this.latitude != null && this.longitude != null;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../../utils/guid-utils';\nimport { IncidentLocation } from '../incident-location';\nimport { sortingParameter } from '../incident-sorting';\n\nexport class Header {\n constructor(public messageid: IGuid, public correlationid: IGuid, public antecedentid: IGuid) {}\n\n public static Empty = (): Header => new Header(SafeGuid.EMPTY, SafeGuid.EMPTY, SafeGuid.EMPTY);\n}\n\nexport interface IncidentLocationLowered {\n entityid: IGuid;\n latitude: number | null;\n longitude: number | null;\n}\n\nexport abstract class IncidentEvent {\n public readonly id: IGuid;\n public readonly type: IncidentEventType;\n public readonly incidentId: IGuid;\n public readonly header: Header;\n public readonly processTimeUtc: Date;\n public readonly instigatorId: IGuid;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, header: Header) {\n this.id = SafeGuid.newGuid();\n this.type = type;\n this.incidentId = toGuid(incidentId);\n this.processTimeUtc = processTimeUtc;\n this.instigatorId = toGuid(instigatorId);\n this.header = new Header(toGuid(header.messageid), toGuid(header.correlationid), toGuid(header.antecedentid));\n }\n\n public isEventForSort(sortParameter: sortingParameter): boolean {\n const isState = sortParameter === 'state' && this.type === IncidentEventType.StateChanged;\n const isPriority = sortParameter === 'priority' && this.type === IncidentEventType.PriorityChanged;\n const isLocation = sortParameter === 'location' && (this.type === IncidentEventType.LocationChanged || this.type === IncidentEventType.LocationCleared);\n const isName = sortParameter === 'name' && this.type === IncidentEventType.IncidentTypeChanged;\n return isState || isPriority || isLocation || isName;\n }\n}\n\nexport class DescriptionChangedEvent extends IncidentEvent {\n public readonly description: string;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, description: string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.description = description;\n }\n}\n\nexport class RecipientAlteredEvent extends IncidentEvent {\n public readonly addedRecipients: IGuid[];\n public readonly removedRecipients: IGuid[];\n public readonly alterationType: AlterationType;\n public readonly recipientsMode: RecipientsMode;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n addedRecipients: string[],\n removedRecipients: string[],\n alterationType: AlterationType,\n recipientsMode: RecipientsMode,\n header: Header\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.addedRecipients = addedRecipients.map((x) => toGuid(x));\n this.removedRecipients = removedRecipients.map((x) => toGuid(x));\n this.alterationType = alterationType;\n this.recipientsMode = recipientsMode;\n }\n}\n\nexport class StateChangedEvent extends IncidentEvent {\n public readonly stateId: IGuid;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, stateId: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.stateId = toGuid(stateId);\n }\n}\n\nexport class PriorityChangedEvent extends IncidentEvent {\n public readonly priorityId: IGuid;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, priorityId: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.priorityId = toGuid(priorityId);\n }\n}\n\nexport class IncidentCreatedEvent extends IncidentEvent {\n public readonly parentId: IGuid | null;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, parentId: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.parentId = parentId ? toGuid(parentId) : null;\n }\n}\n\nexport class LocationChangedEvent extends IncidentEvent {\n public readonly location: IncidentLocation;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, location: IncidentLocationLowered, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.location = new IncidentLocation(location.entityid, location.latitude, location.longitude);\n }\n}\n\nexport class TypeChangedEvent extends IncidentEvent {\n public readonly incidentTypeId: IGuid;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, incidentTypeId: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.incidentTypeId = toGuid(incidentTypeId);\n }\n}\n\nexport class ProcedureStepAnsweredEvent extends IncidentEvent {\n public readonly actionType: ProcedureStepActionType;\n public readonly optionId: IGuid | null;\n public readonly comment: string;\n public readonly stepId: IGuid;\n public readonly nextStepId: IGuid;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n actionType: string,\n comment: string,\n stepId: IGuid | string,\n nextStepId: IGuid | string,\n header: Header,\n optionId?: IGuid | string\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.actionType = (ProcedureStepActionType as any)[actionType] as ProcedureStepActionType;\n this.comment = comment;\n this.optionId = optionId ? toGuid(optionId) : null;\n this.stepId = toGuid(stepId);\n this.nextStepId = toGuid(nextStepId);\n }\n}\n\nexport class OwnershipChangedEvent extends IncidentEvent {\n public readonly owner: IGuid | null;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, owner: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.owner = owner ? toGuid(owner) : null;\n }\n}\n\nexport class CommentAddedEvent extends IncidentEvent {\n public readonly commentId: IGuid | null;\n public readonly comment: string;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n commentId: IGuid | string,\n comment: string,\n header: Header\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.commentId = commentId ? toGuid(commentId) : null;\n this.comment = comment;\n }\n}\n\nexport class CommentDeletedEvent extends IncidentEvent {\n public readonly commentId: IGuid | null;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, commentId: IGuid | string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.commentId = commentId ? toGuid(commentId) : null;\n }\n}\n\nexport class CommentChangedEvent extends IncidentEvent {\n public readonly commentId: IGuid | null;\n public readonly comment: string;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n commentId: IGuid | string,\n comment: string,\n header: Header\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.commentId = commentId ? toGuid(commentId) : null;\n this.comment = comment;\n }\n}\n\nexport class LinkedEvent extends IncidentEvent {\n public readonly linkedIncidentIds: IGuid[] = [];\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, linkedIncidentIds: IGuid[], header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.linkedIncidentIds = linkedIncidentIds ? linkedIncidentIds.map((id: IGuid) => toGuid(id)) : [];\n }\n}\n\nexport class UnlinkedEvent extends IncidentEvent {\n public readonly unlinkedIncidentIds: IGuid[] = [];\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, unlinkedIncidentIds: IGuid[], header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.unlinkedIncidentIds = unlinkedIncidentIds ? unlinkedIncidentIds.map((id: IGuid) => toGuid(id)) : [];\n }\n}\n\nexport class DisabledStatesChangedEvent extends IncidentEvent {\n public readonly disabledStates: IGuid[] = [];\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, disabledStates: IGuid[], header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.disabledStates = disabledStates ? disabledStates.map((id: IGuid) => toGuid(id)) : [];\n }\n}\n\nexport class NoteAddedEvent extends IncidentEvent {\n public readonly displayText: string;\n public readonly payload: string;\n public readonly payloadFormat: string;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n displayText: string,\n payload: string,\n payloadFormat: string,\n header: Header\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.displayText = displayText;\n this.payload = payload;\n this.payloadFormat = payloadFormat;\n }\n}\n\nexport class ExternalEventAggregatedEvent extends IncidentEvent {\n public readonly publicType: number;\n public readonly publicTypeName: string;\n public readonly locationEntity: IGuid | string;\n public readonly triggeringEntity: IGuid | string;\n public readonly sourceEntity: IGuid | string;\n public readonly payload: string;\n public readonly raiseTimeUTC: Date;\n\n constructor(\n type: IncidentEventType,\n incidentId: IGuid | string,\n processTimeUtc: Date,\n instigatorId: IGuid | string,\n publicType: number,\n publicTypeName: string,\n locationEntity: IGuid | string,\n triggeringEntity: IGuid | string,\n sourceEntity: IGuid | string,\n payload: string,\n raiseTimeUTC: Date,\n header: Header\n ) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.publicType = publicType;\n this.publicTypeName = publicTypeName;\n this.locationEntity = locationEntity;\n this.triggeringEntity = triggeringEntity;\n this.sourceEntity = sourceEntity;\n this.payload = payload;\n this.raiseTimeUTC = raiseTimeUTC;\n }\n}\n\nexport class LocationClearedEvent extends IncidentEvent {}\n\nexport class ExternalIdChangedEvent extends IncidentEvent {\n public readonly externalId: string;\n\n constructor(type: IncidentEventType, incidentId: IGuid | string, processTimeUtc: Date, instigatorId: IGuid | string, externalId: string, header: Header) {\n super(type, incidentId, processTimeUtc, instigatorId, header);\n this.externalId = externalId;\n }\n}\n\nexport enum IncidentEventType {\n StateChanged = 'StateChanged',\n RecipientsAltered = 'RecipientsAltered',\n Created = 'Created',\n PriorityChanged = 'PriorityChanged',\n Linked = 'Linked',\n Unlinked = 'Unlinked',\n CommentAdded = 'CommentAdded',\n CommentChanged = 'CommentChanged',\n CommentDeleted = 'CommentDeleted',\n LocationChanged = 'LocationChanged',\n DescriptionChanged = 'DescriptionChanged',\n ExternalIdChanged = 'ExternalIdChanged',\n IncidentTypeChanged = 'IncidentTypeChanged',\n OwnershipChanged = 'OwnershipChanged',\n LocationCleared = 'LocationCleared',\n NoteAdded = 'NoteAdded',\n KeepAlive = 'KeepAlive',\n ProcedureStepAnswered = 'ProcedureStepAnswered',\n ExternalEventAggregated = 'ExternalEventAggregated',\n DisabledStatesChanged = 'DisabledStatesChanged',\n}\n\nexport const IncidentEventTypeValues: Record = {\n [IncidentEventType.KeepAlive]: -1,\n [IncidentEventType.StateChanged]: 1,\n [IncidentEventType.RecipientsAltered]: 2,\n [IncidentEventType.Created]: 3,\n [IncidentEventType.PriorityChanged]: 4,\n [IncidentEventType.Linked]: 5,\n [IncidentEventType.Unlinked]: 6,\n [IncidentEventType.CommentAdded]: 7,\n [IncidentEventType.CommentChanged]: 8,\n [IncidentEventType.CommentDeleted]: 9,\n [IncidentEventType.LocationChanged]: 10,\n [IncidentEventType.DescriptionChanged]: 11,\n [IncidentEventType.ExternalIdChanged]: 12,\n [IncidentEventType.IncidentTypeChanged]: 13,\n [IncidentEventType.OwnershipChanged]: 14,\n [IncidentEventType.LocationCleared]: 15,\n [IncidentEventType.NoteAdded]: 16,\n [IncidentEventType.ProcedureStepAnswered]: 17,\n [IncidentEventType.ExternalEventAggregated]: 18,\n [IncidentEventType.DisabledStatesChanged]: 19,\n};\n\nexport enum ProcedureStepActionType {\n Complete = 0,\n Skip = 1,\n Reset = 2,\n Previous = 3,\n Resume = 4,\n SystemComplete = 5,\n SystemPrevious = 6,\n}\n\n//TODO: remove when all event types are supported\nexport const isSupportedEventType = (incidentEventType: IncidentEventType): boolean => {\n return (\n incidentEventType === IncidentEventType.CommentAdded ||\n incidentEventType === IncidentEventType.CommentDeleted ||\n incidentEventType === IncidentEventType.CommentChanged ||\n incidentEventType === IncidentEventType.LocationCleared ||\n incidentEventType === IncidentEventType.DescriptionChanged ||\n incidentEventType === IncidentEventType.StateChanged ||\n incidentEventType === IncidentEventType.PriorityChanged ||\n incidentEventType === IncidentEventType.Created ||\n incidentEventType === IncidentEventType.LocationChanged ||\n incidentEventType === IncidentEventType.ExternalIdChanged ||\n incidentEventType === IncidentEventType.OwnershipChanged ||\n incidentEventType === IncidentEventType.IncidentTypeChanged ||\n incidentEventType === IncidentEventType.RecipientsAltered ||\n incidentEventType === IncidentEventType.ProcedureStepAnswered ||\n incidentEventType === IncidentEventType.Linked ||\n incidentEventType === IncidentEventType.Unlinked ||\n incidentEventType === IncidentEventType.NoteAdded ||\n incidentEventType === IncidentEventType.ExternalEventAggregated ||\n incidentEventType === IncidentEventType.DisabledStatesChanged\n );\n};\n\nconst objectToLower = (object: Record) => {\n const lowerCasedObject: Record = {};\n const keys = Object.keys(object);\n keys.forEach((key) => {\n const val = object[key];\n lowerCasedObject[key.toLowerCase()] = !!val && typeof val === 'object' && !Array.isArray(val) ? objectToLower(val) : val;\n });\n return lowerCasedObject;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const eventFactory = (incidentEvent: any): IncidentEvent => {\n const ie = objectToLower(incidentEvent);\n const type = ie.type as IncidentEventType;\n switch (type) {\n case IncidentEventType.CommentAdded:\n return new CommentAddedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.commentid, ie.comment, ie.header);\n case IncidentEventType.CommentDeleted:\n return new CommentDeletedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.commentid, ie.header);\n case IncidentEventType.CommentChanged:\n return new CommentChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.commentid, ie.comment, ie.header);\n case IncidentEventType.DisabledStatesChanged:\n return new DisabledStatesChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.disabledstates, ie.header);\n case IncidentEventType.Linked:\n return new LinkedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.linkedincidentids, ie.header);\n case IncidentEventType.Unlinked:\n return new UnlinkedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.unlinkedincidentids, ie.header);\n case IncidentEventType.StateChanged:\n return new StateChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.stateid, ie.header);\n case IncidentEventType.ExternalEventAggregated:\n return new ExternalEventAggregatedEvent(\n ie.type,\n ie.incidentid,\n ie.processtimeutc,\n ie.instigatorid,\n ie.publictype,\n ie.publictypename,\n ie.locationentity,\n ie.triggeringentity,\n ie.sourceentity,\n ie.payload,\n ie.raiseTimeUTC,\n ie.header\n );\n case IncidentEventType.NoteAdded:\n return new NoteAddedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.displaytext, ie.payload, ie.payloadformat, ie.header);\n case IncidentEventType.RecipientsAltered:\n return new RecipientAlteredEvent(\n ie.type,\n ie.incidentid,\n ie.processtimeutc,\n ie.instigatorid,\n ie.addedrecipients,\n ie.removedrecipients,\n ie.alterationtype,\n ie.recipientsmode,\n ie.header\n );\n case IncidentEventType.Created:\n return new IncidentCreatedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.parentid, ie.header);\n case IncidentEventType.PriorityChanged:\n return new PriorityChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.priorityid, ie.header);\n case IncidentEventType.LocationChanged:\n return new LocationChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.location, ie.header);\n case IncidentEventType.DescriptionChanged:\n return new DescriptionChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.description, ie.header);\n case IncidentEventType.ExternalIdChanged:\n return new ExternalIdChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.externalid, ie.header);\n case IncidentEventType.OwnershipChanged:\n return new OwnershipChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.owner, ie.header);\n case IncidentEventType.LocationCleared:\n return new LocationClearedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.header);\n case IncidentEventType.IncidentTypeChanged:\n return new TypeChangedEvent(ie.type, ie.incidentid, ie.processtimeutc, ie.instigatorid, ie.incidenttypeid, ie.header);\n case IncidentEventType.ProcedureStepAnswered:\n return new ProcedureStepAnsweredEvent(\n ie.type,\n ie.incidentid,\n ie.processtimeutc,\n ie.instigatorid,\n ie.procedurestepactiontype ? ie.procedurestepactiontype : ie.actiontype,\n ie.comment,\n ie.stepid,\n ie.nextstepid,\n ie.header,\n ie.optionid\n );\n default:\n throw new Error(`Unsupported event ${type}`);\n }\n};\n\nexport enum AlterationType {\n Alteration,\n Dispatch,\n Forward,\n Transfer,\n AutoDispatch,\n}\n\nexport enum RecipientsMode {\n None = 0,\n Everyone = 1,\n Specific = 2,\n Supervisors = 3,\n}\n","export class McClientError extends Error {\n public isRetryable = false;\n}\n\nexport const isRetryableError = (err: Error): boolean => err instanceof McClientError && err.isRetryable;\n","import { isRetryableError } from './errors/mc-client-error';\nimport { McClientResponseError } from './errors/mc-client-response-error';\n\nexport class ServiceState {\n public state: StateEnum;\n public error?: Error;\n public details?: string | null;\n\n constructor(state: StateEnum, error?: Error, details?: string | null) {\n this.state = state;\n this.error = error;\n this.details = details;\n }\n\n public static fromError(err: Error): ServiceState {\n const mcClientError = err as McClientResponseError;\n const details = mcClientError?.subMessage;\n return isRetryableError(err) ? new ServiceState(StateEnum.ErrorRetrying, err, details) : new ServiceState(StateEnum.ErrorUnrecoverable, err, details);\n }\n}\n\nexport enum StateEnum {\n Unintialized = 0,\n Running = 1,\n ErrorRetrying = 2,\n ErrorUnrecoverable = 3,\n}\n","import { Observable, timer } from 'rxjs';\nimport { finalize, mergeMap, filter } from 'rxjs/operators';\nimport { isRetryableError } from '../models/errors/mc-client-error';\n\nexport const retryWithIncreasingLinearTime =\n (operationName: string, scalingDurationFactor = 1_000, maxDuration = 180_000) =>\n (attempts: Observable): Observable => {\n return attempts.pipe(\n filter((err) => isRetryableError(err)),\n mergeMap((_, i) => {\n const retryAttempt = i++;\n const duration = retryAttempt * scalingDurationFactor;\n const time = duration > maxDuration ? maxDuration : duration;\n\n console.log(`${operationName}: attempt ${retryAttempt}; retrying in ${time}ms`);\n return timer(time);\n }),\n finalize(() => console.log(`${operationName}: done retrying`))\n );\n };\n\nexport const retryWithConstantTime =\n (operationName: string, duration = 15_000) =>\n (attempts: Observable): Observable => {\n return attempts.pipe(\n filter((err) => isRetryableError(err)),\n mergeMap((_, i) => {\n const retryAttempt = i++;\n console.log(`${operationName}: attempt ${retryAttempt}; retrying in ${duration}ms`);\n return timer(duration);\n }),\n finalize(() => console.log(`${operationName}: done retrying`))\n );\n };\n","/* eslint-disable @typescript-eslint/no-namespace */\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport namespace StateGuids {\n export const CLOSED = SafeGuid.parse('0CF34BCB-6CA1-4E1B-8DB9-C3F8A51BF3B2');\n export const NEW = SafeGuid.parse('775A9416-BE54-4628-806E-80DAF4DBAE65');\n export const PARKED = SafeGuid.parse('F397A502-3707-4454-AC50-A86155E7E89F');\n export const SNOOZED = SafeGuid.parse('025EA3B8-801F-44A6-81C8-720B65D4447E');\n export const IN_PROGRESS = SafeGuid.parse('FD980618-2310-4011-B10E-4C8C73E39750');\n export const SOLVED = SafeGuid.parse('891BB5A8-AC7C-4F5F-8481-639D2B2E5FB8');\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\n\nexport class McModuleHealthEvent extends EventBase {\n public get isInitialized(): boolean {\n return this.getField('IsInitialized');\n }\n}\n","import { McClientError } from './mc-client-error';\n\nexport class McClientSseError extends McClientError {\n constructor() {\n super();\n this.isRetryable = true;\n this.message = 'STE_MESSAGE_ERROR_WEBAPI_UNREACHABLE';\n }\n}\n","import { bufferTime, catchError, filter, map, share } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { BehaviorSubject, Observable, Subject, throwError } from 'rxjs';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { ServiceState, StateEnum } from '../../models/service-state';\nimport { IncidentEvent } from '../../models/events/incident-event';\nimport { eventFactory, isSupportedEventType } from '../../models/events/incident-event';\nimport { McModuleHealthEvent } from '../../models/events/mc-module-health-event';\nimport { McClientSseError } from '../../models/errors/mc-client-sse-error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class McEventReceiverService {\n private _state$ = new BehaviorSubject(new ServiceState(StateEnum.Unintialized));\n private _scClient: WebAppClient;\n private _events$ = new Subject();\n\n constructor(securityCenterProvider: SecurityCenterClientService) {\n this._scClient = securityCenterProvider.scClient;\n this._scClient.registerAdditionalEventTypes('McIncidentEvent', EventBase);\n this._scClient.registerAdditionalEventTypes('McModuleHealthEvent', McModuleHealthEvent);\n this._scClient.onEventReceived((mcEvent) => this.onEventReceived(mcEvent));\n }\n\n public get state$(): Observable {\n return this._state$;\n }\n\n public getIncidentEvents = (): Observable =>\n this._events$.pipe(\n filter((ie) => isSupportedEventType(ie.type)),\n map((ie) => eventFactory(ie)),\n catchError((err) => {\n console.error(err);\n return throwError(err);\n }),\n bufferTime(200),\n filter((buffer) => buffer.length > 0),\n share()\n );\n\n private onEventReceived(theEvent: EventReceivedArg) {\n if (theEvent.event.eventType === 'McModuleHealthEvent') {\n const mcModuleHealthEvent = theEvent.event as McModuleHealthEvent;\n const serviceState = mcModuleHealthEvent.isInitialized ? new ServiceState(StateEnum.Running) : ServiceState.fromError(new McClientSseError());\n this._state$.next(serviceState);\n }\n\n if (theEvent.event.eventType === 'McIncidentEvent') {\n const incidentEvent = theEvent.event.toJson() as IncidentEvent;\n this._events$.next(incidentEvent);\n }\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\nexport interface StateApi {\n Id: string;\n Name: string;\n}\n\nexport class State {\n constructor(public id: IGuid, public name: string) {}\n\n public static assign = (state: StateApi): State => new State(toGuid(state.Id), state.Name);\n}\n","// Autogenerated: v2/help/Entities/ApiRole?codegen=ts&InterfaceOnly=False&workflow=True on 2021-08-30 10:02:01 AM\nimport { FieldObject } from '../../Helpers/FieldObject';\nimport { EntityManager } from './EntityManager';\nimport HttpStatusCode from '../Enumerations/HttpStatusCode';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { IRestResponse } from '../Interface/IRestResponse';\nimport { ITransaction } from '../Interface/ITransaction';\nimport { IExecuteRequest, IRoleManager } from '../Interface/IRoleManager';\n\n// #region Inner classes\n\nexport class ExecuteRequest extends FieldObject implements IExecuteRequest {\n // RoleId\n public get roleId(): IGuid | null {\n return this.getNullableFieldGuid('RoleId');\n }\n public set roleId(value: IGuid | null) {\n this.setNullableFieldGuid('RoleId', value);\n }\n // RoleType\n public get roleType(): IGuid | null {\n return this.getNullableFieldGuid('RoleType');\n }\n public set roleType(value: IGuid | null) {\n this.setNullableFieldGuid('RoleType', value);\n }\n // Method\n public get method(): string {\n return this.getField('Method');\n }\n public set method(value: string) {\n this.setField('Method', value);\n }\n // Url\n public get url(): string {\n return this.getField('Url');\n }\n public set url(value: string) {\n this.setField('Url', value);\n }\n // Content\n public get content(): string {\n return this.getField('Content');\n }\n public set content(value: string) {\n this.setField('Content', value);\n }\n // ContentType\n public get contentType(): string {\n return this.getField('ContentType');\n }\n public set contentType(value: string) {\n this.setField('ContentType', value);\n }\n // Headers\n public get headers(): Map {\n return this.getFieldDictionary('Headers', undefined, 'string');\n }\n public set headers(value: Map) {\n this.setFieldDictionary('Headers', value);\n }\n\n public initializeAllFields(): void {\n this.setFieldGuid('RoleId', SafeGuid.EMPTY);\n this.setFieldGuid('RoleType', SafeGuid.EMPTY);\n this.setField('Method', '');\n this.setField('Url', '');\n this.setField('Content', '');\n this.setField('ContentType', '');\n this.setFieldDictionary('Headers', new Map());\n }\n}\n\n// #endregion Inner classes\n\nexport class RoleManager extends EntityManager implements IRoleManager {\n // #region Constructor\n\n constructor() {\n super('v2/entities/Roles');\n }\n\n // #endregion Constructor\n\n public async executeApiRequestAsync(value: IExecuteRequest, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise(function (resolve, reject) { resolve(response); });\n } else {\n return new Promise(function (resolve, reject) { reject(response); });\n }\n };\n\n return this.executeRequestTransactionAsync('executeapirequest', 'POST', value, transaction, responseHandler);\n }\n\n}\n\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface IWebApiResponse {\n statusCode: number;\n}\n\nexport class WebApiResponse implements IWebApiResponse {\n constructor(public statusCode: number, public element: T) {}\n}\n","import { HttpMethod } from '@genetec/web-maps';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { McClientError as McClientError } from './mc-client-error';\n\ninterface ErrorResponse {\n Details: string;\n}\nexport class McClientResponseError extends McClientError {\n public details: string;\n public subMessage: string | null;\n\n constructor(public requestUrl: string, public httpMethod: HttpMethod, public statusCode: number, responseBody: string) {\n super();\n this.requestUrl = requestUrl;\n this.message = this.createErrorMessage(httpMethod, statusCode);\n this.subMessage = this.getSubMessageKey(statusCode);\n this.httpMethod = httpMethod;\n this.statusCode = statusCode;\n this.details = this.getDetailsFromResponseBody(responseBody);\n this.isRetryable = this.isRetryableError(statusCode);\n }\n\n public toLogMessage(): string {\n return `${this.httpMethod} ${this.requestUrl} returned ${this.statusCode} status code with error details ${this.details}.`;\n }\n\n private createErrorMessage(httpMethod: HttpMethod, statusCode: number): string {\n switch (statusCode) {\n case HttpStatusCode.BAD_REQUEST:\n return httpMethod === HttpMethod.POST ? 'STE_MESSAGE_ERROR_HTTPCODE_BAD_POST_REQUEST' : 'STE_MESSAGE_ERROR_HTTPCODE_BAD_GET_REQUEST';\n case HttpStatusCode.FORBIDDEN:\n return 'STE_MESSAGE_ERROR_HTTPCODE_FORBIDDEN';\n case HttpStatusCode.NOT_FOUND:\n return 'STE_MESSAGE_ERROR_HTTPCODE_NOT_FOUND';\n case McCustomHttpStatusCode.LicenseInvalid:\n return 'STE_INCIDENTS_UNAVAILABLE';\n case HttpStatusCode.INTERNAL_SERVER_ERROR:\n return 'STE_MESSAGE_ERROR_HTTPCODE_INTERNAL_SERVER_ERROR';\n case HttpStatusCode.BAD_GATEWAY:\n return 'STE_MESSAGE_ERROR_HTTPCODE_BAD_GATEWAY';\n case HttpStatusCode.GATEWAY_TIMEOUT:\n return 'STE_MESSAGE_ERROR_HTTPCODE_GATEWAY_TIMEOUT';\n default:\n return `Unhandled status code ${statusCode}`;\n }\n }\n\n private getSubMessageKey(statusCode: number): string | null {\n try {\n if (statusCode === McCustomHttpStatusCode.LicenseInvalid) return 'STE_MESSAGE_MAXIMUM_LICENSE_REACHED';\n\n return null;\n } catch (e) {\n return null;\n }\n }\n\n private getDetailsFromResponseBody(responseBody: string): string {\n try {\n const errorObj = JSON.parse(responseBody) as ErrorResponse;\n return errorObj.Details;\n } catch (e) {\n return '';\n }\n }\n\n private isRetryableError(statusCode: number): boolean {\n switch (statusCode) {\n case McCustomHttpStatusCode.LicenseInvalid:\n return true;\n default:\n return false;\n }\n }\n}\n\nenum McCustomHttpStatusCode {\n LicenseInvalid = 460,\n}\n","import { McClientError } from './mc-client-error';\n\nexport class McClientNotConnectedError extends McClientError {\n constructor() {\n super();\n this.isRetryable = true;\n this.message = 'STE_MESSAGE_ERROR_WEBAPI_UNREACHABLE';\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { RestResponse } from 'RestClient/Connection/RestResponse';\nimport { RoleManager, ExecuteRequest } from 'RestClient/Client/Managers/RoleManager';\nimport { Injectable } from '@angular/core';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport { from, Observable } from 'rxjs';\nimport { catchError, first, map } from 'rxjs/operators';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { HttpMethod } from '@genetec/web-maps';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { WebApiResponse } from '../models/web-api-response';\nimport { ListResultApi } from '../models/list-result';\nimport { McClientResponseError } from '../models/errors/mc-client-response-error';\nimport { McClientNotConnectedError } from '../models/errors/mc-client-not-connected-error';\n\nexport const INCIDENT_MANAGER_GUID = SafeGuid.parse('9E58371C-45CD-4557-ABDE-3A4FB9BC217C');\n\n@Injectable()\nexport class McClient {\n private _scClient: WebAppClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService, private _logger: LoggerService) {\n this._scClient = securityCenterProvider.scClient;\n }\n\n public getAll(url: string, searchParams: URLSearchParams | null = null): Observable {\n return from(this.fetchAll(url, searchParams ?? new URLSearchParams())).pipe(first());\n }\n\n public get(url: string, responseType?: 'json', searchParams?: URLSearchParams): Observable;\n public get(url: string, responseType: 'blob', searchParams?: URLSearchParams): Observable;\n public get(url: string, responseType: 'blob' | 'json' = 'json', searchParams: URLSearchParams = new URLSearchParams()): Observable {\n const params = searchParams.toString();\n const urlWithQuery = params === '' ? url : `${url}?${params}`;\n return from(this.buildAndExecuteRequestWithType('GET', urlWithQuery, null, responseType)).pipe(\n map((x) => {\n if (!this.isSuccess(x)) {\n const err = new McClientResponseError(url, HttpMethod.GET, x.statusCode, x.body);\n this._logger.traceError(err.toLogMessage());\n throw err;\n } else {\n return x?.body as T;\n }\n })\n );\n }\n\n public post(url: string, body: string): Observable>;\n public post(url: string, body: string): Observable | WebApiResponse> {\n return from(this.buildAndExecuteRequestWithType('POST', url, body, 'text')).pipe(\n map((x) => {\n if (this.isServerError(x)) {\n const err = new McClientResponseError(url, HttpMethod.POST, x.statusCode, x.body);\n this._logger.traceError(err.toLogMessage());\n throw err;\n } else if (x.body) {\n return new WebApiResponse(x.statusCode, x.body as T);\n } else {\n return new WebApiResponse(x.statusCode, null);\n }\n }),\n catchError((err) => {\n this._logger.traceError(`POST ${url} failed : ${err}`);\n throw err;\n })\n );\n }\n\n private async buildAndExecuteRequestWithType(\n method: string,\n url: string,\n content: string | null = null,\n responseType: 'blob' | 'json' | 'text' = 'json'\n ): Promise {\n const restObject: RoleManager = await this._scClient.getAsync(RoleManager);\n\n const request = new ExecuteRequest();\n request.roleType = INCIDENT_MANAGER_GUID;\n request.url = url;\n request.method = method;\n request.headers = new Map();\n request.headers.set('Authorization', `Bearer ${this._scClient.rest.authorizationHeader.split(' ')[1]}`);\n\n if (content) {\n request.content = content;\n }\n\n const response: RestResponse = await restObject.executeRequestWithResponseTypeAsync('POST', 'executeapirequest', request, responseType);\n\n if (response?.body?.Exception) {\n /* RestConnection (used by RestObject) does something odd: if the response is not successful (2XX code),\n it'll throw an error of type IRestResponse with an altered status code of 500. This catch block restores the proper code. */\n const statusCodeRegexExp = new RegExp('\\\\d{3}');\n const errorCodeRegexMatch = statusCodeRegexExp.exec(response.body.Exception)?.[0];\n if (errorCodeRegexMatch) {\n const actualErrorCode = parseInt(statusCodeRegexExp.exec(response.body.Exception)?.[0] ?? '500');\n response.statusCode = actualErrorCode;\n return response;\n } else {\n // The MC WebAPI can't be reached\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (response.body.Exception.includes('Unable to connect to the remote server')) {\n throw new McClientNotConnectedError();\n } else {\n throw new Error();\n }\n }\n } else {\n return response;\n }\n }\n\n private async fetchAll(url: string, searchParams: URLSearchParams): Promise {\n let allElements = new Array();\n let currentOffset = 0;\n let totalResultCount: number;\n const limit = 100;\n searchParams.set('limit', limit.toString());\n\n do {\n searchParams.set('offset', currentOffset.toString());\n const response = (await this.buildAndExecuteRequestWithType('GET', `${url}?${searchParams.toString()}`, null)) as RestResponse;\n if (!this.isSuccess(response)) {\n const err = new McClientResponseError(url, HttpMethod.GET, response.statusCode, response.body);\n this._logger.traceError(err.toLogMessage());\n throw err;\n }\n const result = response.body as ListResultApi;\n totalResultCount = result.TotalResultsCount ?? 0;\n allElements = [...allElements, ...result.Results];\n currentOffset += limit;\n } while (currentOffset < totalResultCount);\n\n return allElements;\n }\n\n private isSuccess(response: IRestResponse | null): boolean {\n return response != null && response.statusCode >= 200 && response.statusCode <= 299;\n }\n\n private isServerError(response: IRestResponse | null): boolean {\n return response != null && response.statusCode >= 500;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { retryWithConstantTime } from '@modules/mission-control/utils/rxjs-utils';\nimport { List } from 'immutable';\nimport { Observable, Subject, ConnectableObservable, BehaviorSubject } from 'rxjs';\nimport { map, publishReplay, retryWhen, switchMap, takeUntil } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { State, StateApi } from '../../models/state';\nimport { StateGuids } from '../../state-guids';\nimport { McClient } from '../mc-client.service';\n\nexport const DEFAULT_STATES: State[] = [\n new State(StateGuids.IN_PROGRESS, 'In Progress'),\n new State(StateGuids.NEW, 'New'),\n new State(StateGuids.PARKED, 'On Hold'),\n new State(StateGuids.SOLVED, 'Resolved'),\n];\n\n@Injectable()\nexport class StateService implements OnDestroy {\n private _states$: BehaviorSubject;\n private _refresh$ = new Subject();\n private _stopObs$ = new Subject();\n\n constructor(private _mcClient: McClient) {\n const obs$ = this._refresh$.pipe(\n switchMap(() => this.fetchStates$()),\n retryWhen(retryWithConstantTime('Fetch incident states')),\n takeUntil(this._stopObs$),\n publishReplay(1)\n ) as ConnectableObservable;\n obs$.connect();\n\n this._states$ = new BehaviorSubject(DEFAULT_STATES);\n obs$.subscribe(this._states$);\n\n this._refresh$.next();\n }\n\n public ngOnDestroy(): void {\n this._states$.complete();\n\n this._refresh$.complete();\n\n this._stopObs$.next();\n this._stopObs$.complete();\n }\n\n public getStates$(): Observable {\n return this._states$.asObservable();\n }\n\n public getStates(stateIds?: IGuid[]): State[] {\n return stateIds ? this._states$.getValue().filter((state) => stateIds.find((stateId) => stateId.equals(state.id))) : this._states$.getValue();\n }\n\n public getActiveStates$(): Observable {\n return this._states$.pipe(map((states) => states.filter((s) => !s.id.equals(StateGuids.CLOSED))));\n }\n\n public getActiveStates(): State[] {\n return this._states$.getValue().filter((s) => !s.id.equals(StateGuids.CLOSED));\n }\n\n public get getActiveStatesIds(): List {\n return List(this.getActiveStates().map((s) => s.id));\n }\n\n public refresh(): void {\n this._refresh$.next();\n }\n\n public getState$(id: IGuid): Observable {\n return this._states$.pipe(\n map((states) => {\n return states.find((x) => x.id.equals(id));\n })\n );\n }\n\n private fetchStates$(): Observable {\n return this._mcClient.getAll('v2/states').pipe(\n map((states) => {\n return states.length > 0 ? states.map(State.assign) : DEFAULT_STATES;\n })\n );\n }\n}\n","import { IGuid } from 'safeguid';\n\nexport interface CommentApi {\n Id: IGuid;\n Value: string;\n CreatedBy: IGuid;\n LastModifiedTime: Date;\n}\n\nexport class Comment {\n constructor(public id: IGuid, public value: string, public createdBy: IGuid, public lastModifiedTime: Date) {}\n\n public static assign = (commentApi: CommentApi): Comment => new Comment(commentApi.Id, commentApi.Value, commentApi.CreatedBy, commentApi.LastModifiedTime);\n}\n","import { IGuid } from 'safeguid';\nimport { List } from 'immutable';\nimport { McProcedure } from '@modules/mission-control/models/procedure';\nimport { Comment, CommentApi } from '@modules/mission-control/models/comment';\nimport { toGuid } from '../utils/guid-utils';\nimport { IncidentLocation } from './incident-location';\nimport { IncidentEvent, RecipientsMode } from './events/incident-event';\n\nexport interface IncidentLocationApi {\n EntityId: IGuid;\n Latitude: number | null;\n Longitude: number | null;\n}\n\nexport interface MCIncidentApi {\n Id: string;\n Name: string;\n TypeId: string;\n TypeRevision: number;\n Description?: string;\n DisplayId: number;\n ExternalId?: string;\n RecipientsMode: number;\n RecipientIds?: string[];\n StateId: string;\n PriorityId: string;\n OwnerId?: string;\n TriggerTimeUtc?: string;\n Location?: IncidentLocationApi;\n IconId: string;\n ParentId?: string;\n ArgbColor: string;\n SoundId: IGuid;\n CurrentStepId?: string;\n ProcedureId?: string;\n ProcedureRevision?: number;\n ActiveComments?: CommentApi[];\n LinkedIncidentIds?: IGuid[];\n LocationAreaIds?: IGuid[];\n SourceIds?: IGuid[];\n SubIncidentIds?: IGuid[];\n}\n\nexport class MCIncident {\n constructor(\n public readonly id: IGuid,\n public readonly name: string,\n public readonly typeId: IGuid,\n public readonly typeRevision: number,\n public readonly description: string | null,\n public readonly displayId: number,\n public readonly externalId: string | null,\n public readonly recipientsMode: RecipientsMode,\n public readonly recipientIds: List,\n public readonly stateId: IGuid,\n public readonly priorityId: IGuid,\n public readonly ownerId: IGuid | null,\n public readonly triggerTimeUtc: Date | null,\n public readonly location: IncidentLocation | null,\n public readonly iconId: IGuid,\n public readonly parentId: IGuid | null,\n public readonly argbColor: string,\n public readonly soundId: IGuid,\n public readonly currentStepId: IGuid | null,\n public readonly procedureId: IGuid | null,\n public readonly procedureRevision: number | null,\n public readonly events: List,\n public readonly procedure: McProcedure | null,\n public readonly activeComments: Comment[] | null,\n public readonly linkedIncidentIds: IGuid[] | null,\n public readonly locationAreaIds: IGuid[] | null,\n public readonly sourceIds: IGuid[] | null,\n public readonly subIncidentIds: IGuid[] | null\n ) {\n Object.freeze(this);\n }\n\n public static assign(incident: MCIncidentApi): MCIncident {\n try {\n return new MCIncident(\n toGuid(incident.Id),\n incident.Name,\n toGuid(incident.TypeId),\n incident.TypeRevision,\n incident.Description ?? null,\n incident.DisplayId,\n incident.ExternalId ?? null,\n incident.RecipientsMode,\n incident.RecipientIds ? List(incident.RecipientIds.map(toGuid)) : List(),\n toGuid(incident.StateId),\n toGuid(incident.PriorityId),\n incident.OwnerId ? toGuid(incident.OwnerId) : null,\n incident.TriggerTimeUtc ? new Date(incident.TriggerTimeUtc) : null,\n incident.Location\n ? new IncidentLocation(incident.Location.EntityId ? toGuid(incident.Location.EntityId) : null, incident.Location.Latitude, incident.Location.Longitude)\n : null,\n toGuid(incident.IconId),\n incident.ParentId ? toGuid(incident.ParentId) : null,\n incident.ArgbColor,\n toGuid(incident.SoundId),\n incident.CurrentStepId ? toGuid(incident.CurrentStepId) : null,\n incident.ProcedureId ? toGuid(incident.ProcedureId) : null,\n incident.ProcedureRevision ?? null,\n List(),\n null,\n incident.ActiveComments?.map((c) => Comment.assign(c)) ?? null,\n incident.LinkedIncidentIds ?? null,\n incident.LocationAreaIds ?? null,\n incident.SourceIds ?? null,\n incident.SubIncidentIds ?? null\n );\n } catch (e) {\n console.error(`Incident ${incident.Id} \\n\\t${e as string}`);\n console.error(e);\n throw e;\n }\n }\n\n public with({\n id,\n name,\n typeId,\n typeRevision,\n description,\n displayId,\n externalId,\n recipientsMode,\n recipientIds,\n stateId,\n priorityId,\n ownerId,\n triggerTimeUtc,\n location,\n iconId,\n parentId,\n argbColor,\n soundId,\n currentStepId,\n procedureId,\n procedureRevision,\n events,\n procedure,\n activeComments,\n linkedIncidentIds,\n locationAreaIds,\n sourceIds,\n subIncidentIds,\n }: {\n id?: IGuid;\n name?: string;\n typeId?: IGuid;\n typeRevision?: number;\n description?: string | null;\n displayId?: number;\n externalId?: string | null;\n recipientsMode?: RecipientsMode;\n recipientIds?: List;\n stateId?: IGuid;\n priorityId?: IGuid;\n ownerId?: IGuid | null;\n triggerTimeUtc?: Date | null;\n location?: IncidentLocation | null;\n iconId?: IGuid;\n parentId?: IGuid | null;\n argbColor?: string;\n soundId?: IGuid;\n currentStepId?: IGuid | null;\n procedureId?: IGuid | null;\n procedureRevision?: number | null;\n events?: List;\n procedure?: McProcedure;\n activeComments?: Comment[];\n linkedIncidentIds?: IGuid[];\n locationAreaIds?: IGuid[];\n sourceIds?: IGuid[];\n subIncidentIds?: IGuid[];\n }): MCIncident {\n return new MCIncident(\n id ?? this.id,\n name ?? this.name,\n typeId ?? this.typeId,\n typeRevision ?? this.typeRevision,\n description === undefined ? this.description : description,\n displayId ?? this.displayId,\n externalId === undefined ? this.externalId : externalId,\n recipientsMode ?? this.recipientsMode,\n recipientIds ?? this.recipientIds,\n stateId ?? this.stateId,\n priorityId ?? this.priorityId,\n ownerId === undefined ? this.ownerId : ownerId,\n triggerTimeUtc === undefined ? this.triggerTimeUtc : triggerTimeUtc,\n location === undefined ? this.location : location,\n iconId ?? this.iconId,\n parentId === undefined ? this.parentId : parentId,\n argbColor ?? this.argbColor,\n soundId ?? this.soundId,\n currentStepId === undefined ? this.currentStepId : currentStepId,\n procedureId === undefined ? this.procedureId : procedureId,\n procedureRevision === undefined ? this.procedureRevision : procedureRevision,\n events ?? this.events,\n procedure ?? this.procedure,\n activeComments ?? this.activeComments,\n linkedIncidentIds ?? this.linkedIncidentIds,\n locationAreaIds ?? this.locationAreaIds,\n sourceIds ?? this.sourceIds,\n subIncidentIds ?? this.subIncidentIds\n );\n }\n}\n","import { List } from 'immutable';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\nimport { ListResult, ListResultApi } from './list-result';\ninterface StateTranstitionApi {\n Id: string;\n Enabled: boolean;\n}\n\nclass StateTranstition {\n constructor(public id: IGuid, public enabled: boolean) {}\n}\n\nexport interface PossibleStateTransitionListApi extends ListResultApi {\n NextState?: StateTranstitionApi;\n}\n\nexport class PossibleStateTransitionList extends ListResult {\n constructor(public nextState: StateTranstition | null, results: List, totalResultsCount: number | null) {\n super(totalResultsCount, results);\n }\n\n public static assign(stateTransition: PossibleStateTransitionListApi): PossibleStateTransitionList {\n const nextState = stateTransition.NextState ? new StateTranstition(toGuid(stateTransition.NextState.Id), stateTransition.NextState.Enabled) : null;\n return new PossibleStateTransitionList(\n nextState,\n List(stateTransition.Results.map((x) => new StateTranstition(toGuid(x.Id), x.Enabled))),\n stateTransition.TotalResultsCount ?? null\n );\n }\n}\n","import { List } from 'immutable';\n\nexport interface ListResultApi {\n TotalResultsCount?: number;\n Results: Array;\n}\n\nexport class ListResult {\n constructor(public totalResultsCount: number | null, public results: List) {}\n}\n","import { IGuid } from 'safeguid';\nimport { toGuid } from \"../utils/guid-utils\";\n\nexport interface OptionApi {\n Id: IGuid;\n Name: string;\n}\nexport class Option {\n constructor(public id: IGuid, public name: string) {}\n\n public static assign(option: OptionApi): Option {\n return new Option(toGuid(option.Id), option.Name);\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\nimport { IncidentEvent, ProcedureStepActionType, ProcedureStepAnsweredEvent } from './events/incident-event';\nimport { Option, OptionApi } from './option';\n\nexport interface StepApi {\n Id: IGuid;\n Name: string;\n Instructions: string;\n Options: OptionApi[];\n IsSkippable: boolean;\n IsCommentRequired: boolean;\n IsFirstStep: boolean;\n}\n\nexport class Step {\n constructor(\n public id: IGuid,\n public name: string,\n public instructions: string,\n public options: Option[],\n public isSkippable: boolean,\n public isCommentRequired: boolean,\n public isFirstStep: boolean\n ) {}\n\n public static assign(step: StepApi): Step {\n return new Step(toGuid(step.Id), step.Name, step.Instructions, step.Options.map(Option.assign), step.IsSkippable, step.IsCommentRequired, step.IsFirstStep);\n }\n\n public isRoot(incidentEvents: IncidentEvent[]): boolean {\n const forwardSteps = [ProcedureStepActionType.Complete, ProcedureStepActionType.Resume, ProcedureStepActionType.SystemComplete];\n const stepAnsweredEvents = incidentEvents\n .filter((iie) => iie instanceof ProcedureStepAnsweredEvent && iie.nextStepId.equals(this.id) && Object.values(forwardSteps).includes(iie.actionType))\n .sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime())\n .reverse();\n\n const stepAnsweredEvent = stepAnsweredEvents.length > 0 ? (stepAnsweredEvents[0] as ProcedureStepAnsweredEvent) : null;\n\n return (\n this.isFirstStep ||\n (!!stepAnsweredEvent && (ProcedureStepActionType[stepAnsweredEvent?.actionType] === ProcedureStepActionType[ProcedureStepActionType.SystemComplete] ?? false))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MCIncident, MCIncidentApi } from '@modules/mission-control/models/mc-incident';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { PossibleStateTransitionList, PossibleStateTransitionListApi } from '@modules/mission-control/models/possible-state-transition-list';\nimport { IncidentFilter } from '@modules/mission-control/models/incident-filter';\nimport { List } from 'immutable';\nimport { ListResultApi } from '@modules/mission-control/models/list-result';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { StateService } from '../state/state.service';\nimport { McClient } from './../mc-client.service';\nimport { IncidentSorting } from './../../models/incident-sorting';\nimport { Step, StepApi } from './../../models/step';\n\nconst LIMIT = 100;\n\nconst expandPropertyNames = {\n LinkedIncidentIds: 'LinkedIncidentIds',\n SourceIds: 'SourceIds',\n SubIncidentIds: 'SubIncidentIds',\n ActiveComments: 'ActiveComments',\n LocationAreaIds: 'LocationAreaIds',\n All: 'All',\n};\n\n@Injectable()\nexport class IncidentApiService {\n constructor(private _mcClient: McClient, private _stateService: StateService, private _logger: LoggerService) {}\n\n public getIncident(incidentId: IGuid): Observable {\n const searchParams = new URLSearchParams();\n searchParams.set('expand', expandPropertyNames.All);\n return this._mcClient.get(`v2/Incidents/${incidentId.toString()}`, 'json', searchParams).pipe(\n map((x) => MCIncident.assign(x)),\n catchError((_) => of(null))\n );\n }\n\n public getPossibleStateTransitions(id: IGuid): Observable {\n return this._mcClient.get(`v2/Incidents/${id.toString()}/PossibleStateTransitions`).pipe(\n map((x) => PossibleStateTransitionList.assign(x)),\n catchError((_) => of(undefined))\n );\n }\n\n public getIncidents(filter: IncidentFilter, sorting: IncidentSorting, offset: number): Observable<[List, number | null]> {\n const queryParams = new URLSearchParams();\n queryParams.set('isRecipient', 'true');\n\n const createLocationFilter = (): void => {\n if (filter === undefined || filter.locationIds.count() === 0) return;\n queryParams.set('locationIds', filter.locationIds.join(','));\n };\n\n const createStateFilter = (): void => {\n if (filter === undefined || filter.stateIds.count() === 0) queryParams.set('stateIds', this._stateService.getActiveStatesIds.join(','));\n else queryParams.set('stateIds', filter.stateIds.join(','));\n };\n\n const createPriorityFilter = (): void => {\n if (filter === undefined || filter.priorityIds.count() === 0) return;\n queryParams.set('priorityIds', filter.priorityIds.join(','));\n };\n\n const createTypeFilter = (): void => {\n if (filter === undefined || filter.incidentTypeIds.count() === 0) return;\n queryParams.set('incidentTypeIds', filter.incidentTypeIds.join(','));\n };\n\n const createTimeFilter = (): void => {\n if (filter === undefined) return;\n if (filter.dateTimeFrom) queryParams.set('dateTimeFrom', filter.dateTimeFrom.toString());\n if (filter.dateTimeTo) queryParams.set('dateTimeTo', filter.dateTimeTo.toString());\n };\n\n const createOwnerFilter = (): void => {\n if (filter === undefined || filter.ownerIds.count() === 0) return;\n queryParams.set('ownerIds', filter.ownerIds.join(','));\n };\n\n createStateFilter();\n createPriorityFilter();\n createTypeFilter();\n createTimeFilter();\n createLocationFilter();\n createOwnerFilter();\n queryParams.set('limit', LIMIT.toString());\n queryParams.set('offset', offset.toString());\n queryParams.set('sortBy', sorting.toString());\n\n return this._mcClient.get>(`v2/Incidents`, 'json', queryParams).pipe(\n map((x) => {\n let incidents: List = List();\n let count: number | null = null;\n try {\n incidents = List(x.Results.map(MCIncident.assign.bind(MCIncident)));\n count = x.TotalResultsCount ?? null;\n } catch (e) {\n this._logger.traceError(`Unable to fetch incidents : ${e as string}`);\n throw e;\n }\n return [incidents, count];\n })\n );\n }\n\n public getCurrentProcedureStep(incidentId: IGuid): Observable {\n return this._mcClient.get(`v2/Incidents/${incidentId.toString()}/CurrentProcedureStep`).pipe(map((x) => Step.assign(x)));\n }\n}\n","import {\n StateChangedEvent,\n PriorityChangedEvent,\n LocationChangedEvent,\n DescriptionChangedEvent,\n ExternalIdChangedEvent,\n ProcedureStepAnsweredEvent,\n OwnershipChangedEvent,\n RecipientAlteredEvent,\n LinkedEvent,\n UnlinkedEvent,\n} from '@modules/mission-control/models/events/incident-event';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\n\nexport class IncidentHandler {\n public static stateChange = (incident: MCIncident, event: StateChangedEvent): MCIncident => incident.with({ stateId: event.stateId });\n\n public static priorityChange = (incident: MCIncident, event: PriorityChangedEvent): MCIncident => incident.with({ priorityId: event.priorityId });\n\n public static locationChange = (incident: MCIncident, event: LocationChangedEvent): MCIncident => incident.with({ location: event.location });\n\n public static linkIncidents = (incident: MCIncident, event: LinkedEvent): MCIncident =>\n incident.with({ linkedIncidentIds: incident.linkedIncidentIds ? [...incident.linkedIncidentIds, ...event.linkedIncidentIds] : event.linkedIncidentIds });\n\n public static unlinkIncidents = (incident: MCIncident, event: UnlinkedEvent) =>\n incident.with({ linkedIncidentIds: incident.linkedIncidentIds?.filter((id) => !event.unlinkedIncidentIds.find((x) => x.equals(id))) });\n\n public static descriptionChange = (incident: MCIncident, event: DescriptionChangedEvent): MCIncident => incident.with({ description: event.description });\n\n public static externalIdChange = (incident: MCIncident, event: ExternalIdChangedEvent): MCIncident => incident.with({ externalId: event.externalId });\n\n public static currentStepChange = (incident: MCIncident, event: ProcedureStepAnsweredEvent): MCIncident => incident.with({ currentStepId: event.nextStepId });\n\n public static ownerChange = (incident: MCIncident, event: OwnershipChangedEvent): MCIncident => incident.with({ ownerId: event.owner });\n\n public static clearLocation = (incident: MCIncident): MCIncident => incident.with({ location: null });\n\n public static incidentTypeChange = (incident: MCIncident, newIncident: MCIncident): MCIncident =>\n incident.with({\n argbColor: newIncident.argbColor,\n name: newIncident.name,\n iconId: newIncident.iconId,\n });\n\n public static recipientChange = (incident: MCIncident, event: RecipientAlteredEvent): MCIncident =>\n incident.with({ recipientIds: incident.recipientIds.concat(event.addedRecipients) });\n}\n","import { List } from 'immutable';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport class IncidentFilter {\n public static empty: IncidentFilter = new IncidentFilter();\n\n private constructor(\n public incidentTypeIds = List(),\n public locationIds = List(),\n public ownerIds = List(),\n public priorityIds = List(),\n public stateIds = List(),\n public readonly dateTimeFrom: string | null = null,\n public readonly dateTimeTo: string | null = null\n ) {\n Object.freeze(this);\n }\n\n public with({\n incidentTypeIds,\n locationIds,\n ownerIds,\n priorityIds,\n stateIds,\n dateTimeFrom,\n dateTimeTo,\n }: {\n incidentTypeIds?: List;\n locationIds?: List;\n ownerIds?: List;\n priorityIds?: List;\n stateIds?: List;\n dateTimeFrom?: string | null;\n dateTimeTo?: string | null;\n }): IncidentFilter {\n return new IncidentFilter(\n incidentTypeIds ?? this.incidentTypeIds,\n locationIds ?? this.locationIds,\n ownerIds ?? this.ownerIds,\n priorityIds ?? this.priorityIds,\n stateIds ?? this.stateIds,\n dateTimeFrom === undefined ? this.dateTimeFrom : dateTimeFrom,\n dateTimeTo === undefined ? this.dateTimeTo : dateTimeTo\n );\n }\n\n public asURLSearchParams(): URLSearchParams {\n const params = new URLSearchParams();\n\n if (this.incidentTypeIds.count() > 0) params.set('incidentTypeIds', this.incidentTypeIds.join(','));\n if (this.locationIds.count() > 0) params.set('locationIds', this.locationIds.join(','));\n if (this.ownerIds.count() > 0) params.set('ownerIds', this.ownerIds.join(','));\n if (this.priorityIds.count() > 0) params.set('priorityIds', this.priorityIds.join(','));\n if (this.stateIds.count() > 0) params.set('stateIds', this.stateIds.join(','));\n if (this.dateTimeFrom) params.set('dateTimeFrom', this.dateTimeFrom.toString());\n if (this.dateTimeTo) params.set('dateTimeTo', this.dateTimeTo.toString());\n\n return params;\n }\n}\n","export type sortingParameter = 'displayId' | 'name' | 'location' | 'triggerTime' | 'state' | 'priority';\n\nexport type sortingOrientation = 'desc' | 'asc' | '';\nexport class IncidentSorting {\n constructor(public readonly parameter: sortingParameter = 'displayId', public readonly orientation: sortingOrientation = 'desc') {\n Object.freeze(this);\n }\n\n public with({ parameter, orientation }: { parameter?: sortingParameter; orientation?: sortingOrientation }): IncidentSorting {\n return new IncidentSorting(parameter ?? this.parameter, orientation ?? this.orientation);\n }\n\n public toString = (): string => `${this.parameter}.${this.orientation}`;\n\n public isDefault = (): boolean => this.parameter === 'displayId' && this.orientation === 'desc';\n}\n","import { List } from 'immutable';\nimport { IncidentFilter } from '../../models/incident-filter';\nimport { MCIncident } from '../../models/mc-incident';\nimport { IncidentSorting } from './../../models/incident-sorting';\n\nexport class IncidentPipelineParameter {\n public readonly incidents: List;\n public readonly filter: IncidentFilter;\n public readonly needRefresh: boolean;\n public readonly page: number;\n public readonly sorting: IncidentSorting;\n\n constructor(incidents = List(), filter = IncidentFilter.empty, needRefresh = true, page = 0, sorting = new IncidentSorting()) {\n this.incidents = incidents;\n this.filter = filter;\n this.needRefresh = needRefresh;\n this.page = page;\n this.sorting = sorting;\n Object.freeze(this);\n }\n\n public with({\n incidents,\n filter,\n needRefresh,\n page,\n sorting,\n }: {\n incidents?: List;\n filter?: IncidentFilter;\n needRefresh?: boolean;\n page?: number;\n sorting?: IncidentSorting;\n }): IncidentPipelineParameter {\n return new IncidentPipelineParameter(\n incidents ?? this.incidents,\n filter ?? this.filter,\n needRefresh === undefined ? this.needRefresh : needRefresh,\n page === undefined ? this.page : page,\n sorting ?? this.sorting\n );\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { List } from 'immutable';\nimport { isEqual } from 'lodash-es';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { BehaviorSubject, combineLatest, ConnectableObservable, defer, Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, publishReplay, retryWhen, shareReplay, switchMap, takeUntil, tap, withLatestFrom } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport {\n AlterationType,\n DescriptionChangedEvent,\n ExternalIdChangedEvent,\n IncidentEvent,\n IncidentEventType,\n LocationChangedEvent,\n LocationClearedEvent,\n OwnershipChangedEvent,\n PriorityChangedEvent,\n ProcedureStepAnsweredEvent,\n RecipientAlteredEvent,\n StateChangedEvent,\n TypeChangedEvent,\n} from '../../models/events/incident-event';\nimport { IncidentFilter } from '../../models/incident-filter';\nimport { IncidentSorting } from '../../models/incident-sorting';\nimport { MCIncident } from '../../models/mc-incident';\nimport { PossibleStateTransitionList } from '../../models/possible-state-transition-list';\nimport { ServiceState as OperationState, ServiceState, StateEnum } from '../../models/service-state';\nimport { retryWithConstantTime } from '../../utils/rxjs-utils';\nimport { McEventReceiverService } from '../events/mc-event-receiver.service';\nimport { StateService } from '../state/state.service';\nimport { IncidentApiService } from './incident-api.service';\nimport { IncidentHandler } from './incident-handler';\nimport { IncidentPipelineParameter } from './incident-pipeline-parameter';\n\nconst LIMIT = 100;\n\ninterface IncidentEntry {\n index: number;\n incident: MCIncident;\n}\n\n@Injectable()\nexport class IncidentService implements OnDestroy {\n private _fetchIncidentsOperationState$!: BehaviorSubject;\n private _serviceState$!: Observable;\n private _currentOffset = 0;\n private _pipeline$ = new BehaviorSubject(new IncidentPipelineParameter());\n private _totalIncidents$ = new BehaviorSubject(0);\n private _refresh$ = new Subject();\n private _stopObs$ = new Subject();\n\n constructor(\n private _eventReceiver: McEventReceiverService,\n private _incidentStateService: StateService,\n private _loggerService: LoggerService,\n private _incidentApiService: IncidentApiService,\n securityCenterProvider: SecurityCenterClientService\n ) {\n this.createServiceStateObservables();\n\n securityCenterProvider.scClient.onLogonStateChanged((args: LogonStateChangedArgs) => {\n if (args.loggedOn()) this.resetIncidentsPipeline();\n });\n\n const obs$ = this._refresh$.pipe(\n distinctUntilChanged((prev, curr) => {\n return prev.incidents === curr.incidents && isEqual(prev.filter, curr.filter) && prev.needRefresh === curr.needRefresh && prev.page === curr.page;\n }),\n switchMap((ipp) => {\n if (ipp.needRefresh) {\n return this.fetchIncidents(ipp).pipe(map((incidents) => ipp.with({ incidents, needRefresh: false })));\n }\n\n return of(ipp);\n }),\n tap((_) => {\n if (this._fetchIncidentsOperationState$.value.state !== StateEnum.Running) this._fetchIncidentsOperationState$.next(new ServiceState(StateEnum.Running));\n }),\n takeUntil(this._stopObs$),\n shareReplay(1)\n );\n\n obs$.subscribe(this._pipeline$);\n const events$ = _eventReceiver.getIncidentEvents().pipe(\n takeUntil(this._stopObs$),\n withLatestFrom(obs$),\n tap(async ([events, incidentParameter]) => await this.handleIncidentEvent(events, incidentParameter))\n );\n events$.subscribe();\n this.resetIncidentsPipeline();\n }\n\n ngOnDestroy(): void {\n this._stopObs$.next();\n }\n\n public get state$(): Observable {\n return this._serviceState$;\n }\n\n public get totalIncidents$(): Observable {\n return this._totalIncidents$;\n }\n\n public getIncidents(): Observable {\n return this._pipeline$.pipe(\n distinctUntilChanged((a, b) => a.incidents === b.incidents),\n map((x) => x.incidents.toArray())\n );\n }\n\n public getIncident = (id: IGuid): Observable => this._incidentApiService.getIncident(id);\n\n public getPossibleStateTransitions = (id: IGuid): Observable => this._incidentApiService.getPossibleStateTransitions(id);\n\n public applyFilter(filter: IncidentFilter): void {\n const parameters = this._pipeline$.getValue();\n this._refresh$.next(parameters.with({ filter, needRefresh: true, page: 0 }));\n }\n\n public applySorting(sorting: IncidentSorting): void {\n const parameters = this._pipeline$.getValue();\n this._refresh$.next(parameters.with({ sorting, needRefresh: true }));\n }\n\n public nextPage(): void {\n const parameters = this._pipeline$.getValue();\n if (this.isLastPage()) return;\n const page = parameters.page + 1;\n this._refresh$.next(parameters.with({ page, needRefresh: true }));\n }\n\n public previousPage(): void {\n const parameters = this._pipeline$.getValue();\n if (this.isFirstPage()) return;\n const page = parameters.page - 1;\n this._refresh$.next(parameters.with({ page, needRefresh: true }));\n }\n\n public getPage(): number {\n return this._pipeline$.getValue().page;\n }\n\n public isFirstPage(): boolean {\n const parameters = this._pipeline$.getValue();\n return parameters.page === 0;\n }\n\n public isLastPage(): boolean {\n const totalIncidents = this._totalIncidents$.getValue();\n return this._currentOffset === totalIncidents - LIMIT || totalIncidents <= LIMIT;\n }\n\n private createServiceStateObservables(): void {\n this._fetchIncidentsOperationState$ = new BehaviorSubject(new ServiceState(StateEnum.Unintialized));\n\n this._serviceState$ = combineLatest([this._fetchIncidentsOperationState$, this._eventReceiver.state$]).pipe(\n map((states) => {\n const errors = states.filter((ss) => ss.state === StateEnum.ErrorRetrying || ss.state === StateEnum.ErrorUnrecoverable);\n return errors.length > 0 ? errors[0] : states[0];\n }),\n distinctUntilChanged((prev, curr) => prev.state === curr.state && prev.error?.message === curr.error?.message),\n takeUntil(this._stopObs$),\n publishReplay(1)\n );\n\n (this._serviceState$ as ConnectableObservable).connect();\n }\n\n private fetchIncidents({ filter, page, sorting }: IncidentPipelineParameter): Observable> {\n const calculateOffset = (): number => {\n // Pages have LIMIT length and are overlapping at the middle.\n const currentTotalIncidents = this._totalIncidents$.getValue();\n let offset = page * (LIMIT / 2);\n if (currentTotalIncidents > LIMIT && LIMIT + offset > currentTotalIncidents) offset = currentTotalIncidents - LIMIT;\n return offset;\n };\n this._currentOffset = calculateOffset();\n\n return defer(() => this._incidentApiService.getIncidents(filter, sorting, this._currentOffset)).pipe(\n catchError((err) => {\n this._fetchIncidentsOperationState$.next(ServiceState.fromError(err));\n return throwError(err);\n }),\n retryWhen(retryWithConstantTime('Fetch incidents')),\n tap(([_, totalCount]) => {\n if (totalCount) {\n this._totalIncidents$.next(totalCount);\n }\n }),\n map(([incidents, _]) => incidents)\n );\n }\n\n private resetIncidentsPipeline() {\n this._refresh$.next(new IncidentPipelineParameter());\n }\n\n private async handleIncidentEvent(events: IncidentEvent[], pipelineParameter: IncidentPipelineParameter): Promise {\n for (const event of events) {\n try {\n const handleListEvent = async (pipeline: IncidentPipelineParameter, incident: IncidentEntry | null): Promise => {\n switch (event?.type) {\n case IncidentEventType.Created:\n // Put at least one incident in the list to force refresh\n return pipelineParameter.with({ needRefresh: true, incidents: List.of({} as MCIncident) });\n case IncidentEventType.StateChanged:\n return this.handleListStateChange(incident, event as StateChangedEvent, pipeline);\n case IncidentEventType.RecipientsAltered:\n return await this.handleListRecipientChange(incident, event as RecipientAlteredEvent, pipeline);\n case IncidentEventType.PriorityChanged:\n return this.handlePriorityChange(incident, event as PriorityChangedEvent, pipeline);\n case IncidentEventType.LocationChanged:\n return this.handleLocationChange(incident, event as LocationChangedEvent, pipeline);\n case IncidentEventType.DescriptionChanged:\n return this.handleDescriptionChange(incident, event as DescriptionChangedEvent, pipeline);\n case IncidentEventType.ExternalIdChanged:\n return this.handleExternalIdChange(incident, event as ExternalIdChangedEvent, pipeline);\n case IncidentEventType.ProcedureStepAnswered:\n return this.handleProcedureStepAnswered(incident, event as ProcedureStepAnsweredEvent, pipelineParameter);\n case IncidentEventType.OwnershipChanged:\n return this.handleOwnershipChange(incident, event as OwnershipChangedEvent, pipeline);\n case IncidentEventType.LocationCleared:\n return this.handleClearLocation(incident, event as LocationClearedEvent, pipeline);\n case IncidentEventType.IncidentTypeChanged:\n return await this.handleListIncidentTypeChange(incident, event as TypeChangedEvent, pipeline);\n }\n return pipeline;\n };\n\n if (!pipelineParameter.needRefresh) {\n const entry = pipelineParameter.incidents.findEntry((i) => i.id.equals(event.incidentId));\n const incidentToModify: IncidentEntry | null = entry ? { index: entry[0], incident: entry[1] } : null;\n pipelineParameter = await handleListEvent(pipelineParameter, incidentToModify);\n }\n\n const quarterLimit = LIMIT / 4;\n // Ensure list have enought elements when a lots of incidents are deleted at once.\n if (pipelineParameter.incidents.count() <= quarterLimit && this._totalIncidents$.getValue() > quarterLimit)\n pipelineParameter = pipelineParameter.with({ needRefresh: true });\n } catch (err) {\n this._loggerService.traceError(`Error ${err as string} occurred while processing event ${JSON.stringify(event)}.`);\n }\n }\n this._refresh$.next(pipelineParameter);\n }\n\n private handleListStateChange(incidentToModify: IncidentEntry | null, event: StateChangedEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n const states = incidentParameter.filter.stateIds.count() === 0 ? this._incidentStateService.getActiveStatesIds : incidentParameter.filter.stateIds;\n return this.handleEventWithFilter(incidentToModify, incidentParameter, event, event.stateId, states, IncidentHandler.stateChange);\n }\n\n private handlePriorityChange(incidentToModify: IncidentEntry | null, event: PriorityChangedEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n return this.handleEventWithFilter(incidentToModify, incidentParameter, event, event.priorityId, incidentParameter.filter.priorityIds, IncidentHandler.priorityChange);\n }\n\n private handleLocationChange(incidentToModify: IncidentEntry | null, event: LocationChangedEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n return this.handleEventWithFilter(\n incidentToModify,\n incidentParameter,\n event,\n event.location.entityId,\n incidentParameter.filter.locationIds,\n IncidentHandler.locationChange\n );\n }\n\n private handleDescriptionChange(\n incidentToModify: IncidentEntry | null,\n event: DescriptionChangedEvent,\n incidentParameter: IncidentPipelineParameter\n ): IncidentPipelineParameter {\n if (incidentToModify) {\n incidentParameter = incidentParameter.with({\n incidents: incidentParameter.incidents.set(incidentToModify.index, IncidentHandler.descriptionChange(incidentToModify.incident, event)),\n });\n }\n return incidentParameter;\n }\n\n private handleExternalIdChange(incidentToModify: IncidentEntry | null, event: ExternalIdChangedEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n if (incidentToModify) {\n incidentParameter = incidentParameter.with({\n incidents: incidentParameter.incidents.set(incidentToModify.index, IncidentHandler.externalIdChange(incidentToModify.incident, event)),\n });\n }\n return incidentParameter;\n }\n\n private handleProcedureStepAnswered(\n incidentToModify: IncidentEntry | null,\n event: ProcedureStepAnsweredEvent,\n incidentParameter: IncidentPipelineParameter\n ): IncidentPipelineParameter {\n if (incidentToModify) {\n incidentParameter = incidentParameter.with({\n incidents: incidentParameter.incidents.set(incidentToModify.index, IncidentHandler.currentStepChange(incidentToModify.incident, event)),\n });\n }\n return incidentParameter;\n }\n\n private handleOwnershipChange(incidentToModify: IncidentEntry | null, event: OwnershipChangedEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n return this.handleEventWithFilter(incidentToModify, incidentParameter, event, event.owner ?? null, incidentParameter.filter.ownerIds, IncidentHandler.ownerChange);\n }\n\n private handleClearLocation(incidentToModify: IncidentEntry | null, event: IncidentEvent, incidentParameter: IncidentPipelineParameter): IncidentPipelineParameter {\n return this.handleEventWithFilter(incidentToModify, incidentParameter, event, null, incidentParameter.filter.locationIds, IncidentHandler.clearLocation);\n }\n\n private async handleListIncidentTypeChange(\n incidentToModify: IncidentEntry | null,\n event: TypeChangedEvent,\n incidentParameter: IncidentPipelineParameter\n ): Promise {\n if (!incidentToModify) return incidentParameter;\n const newIncident = await this.getIncident(incidentToModify.incident.id).toPromise();\n if (newIncident) {\n const incident = IncidentHandler.incidentTypeChange(incidentToModify.incident, newIncident);\n return incidentParameter.with({ incidents: incidentParameter.incidents.set(incidentToModify.index, incident) });\n } else {\n this.decrementTotalIncident();\n return incidentParameter.with({ incidents: incidentParameter.incidents.delete(incidentToModify.index) });\n }\n }\n\n private async handleListRecipientChange(\n incidentToModify: IncidentEntry | null,\n event: RecipientAlteredEvent,\n incidentParameter: IncidentPipelineParameter\n ): Promise {\n if (!incidentToModify) {\n return incidentParameter.with({ needRefresh: true });\n }\n incidentToModify.incident = incidentToModify.incident.with({ recipientsMode: event.recipientsMode });\n switch (event.alterationType) {\n case AlterationType.Dispatch:\n case AlterationType.Forward: {\n return incidentParameter.with({\n incidents: incidentParameter.incidents.set(incidentToModify.index, IncidentHandler.recipientChange(incidentToModify.incident, event)),\n });\n }\n case AlterationType.Transfer: {\n const newIncident = await this.getIncident(incidentToModify.incident.id).toPromise();\n if (!newIncident) {\n this.decrementTotalIncident();\n return incidentParameter.with({ incidents: incidentParameter.incidents.delete(incidentToModify.index) });\n }\n return incidentParameter.with({ incidents: incidentParameter.incidents.set(incidentToModify.index, newIncident) });\n }\n }\n return incidentParameter;\n }\n\n private handleEventWithFilter(\n incidentToModify: IncidentEntry | null,\n incidentParameter: IncidentPipelineParameter,\n event: IncidentEvent,\n eventObjectId: IGuid | null,\n filterIds: List,\n actionToModify: (incident: MCIncident, event: any) => MCIncident\n ): IncidentPipelineParameter {\n const filtersAsString = filterIds.map((f) => f.toString().toUpperCase());\n const eventObjectIdsAsString = eventObjectId?.toString()?.toUpperCase() ?? '';\n if (!incidentToModify) {\n if (filtersAsString.includes(eventObjectIdsAsString) || event.isEventForSort(incidentParameter.sorting.parameter)) {\n return incidentParameter.with({ needRefresh: true });\n }\n } else if (\n (filterIds.count() > 0 && !filtersAsString.includes(eventObjectIdsAsString)) ||\n (!incidentParameter.sorting.isDefault() && event.isEventForSort(incidentParameter.sorting.parameter))\n ) {\n this.decrementTotalIncident();\n return incidentParameter.with({ incidents: incidentParameter.incidents.delete(incidentToModify.index) });\n } else {\n const incident = actionToModify(incidentToModify.incident, event);\n incidentParameter = incidentParameter.with({\n incidents: incidentParameter.incidents.set(incidentToModify.index, incident),\n });\n }\n return incidentParameter;\n }\n\n private decrementTotalIncident(): void {\n this._totalIncidents$.next(this._totalIncidents$.getValue() - 1);\n }\n}\n","export enum ProcedureStepActionType {\n Complete = 0,\n Skip = 1,\n Reset = 2,\n Previous = 3,\n Resume = 4,\n SystemComplete = 5,\n SystemPrevious = 6,\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { from, Observable, of, Subscription } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { EntityQuery } from 'RestClient/Client/Queries/EntityQuery';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { concatAll, map, tap, toArray } from 'rxjs/operators';\n\n@Injectable()\nexport class IncidentLocationService implements OnDestroy {\n private readonly _scClient: WebAppClient;\n private _entityById: Map = new Map();\n private _subscription?: Subscription;\n\n constructor(securityCenterProvider: SecurityCenterClientService, private _logger: LoggerService) {\n this._scClient = securityCenterProvider.scClient;\n }\n\n public ngOnDestroy(): void {\n this._subscription?.unsubscribe();\n }\n\n public getLocation(id: IGuid | string): Observable {\n if (!id) return of(null);\n const locationId = SafeGuid.from(id);\n if (locationId.isEmpty()) return of(null);\n\n const entity = this._entityById.get(locationId.toString());\n if (entity) return of(entity);\n\n return from(this._scClient.getEntityAsync(Entity, locationId)).pipe(map((x) => x ?? null));\n }\n\n public prefetch(ids: IGuid[]): Observable {\n const query = new EntityQuery();\n query.guids = SafeGuid.createSet(ids); // TODO: ***Not a cache***, it simply fixes the case where we ha cache miss on entities task\n return from(this._scClient.getEntitiesAsync(Entity, query)).pipe(\n concatAll(),\n tap((entity) => this._entityById.set(entity.id.toString(), entity)),\n toArray()\n );\n }\n}\n","import { EMPTY, from, Observable, of, Subject, Subscription, throwError } from 'rxjs';\nimport { GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { bufferTime, catchError, map, filter, tap, mergeMap, switchMap } from 'rxjs/operators';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { LoggerService } from '../../shared/services/logger/logger.service';\n\nclass EntityQuery {\n public entityId: IGuid;\n public observable$: Subject;\n\n constructor(entityId: IGuid, query: Subject) {\n this.entityId = entityId;\n this.observable$ = query;\n }\n}\n\nexport class BatchEntitiesObservable {\n private _classType: new () => Entity = Entity;\n private _startFetching$ = new Subject>();\n private _subscription$!: Subscription;\n private _entitiesObsMap = SafeGuid.createMap>();\n private _entityCache: IEntityCacheTask;\n\n constructor(scClient: WebAppClient, private _logger: LoggerService, timeToBuffer: number = 100, fields?: string[]) {\n this._entityCache = fields ? scClient.buildEntityCache(fields) : scClient.buildEntityCache();\n\n const accumulatedIds$ = this._startFetching$.pipe(\n bufferTime(timeToBuffer),\n filter((buffer) => buffer.length > 0)\n );\n\n this._subscription$ = accumulatedIds$\n .pipe(\n mergeMap((accumulatedIds) => this.fetching(new GuidSet(accumulatedIds.map((x) => x.entityId)), accumulatedIds)),\n tap(({ guidMap, queries }) => {\n for (const query of queries) {\n if (!query.entityId || !query.observable$) return throwError('Invalid query');\n\n const entity = guidMap.get(query.entityId) ?? null;\n if (entity) {\n query.observable$.next(entity);\n query.observable$.complete();\n } else {\n query.observable$.error('Entity was not found');\n }\n }\n }),\n catchError((e) => {\n this._logger.traceError(`Unable to process ids from the cache ${e}`);\n return EMPTY;\n })\n )\n .subscribe();\n }\n\n public registerEntity(id: IGuid | string): Observable {\n const entityId = typeof id === 'string' ? SafeGuid.parse(id) : id;\n const entity$ = new Subject();\n const query = new EntityQuery(entityId, entity$);\n this._startFetching$.next(query);\n return entity$.pipe(\n switchMap((x) => (x?.name ? of(x) : EMPTY)),\n catchError((_) => EMPTY)\n );\n }\n\n public async unsubscribe(): Promise {\n this._subscription$.unsubscribe();\n await this._entityCache.dispose();\n }\n\n private fetching(accumulatedIds: Set, queries: EntityQuery[]): Observable<{ guidMap: Map; queries: EntityQuery[] }> {\n return from(this._entityCache.getEntitiesAsync(this._classType, accumulatedIds, false)).pipe(\n map((entities) => {\n const guidMap = SafeGuid.createMap();\n entities.forEach((entity) => guidMap.set(entity.id, entity));\n return { guidMap, queries };\n }),\n catchError((err) => {\n this._logger.traceError(`BatchEntitiesObservable was unable to fetch entities ${[...accumulatedIds].join(', ')}. ${err}`);\n for (const id of accumulatedIds) {\n const entity$ = this._entitiesObsMap.get(id);\n if (entity$) {\n entity$.complete();\n this._entitiesObsMap.delete(id);\n }\n }\n return EMPTY;\n })\n );\n }\n}\n","import { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { CurrentUserInfo } from 'RestClient/Client/Parameters/CurrentUserInfo';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { from, Observable, Subject } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { map, switchMap, withLatestFrom, take, takeUntil, shareReplay } from 'rxjs/operators';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { LoggerService } from '../../shared/services/logger/logger.service';\nimport { BatchEntitiesObservable } from '../utils/batch-entities-observable';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\ninterface CurrentUser {\n userInfo: CurrentUserInfo;\n userGroup: Array;\n}\n\n@UntilDestroy()\n@Injectable()\nexport class McUserService implements OnDestroy {\n public currentUser!: CurrentUser;\n private userBatchObservable: BatchEntitiesObservable;\n private onDestroy$ = new Subject();\n private _scClient: WebAppClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService, logger: LoggerService) {\n this._scClient = securityCenterProvider.scClient;\n\n const fetchUserGroup = () =>\n this.fetchCurrentUserGroup()\n .pipe(untilDestroyed(this))\n .subscribe((x) => (this.currentUser = x));\n\n if (this._scClient.isLoggedOn) fetchUserGroup();\n\n this._scClient.onLogonStateChanged((args: LogonStateChangedArgs) => {\n if (!args.loggedOn()) return;\n fetchUserGroup();\n });\n\n this.userBatchObservable = new BatchEntitiesObservable(this._scClient, logger);\n }\n\n public ngOnDestroy() {\n void this.userBatchObservable.unsubscribe();\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n public getUserOrGroup(userId: IGuid | string): Observable {\n return this.userBatchObservable.registerEntity(userId);\n }\n\n public getUser(userId: IGuid | string): Observable {\n return this.userBatchObservable.registerEntity(userId).pipe(\n map((entity) => {\n if (entity.entityType === EntityTypes.Users) {\n return entity as IUserEntity;\n }\n throw new Error(`Entity with id ${userId} is not an user.`);\n })\n );\n }\n\n public isCurrentUserOwner(ownerId: IGuid | null): boolean {\n if (!ownerId) return false;\n return this.currentUser?.userInfo.id.equals(ownerId) ?? false;\n }\n\n private fetchCurrentUser(): Observable {\n return from(this._scClient.getCurrentUserInfoAsync());\n }\n\n private fetchCurrentUserGroup(): Observable {\n const userInfo$ = this.fetchCurrentUser().pipe(shareReplay(1));\n return userInfo$.pipe(\n take(1),\n switchMap((x) => this.getUser(x.id)),\n switchMap((x) => from(x.getUsergroupsAsync())),\n map((x) => x?.values() ?? []),\n withLatestFrom(userInfo$),\n map(([userGroup, userInfo]) => ({ userGroup, userInfo } as CurrentUser))\n );\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\n\nexport interface PriorityApi {\n Id: string;\n Name: string;\n}\n\nexport class Priority {\n constructor(public id: IGuid, public name: string) {}\n\n public static assign = (priority: PriorityApi): Priority => new Priority(toGuid(priority.Id), priority.Name);\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, ConnectableObservable } from 'rxjs';\nimport { map, publishReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { Priority, PriorityApi } from '../../models/priority';\nimport { McClient } from '../mc-client.service';\n\n@Injectable()\nexport class PriorityService implements OnDestroy {\n private _priorities$: Observable;\n private _refresh$ = new Subject();\n private _stopObs$ = new Subject();\n\n constructor(private _mcClient: McClient) {\n const obs = this._refresh$.pipe(\n switchMap(() => this.fetchPriorities()),\n takeUntil(this._stopObs$),\n publishReplay(1)\n ) as ConnectableObservable;\n obs.connect();\n\n this._priorities$ = obs;\n this._refresh$.next();\n }\n\n public ngOnDestroy(): void {\n this._stopObs$.next();\n }\n\n public getPriorities$(): Observable {\n return this._priorities$;\n }\n\n public refresh(): void {\n this._refresh$.next();\n }\n\n public getPriority(id: IGuid): Observable {\n return this._priorities$.pipe(\n map((priorities) => {\n return priorities.find((x) => x.id.equals(id));\n })\n );\n }\n\n private fetchPriorities(): Observable {\n return this._mcClient.getAll('v2/priorities').pipe(map((priorities) => priorities.map(Priority.assign)));\n }\n}\n","// Autogenerated: v2/help/enumerations/resources?codegen=ts on 2022-12-21 2:23:43 PM\n\nexport class Resources {\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTDELETEDB = 0;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE = 1;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATASERVER = 2;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBALREADYEXIST = 3;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBNAME = 4;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DSINCOMINGPORT = 5;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLETELNET = 6;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FAILEDCREATEDB = 7;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDDBNAME = 8;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_OVERWRITEDB = 10;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_PASSWORD = 11;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_SYSTEM = 13;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TELNETPORT = 14;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD = 15;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDGROUP = 16;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY = 17;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL = 18;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLOSE = 19;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT = 21;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIRMWARE_UPGRADE = 22;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT = 23;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOGS = 24;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OK = 25;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH = 26;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE = 27;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEARCH = 28;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_EDIT = 29;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_LOGOFF = 30;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_LOGON = 31;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_WINDOWS_CREDENTIALS = 32;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_FIRST = 33;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_FOURTH = 34;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_LAST = 35;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_SECOND = 36;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_THIRD = 37;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_DAY = 38;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_FRIDAY = 39;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_MONDAY = 40;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_SATURDAY = 41;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_SUNDAY = 42;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_THURSDAY = 43;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_TUESDAY = 44;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEDNESDAY = 45;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEEKDAY = 46;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEEKENDDAY = 47;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_APRIL = 48;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_AUGUST = 49;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_DECEMBER = 50;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_EVERYMONTH = 51;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_FEBRUARY = 52;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JANUARY = 53;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JULY = 54;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JUNE = 55;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_MARCH = 56;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_MAY = 57;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_NOVEMBER = 58;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_OCTOBER = 59;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_SEPTEMBER = 60;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_PERIODTYPE_ORDINAL = 62;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_PERIODTYPE_SPECIFIC = 63;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_TIMECOVERAGE_ALLDAY = 65;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_TIMECOVERAGE_RANGE = 66;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_DAILY_DAYS = 68;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_FUZZYDAILY_DAYS = 69;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_WEEKLY_DAYS = 70;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ADMINUSER = 71;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ADMINUSERGROUP = 72;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALWAYSCOVERAGE = 73;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWACCESSPOINT = 74;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWACCESSPOINTRULE = 76;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCOVERAGE = 77;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCREDENTIAL = 78;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWDEVICE = 79;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARTITION = 80;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPERSON = 81;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPERSONGROUP = 82;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUNIT = 83;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUSER = 84;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUSERGROUP = 85;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SERVICEUSER = 86;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SYSTEMCONFIG = 87;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SYSTEMSECTION = 88;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_USERSUSERGROUP = 89;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_NICKNAME = 90;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_SERIAL = 91;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DLG_CONNECT_INFO = 92;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINT = 93;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTRULE = 95;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_APPLICATION = 96;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_COVERAGE = 97;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CREDENTIAL = 98;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DEVICE = 99;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARTITION = 100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERSON = 101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERSONGROUP = 102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SYSTEMCONFIG = 103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UNIT = 104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UNKNOWN = 105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_USER = 106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_USERGROUP = 107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_VER = 109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_READY = 110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUDRATE = 111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL = 113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABIT = 115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATASTORE = 116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY = 117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTION = 118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_TYPE = 119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD = 124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_DELETEENTITY = 126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_APPLICATIONS = 129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_AREAS = 130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CREDENTIALS = 131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_DOORS = 132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ELEVATORS = 133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_PERSONGROUPS = 134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_PERSONS = 135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_SCHEDULES = 136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_UNITS = 137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_USERGROUPS = 138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_USERS = 139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_APPLICATIONS = 140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_AREAS = 141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CREDENTIALS = 142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_DOORS = 143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ELEVATORS = 144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_PERSONGROUPS = 145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_PERSONS = 146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_SCHEDULES = 147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_UNITS = 148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_USERGROUPS = 149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_USERS = 150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_HIDE = 151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HANDSHAKE = 157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME = 159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OF = 160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARITY = 161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD = 162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIODTYPE = 163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIALPORT = 166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPBIT = 167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THE = 168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMECOVERAGE = 169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TREEVIEW_DISPLAYCATEGORY = 171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TREEVIEW_TARGETFIELD_GROUPNAME = 176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERNAME = 180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CONNECT = 181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_DISCONNECT = 182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_HELP = 183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_HELP_ABOUT = 184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_RENAME = 187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM = 188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_CONNECT = 189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_DISCONNECT = 190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_EXIT = 191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_ERROR = 196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITIES = 198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITY = 199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SAVEMODIFIEDCONFIG = 200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_ADDR = 203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_SAVEMODIFICATIONS = 207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_CANCELLOGON = 210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_INFO = 211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOGGEDON = 212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOGONFAILURE = 213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOST = 214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_IDENTITY = 215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PROPERTIES = 216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TEST_WAZZA = 217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ABOUT = 218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADDCREDENTIAL = 219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIRMATION = 220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONNECT = 221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR = 222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FIRMWARE_UPGRADE_SELECT_LOAD = 225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME = 227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WARNING = 229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENTITYTYPEFILTER = 230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_ENTITY = 231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TITLE_CAPSLOCK = 234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_CREATIONDATE = 235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DESCRIPTION = 236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_FIRSTNAME = 237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_LASTNAME = 238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_NAME = 239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_PASSWORD = 240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PASSWORD = 241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PASSWORD_MODIFICATION = 242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PRIVILEGES = 243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMBERS = 244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEPARTMENT = 245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SEARCH = 246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGE = 249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU = 250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE = 251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLIESTO = 252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSPECIFIED = 256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDID = 257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACILITYCODE = 258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTSPECIFIED = 259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALLPERSON = 260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_VERSION = 261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERIAL_NUMBER = 262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ACCESSPOINTRULES = 263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ACCESSPOINTRULES = 264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_PERSON = 265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSONSAFFECTEDBYRULE = 266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSGRANTED = 267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSREFUSED = 268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNASSIGNEDCREDENTIAL = 269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNKNOWNCREDENTIAL = 270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGIN = 271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGOUT = 272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALLOPENRULE = 275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_LOCKDOWNRULE = 276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITS = 278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_CONFIG = 279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_GATEWAY = 280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_NETMASK = 281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_USE_DHCP = 282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_USE_STATIC = 283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERRESPONSETIMEOUT = 284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEREQUESTINTERVAL = 285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWSECTION = 289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SECTION = 290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DOORSIDE_A = 292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DOORSIDE_B = 293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SIDE = 295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_AREA = 296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_DOOR = 297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_ELEVATOR = 298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_OCCURRENCES = 299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_TIME = 300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ABORT = 301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IGNORE = 302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NO = 303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETRY = 304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_YES = 305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUTOCLOSE_MESSAGE = 306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOTIFICATIONS = 307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_SECTIONS = 309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_SECTIONS = 311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET = 312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_UPGRADE_PROGRESS = 313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWALARM = 314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ALARM = 315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ZONE = 316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ENTITY_HAS_BEEN_REMOVED = 318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FINISH = 320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ENTITY_HAS_BEEN_UPDATED = 322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MARRIEDCHANNELS = 323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_TYPE = 325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IP_ADDRESS = 326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEM = 327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS = 328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT = 329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_VERSION = 332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DISCOVERY = 335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_LICENSE = 336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_AFTER = 337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_BEFORE = 338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_BETWEEN = 339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AND = 341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_ENTITIES = 345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SECTIONS = 348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HARDWARE_MODEL = 350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_TOO_MANY_UNITS_DISCOVERED = 351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_TYPE = 352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITY_FROM_MEMBERSHIP = 353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE = 354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT = 355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_ACK = 356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_TRIGGERED = 357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ACTIONS = 358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_ACK = 359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_CUSTOMACK = 360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_NACK = 361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_TRIGGER = 362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SECURITYDESK_DISPLAY_ENTITY = 363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDMESSAGE = 365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_NONE = 366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_IPENDPOINT = 368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_SERVER = 369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_UNIT_TYPE = 370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_TYPE = 371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_SENT = 372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ALARMS = 374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY = 375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_TRIGGERALARM = 376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_RECIPIENTS = 378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATE = 379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ACTIVEALARMCOUNT = 381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ARCHIVEDALARMCOUNT = 382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATASERVERVERSION = 383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBVERSION = 384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENTITYCOUNT = 385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_IMAGES = 387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_PICTURE_FILE = 391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY = 394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE = 398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE_SEQUENTIAL = 399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE_SIMULTANEOUS = 400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY_HIGHEST = 401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY_LOWEST = 402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REACTIVATION_THRESHOLD = 403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENT = 404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYPAD_CODE = 407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_ACCESS_TO_CARDHOLDERS = 408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANT_ACCESS_TO_CARDHOLDERS = 411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_RULE_IS_ACTIVE = 412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DOOR_SIDE_NAME = 414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMACCESSRIGHTS = 415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMLICENSEKEY = 416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMVALIDATIONKEY = 417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_BADLICENSEFILE = 418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTOPENLICENSE = 419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTSAVECHALLENGE = 420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EXPIRATIONDATE = 421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDLICENSEFILE = 422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEALARM = 423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSECOMPANY = 424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEREADER = 425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPACKAGE = 426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPHONE = 427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESYSTEMID = 428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SUPPORTED = 429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEEXPIRED = 430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_PORTLOCK = 431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSENOTSTARTED = 433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_LAYOUT_NAME_ALARMS = 434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA = 439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_VI_STATE_LOGIN_ON = 447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_UNIT_INPUTS = 449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_LICENSEVALID = 452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DBLOST = 453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DBRECOVERED = 454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DEFAULTENTITIESFAILED = 455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NODBCONFIGURED = 456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_WRONGDBVERSION = 457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DAYS = 458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_VERSIONS = 460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD_CREDENTIAL = 462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_CREATE_ACCESS_RULE = 463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD_NEW_CARDHOLDER = 464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_OPENEDFORTOOLONG = 469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_VIEWENTITY = 470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ACTIVE = 473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_EXPIRED = 474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_INACTIVE = 475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_LOST = 476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_STOLEN = 477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATUS = 478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ASSIGN_TO_NEW_DOOR = 479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_CAPTION_DISCOVERY_PORT = 486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLYING = 487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTING = 488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DISCOVERY_PORT = 489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED = 490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCEEDED = 491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CLIENTCOUNT = 492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEVICETYPE_INPUTPIN = 493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED = 494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_DOORSENSOR = 498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_NONE = 499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_PULLSTATION = 500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX = 501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_WIZARD = 502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_CONNECTION_LOST = 503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_USER = 504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_BASIC_INFO_PAGE_SUBTITLE = 505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_BASIC_INFO_PAGE_TITLE = 506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_DESCRIPTION = 509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_SECTION_INFO = 510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_EXISTING_SECTION = 511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_USER_INFO_PAGE_TITLE = 512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_POSTCREATION_PAGE_TITLE = 515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECREATION_PAGE_SUBTITLE = 516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECREATION_PAGE_TITLE = 517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_NEW_ENTITY = 518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_COULD_NOT_ROLLBACK = 519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_FAILED = 520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_ROLLEDBACK = 521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCESSFUL_OPERATION = 522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_NAME = 523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CARDHOLDER = 524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CARDHOLDERGROUP = 525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_USERGROUP = 526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CARDHOLDER_INFO_PAGE_TITLE = 527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ALARM = 528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_AREA = 529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SCHEDULE = 530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SECTION = 531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_UNIT_INFO_PAGE_TITLE = 532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_END_POINT = 533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_UNIT = 534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_AUTOMATIC_CREATION_PAGE_TITLE = 535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_CREATION_MODE_PAGE_TITLE = 536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CREDENTIAL_CREATION_DESCRIPTION = 537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_AUTOMATICALLY = 538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_MANUALLY = 539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_CREDENTIALS = 540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CREDENTIAL_CREATION_DESCRIPTION = 541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_MANUAL_CREATION_PAGE_TITLE = 543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODE = 544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_ASSIGNMENT_PAGE_TITLE = 546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_CREDENTIAL_LATER = 547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_CREDENTIAL_NOW = 548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATED_ON_X = 549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_OF_CREDENTIAL_X = 550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_DISCOVERED_ON_X = 551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_INFO = 552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CREDENTIAL = 553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CARDHOLDER_CREDENTIAL_CREATION_PAGE_TITLE = 554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_LATER = 555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_NOW = 556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE = 559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_ACCESSPOINTRULE_INFO_PAGE_TITLE = 560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ACCESSPOINTRULE = 561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_DOOR = 562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_DOOR_INFO_PAGE_TITLE = 563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_UNIT_PORT_PAGE_TITLE = 564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_UNIT_PORT_RESULT_PAGE_TITLE = 565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_DOOR_HARDWARE_PAGE_TITLE = 566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SENSOR = 568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_PIN = 569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NONE = 570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION = 571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER = 572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_TO_EXIT = 573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLYCLOSED = 574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLYOPENED = 575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TYPE = 576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_REX = 577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORCLOSE = 579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOOROPEN = 580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_PULLSTATIONACTIVATE = 581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_PULLSTATIONNORMAL = 582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_PERSONACCESS = 585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_UNASSIGNED_CREDENTIAL = 586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ID = 587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT = 588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE = 589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_LAYOUTS_RENAME = 593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS = 594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CLEAREVENTS = 595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_EVENTFILTER = 596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_OPTIONS = 597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN = 598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_BRINGTOFRONT = 603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_NAME = 604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_NAME = 607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_PAGESIZE = 608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUAL_NAME = 609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_AREAINPERSONACCESS = 622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_AREAOUTPERSONACCESS = 623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_WIZARD_DEFAULTCREDENTIALNAME = 624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_NAME_CONNECTED = 627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_NAME_LOST = 628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_DEVICES = 629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ALARMS = 630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_DEVICES = 631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_ELLIPSIS = 632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ENTITY_SECTION = 633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USER_ALARM = 634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USER_APPLICATION = 635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_INFO = 637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ALARM_USER = 638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_UNIT = 639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_USER = 640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_AREA = 641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_MEMBERS = 643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_SCHEDULE = 644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_APR = 645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_CHILDREN = 646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_PARENTS = 647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_APR = 648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_CARDHOLDERGROUP = 649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_CREDENTIAL = 650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_APR = 651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_CHILDREN = 652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_PARENTS = 653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CREDENTIAL_CARDHOLDER = 654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_APR = 655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_AREA = 656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_UNIT = 657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SCHEDULE_APR = 658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_MEMBERS = 659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_PARENTS = 660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_RIGHTS = 661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_APPLICATION = 662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_DEVICE = 663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_DOOR = 664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUP_CHILDREN = 665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUP_PARENTS = 666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAPTURE_UNABLETOCONNECT = 667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CARDHOLDER_NAME_WALKTHROUGH = 668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_APPLICATION_NAME_CONNECTED = 669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_APPLICATION_NAME_LOST = 670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_CONNECTIONLOST = 671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_FAILED = 672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INSUFFICIENTPRIV = 673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDCREDENTIAL = 674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDDATASTOREVERSION = 675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_NEWBACKUPDS = 676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_OPERATIONTIMEOUT = 678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_SUCCESS = 679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_TRYCONNECT = 680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDTIME = 682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_WALKTHROUGH = 683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTTIME = 684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_RANGE = 685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_BY_REPORTING = 686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_INFO_PAGE_TITLE = 687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_MIXED_MODE = 688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_MODE = 689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_REALTIME = 690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_DOOR_WALKTHROUGH = 691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DOOR = 693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_NAME = 695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_DEVICE_DISCOVERY_PAGE_TITLE = 696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_DOOR_INFO_PAGE_TITLE = 697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_DOOR_CREATION_PAGE_SUBTITLE = 698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICTS_DETECTED = 699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_PRECREATION_PAGE_TITLE = 700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONFLICTS = 701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_DEVICE = 702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION = 703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK = 705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTRECORDING = 706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPRECORDING = 707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN = 708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET = 710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY = 712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_LEFT_PANE_CONSTRUCTION = 716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_LOGON_CONSTRUCTION = 717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_RIGHT_PANE_CONSTRUCTION = 718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_LOADING_LOGON_BAR = 726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_REGISTERING_FOR_PROXY_EVENTS = 729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS = 730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLER_ON_PORT_X = 731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_UNITS = 732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISCOVERY_ITEM_REMOVED_FROM_CHANGE_PORT_LIST = 733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_CARD = 734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AREAACTIVITY = 735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIALACTIVITY = 737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_DOORACTIVITY = 738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_PERSONACTIVITY = 740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_OPTIONS = 747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_UNIT_LOST = 755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN = 760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTOPRESET = 761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_FORCEOPEN = 762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EXPIREDCREDENTIAL = 765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INACTIVECREDENTIAL = 766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INACTIVEPERSON = 767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LOSTCREDENTIAL = 768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_STOLENCREDENTIAL = 769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FROM = 771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TO = 773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_RANGE = 774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS = 775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURS = 777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTHS = 778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKS = 780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YEARS = 781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_QUERY_RESULTCOUNT = 783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_QUERY_TIMEOUT = 784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_TIMESTAMP = 785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FALSE = 786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_NAME = 791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_ONLINE = 792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_UNIT = 794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRUE = 795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE = 796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_AREA = 797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_DIRECTION = 798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_TIMEOUT = 800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYCREDENTIAL = 803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYLOCATION = 804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYPERSON = 805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_TOOMANYRESULTS = 806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNKNOWN_ERROR = 808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_EXCEPTION = 809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISCELLANEOUS = 814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMQUERY_BASE = 815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_ACKBY = 819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL = 826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATIONDATE = 828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREAT = 830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRSTUSE = 831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NIET = 832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_ACTIVE = 833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_EXPIRED = 834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREAFTER = 836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PICTURE = 837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_NORMALLY = 838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTS = 841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DEENERGIZED = 842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENERGIZED = 843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_NOSELECTION = 845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_TITLE_NOSELECTION = 846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOROPENED_WHEN_LOCKED = 847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONFAILED = 848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONLOST = 849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONRESTORED = 850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_DELETE_DATABASE = 851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_RESTART = 853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_START = 854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_STOP = 855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_UNIT_RECOVERED = 856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_CONSOLE = 857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SEPARATOR_GENERAL = 861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CREDENTIALNOTUNIQUE = 862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GENERIC = 863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_LICENSE = 864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_USERALREADYEXIST = 865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GENERICFOREIGNKEYDELETE = 866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDELETE = 867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDEP = 868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFORMATION = 871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MESSAGE = 874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EMAILADD = 875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVERIP = 876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLEBACKUP = 881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EVERY = 882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AT = 884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP = 885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER = 886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE = 887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATIONFAILED = 888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_BACKUPFILE = 889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_KEEP = 890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_PLUGINS = 893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT = 900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTS = 901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACKED = 902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACTIVE = 903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MANUALACTIONEXECUTE = 904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBPATH = 905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EVENT_TIME_RANGE = 906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_EVENT_TIMESTAMP = 914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_RULE = 915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_SIDE_DIRECTION = 916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ACKNOWLEDGED_ON = 921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ACKNOWLEDGED_REASON = 922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_SOURCE = 926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_TRIGGER = 928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_TRIGGERING_TIME = 929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DURING_THE_LAST_X_Y = 930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_ACTIVITY_REPORT = 932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECK_ALL = 933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ACTIVITY_REPORT = 934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_LAST = 936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_RANGE = 938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNCHECK_ALL = 941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_DAY_S = 944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_HOUR_S = 945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_EQUAL_TO = 947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_GREATER_THAN = 948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_GREATER_THAN_OR_EQUAL_TO = 949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_LESS_THAN = 950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_LESS_THAN_OR_EQUAL_TO = 951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_MINUTE_S = 952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_MONTH_S = 953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_SECOND_S = 954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_WEEK_S = 955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_YEAR_S = 956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_TAMPER = 968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ARCHIVEDEVENTSCOUNT = 970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_RECURSIVE = 971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_APG = 972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDELETEALARM = 973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LICENSEERROR = 974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_REPORT = 979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_STATE = 981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONCLUSION = 982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_X_NOT_IN_ACTION = 983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_NOT_LINKED_TO_CARDHOLDER = 984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_STATE = 985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_ACCESS_POINT = 986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_ACCESS_POINT_RULE = 987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CARDHOLDER = 988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_COVERAGE = 989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CREDENTIAL = 990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DOES_NOT_TARGET_CARDHOLDER = 991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_NOT_BINDED_TO_SCHEDULE = 992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_ACCESS_NOT_GRANTED = 993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_ERROR = 994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_LIKELY_GRANTED = 995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_OK = 996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_UNKNOWN = 997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKING_ACCESS_RULE = 1001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_ALLOWED_CARDHOLDER_DURING_COVERAGE_X = 1002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DENIED_CARDHOLDER_DURING_COVERAGE_X = 1003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT = 1004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_AREA_X = 1005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_DOOR_X = 1006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE = 1007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKHARD = 1014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKMODE = 1015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKSOFT = 1017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKTIMEOUT = 1018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ANTIPASSBACK = 1019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_FIRSTMANIN = 1020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_LASTMANOUT = 1021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRICT = 1022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_AUTOUNLOCK_SCHEDULES = 1023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCK_COVERAGE = 1024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCK_EXCEPTION_COVERAGE = 1025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK = 1026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_SCHEDULED_LOCK = 1027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_SCHEDULED_UNLOCK = 1028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_GUESTACTIVITY = 1029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_REPORTPREVIEW = 1030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_GUEST = 1032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_FIRSTNAME = 1044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_LASTNAME = 1045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_SUPERVISORFIRSTNAME = 1046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_SUPERVISORLASTNAME = 1047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_VISITREASON = 1048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTSGROUP = 1050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR = 1052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_PIN = 1057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_COULD_NOT_DELETE_ENTITIES = 1062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_DOOR_SIDE_X = 1064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_DOOR_X = 1065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ONLINE_ACCESS_POINT_RULES = 1066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_AREA_X = 1069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_ENTRANCE_AREA_X = 1070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_EXIT_AREA_X = 1071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATION = 1076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AREAPRESENCE = 1092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_ALL = 1094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAPTION_DETAILS = 1095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTITLED = 1099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPANY = 1101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLTYPES = 1102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERSONLY = 1103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTSONLY = 1107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_UNIT_DISCOVERY = 1109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_UNIT_DISCOVERY = 1111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_COPYTOCLIP = 1118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_IMPORTFROMFILE = 1119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALID_LICENSE = 1120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_NO_LICENSE_FOUND = 1121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_PASTEFROMCLIP = 1122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SAVETOFILE = 1123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_VALID_LICENSE = 1124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORTS = 1128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_LICENSE = 1133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CARDHOLDERSTATUS = 1146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIALSTATUS = 1147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REPORTS = 1150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDEMAIL = 1151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE = 1152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK = 1153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORT = 1154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CT_EMAIL = 1156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_ACKED = 1157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_NACKED = 1160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_NONE = 1161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GUESTWIZARD_PHONENUMBER = 1163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR = 1164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORT_TOOMANYRESULTS = 1165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT = 1166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUERYING = 1167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SETOUTPUTDEVICE = 1175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_VISITORPERSONGROUP = 1177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_AFTERGRANT = 1178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_AFTERCLOSED = 1179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_WHILEOPENED = 1180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_JUMP_TO_CONFIG = 1190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_INVERTED_READER_LEDS = 1193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ANTIPASSBACK_FORGIVE = 1195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_APR_SCHEDULE_WILL_BE_OVERWRITTEN = 1196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_APR_SCHEDULE_REVERTED_TO_ALWAYS = 1197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REASSIGN_CREDENTIALS = 1198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ANTIPASSBACK_FORGIVEN = 1199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SECTION_INSERTION_FAILED = 1200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTION_INSERTION_FAILED_LIMIT_REACHED = 1202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_ADVANCED_MODE = 1203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_BASIC_MODE = 1204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_LIST = 1207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COMMIT = 1208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ROLLBACK = 1209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SERVICE = 1211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_SERVICE = 1212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NEXT_PAGE = 1217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PREVIOUS_PAGE = 1218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_SELECTED_ITEMS = 1219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LOGON = 1221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LOGOFF = 1222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REFRESH = 1223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENTITY_SEARCH = 1227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_ITEM = 1228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_ITEM = 1229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_PICTURE = 1230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_PICTURE = 1232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_PICTURE = 1233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LATER = 1234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EARLIER = 1235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_HIGH_RESOLUTION = 1236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_LOW_RESOLUTION = 1237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_ITEM = 1238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETE_ITEM = 1239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ITEM = 1240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORCE_DOOR_OPEN = 1241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_IN_TILE = 1242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXPAND_TILE = 1246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_FORWARD = 1248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_PLAY = 1249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_PAUSE = 1250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_REWIND = 1251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORGIVE_ANTIPASSBACK = 1255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_BOOKMARK = 1256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_STATE = 1257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIMELINE_ZOOM_IN = 1258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIMELINE_ZOOM_OUT = 1259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UPGRADE_UNIT = 1268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_DOOR = 1269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DESTROY_DOOR = 1270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHANGE_PORT = 1272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_DISCOVERY = 1273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_DISCOVERY = 1274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWAP_DOOR_SIDE = 1282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_ITEM_UP = 1285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_ITEM_DOWN = 1286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_DATABASE_INFO = 1287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTRICTEDINFO = 1289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITACTIVITY = 1296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DLG_DATABASEUPGRADE = 1300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETED = 1301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETEDWITHERRORS = 1302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR = 1307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_STARTED = 1309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_SUCCESS = 1310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_FAILURE = 1311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_WDMSG_OFFLINESYNC_FAILED = 1312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALL_PRIVILEGES = 1315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_APPLICATIONS = 1316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_PLAYBACK = 1317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALARM_MANAGEMENT = 1318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_DISPLAY = 1319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CREATE_NEW_LAYOUTS = 1320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_PATTERN = 1321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXPLICITLY_UNLOCK_DOORS = 1322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_RECORD_MANUALLY = 1323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ADD_BOOKMARK = 1324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VISITOR_MANAGEMENT = 1325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_CONTROLS = 1326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_CHANGE_FOCUS_AND_IRIS_SETTINGS = 1327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_DO_BASIC_OPERATIONS = 1328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_LOCK_PTZ = 1329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_USE_PRESETS = 1330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_EDIT_PRESETS = 1331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_GENERAL_PRIVILEGES = 1332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ACKNOWLEDGE_ALARMS = 1333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_OWN_PASSWORD = 1334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_REPORT_GENERATION = 1335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_EMPTYENTITYNAME = 1336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INVALIDIMAGEFILE = 1337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DB_UPGRADE_ITEM = 1338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TROUBLESHOOTER_ANTIPASSBACK = 1340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_FAILED_EMAIL = 1341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CLOSE = 1343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TRACK = 1345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO = 1350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUAL_DISPLAYINFO = 1351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_MAXEVENTS = 1353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSION = 1354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPERSON = 1356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSECONTROLLER = 1358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEANTIPASSBACK = 1361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEEMAIL = 1364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPEOPLECOUTING = 1366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESECTION = 1370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL = 1373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM = 1374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMS = 1375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUAL = 1376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CREDDENTIALLICENSE = 1387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GUESTLICENSE = 1388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_SHOWALARMPROCEDURE = 1406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COLLAPSE_TILE = 1408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFINITE = 1409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLIMITED = 1411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_CANNOT_UPGRADE_ENCRYPTED = 1412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_KEEP_INFINITE = 1413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ALLOW = 1419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DENY = 1420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_UNDEFINED = 1421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_INHERITEDFROM = 1422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TO_LC = 1425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESTATUS = 1429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE = 1432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER_EXPIRES = 1436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEINPUT = 1438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEOUTPUT = 1439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_CHANGEPASSWORD = 1440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_PASSWORD = 1441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NAME = 1446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE = 1447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_DROPPED_LOG = 1449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CAMERA = 1450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_EXTERNALSYSTEM = 1451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CAMERAS = 1452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_EXTERNALSYSTEMS = 1453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CAMERAS = 1454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_EXTERNALSYSTEMS = 1455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_LIVEBOOKMARK = 1456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_PLAYBACKBOOKMARK = 1457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_MOTIONON = 1458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_MOTIONOFF = 1459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_EXTERNALSYSTEM = 1461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEO_NAME = 1462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEO_DESCRIPTION = 1463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CAMERAS = 1467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXPORT_VIDEO = 1470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHED_ENTITIES = 1473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCAMERA = 1475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWEXTERNALSYSTEM = 1476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CAMERAACTIVITY = 1478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXECUTEMACRO = 1489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_EXTERNALSYSTEM_CAMERAS = 1491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPERTIES = 1492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARAMETERS = 1493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_EXTERNALSYSTEM_ALARMS = 1494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ALARM_EXTERNALSYSTEM = 1495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDSTRINGONSERIAL = 1502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUNPATTERN = 1503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETEALLLINKEDENTITIES = 1504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILEDTOIMPORT = 1505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOKMARK = 1508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATERN = 1509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_BYTE = 1511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_BYTES = 1512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_KBYTES = 1513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_MBYTES = 1514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_GBYTES = 1515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_TBYTES = 1516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_VIDEO = 1518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXECUTE_MACROS = 1519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXPORT_VIDEO = 1520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLIENTSIDE = 1521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERSIDE = 1522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILENAME = 1523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROGRESS = 1525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELAPSEDTIME = 1526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SAVEDIALOG_SELECTDESTINATIONFILE = 1527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDDATETIME = 1529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INPUT_TROUBLE_SHORT = 1530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INPUT_TROUBLE_OPEN = 1531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT = 1535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT = 1536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONFIGURED = 1538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTCONFIGURED = 1539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_PLUGINLOADED = 1540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_PLUGINNOTLOADED = 1541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONRESOLVED = 1542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONNOTRESOLVED = 1543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTED = 1544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONERROR = 1545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOVIDEO = 1547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNASSOCIATEDCAMERA = 1548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_ALARMTRIGGERED = 1549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_WIEGAND = 1551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_WIEGAND_X_BITS = 1552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_KEYPAD = 1553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_ZONE = 1554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ZONES = 1555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ZONES = 1556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ZONEACTIVITY = 1557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMEVENTS = 1558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATECUSTOMEVENT = 1559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITCUSTOMEVENT = 1560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMEVENT = 1561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE = 1562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIABLE = 1563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTVIEWERNOTINSTALLED = 1564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_ACIM_FIRMWARE_ARCHIVES = 1566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_OUTPUTBEHAVIOR = 1567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_OUTPUTBEHAVIORS = 1568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_OUTPUTBEHAVIORS = 1569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISCOVERY_ITEM_REMOVED_FROM_UPGRADE_LIST = 1570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_CAPTION_UPGRADE_UNIT_FIRMWARE = 1571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FIRMWARE_SELECTION_PAGE_TITLE = 1572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_SELECTED_FOR_UPGRADE = 1573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_OUTPUTBEHAVIOR = 1574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ZONE = 1575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_FIRMWARE_UPGRADE_FAILED = 1576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT = 1577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL = 1578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE = 1579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MS = 1580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE = 1581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIODIC = 1582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_ASSOCIATEDEVENTS = 1583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USAGE = 1585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH = 1586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMULA = 1587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR = 1588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDFORMULA = 1589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VARIABLE_X_NOTFOUND = 1590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OUTPUTBEHAVIOR_OUTPUTTYPE = 1591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MSEC = 1592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY = 1593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION = 1594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUTYCYCLE = 1595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIOD = 1596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_STARTED = 1597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_SUCCESS = 1598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_FAILURE = 1599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PROGESS_X = 1600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING = 1601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCELLED = 1602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNREACHABLE = 1603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CUSTOMEVENT = 1604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_INFO = 1605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_GLASSBREAK = 1606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_WINDOWOPENED = 1607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_WINDOWCLOSED = 1608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DEADBOLTLOCKED = 1609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DEADBOLTUNLOCKED = 1610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_KNOBINPLACE = 1611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_KNOBROTATED = 1612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_LOCKSECURED = 1613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_LOCKRELEASED = 1614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ZONETHRESHOLD = 1616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ZONEONLINEMODEONLY = 1617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGEROUTPUT = 1618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_HEALTH_WARNING = 1619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_WARNING_NONE = 1620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICASTSDKNOTINSTALLED = 1621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_MIXEDMODE = 1622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_UNITOFFLINE = 1623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PEOPLECOUNT_DISABLED_UNITOFFLINE = 1624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEEPS = 1626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNITBEEP_REX = 1627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNITBEEP_ACCESSGRANTED = 1628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEENCRYPTION = 1629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLEENCRYPTION = 1630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_UNIT = 1631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_ENTITIES = 1632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_ENTITIES = 1633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTITY_WARNING = 1634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAC_ADDRESS = 1637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNITSTATS_NUMCREDENTIAL = 1641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PROGRESS = 1642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOEXPIRATION = 1643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTSUPERVISED = 1646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_3STATESUPERVISED = 1647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_4STATESUPERVISED = 1648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACTIS = 1649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER = 1650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION = 1652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_HEALTH = 1653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINESYNCHRONIZATIONMODE = 1654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALONLY = 1655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC = 1656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY = 1657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONSCHEDULE = 1658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTCHANGEPASSWORD = 1661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALPHADOORSIDE = 1663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMEGADOORSIDE = 1664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_NACK = 1665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTUPDATE = 1666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZENOW = 1667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_MAINTENANCE_ON = 1669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_MAINTENANCE_OFF = 1670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_WARNING_UNITOFFLINE = 1672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SAVE_FILE_X = 1677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_START_TASK_X = 1679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SWITCH_DATABASE_X = 1680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_UNIT = 1681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_SPACE_FOR_FILE_TRANSFER = 1682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_DATABASE_CONFIGURATION_ERROR = 1683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAIN_MEMORY = 1684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECONDARY_MEMORY = 1685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_DETECTED = 1686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE = 1687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_PLURAL = 1688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REBOOT = 1691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE = 1692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUIT = 1693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLICKTOEDIT = 1695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALENTRY = 1698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_SYSTEM = 1699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_SYNERGISSECURITY = 1700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_ACCESSCONTROL = 1701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_NONE = 1710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_LOW = 1711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_MEDIUM = 1712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_HIGH = 1713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_URGENT = 1714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORETODEFAULT = 1715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NA = 1716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALSPREFIX = 1720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP = 1721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION = 1722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALSTATE = 1723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVESTATE = 1724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESTATE = 1725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OPERATOR_AND = 1726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OPERATOR_OR = 1727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLUGIN_TASKS = 1729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATIONDATE = 1731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_RECURSIVESECTION = 1732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERROR_RECURSIVEDETECTED = 1733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_TRANSLATED_HOST_ADDRESS = 1734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR = 1735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAUNCHQUERY = 1736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YES = 1739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO = 1740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_USE_TRANSLATED_HOST_IP = 1741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCEDURE = 1744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO = 1745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USERS = 1748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTED = 1749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPPED = 1750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKNOWLEDGE = 1751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NACKNOWLEDGE = 1752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO_CARDHOLDER = 1754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO_DOORAREA = 1755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBBROWSER = 1756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTRETRIEVECREDENTIALINFO = 1759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_VI_ERROR_OMNICASTSDKNOTINSTALLED = 1761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CONTACTING = 1762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_INITIALIZING = 1763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CREATED = 1764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENT_FAILED = 1765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_MAXIMUM_CREDENTIAL_LIMIT_REACHED_X = 1766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_APPROXIMATION_ONLY = 1767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_NOT_USING_EXPANSION_CARD = 1768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_UNIT_PROGRESS_PAGE_TITLE = 1769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNSPECIFIED = 1770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_ALREADYCONNECTED = 1771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_INVALIDPARAMS = 1772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNABLETOCONNECT = 1773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNITIDENTIFIERTIMEOUT = 1774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_INITFAILED = 1775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_SECURITYLAYERINITFAILED = 1776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNSPECIFIED = 1777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_INVALIDPARAMS = 1778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_MACADDRESSUNRETRIEVABLE = 1779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FIRMWAREVERSIONUNRETRIEVABLE = 1780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FIRMWAREVERSIONUNSUPPORTED = 1781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_CFGFILEUNRETRIEVABLE = 1782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COMMHOSTSUNRETRIEVABLE = 1783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COMMCFGUNRETRIEVABLE = 1784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDSAVECOMMCFG = 1785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDSAVECOMMHOSTS = 1786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDCONTACTGATEWAY = 1787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COULDNOTCONNECT = 1788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDQUERYINFO = 1789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDRETRIEVECONFIG = 1790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_ERROR_DISCOVERYPORTMISMATCH = 1791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_BUILDCARDS_FAILED_X = 1792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DOORONLINEMODEONLY = 1793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITNAME = 1794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_OFFLINE_SYNC_MULTI_TIMEZONE_ERROR = 1795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OFFLINESYNC_NOTENOUGHSPACE_XY = 1798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_CONFIGURATION_FILES_NOT_FOUND = 1799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_START_STOP_TASK_ERROR = 1801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COULD_NOT_SET_TIME = 1802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERTYPE = 1805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNEDCREDENTIAL = 1807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP = 1808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW = 1809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_SELECTED = 1811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPTALKING = 1814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTLISTENING = 1815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPLISTENING = 1816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TALK = 1817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTEN = 1818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENTERROR_UNITALREADYENROLLED = 1820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE = 1821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELD = 1822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDS = 1823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULTVALUE = 1826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANDATORY = 1827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITCUSTOMFIELD = 1828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT = 1829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMERIC = 1830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUERY_OPTIONS = 1832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN = 1833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHO = 1834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CREDENTIAL = 1836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CARDHOLDER = 1837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_CREDENTIAL = 1838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_WITH_NO_ACCESS = 1839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ACTIVE_CREDENTIAL = 1840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANTED_CARDHOLDERS = 1841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_DIAGNOSTIC = 1842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOLEAN = 1843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUES = 1844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATAENTRY = 1845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_NOINPUT = 1849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_DOUBLEINPUT = 1850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_NOTENOUGHVALUES = 1851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_PARSING = 1852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_LINEPARSED = 1853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_BOOL = 1854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_DECIMAL = 1855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_LONG = 1856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_ULONG = 1857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_CHAR = 1858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_STRING = 1859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_UNDEFINED = 1860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYTYPE = 1861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTCOLUMNS = 1864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_ACIM = 1865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_VERTX = 1866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_ION = 1867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_SIMULATION = 1868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_DOORSAREAS = 1869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATES = 1870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTS = 1871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCES = 1872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_MUST_START_WITH = 1877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_MUST_CONTAIN_WORD = 1878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECIMAL = 1879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSFILTER = 1880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_GUEST = 1882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACCESSPOINTSIDENAME = 1883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMNAME = 1884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDEREMAIL = 1885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERFIRSTNAME = 1886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERLASTNAME = 1887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERPICTURE = 1888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERNAME = 1889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALNAME = 1890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DEVICENAME = 1891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTID = 1892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTNAME = 1893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTTIME = 1894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITNAME = 1895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_AREA = 1896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESS = 1897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_DOOR = 1898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ZONE = 1899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITTYPE = 1901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_READERUNIQUE = 1902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEELEVATOR = 1903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR = 1904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN = 1905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTTOOL = 1906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNDELIMITER = 1907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECIMALDELIMITER = 1908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAMPLEVALUE = 1910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BINDING = 1911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALFORMAT = 1913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ELEVATOR = 1914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_FLOORS = 1915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETCUSTOMFIELDSVALUES = 1917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_STATUS = 1919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMACKBY = 1921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMACKTIME = 1923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CABIN_READER = 1924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMEXTERNALINSTANCEID = 1925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMINSTANCEID = 1926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMPRIORITY = 1927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMSOURCE = 1928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMTRIGGEREVENT = 1929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMTRIGGERTIME = 1930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CSVIMPORT = 1932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMAT26WIEGAND = 1934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10304 = 1935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10306 = 1936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10302 = 1937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERFIRSTNAME = 1938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERLASTNAME = 1939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERDESCRIPTION = 1940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERGROUP = 1941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERPICTURE = 1942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALNAME = 1943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDFACILITY = 1944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDCODE = 1945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDFORMAT = 1946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDEREMAIL = 1947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERSTATUS = 1948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_SUCCESS = 1950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOINPUT = 1951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_COLUMNNOTUNIQUE = 1952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_EXCEPTION = 1953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALIDDATATYPE = 1954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCOLUMNS = 1955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCARDHOLDERINFO = 1956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_PICTURENOTFOUND = 1957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THOUSANDSEPARATOR = 1960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTATLINE = 1961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_START = 1962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS = 1964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT = 1965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FINISH = 1966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL = 1967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START = 1968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_IMPORTTOOL = 1969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCATION = 1971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_SCHEDULE_EXCEPTION = 1977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_FLOORS = 1978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ELEVATORACTIVITY = 1983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ELEVATOR = 1984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_ONLINE_MODE_ONLY_UNIT_CAPABILITIES = 1985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ELEVATOR_FREEACCESS_ON_SCHEDULE = 1987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ELEVATOR_SECURED_ON_SCHEDULE = 1988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE = 1989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DOOR_ELEVATOR = 1990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOPARSEFILE = 1991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ACCESSPOINTS = 1992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ACCESSPOINTS = 1993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALIDCARDDATA = 1994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DOOR_SIDE_FLOOR = 1995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANTED_ACCESSPOINTS = 1996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSV = 1997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_CSVFILES = 1998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_ALLFILES = 1999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_REX_OFF = 2000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_ELEVATOR_OFFLINE_SYNC_ERROR_TOO_MANY_ELEVATORS = 2001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_PERIMETERONELEVATOR = 2002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_APPLICATIONNOTRUNNING = 2003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ALL_ACCESS_POINT_GROUPS = 2004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALL_ACCESS_POINT_NAMES = 2005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DATE = 2008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTALTIME = 2009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_WEEKDAY = 2010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_MONDAY = 2011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_TUESDAY = 2012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_WEDNESDAY = 2013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_THURSDAY = 2014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_FRIDAY = 2015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_SATURDAY = 2016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_SUNDAY = 2017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACFAIL = 2018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BATFAIL = 2019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_FLOOR_X = 2020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MONITOR_ACFAIL = 2021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MONITOR_BATFAIL = 2022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBO_BROWSEFORMORE = 2025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_ELEVATOR_ACCESS = 2026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPYTOCLIPBOARD = 2027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLICATION_SEMAPHORE = 2029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ELEVATOR_WARNING_UNITOFFLINE = 2030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTRICTEDINFOCREDENTIAL = 2031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TASKSCHEDULER = 2032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_TASKSCHEDULERS = 2033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_TASKSCHEDULERS = 2034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MACRO = 2035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_MACROS = 2036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_MACROS = 2037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MAP = 2038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_MAPS = 2039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_MAPS = 2040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_UNITSWAP = 2041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED_GRANT_TIME = 2042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE = 2045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALFORMAT = 2046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALCODE = 2047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTDESCRIPTION = 2049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_ADVANCED_CREDENTIAL_INFO = 2052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL_WOULD_BE_EXPIRED = 2054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL_COULD_BE_EXPIRED = 2055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUDITTRAILS = 2056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSVALUES = 2058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ID = 2060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MODIFICATIONTIME = 2061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USER = 2062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USEREMAIL = 2063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AUDITDESCRIPTION = 2066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITY = 2067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITYTYPE = 2068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_TIMEATTENDANCE = 2069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AUDITTRAILS = 2070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITIES = 2071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFIEDBY = 2072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_EXTENDED_GRANT_TIME = 2073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MACRO = 2074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_MACRO_SOURCE_CODE_FILE = 2075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_AUDITTRAILS = 2077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_TIMEATTENDANCE = 2078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_BUZZER = 2079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SOUND_BUZZER = 2080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SILENCE_BUZZER = 2081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_MACRO = 2082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_MAP = 2083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_TASK = 2084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_LANGUAGE = 2085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_SECURITY_LEVEL_AT_RUNTIME = 2086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MACRO = 2087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_PROPERTIES = 2088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_NOBINDING = 2089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLON_FORMAT = 2090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_DEFINITION = 2096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MACRO_VB = 2098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_CANNOT_OPEN_FILE_X = 2099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DEVICESDONTMATCH = 2100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTENSIONDONTMATCH = 2101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_MACROLICENSE = 2102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_IDALREADYEXIST = 2103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_RUN_MACROS = 2104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FROM_FILE = 2107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECK_SYNTAX = 2108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_X_COLUMN_Y = 2109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICALID = 2110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPILER_ERRORS = 2111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SDKCOUNT = 2113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SWAP_NEWUNITDISCONNECTED = 2114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SWAP_OLDUNITCONNECTED = 2115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MAP = 2116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_SYNTAX_IS_VALID = 2117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_NO_MACRO = 2118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_MULTIPLE_MACROS = 2119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOAD_MACRO = 2120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOAD_SDK = 2121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOCATE_MACRO = 2122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOCATE_BASE_CLASS = 2123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_MACRO_HAS_ERRORS = 2124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_UNKNOWN = 2125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_COMPILATION_ERROR_X = 2126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATETIME = 2127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MACRO_EXECUTION_CONTEXT = 2128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DEFAULT_EXECUTION_CONTEXT = 2129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_HAS_ERRORS_REVERTING_TO_ORIGINAL_STATE = 2130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_HAS_ERRORS_CHECK_SYNTAX_BEFORE_SAVING = 2131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUN_MACRO = 2132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ABORT_MACRO = 2133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICALNAME = 2134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_TASKSCHEDULER = 2135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_FULLTRUST = 2136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_LOCALINTRANET = 2137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_INTERNET = 2138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_MAP_FILE = 2139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MAPS = 2140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ADDITIONNAL_SETTINGS = 2142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NORMALLYOPENED = 2145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NORMALLYCLOSED = 2146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NOTSUPERVISED = 2147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_4STATESUPERVISED = 2148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_FIRMWARE_VERSION = 2149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_EEPROM_VERSION = 2150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_DOORBEHAVIOR = 2151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_CARDIN_CARDOUT = 2152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_CARDIN_FREEOUT = 2153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLUGIN_HOTACTIONS_NAME = 2155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_STARTED = 2156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_COMPLETED = 2157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_ABORTED = 2158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWINFREETILE = 2160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCEVIEWINTILE = 2161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGUREACTION = 2162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_EXECUTING_MACROS = 2163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_START_TIME = 2164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTIGATOR = 2165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONCE = 2167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERYMINUTE = 2168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURLY = 2169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAILY = 2170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKLY = 2171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECURRENCE = 2174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERY = 2178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CONTEXT = 2180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDEN_CONTEXT = 2181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_EDIT_MACRO_CONTEXT = 2182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_MACRO_CONTEXT = 2183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_BADGE = 2184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_BADGES = 2185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_BADGES = 2186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_BADGE = 2187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_REPORTTEMPLATES = 2188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_REPORTTEMPLATE = 2189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_REPORTTEMPLATES = 2190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_READER_SETTINGS = 2191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USECARDKEYPAD = 2192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDKEYPAD_TIMEOUT = 2193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CREDENTIALHASEXPIRED = 2194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CREDENTIALISEXPIRING = 2195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT = 2196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_SELECTPICTUREFROMDISK = 2197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_PICTUREBINDING = 2198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_ENTERLABELTEXT = 2199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_BADGENAME = 2200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MINTIME = 2201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREIN = 2202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_DEBOUNCE = 2203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOLS = 2206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILL = 2208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STROKE = 2209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STROKETHICKNESS = 2210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTRAIT = 2211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LANDSCAPE = 2212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZORDER = 2213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BORDER = 2214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BRINGTOFRONT = 2215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDTOBACK = 2216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_COMPLEMENTARYCREDENTIALNAME = 2217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CARDKEYPADERROR = 2218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CARDKEYPADMODE = 2219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTBADGEFORMAT = 2220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE = 2221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODE = 2222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERTEXTHERE = 2223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_INVALID_INTERFACE = 2224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK = 2225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VERTX_DOWNLOAD_INTERFACE_CODE = 2226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_VERTX_DOWNLOAD_INTERFACE_CODE = 2227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_EEPROM_X = 2228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_PROGRAM_X = 2229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALEXPIRING = 2230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FONT = 2231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_FLOOR_ACCESS = 2234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_INCIDENT = 2235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NOTES = 2236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREATEDBY = 2237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREATIONTIME = 2238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MODIFIEDBY = 2239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFERENCES = 2240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FILE = 2241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_FILES = 2242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_FILES = 2243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATENEWINCIDENT = 2245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITINCIDENT = 2246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE = 2247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_AREA = 2248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ZONE = 2249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ELEVATOR = 2250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NEW_FILE = 2251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_INCIDENTS = 2252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CREATEINCIDENTS = 2253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_MODIFYINCIDENTS = 2254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_INCIDENTS = 2255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE = 2258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAIL = 2261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_PRINT = 2262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCEMODE = 2263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOREQUESTEXIT = 2266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_TIMEATTENDANCE = 2267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERDESCRIPTIONHERE = 2268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDTO = 2269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOLD = 2270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITALIC = 2271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNDERLINE = 2272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATEINCIDENTONACK = 2273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT = 2274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_PDF = 2275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_EXCEL = 2276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_HTML = 2277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGNMENT = 2281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEFT = 2282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RIGHT = 2283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER = 2284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_DEVICENOTATTACHED = 2286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_DEVICENOTATTACHED = 2287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_BUTTON_RELAY = 2288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_TRACKING = 2289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DUPLICATE_KEYPAD = 2290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_KEYPAD_CODE_OUT_OF_RANGE = 2292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_ADDMEMBER = 2293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_REMOVEMEMBER = 2294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_MODIFYMEMBER = 2295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_SECOND = 2296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_MINUTE = 2297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITIPADDRESS = 2301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITTIMEZONE = 2302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITFIRMWAREVERSION = 2303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DELETED = 2304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR_RAISED_BY_MAP_CONTAINER = 2305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MEMBER = 2307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TYPE = 2308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ICON = 2309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITLIST = 2310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPACITY = 2316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTCOLOR = 2318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXTCOLOR = 2319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT = 2321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OK = 2322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMAGESIZETOOBIG = 2323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOGENERATEREPORT = 2324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_UNABLETOPROCESSREQUEST = 2325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REASON = 2326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_INCOMPLETEFILTER = 2327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAPVIEWER_MAPNOTFOUND = 2328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORTTOOL_UNABLETOACCESSSFILE = 2329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY = 2330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CREATEINCIDENT = 2331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME = 2332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE_OF_THE_HOUR = 2333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_EXECUTE = 2334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_CLEANUP = 2335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_CLEANUP_INNER = 2336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INCIDENTTIME = 2337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_NO_PRIVILEGE_TO_TRIGGER_ACTION = 2338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISION_MODE = 2339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTBADGE = 2340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_NOTIFICATION = 2342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_CONFIRM_HOT_ACTION_DELETION = 2345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_STATUS = 2346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_STATUS = 2347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_TOO_MANY_CONFIRMING_PINS = 2349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_HOT_ACTION_OBSOLETE = 2350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BACKUP = 2351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTCONNECTED = 2354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTINCTCREDENTIAL = 2355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAMEPERSONCREDENTIAL = 2356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CREDENTIAL2 = 2357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL2_COULD_BE_EXPIRED = 2358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL2_WOULD_BE_EXPIRED = 2359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL2_STATE = 2360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_GRANT_TIME = 2362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RULES = 2365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERING_EVENT = 2366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_DESCRIPTION = 2367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERED_BY = 2368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_SDK = 2369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CFDEFAULTVALUE = 2370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_SYSTEM_TYPE = 2371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_WRITEEEPROM_ERROR = 2372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_DISCOVERING_INTERFACES = 2375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_PRE_CONNECTION_TEST = 2378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_RESOLVING_IP_ADDRESS = 2379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_REFRESHING_EEPROM_VALUES = 2380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CONTACTING_THE_UNIT = 2381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CHECKING_FOR_MEMORY_EXPANSION = 2382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_RETRIEVING_CONFIGURATION_FILE = 2383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_QUERY_INTERFACE_STATUS = 2387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_NETWORK_CARD_NOT_BINDED = 2388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_WRONG_INTERFACE_VERSION = 2389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_INVALID_INTERFACE_EEPROM_VERSION = 2390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_INVALID_INTERFACE_PROGRAM_VERSION = 2391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_DHCP_UNIT_NOT_DISCOVERABLE = 2392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DHCP_UNIT_NOT_DISCOVERABLE = 2393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESSF1FORVERTXTROUBLESHOOT = 2394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER = 2396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER_CONNECTED = 2397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER_DISCONNECTED = 2398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATCORPORATE1000 = 2400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLLMENT_DEVICE = 2402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACTIVEDIRECTORY_NAME = 2403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACTIVEDIRECTORY_DESCRIPTION = 2404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ACTIVEDIRECTORY_CONFLICT_ASK_FOR_BACKUP = 2408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BROWSE_FOR_FILE = 2409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CONFLICT_MANIFEST = 2411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESSING_STEP_X_OF_Y = 2413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_DB_AFTER_CONFLICT_MANIFEST_ERROR = 2414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICT_MANIFEST = 2416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVEDIRECTORY_CONFLICT_RESOLUTION = 2417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEOSDK_NAME = 2420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE = 2424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMERATE = 2425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODERNAME = 2427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_TOO_MANY_AUTHENTICATION_AGENTS = 2429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_NO_AUTHENTICATION_AGENT = 2430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_AUTHENTICATION_AGENT_RESPONSE_TIMEOUT = 2431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACTIVE_DIRECTORY_LOGON = 2432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_VIDEO = 2433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACTIVE_DIRECTORY_LOGON_RESPONSE = 2434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY = 2436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_AUTHENTICATION_AGENT_IMPORT_FAILURE = 2438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BADGEDESIGNER_FRONT = 2439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BADGEDESIGNER_REAR = 2440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRINTDIALOGEXCEPTION = 2441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRETCH = 2442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_NONE = 2443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_FILL = 2444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_UNIFORM = 2445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_BADGES = 2447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_OVERRIDE_ON = 2448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_OVERRIDE_OFF = 2449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_LOCKDOWN_ON = 2450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_LOCKDOWN_OFF = 2451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CREATEDATABASE = 2452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_MULTIPLEUNIT_WARNING = 2453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_UNSUPPORTED_WARNING = 2454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_MAINTENANCE_MODE_WARNING = 2455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_FREEACCESS_WARNING = 2456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_ANTIPASSBACK_WARNING = 2457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_FLOOR_WARNING = 2458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CONFLICT_RESOLUTION = 2459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MULTIPLEREADERASSIGNMENT = 2460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_IN = 2461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_OUT = 2462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MAX_AREAID_REACHED = 2464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_PROPERTIES = 2465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APB_PROPERTIES = 2467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS = 2468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_PRIORITIZE = 2469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_OVERRIDE = 2470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_LOCKDOWN = 2471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON = 2472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFF = 2473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT = 2474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_ENTITIES = 2475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_EMAIL = 2476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DLG_SAVEMANIFEST = 2477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_NETWORK_CONNECTION_LOST = 2478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SORT_BYNAME = 2479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SORT_BYTYPE = 2480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SHOW_OFFLINE_ENTITIES = 2481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_TEXT_HINT = 2482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_CUSTOM_FILTER = 2483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_CLEAR_FILTER = 2484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS = 2485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS = 2486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_IMPORTEDGROUPS = 2487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_IMPORTGROUP = 2489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCUSERS = 2490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCCARDHOLDERS = 2491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_NOTRUNNING = 2492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_ERREUR = 2493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_IDLE = 2494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_INITIALIZING = 2495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DOWNLOADING = 2498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_UPDATINGCARDHOLDERS = 2499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_UPDATINGUSERS = 2500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_LINE2 = 2501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_CONNECTED = 2502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_NOTCONNECTED = 2503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_CANNOTAUTHENTICATE = 2504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_CANNOTFINDENTRY = 2505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_INVALIDREQUEST = 2506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_SERVERCONNECTION = 2507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_SERVERINVALIDCREDENTIALS = 2508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_UNKNOWN = 2509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE__ = 2510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HISTORY = 2511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_FEDERATION_NAME = 2514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_FEDERATION_DESCRIPTION = 2515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MINOPENTIME = 2516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_SUCCEESS = 2517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTING = 2518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTIONESTABLISHED = 2519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTIONLOST = 2520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_FAILED = 2521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INSUFFICIENTPRIVILEGES = 2522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INVALIDCREDENTIAL = 2523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INVALIDVERSION = 2524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_LICENSEERROR = 2525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_TIMEOUT = 2526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_SERVER = 2527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERANAME = 2528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXTERNALSYSTEMAME = 2529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_ARITHMETIC_EXCEPTION_X = 2530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACK_EXEMPTION = 2531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_STARTED = 2532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_COMPLETED = 2533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_ERROR = 2534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTION = 2535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_AUTOSTARTRECORDING = 2536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_AUTOSTOPRECORDING = 2537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_USERSTARTRECORDING = 2538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_USERSTOPRECORDING = 2539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ARCHIVEFILEDELETED = 2540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFLICT_RESOLUTION_DESCRIPTION = 2541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_TRIGGER_SYNCHRONISATION = 2542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_DETAILEDFOREIGNKEYDELETE = 2543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTIONSTARTRECORDING = 2544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTIONSTOPRECORDING = 2545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EXTERNALSTARTRECORDING = 2546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EXTERNALSTOPRECORDING = 2547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ALARMSTARTRECORDING = 2548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ALARMSTOPRECORDING = 2549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CASHREGISTER = 2550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CASHREGISTERS = 2551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_MOTION = 2552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_ARCHIVES = 2554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_BOOKMARKS = 2555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_POS = 2556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_THRESHOLD = 2564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_FRAMEHIT = 2565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_TIMEBETWEEN = 2566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMES = 2567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASKSAVELAYOUTS = 2568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVERASKAGAIN = 2569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOSTARTTIME = 2570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOENDTIME = 2571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_BITMAP = 2572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_JPEG = 2573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_CHOICE = 2575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_UNITS = 2576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_SPECIFIC = 2577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_ABBREVIATION = 2578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_NAME = 2580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_WITH_DATA = 2581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_FILE_FORMAT = 2583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_RESULTS_COUNT = 2585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER = 2588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS = 2589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CONTROLS = 2591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_FULL_PATH_ENTITY = 2592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SNAPSHOTS = 2594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTASSIGNED = 2595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNIT_ALREADY_EXISTS = 2596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_ALREADY_ASSOCIATED = 2601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVELAYOUTSONEXIT = 2604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONAPPLICATIONEXIT = 2605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASKUSER = 2606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_SPECIFIC_INFO = 2607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ = 2608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM = 2609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_VIDEO = 2610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_ACCESSCONTROL = 2611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_AUTHENTICATION = 2612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_AND_HARD_APB_MUTUALLY_EXCLUSIVE = 2615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_OVERRIDING_HARD_APB = 2616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONTROLLER_RUNNING = 2618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONTROLERDONTMATCH = 2619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_PNG = 2625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_GIF = 2626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_ROOTAREA_DESC = 2628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTENSION_SUBTYPES_DONT_MATCH = 2629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MUST_BE_CONTROLLED_BY_SINGLE_UNIT = 2630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_CAPTIVE = 2631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_WDMSG_OFFLINESYNC_COMPLETED_WITH_FAILURE = 2632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_SCHEDULE = 2633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_MODE = 2634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_DATE = 2635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_DATE = 2636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_POS = 2639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_EXTERNALSYSTEM = 2640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEDIRECTORY_MEMBERS = 2642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ACTIVEDIRECTORY_GROUPS = 2643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIND_ACTIVEDIRECTORY_GROUPS = 2644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTEDGROUPS = 2645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_DESTINATION_FOLDER = 2646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_FORMAT = 2647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ENCRYPT = 2648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMERANGE_SETTINGS = 2649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_SETTINGS = 2650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IN_PROGRESS = 2651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED = 2652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_SELECTIONS = 2653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_REMAINING = 2654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_SUCCESSFUL = 2655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_QUEUED = 2658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_CANCELLING = 2659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPONENT = 2660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_UNABLETOCREATECOMPONENT = 2661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_UNASSOCIATEDCAMERA = 2662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVEEXTERNALSYSTEM = 2663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVEEXTERNALSYSTEM_EX = 2664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVE_ES_INTERFACE = 2665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_BLOCKS = 2666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_IOCONFIG = 2669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IOCONFIGREPORT_COLUMNNAME_CONTRLLING = 2670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_WEB_CLIENTS = 2671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_CLIENT_COUNT = 2672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BIND_PICTURE_TO_CUSTOM_FIELD = 2675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_WRONG_BADGE_FORMAT = 2676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_CLOSE = 2683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_CONVERTING = 2684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_USE_PROFILE = 2685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_DELETE_INT_G64 = 2686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_DISPLAY_DATE_TIME = 2687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_AUDIO = 2688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_DISPLAY = 2689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_DISPLAY = 2693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_DISPLAY = 2697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_DISPLAY = 2701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_DISPLAY = 2705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_DISPLAY = 2709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_DISPLAY = 2717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_DISPLAY = 2721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_DISPLAY = 2725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_DISPLAY = 2733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_DISPLAY = 2737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_DISPLAY = 2741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_DISPLAY = 2745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_DISPLAY = 2749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_DISPLAY = 2753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_DISPLAY = 2757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_DISPLAY = 2761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_DISPLAY = 2765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_DISPLAY = 2769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_DISPLAY = 2773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_DISPLAY = 2777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_DISPLAY = 2781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_DISPLAY = 2785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_DISPLAY = 2789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_DISPLAY = 2793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_DISPLAY = 2797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_DISPLAY = 2801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_DISPLAY = 2805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_DISPLAY = 2809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_DISPLAY = 2813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_DISPLAY = 2817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_DISPLAY = 2821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_DISPLAY = 2825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_DISPLAY = 2829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_DISPLAY = 2833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_DISPLAY = 2837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_DISPLAY = 2841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_DISPLAY = 2845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_DISPLAY = 2849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_DISPLAY = 2853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_DISPLAY = 2857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_DISPLAY = 2861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_DISPLAY = 2865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_DISPLAY = 2869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_DISPLAY = 2873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_DISPLAY = 2877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_DISPLAY = 2881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_DISPLAY = 2885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_DISPLAY = 2889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_DISPLAY = 2893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_DISPLAY = 2897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_DISPLAY = 2901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_DISPLAY = 2905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_DISPLAY = 2909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_DISPLAY = 2913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_DISPLAY = 2917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_DISPLAY = 2921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_DISPLAY = 2925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_DISPLAY = 2929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_DISPLAY = 2933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_DISPLAY = 2937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_DISPLAY = 2941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_DISPLAY = 2945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_DISPLAY = 2949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_DISPLAY = 2953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_DISPLAY = 2957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_DISPLAY = 2961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_DISPLAY = 2965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_DISPLAY = 2969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_DISPLAY = 2973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_DISPLAY = 2977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_DISPLAY = 2981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_DISPLAY = 2985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UNKNOWN_ABBREVIATION = 2993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_STANDARDABBR = 2994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_DAYLIGHTABBR = 2995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_STANDARDABBR = 2996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_DAYLIGHTABBR = 2997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_STANDARDABBR = 2998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_DAYLIGHTABBR = 2999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_STANDARDABBR = 3000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_DAYLIGHTABBR = 3001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_STANDARDABBR = 3002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_DAYLIGHTABBR = 3003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_STANDARDABBR = 3004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_DAYLIGHTABBR = 3005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_STANDARDABBR = 3008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_DAYLIGHTABBR = 3009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_STANDARDABBR = 3010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_DAYLIGHTABBR = 3011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_STANDARDABBR = 3012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_DAYLIGHTABBR = 3013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_STANDARDABBR = 3016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_DAYLIGHTABBR = 3017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_STANDARDABBR = 3018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_DAYLIGHTABBR = 3019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_STANDARDABBR = 3020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_DAYLIGHTABBR = 3021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_STANDARDABBR = 3022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_DAYLIGHTABBR = 3023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_STANDARDABBR = 3024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_DAYLIGHTABBR = 3025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_STANDARDABBR = 3026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_DAYLIGHTABBR = 3027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_STANDARDABBR = 3028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_DAYLIGHTABBR = 3029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_STANDARDABBR = 3030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_DAYLIGHTABBR = 3031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_STANDARDABBR = 3032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_DAYLIGHTABBR = 3033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_STANDARDABBR = 3034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_DAYLIGHTABBR = 3035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_STANDARDABBR = 3036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_DAYLIGHTABBR = 3037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_STANDARDABBR = 3038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_DAYLIGHTABBR = 3039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_STANDARDABBR = 3040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_DAYLIGHTABBR = 3041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_STANDARDABBR = 3042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_DAYLIGHTABBR = 3043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_STANDARDABBR = 3044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_DAYLIGHTABBR = 3045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_STANDARDABBR = 3046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_DAYLIGHTABBR = 3047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_STANDARDABBR = 3048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_DAYLIGHTABBR = 3049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_STANDARDABBR = 3050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_DAYLIGHTABBR = 3051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_STANDARDABBR = 3052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_DAYLIGHTABBR = 3053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_STANDARDABBR = 3054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_DAYLIGHTABBR = 3055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_STANDARDABBR = 3056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_DAYLIGHTABBR = 3057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_STANDARDABBR = 3058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_DAYLIGHTABBR = 3059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_STANDARDABBR = 3060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_DAYLIGHTABBR = 3061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_STANDARDABBR = 3062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_DAYLIGHTABBR = 3063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_STANDARDABBR = 3064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_DAYLIGHTABBR = 3065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_STANDARDABBR = 3066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_DAYLIGHTABBR = 3067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_STANDARDABBR = 3068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_DAYLIGHTABBR = 3069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_STANDARDABBR = 3070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_DAYLIGHTABBR = 3071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_STANDARDABBR = 3072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_DAYLIGHTABBR = 3073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_STANDARDABBR = 3074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_DAYLIGHTABBR = 3075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_STANDARDABBR = 3076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_DAYLIGHTABBR = 3077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_STANDARDABBR = 3078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_DAYLIGHTABBR = 3079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_STANDARDABBR = 3080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_DAYLIGHTABBR = 3081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_STANDARDABBR = 3082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_DAYLIGHTABBR = 3083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_STANDARDABBR = 3084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_DAYLIGHTABBR = 3085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_STANDARDABBR = 3086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_DAYLIGHTABBR = 3087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_STANDARDABBR = 3088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_DAYLIGHTABBR = 3089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_STANDARDABBR = 3090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_DAYLIGHTABBR = 3091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_STANDARDABBR = 3092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_DAYLIGHTABBR = 3093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_STANDARDABBR = 3094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_DAYLIGHTABBR = 3095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_STANDARDABBR = 3096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_DAYLIGHTABBR = 3097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_STANDARDABBR = 3098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_DAYLIGHTABBR = 3099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_STANDARDABBR = 3100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_DAYLIGHTABBR = 3101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_STANDARDABBR = 3102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_DAYLIGHTABBR = 3103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_STANDARDABBR = 3104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_DAYLIGHTABBR = 3105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_STANDARDABBR = 3106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_DAYLIGHTABBR = 3107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_STANDARDABBR = 3108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_DAYLIGHTABBR = 3109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_STANDARDABBR = 3110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_DAYLIGHTABBR = 3111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_STANDARDABBR = 3112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_DAYLIGHTABBR = 3113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_STANDARDABBR = 3114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_DAYLIGHTABBR = 3115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_STANDARDABBR = 3116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_DAYLIGHTABBR = 3117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_STANDARDABBR = 3118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_DAYLIGHTABBR = 3119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_STANDARDABBR = 3120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_DAYLIGHTABBR = 3121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_STANDARDABBR = 3122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_DAYLIGHTABBR = 3123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_STANDARDABBR = 3124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_DAYLIGHTABBR = 3125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_STANDARDABBR = 3126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_DAYLIGHTABBR = 3127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_STANDARDABBR = 3128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_DAYLIGHTABBR = 3129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_STANDARDABBR = 3130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_DAYLIGHTABBR = 3131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_STANDARDABBR = 3132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_DAYLIGHTABBR = 3133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_STANDARDABBR = 3134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_DAYLIGHTABBR = 3135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_STANDARDABBR = 3136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_DAYLIGHTABBR = 3137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_STANDARDABBR = 3138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_DAYLIGHTABBR = 3139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_STANDARDABBR = 3140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_DAYLIGHTABBR = 3141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_STANDARDABBR = 3142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_DAYLIGHTABBR = 3143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_DISPLAY = 3144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_STANDARDABBR = 3148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_DAYLIGHTABBR = 3149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_DISPLAY = 3150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_STANDARDABBR = 3154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_DAYLIGHTABBR = 3155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_DISPLAY = 3156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_STANDARDABBR = 3160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_DAYLIGHTABBR = 3161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_DISPLAY = 3162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_STANDARDABBR = 3166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_DAYLIGHTABBR = 3167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_DISPLAY = 3168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_STANDARDABBR = 3172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_DAYLIGHTABBR = 3173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_DISPLAY = 3174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_STANDARDABBR = 3178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_DAYLIGHTABBR = 3179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_DISPLAY = 3180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_STANDARDABBR = 3184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_DAYLIGHTABBR = 3185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_DISPLAY = 3186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_STANDARDABBR = 3190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_DAYLIGHTABBR = 3191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_DISPLAY = 3192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_STANDARDABBR = 3196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_DAYLIGHTABBR = 3197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_DISPLAY = 3198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_STANDARDABBR = 3202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_DAYLIGHTABBR = 3203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_DISPLAY = 3217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_STANDARDABBR = 3220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_DAYLIGHTABBR = 3221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SNOOZE = 3222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SNOOZE_TIME = 3223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONSTARTUP = 3224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_EVENT_FILTERS_SELECTED = 3225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SNOOZE_ALARM = 3226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERACTION_OPTIONS = 3229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PLAY_SOUND = 3233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_TO_PLAY = 3234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_EVENT_FILTER_LABEL = 3235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLUP = 3236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLDOWN = 3237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_APPLICATIONLAUNCHER = 3238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FPS = 3239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KBPS = 3240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_PIXELS = 3241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACK_NEXT_FRAME = 3242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAVE_SNAPSHOT = 3245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRINT_SNAPSHOT = 3246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ON = 3249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_OFF = 3250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ABOUT_TO_STOP = 3251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ON_LOCKED = 3252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_OFF_LOCKED = 3253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_COMMAND_BAR = 3256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HIDE_COMMAND_BAR = 3257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_WDMSG_DEFAULT_AUDIO_CREATION_FAILED = 3259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_DISPLAY_REPORT_WARNING = 3260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_MESSAGE = 3261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_TIME_RANGE = 3262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_CONTINUE = 3263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_ENTITIES = 3264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKBOX_DISPLAY_AGAIN = 3265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVE_ALL_AVAILABLE = 3266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVE_SHOW_TIME = 3267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_PLAYING = 3269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_PAUSED = 3271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_FASTREVERSE = 3272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_BEGINREACH = 3274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_ENDREACH = 3275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CASHREGISTERS = 3279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERAS = 3280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LICENSEMAXENTITYEXCEEDED_FORMAT = 3281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTCOPYVALIDATIONKEY = 3282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTPASTELICENSE = 3283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_PAGES = 3284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RELATIVE_TIME = 3285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ABSOLUTE_TIME = 3286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_CONNECTING = 3288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_MODULE_LOADING = 3289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_REFRESHING = 3294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIME_RANGE = 3300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_LAYOUT_NAME_GUARDTOUR = 3302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITERIAS = 3303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUICKACCESS = 3304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWERLAYOUT = 3307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOOP_PLAYBACK = 3309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SLOW_MOTION = 3310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANLEFT = 3312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANRIGHT = 3313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILTUP = 3314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILTDOWN = 3315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOMIN = 3316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOMOUT = 3317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_SPEED = 3318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_NEAR = 3320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_FAR = 3321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_OPEN = 3322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_CLOSE = 3323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_HOME = 3324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FLIP = 3325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_LOCK = 3326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_SPECIFIC_COMMANDS = 3327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_GOTO = 3328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_SET = 3329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERN_RUN = 3330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERN_REC = 3331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUX_SET = 3332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUX_CLEAR = 3333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUXILIARIES = 3334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETS = 3335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERNS = 3336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO = 3338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITAUDIO = 3339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE = 3340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_CREDENTIALS = 3341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REQUIREDFIELDEMPTY = 3344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERRORONTAB = 3347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATE_REPORT_OVERWRITE = 3349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRINT = 3350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_BADGE_BATCH_PRINTING = 3351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BATCH_BADGE_PRINTING = 3354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PEOPLE_COUNT_RESET = 3356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_PEOPLE_COUNT = 3357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_WIEGAND = 3358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_CLOCK_AND_DATA = 3359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_TYPE = 3360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_XML = 3361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NAME_DUPLICATES = 3362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_CARD_FORMATS = 3364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DATA = 3365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_WIEGAND_DORADO = 3366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_CLOCK_AND_DATA_DORADO = 3367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR = 3368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTSAVE = 3369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVINGLAYOUTS_INFORMATIVE = 3370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OVERWRITE = 3371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTBACKUP = 3372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTIVE = 3373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIMETER = 3374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MODIFY = 3376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTAPPLY = 3380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONTINUE = 3381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ASSIGN = 3382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTASSIGN = 3383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTOVERWRITE = 3384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_CARD_FORMAT = 3385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_ID_DUPLICATES = 3386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_LENGTH = 3387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_MASK_EXCEEDED = 3388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_ID_MANDATORY = 3389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NAME_MANDATORY = 3390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FORMATFIELD_MANDATORY = 3391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_MASK_DUPLICATES = 3392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_SIZE_EXCEEDED = 3393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_NAME_MANDATORY = 3394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATMULTIPLE = 3395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_OCCURED = 3396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_SAVED = 3397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERACTION = 3399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTION_STATUS = 3400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_STATUS = 3401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTIONSTATUS_CONNECTED = 3402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTIONSTATUS_NOTCONNECTED = 3403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE = 3404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING = 3405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARCHIVEPREVIEW = 3406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONSTATUS_CONNECTED = 3408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONSTATUS_NOTCONNECTED = 3409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTION_STATUS = 3410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_STATUS = 3411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTRETRIEVESNAPSHOT = 3413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACCESSCAMERA = 3414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_GENERAL = 3417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_NOT_UNIQUE = 3418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_ORDER_INVALID = 3419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_ORDER_CONFLICT = 3420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXEDFIELD_VALUE_INVALID = 3421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_ABA = 3422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITERFIELD_MANDATORY = 3423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITERFIELD_MAXLENGTH = 3424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SIZEDABAFIELD_LENGTH_EXCEEDED = 3425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SIZEDABAFIELD_LENGTH_INVALID = 3426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABAFORMATFIELD_SIZE_EXCEEDED = 3427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITEDABAFIELD_MAXLENGTH = 3428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_WIEGAND = 3429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NON_WIEGANDFIELD = 3432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NON_ABAFIELD = 3433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_PARITY = 3434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARITYFIELD_VALUE_INVALID = 3435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDOPTION_FORMAT = 3436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDOPTIONS_FORMAT = 3437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_WEB_PAGES = 3438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRODUCTORY_DELIMITER = 3439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETING_ENTITIES = 3440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DELIMITER_ELLIPSIS = 3441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_EVENT_FILTER_SELECTED = 3442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVING_PLEASEWAIT = 3443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_LARGE_FILE_WARNING_X = 3447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITEDABAFIELD_DELIMITER_MANDATORY = 3448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITER_DELIMITER_MANDATORY = 3449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARITYCHECK_TYPE_MANDATORY = 3450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CODE_STRING_INVALID = 3451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_SELECTOR = 3453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_DASHBOARD = 3454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEN = 3462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECT = 3463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERASER = 3464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT = 3465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTERNALSYSTEM_CANNOT_DELETE_USING_IMPORTEDUSER = 3471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_INVESTIGATION = 3473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_MAINTENANCE = 3474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_ACCESS_CONTROL = 3475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_ENTITY = 3476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_ENTITIES = 3477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE = 3479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SAVE_SNAPSHOT_FILTER = 3480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_HOUR = 3481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_DAY = 3482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_VIEW = 3483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CUSTOM_SIZE = 3485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_SIZE = 3486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CUSTOM_BADGE_SIZE = 3487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENGTH = 3488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDTH = 3489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_INCHES_ABBREV = 3491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_NAME = 3493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFINITION = 3494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYOUT_OPTIONAL = 3495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_GROUP = 3496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_USAGE_NOTIFICATION = 3497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_SPACE = 3499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_USAGE = 3500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GB_REMAINING = 3501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_RANGE = 3502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABSOLUTE_TIME_RANGE = 3503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_FILTER = 3504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MEMBER_OF = 3512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARDHOLDER_GRANTED_ACCESS_BY = 3513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARDHOLDER_DENIED_ACCESS_BY = 3514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TRIGGER = 3515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRIGGER_OUTPUT_BEHAVIORS = 3516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_OUTPUT_BEHAVIORS = 3517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTS = 3518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_INPUTS = 3519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPAND_CARDHOLDER_GROUPS = 3525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_ACTIVE = 3530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_TROUBLE_SHORT = 3531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_TROUBLE_OPEN = 3532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCESS_TYPE = 3533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS_RULE = 3534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TYPE_GRANTED = 3536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TYPE_DENIED = 3537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH = 3540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLLEFT = 3543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLRIGHT = 3544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERPARTITION = 3546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALPARTITION = 3547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALSTATUS = 3548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ZONES_UPDATED = 3549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE = 3550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_PERIMETER_ENTITIES = 3552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALUE_MUST_BE_BETWEEN = 3553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_VALUE = 3555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS = 3556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_LOGICALID = 3557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_PLAYBACK_RESTRICTED = 3563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION_NUMBER = 3564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPLOYEE_NUMBER = 3565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AMOUNT = 3566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDIT_CARD_NUMBER = 3567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYWORDS = 3568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIONSHIPS = 3571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTRICTED_INFO_ON_READER = 3572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_SINGLEINSTANCEEXTERNALSYSTEM_ALREADY_EXISTS = 3573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOG_PTZ = 3574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_SYNCHRONIZE = 3575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY_AND_SYNC = 3576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DO_NOT_SYNC = 3577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROCESSING_PLEASE_WAIT = 3581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_RULE = 3582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CASH_REGISTER_NAME = 3583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CASHREGISTERS = 3585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTERNAL_SYSTEM_DELETION_MAY_TAKE_A_LONG_TIME = 3586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ACTIVEDIRECTORIES = 3587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_RESET = 3589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CAMERA = 3590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESET_CONNECTION = 3591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_NOT_PROVIDED = 3592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_PROVIDED = 3593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATA = 3594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOTENOUGHFREETILES = 3595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_REFUSED_BY_UNIT = 3598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_CONNECTION_TIMED_OUT = 3599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_FORCED_OPEN_GRACE_PERIOD = 3600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_FORCED_OPEN_GRACE_PERIOD = 3601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_NAME_LAST_NAME_ORDERING = 3602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_COLUMNS = 3603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTIONS_ARE_APPLICABLE_WITH_UNLOCKING_SCHEDULES_ONLY = 3605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_BEING_ENROLLED = 3606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CARDHOLDER_MANAGEMENT = 3607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM = 3608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONAL_UPGRATE_STEP = 3609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_VIDEOARCHIVES = 3610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FILENAME = 3612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FILESIZE = 3613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCATE_FILE_X = 3614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANIMPORTENTITIES = 3616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION = 3617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_TRANSACTION_AVAILABLE = 3618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_OPERATOR_SEQUENCE = 3619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_CLOSING_QUOTE = 3620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_KEYWORDS_REACHED = 3621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL = 3622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMERIC_VALUES_INVALID = 3623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPLOYEE = 3624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OPERATOR_AND = 3625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OPERATOR_OR = 3626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COPYSTANDALONEAP = 3629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CREATEAUTORUN = 3630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SAAP_UNKNOWNERROR = 3633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATIONPATH = 3636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION = 3637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_SETTINGS = 3638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_IN_PROGRESS = 3639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UPGRADETOFEDERATION = 3641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CUSTOM_CARD_EDITOR = 3642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK = 3643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_LENGTH = 3644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_LENGTH = 3645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELIMITER = 3646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODE_FORMAT_STRING = 3647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_FORMAT_TYPE = 3648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_ABA = 3649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_LENGTH = 3650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BIT_POSITION = 3651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_XML = 3652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT_XML = 3653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VALIDATE_WITH_CREDENTIALS = 3654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARACTERS = 3656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ERRORDLG_HEADER = 3657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ERRORDLG_FOOTER = 3658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILEDTOEXPORT = 3659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_FIELD = 3660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_PARITY_CHECK = 3661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FORMAT_LENGTHS_NO_MATCH = 3662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CREDENTIAL_NO_MATCH = 3663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_AMBIGUOUS_MATCHES = 3664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDFORMAT_VALIDATION_SUCCESS = 3665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_INVALID_CREDENTIAL = 3666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDFORMAT_CHANGE_TYPE = 3667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_INVALID = 3668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CORRECT_ERRORS = 3669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DELIMITED_ABA_FIELD = 3670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SIZED_ABA_FIELD = 3671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DELIMITER_ABA_FIELD = 3672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIEGAND_FIELD = 3673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELIMITED = 3674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZED = 3675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIXED_VALUE = 3677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARITY_CHECK = 3678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ODD = 3680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVEN = 3681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARITY_BIT = 3682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_MASK_MANDATORY = 3683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_MASK_INVALID = 3684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_VALUE_MANDATORY_ON_FIXED_FIELDS = 3685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_UNIQUE_PARITY_CHECK = 3686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FIELDS_LENGTH_GREATER_THAN_CARD_LENGTH = 3687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICKHEREMOREINFO = 3690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_STARTED = 3692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHING_GROUPS = 3695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MULTIPLE_GROUPS_FOUND = 3696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_GROUP_NAME = 3697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_THAN_ONE_GROUP_MATCHED = 3698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_RECORDING = 3699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_RECORDING = 3700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDFOLDER = 3701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MUST_PAUSE_TO_SCROLL = 3703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCROLL_BACK = 3704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCROLL_FORWARD = 3705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MESSAGE = 3706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXPORT_INVALIDDIRECTORY = 3712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CONVERT = 3717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_ACTIVE_DIRECTORY_USE_SERVICE_CREDENTIALS = 3718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CASHREGISTERS = 3723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CHILD_PARTITIONS = 3724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUPS = 3725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONVERSION_STATUS_INPROGRESS = 3726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PTZ_SPEED = 3727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTES = 3729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECONDS = 3730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CASH_REGISTER_EXTERNAL_ID = 3737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_ICON_AND_FIELD_NAME = 3739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTOREFILE = 3744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_LOCK_NOT_PREFERRED_OUTPUT = 3745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_CUSTOM_FIELDS = 3746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXTERNALSYSTEM_UPGRADE_NOTE = 3747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARACTER_ENCODING = 3748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ELEVATOR_CONTROLLED_BY_MULTIPLE_UNITS = 3749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIBLE_TO_ADMINISTRATORS = 3750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DESCRIPTION = 3751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONS_DATETIME = 3752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS = 3753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP = 3754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOM = 3755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASKBAR = 3759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TASKBAR_POSITION = 3761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE = 3762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_OPTIONS = 3763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOMEMENU_CATEGORY_CONFIGURATION = 3767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR_DELETING_TEMPLATE = 3769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CANCEL = 3773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNDO_MODIFICATION = 3774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_WEBCAM = 3776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_INVALID_COLLATION_SERVER = 3778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_INVALID_COLLATION_DATABASE = 3779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_SYSTEM_MESSAGES = 3783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_ADMINISTRATION_TASKS = 3784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_ALL_DEVICES_INSIDE_UNIT = 3786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_NETWORK_OPTIONS = 3792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_PLAYSOUND = 3793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_DISPLAYOVERLAID = 3794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_SWITCHALARMMONITOR = 3795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_ALARMHANDLED = 3796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_GBHEADER = 3797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_RENAME = 3803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCREDENTIALINFO = 3804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_PICTURE_SIZE = 3805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_CREDENTIAL_AS_KEY = 3806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY = 3807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUT = 3809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY = 3810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE = 3811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALID_PICTURE_FORMAT = 3812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_PROGRESS = 3813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_BATCH_PROGRESS = 3814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEIGHT = 3820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEASUREMENT_UNIT = 3822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_BADGE = 3828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACK_BADGE = 3829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZE = 3830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_INCHES = 3831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILLIMETERS = 3832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_CATEGORY_OPERATIONS = 3834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_CATEGORY_ADMINISTRATION = 3835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_ALARM_MONITORING = 3836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BARCODE_UNSUPPORTED_CHARACTER = 3837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_CODE39 = 3838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_CODE39EXTENDED = 3839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_I25 = 3840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_INCLUDE_CHECK_DIGIT = 3842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BARCODE_SHOW_FOOTER = 3843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_ENTER_BARCODE_TYPE = 3844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_ALARMQUERYRESULTS = 3845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_SAVEWORKSPACE = 3848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TASK_TEMPLATES = 3849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CPUUSAGE = 3851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NOTIFICATIONS_MESSAGE_COUNT = 3852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_ALARMPROCEDURE = 3853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_MUTED_VOLUME_TOGGLE = 3854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_UNMUTED_VOLUME_TOGGLE = 3855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CREATED = 3856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PRIVILEGES = 3857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN_VIDEO = 3860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_SYSTEM = 3865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_SYSTEM = 3866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_TILES_ONLY = 3867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_OPTIONS = 3868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC = 3870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE = 3871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERVAL = 3872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_ALLTASKS = 3874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_SYNCHRONIZATION_TASK = 3875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FILTER_CRITERION = 3878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK = 3880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUALS_ASKFORTASKNAME = 3881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC = 3882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_OPTIONS = 3883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAITING_FOR_SIGNAL = 3884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FAILURE_DIAMOND_FEDERATION = 3885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PROCESSING_CONFLICT_MANIFEST = 3886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILES = 3888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_PARTIAL_RESULT = 3889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_DISPATCH_FAILED = 3890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_ERRORS_OCCURED = 3891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONS_DATETIME_OPTIONS = 3892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_OVERRIDDEN_ENTITIES = 3893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_OVERRIDE = 3894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_SUFFIX = 3895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEDERATED_CREDENTIAL_CONFLICT = 3896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROXY_DENIED_MODIFICATIONS = 3897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTS_OPTIONS = 3898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_TEMPLATE = 3899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRAY = 3901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACK = 3902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNPACK = 3903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMCONTENTVIEWER_INSTANCE = 3904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_TROUBLESHOOT_FEDERATED_LOCATIONS = 3905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVE_EVENT = 3907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DELETING_OBSELETE_CARDHOLDERS = 3908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DELETING_OBSELETE_USERS = 3909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_USERGROUPS = 3910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_CARDHOLDERGROUPS = 3911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DELETING_CARDHOLDERGROUPS = 3912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DELETING_USERGROUPS = 3913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_POPUP_VIDEO_TO_PLAYBACK = 3914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_POPUP_VIDEO_TO_LIVE = 3915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SAVE_IMAGE = 3916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_DELETEALL = 3918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_ALREADY_IN_USE = 3921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_WHEN = 3922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_WHERE = 3923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_APPLICATION_NOTCONNECTED = 3924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_SEARCH = 3925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKINDATE = 3926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TASK = 3930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISCELLANIOUS_PRIVILEGES = 3932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_TILES = 3933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_ADMINISTRATOR = 3935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ACCOUNT_DISABLED_OR_LOCKED = 3936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUEUEDCONNECTION_FORMAT = 3937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_TRACKING = 3939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONINQUEUE_FORMAT = 3940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_OF_PRIVILEGES = 3942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_SET_OF_PRIVILEGES = 3943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWER_PEOPLECOUNTING = 3945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_ONLY_PRIVILEGES_BECAUSE_OF_ADMIN_USER = 3946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CURRENT_READ_ONLY_PRIVILEGES_BECAUSE_OF_PARTITION_ADMIN = 3947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_USER_GROUP = 3948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTED_ENTITY = 3949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_TROUBLESHOOTER = 3950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITY_TYPE = 3951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITIES = 3952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_TROUBLESHOOTER_ELLIPS = 3953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT_PRIVILEGES = 3956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_APPLIED = 3957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_RETRIEVE_PRIVILEGES = 3958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_BACKWARD = 3959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_FORWARD = 3960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVESTIGATE = 3961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_APPLICATIONPRIVILEGES_GROUP = 3962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FEDERATIONLOGON = 3963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADMINISTRATIONPRIVILEGES_GROUP = 3964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LOGICALENTITYTASKS_GROUP = 3965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWAREAS = 3966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYAREAS = 3967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEAREAS = 3968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWMAPS = 3969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYMAPS = 3970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEMAPS = 3971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PHYSICALENTITYTASKS_GROUP = 3972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUNITS = 3973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETUNITS = 3974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITFIRMWAREUPGRADE = 3975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUNITS = 3976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEUNITS = 3977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCAMERAS = 3978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCAMERAS = 3979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWOUTPUTBEHAVIORS = 3980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYOUTPUTBEHAVIORS = 3981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEOUTPUTBEHAVIORS = 3982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWDOORS = 3983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYDOORS = 3984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEDOORS = 3985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWELEVATORS = 3986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYELEVATORS = 3987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEELEVATORS = 3988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWZONES = 3989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYZONES = 3990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEZONES = 3991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCASHREGISTERS = 3992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCASHREGISTERS = 3993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SCHEDULEMANAGEMENTTASKS_GROUP = 3994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSCHEDULES = 3995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSCHEDULES = 3996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETESCHEDULES = 3997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSCHEDULEDTASKS = 3998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSCHEDULEDTASKS = 3999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETESCHEDULEDTASKS = 4000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSCONTROLMANAGEMENTTASKS_GROUP = 4001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCARDHOLDERS = 4002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERS = 4003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECARDHOLDERS = 4004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCARDHOLDERGROUPS = 4005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERGROUPS = 4006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECARDHOLDERGROUPS = 4007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCREDENTIALS = 4008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALS = 4009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECREDENTIALS = 4010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWACCESSRULES = 4011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYACCESSRULES = 4012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEACCESSRULES = 4013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWBADGETEMPLATES = 4014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYBADGETEMPLATES = 4015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEBADGETEMPLATES = 4016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMMANAGEMENTTASKS_GROUP = 4017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWALARMS = 4018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYALARMS = 4019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEALARMS = 4020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TEMPLATEMANAGEMENTTASKS_GROUP = 4021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWREPORTTEMPLATES = 4022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYREPORTTEMPLATES = 4023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEREPORTTEMPLATES = 4024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TASKPRIVILEGES_GROUP = 4025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAINTENANCE_GROUP = 4026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSREPORT = 4027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSTROUBLESHOOTERREPORT = 4028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONFIGURATIONREPORTS_GROUP = 4029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_IOCONFIGURATIONREPORT = 4030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSRULESCONFIGURATIONREPORT = 4031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERSCONFIGURATIONREPORT = 4032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALSCONFIGURATIONREPORT = 4033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITSCONFIGURATIONREPORT = 4034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INVESTIGATION_GROUP = 4035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAPRESENCEREPORT = 4036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOARCHIVEREPORT = 4037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOBOOKMARKREPORT = 4038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOMOTIONSEARCH = 4039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_POINTOFSALEREPORT = 4040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORREPORT = 4041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMREPORT = 4042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACTIVITYREPORTS_GROUP = 4043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERACTIVITYREPORT = 4044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DOORACTIVITYREPORT = 4045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAACTIVITYREPORT = 4046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ELEVATORACTIVITYREPORT = 4047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALACTIVITYREPORT = 4048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORACTIVITYREPORT = 4049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITACTIVITYREPORT = 4050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ZONEACTIVITYREPORT = 4051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_OPERATION_GROUP = 4052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERCREATOR = 4053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALENROLLMENT = 4054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PEOPLECOUNTING = 4055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SURVEILLANCE = 4056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACTIONPRIVILEGES_GROUP = 4057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSCONTROL_GROUP = 4058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDERACTIVATIONOREXPIRATIONDATE = 4060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDERSTATUS = 4061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERNAME = 4063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERCUSTOMFIELDS = 4064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERPICTURE = 4065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECREDENTIALACTIVATIONOREXPIRATIONDATE = 4067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECREDENTIALSTATUS = 4068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALNAME = 4069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALASSOCIATIONTOCARDHOLDER = 4070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALCUSTOMFIELDS = 4071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINTBADGES = 4072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DOORS_GROUP = 4073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORGIVEANTIPASSBACKVIOLATION = 4074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORS_GROUP = 4075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHECKINANDCHECKOUTVISITORS = 4076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORSCUSTOMFIELDS = 4077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORPICTURE = 4078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AUDIOVIDEO_GROUP = 4079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEAUDIO = 4080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERAS_GROUP = 4081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SAVEANDPRINTSNAPSHOTS = 4082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PTZMOTORPRIVILEGES_GROUP = 4083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEPTZPATTERNS = 4084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SETPTZPATTERNS = 4085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEPTZAUXILIARIES = 4086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SETPTZAUXILIARIES = 4087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMS_GROUP = 4088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SNOOZEALARMS = 4089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MACROS_GROUP = 4090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USERS_GROUP = 4091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDEMAIL = 4092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDMESSAGE = 4093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PLAYSOUND = 4094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERALPRIVILEGES_GROUP = 4095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINTANDEXPORTREPORTS = 4096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SAVETASKTEMPLATE = 4097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWVISITORS = 4098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORS = 4099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTNAME_COMMA_FIRSTNAME_ORDERING = 4100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTANT_REPLAY = 4101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRINTTEMPLATEFILE = 4104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN_COLLAPSE = 4105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIME_LOCAL_TO_DIRECTORY = 4106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_INSUFFICIENTPRIVILEGES = 4107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_UNLOCK = 4108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK = 4109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_OPENED = 4110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_CLOSED = 4111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_PROVISIONNING = 4114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_SUPERVISOR = 4115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_INVESTIGATOR = 4116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_OPERATOR = 4117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_REPORTING = 4118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPHEADER_OPTION = 4119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUTTON_TEMPORARY_OVERRIDE_DOOR_SCHEDULE = 4120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOCK_DOOR = 4121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNLOCK_DOOR = 4122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR = 4123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM = 4124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKIN = 4125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKOUT = 4126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_VIA_PARTITION_Y = 4128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CREATING_INCIDENT = 4129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TRACKING = 4130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TRACKING = 4131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_FOLDER = 4132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ACCEPTED_USER_OF = 4133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABA_FIELD = 4135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIEGAND_FIELD = 4136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_EXECUTED = 4139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXECUTE_ACTION = 4140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_CREDENTIAL = 4148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIFFERENT_CARDHOLDER = 4154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TILE_TOOLBAR = 4157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERGROUPCUSTOMFIELDS = 4158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_NARROW_BAR_WIDTH = 4159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_WIDE_BAR_WIDTH_RATIO = 4160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_WHITE_SPACE_WIDTH_RATIO = 4161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_DATABASE_SERVER_DISK_FULL = 4163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWIPE_A_CARD = 4165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEOPLE_COUNT = 4168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DELETEFORMAT = 4169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEARAREA = 4170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_TO = 4171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_RETRIEVE_REPORT = 4173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOME = 4174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EMPTY_QUERY = 4175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_ACCESS_TROUBLESHOOTER = 4176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_ACCESS_TROUBLESHOOTER_ELLIPS = 4177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TRACKEDENTITIES = 4178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_LOGON = 4179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGON = 4181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGOFF = 4182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGON_POPUP = 4183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_BELONGS_TO_ANOTHER_CARDHOLDER = 4184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_PRIVILEGES_VIEW_VIDEO = 4187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_FACILITY_OUT_OF_RANGE = 4188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DATA_OUT_OF_RANGE = 4190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_FORMAT_NOT_SUPPORTED = 4191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_PARSE_CREDENTIAL_DATA = 4192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLIENT_COULD_NOT_BE_IDENTIFIED = 4193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND_ALL = 4194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE_ALL = 4195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_NAME_AND_PRIORITY = 4196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND_SELECTION = 4198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE_SELECTION = 4199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARDDELAYSECONDS = 4201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_AUDIT_TRAIL_INFO = 4202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_DATA_TYPE = 4203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE = 4204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_CUSTOM_DATA_TYPE = 4205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_COLON = 4206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_USER_AS_PARTITION_ADMINISTRATOR = 4210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKING_QUERY_ERRORS_OCCURED = 4212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GHOST_PROCESS_DETECTED = 4213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_MAP_OVERRIDE_SCHEDULE_FOR_TIME = 4215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIDE_COLON = 4216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_NOTSUPPORTEDONTARGETVERSION = 4217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSIMAGEMODIFY = 4218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KILL_GHOST_PROCESS2 = 4219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MESSAGE_SUPPLIED = 4220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SELECTION = 4221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TAKE_SNAPSHOT = 4222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEEP_SNAPSHOT = 4223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISCARD_SNAPSHOT = 4224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_IN_ANOTHER_PARTITION = 4225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDURL = 4226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLEVIEW_CARDS = 4227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_PRIVILEGES = 4228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_MODIFY_OWN_BASIC_PRIVILEGES = 4230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARITY_MASK_INCLUDES_POSITION_BIT = 4231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_SEND_REPORT_BY_EMAIL_CHECK_PRIVILEGES = 4232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_READ = 4233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_HIT = 4234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AUTOPATROLLER = 4235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AUTOPATROLLERS = 4238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_RULES = 4239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_AUTOPATROLLERS = 4241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_DATABASE = 4244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_DATABASE = 4245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACK_UP_RESTORE_DATABASE = 4246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TEST_DATABASE_CONNECTION = 4247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UPGRADE_DATABASE = 4252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_LPR_EVENT_PROTECTION = 4255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROPPED = 4256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_IN_PROGRESS_X = 4258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_FAILED_X = 4259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_SUCCEEDED = 4260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_IN_PROGRESS_X = 4261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_FAILED_X = 4262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_SUCCEEDED = 4263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_IN_PROGRESS_X = 4264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_SUCCEEDED = 4265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_FAILED_X = 4266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNEXPECTED_LOGGING_ERROR_X = 4267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROP_FAILED_X = 4268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARITY_BIT_USED_IN_MASK_DETAILED = 4269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MASK_USES_LOWER_PRIORITY_PARITY_BIT_DETAILED = 4270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CORRECT_ERRORS_IMPORT = 4271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSION_ERROR_NONE_SELECTED = 4272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TAILING = 4273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TAILING = 4274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAILING = 4275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAIL = 4276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR = 4277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPRMANAGEMENTTASKS_GROUP = 4279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_UNIT = 4285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_UNITS = 4286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_UNITS = 4287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_OVERTIME_RULE = 4288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_OVERTIME_RULES = 4289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_OVERTIME_RULES = 4290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RULE = 4291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RULES = 4292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_SHARED_PERMIT_RULE = 4294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_SHARED_PERMIT_RULES = 4295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_SHARED_PERMIT_RULES = 4296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_HOTLIST_RULE = 4297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_HOTLIST_RULES = 4298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_HOTLIST_RULES = 4299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_NEW_WANTED_RULE = 4300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_COLOR = 4305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_LOTS = 4306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FILE = 4307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FOLDER = 4308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME_ZONE = 4309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_DAYS = 4310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCEMENT = 4311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_LIMIT = 4312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURS_MAJ = 4313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_MAJ = 4314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CARDHOLDER = 4317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_CARDHOLDER = 4318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETURN_CARD = 4319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SETDOORMAINTENANCEMODE = 4321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_VALIDITY = 4323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODE = 4324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIMPLE = 4325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERYONE = 4327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_PERMITS = 4328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PERMIT = 4329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKDAYS = 4330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKEND = 4331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM = 4332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICABLE_DAYS = 4333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICABLE_HOURS = 4334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_PERMITZONE = 4336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW = 4337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PERMITS = 4340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_LOCKING_SCHEDULE = 4341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_SETTINGS = 4342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYDESK_SETTINGS = 4343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_LISTENING_PORT = 4344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_READ_LP_IMAGE = 4348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_READ_CONTEXT_IMAGE = 4349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_GHOST_PATROLLER_DESCRIPTION = 4351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELLIPSE = 4352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZE_AND_POSITION = 4353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLORS_AND_LINES = 4354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDTH_ABREVIATION = 4355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEIGHT_ABREVIATION = 4356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_POSITION_ABBREVIATION = 4357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_Y_POSITION_ABBREVIATION = 4358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_HEADER_CREDENTIAL_STATUS = 4360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_AND_CLOSE = 4361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_PATROLLER_TYPE_UNDEFINED = 4362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALINFORMATION = 4363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDEROPTIONS = 4364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEPLATE = 4365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULL = 4366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTIAL = 4367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RESTRICTION_RULE = 4369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RESTRICTION_RULES = 4370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_PERMIT_RESTRICTION_RULES = 4371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODULES = 4372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPPING_TYPE = 4373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_MSBING = 4374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_MAPINFO = 4375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPINFO_WORKSPACE = 4376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPINFO_VERSION = 4377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD = 4378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIAL_LONGITUDE = 4379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIAL_LATITUDE = 4380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST = 4381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_REJECT_REASONS = 4382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_CATEGORIES = 4383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_LISTS = 4384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_ELAPSED_TIME = 4385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BASE_FOLDER = 4387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_NOTIFICATOR = 4389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOCODER = 4391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_MATCHER = 4392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_IMPORTER = 4393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_EXPORTER = 4394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HORIZONTAL_POSITION = 4395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTICAL_POSITION = 4396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROOT_FOLDER = 4397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD = 4400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONES = 4401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_EVENTS = 4403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_SQLSERVERTIMEOUT = 4404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERMIT = 4405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERMITS = 4406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PERMITS = 4407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_USERGROUP = 4411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL = 4412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_ENTRY = 4413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING_CREDENTIAL = 4414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG_TERM = 4415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNKNOWNERROR_LICENSECALCULATION = 4417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESENT_CARDS_TO_READER = 4420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY_CARD = 4421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTORE_ORIGINAL_CREDENTIAL = 4422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATE = 4425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATEIMAGE = 4426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PATROLLERNAME = 4427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USERNAME = 4428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ADDRESS = 4429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEQUENCE_GENERATOR = 4430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_READ = 4431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_REMOTEDB_WARNING = 4432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_HOTLIST = 4433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_OVERTIME = 4434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_PERMIT = 4435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_PERMIT_RESTRICTION = 4436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION = 4437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION_PARALLEL = 4438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION_ANGLED = 4439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SETTING = 4440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATING_DATA_FOR_PRINTING = 4441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME = 4442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT = 4443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAREDPERMIT = 4444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS = 4445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PLATEREADS = 4446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_COUNT_OVER_MAX_ALLOWED = 4448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_LEGACY = 4449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_SUPPORTS_MAPINFO = 4450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_LAW_ENFORCEMENT = 4451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_CITY_PARKING_ENFORCEMENT = 4452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_UNIVERSITY_PARKING_ENFORCEMENT = 4453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_DATA_PATH = 4454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT = 4456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_FORMAT = 4457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_FOLDER_PATH = 4458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_TEMPLATE_FILE_PATH = 4459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_DATABASE = 4460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_DATABASE = 4461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRACE_PERIOD = 4464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_CREATING = 4467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_DROPPING = 4468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_RESTORING = 4469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_BACKINGUP = 4470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_WAITING_UPGRADE = 4471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_UPGRADING = 4472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_DAYS = 4473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_HOURS = 4474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_MINUTES = 4475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_SECONDS = 4476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ASSIGN_TEMPORARY_CARD = 4477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_LPR = 4478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_CONTEXT = 4479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_OVERVIEW = 4480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_HIT = 4481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_NAME = 4484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ALREADY_ASSIGNED = 4487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_POSITION = 4488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTRICT = 4489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCK_FACE = 4490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_POSITION_RETENTION = 4491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READS_RETENTION = 4492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HITS_RETENTION = 4493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CARDSEARCH = 4494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FIND_ENTITY_BY_CARD = 4495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATED = 4497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ZONE_NAME_UNIQUE = 4498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATION = 4499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_DATE = 4500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRAWING_NOT_SUPPORTED = 4501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS_OVERVIEW = 4502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTIONS = 4503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_GENERATINGDATA = 4505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_EXPORTINGTOFORMAT = 4506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF = 4507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_PDFFILES = 4508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEL = 4509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_EXCELFILES = 4510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PICTURE = 4511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_CREDENTIAL_BATCH = 4512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_VISITORS = 4513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_VISITORS = 4514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISREAD = 4515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_ES = 4517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_IS = 4518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MAX_PIN_VALUE = 4519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKOUTDATE = 4521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPACITY = 4522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DETECTED = 4523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CARD_DETECTED = 4524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_USER = 4526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_HOTLIST_RULE = 4527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_PERMIT_RULE = 4528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_OVERTIME_RULE = 4529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_SHARED_PERMIT_RULE = 4530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_VIEW = 4531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DURING_EXTERNAL_SYSTEM_INITIALIZATION = 4532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTER_PIN_CODE = 4533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTER_PIN_CODE_VALIDATION = 4534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PASSWORDS_DONT_MATCH = 4536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_GHOST = 4537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SERIALIZE_TASK = 4538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OFFLINEPERIOD = 4539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_ONLINE = 4540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_GRACE = 4541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_OFFLINEALARM = 4542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_OFFLINE = 4543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SAVING_ENTITY = 4544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ALL = 4545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ACTIVE = 4546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ACKNOWLEDGED = 4547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGION = 4548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOCREATE_CREDENTIAL = 4549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_EXIST_NO_PRIVILEGE = 4550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_DOESNT_EXIST_NO_PRIVILEGE = 4551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_NAME_HAS_ILLEGAL_CHARACTERS = 4552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_UNKNOWN = 4554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_TAMPERED = 4555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_GOOD = 4556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_WATERMARK = 4557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MULTIPLE_FORMAT_FOUND = 4558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DURING_EXTERNAL_SYSTEM_DELETION = 4559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEEK_BACK_TIME = 4560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SEEK_BACK = 4561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_TYPE = 4562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_TAKEN = 4563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REJECT_REASON = 4564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_ACCEPTED = 4565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_NOTENFORCED = 4566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_REJECTED = 4567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTOFMETADATAVALUES = 4568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_RANGE = 4569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CORRECT_ERRORS = 4570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAPINFO_WORKSPACE_NOT_FOUND = 4571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SYNCHRONIZING_LARGE_PATROLLER_USER_GROUP = 4572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_HIT_INFORMATION = 4574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REMOVE_ITEMS_FROM_REPORT = 4575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_CONTEXT_IMAGE = 4576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_MAP = 4577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_TIRES_IMAGES = 4578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTINGEXTERNALSYSTEM = 4579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONTOEXTERNALSYSTEMESTABLISHED = 4580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGENTITIES = 4581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_RESULTS = 4584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETIONPROGRESS_PERCENTAGE = 4585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_GROUP = 4588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_PROTECT_READS_HITS = 4589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PROTECTED = 4590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROTECT = 4591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UNPROTECT = 4592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_VIDEO = 4600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGCAMERAS = 4601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGCASHREGISTERS = 4602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGALARMS = 4603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETINGORPHANENTITIES = 4604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENFORCED_HITS = 4605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_BING_LICENSE_EXPIRATION = 4606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_DATA_IMPORT_MODULE = 4607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_DAILY_USAGE_PATROLLER = 4608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWPATROLLERS = 4609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYPATROLLERS = 4610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEPATROLLERS = 4611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYLPRUNITS = 4612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETELPRRULES = 4613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLERPLAYBACK = 4614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_READHITSPERLPRZONE = 4615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_READHITSPERDAY = 4616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPRZONEOCCUPATION = 4617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LOGINPERPATROLLER = 4618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETELPRUNIT = 4619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWLPRUNIT = 4620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETLPRUINTS = 4621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OPERATING_TIME = 4622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MAX_STOP = 4623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL_STOP = 4624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INSTANCES = 4625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MAX_SHUTDOWN = 4626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL_SHUTDOWN = 4627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYLPRRULES = 4628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OMNICAST = 4630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AUTOVU = 4631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PURCHASEORDER = 4632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYNERGIS = 4633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SECURITYCENTER = 4634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICEMAINTENANCEAGREEMENT = 4635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMANUMBER = 4636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRINT_HEADER_HIT_REPORT = 4637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRINT_HEADER_PHOTO_EVIDENCE = 4638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_CATEGORY = 4639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_READS_HITS_PER_ZONE = 4640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_ZONE_OCCUPATION = 4641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_LOGIN_PER_PATROLLER = 4642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_READS_HITS_PER_DAY = 4643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT = 4645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CONTEXTIMAGE = 4646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVINGMAP_FORMAT = 4648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPR_READEVENT_FORMAT = 4649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPR_HITEVENT_FORMAT = 4650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_UNSUPPORTED = 4651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_XML_IMPORT_MODULE = 4652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SMA_SUPPORT = 4653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ERROR_WIEGANDFIELD_MASK_PARITY_CHECK = 4654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIXED_LENGTH = 4655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSLATIONS = 4656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTRIBUTES = 4657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DELIMITERS = 4659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LOGINTIME = 4660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LOGOUTTIME = 4661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_NOTIFICATION = 4662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_ID = 4663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL = 4664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ZONE = 4665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READS = 4666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RULE = 4667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HITS = 4668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NOT_ENFORCED_HITS = 4669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_REJECTED_HITS = 4670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HIT_TYPE = 4671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TIRE_IMAGE = 4672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERSECTION = 4673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_INTERSECTION = 4674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_LOT = 4675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VEHCILES = 4676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCUPATION_PECENT = 4677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_EVENT_RETENTION = 4678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT = 4679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ = 4680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MANUALREAD = 4681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CONTEXTIMAGES = 4682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TIRESIMAGES = 4683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_HITSFROMREAD_FORMAT = 4684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENTITY_STATE = 4685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCETIME = 4686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_UC = 4687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_YEAR = 4688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_ENROLLED = 4689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATED_CREDENTIALS = 4690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_SHARPS_PATROLLERS = 4691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_FILE = 4692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_COVERT = 4693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_PATROLLER = 4694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NETWORK_CONNECTION_LOST = 4695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AS_REPORT = 4697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIRM = 4698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DUPLICATE_DIRECTORIES_DETECTED_ERROR = 4699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACCESSFILE_FORMAT = 4700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_COPY_FORMAT = 4701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PERMIT = 4702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NAME_UNIQUE = 4703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATE_REPORT_AGAIN = 4706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_DOESNT_EXIST = 4707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERALSETTINGS = 4709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATESTATE = 4711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_REPLICATION = 4712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_INCONCLUSIVE = 4714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DRAW_REGION = 4716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_HEADER_ASSOCIATED_ENTITIES = 4717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERCENT = 4718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AVERAGE = 4719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATISTICS = 4720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SQLSERVER_DOESNT_EXIST = 4721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRONG_ENGINE_VERSION = 4722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_DOESNT_EXIST = 4723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNKNOWN_SQL_ERROR = 4724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_LIVE_COVERT_HITS = 4725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NETWORK_ADAPTER_UNAVAILABLE = 4726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FEDERATION = 4727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PAPER_CREDENTIAL = 4729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_READY = 4730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWLPRRULES = 4731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_MATCHER_DESCRIPTION = 4732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONGITUDE = 4733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATITUDE = 4734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_PARSE_LINE_VS_ROWS = 4735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_NOT_FOUND = 4736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_EMPTY_OR_NULL = 4737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_LOAD_ERROR = 4738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TOOLTIP_MAXIMUM_RESULT_REACHED = 4739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETED = 4740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_REFUSED_BY_UNIT_2 = 4741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_AUTOVU_VERSION = 4742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENABLING_NOTIFICATIONS = 4743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_CREATE_FOLDER_X = 4744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_WRITE_TO_EXPORT_FOLDER_X = 4745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOAD_TEMPLATE_X = 4746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_XML_IMPORT_FOLDER_NOT_SET = 4747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GHOST_ENTITIES_NOT_SET = 4748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEMPLATE_PATH_NOT_SET = 4749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_XML_IMPORT_TEMPLATE_X = 4750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROOT_FOLDER_NOT_SET = 4751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLESHOOTER_CARDHOLDER_WILL_BE_EXPIRED = 4754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLESHOOTER_CARDHOLDER_COULD_BE_EXPIRED = 4755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THOUSANDSEPARATOR_NONBREAKINGSPACE = 4756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_MLPI_RULE = 4757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_MLPI_RULES = 4758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_EMAIL = 4759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_MLPI_RULES = 4760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_MOBILE_LICENSE_PLATE_INVENTORY = 4762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_ANCESTORS = 4763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_COLOR = 4765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_MANUAL_ATT = 4766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_REJECT_REASON = 4767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_REJECT_REASON = 4768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_MANUAL_ENTRY_ATTRIBUTE = 4769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_MANUAL_ENTRY_ATTRIBUTE = 4770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_CATEGORY = 4771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_CATEGORY = 4772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OVERTIME_REJECT_REASON = 4773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_OVERTIME_REJECT_REASON = 4774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_REJECT_REASON = 4775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_REJECT_REASON = 4776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_METADATA = 4777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_METADATA = 4778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_AUTOMATICALLY_APPLIED = 4779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATED_CREATING_FUNCTIONS = 4780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTED = 4781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_VISITORS = 4782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_VISITOR = 4783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRINT_EVIDENCE = 4784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_ATTRIBUTE = 4785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_ATTRIBUTE = 4786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_ATTRIBUTE = 4787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_ATTRIBUTE = 4788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_PARTITION_MEMBERS = 4790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_ADDED = 4792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_REMOVED = 4793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_MODIFIED = 4794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_CONSTRAINT = 4797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_CONSTRAINT = 4798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_IMPORTED_CREDENTIAL = 4799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOME_PAGE = 4801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_DOORSELEVATORS = 4802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAY_LOSE_ACCESS_TO_ENTITIES_AFTER_DELETION = 4803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ENTITY_INFORMATION = 4805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_UPGRADE_RESTORE_FAILED = 4806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDNAME = 4807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECONCILE_INVENTORIES = 4809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_DELETE_READS_NOT_IN_INVENTORY = 4810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGULATION = 4811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MODIFY_DELETE_MLPI_READ = 4812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INVENTORY = 4813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY_MANAGEMENT = 4814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_STATUS_INVALID = 4815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_ONE_OR_MORE_PARTITIONS = 4816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_NAME_FIELD_MANDATORY = 4817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_HIGH_RANGE = 4818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_LOW_RANGE = 4819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_UPPER_BOUND = 4820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_LOWER_BOUND = 4821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LAST_VALUE = 4822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_IMAGES_WERE_REMOVED = 4824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORYREPORT_FORMAT = 4825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HANDHELDDEVICE = 4826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ADDED = 4827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_REMOVED = 4828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ADDEDREMOVED = 4829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_NOACTION = 4830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ALL = 4831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_ADDED = 4832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_REMOVED = 4833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_MANUALLY_REMOVED = 4834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MANUAL_ENTRIES_COUNT = 4835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FETCHIMAGES = 4836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_SHOW_MANUALLY_REMOVED_READS = 4837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPAREWITH = 4838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTION = 4839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARRIVAL = 4840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ELAPSEDTIME = 4841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPIZONE = 4842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPIROW = 4843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_ISEDITED = 4844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_ISMANUALLYREMOVED = 4845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROUTE = 4846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION = 4847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY = 4848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATEST = 4849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC = 4850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_DELETE_PLATE_FORMAT = 4851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_INVENTORY = 4854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTAGGED_READS = 4855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MLPI_RULE = 4856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_ROWS = 4857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND = 4858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_DESTINATION = 4860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE = 4861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSPACE = 4862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_OPENED_TASKS = 4863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_ELLIPSIS = 4864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SEND_TASK = 4865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNSPECIFIED = 4866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_ORPHANRULE = 4867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNKNOWNRULE = 4868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNKNOWNEXTERNALSYSTEM = 4869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INITIALQUERYFAILED = 4870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYINPROGRESS = 4871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYCREATIONFAILED = 4872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYDELETED = 4873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_CANCELED = 4874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_SUCCESS = 4875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_DATETIMERANGEINVALID = 4876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION_MLPI_LOAD_PLUGIN_FAILED = 4877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION_MLPI_NO_PLUGIN_FOUND = 4878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OFFLOADS = 4879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_FIRST_READ_TIME = 4880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_LAST_READ_TIME = 4881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_READ_COUNT = 4882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXISTING_INVENTORIES = 4883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_RECONCILIATION_POSSIBLE_MATCHES = 4884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CREATE_INVENTORY = 4888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_PLATE_CONFIRMATION = 4890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_DELETE_LAST_INVENTORY = 4891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READ_TIME = 4892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CONFIRM_SAME_CAR = 4893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CONFIRM_DIFFERENT_CAR = 4894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_TEMPLATE_FOLDER_PATH = 4895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_INVENTORY_WARNING_COMPARE_UNTAGGED_READS = 4896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_INVALIDATE_PATROLLER_READS = 4898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_FROM_SENDER_MESSAGE = 4899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_YOU_ACCEPT = 4900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENDER_WANTS_TO_SEND_TASK_TO_YOU = 4902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATION = 4903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MY_TASKS = 4904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_TASKS = 4905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SAVE_TASK = 4906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING_TASKS = 4907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ITEMS_TO_DISPLAY = 4908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE = 4909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_MEMEORY_TO_SYNCHRONIZE_PATROLLERS = 4911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_X_COULD_NOT_BE_TRANSFERED = 4912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_REPORT = 4913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_FROM_DATABASE = 4914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOST_NAME = 4915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4_ADDRESS = 4916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6_ADDRESS = 4917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROLE = 4918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SERVER = 4921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_SERVERS = 4923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SAVE_AS = 4924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SAVE = 4925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPGRADE_PRIVILEGETEMPLATERESET = 4926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SYSTEM_STATUS_TASK = 4927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_OPEN_THE_TASK = 4928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAY_NOT_HAVE_NECESSARY_PRIVILEGES = 4929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_BUFFERING = 4930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_STARTING = 4931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_STOPPING = 4932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DWELL_TIME = 4933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CREATE_INVENTORY_OPEN_DIALOG = 4934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_BOOKMARK = 4935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_BOOKMARK = 4936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_STATUS_FILTER_MONITOR = 4937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ITEMS = 4938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ACTION_UNLOCK_DOOR_MAINTENANCE = 4939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_HEALTH_ISSUE = 4942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_ALL_ENTITIES = 4943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_DELETE_BOOKMARK_FORMAT = 4945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MACHINE_NAME = 4946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITY_LOGICAL_PATH = 4947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DOOR_LOCK_STATE = 4948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DOOR_OPEN_STATE = 4949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERA_RECORDING_STATE = 4950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERA_ANALOG_SIGNAL = 4951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ZONE_ARMED = 4952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNIT_SYNC = 4953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNIT_FIRMWARE = 4954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONESTATE_TROUBLE = 4955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AREA_PEOPLECOUNT = 4956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_HI_RES_IMAGES = 4957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_PARKINGZONE = 4958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MANAGE_PRIVATE_TASKS = 4959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_OPENED_TASK_IS_UPDATED = 4960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELOAD_TASK = 4961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TASK_HAS_BEEN_UPDATED = 4962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_RELOAD_TASK = 4963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CHANGES_TO_TASK = 4964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_SHORTCUTS = 4965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRESS_KEY_TO_RECORD = 4966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_TASK = 4967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORTCUT = 4968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMAND = 4969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_HI_RES_IMAGES_ERROR = 4971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRESS_ESCAPE_TO_CLOSE = 4972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_NETWORK = 4973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROUTE = 4974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_KEYBOARD = 4975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SEQUENCE = 4976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITOR = 4977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_NETWORKS = 4978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_NETWORKS = 4979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROUTES = 4980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ROUTES = 4981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_KEYBOARDS = 4982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_KEYBOARDS = 4983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SEQUENCES = 4984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_SEQUENCES = 4985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORS = 4986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_MONITORS = 4987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_SET_OR_REMOVE_MAINTENANCE_MODE = 4988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETDOORSMAINTENANCEMODE = 4989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVEDOORSMAINTENANCEMODE = 4990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_FILE_PATH_ON_SAME_IS = 4991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_STREAM = 4992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_STREAMS = 4993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_STREAMS = 4994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REBOOT_UNIT_CONFIRMATION = 4995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_INVALID = 4997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ALARM_PANEL = 4998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ALARM_PANELS = 5000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_ZONE = 5001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_ZONES = 5002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_INTRUSION_ZONES = 5003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_SIGNAL_LOST = 5004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_SIGNAL_RECOVERED = 5005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ALARM_PANEL_COUNT = 5006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_AC_FAILED = 5007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_BATTERY_FAILED = 5008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_CONNECTED = 5009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_DISCONNECTED = 5010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_BYPASS_ACTIVATED = 5011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_BYPASS_DEACTIVATED = 5012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_TROUBLE = 5013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ALARM_ACTIVATED = 5014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ARMING = 5015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ARMING_POSTPONED = 5016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DISARMED = 5017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DURESS = 5018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ENTRY_DELAY = 5019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_BYPASS_ACTIVATED = 5020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_BYPASS_DEACTIVATED = 5021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_TROUBLE = 5022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_MASTER_ARMED = 5023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_PERIMETER_ARMED = 5024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_POSTPONE_ARMING = 5025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_DISARM = 5026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM = 5027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONDETECTION_GROUP = 5028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMDISARMINTRUSIONZONES = 5029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_INTRUSION_DETECTION_NAME = 5033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_INTRUSION_DETECTION_DESCRIPTION = 5034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NO_RESULTS = 5035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZ_COMMAND = 5037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPABILITIES = 5038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6_NETWORK = 5040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCOMING_UDP_PORT_RANGE = 5041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY_SERVER = 5042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT_1 = 5043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT_2 = 5044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROUTE_PROPERTIES = 5045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_A_NEW_ALARM_PANEL = 5046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ALARM_PANEL_INFORMATION = 5047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED_NOT_READY = 5048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED_READY_TO_ARM = 5049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ZONE_INPUT_TROUBLE = 5050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ARMING = 5051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE__PERIMETER_ARMED = 5052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_MASTER_ARMED = 5053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ALARM_ACTIVE = 5054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ARCHIVER_NAME = 5056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ARCHIVER_DESCRIPTION = 5057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_VIDEOUNIT = 5058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_VIDEOUNITS = 5059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_VIDEOUNITS = 5060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_GUARDTOUR = 5061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_GUARDTOUR = 5062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_NEW_NETWORK = 5063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT = 5065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_TCP = 5066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_UDP = 5067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST = 5068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_SIGNALSTATE_RECOVERED = 5070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_DISK_SPACE = 5071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECT_RECORDED_VIDEO = 5074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_PRETRIGGER_TIME = 5075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACCESSMANAGER_NAME = 5076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACCESSMANAGER_DESCRIPTION = 5077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_DISPLAY_ALARM = 5078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SALVO_MODE_DWELL_TIME = 5079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_DISPLAYED_ALARM = 5080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_CAMERA_CONNECTIONS = 5081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYDESK_ON_MACHINE_IS_WATCHING_CAMERAS = 5082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SEQUENCE = 5083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_FORWARD_ALARM = 5084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_READS = 5085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIPHERALS = 5086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_PORT = 5088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_CONFIGURATION = 5089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_PROTOCOL = 5090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_ADDRESS = 5091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOCONNECT_KEYBOARD = 5092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYBOARD_CONNECTION_WARNING = 5093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_STATUS = 5094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_CONNECTION_STATUS = 5095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_LAST_COMMAND_RECEIVED = 5096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BYTES_SENT = 5097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BYTES_RECEIVED = 5098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEYBOARD_CONNECT = 5099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEYBOARD_DISCONNECT = 5100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMPORT_OPENED = 5101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMPORT_CLOSED = 5102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_FAILED_TO_OPEN_COMPORT = 5103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_PTZ_COMMAND = 5104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMMAND = 5105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BAD_PTZ_COMMAND = 5106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BAD_COMMAND = 5107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_USE_SPECIFIC_COMMANDS = 5108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_OVERRIDE_LOCKS = 5109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DEFAULT_NETWORK = 5110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SERVERS = 5112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROLES = 5113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_START_ALARM_FORWARD = 5114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_ALARM_FORWARD = 5115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_ALARM_RECIPIENT = 5116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_OPTIONAL = 5117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_UNITS = 5118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSION_ZONE_BYPASS = 5119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARMING_STATE = 5120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ROLE_CURRENT_SERVER = 5121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_ONLINE_ONLY = 5122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STREAM_MANAGEMENT_NAME = 5123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STREAM_MANAGEMENT_DESCRIPTION = 5124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_STATE_MASTER = 5125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM_IMMEDIATELY = 5126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM_IN = 5127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_ZONE_ARM = 5128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZACTIVATED = 5129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZSTOPPED = 5130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZLOCKED = 5131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZOOMBYUSER = 5132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZOOMBYUSERSTOPPED = 5133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DWELL_TIME_SEC = 5134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_AUXILIARY = 5135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_COMMAND = 5136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_FEDERATED_CANNOT_BE_ASSIGNED = 5137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_STATUS_HEALTH_ISSUES = 5140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_TIME = 5141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GO_TO_SPECIFIC_TIME = 5142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_CONNECTED = 5143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_CONNECTION_ESTABLISHED = 5144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_SAVED_PAGES = 5145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_PREFETCH_ENTITIES = 5147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_ADD_PAGES_TO_WORKSPACE = 5148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_ACTIVE_PAGE = 5149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_INITIALIZATION_COMPLETED = 5150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_INITIALIZE_WORKSPACE = 5151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_PAGE = 5152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXPLICITLY_START_MACROS = 5153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_START_CYCLING = 5154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_STOP_CYCLING = 5155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HIT_REPORT_PER_TYPE = 5156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HIT_REPORT_PER_AGE = 5157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOWARD_ALARM = 5158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_WAITING_FOR_DATA = 5159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEBACKUP = 5161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASENOTIFICATIONS = 5162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENERALPROPERTIES = 5163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DIRECTORYCONFIGURATION = 5164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENETECSERVERCONFIGURATION = 5165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_MAINSERVERCONNECTION = 5166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SMTP = 5168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_HTTPPORT = 5169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LOCALMACHINEONLY = 5170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLECONSOLE = 5171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SMTPSERVERPORT = 5172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FROMEMAILADDRESS = 5173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LISTENINGTCPPORT = 5175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_AUTHENTICATION = 5176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SENDEMAILON = 5177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SAVEKEYTOFILE = 5184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEINSTANCE = 5186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASESERVER = 5187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LAUNCHRESTORENOW = 5189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SECURECOMMUNICATION = 5191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUTTON = 5192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOWN_COMMAND = 5193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UP_COMMAND = 5194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENTS = 5195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AXIS = 5196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORWARDALARMS = 5198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBNETS = 5200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTING_TO_READER = 5201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JOYSTICK = 5203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEJOYSTICK = 5204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENETECSERVER = 5207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_INCIDENT_CREATION_ON_DOOR_OVERRIDE = 5208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIALIZING = 5209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_VIDEO = 5211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_DAYS_PRIOR_TO_EXPIRATION = 5213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PORT = 5214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_IP_ADDRESS = 5217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_ADD_UNIT = 5218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_REBOOT = 5219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_IDENTIFY = 5220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_DISCOVERY_PORT = 5221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_COMMAND_PORT = 5222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_Y_SELECTED = 5223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGE_COMMAND_PORT = 5224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AREA_ADD_FEDERATED_ENTITIES = 5225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CYCLING = 5226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_UNITS = 5227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_AREAS = 5228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME = 5229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_DESCRIPTION = 5230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ARCHIVING_QUEUE_FULL = 5231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MULTIPLE_SOURCE = 5232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NOT_ARCHIVING = 5233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RTP_PACKET_LOST = 5234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_TRANSMISSION_LOST = 5235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_ARCHIVING_STOPPED = 5236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_CAN_WRITE = 5237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_LOST = 5238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_RECOVERED = 5239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_CHANGED = 5240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_FULL = 5241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_LOAD = 5242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_INVALID_CUSTOM_ENCRYPTION = 5243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_NO_WRITE = 5244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_NO_WRITE_ON_SPECIFIED_DISK = 5245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_INVALID_CONFIG = 5246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_IN_SIGHT = 5247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_OUT_OF_SIGHT = 5248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_READING = 5249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_CONDITION_CHANGE = 5250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_CROSSED_LINE = 5251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_ENTERED = 5252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_EXITED = 5253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_FALL = 5254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_FOLLOWING_ROUTE = 5255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_IN_FIELD = 5256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_LEFT = 5257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_LOITERING = 5258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_MERGED = 5259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_REMOVED = 5260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_RUN = 5261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_SLIDE = 5262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_SPLIT = 5263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_STOPPED = 5264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAILGATING = 5265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAMPERING = 5266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_UNDEFINED = 5267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_X_AXIS = 5268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_Y_AXIS = 5269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_Z_AXIS = 5270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RX_AXIS = 5271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RY_AXIS = 5272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RZ_AXIS = 5273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_SLIDER_NUMBER = 5274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGE_IP_ADDRESS = 5275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_IP = 5276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTING_IP = 5277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IP_RANGE_EXCEEDED = 5278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROUTE_STATUS_OPTIMAL = 5279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROUTE_STATUS_NOT_OPTIMAL = 5280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_CONFIGURATION = 5281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETECTED_CAPABILITIES = 5282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CACHE = 5283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_FOLDER = 5284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_USER_FOLDER = 5285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_SIZE = 5286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED = 5290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_OPTIONS = 5291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_POS_NAME = 5292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_POS_DESCRIPTION = 5293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTMANUALQUALITY = 5294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTMOTIONQUALITY = 5295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTSCHEDULEDQUALITY = 5296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTFILEPROTECTION = 5297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPFILEPROTECTION = 5298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANSTOP = 5300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_STOP = 5301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_STOP = 5302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOM_STOP = 5303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILT_STOP = 5304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS = 5305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS = 5306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PAN = 5307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILT = 5308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOM = 5309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACK_PREVIOUS_FRAME = 5310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_ADDRESS_EXAMPLE = 5311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_MANUFACTURERS_WEBPAGE = 5312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_NEW_INTRUSION_AREA = 5313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_AREA = 5314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_INTRUSION_AREA_INFO_PAGE_TITLE = 5315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_INVALIDSETTINGS = 5316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_SHOW_ALL_UNITS = 5317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_SHOW_ONLY_NEW_UNITS = 5318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_AUTO = 5319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_ON = 5320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_MANUAL = 5321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_MODES = 5322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MANUAL_RECORDING_LENGTH = 5323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_TO_RECORD_AFTER_MOTION = 5324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_TO_RECORD_BEFORE_EVENT = 5325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTION_PERIOD = 5326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BROWSE_FOR_FOLDER = 5327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_ADDEMAILRECIPIENT = 5328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_REMOVEEMAILRECIPIENT = 5329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ACTIVE = 5330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ARCHIVED = 5331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ALL = 5332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORTFULLIMAGES = 5333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LIVE_CACHING_DISABLED = 5334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SLOW_VIDEO_CACHING = 5335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_JITTER_BUFFER_NOT_BIG_ENOUGH = 5336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_VIDEO_CACHE_PATH = 5337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_VIDEO_CACHING = 5338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTIONS_APPLIED_AT_STARTUP = 5339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASEINFO = 5340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSIONS = 5341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA = 5342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATASERVERVERSION = 5343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CACHE_LOCATION = 5344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_MANUFACTURERS = 5345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMAND_PORT = 5346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CAMERA_DISTRIBUTION = 5347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SETTINGS = 5349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUFACTURER = 5352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRODUCT_TYPE = 5353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL = 5354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_VERSION = 5355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISCOVER = 5357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_MANUFACTURER = 5358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_UNIT_MANUALLY = 5359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERING = 5360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MANUFACTURER_SELECTED = 5361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_SELECT_MANUFACTURER = 5362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENTERROR_CANNOTCONNECTTOUNIT = 5363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SORT = 5364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_OLD_FILES_ON_DISK_FULL = 5366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEO_THRESHOLD = 5367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_MEGABYTES = 5368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARKING = 5369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_FILES = 5373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NTP_SETTINGS = 5376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_SERVER = 5377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_PORT = 5378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLL_TIMEOUT = 5379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MODE = 5380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_DRIVER = 5382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID = 5383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPD_PORT = 5390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_IP = 5391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_TYPE = 5392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEAKER_PROPERTIES = 5393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_PIN_PROPERTIES = 5394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_PIN_PROPERTIES = 5395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIAL_PORT_PROPERTIES = 5396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MICROPHONE_PROPERTIES = 5397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_SETTINGS = 5398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE = 5399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSITIVITY = 5400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_CANCEL_POSTPONE_ARMING = 5401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_SETTINGS = 5402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_AUDIO = 5403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CLEANUP = 5404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSION_AREA_ACTIVITY = 5406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSION_UNIT_ACTIVITY = 5407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NESTED_PARTITIONS = 5409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETREIVINGFILEVERSIONS = 5410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASECREATIONFAILED = 5411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_SETTINGS = 5412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_ARCHIVER = 5413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_SETTINGS = 5414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_EXTENSIONS = 5415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSIONS = 5416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING = 5417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_PRIORITY = 5419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_PRIORITY = 5420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL_PRIORITY = 5421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LOGICALID = 5422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOCREATEINUSE = 5423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABLASTOCREATEINUSEINFO = 5424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDCREATE = 5425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FAILEDRESTOREDB = 5428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESTOREDATABASE = 5429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_FAILED = 5430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESTOREINUSE = 5431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESTOREINUSEINFO = 5432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDRESTORE = 5433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_BACKUPFILES = 5434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILBACKUPBEFORECONFLICTMANIFEST = 5435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_COPYCONFIGTOOL = 5436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_COPYCONFIGTOOL = 5437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPYCONFIG_OPTIONS = 5439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ENTITYNOTFOUND = 5469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_INVALIDTYPES = 5470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PERMISSION = 5471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SETPROPERTY = 5472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_EXCEPTION = 5473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_EXTENSIONNOTFOUND = 5474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_MEMBERS = 5475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ATTACHEDENTITIES = 5476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_RECIPIENTS = 5477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOENCODER = 5478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOQUALITY = 5479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_BOOSTQUALITY = 5480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_STREAMUSAGE = 5481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_NETWORK = 5482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_CARDHOLDERGROUP = 5483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ACCESSRULE = 5484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PRIVILEGES = 5485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ACCEPTEDUSEROF = 5486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_USERGROUP = 5487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENTS = 5488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES = 5489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY = 5490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY = 5492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOSTQUALITY = 5493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMUSAGE = 5494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION = 5495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNIT = 5496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNITMODEL = 5497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNITMANUFACTURER = 5498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_DOORSIDE = 5499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENABLE_ROLE = 5500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_ROLE = 5501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOUPGRADEINUSE = 5502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOUPGRADEINUSEINFO = 5503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDUPGRADE = 5504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE = 5506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_FAILED = 5507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE_FROM_CLIPBOARD = 5509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_CONFIG_APPLY_CHANGES_QUESTION = 5510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACKALARM_PRIVILEGE = 5512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENTPRIVILEGENEEDEDFORACK = 5513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACTSYSTEMADMIN = 5514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_TYPE = 5515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ERROR = 5516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ERRORS = 5517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_CONNECT_ERROR = 5521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_NOEXTENSION_ERROR = 5522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_MAXCONNECTIONS_ERROR = 5523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_EXTENSIONTYPE_ERROR = 5524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_DISCOVERYPORT_ERROR = 5525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_NODRIVER_ERROR = 5526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_UNIT_STATUS = 5527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGER = 5528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FOWARD_ALARM = 5529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLYCONFIGANDRESTARTSERVICE = 5531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASKAPPLYCONFIGANDRESTARTSERVICEL = 5532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_SOURCE_AND_DESTINATION_EXACTLYSAME = 5535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_WARNING_SOURCE_AND_DESTINATION_CONTAINS = 5536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MUST_SELECT_OPTION = 5537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SOURCEENTITYNOTFOUND = 5538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SAMEENTITY = 5539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_LOGONENTITY = 5546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SYSTEMENTITY = 5547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACK_TOGGLE = 5548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_NAME = 5549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_REPLY_PORT = 5550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_PERIOD = 5551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_PERIOD = 5552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_PERIOD = 5553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION_TIMEOUT = 5554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_PORT = 5555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_HTTPS = 5556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TCP_NOTIFICATION_PORT = 5557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTIFICATION_CHANNEL = 5558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGEMENT = 5559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGEMENT_DESCRIPTION = 5560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_LOGIN = 5561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEODATAFORMAT = 5562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUALITY = 5563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEQUALITY = 5564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFRAMEINTERVAL = 5565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROFILEANDLEVEL = 5566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOOBJECTTYPE = 5567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDINGFRAMERATE = 5568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATEPRIORITY = 5569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_REDIRECTOR_CONFIGURATION = 5570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SERVER = 5571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDIRECTORS = 5574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_MULTICAST_ENDPOINT = 5575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SERVERS = 5576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONDETECTION = 5577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IDS_LABEL_MAIN = 5578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IDS_LABEL_CORE = 5579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCEDSIMPLE = 5580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ENTRY_DELAY = 5581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATEMODE_CONSTANT = 5582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L0 = 5583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L1 = 5584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L2 = 5585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L3 = 5586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_CP_L1 = 5587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_CP_L2 = 5588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L2 = 5589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L3 = 5590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L4 = 5591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L0 = 5592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L1 = 5593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L2 = 5594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L3 = 5595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L3B = 5596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L4 = 5597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L5 = 5598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_ALLFRAMES = 5599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_ALLKEYFRAMES = 5600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_15FS = 5601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_10FS = 5602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_6FS = 5603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5FS = 5604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2FS = 5605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_1FS = 5606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2SF = 5607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5SF = 5608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_10SF = 5609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_15SC = 5610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_30SF = 5611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_1MF = 5612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2MF = 5613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5MF = 5614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_VIEW = 5615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGES = 5616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_HTTP = 5617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_TCP = 5618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_AS_UNIT = 5619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEST_AVAILABLE = 5620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_HOTACTION = 5621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_ADDRESS = 5622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOST_QUALITY_ON_MANUAL_RECORDING = 5624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOST_QUALITY_ON_EVENT_RECORDING = 5625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE = 5626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_RESOLUTION = 5627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_RESOLUTION = 5628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGE_MULTICAST_ADDRESS = 5629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITSHIGHQUALITY = 5631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITPERSECONDLOWDELAY = 5632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITPERSECONDAND256KBITPERSECONDAUDIO = 5633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFFULLMOTION25FPS = 5634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFFULLMOTION30FPS = 5635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFHIGH12FPS = 5636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFHIGH15FPS = 5637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFLOW5FPS = 5639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFLOW6FPS = 5640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM10FPS = 5641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM8FPS = 5642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM_LOW6FPS = 5643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM_LOW7FPS = 5644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFVERYLOW2FPS = 5645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_3_5MBITPERSECONDHIGHQUALITY = 5646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_3_5MBITPERSECONDLOWDELAY = 5647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4MBITPERSECONDAND256KBITPERSECONDAUDIO = 5648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFHIGH15FPS = 5649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFLOW6FPS = 5650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFMEDIUM10FPS = 5651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_5MBITPERSECONDHIGHQUALITY = 5652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_5MBITPERSECONDLOWDELAY = 5653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFFULLMOTION25FPS = 5654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFFULLMOTION30FPS = 5655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFHIGH12FPS = 5656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFHIGH15FPS = 5657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFLOW5FPS = 5659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFLOW6FPS = 5660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM10FPS = 5661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM8FPS = 5662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM_LOW6FPS = 5663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM_LOW7FPS = 5664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFVERYLOW2FPS = 5665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONHIGHBITRATE25FPS = 5667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONHIGHBITRATE30FPS = 5668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONLOWBITRATE25FPS = 5669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONLOWBITRATE30FPS = 5670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONMEDIUMBITRATE25FPS = 5671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONMEDIUMBITRATE30FPS = 5672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1HIGH12FPS = 5673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1HIGH15FPS = 5674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1LOW5FPS = 5676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM10FPS = 5677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM8FPS = 5678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM_LOW6FPS = 5679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM_LOW7FPS = 5680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1VERYLOW2FPS = 5681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_DEFAULTSETTINGS = 5682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_FULLMOTION25FPS = 5683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_FULLMOTION30FPS = 5684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH = 5685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH12FPS = 5686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH15FPS = 5687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW = 5689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW4FPS = 5690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW5FPS = 5691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM = 5693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM15FPS = 5695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM6_8FPS = 5696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM8FPS = 5697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_HIGH = 5698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_HIGH10FPS = 5699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_LOW = 5700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_LOW5_7FPS = 5702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_VERYLOW1FPS = 5706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_VERYLOW2FPS = 5707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CONFIG_PRIORITY_GROUP = 5708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CONFIG_INHERIT_FROM_PARENT = 5710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_ONLY_PRIVILEGES_BECAUSE_OF_NOT_ACCEPTED_USER = 5711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_NETWORKCARDSELECTANY = 5712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_USED = 5713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_USED_INFO = 5714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ZONES_GROUP = 5715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMDISARMZONES = 5716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_QCIF = 5717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_CIF = 5718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIF = 5719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFH = 5720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_HALFCIF = 5721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2THIRDD1 = 5722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_3QUARTERD1 = 5723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_4CIF = 5724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_D1 = 5725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_VGA = 5726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS_AND_SHAREDTASKS = 5728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARM_INTRUSION_AREA = 5729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_POSTPONED_ARMING = 5730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_INTRUSION_AREA = 5731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE_ARMING = 5732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BRIGHTNESS = 5733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTRAST = 5734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HUE = 5735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SATURATION = 5736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT = 5737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWINTRUSIONAREAS = 5738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVE_VIEWING_LIMITATION = 5739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_SETTINGS = 5742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_CANCELED_ALARM = 5743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_EXTENSIONS = 5744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ZONE_ROLE = 5745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MORE_AVAILABLE_LOGICAL_IDS = 5746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGICAL_MUST_BE_ASSIGNED_A_VALUE = 5747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ASSIGN_LOGICAL_ID_BECAUSE_RESERVED = 5748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLE_MONITORING = 5749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ZONE_ARM = 5750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ZONE_DISARM = 5751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_CUSTOM_EXECUTE = 5752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_MULTIPLE_ADDRESSES = 5755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SINGLE_ADDRESSE = 5756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_MULTIPLE_PORTS = 5757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SINGLE_PORT = 5758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY = 5764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMED_GRACE_PERIOD = 5765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_DOWN_SOUNDER = 5766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR = 5767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_SCHEDULE = 5768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VSIP_PORT = 5769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_SSL_CONNECTION = 5772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_AREAS = 5777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AGENT = 5778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AGENTS = 5779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_AGENTS = 5780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MUST_SELECT_DESTINATION = 5782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_CANT_GET_SOURCE = 5783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISARM = 5784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_PERIMETER_ARM = 5785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_MASTER_ARM = 5786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COLORPALETTE = 5787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DISK_GROUP = 5789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_MASTER_ARM_REQUEST = 5790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_PERIMETER_ARM_REQUEST = 5791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DISARM_REQUEST = 5792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_MAXVARIABLE_IMAGEQUALITY = 5793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_ARMED = 5794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DISARMED = 5795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_WARNING_SHARED_STREAM_CONFIG = 5796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_NULL_LOGICAL_IDS = 5797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_DOWN = 5798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_UP = 5799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_RIGHT = 5800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_LEFT = 5801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_ON_OFF = 5802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_OK = 5803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_STATIC_DOWNSAMPLING = 5804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_LOWLATENCY = 5806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_VARIABLEBITRATE = 5807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEAUDIO = 5808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_LIVE_STREAM = 5809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SELECT_STREAM = 5810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ARCHIVER_EVENT = 5811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUP_OPTION_UI_ENHANCEMENT = 5813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_SHOW_LOGICAL_ID = 5814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_SECURITYCENTER = 5815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_TASK_FORWARDER_NAME = 5818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_TASK_FORWARDER_DESCRIPTION = 5819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPTYPE = 5820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBPAGE = 5821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPFILE = 5822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIEW = 5823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_SET = 5824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_BASE_PATH = 5825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FREE_SPACE = 5826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_SPACE = 5827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOTED_SPACE = 5828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_SIZE = 5829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTITLED_DISK_GROUP = 5830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ALL_VIDEO_STREAMS_AS_SEPARATE_CAMERAS = 5831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREVIOUS_BOOKMARK = 5832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEXT_BOOKMARK = 5833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVERGAGE_DISK_USAGE = 5834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ESTIMATED_RECORDING_TIME = 5835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_CAMERAS = 5836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_SPAN = 5837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORSTCASE_BANDWITH = 5838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXECUTE_COMMAND = 5841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MPEG4 = 5842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MPEG2 = 5843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MJPEG = 5845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H264 = 5846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_CHECK_AUTO_QUALITY = 5847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_I = 5849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IP = 5850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IPB = 5851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IPBB = 5852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG2STREAMINGTYPE_VES = 5854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG2STREAMINGTYPE_PRG = 5855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_STREAMINGTYPE = 5856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_GOPMODE = 5857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_GOPLENGTH = 5858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEOFILEREPORT = 5859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FULL = 5860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_UNIT = 5861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_UNITS = 5862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INTRUSION_UNIT_COUNT = 5863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_DISK_MUST_BE_SELECTED = 5865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNSUPPORTED_G64_VERSION = 5867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEEP_DELETED_GROUP_NETWORK_LOCATIONS = 5868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SHOULD_HAVE_ZONE_MANAGER_PARENT = 5870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SHOULD_HAVE_ACCESS_MANAGER_PARENT = 5871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOOMANYSYSTEMS_FORMAT = 5872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TASK_NOT_A_REPORT = 5874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_CAMERAS = 5875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK = 5876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USED_SPACE = 5877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_SPACE = 5878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RW = 5879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_AREA_POSTPONED_ARM_REQUEST = 5880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_AREA_CANCEL_POSTPONE_ARM_REQUEST = 5881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ACCESS_BEHAVIORS_TOGGLE_STATE = 5883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_TYPE = 5884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TASK_FORWARDER_NOT_PRESENT = 5885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_ADDRESS = 5887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_UNIT_OPTION_CLEAR_LOG_AFTER_DOWNLOAD = 5888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_OVERWRITE = 5889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAVAILABLE = 5890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_OPEN_TOO_LONG_EVENT_AFTER = 5891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE = 5892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE_WIDGET_TOOLTIP = 5893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MEDIA_ROUTER_UNAVAILABLE = 5894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_WORKSPACE = 5895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_STARTSTOP_GUARDTOUR = 5896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_SECURITYDESK_OPTIONS = 5897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_DEACTIVATED = 5898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_TILE_CONTEXT = 5899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_TILE_PATTERN = 5900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_CLIENT_VIEWS = 5901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DIGITAL_ZOOM = 5903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_OVERRIDE_VIDEO_QUALITY = 5904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERA_ANALYTIC = 5905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECAMERASEQUENCE = 5906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCAMERASEQUENCE = 5907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_READ_G64 = 5909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEVIDEOUNITS = 5910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVIDEOUNITS = 5911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWVIDEOUNITS = 5912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGES_ADDDELETECASHREGISTERS = 5916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_STARTSTOPSEQUENCE = 5918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HARDWARE = 5919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOUNIT_FIRMWAREUPGRADE = 5920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_RECORDING_ACTION_DURATION = 5921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_RECORDING_ACTION_DELAY = 5922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_PROTECTION_DURATION = 5923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCAMERASEQUENCE = 5924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_PROTECTION_AND_KEEP_PROTECT_NEXT_VIDEO = 5925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_PROTECTION_ACTION_DELAY = 5926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EVENTSCOUNT = 5928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COMMAND_PROTECT_VIDEO_FILE = 5929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COMMAND_UNPROTECT_VIDEO_FILE = 5930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_NOT_FOUND = 5931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURRED = 5932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFIGURATION_MISSING = 5933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIED_SERVER_UNAVAILABLE = 5934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENTITY_NOT_FOUND = 5935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_STATUS_EXPORTING = 5936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_UNPROTECTED = 5937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_RPOTECTIONENDING = 5938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_PROTECTED = 5939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_PROTECTION_END_DATE = 5940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_INFINITE = 5941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_RELATIVE_DATE = 5942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_ABSOLUTE_DATE = 5943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_NONE = 5945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_LOW = 5946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_MEDIUM = 5947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_HIGH = 5948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_SM4 = 5949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_MPEG4 = 5950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_MPEG4_ASP = 5951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE = 5952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE = 5953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_BOSCH_MPEG4 = 5954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_VERINT_SM4 = 5955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_IP = 5956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_FINISHED = 5957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE = 5958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_FW_IN_PROGRESS_EXIT = 5960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_FILES = 5961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_TRANSPORT = 5962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DONE = 5963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENT1 = 5964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENT2 = 5965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_FORWARDER_SEND_EMAIL_FAILED = 5966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PROTECT_VIDEO = 5967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNPROTECT_VIDEO = 5968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DEGREES = 5969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE_ABSOLUTE = 5970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE_RELATIVE = 5971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_ZOOM_FACTOR = 5973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_ZOOM_FACTOR = 5974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION = 5975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USE_CURRENT_POSITION = 5976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTORE_FACTORY_DEFAULT = 5977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_UNIQUE_DISCOVERY_PORT = 5981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DISCOVERY_PORT_RANGE = 5982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_MULTICAST_DISCOVERY = 5983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_UNICAST_REPLIES = 5984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKETS_PER_SECONDS = 5985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CA_CERTIFICATE = 5986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL_PASSWORD = 5987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_TASKS = 5989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENTITIES_WERE_NOT_ADDED = 5990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TRACKING_LIMIT_REACHED_FORMAT = 5991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUTOVU_NAME = 5992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4_NETWORK_IP_PREFIX = 5993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_OFF = 5994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_FULL = 5995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLACK = 5996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WHITE = 5997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ON = 5998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LOW = 5999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MEDIUM = 6000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HIGH = 6001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANUAL = 6002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOSTATS = 6003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTORESP = 6004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ONEPOINTCAL = 6005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_GRAYSCALE = 6006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOPOLARITY = 6007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WINDOWHEATER = 6008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HISTOGRAM = 6009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOLEVEL = 6010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOGAIN = 6011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGLMODE = 6012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START_SEQ = 6013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_INSERT_PRESET_SEQ = 6014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEAR_SEQUENCE = 6015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHOW_SEQUENCE = 6016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SEQ_DWELL = 6017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUX_ON_OFF = 6018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN = 6019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_SETUP = 6020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SAVE_PRESET_SPEED = 6021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_INSERT_PRESET = 6022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_OFF = 6023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_ON = 6024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SEQUENCE = 6025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET = 6026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SECONDS = 6027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RELAY = 6028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RIGHT = 6029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LEFT = 6030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SPEED = 6031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LIMIT = 6032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START = 6033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_STACK = 6034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HOURS = 6035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MINUTES = 6036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_FACTORY_DEFAULT = 6037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_STOP_TIME = 6038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_TIME = 6039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_TIME = 6040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_R_GAIN = 6041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_B_GAIN = 6042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWB_MODE = 6043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_ALC = 6044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_PLC = 6045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MAX_DIGITAL_ZOOM = 6046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DSS_LIMIT = 6047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EXPOSURE_PRIORITY = 6048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTLE_PRIORITY = 6049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AE_MODE = 6050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC = 6051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC = 6052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WDR = 6053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_OFF_GATE = 6054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_ON_GATE = 6055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_CTRL_MTHD = 6056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DOME_RESET = 6057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_OFF = 6058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_TILTINGATDOWN = 6059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_ATDOWN = 6060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_GAINUP = 6061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_GAINDOWN = 6062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_LIFTUP = 6063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_LIFTDOWN = 6064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_ADVANCESYNC = 6065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_RETARDSYNC = 6066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_UNIT = 6067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_CAMERA = 6068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_FACTORY = 6069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_DIGITALZOOM_DISABLE = 6070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_DIGITALZOOM_ENABLE = 6071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_STEADYSHOT_ENABLE = 6072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_STEADYSHOT_DISABLE = 6073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_OFF = 6074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_ON = 6075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_TOGGLE = 6076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_PSPEED_DISABLE = 6077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_PSPEED_ENABLE = 6078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS_ON = 6079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS_OFF = 6080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS_ON = 6081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS_OFF = 6082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTOTRACKING_RUNNING = 6083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTOTRACKING_NOTRUNNING = 6084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_STOP_ALL_PATTERNS = 6085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NIGHTMODE_ON = 6086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NIGHTMODE_OFF = 6087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_AUTO = 6088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_MANUAL = 6089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_FAR_FIX = 6090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_DOME = 6091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_ONE_SHOT = 6092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_BACKLIGHT_ON = 6093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_BACKLIGHT_OFF = 6094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_AUTO = 6095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_60 = 6096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_100 = 6097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_AUTO = 6098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_LOCK = 6099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE2 = 6100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_FLUORESCENT_L = 6101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_FLUORESCENT_H = 6102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_MERCURY = 6103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_SODIUM = 6104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_HALOGEN = 6105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_ONE_SHOT = 6106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSURE_AUTO = 6107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSURE_LOCK = 6108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_OFF = 6109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_ON = 6110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_ONE_PUSH_AF = 6111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSED_AUTO = 6112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSED_MANUAL = 6113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_PRO = 6114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE3 = 6115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FADING = 6116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITEFADE = 6117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_RESET = 6118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PT_INIT1 = 6119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PT_INIT2 = 6120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SER_RCON = 6121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SER_RCOFF = 6122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REMOTE_COMMAND_PASSO = 6123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REMOTE_COMMAND_PASSN = 6124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_CASCADE_ON = 6125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_CASCADE_OFF = 6126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENTER_HOST_MODE = 6127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENTER_LOCAL_MODE = 6128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SCREEN_OFF = 6129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SCREEN_ON = 6130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SCREEN_TITLE_OFF = 6131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SCREEN_TITLE_ON = 6132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE0 = 6133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE1 = 6134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE2 = 6135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE0 = 6136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE1 = 6137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE2 = 6138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DEFAULT_RESET = 6139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE0 = 6140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE1 = 6141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NOTIFY_OFF = 6142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NOTIFY_ON = 6143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_GLOBAL_NOTIFY_OFF = 6144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_GLOBAL_NOTIFY_ON = 6145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AE_LOCK_OFF = 6146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AE_LOCK_ON = 6147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_NORMAL = 6148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_GREEN_ON = 6149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_ALL_OFF = 6150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_RED_ON = 6151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_ORANGE_ON = 6152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_ON = 6153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_ID_ON = 6154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_ID_OFF = 6155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_POWER = 6156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_FOCUS = 6157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_ACTIVATE_FOCUS = 6158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_INIT = 6159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_OSD = 6160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_CHANGE_OSD = 6161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_BACKLIGHT = 6162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_FLICKER = 6163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_DIGITAL_EFFECTS = 6164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_MIRROR = 6165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_NEGATIVE = 6166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_COLOR = 6167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_SWITCH_AWB = 6168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESTOREFACTORYDEFAULTS = 6169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESTORESTOREDDEFAULTS = 6170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SAVESETTINGSDEFAULT = 6171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESETCALIBRATION = 6172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_STARTAUTOSCAN = 6173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_STOPAUTOSCAN = 6174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_ENABLEAUTOSCANPWRUP = 6175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_DISABLEAUTOSCANPWRUP = 6176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_ENABLEUSRLIMITS = 6177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_DISABLEUSRLIMITS = 6178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMINPANLIMIT = 6179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMAXPANLIMIT = 6180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMINTILTLIMIT = 6181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMAXTILTLIMIT = 6182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_REINIT = 6183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RESET = 6184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_WB_RED = 6185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_WB_BLUE = 6186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_ALL_OFF = 6187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_RIGHT_ON = 6188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_RIGHT_OFF = 6189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_SHOT_KEY_RELEASE = 6190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_ALL_ON = 6191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_LEFT_ON = 6192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_LEFT_OFF = 6193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ALL_OFF = 6194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WIPER_OFF = 6195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WASHER_OFF = 6196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_LIGHT_OFF = 6197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_IRIS = 6198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_PAN_OFF = 6199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_NORMAL_OFF = 6200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_ALARM_OFF = 6201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_COLOR = 6202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_IR_CUT_FILTER_OFF = 6203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ZOOM_EXTENDER_OFF = 6204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_FOCUS = 6205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_WHITE_BALANCE = 6206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_CAMERA_SWITCHOVER = 6207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WIPER_ON = 6208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WASHER_ON = 6209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_LIGHT_ON = 6210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_IRIS = 6211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_PAN_ON = 6212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_NORMAL_ON = 6213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_ALARM_ON = 6214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_BW = 6215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_IR_CUT_FILTER_ON = 6216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ZOOM_EXTENDER_ON = 6217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_FOCUS = 6218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_WHITE_BALANCE = 6219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_CAMERA_SWITCHOVER = 6220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_CONTINUE = 6221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_5MIN_STEPS = 6222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_30MIN_STEPS = 6223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_1HR_STEPS = 6224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP2_WIPER_SPEED = 6225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST1 = 6226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST2 = 6227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST3 = 6228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST4 = 6229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST5 = 6230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ERROR_CLEAR = 6231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_AUTO_PAN_TIMER_CLEAR = 6232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_STATUS_REQUEST = 6233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_POWER_ON_RESQUEST = 6234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ALL_CLEAR = 6235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ACCESS_LEVEL_REQUEST = 6236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_RECALL_LAST_POSITION = 6237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_ALARM_CLEAR = 6238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_RECALL_ALARM = 6239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_CLEARALL_PRESETS = 6240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ALL_ALARM_PRESET_CLEAR = 6241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ENTER_ALARM_PRESET = 6242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ENTER_LOCAL_ALARM = 6243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_SET = 6244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_SET = 6245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_BYPASS = 6246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_BYPASS = 6247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_TIMING = 6248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_TIMING = 6249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_ZOOM = 6250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_IRIS = 6251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_FOCUS = 6252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_TIMEOUT = 6253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DZ = 6254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DF = 6255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DI = 6256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_AUX_RELAY = 6257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_ANALOG_OUTPUT = 6258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_BRIGHTNESS_INC = 6259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_BRIGHTNESS_DEC = 6260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CONTRAST_INC = 6261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CONTRAST_DEC = 6262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CURSOR = 6263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_ST = 6264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CALIBRATE_WITH_SHUTTER = 6265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CALIBRATE_WITHOUT_SHUTTER = 6266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_POLARITY = 6267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_AUTO = 6268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PANTILT_RESET = 6269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HOMING_CYCLE = 6270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTOR_REVERSE = 6271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTOR_NORMAL = 6272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOMENTARY_RELAY_DURATION = 6273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOHOME_PERIOD = 6274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOFOCUSOFF = 6275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOIRISON = 6276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOIRISOFF = 6277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ON = 6278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_OFF = 6279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STARTPATTERN = 6280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STOPPATTERN = 6281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_TARGETTRACKINGON = 6282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_TARGETTRACKINGOFF = 6283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INFRARED_ON = 6284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INFRARED_OFF = 6285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTO_FOCUS_ON = 6286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTO_FOCUS_OFF = 6287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_UP = 6288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_DOWN = 6289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_ON = 6290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_OFF = 6291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_COLOR = 6292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_MONO = 6293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAY = 6294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_NIGHT = 6295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_CAM_ON = 6296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_CAM_OFF = 6297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_HIGH_POWER = 6298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_LOW_POWER = 6299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_TX_ON = 6300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_TX_OFF = 6301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_FOV_TOGGLE = 6302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLACK_HOT = 6303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WHITE_HOT = 6304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTOCAL_ON = 6305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTOCAL_OFF = 6306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_HIGH_SENSITIVITY = 6307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_LOW_SENSITIVITY = 6308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_ON = 6309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_OFF = 6310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAYMODE_OFF = 6311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAYMODE_ON = 6312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_D_ZOOM_ON = 6313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_D_ZOOM_OFF = 6314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IRIS_CAM_RESET = 6315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALC_ON = 6316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ELC_ON = 6317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANUAL_IRIS_ON = 6318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_ON = 6319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_OFF = 6320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_AUTO = 6321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_BURST_ON = 6322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_BURST_OFF = 6323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_ON = 6324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_OFF = 6325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_INC = 6326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_DEC = 6327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_100 = 6328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_250 = 6329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_500 = 6330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_1000 = 6331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_2000 = 6332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_4000 = 6333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_10000 = 6334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_ON = 6335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_OFF = 6336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_INC = 6337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_DEC = 6338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_ON = 6339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_OFF = 6340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_INC = 6341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_DEC = 6342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_LOW = 6343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_MID = 6344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_HIGH = 6345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_LOW = 6346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_MID = 6347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_HIGH = 6348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_MODE_AUTO = 6349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_MODE_PRESET = 6350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_START = 6351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_END = 6352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_ON = 6353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_OFF = 6354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_CLEAR = 6355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_REVERSE = 6356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_UP = 6357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_RIGHT = 6358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_DOWN = 6359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_LEFT = 6360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWC_ON = 6361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWC_RESET = 6362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ATW_ON = 6363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_UP_PLUS = 6364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_UP_MINUS = 6365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_STOP = 6366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_RESET = 6367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LINE_LOCK_ON = 6368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LINE_LOCK_OFF = 6369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EL_ZOOM_ON = 6370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EL_ZOOM_OFF = 6371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRIVACY_ZONE_ON = 6372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRIVACY_ZONE_OFF = 6373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTION_DETECT_ON = 6374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTION_DETECT_OFF = 6375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_D_RANGE_ON = 6376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_D_RANGE_OFF = 6377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALL_RESET = 6378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DIGITAL_FLIP_ON = 6379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DIGITAL_FLIP_OFF = 6380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_SMALL = 6381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_MIDDLE = 6382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_LARGE = 6383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_REVERSE = 6384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_LEFT_END_SET = 6385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_RIGHT_END_SET = 6386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SPEED_INC = 6387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SPEED_DEC = 6388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ENDLESS_ON = 6389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ENDLESS_OFF = 6390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_KEY_AUTO_PAN = 6391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_KEY_SEQ = 6392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SORT = 6393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PROPO_PAN_TILT_ON = 6394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PROPO_PAN_TILT_OFF = 6395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PAN_LIMIT_ON = 6396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PAN_LIMIT_OFF = 6397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_SEQ_OFF = 6398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_MODE_SEQ_ON = 6399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_MODE_SORT_ON = 6400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_POS_ID_ALLCLEAR = 6401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_1_OFF = 6402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_1_POSI = 6403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_2_OFF = 6404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_2_POSI = 6405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_3_OFF = 6406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_3_POSI = 6407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_OFF = 6408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_POSI = 6409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_BW = 6410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_OFF = 6411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_AUX_1 = 6412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_VMD = 6413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_OFF = 6414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_AUX_2 = 6415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_BW = 6416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_STARTPOINT = 6417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_ENDPOINT = 6418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOMODE_OFF = 6419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SUPER_DII_ON = 6420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SUPER_DII_OFF = 6421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOFOCUSON = 6422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_NESW_ON = 6423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_USER_ON = 6424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_OFF = 6425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REFRESH = 6426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_ON = 6427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_OFF = 6428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_INC = 6429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_DEC = 6430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LL_PHASE_INC = 6431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LL_PHASE_DEC = 6432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEANING_ON = 6433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEANING_OFF = 6434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START_PRESETSEQ = 6435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_STOP_PRESETSEQ = 6436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS = 6437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS = 6438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_ADDRESSSET = 6439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IFCLEAR = 6440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_COMMANDCANCEL = 6441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CAMPOWERON = 6442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CAMPOWEROFF = 6443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOFOCUSON = 6444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MANUALFOCUSON = 6445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEAUTO = 6446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEINDOOR = 6447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEOUTDOOR = 6448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEONEPUSHMODE = 6449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEONEPUSHTRIGGER = 6450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOEXPOSUREFULLAUTO = 6451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOEXPOSUREMANUAL = 6452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AESHUTTERPRIORITY = 6453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEIRISPRIORITY = 6454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEBRIGHTMODE = 6455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTRESET = 6456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTUP = 6457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTDOWN = 6458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERRESET = 6459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERUP = 6460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERDOWN = 6461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISRESET = 6462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISUP = 6463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISDOWN = 6464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINRESET = 6465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINUP = 6466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINDOWN = 6467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BACKLIGHTON = 6468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BACKLIGHTOFF = 6469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_KEYLOCKOFF = 6470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_KEYLOCKON = 6471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVEON = 6472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVEOFF = 6473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVERETURNON = 6474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVERETURNOFF = 6475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_HOME = 6476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PANTILTRESET = 6477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_DATASCREENON = 6478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_DATASCREENOFF = 6479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEFORTARGETON = 6480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEFORTARGETOFF = 6481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOZOOMFORTARGET = 6482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOZOOMFORTARGETOFF = 6483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FRAMEDISPLAYFORTARGETON = 6484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FRAMEDISPLAYFORTARGETOFF = 6485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETOFFSETON = 6486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETOFFSETOFF = 6487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETSTARTSTOP = 6488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE1 = 6489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE2 = 6490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE3 = 6491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE123 = 6492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY1 = 6493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY2 = 6494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY3 = 6495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY4 = 6496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONON = 6497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONOFF = 6498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONFRAME = 6499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONDETECT1212 = 6500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTRACKINGLOSTINFO = 6501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONLOSTINFO = 6502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE1ON = 6503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE1OFF = 6504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE2ON = 6505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE2OFF = 6506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMORIENTATION_NONINVERTED = 6507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMORIENTATION_INVERTED = 6508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_ON = 6509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_OFF_AT_POR = 6510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_OFF = 6511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CYCLE_WIPER = 6512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_IRLAMP_ON = 6513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_IRLAMP_OFF = 6514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_SLOWSHUTTER_ON = 6515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_SLOWSHUTTER_OFF = 6516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_CAM_STABILIZATION_ON = 6517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_CAM_STABILIZATION_OFF = 6518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_MENU_ON = 6519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_MENU_OFF = 6520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUENTER = 6521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUUP = 6522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUDOWN = 6523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENULEFT = 6524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENURIGHT = 6525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_ZOOMIN = 6526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_ZOOMOUT = 6527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_STOP_ZOOM = 6528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_MOUNT_CEILING = 6529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_MOUNT_DESKTOP = 6530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_TOURRESUME_ON = 6531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_TOURRESUME_OFF = 6532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_PANTILT_SPEED_ON = 6533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_PANTILT_SPEED_OFF = 6534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_COLOR_COLOR = 6535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_COLOR_BLACK = 6536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_CAMERA_INIT = 6537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_DISABLE = 6538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_AUTO = 6539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_MANUAL = 6540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_TIMER = 6541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_ON = 6542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_OFF = 6543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INIT_COMPSCAN = 6544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CUSTOM_RESET = 6545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CUSTOM_SET = 6546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DISPINFO_ON = 6547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DISPINFO_OFF = 6548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TALLY_ON = 6549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TALLY_OFF = 6550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TILTREVERSE_ON = 6551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TILTREVERSE_OFF = 6552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_PANREVERSE_ON = 6553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_PANREVERSE_OFF = 6554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DATAMIX_ON = 6555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DATAMIX_OFF = 6556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREFLIP_ON = 6557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREFLIP_OFF = 6558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_RESET = 6559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_UP = 6560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_DOWN = 6561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_RESET = 6562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_UP = 6563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_DOWN = 6564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_ON = 6565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_OFF = 6566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_RESET = 6567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_UP = 6568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_DOWN = 6569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_RESET = 6570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_UP = 6571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_DOWN = 6572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_OFF = 6573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_NEGART = 6574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_MONO = 6575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_WIDE_OFF = 6576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_WIDE_ON = 6577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_SENSOR = 6578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR1_ON = 6579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR1_OFF = 6580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR2_ON = 6581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR2_OFF = 6582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_MANUAL_FUNC_ON = 6583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_MANUAL_FUNC_OFF = 6584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_ON = 6585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_OFF = 6586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_RESET = 6587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_UP = 6588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_DOWN = 6589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AE_SPOT_ON = 6590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AE_SPOT_OFF = 6591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MIRROR_IMAGE_ON = 6592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MIRROR_IMAGE_OFF = 6593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FREEZE_IMAGE_ON = 6594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FREEZE_IMAGE_OFF = 6595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_INFRARED_ON = 6596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_INFRARED_OFF = 6597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IR_ON = 6598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IR_OFF = 6599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_AUTO_IR_ON = 6600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_AUTO_IR_OFF = 6601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IMAGE_FLIP_ON = 6602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IMAGE_FLIP_OFF = 6603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_COORDINATESOFF = 6604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_COORDINATESON = 6605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_FLASHBACK = 6606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_BACKSPACE = 6607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_0 = 6608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_1 = 6609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_2 = 6610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_3 = 6611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_4 = 6612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_5 = 6613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_6 = 6614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_7 = 6615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_8 = 6616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_9 = 6617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_DOWN = 6618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_ENTER = 6619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_ESCAPE = 6620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_LEFT = 6621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_RIGHT = 6622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_UP = 6623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_NIGHTMODE = 6624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_SWITCH_BLC = 6625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_RESET = 6626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_HOME = 6627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_DEFINETOUR = 6628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_STARTTOUR = 6629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_STOPTOUR = 6630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_TOGGLEBW = 6631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOBW = 6632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_CAMERASETUP = 6633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_PRIVACY = 6634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS = 6635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HALT = 6636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_TEXTFILES = 6637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PROTOCOL = 6638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_ADDRESS = 6639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINKS = 6640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEAKER = 6641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MICROPHONE = 6642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_INVALID = 6643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_PLUGIN = 6644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PTZ_COORDINATES = 6645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO = 6646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO = 6647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_BOTH_SIDES = 6648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_INDIVIDUAL_SIDES = 6649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_NO_READER_FOR_SIDE_X = 6650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_DELAY = 6652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_DELAY = 6653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NETWORK_LOCATION = 6654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_TEXTFILES = 6656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILENAME_DEFAULT_FIRMWAREUPGRADE_LOG = 6657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLED_BY = 6658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_UNIT = 6659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_ZONEMANAGER = 6660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_UNIT_COPIE = 6661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSCONTROL_ZONE = 6662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSCONTROL_ZONE_DESCRIPTION = 6663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_ZONE = 6664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_ZONE_DESCRIPTION = 6665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PTZ_NO_SERIAL_PORT = 6666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_NIREMITTER_ON = 6667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_NIREMITTER_OFF = 6668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFRESH_DRIVE_INFO = 6669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_SENSITIVITY_NORMAL = 6670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_SENSITIVITY_LOW = 6671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_NORMAL = 6672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_ZOOM_TRIGGER = 6673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INIT_LENS = 6674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEAUTO = 6675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEMANUAL = 6676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_SOURCE = 6677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_DELAYS = 6678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_BUZZER = 6679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_PROGRESS = 6680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_INTERVAL = 6681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEMANUAL = 6682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCDLG_WHITEBALANCEATW = 6683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SLOW_SHUTTER_AUTO = 6684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SLOW_SHUTTER_MANUAL = 6685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_SETTINGS = 6686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_GUARDTOUR_ONLOGON = 6687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_THUMBNAIL = 6688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CASH_REGISTER_PROPERTIES = 6689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CASH_REGISTER_ID_ALREADY_EXISTS = 6690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MENU_MODE = 6691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_ERROR_OVERLAP = 6695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_PROGRESS_COMPLETE = 6697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_UNIT_EXTENSION_TYPE = 6699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_UNIT_VERTX = 6700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_FOLDER = 6701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SWAP = 6703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOLD_MOUSEDOWN_TO_EXECUTE_INSTANTLY = 6706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTION_DOOR_SET_NEW_SCHEDULE = 6707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTION_DOOR_REMOVE_SCHEDULE = 6708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_OR_OVERRIDE_DOOR_SCHEDULE = 6709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_INFO_OVERRIDE_DOOR_SCHEDULE = 6710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_DURATION = 6711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_FOR_DARK_IMAGES = 6712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_LEVEL = 6713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_SWAP_UTILITY = 6714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ARM = 6715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECURSIVE_ACTION_WARNING_FORMAT = 6716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED = 6717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ARMED = 6720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED = 6721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_EXTENSION_SELECTED = 6722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ARM_RECURSIVE = 6723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISARM_RECURSIVE = 6724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_MASTER_ARM_RECURSIVE = 6725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_OVERRIDE_SCHEDULE_RECURSIVE = 6726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_PERIMETER_ARM_RECURSIVE = 6727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ADDBOOKMARK_RECURSIVE = 6728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STARTRECORDING_RECURSIVE = 6729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STOPRECORDING_RECURSIVE = 6730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_SERVER_ROLES_ASSOCIATION = 6731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_IN = 6732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIC_IN = 6733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_USERGROUP_WITH_MEMBERS = 6734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_STREAM = 6735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIAL = 6736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN = 6737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUT = 6738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_UNITDEVICES_NAMES = 6739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOWALARMPAGE = 6740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_RECORDING = 6741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_LIVE = 6742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_PLAYBACK = 6743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_PREVIOUS_TILE = 6744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_NEXT_TILE = 6745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAYENTITY = 6747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAYCONTENT = 6748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CYCLE_PREVIOUS_PATTERN = 6749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CYCLE_NEXT_PATTERN = 6750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DBCONNECTIONSUCCES_FORMAT = 6752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DBCONNECTIONFAILED_FORMAT = 6753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INITIALIZATIONFAILEDSPECIFIC_FORMAT = 6754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INITIALIZATIONFAILED_FORMAT = 6755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_ROLE_STOPPED = 6756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONSUCCESS = 6757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONFAILED = 6758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_LOADFAILED = 6759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_STARTSUCCESS = 6760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_STARTFAILED = 6761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPSTARTED = 6762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPSUCCEEDED = 6763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPFAILED = 6764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_PROTECTIONTHRESHOLDEXCEEDED = 6765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CCTV_KEYBOARD_CONNECTED = 6766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DEFAULT_LOGIN = 6767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEO_FILES_STATS = 6768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LOGICALIDEXIST = 6769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SYNCHRONIZING_VIDEO = 6770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZ_UNLOCK = 6771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECENTLY_USED = 6773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_VIEW_ENTITY_TYPES = 6774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_VIEW_ENTITY_TYPES = 6776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS_TROUBLESHOOTING = 6777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANT_DRAW_CHART = 6778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HEALTH_HISTORY = 6779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DOOR_UNLOCK = 6781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_PERCENTAGE = 6783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTIL = 6785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERCENTAGE = 6786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKED_BY = 6787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_GIGABYTES = 6788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_LC = 6794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_READING_FILE = 6795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_EDGE_ANALYTICS_CAMERAS = 6796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CANCELOVERRIDE_RECURSIVE = 6797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TRAIL_ADD = 6800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_USER_CONTROL = 6801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGES_FORCE_REBOOT = 6802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOCATION_ALREADY_ADDED = 6803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESOURCES = 6804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_WATERMARK_NOT_SUPPORTED_BY_ALL_SEQUENCES = 6805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPEVENTHISTORY = 6806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPAUDITTRAILS = 6807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPINCIDENTS = 6808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLYDISPLAYCHECKEDITEMS = 6809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYALLITEMS = 6810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETODELETEINUSEINFO = 6811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDDELETE = 6812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_GROUP = 6813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADVANCED_SETTINGS = 6814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_BAR = 6816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ALARMS = 6817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_PERIOD = 6818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_DUE_TIME = 6819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERAACTIVITYREPORT = 6820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARCHIVERACTIVITYREPORT = 6821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOFILEREPORT = 6822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_LPRMANAGER_NAME = 6823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNAL_SYSTEM_DESCRIPTION_LPRMANAGER = 6824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROTECT_ARCHIVES = 6825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DATABASE_NEEDUPGRADE = 6826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO = 6827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_RTPSERVERSUCCESS_FORMAT = 6828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_RTPSERVERFAILED_FORMAT = 6829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTED_FORMAT = 6830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTOPPED_FORMAT = 6831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SERVERNOTRUNNING_FORMAT = 6833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CREATEAGENTFAILED_FORMAT = 6834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CREATEDEFAULTAGENTFAILED = 6835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTFAILED_FORMAT = 6836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTFAILED = 6837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATIONFAILED_PASSWORDERRORINFO = 6838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE_CONNECTION_NOINFO = 6839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE_CONNECTION_INFO = 6840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE = 6841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_DETECTION_LOCATION = 6842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ZONE = 6843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ON_THRESHOLD = 6844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_OFF_THRESHOLD = 6845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_TEST_ZONE = 6846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_TEST_ALL_ZONES = 6847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_VIEW_ALL_MOTION = 6848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ON_EVENT = 6849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_OFF_EVENT = 6850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_EVENTS = 6851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_ADVANCED_SETTINGS = 6852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_LUMA_WEIGHT = 6853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_CHROMA_WEIGHT = 6854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_VECTORS_WEIGHT = 6855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_MACROBLOCKS_WEIGHT = 6856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_LEARNING_MODE = 6857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORTPANE = 6859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_CANVASPANE = 6860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORTANDCANVASPANE = 6861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SILENCE_SOUND_BUZZER = 6865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAINTENANCE_MODE = 6866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EMAIL_REPORT = 6867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_ASF_FORMAT = 6868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISPLAY_ENTITY_IN_SD = 6869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_TASK = 6870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_TASK = 6871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_TASKS = 6872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_OTHERTASKS = 6873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_INTERFACE = 6874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_ADD_FOLDER = 6875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_NOT_ACCESSIBLE = 6876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_MUST_BE_WRITABLE = 6877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PORT_ALREADY_EXISTS = 6878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CASH_REGISTER_MAPPINGS_INVALID = 6879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHORTCUT_USED = 6881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONNECT = 6882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISCONNECT = 6883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXIT = 6887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGED = 6891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_RESTART_APPLY = 6892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTIONS_APPLY = 6893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED = 6894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_AUTHENTICATED = 6896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_TAMPERED = 6897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_RUNNING_ROLE = 6898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_FILE = 6899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATING = 6900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_RECORDING = 6901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_AUDIO = 6902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_SPECIFIC_DATABASE = 6903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOW = 6904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESET_PEOPLE_COUNT = 6908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAS_GROUP = 6909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PATTERN_STOP_REC = 6910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_PORT_RANGE = 6911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_UPNP = 6912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICK_TO_MODIFY = 6913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_PPROTECTION_STATUS = 6914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_EXPORT_IN_PROGRESS = 6916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_LICENSEDENIED = 6917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_PERMISSIONDENIED = 6918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFEXP = 6919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFV = 6920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOURCE_IP_CONFLICT = 6921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_H264ANDMJPEG = 6922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_JPEG = 6923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_BOTH = 6924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_DISK_GROUP_SHOULD_BE_EMPTY = 6925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_TRANSACTION_HEADER_TABLE = 6926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_TRANSACTION_DETAILS_TABLE = 6927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_FETCH_TRANSACTIONS_EVERY = 6928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_OUPUT = 6929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTP_STREAMING_MODE = 6930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VOLUME = 6931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSIVITY = 6932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENTHESES_FORMAT = 6933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE = 6934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS = 6935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_MIX_YEARLY_MONTHLY = 6936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_DAY_BEFORE = 6937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_DAY_AFTER = 6938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_STREAMS = 6939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM_CODEC = 6940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_DETAILS = 6941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_ENDING = 6942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_METADATA_ENGINE = 6943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISKGROUP = 6944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODER_X = 6945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_LAYOUT = 6946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_LUMA_EMPHASIS = 6947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_VECTOR_EMPHASIS = 6948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_PRESET = 6949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBALREADYEXIST_OVERWRITE = 6951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATING_THUMBNAILS = 6952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THUMBNAILS_NOT_SUPPORTED = 6953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCMINUS11_STANDARDABBR = 6954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PARAGUAY_STANDARDABBR = 6955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PARAGUAY_DAYLIGHTABBR = 6956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARGENTINA_STANDARDABBR = 6957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARGENTINA_DAYLIGHTABBR = 6958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCMINUS02_STANDARDABBR = 6959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOROCCO_STANDARDABBR = 6960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOROCCO_DAYLIGHTABBR = 6961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTC_STANDARDABBR = 6962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SYRIA_STANDARDABBR = 6963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SYRIA_DAYLIGHTABBR = 6964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MAURITIUS_STANDARDABBR = 6965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MAURITIUS_DAYLIGHTABBR = 6966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PAKISTAN_STANDARDABBR = 6967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PAKISTAN_DAYLIGHTABBR = 6968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_BANGLADESH_STANDARDABBR = 6969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_BANGLADESH_DAYLIGHTABBR = 6970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ULAANBAATAR_STANDARDABBR = 6971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ULAANBAATAR_DAYLIGHTABBR = 6972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCPLUS12_STANDARDABBR = 6973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KAMCHATKA_STANDARDABBR = 6974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KAMCHATKA_DAYLIGHTABBR = 6975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CUSTOM_FIELD_IS_SELECTED = 6976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FIELD = 6977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_FIELDS_SELECTED = 6978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_WAIT_DOWNLOADING_ENTITIES = 6979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHITE_BALANCE = 6981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSOR_TYPE = 6982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORTYPE_INTERLACED = 6983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORTYPE_PROGRESSIVE = 6984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IQEYE_NUMBER_OF_VCAMS = 6985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_EVENT_COUNT = 6986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_SOURCE_COUNT = 6987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_VIDEOFILE_COUNT = 6988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_VIDEOFILELOST = 6989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_SIZEONDISK = 6990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_QUADVIEW = 6991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_SINGLEVIEW = 6992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VIDEO_FILES = 6993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MANAGER = 6994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOG_FORMAT = 6995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_SETTING_REQUIRE_REBOOT = 6996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_APPLICATION_NO_CAMERA_DISPLAYED = 6998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOAD_DEFAULT = 6999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SCHEDULE = 7001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_AUDIO = 7002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER_PARAMETERS = 7004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_ROTATION = 7005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUID = 7006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_IN_PROGRESS_EXIT = 7007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_DATABASE = 7008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_DATABASE = 7009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS232 = 7010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS485 = 7011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS422485 = 7012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IN_PROGRESS_EXIT = 7013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE_FOR_X_SECONDS = 7015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTION_FAILED = 7016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_DETECT = 7017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE_INTERNAL = 7018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY_TYPE_INSTANT = 7019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY_TYPE_DELAYED = 7020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYINTRUSIONAREAS = 7021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEINTRUSIONAREAS = 7022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_DIAGNOSTIC_INFORMATION = 7023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_BYPASSED = 7024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_HAVE_THE_SAME_DISCOVERY_PORT = 7025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING_FOR_RESULTS = 7026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESULT_WILL_REFRESH_IN = 7027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH_NOW = 7028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_OPERATION = 7030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MONITORING = 7031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_MANAGEMENT = 7032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISITOR_MANAGEMENT = 7033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PEOPLE_COUNTING = 7034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_ENROLLMENT = 7035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVENTORY_MANAGEMENT = 7036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVESTIGATION = 7037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AREA_ACTIVITIES = 7038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DOOR_ACTIVITIES = 7039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_ACTIVITIES = 7040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISITOR_ACTIVITIES = 7041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AREA_PRESENCE = 7042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_TIME_AND_ATTENDANCE = 7043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_ACTIVITIES = 7044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ELEVATOR_ACTIVITIES = 7045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISIT_DETAILS = 7046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSION_DETECTION_AREA_ACTIVITIES = 7047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSION_DETECTION_UNIT_EVENTS = 7048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HITS = 7049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READS = 7050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ROUTE_PLAYBACK = 7051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVENTORY_REPORT = 7052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DAILY_USAGE_PER_PATROLLER = 7053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_LOGONS_PER_PATROLLER = 7054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READSHITS_PER_DAY = 7055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READSHITS_PER_ZONE = 7056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ZONE_OCCUPANCY = 7057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVES = 7058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_BOOKMARKS = 7059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MOTION_SEARCH = 7060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VIDEO_FILE_PLAYER = 7061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INCIDENTS = 7062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_TRANSACTIONS = 7063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ZONE_ACTIVITIES = 7064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAINTENANCE = 7065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_CONTROL_UNIT_EVENTS = 7066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_ACCESS_RIGHTS = 7067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DOOR_TROUBLESHOOTER = 7068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_CONTROL_UNIT_CONFIGURATION = 7069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_RULE_CONFIGURATION = 7070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_CONFIGURATION = 7071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_CONFIGURATION = 7072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_IO_CONFIGURATION = 7073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CAMERA_EVENTS = 7074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVER_EVENTS = 7075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVE_STORAGE_DETAILS = 7076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SYSTEM_STATUS = 7077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AUDIT_TRAILS = 7078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_HISTORY = 7079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARM_MANAGEMENT = 7080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARM_REPORT = 7082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOHOME = 7084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_SSL = 7085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSE = 7086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKED_BY_ON_MACHINE = 7087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_AUTHENTICATIONFAILED = 7088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_TASK_COUNT_REACHED = 7089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_IS_CONNECTED = 7091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_THE_DISK_DOES_NOT_EXIST = 7092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROLEDATABASE_CONNECTED = 7093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLUGINDATABASE_CONNECTED = 7094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLUGINDATABASE_DISCONNECTED = 7095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS422 = 7096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS4854WIRES = 7097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS4852WIRES = 7098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_RECEIVER = 7099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_TRANSMITTER = 7100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_BIDIRECTIONAL = 7101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_VERYHIGH = 7102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_HIGH = 7103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_MEDHIGH = 7104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_MEDLOW = 7105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_LOW = 7106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_VERYLOW = 7107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFFULLMOTION30FPS = 7108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_AUDIO_ALARM = 7109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_ENTER_VALID_IP = 7110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLED = 7111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW = 7112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIUM = 7113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH = 7114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTRUNNING = 7115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DATABASE_NEEDUPGRADE_WITHINFO = 7116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_FORCED_ARMING = 7117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODERS_DELETED = 7118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST = 7121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIRECTORINITIALIZATIONFAILED = 7122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIECTORRTSPPORTUNAVAILABLE = 7123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_CONFIGURATIONPROVIDERNOTYETSTARTED = 7124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIECTORCONFIGURATIONADDRESSCONFLICT = 7125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_CONFIG_USE_DNS = 7126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_SECURE_COMMUNICATION = 7127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG320_MPEG4320 = 7128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG320_MPEG4640 = 7129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG384_MPEG4384 = 7130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG384_MPEG4640 = 7131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4320 = 7132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4384 = 7133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4640 = 7134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG768_MPEG4OFF = 7135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG768_MPEG4640 = 7136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG960_MPEG4OFF = 7137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4OFF = 7138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4320 = 7139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4384 = 7140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4640 = 7141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VMF_ANALYTICS = 7142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TAMPERING_SENSIBILITY = 7143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COAXITRON_PTZ = 7144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTING = 7145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_ERROR = 7146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_ERROR_RETRY_IN = 7147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_AUTOSEEK_MODE = 7148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRINTEVIDENCE_CONFIRM = 7149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPALARM = 7150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_PATH = 7151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_SOME_INCOMPATIBLE_SCHEDULE = 7152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ACTIVITYTRAILS = 7153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACTIVITY_TRAILS = 7154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_ACTIVITYTRAILS = 7155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_CONFIGTOOL = 7156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_SECURITYDESK = 7157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_WEBCLIENT = 7158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_SDK = 7159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_INITIATOR = 7160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_IMPACTED = 7161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_ACTIVITIES = 7162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_STATUS = 7163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_EXPIRATION = 7164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONCURRENT_LOGIN_LIMIT = 7165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOGON_SCHEDULE = 7166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SCHEDULE = 7168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ALLOWED = 7169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BLOCKED = 7170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATIONS = 7171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VRM = 7172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SERVER_URL = 7173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_MODE = 7174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_ISCSI_CONNECTION = 7175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_UDP_REDIRECTION = 7176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_TCP_REDIRECTION = 7177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTION_HIGHER_THAN = 7178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFYLICENSE = 7179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_PLUGIN_NAME = 7180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_PLUGIN_DESCRIPTION = 7181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBACTIVATION = 7182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBACTIVATION_DETAILS = 7183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION = 7184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION_DETAILS = 7185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATINGSECURITYCENTER = 7186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION_PASTEORBROWSE = 7187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEMANAGEMENT = 7188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VRM_LOGIN_PROPERTIES = 7190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_COMMUNICATIONPROBLEM = 7191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_CANTCONNECT = 7192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_UNKNOWNPROBLEM = 7193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_BUSY = 7194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_BUSYDETAILS = 7195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_CANTCONNECTDETAILS = 7196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDUNDANT_ARCHIVING = 7197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDBY_ARCHIVING_PRIORITIES = 7198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER = 7199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_CONFLICTRESOLUTIONFILES = 7200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDRESOLVECONFLICT = 7201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESOLVECONFLICTINUSE = 7202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESOLVECONFLICTINUSEINFO = 7203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESOLVECONFLICTS = 7204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICTRESOLUTIONFILE = 7205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFLICTRESOLUTIONEXPLANATION = 7206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_EXPIRED_ADMIN_RESET = 7207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_WILL_EXPIRE_CHANGE_IT_NOW = 7210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED = 7211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SUPERVISION = 7212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_OF = 7213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISED_BY = 7214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERITED_SUPERVISION = 7215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_OPEN_TASK = 7216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOGON_DIALOG = 7217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICT_ACCESS_TO_CONNECTION_PARAMS = 7218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_CURRENT_WINDOWS_CREDENTIALS_BY_DEFAULT = 7219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGEDREMOTE = 7220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGEREMOTEDETAILS = 7221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DABASE_LOCATIONMISMATCHSERVERLOCATION = 7222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPLACE = 7223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEDEVICES = 7224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATES = 7225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLISHER = 7226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINTOOL_CERTIFICATEMAXCONNECTIONS = 7227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_NAME = 7228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_TYPE = 7229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_VERSION = 7230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_MACHINE_NAME = 7231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_APPLICATION_TYPE = 7232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_APPLICATION_VERSION = 7233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_ACTIVITYNAME = 7234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_NAME = 7235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_TYPE = 7236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_VERSION = 7237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_SNAPSHOT = 7242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SAVE_SNAPSHOT = 7243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_BOOKMARK_MODIFIED = 7245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_BOOKMARK_DELETED = 7246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_UNIT_REBOOT = 7250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_UNIT_IDENTIFY = 7251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ENTITY_CONNECTION = 7253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ENTITY_DISCONNECTION = 7255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_PTZ_COMMAND = 7260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_EXPORT = 7261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATIVE_RIGHTS = 7265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USER = 7266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MANAGERS = 7267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USERS_DESCRIPTION = 7268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MANAGERS_DESCRIPTION = 7269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CHOOSE_USER_ADMIN_RIGHT_OVER_PARTITIONNAME = 7270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_IN_PROGRESS_X = 7271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_SUCCEEDED = 7272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_FAILED = 7273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_WATERMARK = 7274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ENCRYPTION_KEY = 7275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTAINS = 7276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BINDINGS = 7278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTION = 7279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALS_OPERATION = 7280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETTINGS = 7281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUMMARY = 7282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WELCOME = 7283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCKS = 7284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMES_UC = 7285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTTOOL_PREVIOUSVALUE = 7286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_PASSWORDEXPIRED = 7287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SUPERVISORREQUIRED = 7288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_DISALLOWEDBYSCHEDULE = 7289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_EXCEEDEDWORKSATIONS = 7290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_GO_TO_PRESET = 7291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_SET_PRESET = 7292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_START_PATTERN = 7293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_RUN_PATTERN = 7294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_SPECIFIC_COMMANDS = 7295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPT_FILES = 7296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_TEST_DESCRIPTION = 7297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SAVE_SNAPSHOT = 7298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_SNAPSHOT = 7299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED_FILE = 7300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION = 7301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_TIME_OUT_OF_RANGE = 7303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_ACTIVATION_DATE = 7304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_EXPIRATION_DATE = 7305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_ACTIVATION_DATE = 7306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_EXPIRATION_DATE = 7307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_INTRUSIONUNITLICENSE = 7308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCRYPTING = 7309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPTING = 7310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_NOT_ENCRYPTED = 7311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_SOURCE_FILE = 7312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TARGET_FILE = 7313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_READ = 7314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRITE = 7315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_CONNECTING = 7317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ADDED = 7318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ALREADY_ADDED = 7319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ALREADY_EXISTING_ELSEWHERE = 7320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_TIMEOUT = 7321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_BAD_LOGIN = 7322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_LICSENSE_ERROR = 7323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_DISCOVERY_ERROR = 7324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_VIDEO_DECODER_NOT_SUPPORTED = 7325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_BAD_SETTINGS = 7326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_UNEXPECTED_ERROR = 7327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BETWEEN_X_AND_Y = 7328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FROM_X_TO_Y = 7329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_WELCOME = 7330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_CANCEL_CHANGES = 7331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_IMPORT_IN_PROGRESS = 7332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_REMOTE_FILE_WARNING = 7333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_ACTION_CONFIGURATION = 7334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_UPDATE_NEWPASSWORD = 7336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITYVERSION = 7337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_ACTIVITY_TRAIL_VIDEO = 7338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_ACTIVITY_TRAIL_EVENTS = 7339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_TRAIL_CONFIGURATION_PAGE_DESCRIPTION = 7340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MOBILEDEVICESERVER_COUNT = 7341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MOBILEDEVICE_COUNT = 7342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESOLVINGCONFLICTS = 7343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK = 7344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIRECTORYSTATUS = 7346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOWACTIONSPROGRESS = 7347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DATABASENOTCONNECTED = 7348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIRECTORY_DIRECTORYSTARTED = 7349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIRECTORY_DIRECTORYSTOPPED = 7350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_UNIT_TO_ROLENAME = 7351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPIREDMAPLICENSE = 7352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_CHARACTERS = 7354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_UPPERCASE = 7355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_LOWERCASE = 7356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_NUMERICAL = 7357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_SPECIAL = 7358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELD_MUST_BE_UNIQUE = 7360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNITSWAP_SAME_SOURCE_DESTINATION = 7361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNITSWAP_SOURCE_IS_ONLINE = 7362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_FOUND = 7364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_COUNT_EXCEEDED = 7365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_MACHINE_NAME = 7366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_WILL_EXPIRE_TODAY_CHANGE_IT_NOW = 7368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACKUP_DBSERVER_DBINSTANCE_DATABASE = 7369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_CERTIFICATE_NOT_FOUND = 7370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_COMPLEXITY_NOT_RESPECTED = 7371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTE_ON_HIGHEST_PRIORITY_SERVER = 7372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETEARCHIVERDATABASE_DELETEVIDEOFILES = 7373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_DELETE_WARNING = 7374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYCENTERDIRECTORY = 7375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_CLIENT_CERTIFICATE = 7376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPT = 7377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DECRYPTION_SETTINGS = 7378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_IN_PROGRESS = 7379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_COMPLETED = 7380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DECRYPTION = 7381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDWEBLICENSEURLSCHEME = 7382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DECRYPTION_IN_PROGRESS_EXIT = 7383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DECRYPTION_CLOSE = 7384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_EDITOR_SUPPORT = 7385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ROLE_IS_NOT_ACTIVATED = 7386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRONG_ENCRYPTION_KEY = 7387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME = 7388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_ACTIONS = 7389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANIFESTFILETOOBIGDESCRIPTION = 7390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANIFESTFILETOOBIG = 7391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALIDCONFLICTRESOLUTIONFILE = 7392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALIDCONFLICTRESOLUTIONFILEDESCRIPTION = 7393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERRORWHILEREADINGFILE = 7394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_NIGHTTIME = 7395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_DAYTIME = 7396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFSETS = 7397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUNSET = 7398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUNRISE = 7399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUS = 7400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUS = 7401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COVERAGE_ALL_DAY = 7402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_SUNRISE_OFFSET = 7404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_SUNSET_OFFSET = 7405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUS_SIGN = 7406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUS_SIGN = 7407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_MODIFICATION = 7408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOTLIST_MODIFICATION_TASK_DESCRIPTION = 7409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_LOAD_CUSTOM_TASK = 7410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL_SECURITY = 7411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPT_CHANNEL = 7412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_NON_ENCRYPTED_MESSAGES = 7413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_THUMBNAIL_FOUND = 7414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURERESOLUTIONINHARDWARETAB = 7415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_PCM = 7416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G711 = 7417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_GSM0610 = 7418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G721 = 7419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_24 = 7420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_40 = 7421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G722 = 7422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G728 = 7423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_1 = 7424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT = 7425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDSYSTEMID = 7427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDPASSWORD = 7428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDVALIDATIONKEY = 7429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDVALIDATIONKEYDETAILS = 7430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STAR_MANDATORY_FIELDS = 7431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CUSTOM_FIELDS_INVALID = 7432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLLOWING_CUSTOM_FIELDS_INVALID = 7433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_ACCEPT_REASONS = 7434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOMFIELDNOTUNIQUE = 7435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_PROPERTIES = 7436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_GROUP_PROPERTIES = 7437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASONS = 7438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON_IS_MANDATORY = 7439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_DISABLE = 7442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_SEEK_TO_PRESET = 7443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_RUN_TOUR = 7444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_RUN_PATTERN = 7445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOUR = 7446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTEMPTS_COUNT_BEFORE_LOCK_DOWN = 7447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER = 7448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PASSWORD_SETTINGS = 7449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_EXPIRY_NOTIFICATION_PERIOD = 7450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_STEPS = 7451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_MAXIMUM_SPEED = 7452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_ADD_STEP = 7453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_CLEAR_STEP_LIST = 7454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATIONS = 7455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_NO_INFRACTION_OPTION = 7456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_AUTO_FLIP = 7457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_INFRARED = 7458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_DIGITAL_ZOOM = 7459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_VIDEO_SELECTED_TILE = 7461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_VIDEO_ALL_TILES = 7462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_ADD_GROUP = 7463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_EDIT_GROUP = 7464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_ADD_REASON = 7465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_EDIT_REASON = 7466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REASONS = 7467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOAD_FILE = 7468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DATE_FORMAT = 7469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITER_CONFLICT = 7470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIELD_LENGTH_EXCEEDED = 7471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_DATE_FORMAT = 7472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_HOTLIST_PERMIT = 7473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFLICTING_ENTRIES = 7474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TILE_NUMBER = 7475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_USERINTERACTION_ASKFORTASKDELETE = 7476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFIELD_NAME = 7477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFIELD_DISPLAY_NAME = 7478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON_ALLOW_MULTIPLE_SELECTION = 7479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMING_PORT = 7480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BASE_URI = 7481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL_SETTINGS = 7482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE = 7483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BIND_CERTIFICATE_TO_PORT = 7484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RENDERING = 7485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_NOT_FOUND = 7486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REQUEST_TIMED_OUT = 7487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OUT_OF_MEMORY = 7488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_PAN_VALUE = 7489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TILT_VALUE = 7490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ZOOM_VALUE = 7491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_DATA_AVAILABLE = 7492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DPI_SETTING = 7493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER_WARN_ME_AGAIN = 7494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SUPERVISED_BY = 7495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SUPERVISOR_OF = 7496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CUSTOM_FIELDS_NOT_INITIALIZED = 7497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_IN_PROGRESS = 7498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ENCRYPTION_SETTINGS = 7499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_COMPLETED = 7500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_IN_PROGRESS_EXIT = 7501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_EXPIRES_TOMORROW_CHANGE_IT_NOW = 7503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CLOSE = 7504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLAYBACK_WARNING_PRETRIGGER_TIME = 7505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SHOW_OVERLAY_TASK_NAME = 7506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_CAMERA_VIDEO = 7507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_ERROR_OCCURRED_WHILE_PROCESSING_THE_FILE = 7508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOME_MANDATORY_VALUES_ARE_MISSING = 7509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_APPLICATIONID_CERTIFICATE = 7510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCRYPT = 7511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_PROVIDER = 7512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEXT_FILE_PARTIALLY_LOADED = 7513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDDBNAMEDESCRIPTION = 7514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYFIELD_CANNOT_BE_EMPTY = 7516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ONLY_ALPHANUMERIC_CHARACTERS_ARE_ACCEPTED = 7517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALUEFIELD_CANNOT_BE_EMPTY = 7518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_SUCCESS = 7520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_ROLLBACK_SUCCESS = 7521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_MISSINGKEYVALUE = 7526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_SET_CF_UNIQUE_ON_CREATION = 7527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_READONPLATE_FORMAT = 7528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_FILE_X = 7529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LICENSE_INVALID = 7530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_INVALID_CONTACT_ADMIN = 7531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_STATUS = 7532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_FILE = 7533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_IMPORTED_ROWS = 7534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_COMMENTED_ROWS = 7535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_NUMBER_OF_ERRORS = 7536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINENUMBER = 7537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOMANYERRORS = 7538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_STATUS = 7539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_SELECTED_CAMERA = 7540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_MOTION_MASK = 7541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TIMELIMIT_MUST_BE_HIGHER_THAN_ZERO = 7542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETECLATITUDELONGITUDE_EXAMPLE = 7543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_BACKUPRESTORE = 7544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_INTRUSION_UNIT = 7545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_INTRUSION_AREA = 7546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRIGGER_NETWORK_DETECTION = 7547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_VIDEO_RECEIVING_RATE = 7549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_VIDEO_WRITING_RATE = 7550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_AUDIO_RECEIVING_RATE = 7551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_AUDIO_WRITING_RATE = 7552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AVAILABLE_DATABASE_DISK_SPACE_NOTIFICATION = 7553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY_ARM = 7554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STANDARD_SCHEDULE = 7555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TWILIGHT_SCHEDULE = 7556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SCHEDULE_INFORMATION = 7557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCHEDULE_TIMERANGE_SELECTION = 7558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_SCHEDULE_DESCRIPTION = 7559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWILIGHT_SCHEDULE_DESCRIPTION = 7560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SCHEDULE_CREATION_INFORMATION = 7561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_AUTHENTICATION_REQUIRE_REBOOT = 7562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPANSIONTOMAIN_DESCRIPTION = 7563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTIVATEDIRECTORYROLE = 7564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEACTIVATEDIRECTORYROLE = 7565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVATEDIRECTORYROLEDESCRIPTION = 7566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEACTIVATEDIRECTORYROLEDESCRIPTION = 7567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANTCONNECTGS = 7569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANTCONNECTGS_DESC_PORTOUTOFRANGE_FORMAT = 7570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DRIVE = 7571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEREQUIREREBOOT_FORMAT = 7572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEGENETECSERVERCONNECTPARAM_DESC = 7573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_VISITOR_SELECTED = 7574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_CANTSUPERVISESELF = 7576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_NO_AGENT_RUNNING = 7577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_FORMAT = 7578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_THE_NOTATIONS_MEAN = 7579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_HOUR_MINUTE = 7580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_SECOND = 7581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_AM_PM = 7582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_HOUR = 7583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_WITH_LEADING_ZERO = 7584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_WITHOUT_LEADING_ZERO = 7585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_FORMAT_NOTATION = 7586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBNET_MASK = 7587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_OPTIONS = 7588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SUBNET_DISPLAY = 7589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_CIDR_BLOCK_DISPLAY = 7590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_USER_ACTIVE_DIRECTORY_ACCOUNT_DISABLED = 7591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_SDK = 7592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_WARNING = 7593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOREPLACECREDENTIAL = 7594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INVALID_MULTICAST_CONFIGURATION = 7595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_DBSERVER_DBINSTANCE_DATABASE = 7596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_DBSERVER_DBINSTANCE_DATABASE = 7597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_IN_PROGRESS = 7598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_SUCCEEDED = 7599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASONS_RETAIN_VALUE = 7600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENFORCED_HIT_ATTRIBUTE = 7601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_ENFORCED_HIT_ATTRIBUTE = 7602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCED_HIT_ATT = 7603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ACKNOWLEDGEMENT = 7604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_VIDEO_RECORDING = 7605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DISPLAY_OPTION = 7606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PROCEDURE_URL = 7607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DEASCTIVATE_ROLE = 7608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DEASCTIVATE_ROLES = 7609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MIGRATIONTOOL_APPNAME_SHORT = 7610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MP = 7611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_COPYOTHERSTREAM = 7612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264BPPLUS = 7613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPSD = 7614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED720P = 7615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED720PFULLFRAMERATE = 7616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED1080P = 7617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_PROFILE = 7618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CROPIMAGE = 7619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOIMAGESIZE = 7620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_PRIVILEGE_TO_ADD_UNIT_TO_ARCHIVER_PARTITION = 7621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PROPERTIES_ADVANCED = 7622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLE_OUT_OF_PROCESS_COMPONENTS = 7623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_REPORT = 7624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_EXPORT_REPORT = 7625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_HIT_REPORT_EVIDENCE = 7626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EXPORT_REPORT_NAME_TYPE_LOCATION = 7627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_REPORT_NAME_TYPE_PRINTER = 7628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_FILTER_DESCRIPTION = 7631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_HEALTH_MONITORING_NAME = 7632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_HEALTH_MONITORING_DESCRIPTION = 7633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_HOTLIST_EDITOR = 7634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_LOADFAILED = 7635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_DBCONNECTIONSUCCESS_FORMAT = 7636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_DBCONNECTIONFAILED_FORMAT = 7637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_IMPORTED_EVENT_TIMESTAMP = 7639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATCH_FLOOR_CREATE = 7640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_ENTITY_TYPE = 7641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_SOURCE = 7642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_OPTIONS = 7643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_DESTINATIONS = 7644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_PROGRESS = 7645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_DEINTERLACE = 7646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST = 7647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ADD_RECORD_HOTLIST = 7648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DELETE_RECORD_HOTLIST = 7649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MODIFY_RECORD_HOTLIST = 7650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_FILTERING = 7651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_INVALID_PLATE = 7652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_MODIFY = 7653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_REMOVE = 7654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_EMPTY_PLATE = 7655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LOGGING = 7656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LOGGING_FILE = 7658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_NAME = 7660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DESCRIPTION = 7661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_PRIVACY = 7662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY = 7663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_CREATION_OUTCOME = 7664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ENTITY_TYPE = 7665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ENTITY = 7666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_EVENT = 7667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ACTION = 7668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SPECIFYDOMAIN = 7669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CHARACTER_IN_NAME = 7670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_SHOW_USER_DOMAIN = 7671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPY_PROCESS_COMPLETED_SUCCESSFULLY = 7672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FINALIZING_PROCESS = 7673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPY_PROCESS_COMPLETED_WITH_ERRORS = 7674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_OPTIONS_STEP_INSTRUCTION = 7675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_ENTITY_TYPE_STEP_INSTRUCTION = 7676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_SOURCE_STEP_INSTRUCTION = 7677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_DESTINATIONS_INSTRUCTION = 7678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEARCH_MEMBER_ENTITIES = 7679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVING_STOPPED = 7684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVING_STARTED = 7685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_DISCONNECTED_BYUSER = 7686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_DISCONNECTED_UNEXPECTEDLY = 7687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_CONNECTED = 7688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATIONSTOPPED_BYUSER = 7689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATIONSTOPPED_UNEXPECTEDLY = 7690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_STARTED = 7691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CONNECTION_FAILED = 7694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CONNECTION_RESTORED = 7695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_FAILED = 7696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_RESTORED = 7697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEAUTOMATICBACKUP_FAILED = 7700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEAUTOMATICBAKCUP_RESTORED = 7701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_LOST = 7703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RECOVERED = 7704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHCPUUSAGE = 7709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHCPUUSAGE_RESTORED = 7710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHMEMORYUSAGE = 7715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHMEMORYUSAGE_RESTORED = 7716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWDATABASESPACE = 7719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWDATABASESPACE_RESTORED = 7720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OFFLOAD_FAILED = 7727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OFFLOAD_RESTORED = 7728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_PATROLLER_OFFLINE = 7729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_PATROLLER_ONLINE = 7730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_POS_DATABASE_LOST = 7732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_POS_DATABASE_RECOVERED = 7733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STARTED = 7736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STOPPED_BYUSER = 7737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STOPPED_UNEXPECTEDLY = 7738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_RTPPACKET_LOSS = 7739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_RTPPACKET_RECOVERED = 7740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STOPPED_BYUSER = 7741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STOPPED_UNEXPECTEDLY = 7742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STARTED = 7743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SYNCHRONIZATION_FAILED = 7744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SYNCHRONIZATION_RECOVERED = 7745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_VIDEOSIGNAL_LOSS = 7752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_VIDEOSIGNAL_RECOVERED = 7753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_VIDEOUNIT = 7754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACCESSCONTROLUNIT = 7755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INTRUSIONDETECTIONUNIT = 7756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_GENETECSERVER = 7757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ARCHIVER = 7758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACCESSMANAGER = 7759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_LPRMANAGER = 7760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_DIRECTORY = 7761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_MEDIAROUTER = 7762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACTIVEDIRECTORY = 7764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATION_SECURITYCENTER = 7765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATION_OMNICAST = 7766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_REPORTMANAGER = 7767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INTRUSIONMANAGER = 7769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_POINTOFSALE = 7770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ZONEMANAGER = 7772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_SECURITYDESK = 7774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_PATROLLER = 7776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_LPRUNIT = 7777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_HOTLIST_INVALIDENTRIES = 7778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_MODIFIED_RECORDS = 7779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_REMOVED_RECORDS = 7780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_FILTERS = 7781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EVENTSHEADER = 7782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAILSHEADER = 7783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CONFIGURATIONPARAMETERS = 7784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERSUPERVISORDIFFERENTDOMAIN = 7785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_DOWNLOAD_ONLY_AT_LOGON = 7786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_DOWNLOAD_EXPEDITIVE_TRANSFER = 7787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CPUUSAGE_DETAIL = 7788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_MEMORYUSAGE_DETAIL = 7791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASESPACE_DETAIL = 7792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_PACKETLOSS_DETAIL = 7794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_SHORT = 7795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_LONG = 7796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_LONG_WITHTIME = 7797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIOD_OF_TIME = 7798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEACTIVEDIRECTORIES = 7799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREFERRED_UNIT = 7800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUXILIARY_ARCHIVER_NAME = 7801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_LC = 7802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TIMELINE = 7803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_TIMELINE_AUTOHIDE = 7804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATE_CAMERA = 7805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CONNECTION = 7806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CONNECTED = 7807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_NOT_CONNECTED = 7808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_NOT_INITIALIZED = 7809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_INITIALIZING = 7810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_ERROR = 7811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_START = 7812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_UPDATING_ENTITIES = 7813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_COMPLETED = 7814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_PICTURES = 7815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_DELETING_ENTITIES = 7816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CREATING_ENTITIES = 7817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_INSERT = 7818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_REMOVE = 7819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_ENTITY = 7820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_CONNECTIONS = 7821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_PROXY_DENIED_MODIFICATIONS = 7822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_COMPONENTS = 7824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANNOTATION_EMAIL_ADDRESS = 7825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENT_EMAIL = 7826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_LOGGING_FILE = 7827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_AND_CLOSE = 7828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_DETECTION_SETTINGS_LOST = 7830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_STREAM = 7832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JUMP_FORWARD = 7833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JUMP_BACKWARD = 7834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_CUSTOMFIELD = 7835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLING_MIGHT_AFFECT_SYSTEM_PERFORMANCE = 7836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SNAPSHOTS_FOLDER = 7837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SORT_BY = 7838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTSOURCE_TYPE = 7840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SEVERITY = 7841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HEALTHEVENT = 7843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_SEVERITY = 7844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE_ENTITY = 7845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JOGWHEEL_PLAYING = 7846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JOGWHEEL_PAUSED = 7847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME_PLURAL = 7848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORCOPYCONFIG_CONSTRAINTVIOLATION = 7849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_UPDATE_ENTITIES = 7850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_VERSION_COMPATIBLE = 7851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_VERSION_NOT_SUPPORTED = 7852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_FORENSIC_SEARCH = 7854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FORENSIC_SEARCH = 7855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_AUXILIARY_ARCHIVER = 7856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXALLOWEDBITRATE = 7859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_MEDIAPLAYER_HOTFIX = 7860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_MIGHT_AFFECT_STABILITY = 7861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_DECODERS_IN_ONE_PROCESS = 7862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERS_PER_PROCESS = 7863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAVIGATE = 7864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_FILE_ANALYSER = 7865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONVERT_SHARED_TO_LOCAL = 7866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTIONLOST_RETRYING = 7868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_BADGE_SELECTED = 7869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PACKED_ENTITY = 7870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ATTRIBUTE = 7871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICE_MODE = 7872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SERVICE_MODE_ENABLE = 7873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SERVICE_MODE_DISABLE = 7874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANOTHER_USER = 7875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICE_MODE_INFO = 7876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MINIMIZE_SPLASHSCREEN = 7877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CANCEL_SPLASHSCREEN = 7878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_FILE = 7879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_WEBCAM = 7880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_CAMERA = 7881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_CLIPBOARD = 7882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICEURI = 7883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYCHRONIZE_AUTOMATICALLY = 7884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_ENTER_ADDRESS_HERE = 7886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_CAMERA_EXPOSURE_ON_STARTUP = 7887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_START_SUSPENDED_MODE = 7888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_ADVANCED_DATABASE_SETTINGS = 7889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_MAX_LOGOUT = 7890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_STORAGE = 7891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_HIT_RECORD_STORAGE = 7892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_SEARCH = 7893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_DISPLAY = 7894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_FOLDER = 7895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_OFFLOAD_QUERY_TIMEOUT = 7896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_PATROLLER_NAME = 7897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_LOGIN_TYPE = 7898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_DATABASE_NAME = 7899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_CONNECTION_STRING = 7900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ADVANCED = 7901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_COMMON = 7902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SYSTEM = 7903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_HOTLISTS = 7904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PERMITS = 7905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_OVERTIME = 7906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENABLE_NEW_WANTED = 7907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_SHOW_COMMENT_FORM_NEW_WANTED = 7908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_EXPIRATION_NEW_WANTED = 7909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_HOSTLIST_HIT_DELAY = 7912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ALLOW_SAME_HITS_ROW = 7913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PAUSE_READ_PLATES = 7914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ALLOW_POPUP_HIT = 7915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_FIRST_ON_TOP = 7916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DISPLAY_HITS_BY_PRIORITY = 7917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ADVANCED_OVERTIME_SETTINGS = 7918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_LINK_READ_PERSISTANCE_DURATION = 7919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MINUTES_TO_DUE_VEHICLES = 7920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_OVERTIME = 7921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_TIRE_IMAGES = 7922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_WHEEL_IMAGING_ENFORCED = 7923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PARALLEL = 7924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_45_DEGREE_ANGLE = 7925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_TIRE_CAM_PLATE_DISTANCE = 7926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MAXIMUM_VEHICLE_LENGTH = 7927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DISTANCE_TRAVELLED_BEFORE_SAVING = 7928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_PERMIT = 7931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_SHARED_PERMIT = 7932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS = 7933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_ODOMETRY = 7934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAPS = 7935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_GPS = 7936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_CONSECUTIVE_INVALID_GPS = 7937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_NOISE = 7938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_INIT_STRING = 7939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_MAPS = 7940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAPPING_TYPE = 7941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS_DISTANCE_TOLERANCE = 7942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS_ODOMETRY_CALIBRATION_TOLERANCE = 7943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAX_DISTANCE_ERROR = 7944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_NAVBOX = 7945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SHUTDOWN_DELAY = 7946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_ODOMETRY = 7947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_REVERSE = 7948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SCALE = 7949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SENSITIVITY = 7951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_READ_CAR_STOPPED = 7953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_READ_MOVING_BACKWARDS = 7954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_LIVE_CONNECTION = 7955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD = 7956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_CONNECT_TO_SC = 7957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_IP_ADDRESS = 7958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_ENCRYPT_COMMUNICATION = 7959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_UPDATE_PROVIDER_PORT = 7960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_LIVE_EVENTS = 7961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_HITS = 7962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_READS = 7963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_UNIT_POSITION = 7964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_PERIODIC_TRANSFER = 7966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_METHOD = 7967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_DRIVE = 7968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_USE_ENCRYPTION = 7969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_PUBLIC_KEY = 7970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_INCLUDE_IMAGES_BACKUP = 7971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_INCREMENTAL_BACKUP = 7972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_MAX_FILE_SIZE = 7973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_FORCE_OFFLOAD_EXIT = 7974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_EXIT = 7975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_DELETE_RECORD_OFFLOAD = 7976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_DEFAULT_PLATE_STATE = 7978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_HIGHLIGHT_PLATE_CONTEXT_IMAGE = 7979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_OVERVIEW = 7980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_REVIEWS = 7981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_HOTLIST_STATUS_LED = 7982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_AUTO_POPUP_DOWNLOAD_INFOS = 7983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SOUNDS = 7984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_PLAY_SOUND_VEHICLE_EVENT = 7985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_PLAY_SOUNDS_MINIMIZED = 7986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_MINIMIZE_BUTTON = 7987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_CONTEXT_MENU = 7988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_START_MINIMIZED = 7989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SILENT_MODE = 7990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_MAIN_BUTTONS = 7991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_MILLISECONDS = 7993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METERS = 7994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPEN_IN_WINDOWS_EXPLORER = 7995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPLETE = 7997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_SEQUENCE = 7998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_LAST = 7999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_ON_CONNECTION = 8001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_EVERY = 8003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_INTERVAL = 8005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_PLAYBACK_REQUEST = 8006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONS = 8007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_OFFLINE = 8008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TRIGGERS = 8009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS = 8010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_EVENTS = 8011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DELAY = 8012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_SIMULTANEOUS = 8013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_STATUS = 8014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_LAST = 8015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_LAST_FRAME = 8016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_NEXT_SCHEDULE = 8017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_START_SELECTION = 8018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_STOP_SELECTION = 8019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_START_ALL = 8020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_STOP_ALL = 8021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_BEFORE = 8022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_SYNCHRONIZED = 8023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PARTITIONS = 8024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CONFIGURATION_CHANGE_SYNC_FAIL = 8025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CONFIGURATION_CHANGE_SYNC_FAIL_QUESTION = 8026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SYNCHRONIZE_FROM_HOST = 8027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STAY_IN_OVERRIDE = 8028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YESTERDAY = 8029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_SECONDS = 8030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_MINUTES = 8031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_HOURS = 8032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_OF_WEEK_TIME = 8033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_MODIFY_SHAREABLE_PARTITION_IMPACT = 8034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_REMOVE_SHAREABLE_QUESTION = 8035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_REMOVE_SHAREABLE_ACCEPTED_USER_QUESTION = 8036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_ADDING_CAMERA = 8037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_ADDED = 8038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_REMOVING_CAMERA = 8039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_REMOVED = 8040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_ASSOCIATED = 8041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ENTRANCE_AND_EXIT = 8043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUXILIARY_ARCHIVER_DESCRIPTION = 8044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACK_ID = 8045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALGORITHM_ID = 8046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_TYPE = 8047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOAD_FORENSIC_CONTROL = 8048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_FORENSIC_CONFIGURATION = 8049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GET_FORENSIC_CONFIGURATION_FROM_UNIT = 8051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MTTR = 8052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MTBF = 8053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FAILURES = 8054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AVAILABILITY = 8055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UPTIME = 8056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXPECTED_DOWNTIME = 8057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNEXPECTED_DOWNTIME = 8058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_COLORS = 8059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_CURRENT_POSITION = 8060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORENSIC_NOT_SUPPORTED = 8061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATISTICS_NOT_AVAILABLE_OFFLINE_SERVER = 8064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATISTICS_NOT_AVAILABLE_HEALTH_EVENT_FILTER = 8065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HEALTH_STATISTICS = 8066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CALCULATION_STATUS = 8067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AUTHORIZED = 8068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_NOTAUTHORIZED = 8069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SYNCHRONIZING = 8070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SYNCHRONIZED = 8071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_INSTALLING = 8072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_INSTALLED = 8073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_UNINSTALLING = 8074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_UNINSTALLED = 8075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_ERROR = 8076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_APPLICATION_UPDATE = 8077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_ERROR = 8078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_INSTALLING = 8079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_PUBLISHED = 8080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_UNINSTALLING = 8081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NOTIFICATIONS_HEALTH_EVENT_COUNT = 8082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TRICKLING_ARCHIVING_SCHEDULE = 8084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALID_MAC = 8085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALID_SID = 8086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNAUTHORIZED_DISK = 8088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNAUTHORIZED_DISK_RECOVERED = 8089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_AUTOMATIC = 8090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_SHEDULE = 8091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SYNCHORNIZATION_ACTION = 8092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_FEEDS = 8093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CAPTURE = 8095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_WANTED = 8096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMITS = 8097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO = 8098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_ENFORCE = 8099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_REJECT = 8100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_NO_INFRACTION = 8101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_LABEL_REQUIRES_INTERNET = 8102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_ACCEPT = 8103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_STATISTICS = 8104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_ONLINE = 8105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_ONLINE_DESCRIPTION = 8106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_OFFLINE = 8107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_OFFLINE_DESCRIPTION = 8108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_MOVED = 8109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_MOVED_DESCRIPTION = 8110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_LOW_BATTERY = 8111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_LOW_BATTERY_DESCRIPTION = 8112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ASSET_ACTIVITIES = 8114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ASSET_INVENTORY = 8115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ASSET_ACTIVITIES = 8116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ASSET_INVENTORY = 8117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ASSET = 8118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ASSETS = 8119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_EXITED_AREA = 8120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENTERED_AREA = 8121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSETMANAGEMENT = 8122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWASSETS = 8123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYASSETS = 8124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDDELETEASSETS = 8125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLEANUP = 8126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_SUCCEEDED = 8127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_EXCEPTION_X = 8128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_COMPLETED_WITH_ERRORS = 8129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_IN_PROGRESS_X = 8131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANNOW = 8132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANEACHDAYSELECTION = 8133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DATABASECLEANUP = 8134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_NOT_ENFORCE = 8135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANUP_DATABASE = 8136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASECLEANUP = 8137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANUP_DBSERVER_DBINSTANCE_DATABASE = 8138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STEP_X_OF_Y = 8140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT = 8141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT_WITH_X_SELECTED = 8142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_AUTO_ENFORCE_AFTER_ACCEPT = 8144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_VERSION = 8147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES = 8148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_ALL = 8149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLERS_AND_SHARPS_UNITS = 8150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SERVICES = 8151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_ENTITLED = 8152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_ERROR = 8153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_INSTALLED = 8154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_INSTALLING = 8155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_NOT_AVAILABLE = 8156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_SYNCHRONIZED = 8157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_SYNCHRONIZING = 8158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UNINSTALLED = 8159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UNINSTALLING = 8160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ARCHIVES = 8161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITICAL_EVENT = 8162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOLTIP_NOTIFICATIONS_REMAINING_COUNT = 8164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G711_VERINT = 8165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_AAC = 8166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_BONJOUR = 8167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONHIT = 8168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONREAD = 8169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDWHENMINIMIZED = 8170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKBUFFERREJECTPRIORITY = 8171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKBUFFERREJECTCOUNT = 8172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUXILIARY_ARCHIVERS = 8173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDGERECORDING = 8174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DIRECTORY_FAILOVERS = 8175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_BASIC = 8176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_ADVANCED_MAP = 8177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_GIS = 8178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GO_TO_PREVIOUS_PAGE = 8179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GO_TO_NEXT_PAGE = 8180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_PLATE_VALID_CHARACTERS = 8181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LANGUAGE = 8182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_LATIN = 8183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_ARABIC = 8184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_ENTITIES = 8185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_PARTITION = 8186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_ONLY = 8187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_ONLY = 8188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HORIZONTAL_FIELDOFVIEW = 8189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTICAL_FIELDOFVIEW = 8190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_OVERTIME_HITS = 8191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_HOTLIST_HITS = 8192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_PERMIT_HITS = 8193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_SHAREDPERMIT_HITS = 8194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ACTIVE_ALARMS = 8195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ACTIVE_ALARMS_RECOVERED = 8196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_WAVELET = 8197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SELECT_PLAYBACK_SOURCE = 8199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_ALL_PLAYBACK_SOURCES = 8200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READS = 8201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITS = 8202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_OFFLOAD_TIME = 8203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_DIRECTORYREDIRECTED = 8204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_TERMINATED_SUCCESSFULLY = 8205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMELINE = 8206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_CONNECTED_TO_SECURITYCENTER = 8207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLOR = 8208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_CENTER = 8209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_CENTER = 8210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_LEFT = 8211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_RIGHT = 8212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_LEFT = 8213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_RIGHT = 8214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CHANGED_SUCCESSFULLY = 8215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_IS_NOT_RUNNING = 8216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_EXIT_ACTION_EXIT = 8217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_EXIT_ACTION_SHUTDOWN = 8218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_WILL_BE_DONE_TO_LOCAL_FILE = 8219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWARCHIVEDISKSPACE_RESTORED = 8220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWARCHIVEDISKSPACE = 8221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_USE_IPV6 = 8222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_EXTERNAL_TOOLS = 8223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEW_LOG_FILE = 8224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE = 8225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIENTATION = 8226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_LIVE = 8227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRIES = 8228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_LAST_MODIFIED = 8229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_VIDEO_AVAILABLE = 8230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPOSURE = 8231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_BEHAVIOR = 8232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTSIDE_WEATHER = 8233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MUTE = 8234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SELECTION = 8235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGES = 8236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOWNLOAD_INFO = 8237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTICS = 8238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATION_IN_DAYS = 8239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMENT = 8240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK = 8241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHUTDOWN = 8242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGOUT = 8243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_TASKBAR_WHEN_FULLSCREEN = 8244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_PRINTING = 8245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_IOSERVICES = 8246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CLEAR_DB_EXIT = 8247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_DROP_DB_EXIT = 8248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OWNER = 8249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DATABASE_FAILOVER = 8250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER_MIRRORING_MODE = 8251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER_BACKUPANDRESTORE_MODE = 8252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_FOLDER = 8254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_FAILOVER_DATABASES = 8255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_SERVERS = 8256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STARTED = 8257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STOPPED_BYUSER = 8258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STOPPED_UNEXPECTEDLY = 8259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_CAMERA_ORIENTATION = 8260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_FULLSCREEN_OFFSET_BOX = 8261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SUSPEND_READS = 8262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESUME_READS = 8263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAY_ERRORS_ONLY = 8264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_RETRIEVE_CURRENT_LOCATION = 8265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PCT_SHOW_DEFAULT_VALUE = 8267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS = 8268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_CONTEXT = 8269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONING = 8270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERFACE = 8271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OFFLOAD_AND_EXIT = 8272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OFFLOAD_AND_SHUTDOWN = 8273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDING_SERVER_REQUIRE_LICENSE_UPDATE = 8275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_SERVER_LICENSE_UPDATE = 8276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGE_LICENSE_QUESTION = 8277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFYLICENSE_ELLIPSIS = 8278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER = 8279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_MODE = 8280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_FULL_BACKUP = 8281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_PARTIAL_BACKUP = 8282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_BACKUP = 8283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GENERATE_FULL_BACKUP_NOW = 8284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_MANAGEMENT = 8285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKNOWLEDGEMENT_BUFFER = 8286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_DISK_SPACE_DETAIL = 8287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_NUMBER_OF_ACTIVE_ALARMS_DETAIL = 8288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_CONNECTION_TO_DIFFERENT_DIRECTORIES = 8289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_AUTO_RECONNECT = 8290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINSUCCESSFUL = 8291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_ACCOUNTDEACTIVATED = 8292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_WRONGPASSWORD = 8293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_ACCOUNTLOCKED = 8294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_INVALIDCREDENTIALS = 8295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_PASSWORDEXPIRED = 8296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATECOMPLETED = 8297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUALCAPTUREADDED = 8298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_ADDED = 8299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_ADDFAIL = 8300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_UNRESOLVED = 8301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_READHITRATIO = 8302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_TIRE = 8303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_ENFORCED = 8304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_AUXILIARY_ARCHIVER = 8305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_ACTIVATE_DATABASE = 8306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGE_ACTIVE_DATABASE = 8307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTIVATION_FAILED = 8309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_GEMPEG4 = 8310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_BOOKMARK = 8311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTARTING_DIRECTORY = 8312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_INTRUSION_ALARM = 8313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TRIGGER_INTRUSION_ALARM = 8314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ERROR_SAVE = 8315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENT_TYPE = 8316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_IS_MANUAL_CAPTURE_ENABLED = 8317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_8KHZ = 8318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_11KHZ = 8319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_16KHZ = 8320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_22KHZ = 8321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_24KHZ = 8322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_32KHZ = 8323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_44KHZ = 8324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_8KBPS = 8325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_12KBPS = 8326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_16KBPS = 8327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_24KBPS = 8328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_32KBPS = 8329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_40KBPS = 8330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_48KBPS = 8331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_64KBPS = 8332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_96KBPS = 8333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_128KBPS = 8334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE = 8335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE = 8336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_LICENSE_WARNING = 8337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_LICENSE_WARNING_CONTINUE = 8338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ERROR_NUMBER = 8339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OCCURRENCE = 8340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_DISCOVERY_PORT = 8341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_REPORT_QUERY = 8342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_QUERY_TOO_COMPLEX = 8343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_UNAVAILABLE = 8344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_UNAVAILABLE = 8345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_BACKUP_RESTORE = 8346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOME_CHANGES_NOT_SAVED = 8347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESET_OPTIONS_TO_DEFAULT = 8348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LAUNCH_PATROLLER = 8349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PERMIT_SELECTION = 8350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_ZONE_SELECTION = 8351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EXPORT_INCOMPLETE_SEQUENCE = 8352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_INSERT_CUSTOMFIELDTYPENOTUNIQUE = 8354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOMFIELDVALUENOTUNIQUE = 8355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_UPDATE_CUSTOMFIELDTYPENOTUNIQUE = 8356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_GUARD_TOUR = 8357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_FAILED = 8358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDRESS_CANNOT_BE_RESOLVED = 8361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_AGENT_UNAVAILABLE = 8362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_CAMERAS_WILL = 8363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_TRICKLE_ON_CONNECTION = 8364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_TRICKLE_ON_SCHEDULE = 8365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_AGENT_UNAVAILABLE = 8366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_TRANSMISSION_RECOVERED = 8367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RTP_PACKET_LOST_RECOVERY = 8368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_VRMCONNECTIONFAILURE = 8369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_VRMCONNECTIONATTEMPT = 8370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_PIN = 8371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LIVE_HEALTH_MONITORING_STOPPED = 8372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LIVE_HEALTH_MONITORING_RECOVERED = 8373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_FILTER = 8374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGE_ACTIVE_DIRECTORY = 8375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_ACTIVATION_FAILED = 8376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_CAMERAS_THAT_SUPPORT_TRICKLING_ARE_LISTED = 8377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_ACTIVATION_CONNECTION_LOST = 8378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLEAR_TASKS = 8380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAVORITES = 8381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_ADD_FAVORITE = 8382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_REMOVE_FROM_FAVORITES = 8383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_UNIT = 8384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE = 8385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCOVERY_REQUEST_FAILED_X = 8386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_MLPI_SELECTION = 8387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_DIRECTORYFAILOVER = 8388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEFAILOVER_MAINDBLOST = 8389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEFAILOVER_MAINDBRECOVERED = 8390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIFFERENT_DATABASE_CONFIG_EXISTS = 8391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY_SERVERS = 8392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_LICENSE_FAILED = 8393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_APPLICATION_FAILED = 8394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_SERVERS_NOT_RUNNING = 8395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SECONDS_ROUNDED_UP = 8396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_LPR_UNIT = 8397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DESTINATION_MUST_BE_DIFFERENT_FROM_SOURCE = 8398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CASH_REGISTER_MAPPINGS_INVALID_DETAIL = 8399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONNING_NOT_SUPPORTED_3D_MODE = 8400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ACTIVATE_DIFFERENT_DATABASE = 8402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WARNING_EVENTS_WILL_NOT_BE_DOWNLOADED = 8403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DUE = 8405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVIEW = 8406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ACTIVATE_DATABASE_DELETE_DIFFERENT_CONFIG = 8407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UPTODATE = 8408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTEXT_IMAGE = 8409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PLATE_IMAGE = 8410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_TO_MAP = 8411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_STATE = 8412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOMATIC_BACKUP_SUCCESSFUL = 8413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOMATIC_BACKUP_FAILED = 8414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICASTSDK_NOT_CONFIGURED = 8415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_OPEN_TO_HEALTH_MONITORING_DATABASE = 8416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_LOGIN_TO_HEALTH_MONITORING_DATABASE = 8417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SEND_CLEAR_USER_TASK = 8418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_RESOURCE = 8419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SECURITY = 8420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SYSTEM = 8421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VIDEO = 8422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESSCONTROL = 8423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSIONDETECTION = 8424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_LPR = 8425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONTACT_US = 8426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEINFO_UNAVAILABLE = 8427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SYSTEM_UNIT = 8428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_CURRENT_ZONE = 8429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_ALL_ZONES = 8430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_ALL_MOTION = 8431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_CALIBRATE = 8432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_CALIBRATE_WARNING = 8433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CONFIGURATION = 8434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GLOBAL_CARDHOLDER_SYNC_CANNOT_RETRIEVE_HOST_ENTITY = 8435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYBROWSER_REFRESH = 8436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PLUGINS = 8437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_DIRECTORY_ON_FIRST_SERVER = 8438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_CALIBRATE_ERROR = 8439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRICKLING_ARCHIVER_OFFLINE = 8440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESSCONTROL_HEALTHHISTORY = 8441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESSCONTROL_HEALTHHISTORY = 8442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_MOTIONMASK_EMPTY = 8443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_MOTIONMASK_EMPTY_SCHEDULE = 8444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_CONNECTED_TO_FEDERATE_SYSTEM = 8445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_ACTIVATE_DIRECTORY = 8446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUESTION_CANCEL_OFFLOAD_AND_EXIT = 8447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUESTION_CANCEL_OFFLOAD_AND_SHUTDOWN = 8449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_IN_PROGRESS = 8450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RESTORESUCCESS = 8451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RESTOREFAILURE = 8452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_IN_PROGRESS = 8454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_IN_PROGRESS = 8455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATION_IN_PROCESS = 8456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROPPING = 8457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_IN_PROGRESS = 8458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_STARTING = 8459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_IN_PROGRESS = 8460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_WAITING_FOR_UPGRADE = 8461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SAVED_TASKS = 8462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKS = 8463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_SHUTDOWN = 8464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_CAMERA_ORIENTATION_NOT_SET = 8465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_MOBILE_CLIENT = 8467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_SMOOTH_PLAYBACK = 8469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_AFFECT_USER_EXPERIENCE = 8470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TRICKLING_NO_FILTER_SET = 8471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_TIME_HAS_CHANGED = 8472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_SHARPS_TIME = 8473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_CLEAR_DATABASE = 8474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_DATABASE = 8475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTING_DATABASE = 8476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SERVEROFFLINE_DBCORRUPTED = 8477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DROP_DATBASE_EXIT = 8478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_DROP_DATABASE = 8479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_DATABASE = 8480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_UNIT_TAMPER = 8481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_ON = 8482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_OFF = 8483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_INSUFFICIENT_PRIVILEGES_RECIPIENTS = 8484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME_HIT = 8485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_HIT = 8486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_HIT = 8487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTIVATE_DATABASE = 8488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH_DATABASE_STATES = 8489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_DELETED = 8490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_SELECTION_BOTH = 8491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_DETAILS = 8492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_DUPLICATE_CAMERAS = 8493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_HIT = 8494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_UNIT = 8495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_ADDRESSES = 8496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_REMOVED_DUPLICATE_RECORDS = 8497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_STOPPED = 8498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_CONTEXTCAMERA = 8499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_MANUAL = 8500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUXILIARY_ARCHIVER_ADD_OMNICAST_FEDERED_CAMERA = 8501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GOTO_PREVIOUS_CONTENT_IN_CYCLE = 8502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GOTO_NEXT_CONTENT_IN_CYCLE = 8503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOW_CONTROL = 8504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STE_LABEL_APPLYING_CHANGES = 8505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_VISITOR_PROPERTY = 8506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_STOPPED_FOR_AGENT_RUNNING_ON = 8507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_RESTORED_FOR_AGENT_RUNNING_ON = 8508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEW_DIRECTORY_FAILOVER_CONFIG_DETECTED = 8509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTART_MAIN_SERVER = 8510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEEP_EXPANSION_SERVER = 8511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEW_FAILOVER_CONFIG_TITLE = 8512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_VIEW_PRIVILEGES = 8513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABOUT_COPYRIGHT = 8514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISMISS_HEALTH_EVENT = 8515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_POSITIONING = 8516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_UNIT_STATE = 8517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_MESSAGE = 8518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_CONNECTION_AVAILABLE = 8519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_CONNECTION_NOTAVAILABLE = 8520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_STATUS = 8521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_NOINFO = 8523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_GPS_INFOS = 8524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ODOMETRY_INFOS = 8525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_CAMERAS_RUNNING = 8526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_CAMERAS_DISCONNECTED = 8527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_POSITIONING_INFOS = 8528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_MAP_INFOS = 8529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_UNIT_STATE_INFOS = 8530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEFINED = 8531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNDEFINED = 8532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SHOW_VEHICLE_ROUTE = 8533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_DISPLAY_STREAM_USAGE_WARNING = 8534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STREAM_USAGE_AUTOMATIC = 8535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ALREADYCONNECTED = 8536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_WAIT_ELLIPSIS = 8537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREPARING_CANVAS = 8538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TRIGGER_INTRUSION_ALARM_RECURSIVE = 8539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_TILT_AXIS = 8540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENSTYPE = 8541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PTZ_SERIALPORT_NOT_CONFIGURED = 8543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_SMC = 8544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_EDGE_PLAYBACK_REQUESTS = 8545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENTRY360_CENTERCALIBRATION = 8546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CALIBRATE_LENS = 8547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPED_RESOLUTION = 8548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOT_ENOUGH_FREE_SPACE_ON_DISK = 8549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVEPRESET_DETAILS = 8551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATE_PRESET = 8552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME_PRESET = 8553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELOAD = 8554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALZOOM_PRESETS = 8555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RFID_USB_READER = 8558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_CARD = 8559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGE_TEMPLATE = 8560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE = 8561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_ENROLLMENT = 8562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_WHEN_CARD_IS_READY = 8563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_FIRST_SEEN = 8566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_LAST_SEEN = 8567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRINT_CARDS = 8568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ASSOCIATE_CARDS = 8569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ASSOCIATE_CARD = 8570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DENY_REQUEST = 8571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARD_REQUESTS = 8572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BATCH_ENROLLMENT = 8573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENROLL = 8574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIAL_MANAGEMENT = 8575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_MANAGEMENT = 8576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CREDENTIAL = 8577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_CREDENTIAL = 8578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEED_CHANGE_PASSWORD = 8579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_REQUESTED = 8580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARMS = 8581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE_TO_MOBILESHARPS = 8582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE_TO_PATROLLER = 8583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK_PATROLLER_HOTFIX = 8584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK_SHARPS_HOTFIXES = 8585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_INFO = 8586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_REQUESTED = 8587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_CANCELLED = 8588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_COMPLETED = 8589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACK_CONDITION_PENDING = 8590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_READY_TO_CLEAR = 8592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_CONDITION_CLEARED = 8593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_FORCIBLY_CLEARED = 8595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_PAN_ANGLE = 8596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_PAN_ANGLE = 8597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_TILT_ANGLE = 8598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TILT_ANGLE = 8599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOCK = 8600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_PAUSE = 8601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST = 8602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST_CANCELLED = 8603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST_COMPLETE = 8604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTED = 8605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTCANCELLED = 8606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTCOMPLETED = 8607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ROLE_CONNECTED = 8608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ROLE_DISCONNECTED = 8609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAYONANALOGMONITOR = 8610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOGMONITOR = 8611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ACTION = 8612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_EDIT_ACTION = 8614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_JPEG2000 = 8616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRY_DATE = 8619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_EDIT_SUCCESS = 8620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_EDIT_ERROR = 8621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_PLAYBACK_SPEED = 8622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_TILE_OR_MONITOR = 8623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADDITIONAL_ACTION = 8624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ANALOGMONITOR = 8625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORGROUP = 8626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BLOCK_UNBLOCK_VIDEO = 8627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORGROUPS = 8628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_MONITORGROUPS = 8629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOGON_NOT_CONNECTED_TO_SC_PASSWORD_CHANGE = 8630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGONABORTED = 8631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_MISSINGREQUESTUSERCHANGEPASSWORDEVENT = 8632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ANALOGMONITORS = 8633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ANALOGMONITORS = 8634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_CLEAR = 8635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSPARENCY_COLOR = 8637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOLERANCE = 8638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_NEW_WANTED = 8639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIAL_REQUEST_HISTORY_REPORT = 8640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIAL_REQUEST_HISTORY = 8641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_REQUEST_HISTORY = 8642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_CARDREQUEST_COMPLETE = 8645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUESTING_USERS = 8646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTING_USERS = 8647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_CUSTOMFIELDS = 8648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_CUSTOMFIELDS = 8649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_DATE_QUEUED = 8650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_DATE_PRINTED = 8651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_REQUESTER_USERNAME = 8652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_REQUESTER_EMAIL = 8653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_PRINT_REASON = 8654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_PRINTED_BY_USERNAME = 8655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWWANTED_MANAGEMENT = 8656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_NEWWANTED_MANAGEMENT = 8657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MANAGE = 8658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_REQUEST_REASONS = 8659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_START = 8660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_STOP = 8661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PANORAMIC_CAMERAS = 8662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_NO_LOGON = 8663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_WINDOWS = 8664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_SECURE_NAME = 8665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_SECURE_NAME_AND_PASSWORD = 8666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_ELAPSED = 8667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_ZONE = 8668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_VIOLATION = 8669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_TYPE_LOCAL_FILE = 8670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_TYPE_WCF = 8671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_READS_ON_FOR = 8672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HITS_ON_FOR = 8673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_GROUPING_DESCRIPTION = 8674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_GROUPING = 8675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_GROUPING_DESCRIPTION = 8676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_GROUPING = 8677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUB_TOTAL = 8678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY = 8679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NUMBER_OF_READS = 8680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NUMBER_OF_HITS = 8681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ANALOG_MONITORS = 8682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERA_BLOCKING = 8683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLED_CAMERAS = 8684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PERMITNAMEMATCHCATEGORY = 8685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_SELECTION = 8686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STREAMINFORMATIONS = 8688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CALIBRATE = 8689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCCREDENTIALS = 8690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPAZ_SIGNATURE_PAD = 8691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYMO_CARD_SCANNER = 8692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOPAZ_SIGNATURE_PAD_INI_TITLE = 8693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOPAZ_SIGNATURE_PAD_INI_MESSAGE = 8694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKING_FOR_CARD = 8695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CARD_FOUND = 8696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCANNING = 8697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYZING = 8698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTRACTING = 8699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_CARD_FOUND = 8700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_SCANNING = 8701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_TILE = 8702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_MESSAGE = 8703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AN_UNKNOWN_ERROR_OCCURED = 8704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_SCANNING_TITLE = 8705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DYMO_CARD_SCANNER_ACTION = 8706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOPAZ_SIGNATURE_PAD_ACTION = 8707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SETCOORDINATES = 8708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CALIBRATIONASSISTANT = 8709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FETCHINGACTUALPTZPOSITION = 8710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLBOUNDARIESFOUND = 8711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGMAXIMUMZOOMFACTOR = 8712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTOMINIMUMZOOMFACTOR = 8713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGTILTBOUNDARIES = 8714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGPANBOUNDARIES = 8715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCELLINGCALIBRATIONASSISTANT = 8716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOMLEFTFOVCALIBRATION_DIRECTIVE = 8717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPRIGHTFOVCALIBRATION_DIRECTIVE = 8718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TESTABSOLUTECOORDINATES_DIRECTIVE = 8719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_PAN_AXIS = 8720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOMRIGHTFOVCALIBRATION_DIRECTIVE = 8721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPLEFTFOVCALIBRATION_DIRECTIVE = 8722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_BLOCK = 8723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCK = 8724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MONITORGROUP = 8725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMAGEEDITOR = 8726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_UNDO = 8727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_REDO = 8728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_ROTATERIGHT = 8729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_ROTATELEFT = 8730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_FLIP_HORIZONTALLY = 8731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_FLIP_VERTICALLY = 8732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_CROP = 8733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_TRANSPARENCY = 8734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEEDITOR_ORIGINALPICTURE = 8735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEEDITOR_CURRENTPICTURE = 8736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_LOCK_AR = 8737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IMAGEEDITOR_CROPPINGUNIT_PIXELS = 8738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_IMAGEEDITOR_TITLE_UNSAVED = 8741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_VIDEOMODE = 8745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_ANALOGMONITORINOTHERGROUP = 8746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BADGE_PRINT_ACTIVITY_TRAILS_DESCRIPTION = 8748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATERSERVICE_VERSION = 8749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE = 8750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERDISPLAYCAMERANAME = 8751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE_COLORBAR = 8753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE_LASTIMAGE = 8754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REDUCING_VIDEO_RETENTION_PERIOD = 8755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_MONITORGROUPS = 8756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOFIFY_MONITORGROUPS = 8757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETE_MONITORGROUPS = 8758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_ANALOGMONITORS = 8759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOFIFY_ANALOGMONITORS = 8760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AC_READY = 8772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERY_READY = 8773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_IMAGES = 8778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_READ = 8779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND_READ = 8780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPLOAD_PICTURES_TO_ACTIVE_DIRECTORY = 8781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_SOURCECONDITION_ACK_REQUIRED = 8784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_INVESTIGATED_ON = 8786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_INVESTIGATED_BY = 8787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_INVESTIGATING = 8789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACKNOWLEDGEMENT_REQUIRED = 8790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_AS_DEFAULT_PARTITION = 8791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_NEW_ENTITIES_IN_THE_PARTITION = 8792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ENTITY = 8793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_INVESTIGATING = 8794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYONANALOGMONITOR_CAMERA_UNSUPPORTED = 8795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYONANALOGMONITOR_SEQUENCE_UNSUPPORTED = 8796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYVIDEOCONTROLBUTTONSONTILE = 8797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_ALARM_WARNING = 8798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDOOR = 8799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTDOOR = 8800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_MIX = 8801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BALANCED = 8802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEED = 8803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGHSPEED = 8804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOONLIGHT = 8805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_BLUE = 8806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_RED = 8807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SHARPNESS = 8808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_ILLUMINATIOMODE = 8809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_AUTOEXPOSURE = 8810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SHORTEXPOSURES = 8811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY = 8812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_DAYNIGHTMODE = 8813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY_60HZ = 8814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SWITCHINGGAIN = 8815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_TOGGLEGUARD = 8816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY_50HZ = 8817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_LOWLIGHTMODE = 8818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_EXPOSUREWINDOW = 8819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_CAMERA_OR_SEQUENCE_HERE = 8821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_FORCIBLY_ACKED = 8822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING = 8823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK = 8824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK_ALL = 8825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ALARM_SHOW_INVESTIGATE = 8826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ALARM_SHOW_ACK_REQUIRED = 8827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_FORCE_ACK = 8828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_FORCE_ACK_ALL = 8829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_INVESTIGATE = 8830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLETOAUTOCALIBRATE_ZOOM1X = 8831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLIPCAMERA = 8832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_TILT = 8834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TILT = 8835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USECENTERANDZOOMBOX = 8836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANALOG_MONITOR_CONNECTION = 8837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANALOG_MONITOR_DISCONNECTION = 8838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_ENTITY = 8839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_AND_ENROLL = 8840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDZOOMENABLED = 8842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTERONCLICKENABLED = 8843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOMBOXCENTERONCLICKENABLED = 8844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDPTZCALIBRATIONNEEDED = 8845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDPTZ = 8846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANNOTREACHTHATOBJECT = 8847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RECALCULATEBOUNDARIES = 8848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USETHISVALUE = 8849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COORDINATEPASSEDBOUND = 8850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBSERVEDVALUE = 8851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITDEFINED = 8852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CALIBRATEPTZ = 8853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_JAPANESE = 8854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_PRINT_CREDENTIALS_NO_BADGE_ASSOCIATED = 8855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_ALL_CARDHOLDERS_HAVE_CREDENTIALS_TO_PRINT_DO_YOU_WANT_TO_CONTINUE = 8859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWINTRUSIONUNITS = 8860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYINTRUSIONUNITS = 8861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEINTRUSIONUNITS = 8862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PC_AND_ANALOG_MONITORS = 8863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAY_CAMERA_SEQUENCE = 8864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EDIT_CARD_REQUEST_REASON = 8865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_CARD_REQUEST_REASON = 8866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CANNOT_BE_CHANGED_MUST_BE_RESET_BY_ADMIN = 8867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_WHEEL_IMAGE = 8868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_EXPORT_FULL_RES_IMAGES = 8869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDHOLDER_STATUS_SYNCHRONIZED = 8870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VIOLATION_DETAIL = 8871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDNETWORLADDRESS = 8872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICE_VEHICLE = 8873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_DUPLICATE = 8874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALREADY_PROCESSED = 8875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AMBER = 8876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_OF_INTEREST = 8877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FELON = 8878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BE_ON_THE_LOOK_OUT = 8879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_WANTED_STOLEN = 8880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TIREIMAGES_SET_OFF = 8881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_CAMERATREE = 8885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_CAMERATREE = 8886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_FAILED_TO_LOAD_STATE = 8887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_ACTIVE = 8888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_NORMAL = 8889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION_NORMAL = 8891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ALARM_NORMAL = 8892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_NORMAL = 8893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION_ACTIVE = 8894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_DISCOVERY_PORT = 8895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_BASIC_AUTOVU = 8896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_HOTLIST = 8897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FILE_ASSOCIATION = 8898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DENY_CARD_REQUESTS_CONFIRMATION = 8900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_LOST = 8901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_SUCCESSFUL = 8902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULD_NOT_LOAD_ROLE_CONFIGURATION_USING_DEFAULT = 8903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULD_NOT_FIND_THE_ROLE_CONFIGURATION = 8904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUXILIARY_ARCHIVER_ROLE_SUCCESSFULLY_STOPPED = 8905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WHILE_STOPPING_AUXILIARY_ARCHIVER_ROLE = 8906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUXILIARY_ARCHIVER_ROLE_SUCCESSFULLY_STARTED = 8907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WHILE_STARTING_AUXILIARY_ARCHIVER_ROLE = 8908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESSING_PICTURE = 8909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_USER_NAME_IN_TRAY = 8910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_PATROLLER_NAME_IN_TRAY = 8911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGURE_MANUFACTURERS_EXTENSIONS = 8912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OVERTIME_REGULATIONS_ORDER = 8913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PRIMARY_ARCHIVER = 8914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECONDARY_ARCHIVER = 8915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_WRITE_TO_DISK = 8916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_DISABLED_ON_THE_ARCHIVER_REASON_FORMAT = 8917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_ENTITY = 8918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PATROLLER_UPDATE_ALL_CONFIRMATION = 8920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_CARDREQUEST_CANCELLED = 8921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOTRANSMISSIONMODE = 8922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOWFIRMWAREUPGRADE = 8923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOMODEPUSHTOTALK = 8924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOMODEFULLDUPLEX = 8925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_OVERRIDE = 8926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOREDENTITIES = 8927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_EXPIREDCREDENTIAL = 8928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INACTIVECREDENTIAL = 8929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_LOSTCREDENTIAL = 8930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_STOLENCREDENTIAL = 8931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_UNASSIGNEDCREDENTIAL = 8932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWITCHTOMAPMODE = 8933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWITCHTOTILEMODE = 8934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_LICENSE = 8935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_PLAYBACK_UNAVAILABLE = 8936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWEVENTLIST = 8937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWCANVAS = 8938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GTAP = 8939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GTAP_FORUM = 8940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWALARMLIST = 8941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATION = 8942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONCAMERA = 8943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_CONVERSATION_OPTIONS = 8944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERVAL_BETWEEN_TIRE_IMAGES = 8945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STARTCONVERSATION = 8946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONSUBJECT = 8947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWRESULTS = 8948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SET_THREAT_LEVEL = 8949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_THREAT_LEVEL = 8950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_USER_LEVEL = 8951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_ACCESS_PERMISSION_LEVEL = 8952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_READER_MODE = 8953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_THREATLEVEL = 8954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_THREAT_LEVEL_ACTIVATED = 8956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_NO_SPACE = 8957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_DOES_NOT_MATCH = 8958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_INTRO = 8959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_TOTAL_CHARACTERS = 8960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_UPPERCASE_LETTERS = 8961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_LOWERCASE_LETTERS = 8962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_NUMERICAL_CHARACTERS = 8963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_SPECIAL_CHARACTERS = 8964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_DIRECTLY_ASSOCIATED_WITH_RULE = 8965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LACKS_PRIVILEGES_TO_CHANGE_OWN_PASSWORD = 8966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNIKEY_USB_READER = 8967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_THREAT_LEVEL = 8968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_THREATLEVELS = 8969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_THREATLEVELS = 8971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_START_BLOCK = 8972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_STOP_BLOCK = 8973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_INFO = 8974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_NOTIFICATIONS_ONLY = 8975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TRAY_MONITOR = 8976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CONVERSION = 8977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUARD_TOUR = 8978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CCTV_KEYBOARD = 8979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRY_SENSOR = 8980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR = 8981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE = 8982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE_CARDANDKEYPAD = 8984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE_CARDORKEYPAD = 8985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE = 8986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SET_THREAT_LEVEL = 8987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SETTHREATLEVEL = 8988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SETTHREATLEVEL_RECURSIVE = 8989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_RESET_THREAT_LEVEL = 8990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RESETTHREATLEVEL = 8991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RESETTHREATLEVEL_RECURSIVE = 8992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTPARTICIPANTSTOINVITE = 8993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDINVITATION = 8994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVITETOJOINCONVERSATION = 8995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHERPARTICIPANTSINVITED = 8996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOYOUJOINCONVERSATION = 8997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAITINGPARTICIPANTS = 8998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONS = 8999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHENJOININGCONVERSATION = 9000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDEMYVIDEO = 9002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_OPEN_TOO_LONG_CONFIG_ERROR = 9003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEWCONVERSATION = 9004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_QUERY_COMPLETED_WARNING = 9006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_QUERY_COMPLETED_INFORMATION = 9007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TRAIL_REMOTE_SD_SUBSCRIBERS = 9008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_SUBSCRIBE_REMOTE_SD = 9009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_UNSUBSCRIBE_REMOTE_SD = 9010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED = 9011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_CONFIG = 9012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_ACTIVATION_ACTIONS = 9013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_DEACTIVATION_ACTIONS = 9014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_PERMISSION_LEVEL = 9015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_MODE = 9016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULL_DUPLEX = 9017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HALF_DUPLEX_PUSH_TO_TALK = 9018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_LPRFILES_FROM_ROLE = 9019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_CONFIG_INHERIT_FROM_PARENT = 9021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_ENTITY = 9022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SUBJECT = 9023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_TEMPLATE = 9024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONOVERVIEW = 9026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REMOTE_SECURITY_DESK = 9027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REMOTE_DESCRIPTION = 9028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_IDENTIFICATION = 9031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT = 9032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_LOCATION = 9033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOPARTICIPANTS = 9034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOWMYVIDEO = 9035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDPARTICIPANT = 9036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_POKEPARTICIPANT = 9037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LEAVECONVERSATION = 9038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_ERROR_INVALID_PARAMETER = 9039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULLSCREEN_MONITORS = 9040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SELECTED_MONITOR = 9041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KICKOUT = 9042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_SYSTEM = 9043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_AREA = 9044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_THREAT_LEVEL_ACTIVE = 9046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_RESTORE_DEFAULT_TEMPLATE = 9049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_TWAIN = 9051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWAIN_CAPTURE = 9052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_PERMISSION_INSUFFICIENT = 9053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HARDWAREINVENTORY = 9054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_UNITTYPE_MOBILE = 9055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_UNITTYPE_FIXED = 9056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_THREAT_LEVEL = 9058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRED = 9059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TILE = 9060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILL_THE_TILE = 9061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_FULL_IMAGE = 9062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_QUALITY_DEGRADATION = 9063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_MIGHT_AFFECT_SYSTEM_PERFORMANCE = 9064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_PHYSICALADDRESS = 9065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_CPU = 9066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COULD_NOT_LOCATE_FILE = 9082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYWEAK = 9083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_WEAK = 9084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_GOOD = 9085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_STRONG = 9086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYSTRONG = 9087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIC_FOLDER_CACHE_LOCATION_INVALID = 9088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_AND_CHILDREN_QUESTION = 9089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_AND_CHILDREN = 9090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_ONLY = 9091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_AND_CHILDREN_QUESTION = 9092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_AND_CHILDREN = 9093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_ONLY = 9094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_SERVER_PUT_SYSTEM_DOWN = 9095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTORENAMESNAPSHOT = 9098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILEALREADYEXIST = 9099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILENAMETOOLONG = 9101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_FREEACCESS = 9102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POWER_FAILURE_ACCESS_CONTROL_UNIT = 9103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_FLOORS = 9104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_CABIN_READER = 9105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CABIN = 9106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_NAME_RESOLUTION = 9109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITMODEL = 9110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ACCESS = 9111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_SERVER = 9114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_SERVER = 9115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FLOOR_PROPERTIES = 9120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRECT_PLATE_VALUE = 9123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_READ_CORRECT_VALUE = 9128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND_READ_CORRECT_VALUE = 9129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_IN_USE = 9131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEW_TASK = 9133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RELOAD_WORKSPACE = 9134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONNECTED_USERS = 9135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THIS_TASK_CANNOT_BE_REMOTELY_CONTROLLED = 9141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THIS_TILE_CONTENT_CANNOT_BE_REMOTELY_CONTROLLED = 9142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALID_LICENSE_HARDWARE_MISMATCH = 9144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_FOLDER = 9145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_USER_LOGON = 9146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_USER_LOGOFF = 9147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGOFF = 9148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGON = 9149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETMYCAMERA = 9150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_BEFORE = 9152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_DAY = 9153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_AFTER = 9154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BELONGS_TO = 9155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ALARMPRIORITY = 9156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATEPARTIALLYSUCCEEDED = 9157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATEFAILED = 9158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDITING_NOT_SUPPORTED_EXCEPTION = 9159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_WAITING_FOR_DOWNLOAD = 9160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_MEDIA_ROUTER = 9161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_ARCHIVER = 9162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_INITIAL_DOWNLOAD = 9163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_REQUESTING_DOWNLOAD = 9164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_SEARCHING_ARCHIVES = 9165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_READING_ARCHIVES = 9166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_UNIT = 9167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_GETTING_DATA_FROM_UNIT = 9168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_NO_DATA = 9169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ZEROCONF = 9170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_REPORT_TO_DISK = 9171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_PIN = 9172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_UNASSIGNEDCREDENTIAL = 9173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_UNKNOWNCREDENTIAL = 9174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_EXPIREDCREDENTIAL = 9175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_INACTIVECREDENTIAL = 9176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_INACTIVEPERSON = 9177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_UNASSIGNEDCREDENTIAL = 9178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_EXPIREDCREDENTIAL = 9179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INACTIVECREDENTIAL = 9180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_LOSTCREDENTIAL = 9181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_LOSTCREDENTIAL = 9182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_STOLENCREDENTIAL = 9183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_STOLENCREDENTIAL = 9184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEVICES_COULD_NOT_BE_ADDED = 9186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_BACKUP_ERROR_DETAILS = 9187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_RESTORE_ERROR_DETAILS = 9188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_INTERLOCK_SAME_VALUE = 9189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ETHERNETPORT = 9190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_FILE_TYPE = 9191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INVALIDPIN = 9192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDINVALIDPIN = 9193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INVALIDACCESSRULE = 9194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INSUFFICIENTPRIVILEGES = 9195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ANTIPASSBACK = 9196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_OUTOFSCHEDULE = 9197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENFORCE_AFTER_ACCEPT_PERMIT_HIT = 9198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENFORCE_AFTER_ACCEPT_SHARED_PERMIT_HIT = 9199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_CHILDREN_IN_PARTITION_QUESTION = 9200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_CHILDREN_IN_PARTITION = 9201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_ONLY_IN_PARTITION = 9202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_CHILDREN_FROM_PARTITION_QUESTION = 9203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_CHILDREN_FROM_PARTITION = 9204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_ONLY_FROM_PARTITION = 9205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_YP3040 = 9206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_UNAVAILABLE_HINTS = 9207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INVALIDACCESSRULE = 9215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ANTIPASSBACK = 9216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INVALIDPIN = 9217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDINVALIDPIN = 9218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INSUFFICIENTPRIVILEGES = 9219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_OUTOFSCHEDULE = 9220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_NOENTRYDETECTED = 9221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTRYDETECTED = 9222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENHANCED_ACCESS = 9223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CONVERSION_OUT_OF_MEMORY = 9224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_LAST_EVENT = 9225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_RECEIVING_DATA = 9226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETURNING_VISITOR = 9227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MINIMUM_SECURITY_CLEARANCE_VERTX = 9228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_LOCALADDRESS = 9229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_NOCONNECTION = 9230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_LOGONFAILED = 9231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_TCPDISABLED = 9232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_REMOTECONNECTIONDISABLED = 9233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_ACCESSDENIED = 9234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JITTER_BUFFER_DELAY = 9236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTION_INSERTION_FAILED_MULTIPLE_LIMIT_REACHED = 9237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED_ANYWAY = 9238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESOLVE_EACH = 9239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_INSERTION_FAILED_MULTIPLE_LIMIT_REACHED = 9240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITYNOTDIAGNOSABLE = 9241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_PARAMSNULL = 9242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_AUTOCONFSKIPPEDPORT = 9243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_FAULTOCCURED = 9244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXCEPTIONOCCURED = 9245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_SHARPCONFIG_EXTALREADYCONFIGURED = 9246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_SHARPCONFIG_EXTNOWCONFIGURED = 9247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXTENSIONLOADFAILED = 9248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXTENSIONNOTSUPPORTED = 9249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_AUTOCONFNOTSUPPORTED = 9250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_NAME = 9252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_FIELD_INFO = 9253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_ISSUES = 9254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_OK = 9255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_IS_UNREACHABLE = 9256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_MASTERDIRECTORYSTARTED = 9259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SLAVEDIRECTORYSTARTED = 9260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SLAVEDIRECTORYLOST = 9261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DIRECTORYFAILOVEROCCURED = 9262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DATABASEFAILOVEROCCURED = 9263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_CONNECTEDTOPRIMARYDATABASE = 9264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_MASTERDIRECTORYLOST = 9265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_SAVE_WORKSPACE = 9266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_RESTORE_WORKSPACE = 9267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_RENAME_PAGE = 9268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_REFRESH_PAGE = 9269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_QUICKSNAPSHOT = 9270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_MOVE_PAGE = 9271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_KICKOUT = 9272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_SUBSCRIBERS = 9273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_VIDEO_SNAPSHOT = 9274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_AVAILABLE_TASKS = 9275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_EXECUTE_COMMAND = 9276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CREATE_TASK = 9277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CLOSE_PAGE = 9280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CHANGE_ACTIVE_PAGE = 9281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CLOSE_ALL_PAGES = 9282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_APPLY_MODIFICATIONS = 9283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSFERINGPORTABLEAP = 9284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIALIZINGPORTABLEAPTRANSFER = 9285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTABLEAPTRANSFERED = 9286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNINGS = 9288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_EXIT_FULL_SCREEN = 9289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_VALID = 9290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERGROUP_CUSTOMFIELDS = 9291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEACTIVATE = 9292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_BLOCK_RECURSIVE = 9293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCK_RECURSIVE = 9294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_THREAT_LEVEL_DEACTIVATED = 9295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_UPDATE_PENDING_HITS = 9296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERRORWHILEDIAGNOSTICREQUEST = 9297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_SEARCH_COVERS_ENTIRE_SYSTEM = 9298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_EVENT_LOG = 9299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CUSTOMFIELD = 9300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_ACCESS_DENIED = 9301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_MONITOR_UNAVAILABLE = 9302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_DISCONNECTED_KICK_OUT = 9303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_DISCONNECTED_TIMEOUT = 9304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTOR_ROW = 9305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY_LOCATION = 9306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT = 9307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT_DETAILS = 9308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLICK_TO_CANCEL = 9309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEEP_DELETED_EDGEGROUP_CAMERA = 9310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVALIDRESOLUTION = 9313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICKTOCHANGERESOUTION = 9314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UDP_DIFFERENT_VALUE = 9315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_EDGE_GROUP_SHOULD_BE_EMPTY = 9320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_EXTENSION_FORMATED = 9321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_READ = 9322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_READ = 9323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDING_CHILDREN = 9324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FINDING_ALL_CHILDRENS = 9325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDING_CHILDREN_OF = 9326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_CHILDREN = 9327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_CHILDREN_OF = 9328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON = 9329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELEARN_BACKGROUND = 9330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RELEARN_BACKGROUND_CONFIRMATION = 9331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVING = 9332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JOYSTICK_DEAD_ZONE = 9333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVING_UNIT = 9334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVING_TO = 9335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROXY_NAME = 9337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROXY_DESCRIPTION = 9338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION = 9339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AUTHENTICATION_FAILED = 9340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATING = 9341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_AUTHENTICATION = 9342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_CONNECT_INVALID_USER_FORMAT = 9343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVILEGE_DENIED_FORMAT = 9344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_MATCHPLATE = 9346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FAILOVER_ARCHIVERS = 9347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATA_ERROR = 9348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DVR_INPUTS = 9349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_KEYBOARDS = 9350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_INVALID_FILE = 9351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_INVALID_FILE_DETAIL = 9352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_OPEN_CUSTOM_G64 = 9353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_OPEN_BENCHMARK_RESULT = 9354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_EXPORT_RESULT = 9355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CLEAR_BENCHMARK_HISTORY = 9356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CONFIRM_CLEAR_BENCHMARK_HISTORY = 9357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_ERROR_DETAIL = 9358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_NO_RESULT_SELECTED = 9359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BENCHMARK_FAILED = 9360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CANT_RECOVER_BENCHMARK = 9361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_SHOW_ERROR_DETAIL = 9362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_SHOW_DETAILS = 9363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BENCHMARK_ENDED_WITH_ERROR = 9364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TASK_FAILED_DETAIL = 9365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_ERROR_LOADING_RESULT = 9366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_EXPORT_ERROR = 9367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RUNNING_ASSESSMENT = 9368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_VIDEO_FORMAT = 9369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TITLE_DESCRIPTION = 9370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TITLE = 9371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_WHAT_IS_RATED = 9372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_SUBSCORE = 9373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_GLOBAL_INDEX = 9374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_LAST_MEASURED_ON = 9375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_VIEW_ASSESSMENT_HISTORY = 9376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_LAOD_CUSTOM_FILES = 9377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RE_RUN = 9378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RESULT_INFORMATION = 9379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_RESULT_INFORMATION = 9380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_TASK_NAME = 9381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULT = 9382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_FILE_USED = 9383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_COMPRESSION = 9384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_ERRORS_DURING_BENCHMARK = 9385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_CUSTOM_BENCHMARK = 9386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_TASK_LIST = 9387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_SUBRESULTS = 9388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_BASE_SCORE = 9389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_ERRORS_DURING_ASSESSMENT = 9390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_EXPORT_RESULT = 9391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_DELETE_RESULT = 9392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_LOAD_RESULT = 9393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BUTTON_CLEAR_HISTORY = 9394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RAW_DATA = 9395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_DETAILED_INFO = 9396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_NO_DESCRIPTION = 9397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEST_CUSTOM_FILE = 9398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_1 = 9399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_2 = 9400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_3 = 9401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_HEADLINE = 9402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_SIMULTANEOUSLY = 9403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_STREMS_SIMULTANEOUSLY = 9404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_VIDEO_PLAYBACK = 9405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEST_DECODING_RENDERING = 9406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT_DATE = 9407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT_TIME = 9409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_READ_TIME = 9410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_EMAIL_NOTIFICATION_DEFAULT_SUBJECT = 9411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_EMAIL_NOTIFICATION_DEFAULT_BODY = 9412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_READ_DATE = 9413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READ1_TIMESTAMP = 9414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READ2_TIMESTAMP = 9415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COPY_CONFIG_SYNCHRONIZED_CARDHOLDERS_SOURCE = 9416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COPY_CONFIG_SYNCHRONIZED_CARDHOLDERS_DESTINATION = 9417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHECK_LOG_DETAILS = 9418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AD_USER_IMPORT_ERROR = 9419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_HAS_WARNINGS_CLICK_HERE = 9421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_IN_BACKWARD_COMPATIBILITY_MODE = 9422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_SIMPLE_MATCHER = 9423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENABLE_PLATE_EDITING = 9424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CONSOLE = 9425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MISCELLANEOUS = 9426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_FAILURE = 9427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_SUCCESS = 9428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_OLD_BACKUPS_CANNOT_BE_DELETED = 9432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT_COMPRESSION = 9433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_TCP = 9434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_HTTP = 9435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST_PORT = 9436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SUPERVISORPASSWORDEMPTY = 9437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_TCP_FAILURE = 9438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_HTTP_FAILURE = 9439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CAMERA_BLOCK = 9440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CAMERA_UNBLOCK = 9441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CAMERA_BLOCKED = 9442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CAMERA_UNBLOCKED = 9443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_TIREIMAGE = 9444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CLOUDUNITMANAGER_DESCRIPTION = 9446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYSTEM_WIDE = 9447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SPECIFIC_AREA = 9448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PROCESS_TERMINATED = 9452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PROCESS_FAILED_TO_CREATE = 9453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTCONNECT = 9454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_LOADERROR = 9455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_INVALID_PLAYER_STATE = 9456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_WRONG_COMPATIBILITYPACK = 9457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXPORT_PLAYBACK_SOURCE_DELETED = 9458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONTOOMANYREADS = 9459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOGGLE_RESOLUTION = 9460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_SPACE_COUNT_PER_ROW = 9461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBSERVERINVALIDURL = 9462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PROXY_SERVER = 9463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PROXY_SERVER = 9464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY_SERVERS = 9465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PING_UNIT = 9466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTINGTOWEBAUTHENTICATIONSERVER = 9467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONECTERRORTOAUTHENTICATIONWEBSERVER = 9468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY = 9469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPISPACECOUNT = 9470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_READS = 9471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_ERRORS = 9472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BESTEFFORT = 9473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MINBITRATE = 9474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACK = 9475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_TOOMANYREADS = 9477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOO_MANY_READS = 9478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VISUAL_TRACKING_LOAD_CONFIGURATION = 9479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STRATOCASTCOORDINATOR_NAME = 9480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STRATOCASTCOORDINATOR_DESCRIPTION = 9481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_FILE_PATH = 9482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_DISPLAY_NANE = 9483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_MAX_NUMBER = 9484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXBITRATE = 9485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_REGIONS = 9486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION = 9487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_DELETION_CONFIRMATION = 9488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_READS_DELETION_FAILED = 9489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_READS_DELETION_SUCCEEDED = 9490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METRES = 9492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTO_TRACKING_HEIGHT = 9493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING = 9494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLETOFETCHONLINEHELP = 9495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ROLE_SPECIFIC = 9496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN = 9497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN_TIMER = 9498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITMATCHER_ENABLENOEVENT = 9499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN_TOOLTIP = 9500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIQSWINDOW = 9502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ENTITYTODISPLAY = 9503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_H264VIQS = 9504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIALIZING = 9505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_NOMATCHEVENT = 9506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_EXPORTED_FILES_SAVED = 9507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENCRYPTION_KEY_LENGHT = 9508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_H264VIQS_STREAM = 9509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_THUMBNAILS_REQUESTS = 9510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIQS_TOOLTIP = 9511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_CURRENT_VS_AVAILABLE = 9513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SKIP = 9514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACFAIL = 9515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACFAIL_DESC = 9516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERYFAIL = 9517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERYFAIL_DESC = 9518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER = 9519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_DESC = 9520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCFAILURE = 9521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCFAILURE_DESC = 9522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOQUALITY_CAPABILITIES_NOT_EQUALS = 9527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAVORITES_AND_RECENTLY_USED = 9528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_COMPONENTS = 9529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_UPDATES = 9530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALL_DATE = 9531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCK_LEVEL = 9532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSE_ALL_TASKS = 9533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENTS_LONG = 9534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_CONFIG_TOOL_SPECIFIC_VERSION = 9535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_CONFIG_TOOL = 9536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDIT_FEDERATED_ENTITY_SAME_VERSION = 9537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOG_OFF_AND_LOG_ON = 9538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTRYASSUMED = 9539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_WALL = 9540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_CEILING = 9541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_GROUND = 9542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAPOSITION = 9543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNBLOCK_CAMERA = 9544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UNBLOCK = 9545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_INVALID = 9546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTOOPENSNAPSHOTS = 9547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTOPRINTSNAPSHOT = 9548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LICENSE_INVALID_HARDWARE_CHANGE = 9549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_ITEM = 9550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_ITEM = 9551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEARED_CONDITION = 9552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_CLICK_TO_ASSIGN = 9553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISASSOCIATE_CREDENTIAL = 9554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION_ROW = 9555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_ROW_DELETION_CONFIRMATION = 9556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_CBR = 9557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_AUTOFOCUS = 9561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_START_REDIRECTOR = 9571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_ENTITIES_SYNC_IN_PARTITION = 9572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNIT_WILL_REBOOT = 9573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MODE_HIGH_FPS = 9574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_OVERTIME_ENABLE_LOGS = 9575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_DIRECTORY_CONFLICT = 9577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_RETRIEVING_ALL_PAGES = 9578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_RETRIEVING_PAGE = 9579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DBVERSION_HIGHER_THEN_CURRENT = 9580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_PUSHBUTTONS = 9581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_FLOORTRACKING = 9582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIRRORING_CONFIGURATION = 9583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MIRRORING_CONFIGURATION = 9584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_CAMERA_VIDEO_GHOST = 9585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOTRACKING_START = 9586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOTRACKING_STOP = 9587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CANNOT_NOT_BE_EMPTY = 9588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_SERVERS = 9589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_EXTREME = 9590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_EQUAL = 9591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_HIGHLIGHT = 9592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_MIXED = 9593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_HORIZONTAL = 9594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_VERTICAL = 9595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_CREATE_INCIDENT = 9596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_ACCESS_TROUBLESHOOTER = 9597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_PRIVILEGES_TROUBLESHOOTER = 9598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_UNIT_DISCOVERY_TOOL = 9599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_UNIT_REPLACEMENT = 9600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_IMPORT_TOOL = 9601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_COPY_CONFIG = 9602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_SNAPSHOTS = 9603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_ADD_UNIT_STATUS = 9604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_FIRMWARE_UPGRADE_STATUS = 9605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_DATABASE_ACTION_STATUS = 9606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_THREATS = 9607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_LAUNCH_SECURITY_DESK = 9608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_LAUNCH_CONFIG_TOOL = 9609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_MOVE_UNIT = 9610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_AUTO = 9611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_OFF = 9612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_ON = 9613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_1 = 9614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_2 = 9615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_3 = 9616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_ZOOM_IN_FINE = 9617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_ZOOM_OUT_FINE = 9618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_WHITE_LED_ON = 9619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_WHITE_LED_OFF = 9620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_AUTOBACKFOCUS = 9621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_VCS_RESET_IVA_COUNTERS = 9622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RECONNECT = 9623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION = 9624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_UNIT = 9625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ROLE_REJECTED_SERVER = 9626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_DATE = 9627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_ALARM_ACTIVE = 9628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_ALARM_INACTIVE = 9629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_CAPACITY_CHANGED = 9630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_DISK_FULL = 9631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_RECORDING_START = 9632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_RECORDING_STOP = 9633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_TIME_DIFFERENCE = 9634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_NOACCESSRULEASSIGNED = 9635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_NOACCESSRULEASSIGNED = 9636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_WILDCARDS = 9637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_MEGA_SD = 9638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_MEGA_SD_FACE_DETECTION = 9639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_VALID = 9640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID = 9641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID_DETAILS = 9642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_FILENOTFOUND = 9643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_FILENOTFOUND_DETAILS = 9644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID_CREDENTIALS = 9645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPS_EXTRACTOR_GROUP = 9646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_LIST = 9647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_INVENTORY = 9648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_VIDEO_SYNCHRONIZATION = 9649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_48KHZ = 9650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEGENETECSERVER_IPV6_PARAM_DESC = 9651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_ZONE_COUNT_SINGLE_LIMIT = 9652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_ZONE_COUNT_MULTIPLE_LIMIT = 9653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAXIMUM_ITEM_COUNT = 9654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MINIMUM_ITEM_COUNT = 9655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNKNOWN_FILE_FORMAT = 9656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_PREVENT_LOCALADDRESS = 9657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SHORTCUT_CANNOT_BE_MODIFIED = 9658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINCIPAL_DATABASE = 9659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIRROR_DATABASE = 9660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_NAME_HERE = 9661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_VALUE_HERE = 9662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PTZ_ON_THIS_ENCODER = 9663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_COPY_STATISTICS_SELECTED_VIDEO_TILE = 9664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOW_STATUS_OVERLAY_VIDEO_TILE = 9665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_DIGITAL_ZOOM = 9666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGION_NAME = 9667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOW_STATISTICS_OVERLAY_VIDEO_TILE = 9668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_WATERMARK_NOT_ENABLED_FOR_ALL_SEQUENCES = 9669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERADISPLAYMODE_NAVIGATION = 9670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERADISPLAYMODE_PERIMETER = 9671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AD_CREDENTIAL_IMPORT_ERROR = 9672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_CANNOT_VERIFY = 9673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CARD_DATA = 9674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLES_AND_UNITS = 9675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COULD_NOT_CONFIGURE_RECOVERY_MODE = 9676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERIFY_WATERMARK = 9677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANOMORPH_LENSTYPE_RPL = 9678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICKTOCLOSE = 9679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SMC_FIRMWARE_PACKAGE = 9680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DIGITAL_ZOOM_ON_CAMERA = 9681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_CLEARANCE_RESET_SYSTEM = 9682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_CLEARANCE_RESET_AREA = 9683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USER_LEVEL_RESET = 9684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LEVEL_VALUE = 9685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SECURITY_CLEARANCE_RESET = 9686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LEVEL_RESET_SYSTEM = 9687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_ALL = 9688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_MATCHPLATE_AND_STATE = 9689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_ARCHIVE_SELECTED = 9690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECT_KEYBOARD = 9691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPRESS_BACKUP_FILE = 9692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ENABLE_VIRTUAL_KEYBOARD = 9693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CHECKING_LISTENING_PORT = 9694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDQUERYINTERFACES = 9695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_CANNOT_EXCEED_X_MINUTES = 9696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_MUST_BE_LARGER_THAN_X_MINUTES = 9697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CANNOT_BE_COMPLETED_BECAUSE_START_DATE_BEFORE_X = 9698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CANNOT_BE_COMPLETED_BECAUSE_END_DATE_AFTER_X = 9699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HINT_ANNOTATION_EMAIL_ADDRESS = 9700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SWITCH_HIGH_RESOLUTION = 9701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_BENOMAD = 9702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_UNIT_METRIC = 9703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_UNIT_IMPERIAL = 9704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_QUERYING_INTERFACES = 9705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EXCLUSIONFILTER = 9706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPING_INTERFACES = 9707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPED_INTERFACES = 9708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPING_READERS = 9709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPED_READERS = 9710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_LINE = 9711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_RECTANGLE = 9712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_ELLIPSIS = 9713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT = 9714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_TEXT = 9715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_IMAGE = 9716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_BARCODE = 9717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGESTORAGE_FAILURE = 9718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SERVER_ON_MASTER_DATABASE = 9719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_FAILOVER_SERVER = 9720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGERECORDING_COMMAND_TIMEOUT = 9721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_EDGEEVOMODULEFIRMWAREVERSIONUNSUPPORTED = 9722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_COMMAND = 9723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAVAILABLE_MONITOR = 9724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_MONITOR = 9725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARKING_FACILITY = 9726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_HOTLIST = 9727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_PERMIT = 9728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_DELETION = 9729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_MODIFICATION = 9730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_TOO_MANY_READS_POPUP = 9731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MLPI = 9732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITED = 9733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_CAPACITY = 9734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_CAPACITY = 9735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CAPACITY_EXCEEDED_LIVE = 9736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CAPACITY_EXCEEDED_PLAYBACK = 9737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTIONS_OPERATION = 9738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_PLAYER_DOES_NOT_RECOGNIZE_THE_SCHEME = 9739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLESYMBOLICLINKS = 9740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENABLESYMBOLICLINKS = 9741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_UNC_ROOT_SHARE = 9742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_OFFSET = 9743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_BACKWARD_FORWARD = 9744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION_PARKINGFACILITY = 9745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_PARKINGFACILITY_DELETION_CONFIRMATION = 9746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_WAIT_DLG_REFRESH_UNIT = 9747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_ACTIVATE_MONITOR = 9748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACKUP_NOW = 9749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESTORE_NOW = 9750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_CANNOT_MOVE_DELETE = 9751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UPDATE_MOBILE_SHARP_SUCCEED = 9752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UPDATE_MOBILE_SHARP_FAIL = 9753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOHIDE = 9754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_LIVE_TIMELINE = 9755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ALWAYS_DISPLAY_LIVE_TIMELINE = 9756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_USERINTERACTION_ASK_TO_ACCEPT_SENT_TASKS = 9757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_OPEN_SENT_TASKS = 9758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IMPORTTOOL_EMAIL_FAILED = 9759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INSUFFICIENT_SECURITY_LEVEL = 9760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION = 9761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMMERVISION_CALIBRATION_WARNING = 9762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMMERVISION_CALIBRATION_INFO = 9763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_RETRIEVINGENTITIES = 9764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_USE_TRICKLING = 9765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_NO_VIDEO = 9766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_FAILED = 9767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_NONE = 9768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_SUCCESS = 9769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_CALIBRATING = 9770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_DISPLAYED = 9771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_MORE = 9772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_EDGEEVO_EDM_GRP1_AND_ELM_GRP1_CANNOT_COHABIT = 9773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCKED = 9774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_BLOCKING_INDEFINITELY = 9775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_BLOCKING_BLOCKFROM = 9776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TRAY_SYSTEMMESSAGES = 9777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTEMONITORING = 9778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGERALARMS = 9779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_RECORDING_ACTION_NOW = 9780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VIRTUALCAMERA_NO_OUTPUT = 9781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BYPASS_ENFORCEMENT_SET_OFF = 9782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_ALL_X_RESULTS = 9783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_MORE_RESULTS = 9784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WDR = 9785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRIVILEGES_ACTIONS = 9786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_ENTITIES_READONLY = 9787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_ENTITIES_READWRITE = 9788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CAMERACONFIGURATION = 9789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DETAILS = 9790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PTZ_PRIORITY_OVERRIDES = 9791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_EVENTS = 9794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATEARCHIVERDATABASE_DELETEVIDEOFILES = 9804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOFORMAT = 9805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_KFI = 9806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NETWORK_SETTING = 9807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RECORDING_MODE = 9808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK_OPEN_TOO_LONG_EVENTS = 9809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK_ACCESS_DENIED_EVENTS = 9810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_UNLOCKED_BY_SCHEDULE = 9811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_FORCEACKNOWLEDGEALARMS = 9812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FORMAT_PROGRESS = 9813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_EXCELFILES_RECENT = 9814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_OPTIONS = 9815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_STREAM = 9816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_SOURCE = 9817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EXPORT = 9818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_ERROR_GENERIC = 9819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_ERROR_NOT_INSTALLED = 9820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_VERSIONING_ERROR = 9821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY_TEMPLATE = 9822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_RETRY = 9823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_INTERRUPTED = 9824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_FORCESTOP = 9825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_BUILDING = 9826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_RECV_FAILURE = 9827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_NOVIDEO = 9828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_NOSEQUENCE = 9829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_INCOMPLETE_LASTSEQ = 9830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_SEQRECV_FAILURE = 9831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_INFO = 9832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_KIND_MAP = 9833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_MAP_DESCRIPTION = 9834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_MAP_DESCRIPTION = 9835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_SITE = 9836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_PLUGIN = 9837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_EXCEPTION = 9838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_EXCEPTION = 9839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_VIA_AREA_Y = 9840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME = 9841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_DURATIONS = 9842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEPENDENT_DURATIONS = 9843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_FRAMES = 9844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRETRIGGER_TIME = 9845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAMES = 9846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_AND_PLAYBACK = 9847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_AND_STILL_FRAMES = 9848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_TIMES = 9849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_DURATIONS = 9850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_FRAME_PRETRIGGER_TIME = 9851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DURATION_LONGER_THAN_DWELL_TIME = 9852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_HITS_AND_ASSOCIATED_READS = 9853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ERROR_ENTITY_IN_USE = 9854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_CHANGED = 9855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTIONS_FOR_X = 9856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VISUAL_TRACKING_NOT_SUPPORTED = 9857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CAMERA_CONFIGREPORT = 9858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_PRIVATESECTION = 9859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_RESTRICTEDSECTION = 9860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATOR = 9861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SET_PARTITION_ADMINISTRATOR_OF_X = 9862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_ALREADY_CONFIGURED = 9863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPATIBLE_CONFIGURATIONS = 9864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETVIDEOUNITS = 9865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_METADATA = 9866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ROLE_SERVERS_CLEAR_WARNINGS = 9867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_WALL_MODE = 9868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_SIMPLE_MODE = 9869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROWS = 9870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNS = 9871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZEROISUNLIMITED = 9872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_CLOSE = 9873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK = 9874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK_WITH_DELAY = 9875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_3X3 = 9876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_4X4 = 9877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_5X5 = 9878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_3X3 = 9879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_4X4 = 9880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_5X5 = 9881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_6X6 = 9882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_7X7 = 9883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_8X8 = 9884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ANTIPASSBACK_SCHEDULE_WITH_VERTX = 9885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_LINK_UNIT_TO_SAME_CHANNEL = 9886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL_ASSOCIATION = 9887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_SIDE_A_TO_SMC_CHANNEL = 9888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_SIDE_B_TO_SMC_CHANNEL = 9889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACE_MODULE = 9890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACE_MODULES = 9891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_INTERFACE_MODULES = 9892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIRSTINRULE_CONFIGURATION_ERROR = 9896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_NOSUPERVISORS_ERROR = 9897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_MAXSUPERVISORS_ERROR = 9898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_DISABLED = 9899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_INVALIDSETTINGS_ERROR = 9900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_UNITMIXMODE_ERROR = 9901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_UNIT_ERROR = 9902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_PEOPLECOUNT_DISABLED = 9903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_CONFIGURATION_ERROR = 9904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_ELEVATOR_ERROR = 9905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_MULTIPLEUNITS_ERROR = 9906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_UNSUPPORTED_ERROR = 9907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_MAINTENANCEMODE_ERROR = 9908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_UNLOCKSCHEDULE_ERROR = 9909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_ANTIPASSBACK_ERROR = 9910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_FLOORSINAREA_ERROR = 9911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_RTSP_PORT_ALREADY_IN_USE = 9912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_NOTSUPPORTED_ERROR = 9913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_RULE = 9914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_DOORS_UNLOCK_SCHEDULES = 9915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_ACCESS_RULES = 9916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_PERSON_RULE = 9917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISORS = 9918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BYPASS_LIST = 9919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IP_RANGE_INVALID = 9920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_ROUNDABOUT = 9921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_RAMP = 9922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_BRANCH = 9923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_FOLDER = 9924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSONAL_INFORMATION = 9925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_SETTINGS = 9926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE = 9927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPT_CONNECTED = 9928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SETTINGS = 9929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERY_LC = 9930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION = 9931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION_SOURCE = 9932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION_DESTINATION = 9933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_LOCKED = 9934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_ABOUT_TO_LOCK = 9935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_INACTIVE = 9936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_LOCK = 9937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_INFORMATION_ANONYMOUS = 9938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEEDBACK_ATTACHMENTS = 9939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_INFORMATION = 9940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ATTACH_FILES = 9941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ATTACH_SCREENSHOTS = 9942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEND = 9943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_CAMERA_NAME = 9944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEND_FEEDBACK = 9945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEEDBACK_SENDING_TOOLTIP = 9946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROPPIN_LEARN_INFO = 9947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MODIFY_NONEXISTANT_SHAPE = 9948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOVE_NONEXISTANT_SHAPE = 9949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CREDENTIAL_REQUEST_ACTIVITY_EVENTS_NOTCONFIGURED = 9951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ACTIVITY_TRAIL_EVENTS_NOT_CONFIGURED = 9952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TIME = 9953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYNCHRONIZATION_RECURRENCE = 9955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED = 9958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED_WHEN_DOOR_CLOSES = 9959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR = 9960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AT_CC = 9961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_UPDATE = 9962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_EXPIRES_ON = 9963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FORCE_REFRESH = 9964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_SYNCHRONIZATION_FREQUENCY = 9965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLINE_SYNC_DAILY_SCHEDULE_EMPTY = 9966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_OFFLINE_SYNC_FORCE_REFRESH = 9967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL = 9968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_SYNCHRONIZATION = 9969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_SYNCHRONIZATION = 9970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULED_SYNCHRONIZATION = 9971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLINE_SYNC_WARNING = 9972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAMPERING_OFF = 9973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GHOST = 9974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIGITALAUTOTRACKING_START = 9975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIGITALAUTOTRACKING_STOP = 9976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK_ON_CLOSE_NOT_SUPPORTED_VERTX = 9977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_MAXIMUM_DELAY_RELOCK_VERTX = 9978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALAUTOTRACKING = 9979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_DOOR_RELOCK_CONFIGURATION = 9980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BENOMAD_FOLDER_NOT_FOUND = 9981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_MOBILECLIENT = 9982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATORS_DESCRIPTION = 9983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PRIVILEGE_DESCRIPTION = 9984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTING_PRIVILEGE_TEMPLATE_DESCRIPTION = 9985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_PRIVILEGE_TEMPLATE_DESCRIPTION = 9986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVESTIGATOR_PRIVILEGE_TEMPLATE_DESCRIPTION = 9987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_PRIVILEGE_TEMPLATE_DESCRIPTION = 9988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVISIONING_PRIVILEGE_TEMPLATE_DESCRIPTION = 9989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_OPERATOR_PRIVILEGE_TEMPLATE_DESCRIPTION = 9990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ILLUMINATION_ON = 9991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ILLUMINATION_OFF = 9992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PRESET_RECALL_SPEED = 9993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_CAMERA_ON = 9994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_CAMERA_OFF = 9995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_WIPER_ON = 9996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_WIPER_OFF = 9997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PUMP_ON = 9998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PUMP_OFF = 9999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F0_ON = 10000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F0_OFF = 10001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F1_ON = 10002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F1_OFF = 10003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_START_WIPER_CYCLE = 10004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ALL_RELAYS_ON = 10005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ALL_RELAYS_OFF = 10006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_1ON_2OFF = 10007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_2ON_1OFF = 10008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_12ON = 10009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_12OFF = 10010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_START_PRESET = 10011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_STOP_PRESET = 10012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DELAY = 10013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ADD_PRESET = 10014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_REMOVE_PRESET = 10015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_PAN_SPEED = 10016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_TILT_SPEED = 10017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_RIGHT = 10018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_LEFT = 10019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_UP = 10020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_DOWN = 10021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_END_STOP_POSITIONS = 10022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_END_STOP_POSISIONS = 10023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_RANDOM_MODE = 10024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_RANDOM_MODE = 10025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MAX_SPEED_RANDOM_MODE = 10026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MIN_SPEED_RANDOM_MODE = 10027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MAX_TIME_RANDOM_MODE = 10028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MIN_TIME_RANDOM_MODE = 10029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_PARK_MODE = 10030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_PARK_MODE = 10031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DELAY_PARK_MODE = 10032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_ON = 10033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_OFF = 10034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_SPEED = 10035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_DURATION = 10036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MODE_STOP = 10037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_INITIALIZATION = 10038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED_ON_ACCESS_GRANTED = 10039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOLOCK = 10040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NETWORK_CARD_NOT_FOUND = 10041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_WDRENABLED = 10042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_EVENTS = 10043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_BEFORE_ALARM_TIME = 10044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_AFTER_ALARM_TIME = 10045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ESCORTREQUIRED = 10046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ESCORTREQUIRED = 10047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_CARDHOLDERREQUIRED = 10048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_CARDHOLDERREQUIRED = 10049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STREAMING_SCHEDULE = 10050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASK_BEFORE_UNIT_SYNC = 10051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VISITORESCORT_CONFIGURATION_ERROR = 10052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_VISITORESCORT_NOTSUPPORTED_ERROR = 10053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TWORULE_CONFIGURATION_ERROR = 10054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_TOWRULE_NOTSUPPORTED_ERROR = 10055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANT_TIME = 10056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD = 10057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED = 10058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_EVENT = 10059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_FORCED = 10060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_HELD = 10061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_TO_EXIT_PLUS_ACRONYM = 10062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_NONEXISTANT_SHAPE = 10063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_POLYGON = 10064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HAS_TIMEOUT = 10065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_CLOSE_AFTER = 10066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PROGRESSION = 10067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_360_FEATURES = 10068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_HORIZONTAL = 10069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_VERTICAL = 10070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_CIRCULAR = 10071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_DOUBLE_PANO_CEILING = 10072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_DOUBLE_PANO_CEILING = 10073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_QUAD_PTZ_CEILING = 10074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_SINGLE_PTZ_CEILING = 10075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_DOUBLE_PANO_QUAD_PTZ_CEILING = 10076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_DOUBLE_PANO_SINGLE_PTZ_CEILING = 10077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_PANO_WALL = 10078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_PANO_WALL = 10079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_QUAD_PTZ_WALL = 10080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_SINGLE_PTZ_WALL = 10081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_PANO_QUAD_PTZ_WALL = 10082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_PANO_SINGLE_PTZ_WALL = 10083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_3M_FISHEYE_CEILING = 10084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_FISHEYE = 10085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_VGA_QUAD_STREAMS_CEILING = 10086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DATABASE_TASK_TIME = 10087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_SETTINGS = 10088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_ADDRESS = 10089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_DHCP = 10090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IGNORE_WEB_PROXY = 10091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_PROPERTIES = 10092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_MIXED_MODE = 10093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_FACE_DETECTED = 10094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE = 10095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CATEGORY = 10096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CATEGORIES = 10097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_SEQUENCES = 10098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_SEQUENCES = 10099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATOR_OF = 10100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT = 10102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHMENT = 10103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_START_INCIDENT_RECORDING = 10104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STOP_INCIDENT_RECORDING = 10105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NOTIFY = 10106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE = 10107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_COLUMNS = 10108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_COLUMNS = 10109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RENAME = 10110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_FULL_REPORT = 10111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_ENTRIES = 10112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_MODIFY_ENTRIES = 10113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_DELETE_ENTRIES = 10114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ADD_ENTRIES = 10115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTAL = 10116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST_WITH_VIEW = 10117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST_WITHOUT_VIEW = 10118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_UNCHECK_PARTITION_WARNING = 10119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_GROUPSECURITYVIOLATION = 10120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_RELAY_NAME = 10121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MAX_SUPPORTED = 10122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMC_NOTSUPPORTED_ERROR = 10123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FIRMWARE_REQUIRED = 10124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEXT_SEQUENCE = 10125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREVIOUS_SEQUENCE = 10126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_COUNT = 10127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAPDESIGNER = 10128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAPDESIGNER = 10129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_LIVE_CAMERA_NAME = 10130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PLAYBACK_CAMERA_NAME = 10131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PLATE_LIST = 10132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND_PROCESS_TRAY = 10133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHMENTS = 10134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDING_FEEDBACK = 10135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEEDBACK_SENT = 10136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ATTACH = 10137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_DURATION = 10138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTENT_CYCLING = 10139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_SEC_BEFORE_ALARM = 10140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_ARCHIVE_DELETED = 10141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_FOLDER = 10142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_ARCHIVE_DELETED_DESCRIPTION = 10143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REVERT_INHERITED_VALUE = 10144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OUTPUT_TRIGGERED = 10145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREFERRED_INTERFACE = 10146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AND_UNIT_MISMATCH = 10147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OUTPUT_TRIGGERED_DESCRIPTION = 10148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_MODIFIED = 10149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_PARTITIONS = 10150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_DIRECTORY = 10151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY_FOLDER = 10152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_STOPPED_TIMEDOUT = 10153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_NOTIFY = 10154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_AN_IMAGE = 10155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCIDENT_RECORDING_STARTED = 10156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_CAMERA = 10157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_NETWORK_FILE = 10158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_NETWORK_FILE = 10159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_DOES_NOT_EXIST = 10160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_ACCEPT_FILE = 10161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_LEFT = 10162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_CENTER = 10163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_RIGHT = 10164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_DIAGNOSTIC_A_REDIRECTOR_FAILED = 10165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_DIAGNOSTIC_ALL_REDIRECTORS_SUCCESS = 10166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_ENCRYPT_COMMUNICATION_CHANNEL_NOT_SUPPORTED = 10167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_ENCRYPT_COMMUNICATION_CHANNEL_NOT_SUPPORTED_DETAILS = 10168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_TRIGGER = 10169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_LOADED_MAP_ENGINE = 10170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VAULT = 10171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_SNOOZED = 10172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ALARM_FORWARDED = 10173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_MANAGEMENT = 10174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERS_AND_CREDENTIALS = 10175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ALARM = 10176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ENTITY = 10177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHANGE_ICON = 10178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_MAIN_SERVER = 10179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_FAILOVER_SERVER = 10180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PRIORITY_ADD_EXCEPTION = 10181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_PARENTS = 10182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_OVERRIDES = 10183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_LEVEL_OVERRIDES = 10184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LEVEL_OVERRIDES_PTZ_MESSAGE = 10185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_VALUE = 10186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_REQUEST_NOT_SUPPORTED = 10187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VAULT_LOCATION = 10188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_PERMIT = 10189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_DELAY = 10190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_ANNOTATIONFIELD = 10191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST = 10192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_IMAGE_RETENTION = 10193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_FEDERATION_MODE = 10194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_VIDEOREDIRECTION = 10196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_SETTINGS_AS_STRING_EXTENDED = 10197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_SETTINGS_AS_STRING = 10198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_TYPE = 10199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM = 10200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_IN = 10201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVINGENTITY_FROM_VISIBLEPARTITIONS_WARNING = 10204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOTADDCAMERA_NOARCHIVER = 10205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACCESS_MANAGER_RUNNING = 10206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_DISCOVERY_PORT_MISMATCH = 10207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_DISCOVERY_PORT_MISMATCH_DETAILS = 10208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED_NORESULT = 10209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READS_IMAGE_RETENTION = 10210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HITS_IMAGE_RETENTION = 10211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_SQLVERSION_ERROR = 10212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LESS = 10213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RGB = 10214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_SHORT = 10215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_TO_DISK = 10216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAIT = 10217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_DATA = 10219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_SOURCES = 10220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_CONNECTION_RECOVERS = 10221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEC_UPON_RECONNECTION = 10222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_THREATS = 10223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_TO_WINDOW = 10224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_CONFIG360 = 10226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIDEO_MODE = 10227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_ENTER = 10228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_EXIT = 10229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_VAULT = 10230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_VIDEO_FILE = 10231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_FOLDER = 10232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_VAULT_PATH = 10233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_FOLDER_PATH = 10234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGING_VAULT_FOLDER = 10235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNAVAILABLE_PREVIEW_ENCRYPTED = 10236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITY = 10237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_ENTITY_TO_PARTITION_MAKE_UNAVALIABLE = 10238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCURS = 10239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EFFECTIVE = 10240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EVENT_TO_ACTION = 10241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MANUALLY_UNLOCKED = 10242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MAINTEANCE_MODE_SET = 10243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MAINTENNACE_MODE_CANCELLED = 10244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_LOCKING_OVERRIDE_DOOR_UNLOCK_SCHEDULE = 10245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_OVERRIDE_DOOR_UNLOCK_SCHEDULE = 10246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_SCHEDULE_OVERRIDE_CANCELLED = 10247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GO_TO_FILE_LOCATION = 10249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_CUSTOMENTITY = 10250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITIES = 10251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICS = 10252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_EXPORT = 10253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_AS = 10254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_G64X_DEFAULT_MULT_EXPORTS = 10255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FAILED = 10256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_SUCCESS = 10257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FAILED = 10258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_PARTIALLY_FAILED = 10259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_SUCCESS = 10260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FAILED = 10261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_PARTIALLY_FAILED = 10262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_SUCCESS = 10263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_VIEWABLE_AREA = 10264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_PARTIAL_FAILURE = 10265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_SUCCESS = 10266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FAILURE = 10267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARHCIVE_RESTORE_PARTIAL_FAILURE = 10268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIDGET_POLYGON = 10269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_ZONENAME = 10270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPRESENTATION = 10271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_LONG = 10272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENCODE_FIELD_USING_UTF8 = 10273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENCODE_FIELD_USING_UFT8_AND_SPECIFIED_MASK = 10274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MINIMUM_UTF8_FIELD_MASK_LENGTH = 10275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SPECIFY_VALID_MASK = 10276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAXIMUM_UTF8_FIELD_LENGTH = 10277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UTF8 = 10278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKEDBCD = 10279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_MODE = 10280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKING_PLAYBACK_MODE = 10281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_PLAYBACK = 10282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GO_LIVE = 10283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GO_PLAYBACK = 10284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_PORT_SET = 10285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_GPS_PORT_INFO = 10286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_GPS_NOT_FOUND = 10287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_PORT_NOT_FOUND = 10288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_INSTRUCTIONS = 10289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_AUTODETECT_NAVBOX = 10290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XDNR = 10291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_HEADER = 10292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_CONTENT1 = 10293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_CONTENT2 = 10294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_CHECKED = 10301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_TITLE_SHARPPORTAL_ERROR = 10302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SHARPPORTAL_ERROR = 10303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_X = 10304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_Y = 10305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAMETER = 10306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOCAL_LENGTH = 10307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GET_CAMERA_PARAMETERS = 10308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWS = 10309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIAGNOSTIC_DISKDB_FULL = 10310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_AS_FAVORITE = 10311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_AVAILABLE = 10312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROJECTION = 10313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROTATION = 10314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALL_ANGLE = 10315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SELECT_MANUFACTURERS = 10316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_UNIT_MANUALLY = 10317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_FAVORITES = 10318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PATTERN = 10319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_PATTERN = 10320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_ACCESS_DENIED_USER_NOT_FOUND = 10321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_BADREQUEST_ERROR = 10322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_DOWNLOADING_FILES = 10323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_UPLOADING_FILES = 10324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEAR_COMPLETED = 10325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GATHER_DIAGNOSTIC_INFO = 10326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_GENETEC_SERVERS = 10327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_GENETEC_SERVERS = 10328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPLOAD_RESULT_TO_CLOUD = 10329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_DROP_FOLDER = 10330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIAGNOSTIC_PROGRESS = 10331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR = 10332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DOOR_SIDE_NAME_EMPTY = 10333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DUPLICATE_DOOR_SIDE_NAME = 10334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_ACCESS = 10335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DIRECTORY_FAILOVER_SERVER_REBOOT = 10336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_CONNECTION_MODE = 10337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST = 10338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST = 10339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKIN_EDIT = 10340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_STATISTICS_REPORT = 10341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_DISK_GROUP = 10342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATISTICS_REPORT_FORMAT = 10343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_NEXT = 10344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AGENT_SUCCESSFULLY_STARTED_ON_X = 10345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVICE_LOST_X_Y = 10346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AGENT_FAILED_TO_START_BY_X = 10347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILED_TO_INITIALIZE_ON_AGENT_X = 10348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STARTED_SUCCESSFULLY_ON_X = 10349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STARTING_ON_X = 10350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STOPPING_ON_X = 10351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STOPPED_ON_X = 10352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTION_ESTABLISHED_WITH_XYZ = 10353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_XY_DATABASE_USED_BY_ANOTHER_ARCHIVER = 10354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTION_LOST_WITH_XYZ = 10355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATE_SERVERS_TO_SAME_VERSION = 10356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_ON_AGENT_X = 10357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_LISTENING_ON_XY = 10358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_FAILED_TO_LISTEN_ON_XY = 10359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_X_COULD_NOT_OPEN_ON_YZ = 10360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHECK_PORT_NOT_IN_USE = 10361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_FAILED_TO_START_ON_X = 10362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_LOST_ON_X = 10363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_SUCCESSFUL_ON_X = 10364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MACHINEKEYS_FOLDER_PERMISSIONS = 10365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DISPLAYING_VIDEO = 10366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_BUFFERING_COMLPLETED = 10367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATE_ALARMS = 10368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGES_FORCE_RESYNC = 10369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTING_SPY_MODE = 10370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTING_LOW_BANDWIDTH = 10371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_NOT_SUPPORTED = 10372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DISKGROUP_VALIDATION_CONFLICTS_TITLE = 10373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DISKGROUP_VALIDATION_CONFLICTS_ITEM = 10374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_TIME_DETAILS = 10375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_NOT_RECORDING_LIMIT_EXCEEDED = 10376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_LIMIT_EXCEEDED = 10377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_DETAILS = 10378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ARCHIVING_QUEUE_FULL = 10379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ARCHIVING_QUEUE_FULL_DETAILS = 10380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_ASF_PROFILE = 10381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_UNDERSTAND_STATEMENT = 10382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIMARY = 10383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDBY = 10384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_SPECIFY_VALID_VIDEO = 10385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_SPECIFY_NETWORKTRANSPORT = 10386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNSUPPORTED_FORMAT = 10387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTENOUGHBANDWIDTH = 10388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CARDS = 10389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CAMERAS = 10390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIDEOUNIT_COLLECT_POSTMORTEM = 10391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_REGISTERED = 10392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING_FOR_DIRECTORY_STATUS = 10393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FILE_SIZE = 10394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FILE_LENGTH = 10395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_ARCHIVER_INFO = 10396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_CUSTOM_FILTER = 10397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FILE_ROTATION = 10398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_START_ALL = 10399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_STOP_ALL = 10400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NETWORK_TRACE = 10401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_STARTED = 10402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_STOPPED = 10403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_IN_PROGRESS = 10404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_ERROR = 10405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_ALL_TRAFFIC = 10406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_TCP_HTTP = 10407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROLE_OFFLINE = 10408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRESET = 10409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FILTER = 10410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H265 = 10411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MXPEG = 10412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_UNAVAILABLE_SERVERS = 10413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_ALL_SERVERS_AVAILABLE = 10414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_COULD_NOT_SEND_FEEDBACK = 10415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNSUPPORTED_ENCODING = 10416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_VAULT = 10417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_ENCRYPTED_PASSWORD = 10418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED_PASSWORD_COPIED = 10419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_SPECIFIC_SETTINGS = 10420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADVANCED_DIAGNOSTIC = 10421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_INCIDENTS = 10422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_AUDITTRAIL = 10423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_ALARMS = 10424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DIAGNOSTIC = 10425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_NO_DATA_FROM_UNIT = 10426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SEE_VIDEO_TROUBLESHOOTING_HELP = 10427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_INITIALIZING = 10428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_MEDIA_ROUTER = 10429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_ARCHIVER = 10430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_LIVE_STREAM = 10431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_ANALYZING_STREAM = 10432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_WAITING_FOR_DOWNLOAD = 10433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_PLAYBACK_STREAM = 10434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_RESUMING_PLAYBACK_STREAM = 10435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_VIDEO_UNIT = 10436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_VIDEO_UNIT_STREAM = 10437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NO_DATA_AVAILABLE = 10438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NO_DATA_AVAILABLE_FROM_UNIT = 10439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_SEARCHING_FOR_ARCHIVES = 10440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_READING_ARCHIVES = 10441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_BUFFERING = 10442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_SERVER_RESPONSE_TIMEOUT = 10443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NOT_ENOUGH_BANDWIDTH = 10444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUTED = 10445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ZONE_TROUBLE = 10446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PRIVATE_ADDRESS = 10447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RECIPIENT_INVALID_EMAIL = 10448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESS_STARTED = 10449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_CYRILLIC = 10450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VBR = 10451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_ENROLLMENT = 10452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_NOT_LISTED = 10453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETTINGS_AND_MANUFACTURERS = 10454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE = 10455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEAR_ADDED_UNITS = 10456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCOVERING_UNITS = 10457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUFACTURERS_WE_ARE_LOOKING_FOR = 10458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUFACTURERS_NOT_LISTED = 10459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_MANUFACTURERS = 10460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSIVE_SEARCH_DESCRIPTION = 10461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_RUN_EXTENSIVE_SEARCH = 10462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RUN_EXTENSIVE_SEARCH = 10463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVER_UNITS_AUTOMATICALLY = 10464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_MANUFACTURER = 10465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_MANUFACTURER = 10466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MANUFACTURERS_CONFIGURED = 10467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IGNORED_UNITS = 10468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORED_UNITS = 10469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_IGNORED_UNIT = 10470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_IGNORED_UNITS = 10471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_ALL_IGNORED_UNITS = 10472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AS_DEFAULT_AUTHENTIFICATION_FOR_ALL_MANUFACTURERS = 10473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_UNITS = 10474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_ALL = 10475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNITS_FOUND = 10476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_MANUFACTURER = 10477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ACTIVEDIRECTORY = 10478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ACTIVITYTRAIL = 10479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ALARMS = 10480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUDIO = 10481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUDITTRAIL = 10482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUTOVU = 10483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ENTITYMONITORING = 10484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_HEALTHMONITORING = 10485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_HOTACTIONS = 10486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_INCIDENTS = 10487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_INTRUSIONDETECTION = 10488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_MACROS = 10489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_NETWORKING = 10490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_OMNICAST = 10491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_PARTITIONS = 10492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_PLUGINS = 10493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_REMOTESD = 10494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_SAVEDTASKS = 10495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_SYNERGIS = 10496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_CARDREQUEST = 10497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_BADGETEMPLATE = 10498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_GLOBALCARDHOLDERSYNCHRONIZERS = 10499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_THREATLEVEL = 10500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_TIMEZONE = 10501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ZONEMANAGER = 10502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYMONITORING = 10503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING = 10504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORKING = 10505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVITATION_TO_CREATE_OPERATOR = 10506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INITIAL_CONFIGURATION_WIZARD = 10507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_PASSWORD = 10508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURE_ADMIN_ACCOUNT = 10509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_COMPLETED = 10510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_FEATURES = 10511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_DO_YOU_NEED = 10512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRO = 10513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WELCOME_TO_SECURITY_CENTER = 10514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_AN_OPERATOR = 10515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOW_PASSWORD = 10516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLOSE_WIZARD = 10517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_WIZARD_CONFIRMATION = 10518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_NEVER_SHOW_WIZARD = 10519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERNAME_COPIE = 10520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_INTRODUCTION = 10521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SET_ADMIN_PASSWORD = 10522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_COPIE = 10523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_PASSWORD_COPIE = 10524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPLAIN_DEFAULT_FEATURE_VISIBILITY = 10525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_FEATURE_VISIBILITY = 10526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REFER_TO_ABOUT_SECTION = 10527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LAUNCH_DISCOVERY_TOOL = 10528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIG_TOOL_RESTART = 10529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REFER_TO_USERS_SECTION = 10530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_CONFIGTOOL_FEATURES = 10531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_RESTART = 10532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE = 10533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEATURE_SAVED_LOCAL = 10534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AUTO_FOCUS = 10535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUXILIARY_OUTPUT = 10536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_SELF_RETURN = 10537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RTSPROLE_NAME = 10538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ROLE_RTSPROLE_DESCRIPTION = 10539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEAR_CACHE = 10541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CACHE_CLEARED = 10542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEW = 10543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIEW_ON_MAP = 10544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACEMODULENAME = 10545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_DISPLAY_FAVORITES_RECENTS_HOMEPAGE = 10546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TILE_PATTERN_EDITOR = 10547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVERT = 10548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REVERT_TILE_PATTERN_TO_DEFAULT = 10549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATIC_IP = 10550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TILE_PLUGIN_INVALID_PROCESSOR_ARCHITECTURE = 10551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOSTNAME_IP = 10552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_SYNCHRONIZATION_NEEDED = 10554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_APPLICATION = 10555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DURATION_LONGER_THAN_RECURRENCE = 10556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SHORTCUT_SCRATCH_PAD = 10557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_DATABASE_BEFORE_UNITSWAP = 10558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONTINUE_CONFIRMATION = 10559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM = 10560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_OPEN_PDF = 10561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_ACCELERATION = 10562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_DECODING_NOT_SUPPORTED = 10563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRIVER_VERSION = 10564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_USED = 10565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USED = 10566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USED_FORMAT = 10567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_REGIONS_NEEDS_TO_BE_SELECTED = 10568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_MULTIREGION = 10569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_MULTIREGION_DESCRIPTION = 10570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_MULTIREGION = 10571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_MULTIREGION_DESCRIPTION = 10572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MANAGE_INCIDENT_CATEGORIES = 10573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORTED_TO_LOCATION = 10574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_SUCCESSFUL = 10575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_HAS_FAILED = 10576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_OPEN_FILE = 10577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ANALOGMONITORS = 10578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_VISUALTRACKING = 10579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_VISITORS = 10580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_CPU = 10581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU_NAME = 10582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY = 10583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU = 10584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ENGINE_LOAD = 10585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_CONTROLLER_LOAD = 10586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_STARTED = 10587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FINISHED = 10588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FINISHED_ERROR = 10589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_STARTED = 10590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FINISHED = 10591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FINISHED_ERROR = 10592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_ERROR = 10593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_ERROR = 10594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_STARTED = 10595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FINISHED = 10596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FINISHED_ERROR = 10597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_ERROR = 10598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_STARTED = 10599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FINISHED = 10600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FINISHED_ERROR = 10601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_ERROR = 10602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVER_TRICKLING_MANUAL_START = 10603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVER_TRICKLING_MANUAL_STOP = 10604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_UNIT_TRICKLING_MANUAL_START = 10605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_UNIT_TRICKLING_MANUAL_STOP = 10606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_BACKUP_MANUAL_START = 10607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_BACKUP_MANUAL_STOP = 10608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_RESTORE_MANUAL_START = 10609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_RESTORE_MANUAL_STOP = 10610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_REPORT_SELECTOR = 10614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORT_SELECTOR = 10615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTERS = 10616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_RTSP_STREAMS = 10617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_INFORMATION = 10618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CUSTOM_DATA_TYPE = 10619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_DATA_TYPE_INFORMATION = 10620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_SUCCESS = 10621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_FAILED = 10622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_PARTIALLY_FAILED = 10623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_SUCCESS = 10624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_FAILED = 10625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_PARTIALLY_FAILED = 10626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NOT_ENOUGH_SPACE = 10627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NO_PATH_AVAILABLE = 10628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE = 10629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NO_PATH_AVAILABLE = 10630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CARD = 10631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATING_SYSTEM = 10632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESOURCES_METER = 10633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_PASSWORD = 10634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKAGE_VIDEO_FILES = 10635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_TO = 10636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_PORTABLEVIDEOPLAYER_COMPLETE = 10639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_FOUND = 10640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_IN_USE = 10641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_IN_USE_OTHER_PROCESS = 10642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_ENCRYPTED_PASSWORD = 10643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_PWDFILES = 10644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_USERACCESS = 10645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVER_TRICKLING_MANUAL_START = 10646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVER_TRICKLING_MANUAL_STOP = 10647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_BACKUP_MANUAL_START = 10648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_BACKUP_MANUAL_STOP = 10649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_RESTORE_MANUAL_START = 10650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_RESTORE_MANUAL_STOP = 10651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_START_ALL = 10652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_STOP_ALL = 10653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_START_LIST = 10654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_STOP_LIST = 10655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MERGE = 10657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_EXIST_AT_LOCATION = 10658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATION_BEING_MOVED = 10659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_DESTINATION = 10660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_NOT_MOVED = 10661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_BOTH = 10662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_MOVED_RENAMED = 10663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKAGE_WITH_VIDEO_PLAYER = 10664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_MOVE_FILE = 10665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_SELECTED_ITEM = 10666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_FOLDERALREADYEXIST = 10667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_UNUSED_PARTITION = 10668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_CREATEAGENTFAILEDNOTRUNNING_FORMAT = 10669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_CACHE_AT_LOGOFF = 10670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_MANUFACTURER = 10671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_AUTHENTICATED_MANUFACTURER = 10672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_TAMPERED_MANUFACTURER = 10673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_ACCESS_RIGHTS = 10677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_UPGRADE_FILE = 10678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_TO_UPGRADE = 10679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_DATABASE_UPGRADE = 10680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCESS_RIGHTS_TOOL_WHATS_NEW = 10681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEFAULT_PARTITIONS = 10682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PUBLIC_PARTITION_DESCRIPTION = 10684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTRICTED_PARTITION_DESCRIPTION = 10685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_PARTITION_LC = 10686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_PARTITION_LC = 10687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACCESS_GRANTED_AREAS_PARTITIONS = 10689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS_TITLE_EXAMPLE = 10690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_MODEL_UPGRADE_MODE = 10691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_MODEL_UPGRADE_MODE_DESCRIPTION = 10692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHOOSE_UPGRADE_MODE = 10693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEAST_RESTRICTIVE_MODE = 10694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEAST_RESTRICTIVE_DESCRIPTION1 = 10695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEAST_RESTRICTIVE_DESCRIPTION2 = 10696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOST_RESTRICTIVE_MODE = 10697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOST_RESTRICTIVE_DESCRIPTION1 = 10698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOST_RESTRICTIVE_DESCRIPTION2 = 10699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_MODE_INFO = 10700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATING_NEW_SECURITY_SYSTEM = 10701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOADING_DATA_FROM_SPECIFIED_FILE = 10702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READING_SPECIFIED_DATABASE = 10703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATING_SECURITY_SYSTEM_USING_MODE = 10704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BUILDING_AUTOMATIC_UPGRADE_REPORT = 10705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_UPGRADED_SYSTEM = 10706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BROWSE_UPGRADED_SYSTEM = 10707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_ACCESS_RIGHTS = 10708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ACCESS_RIGHTS = 10709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_IMPACTED_ENTITIES = 10710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_NEW_ACCESS_RIGHTS_TREE = 10711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATING_UPGRADE_DATA = 10712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_DATA_GENERATED = 10713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR = 10714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FILE_LOCATION = 10715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_AGREEMENT = 10716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_LOCATION = 10717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_SELECTED_ITEMS = 10718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLE_SELECTED_ITEMS = 10719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_MANAGER_MAXIMUM_RESULTS = 10720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_MANAGER_EXPORT_LIMITATION = 10721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_LIMITATION = 10722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPACTED_USERS = 10723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_REPORT_LOCATION = 10724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARTITIONS_UPGRADE_TOOL = 10725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUE_INSTALLATION = 10726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACK_LOST_CHANGES = 10727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CHANGES = 10728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_UPGRADE = 10729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_LOGICAL_VIEW = 10733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASEWAIT_EXPORTINPROGRESS = 10734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_AVAILABILITY_IN_SYSTEM_TASK = 10735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_WARNING_NOTSUPPORTED = 10736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERWRITE_EXISTING_FILE = 10737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPEND_A_DATE = 10738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_FILE_FORMAT = 10739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_INFORMATION_NOT_AVAILABLE = 10740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_ACCESS_MANAGER_ROLES = 10741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_ACCESS_MANAGER_ROLE_OFFLINE = 10742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUERY_TO_ACCESS_MANAGER_TIMED_OUT = 10743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_USAGE = 10744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_FREE_OF_NUMBER_AVAILABLE = 10745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_DISK_SPACE = 10746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMPACTED_ENTITIES_DESCRIPTION = 10747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FILE_DESCRIPTION = 10748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISDBCONNECTIONTOOL_DESCRIPTION = 10753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVERT_TO_DEFAULT = 10754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWPATTERN = 10755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLED = 10756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ABSENTSUPERVISOR = 10757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ABSENTSUPERVISOR = 10758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SHUNTING = 10759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_INTRUSION_ZONE_ARM_MASTER = 10760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_INTRUSION_ZONE_ARM_PERIMETER = 10761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_ALARMEVENT = 10762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MBPS = 10763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOAD_WEB_SDK_ROLE_TYPE = 10764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_LOAD_ROLE_CONFIG = 10765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_SNOOZED = 10766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_FORWARDED = 10767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMTP_TEST_EMAIL_TITLE = 10768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMTP_TEST_EMAIL_BODY_SERVER_X_AT_TIME_Y = 10769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL = 10770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_EMAIL_ADDRESS = 10771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_RESULT = 10772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_CSV_SUPPORTED = 10773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRED_AUTHENTIFICATION = 10774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLY_PARTITION_TO_CREDENTIALS = 10775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLY_PARTITION_TO_CARDHOLDERS = 10776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCELERATION = 10777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TRANSFER_GROUP = 10778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RESTORE = 10779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LIMIT = 10780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZONEARM_MINUTESDELAY = 10781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZONEARM_SECONDSDELAY = 10782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_PARTIALLY_SUCCESSFUL = 10783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_PARTIAL_SUCCESS = 10784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_ADDRESS = 10785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PUBLIC_ADDRESS = 10786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_PORT = 10787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PUBLIC_PORT = 10788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_ADDRESSES = 10789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_ACKNOWLEDGED = 10790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_ACKNOWLEDGED = 10791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVE = 10792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_KBPS = 10793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_MBPS = 10794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATION = 10795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIONS = 10796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE = 10797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_DEVICES = 10798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PING_UNITS = 10799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VISUAL_TRACKING_ZONE_WILL_NOT_MOVE = 10800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILES_DELETING = 10801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_VALIDATING_PREREQUISITES = 10802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ITEMS = 10803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_ALREADY_EXIST = 10804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_USE_SPECIFIC_DOMAIN_CONTROLLER = 10805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_FORCE_ACKNOWLEDGED = 10806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACTORY_RESET = 10807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ERROR_FILE_IN_USE = 10808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PROMOTIONAL_CAMERAS = 10809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORT = 10810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SERVER_NOTRUNNING = 10811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_PATH_AIVAILABLE = 10812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_CONNECTION_LOST = 10813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPON_RECONNECTION = 10815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAX_DURATION_EXCEEDED = 10816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANTIPASSBACK_VIOLATION_FORGIVEN = 10817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GATHERING_DIAGNOSTIC_INFORMATION = 10818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ADAPTERNOTFOUND = 10819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ADAPTERNOTUP = 10820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHUNTED = 10821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MULTIPLE_VIDEOS = 10822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_VIDEO_FILENAME = 10823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_INSTALLED = 10824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_ONLINE = 10825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_UPDATES = 10826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_INSERT_CARDHOLDERGROUP = 10827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRIVILEGE_EXCEPTION_AREA = 10828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRIVILEGE_EXCEPTION_PARTITION = 10829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_EXTRA_LARGE_ICONS = 10830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_LARGE_ICONS = 10831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_MEDIUM_ICONS = 10832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_SMALL_ICONS = 10833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_DETAILS = 10834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARKED = 10835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FPSWITHUNIT = 10836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EMAIL_SNAPSHOT = 10837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EMAIL_SNAPSHOT_DETAILS = 10838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SCHEDULED_UNLOCK_IGNORED_ABSENT_SUPERVISOR = 10839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGED_REQUIRE_REBOOT_DIRECTORY = 10840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGED_LISTENING_PORT_REBOOT = 10841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_FROM_EVENT_MONITORING = 10842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_NOT_AVAILABLE_UNLESS_SWITCHING_TO_MAP_FRAGMENT1_ENDS_WITH_WHITESPACE = 10843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_NOT_AVAILABLE_UNLESS_SWITCHING_TO_MAP_FRAGMENT2 = 10844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EXPORTWITHWARNING = 10845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYER_STATISTICS = 10846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION = 10847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ANCESTORS_HAVE_BEEN_UPDATED = 10848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_NOT_CONFIGURED_AM_SERVER = 10849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_DOUBLE_PANO_FISHEYE_CEILING = 10850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_DOUBLE_PANO_FISHEYE_CEILING = 10851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_PANO_FISHEYE_WALL = 10852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_PANO_FISHEYE_WALL = 10853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_FISHEYE_QUAD_PTZ = 10854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ADDRESS_LOCATION_RELATIVE_TO_PATROLLER = 10855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_FILE = 10856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_PATTERNS_FILE = 10857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SELECTED_REPORT = 10858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_ERROR_WRITING_TO_DISK = 10859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_ERROR_WRITING_TO_DB = 10860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_UNKNOWN_ARCHIVE_FILE_ERROR = 10861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_ERROR = 10862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVINGENTITY_FROM_VISIBLEAREAS_WARNING = 10863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_PARTITIONS = 10864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_PARTITIONS = 10865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARTITION_UPGRADE_FILE_NEEDED = 10866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_FILE_IN_USE = 10867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTORENAME_FILE = 10868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_UNASSIGNED_TO_VISITOR = 10869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_UNASSIGNED_TO_CARDHOLDER = 10870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANCESTOR_UNAVAILABLE = 10871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_START_TIME_INVALID = 10872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_START_TIME_INVALID_DETAILS = 10873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_END_TIME_INVALID = 10874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_END_TIME_INVALID_DETAILS = 10875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_INVALID = 10876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_INVALID_DETAILS = 10877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIRECTION_ALARM = 10878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HITRULE = 10879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_FILE = 10880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_OCCUPANCY_ALL_LOTS = 10881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DRAG_VIDEO_FILES_HERE = 10882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_MOVED = 10883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USERNAME_PASSWORD = 10884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_MOBILESERVERSLAVE = 10885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTELY = 10886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATION_VALIDATION_FAILED_FORMAT = 10887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CREDENTIAL_CONFLICT = 10888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_TILE_PATTERNS = 10889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_SAS = 10890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_RECEIVING_RATE = 10891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_WRITING_RATE = 10892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC = 10893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVE_GENERATOR = 10894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ARCHIVE_GENERATOR = 10895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_CHANGED = 10896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_MOVED = 10897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_INVENTORYINDEX = 10898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE_ONE_SECOND = 10899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_QUERY_TOO_COMPLEX = 10900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_LOCATEME = 10901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_EMPTY_INVENTORY = 10902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REBOOT_UNIT = 10903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_READ_REPORT_EVIDENCE = 10904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_ASSOCIATED_MICROPHONE = 10905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_ASSOCIATED_METADATA = 10906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_INHERITED = 10907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_GENERATED_HIT = 10908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_VISITOR_ESCORT_GROUP = 10909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_CSV = 10910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_INDIVIDUAL_FILE_NAMES = 10911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_EXPORT_NOTAVAILABLE = 10912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_VAULT_FOLDER = 10913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_UNLIMITEDBITRATE = 10914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_ENTER_FULL_SCREEN = 10915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_SNAPSHOT_TO_CLIPBOARD = 10916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_TO_OPEN_VAULT = 10917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DOTNET_FRAMEWORK = 10918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DOTNET_FRAMEWORK_NOTICE = 10919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_FILTERS = 10920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYFIELD_MAX_FORMAT = 10921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_FROM_DATE_INVALID = 10922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FILE_EXISTS = 10923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OVERRIDE_EXISTING_FILE = 10924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUE_UPGRADE = 10925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_UPGRADE = 10926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_DATABASE = 10927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISPLAY_OVERLAYS = 10928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_CREATE_FOLDER = 10929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_IN_USE = 10930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_COMPLETED_WITH_PARTITION_COUNT_CONFLICT = 10931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_RESYNCHRONIZE_PARTITION_GCSROLE = 10932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RETRIEVESNAPSHOT = 10933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAPTURE_DONE_YET = 10934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TRANSFER_GROUPS = 10935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_TRANSFER_GROUPS = 10937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_SCHEDULES_NOTSUPPORTED_ERROR = 10938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTION_CHANGING_VAULT_FOLDER_TITLE = 10939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTION_CHANGING_VAULT_FOLDER = 10940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_ACCESS_ALL_ENTITIES = 10941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONMISMATCH = 10942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_PRIVILEGE_TO_ENABLE_SETTING = 10944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_AWAITING_SYNCHRONIZED_TIME = 10945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_AWAITING_SYNCHRONIZED_TIME = 10946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ON = 10947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWILIGHT_SCHEDULES_USAGE = 10948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_OLD_BACKUPS_ON_DISK_FULL = 10949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_UPGRADE_REQUIRED_MEDIAROUTER = 10951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_UPGRADE_REQUIRED_MEDIAROUTER_HELP = 10952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_ACCESS_DENIED_SUPERVISOR_ABSENT = 10953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_MODE = 10954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEQUALITY_WITHUNIT = 10955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED_FOR_GROUP = 10956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED_FOR_GROUP = 10957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS_FOR_GROUP = 10958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED_FOR_ONE_UNIT = 10959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED_FOR_ONE_UNIT = 10960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS_FOR_ONE_UNIT = 10961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_SUCCESS_FOR_ONE_CAMERA = 10962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_FAILED_FOR_ONE_CAMERA = 10963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_PARTIALLY_FAILED_FOR_ONE_CAMERA = 10964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_SUCCESS_FOR_ONE_CAMERA = 10965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_FAILED_FOR_ONE_CAMERA = 10966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_PARTIALLY_FAILED_FOR_ONE_CAMERA = 10967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_FAME_INTERVAL_WITH_MESURE = 10968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_HEALTHSTATS_INCOMPLETE_RESULTS = 10969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MISSING_THUMBNAILS = 10970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_HEALTHSTATS_INCOMPLETE_RESULTS_DETAILS = 10971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESET_ALREADY_EXISTS = 10972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESET_NOT_UNIQUE = 10973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETECTED_HARDWARE = 10974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_ACCELERATION_NOT_SUPPORTED = 10975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_G64X_FILE_CORRUPTED = 10976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CUSTOM_CAMERAS = 10977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_OFFLINE_ARCHIVER = 10978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_OFFLINE_ARCHIVER = 10979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_OFFLINE_CAMERA = 10980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_OFFLINE_CAMERA = 10981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_UNREACHABLE = 10982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_UNREACHABLE = 10983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_NOT_FOUND = 10984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_NOT_FOUND = 10985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SLOW_VIDEO_PLAYBACK = 10986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_DISK_LOAD = 10987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_DIRECTORY_0_IS_NOT_CONNECTED = 10988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAIN_DB_IS_UNREACHABLE = 10990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_CAMERA = 10991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_DATA = 10993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_ARCHIVE_FOLDER_PATH_TOO_LONG = 10994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_STILL_FRAME_OMNICAST_CAMERAS = 10995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_PAUSE_ALL = 10996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARD_ALL = 10997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REWIND_ALL = 10998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_FRAME_ALL = 10999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_FRAME_ALL = 11000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_FORWARD_ALL = 11001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_BACKWARD_ALL = 11002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ESCORT_REQUIRED = 11003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DB_LOCATION_BACKUP = 11004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GENERATE = 11005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_AGO_LC = 11007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_TRANSFER_GROUP_NAME = 11008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARTITION_ADMINISTRATOR_DESCRIPTION = 11009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_MODE = 11010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_MODE_INFO = 11011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_THERMAL = 11012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_BLACK_HOT = 11013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IDS_SPCPTZDLG_AXYS_WHITE_HOT = 11014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_AUTOFOCUS = 11015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LPR_INSUFFICIENT_DISK_SPACE = 11016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_MANAGER_INVALID_FOLDER = 11017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TYPE_PANORAMIC = 11018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL_RS232 = 11019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL_RS422485 = 11020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG_OPERATION_WARNING = 11021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRATION = 11022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_ABOUT_TO_EXPIRED = 11023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRED = 11024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_ABOUT_TO_EXPIRED_DETAILS = 11025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRED_DETAILS = 11026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRATION = 11027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_ABOUT_TO_EXPIRED = 11028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRED = 11029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_ABOUT_TO_EXPIRED_DETAILS = 11030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRED_DETAILS = 11031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_LICENSE_PAGE = 11032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISMISS = 11033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_NOTIFICATION_SMA_EXPIRATION = 11034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_NOTIFICATION_LICENSE_EXPIRATION = 11035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOT_SHOW_AGAIN = 11036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SUCCESSFULLY_ADDED_TO_ARCHIVER = 11037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCESS = 11038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_AND_TRY_AGAIN = 11039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PCAP_STREAMING_ALREADY_OPEN = 11040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_DIRECTORY = 11041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DOES_NOT_EXIST = 11042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ACCESS_DIRECTORY_FORMAT = 11043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_IN_FILES_ALREADY_IN_DB = 11044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_IN_FILE_ALREADY_IN_DB = 11045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_CHECKING_FILE_IN_DB = 11046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_ADDING_FILE_TO_DB = 11047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_MEDIA_PLAYER = 11048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_AND_COPY_TO_CLIPBOARD = 11049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONVERSION_NOT_FINISH_CANCEL_OR_CONTINUE = 11050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONVERSION_IN_PROGRESS = 11051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILES_WILL_BE_DELETED_FROM_DISK = 11052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_TROUBLE_BUILDING_SDP_CONTINUE_OR_ABORT_FORMAT = 11053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SEARCH_UNTIL_NUMBER_OF_FRAMES_FORMAT = 11054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OPENING_FILE = 11055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_THROW_IN_FORMAT = 11056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_OPEN_ENCRYPTED_FILES = 11057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISPLAY_FIRST_NUMBER_OF_STREAM_PACKET_FORMAT = 11058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RETENTION_PERIOD_INFO = 11059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCLUDED_LOW_PACKETS_IN_CONVERSATION_FORMAT = 11060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLE_BUILDING_SDP = 11061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_LOST = 11062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_LOST = 11063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_HERE_FOR_DETAILS = 11064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_AND_EXPORT = 11065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_AND_EXPORT = 11066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_STARTED = 11067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_LOADING_FILES_FROM_DIRECTORIES = 11068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_ADDING_FILES_TO_DB = 11069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_LOADING_FILES_FROM_DIRECTORY = 11070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LOGIN_ACCESS_CONTROLS_UNITS = 11071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LOGIN_ACCESS_CONTROLS_UNITS_DESCRIPTION = 11072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_SECURITY = 11073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_AUTHENTIFICATION_USERNAME = 11074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOW_ADD_CARDHOLDERS = 11075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOW_ADD_CARDHOLDERS_DESCRIPTION = 11076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_MANAGEMENT_TASK = 11077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CARDHOLDER_MANAGEMENT_TASK_DESCRIPTION = 11078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAUNCH_IMPORT_TOOL = 11079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_LAUNCH_IMPORT_TOOL_DESCRIPTION = 11080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS = 11081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS_DESCRIPTION = 11082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS_SECOND_DESCRIPTION = 11083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_TYPE = 11084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORT_COPIE = 11085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REX_EVENT_HOLDOFF_AFTERGRANT = 11086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REX_EVENT_HOLDOFF_AFTERCLOSED = 11087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLPORT = 11088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LEGACYLOGONDISABLED = 11089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGONNEGOTIATE = 11090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_STATUS_EVENTS = 11091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSIGNALEVENT_EVENTS = 11092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOCKDETECTION_EVENTS = 11093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGEERROR_EVENTS = 11094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_4X3 = 11095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_5X4 = 11096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_6X5 = 11097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_4X3 = 11098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_5X4 = 11099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_6X5 = 11100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_8X6 = 11101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_9X7 = 11102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_BPS = 11103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_KBPS = 11104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_MBPS = 11105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_GBPS = 11106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_ONE_PERIMETER_DOOR_WARNING = 11107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_DOOR_NO_SENSOR_WARNING = 11108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_AVAILABLE_OF_NUMBER_FREE = 11109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_RETRY = 11110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_RETRY = 11111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_RETRY = 11112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKED_PATROLLERS = 11113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_IS_SHUNTED = 11114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_IS_NOT_OURS = 11115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IODIAGNOSTICS = 11116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHER_ON = 11117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHER_OFF = 11118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHINGPROCEDURE_ON = 11119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHINGPROCEDURE_OFF = 11120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_ON = 11121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_OFF = 11122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_AUTO = 11123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_OSM_ON = 11124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MODE_START = 11125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ACCESS_FILES_OR_DIRECTORIES_FORMAT = 11126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_10X8 = 11127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_RECV_SEQUENCE_LIST_FAILURE = 11128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_RTSP_SESSION_ERROR = 11129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_UNHANDLED_EXCEPTION = 11130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_NO_SESSION_DESCRIPTOR_RECV = 11131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_NO_FOLDER_WRITE_ACCESS = 11132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FOLDER_PATH_TOO_LONG = 11133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FILE_ALLOCATION_ERROR = 11134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FILE_CREATION_ERROR = 11135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVE_TRANSFER_UNHANDLED_EXCEPTION = 11136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVE_TRANSFER_INVALID_STATE_TRANSITION = 11137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDGE_TRANSFER = 11138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE_DETAILED_MESSAGE = 11139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SPACE = 11140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_LEFT = 11141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_RIGHT = 11142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_UP = 11143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DOWN = 11144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_ADD = 11145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SUBSTRACT = 11146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DIVIDE = 11147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_MULTIPLY = 11148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_HOME = 11149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_RETURN = 11150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_PAGEUP = 11151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_PAGEDOWN = 11152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_END = 11153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DELETE = 11154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_INSERT = 11155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SCROLL = 11156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRANSFER_NOT_ENOUGH_SPACE_DETAILED_MESSAGE = 11157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_ABS_TILT = 11158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_ABS_PAN = 11159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABS_TILT_OFFSET = 11160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABS_PAN_OFFSET = 11161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATAEVENTSTREAM_CONNECTION_TYPE = 11162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CARDHOLDR_IS_AN_ESCORT_CANNOT_BE_DELETED = 11163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECONNECTION_DELAY = 11164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AXIS_EVNTSTRMCONNTYPE_FORCED_RTSPTCP = 11165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPECIFY_DIRECTION_RATION_OFFSETS = 11166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NEW = 11167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_VALUE = 11168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_NUMBER = 11169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_LEAST = 11170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_NO_MORE_THAN = 11171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IP_ADDRESS = 11172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IPV4_ADDRESS = 11173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IPADDRESS_PORT = 11174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SUBMIT = 11175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT_HARDWARE_PROBLEMS = 11176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_LEAST_X_CHARACTERS = 11177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_MOST_X_CHARACTERS = 11178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IS_CONDITIONAL = 11179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AND_LC = 11180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_A_CONDITION = 11181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_DEVICE_CONFIGURED = 11182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTEXT = 11183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURE_UNIT_WEBPAGE = 11184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORTCUTS_INVALID_KEY_FORMAT = 11185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_HARDWARE_INFO = 11186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VECTOR = 11187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOGICAL_VIEW = 11188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURRED_PROCESSING_REQUEST = 11189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_WITHOUT_SOURCE = 11190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_APPLICATIONPRIVILEGES_GROUP = 11191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CATEGORY = 11192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_CATEGORY = 11193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_GENERALPRIVILEGES_GROUP = 11194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_CHANGE_OWN_PASSWORD = 11195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_CREATE_INCIDENTS = 11196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_INCIDENTS = 11197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PRINT_AND_EXPORT_REPORTS = 11198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_WEB_PAGES = 11199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_LIVE_COVERT_HITS = 11200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REMOVE_ITEMS_FROM_REPORT = 11201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMINISTRATIONPRIVILEGES_GROUP = 11202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGICALENTITYTASKS_GROUP = 11203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_AREAS = 11204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_AREAS = 11205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_AREAS = 11206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_MAPS = 11207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MAPS = 11208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_MAPS = 11209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PHYSICAL_ENTITY_TASKS_GROUP = 11210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_UNITS = 11211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_UNITS = 11212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_FIRMWARE_UPGRADE = 11213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_UNITS = 11214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_UNITS = 11215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PATROLLERS = 11216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PATROLLERS = 11217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_PATROLLERS = 11218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LPR_UNIT = 11219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_LPR_UNITS = 11220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_LPR_UNIT = 11221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_LPR_UNITS = 11222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CAMERAS = 11223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CAMERAS = 11224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ANALOG_MONITORS = 11225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ANALOGMONITORS = 11226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_OUTPUT_BEHAVIORS = 11227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_OUTPUT_BEHAVIORS = 11228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_OUTPUT_BEHAVIORS = 11229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_DOORS = 11230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DOORS = 11231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_DOORS = 11232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ELEVATORS = 11233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ELEVATORS = 11234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ELEVATORS = 11235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ZONES = 11236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_INTRUSION_AREAS = 11237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_INTRUSION_AREAS = 11238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_INTRUSION_AREAS = 11239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_INTRUSION_UNITS = 11240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_INTRUSION_UNITS = 11241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_INTRUSION_UNITS = 11242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ZONES = 11243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ZONES = 11244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CASH_REGISTERS = 11245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CASH_REGISTERS = 11246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ASSETS = 11247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ASSETS = 11248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ASSETS = 11249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SCHEDULEMANAGEMENTTASKS_GROUP = 11250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SCHEDULES = 11251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_SCHEDULES = 11252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_SCHEDULES = 11253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SCHEDULED_TASKS = 11254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_SCHEDULED_TASKS = 11255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_SCHEDULED_TASKS = 11256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESSCONTROLMANAGEMENTTASKS_GROUP = 11257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONVERT_SHARED_TO_LOCAL = 11258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CARDHOLDERS = 11259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDERS = 11260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CARDHOLDERS = 11261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CARDHOLDER_STATUS = 11262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_NAME = 11263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_CUSTOM_FIELDS = 11264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_INFORMATION = 11265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CARDHOLDER_OPTIONS = 11266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_PICTURE = 11267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CARDHOLDER_GROUPS = 11268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUPS = 11269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CARDHOLDER_GROUPS = 11270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_CUSTOM_FIELDS = 11271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CREDENTIALS = 11272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIALS = 11273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CREDENTIALS = 11274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_ADVANCED_CREDENTIAL_INFO = 11275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CREDENTIAL_STATUS = 11276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_NAME = 11277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_ASSOCIATION_TO_CARDHOLDER = 11278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_CUSTOM_FIELDS = 11279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PRINT_BADGES = 11280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ACCESS_RULES = 11281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ACCESS_RULES = 11282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ACCESS_RULES = 11283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_BADGE_TEMPLATES = 11284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_BADGE_TEMPLATES = 11285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_VISITORS = 11286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITORS = 11287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHECHIN_AND_CHECKOUT_VISITORS = 11288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITORS_CUSTOM_FIELDS = 11289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITOR_PICTURE = 11290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPRMANAGEMENTTASKS_GROUP = 11291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARMMANAGEMENTTASKS_GROUP = 11292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ALARMS = 11293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ALARMS = 11294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ALARMS = 11295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_MONITOR_GROUPS = 11296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MONITOR_GROUPS = 11297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_MONITOR_GROUPS = 11298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LPR_RULES = 11299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_LPR_RULES = 11300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_LPR_RULES = 11301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PLATE_LIST = 11302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_ENTRIES = 11303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_ENTRIES = 11304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_ENTRIES = 11305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADD_ENTRIES = 11306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASKPRIVILEGES_GROUP = 11307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_REPORT_TEMPLATES = 11308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_REPORT_TEMPLATES = 11309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_REPORT_TEMPLATES = 11310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MANAGE_PRIVATE_TASKS = 11311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CATEGORY_ADMINISTRATION = 11312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGICAL_VIEW = 11313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMINTOOL_TAB_SYSTEM = 11314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EXTERNALSYSTEM_CATEGORY_VIDEO = 11315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONFIGTOOL_MENU_ACCESSCONTROL = 11316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONDETECTION_GROUP = 11317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MENU_TOOLS_PLUGINS = 11318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR = 11319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CATEGORY_OPERATIONS = 11320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SURVEILLANCE = 11321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_ALARM_MONITORING = 11322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS = 11323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_UNIT_DISCOVERY = 11324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SELECT_MANUFACTURERS = 11325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_UNIT_MANUALLY = 11326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECONCILE_INVENTORIES = 11327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_HOTLIST_MODIFICATION = 11328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOTE = 11329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAP_DESIGNER = 11330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SYSTEM_STATUS_TASK = 11331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HARDWARE_INVENTORY = 11332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PEOPLE_COUNTING = 11333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VISITOR_MANAGEMENT = 11334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INVESTIGATION_GROUP = 11335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARM_REPORT = 11336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_INCIDENT = 11337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_POINT_OF_SALE_REPORT = 11338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CATEGORY_ACCESS_CONTROL = 11339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREA_ACTIVITY_REPORT = 11340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREA_PRESENCE_REPORT = 11341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CARDHOLDER_ACTIVITY_REPORT = 11342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_ACTIVITY_REPORT = 11343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_REQUEST_HISTORY_REPORT = 11344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DOOR_ACTIVITY_REPORT = 11345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ELEVATOR_ACTIVITY_REPORT = 11346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_TIME_ATTENDANCE = 11347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_ACTIVITY_REPORT = 11348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VISITOR_REPORT = 11349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VISITOR_ACTIVITY_REPORT = 11350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ASSET_MANAGEMENT = 11351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_ASSET_ACTIVITIES = 11352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_ASSET_INVENTORY = 11353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ZONE_ACTIVITY_REPORT = 11354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSION_AREA_ACTIVITY = 11355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSION_UNIT_ACTIVITY = 11356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CATEGORY_VIDEO = 11357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_ARCHIVE_REPORT = 11358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_BOOKMARK_REPORT = 11359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_MOTION_SEARCH = 11360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_FORENSIC_SEARCH = 11361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_ACTIVITY_REPORT = 11362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_FILE_REPORT = 11363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS = 11364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS_MULTIREGION = 11365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS_GROUPING = 11366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TITLE_HIT_REPORT_PER_AGE = 11367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TITLE_HIT_REPORT_PER_TYPE = 11368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_PLATE_READS = 11369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_READS_MULTIREGION = 11370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_READS_GROUPING = 11371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PATROLLER_PLAYBACK = 11372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INVENTORY = 11373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_DAILY_USAGE_PATROLLER = 11374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGIN_PER_PATROLLER = 11375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_READ_HITS_PER_DAY = 11376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_READ_HITS_PER_LPR_ZONE = 11377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_ZONE_OCCUPATION = 11378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAINTENANCE_GROUP = 11379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_ACTIVITY_TRAILS = 11380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_AUDIT_TRAILS = 11381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_HEALTH = 11382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_CONTROL_HEALTH_HISTORY = 11383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_IO_CONFIGURATION_REPORT = 11384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_CATEGORY_ACCESS_CONTROL = 11385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESS_REPORT = 11386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ENHANCED_ACCESS = 11387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_TROUBLESHOOTING = 11388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_RULE = 11389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_CARDHOLDER_STATUS = 11390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_CREDENTIAL_STATUS = 11391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_CONFIGURATION = 11392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVER_ACTIVITY_REPORT = 11393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CARDHOLDER_CREATOR = 11394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_MANAGEMENT = 11395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACTIONPRIVILEGES_GROUP = 11396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_THREAT_LEVEL = 11397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESSCONTROL_GROUP = 11398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DOORS_GROUP = 11399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXPLICITLY_UNLOCK_DOORS = 11400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_SCHEDULE = 11401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAINTENANCE_MODE = 11402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORGIVE_ANTIPASSBACK_VIOLATION = 11403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SILENCE_SOUND_BUZZER = 11404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARM_DISARM_INTRUSION_ZONES = 11405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_INTRUSION_ALARM = 11406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREAS_GROUP = 11407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_PEOPLE_COUNT = 11408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERAS_GROUP = 11409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_AUDIO = 11410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISPLAY_OVERLAYS = 11411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PROTECT_VIDEO = 11412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNPROTECT_VIDEO = 11413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BLOCK_UNBLOCK_VIDEO = 11414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ALLOW_VIDEO = 11415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_RECORD_MANUALLY = 11416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADD_BOOKMARK = 11417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EDIT_BOOKMARK = 11418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_BOOKMARK = 11419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SAVE_AND_PRINT_SNAPSHOTS = 11420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PTZMOTORPRIVILEGES_GROUP = 11421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_DO_BASIC_OPERATIONS = 11422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_CHANGE_FOCUS_AND_IRIS_SETTINGS = 11423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_USE_PRESETS = 11424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_EDIT_PRESETS = 11425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_PTZ_PATTERNS = 11426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_PTZ_PATTERNS = 11427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_PTZ_AUXILIARIES = 11428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_PTZ_AUXILIARIES = 11429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SET_USE_SPECIFIC_COMMANDS = 11430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_MENU_ON_OFF = 11431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_LOCK_PTZ = 11432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_OVERRIDE_LOCKS = 11433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ALLOW_PLAYBACK = 11434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXPORT_VIDEO = 11435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_ASF_FORMAT = 11436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARMS_GROUP = 11437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ACKNOWLEDGE_ALARMS = 11438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_ALARMS = 11439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SNOOZE_ALARMS = 11440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORWARD_ALARMS = 11441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MACROS_GROUP = 11442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXECUTE_MACROS = 11443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USERS_GROUP = 11444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_MESSAGE = 11445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_EMAIL = 11446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EMAIL_REPORT = 11447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISPLAY_ENTITY_IN_SD = 11448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PLAY_SOUND = 11449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_CLEAR_USER_TASK = 11450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_OUTPUT = 11451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_START_STOP_SEQUENCE = 11452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_GROUP = 11453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_PROTECT_READS_HITS = 11454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DELETE_READS_NOT_IN_INVENTORY = 11455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ZONES_GROUP = 11456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARM_DISARM_ZONES = 11457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_WORKSPACE = 11458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_START_STOP_GUARDTOUR = 11459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_SECURITYDESK_OPTIONS = 11460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_TILE_CONTEXT = 11461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_TILE_PATTERN = 11462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_TILE_PATTERNS = 11463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CLIENT_VIEWS = 11464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_ANALYTIC = 11465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DIGITAL_ZOOM = 11466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_VIDEO_QUALITY = 11467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CAMERA_SEQUENCE = 11468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CAMERA_SEQUENCE = 11469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CAMERA_SEQUENCE = 11470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_VIDEO_UNITS = 11471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_UNIT_FIRMWARE_UPGRADE = 11472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VIDEO_UNITS = 11473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_VIDEO_UNITS = 11474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_VIDEO_UNITS = 11475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECONNECTVIDEOUNIT = 11476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_DELETE_CASH_REGISTERS = 11477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECONNECT_VIDEO_UNIT = 11478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_WEB_CLIENTS = 11479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_SDK = 11480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME = 11481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_MOBILE_CLIENT = 11482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FEDERATION_LOGON = 11483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_BADGE_TEMPLATES = 11484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFORMATION_FROM_GTAP = 11485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IRCUTFILTER = 11486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDGAIN = 11487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUEGAIN = 11488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKLIGHTCOMPENSATION = 11489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGESTABILIZATION = 11490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_ALL = 11491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIRECTORY_UPDATE = 11492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SQLSERVER_USER_PERMISSION = 11493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_TILE_PATTERN = 11494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUERY_TIMEOUT_RETRY = 11495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_WINDOWS_CREDENTIALS = 11496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE = 11497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LETMECHOOSE = 11498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_CACHE_OPTIONS_APPLIED_AT_STARTUP = 11499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_CREDENTIALS = 11500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOCK_SYNCHRONIZATION = 11501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CARD = 11502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDED_WITH_ERROR = 11503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_TILES = 11504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_FOLDER_LOCAL = 11505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_PUSHBUTTONS_AND_FLOORTRACKING = 11506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ACK_ALARMS_AFTER = 11507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_NAME = 11508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ASSIGNMENT = 11509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_REMOVED_FROM_TRANSFER_GROUP = 11510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_UPLOADED_PICTURE_SIZE = 11511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_GENETEC_VIDEO_PLAYER = 11512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SHOCK_DETECTED = 11513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOCK_LEVEL = 11514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_DHCPBUTCANNOTDISCOVER = 11518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PACKAGE = 11519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_DB_ASSOCIATED_VIDEO_FILES = 11520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRMATION_DELETE_DB_VIDEO_FILES = 11521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WRAP_TEXT = 11522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDS_FILTER_IS_UNAVAILABLE = 11523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_FOLDER_NOT_FOUND = 11524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_FILE_NOT_FOUND = 11525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_KEY_NOT_FOUND = 11526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AREA = 11527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_AREA = 11528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_AREA = 11529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_AREA = 11530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TILE_PLUGIN = 11531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TILE_PLUGIN = 11532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TILE_PLUGIN = 11533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TILE_PLUGIN = 11534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ACCESS_CONTROL_UNIT = 11535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ACCESS_CONTROL_UNIT = 11536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ACCESS_CONTROL_UNIT = 11537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ACCESS_CONTROL_UNIT = 11538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PATROLLER = 11539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PATROLLER = 11540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_PATROLLER = 11541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_PATROLLER = 11542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_LPR_UNIT = 11543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_LPR_UNIT = 11544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_LPR_UNIT = 11545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_LPR_UNIT = 11546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_OUTPUT_BEHAVIOR = 11547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_OUTPUT_BEHAVIOR = 11548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_OUTPUT_BEHAVIOR = 11549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_OUTPUT_BEHAVIOR = 11550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_DOOR = 11551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_DOOR = 11552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_DOOR = 11553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_DOOR = 11554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ELEVATOR = 11555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ELEVATOR = 11556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ELEVATOR = 11557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ELEVATOR = 11558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_INTRUSION_DETECTION_AREA = 11559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_INTRUSION_DETECTION_AREA = 11560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_INTRUSION_DETECTION_AREA = 11561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_INTRUSION_DETECTION_AREA = 11562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_INTRUSION_DETECTION_UNIT = 11563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_INTRUSION_DETECTION_UNIT = 11564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_INTRUSION_DETECTION_UNIT = 11565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_INTRUSION_DETECTION_UNIT = 11566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ZONE = 11567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ZONE = 11568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ZONE = 11569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ZONE = 11570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ASSET = 11571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ASSET = 11572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ASSET = 11573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ASSET = 11574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_SCHEDULE = 11575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_SCHEDULE = 11576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_SCHEDULE = 11577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_SCHEDULE = 11578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_SCHEDULED_TASK = 11579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_SCHEDULED_TASK = 11580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_SCHEDULED_TASK = 11581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_SCHEDULED_TASK = 11582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CARDHOLDER_GROUP = 11583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CARDHOLDER_GROUP = 11584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CARDHOLDER_GROUP = 11585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CARDHOLDER_GROUP = 11586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CARDHOLDER = 11587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CARDHOLDER = 11588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CARDHOLDER = 11589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CARDHOLDER = 11590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CREDENTIAL = 11591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CREDENTIAL = 11592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CREDENTIAL = 11593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CREDENTIAL = 11594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ACCESS_RULE = 11595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ACCESS_RULE = 11596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ACCESS_RULE = 11597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ACCESS_RULE = 11598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_BADGE_TEMPLATE = 11599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_BADGE_TEMPLATE = 11600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_BADGE_TEMPLATE = 11601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_BADGE_TEMPLATE = 11602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_VISITOR = 11603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_VISITOR = 11604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_VISITOR = 11605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_VISITOR = 11606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ALARM = 11607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ALARM = 11608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ALARM = 11609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ALARM = 11610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_MONITOR_GROUP = 11611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_MONITOR_GROUP = 11612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_MONITOR_GROUP = 11613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_MONITOR_GROUP = 11614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_LPR_RULE = 11615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_LPR_RULE = 11616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_LPR_RULE = 11617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_LPR_RULE = 11618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PUBLIC_TASK = 11619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PUBLIC_TASK = 11620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_PUBLIC_TASK = 11621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_PUBLIC_TASK = 11622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CAMERA_SEQUENCE = 11623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CAMERA_SEQUENCE = 11624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERA_SEQUENCE = 11625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERA_SEQUENCE = 11626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_VIDEO_UNIT = 11627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_VIDEO_UNIT = 11628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_VIDEO_UNIT = 11629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_VIDEO_UNIT = 11630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CASH_REGISTER = 11631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CASH_REGISTER = 11632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CASH_REGISTER = 11633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CASH_REGISTER = 11634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LPR_NOMATCHEVENT_FORMAT = 11635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLE_ENTITY = 11636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNITSTATS_NUMCARDHOLDER = 11637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDS_ACCESS_MANAGER_NOT_AVAILABLE = 11638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_EDIT_READ = 11639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GEOCODING_INVALID_CREDENTIAL = 11640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_USER_GROUP_INFO_PAGE_TITLE = 11641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GROUP_NO_PRIVILEGE_DESCRIPTION = 11642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTICS_EXTERNALSYSTEM_PLUGINDEPENDENCYNOTLOADED = 11643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ROLENOTLOADING = 11644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CANNOTAUTHENTICATEUSERS = 11645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CANNOTAUTHENTICATEUSERS_DETAILED = 11646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SERVER_NEEDS_UPDATE = 11647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_CAMERA = 11648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_SERVERS_GATEWAY = 11650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARMS_FORCEACK_ALL = 11651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARMS_TRIGGERED = 11652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_TRIGGERED = 11653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VISUALTRACKING_ENABLED = 11656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VISUALTRACKING_DISABLED = 11657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_STARTED = 11658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEOUNIT_RECONNECTED = 11659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_BADGE_PRINTED = 11662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DEVICE_SHUNTED = 11663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLATE_FILTERING = 11664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_GENERATE_REPORT = 11665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_REPORT = 11666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRINT_REPORT = 11667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_BOOKMARK_ALL = 11668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_SNAPSHOT_ALL = 11669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SLOW_MOTION_ALL = 11670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUAL_TRACKING_ALL = 11671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_UNITS_AUTOMATICALLY = 11672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_ASSOCIATED_TO = 11673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLAT_VIEW = 11674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIERARCHICAL_VIEW = 11675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_ENTITIES = 11676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUOUSLY = 11677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUTE_ALL_ALARMS = 11678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOW_ADVANCED_SETTINGS = 11679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_HIDE_ADVANCED_SETTINGS = 11680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_HOLD = 11681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_MINUTE_PRECISION = 11682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEST = 11683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_NONE = 11684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MAP_MANAGER_NAME = 11685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MAP_MANAGER_DESCRIPTION = 11686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_LENS_CAPABILITIES_NOT_EQUALS = 11687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FAILOVER = 11688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_GHOST_CAMERA = 11689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NOT_ALL_INPUTS_SHOWN = 11690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HEALTH_EVENT_NUMBER = 11691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_SOUND = 11692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALARM_SOUND = 11693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_TIMELINE = 11694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ALWAYS_DISPLAY_TIMELINE = 11695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_LIVE = 11696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PLAYBACK = 11697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAP_LAYERS_FILE_PATH_INVALID = 11698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_ON_PARSING = 11699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_FILE_TYPE_INVALID = 11700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_NO_PLACEMARK_FOUND = 11701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDERS = 11702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_MAP_PROVIDER = 11703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_MAP_PROVIDER = 11704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_MAP_PROVIDER = 11705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEFAULT_PROVIDER = 11706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYERS = 11707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_MAP_LAYER = 11708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_MAP_LAYER = 11709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_USE_CLOUD = 11710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_OUTPUT_FOLDER = 11711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_WEB_SERVER_PORT = 11712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_ACCOUNT_NAME = 11713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_ACCESS_KEY = 11714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNCHECK_ALL_MAP_LAYERS = 11715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHECK_ALL_MAP_LAYERS = 11716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVIDERS = 11717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_LICENSE_KEY = 11718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER = 11719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_WARNING = 11720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NEW = 11721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_CHANGED = 11722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_IS = 11723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATING_FILES = 11724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS = 11725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS = 11726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS = 11727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS = 11728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS = 11729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_LPR_MANAGERS_ASSOCIATION = 11730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_PROPERTIES = 11731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_SPECIFIC_UNITS_ASSOCIATION = 11732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ASSIGNED_LPR_MANAGERS = 11733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_LPR_MANAGERS = 11734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ASSIGNED_UNITS = 11735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_UNITS = 11736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PLATELIST_PREFETCHERROR = 11737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_ANOTHER_SIMILAR_HOTLIST = 11738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_ANOTHER_SIMILAR_PERMIT = 11739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAIT_FOR_ENTITIES = 11740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_HOTLIST_TO = 11741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_PERMIT_TO = 11742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS_HOTLIST_DESCRIPTION = 11743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS_PERMIT_DESCRIPTION = 11744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS_HOTLIST_DESCRIPTION = 11745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS_PERMIT_DESCRIPTION = 11746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS_HOTLIST_DESCRIPTION = 11747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS_PERMIT_DESCRIPTION = 11748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS_HOTLIST_DESCRIPTION = 11749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS_PERMIT_DESCRIPTION = 11750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS_HOTLIST_DESCRIPTION = 11751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS_PERMIT_DESCRIPTION = 11752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST = 11753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT = 11754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_ENTITY_CREATION = 11755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_ENTITY_MODIFICATION = 11756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ENTRY_WILL_BE_DELETED = 11757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_CHECKING_VIDEOFILE_DATABASE_ENTRY = 11758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_BUILDING_MISSING_FILES_LIST = 11759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_BUILDING_ORPHAN_FILES_LIST = 11760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYNCHRONIZE_RESTART = 11761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_BUTTON = 11762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_AND_RESTART_BUTTON = 11763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DEVICES_CANNOT_BE_SWAPPED = 11764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CONFIGURED_ON_ACCESSPOINTGROUP = 11765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ARCHIVER = 11766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ACCESSMANAGER = 11767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AS_ALARM = 11768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AS_EVENT = 11769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_PROMOTE_TO_ADMIN = 11770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS = 11771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_WORLD_IMAGERY = 11772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_WORLD_SHADED_RELIEF = 11773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_STREET_MAP_WORLD = 11774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_TOPOGRAPHIC_US = 11775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_PHYSICAL = 11776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_SHADED_RELIEF = 11777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_STREET = 11778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_TERRAIN = 11779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_TOPOGRAPHIC = 11780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_MAP = 11781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_HYBRID_MAP = 11782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_SATELLITE_MAP = 11783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD_MADE_MAP = 11784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_HISTORY_MAP = 11785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_HYBRID_MAP = 11786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_MAP = 11787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_SATELLITE_MAP = 11788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_TURIST_MAP = 11789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_HYBRID_MAP = 11790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_MAP = 11791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_SATELLITE_MAP = 11792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_TERRAIN_MAP = 11793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_HYBRID_MAP = 11794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_HYBRID_MAP = 11795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_MAP = 11796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_SATELLITE_MAP = 11797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_MAP = 11798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_SATELLITE_MAP = 11799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_TERRAIN_MAP = 11800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATVIA_MAP = 11801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA__3D_MAP = 11802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_HYBRID_MAP = 11803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_HYBRID_OLD_MAP = 11804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_MAP = 11805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_ORTO_FOTO_MAP = 11806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_ORTO_FOTO_OLD_MAP = 11807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BENDER_WMS_DEMO_MAP = 11808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_HYBRID_MAP = 11809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_MAP = 11810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_SATELLITE_MAP = 11811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE_LANDSCAPE_MAP = 11812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE = 11813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE_TRANSPORT_MAP = 11814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_SEA_HYBRID_MAP = 11815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_4U_MAP = 11816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAP = 11817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_MAP = 11818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_HYBRID_MAP = 11819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_SATELLITE_MAP = 11820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_HYBRID_MAP = 11821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_MAP = 11822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_SATELLITE_MAP = 11823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_TERRAIN_MAP = 11824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPAIN_MAP = 11825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURKEY_MAP = 11826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIKIMAPIA_MAP = 11827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_HYBRID_MAP = 11828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_MAP = 11829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_SATELLITE_MAP = 11830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YANDEX_HYBRID_MAP = 11831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YANDEX_MAP = 11832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_FAILED = 11833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_RECIPIENTS = 11836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENROLLING_NEW_HID_EVO_CONTROLLERS = 11837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACCESS_MANAGER_IN_BACKWARDS = 11838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENTPRIVILEGES_CREATE_ALARM_TRIGGER = 11839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STE_LICENSE_BADLICENSE_ADC_WARNING = 11840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STE_LICENSE_BADLICENSE_ADC_ERROR = 11841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDHOLDER_DUPLICATE_PIN = 11842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXED_LENGTH_ATTRIBUTE_REQUIREMENT = 11843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SAVE_HOTLIST_PROPERTIES = 11844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SAVE_PERMIT_PROPERTIES = 11845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXED_LENGTH_ATTRIBUTES_REQUIRED = 11846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VAULT_FOLDER_DOES_NOT_EXIST = 11847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PARSE_EMAILS = 11848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_ENTITY_TYPES = 11849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EMAILS = 11850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURED_READING_FILE = 11851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_GENETEC_VIDEO_PLAYER = 11852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT_KML = 11853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_NO_VALID_POLYGON = 11854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_NO_POLYGON = 11855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_INVALID = 11856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_BITRATE_REDUCTION_STRENGTH = 11857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_DYNAMIC_GOP = 11858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXLENGTH = 11859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DYNAMIC_GOP_MIN_LENGTH = 11860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDIRECTION_STRATEGY = 11861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRATEGY = 11862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING = 11863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_FAST_ACCESS_CONTROL = 11864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_DESCRIPTION_FAST_ACCESS_CONTROL = 11865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_INTERFACE_FROM_SMC_UNIT = 11866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_ACCESS_ERROR = 11867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_NO_FREE_SPACE = 11868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_WRITE_PROTECTED = 11869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_NOT_INSERTED = 11870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MAINTENANCE_WARNING = 11871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MAINTENANCE_ERROR = 11872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORTTRICKLING = 11873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ADD_NETWORKCARD_PORT_TWICE = 11874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REDIRECTION_LIST_ORDER = 11875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SILENCE_INTRUSION_ALARM = 11876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_SILENCED = 11877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SILENCE_INTRUSION_ALARM = 11878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ALARM_STATE_ALARM_SILENCED = 11879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_ACKNOWLEDGED = 11880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ACKNOWLEDGE_INTRUSION_ALARM = 11881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACKNOWLEDGE_INTRUSION_ALARM = 11882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DOOR_UNLOCK_ALL = 11883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_NEXT_CONTENT_IN_CYCLE_ALL = 11884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_PREVIOUS_CONTENT_IN_CYCLE_ALL = 11885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_ACK_ALL = 11886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_NACK_ALL = 11887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK_ALL_TILE = 11888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SNOOZE_ALARM_ALL = 11889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TOGGLE_RECORDING_ALL = 11890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_CYCLING_ALL = 11891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TOGGLE_MONITORING_ALL = 11892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ARM_ALL = 11893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISARM_ALL = 11894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_START_CYCLING_ALL = 11895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSION_ALARM_STATE = 11896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TALK_ALL = 11897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LISTEN_ALL = 11898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_IP_ADDRESS = 11899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_REQUESTING_ENCRYPTION = 11900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_ENCRYPTION = 11901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DECODING_STREAM = 11902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_DECODING_STREAM = 11903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL = 11904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACES = 11905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_OPEN_NOT_SUPERVISED = 11906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_CLOSED_NOT_SUPERVISED = 11907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_OPEN_SUPERVISED = 11908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_CLOSED_SUPERVISED = 11909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_PICTURES = 11910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_NOW = 11911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ACTIVE_DIRECTORY_DOMAIN = 11912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENCRYPTION = 11913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEAR_SELECTION = 11914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_ADFS_USERGROUPS = 11915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_TRUST_CHAINS_DOMAINS = 11916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_USER_GROUPS_HINT = 11917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_DELETE = 11918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_ADD = 11919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUDRATES = 11920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_DATABASE_SETTINGS = 11921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOLIDAYS = 11922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ZONES = 11923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCEDURES = 11924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERS = 11925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTIONS = 11926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EDITED = 11927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIAGNOSTIC_DATA_COLLECTION_TOOL = 11928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_SUPERVISED_INPUT_VALUES = 11929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_PARTIALLY_SUCCEEDED = 11931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_USER_CANCELLATION = 11932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LPR_CANT_START_WEB_SERVICE = 11933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ON = 11934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_OFF = 11935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLER_LOGON = 11936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PATROLLER_LOGON = 11937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_SECURITY_INFORMATION = 11938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLER_ACCESS_READS_HITS = 11939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PATROLLER_ACCESS_READS_HITS = 11940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_USER_PRIVILEGE_TEMPLATE_DESCRIPTION = 11941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_PATROLLER_USER = 11942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSUPPORTED_FILTER = 11943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_LPRUNIT_READ = 11944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGER_LPRUNIT_READ = 11945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_LPRUNIT_READ = 11946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TRIGGER_READ = 11947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ADFS_INTEGRATION_COUNT = 11949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ADFS_NAME = 11950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ADFS_DESCRIPTION = 11951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_ACTIVE = 11952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_NORMAL = 11953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_TROUBLE = 11954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SUBTYPE_INPUT_STATE_ACTIVE = 11955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SUBTYPE_INPUT_STATE_TROUBLE = 11956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_INTERFACE_DETAILS = 11957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_ASSIGN = 11958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_ASSIGN_REMOVE = 11959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PASSWORD_CHANGE = 11960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DEFAULT_CHANGE = 11961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_VALUE_CHANGE = 11962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_BLOB_MODIFIED = 11963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_INT_OFF = 11964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_ADDED = 11965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_REMOVED = 11966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_STILLFRAME = 11967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASEFAILOVER_ADD = 11968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASEFAILOVER_REMOVE = 11969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DIRECTORYFAILOVER_ADD = 11970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DIRECTORYFAILOVER_REMOVE = 11971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_THREATLEVEL_ACTION_ADD = 11972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_THREATLEVEL_ACTION_REMOVE = 11973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_HOTACTION_ADD = 11974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_HOTACTION_REMOVE = 11975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_LOGONSCHEDULE_ADD = 11976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_LOGONSCHEDULE_REMOVE = 11977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PTZPRIORITY_ADD = 11978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PTZPRIORITY_REMOVE = 11979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_TASK_ADD = 11980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_TASK_REMOVE = 11981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ADGROUP_SYNC_ADD = 11982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ADGROUP_SYNC_REMOVE = 11983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PARTITION_ADMIN_ON = 11984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PARTITION_ADMIN_OFF = 11985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ACCESSRIGHT_ADD = 11986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ACCESSRIGHT_REMOVE = 11987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SUPERVISOR_ADD = 11988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SUPERVISOR_REMOVE = 11989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_FILES = 11990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUN_TEST = 11991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_ENCRYPTION_KEY_FILE = 11992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTED_VIDEO_PROHIBITED = 11993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTION_DENIED_RENDERLESS = 11994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_STILLFRAME_REMOVED = 11995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWO_PERSON_RULE = 11996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_VISITOR_ESCORT_RULE = 11997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERITED = 11998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_INHERITED = 11999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_DELAY_BETWEEN_CARD_PRESENTATIONS = 12000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_ELEVATOR_CONTROL = 12001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_IO_LINKING = 12002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_IO_LINKING_SCHEDULE = 12003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL_ADDRESS = 12004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_EVENT_DELAY = 12005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCKING_DOOR_ACTION = 12006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKING_DOOR_ACTION = 12007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENCRYPTED_FILE = 12008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRED_FORMAT = 12009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRING_SOON_FORMAT = 12010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRED = 12011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRING_SOON = 12012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_4KHIGHFRAMERATE = 12013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_4KMULTISTREAMING = 12014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_VGACROPPING = 12015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_FHDCROPPING = 12016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_FULLSIZE = 12017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_HDMI = 12018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_VIDEO_CODEC = 12019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_CAMERA_CONFIG_RESET_WARNING = 12020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_MODE = 12021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO = 12022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_4_3 = 12023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_16_9 = 12024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_3_2 = 12025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BFRAME = 12026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLATION = 12027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RETRICTION = 12028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_HOTLIST = 12029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_OVERTIME = 12030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_PERMIT = 12031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_ACCEPT_REASONS = 12032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_RETRY_COUNT = 12033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_ENFORCED_HIT_ATTR = 12034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ANNOTATION_FIELD_DELETED = 12035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_METADATA = 12036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFIED_METADATA = 12037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOADING_CERTIFICATE_FILE = 12038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CERTIFICATE_UNICITY = 12039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_CERTIFICATES = 12040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISSUED_BY = 12041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISSUED_TO = 12042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_FROM = 12043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BROWSE_CERTIFICATE_FILE = 12044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SELECT_CERTIFICATE = 12045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIEW_CERTIFICATE_DETAILS = 12046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USE_SERVERADMIN_SERVER_CERTIFICATE = 12047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_CERTIFICATE = 12048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_CERTIFICATES = 12049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_SERVER_CERTIFICATES = 12050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_SUMMARY = 12051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_LEFT = 12052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_RIGHT = 12053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_LEFT = 12054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_RIGHT = 12055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_NONE = 12056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_SHORTTERM = 12057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_LONGTERM = 12058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENABLE_PLAYBACK = 12059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SHARP_DISCOVERY_PORT_MODIFIED = 12060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_EVENTFILTERS_ADDED = 12061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_EVENTFILTERS_REMOVED = 12062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ERROR_DATA_RETRIEVED = 12063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_MODIFIED = 12064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SWITCH_VIEW = 12065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_CERTIFICATE = 12066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_USER_LOGON_FAILED = 12067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGON_FAILED = 12068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_LINKEDID = 12069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEACTIVATE_X_DAYS_AFTER_FIRST_USE = 12070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_START_PROTECT_SEQUENCE = 12071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_STOP_PROTECT_SEQUENCE = 12072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_START_STOP_PROTECT_SEQUENCE = 12073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_READER_SIDE = 12074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_SPECIFIC_SETTING = 12075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_STORAGE_DIFFERENT_COUNT = 12076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LISTADDITIONTYPE_ADDED = 12077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LISTADDITIONTYPE_REMOVED = 12078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKING_LOTS = 12079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_SPECIFIC_SETTING = 12080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_ROOM_DESCRIPTION = 12081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_BUILDING_DESCRIPTION = 12082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CAMPUS_DESCRIPTION = 12083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CITY_DESCRIPTION = 12084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_SPECIFIC_DESCRIPTION = 12085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_GEOGRAPHICAL_DESCRIPTION = 12086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_ROOM = 12087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_BUILDING = 12088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CAMPUS = 12089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CITY = 12090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_SPECIFIC = 12091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_GEOGRAPHICAL = 12092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILLIMETERS_ABBREV = 12093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCEPT_REASONS_GROUP = 12094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCEPT_REASONS_GROUPS = 12095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEX = 12096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_DIRECTORY_0_CERT_NOT_TRUSTED = 12097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISCOVER = 12098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_CUSTOM_HOTLISTS = 12099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_CUSTOM_PERMITS = 12100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_INHERITS_HOTLISTS = 12101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_INHERITS_PERMITS = 12102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_IS_IN_SERVICE_MODE = 12103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRUSTED_SERVER_CONFIRMATION = 12104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SERVER_NOT_VERIFIED = 12105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CERTIFYING_AUTHORITY = 12106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONTINUE_LOGON = 12107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACCEPT_CERTIFICATE = 12108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBPRINT = 12109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALLOW_PREV_VER_INSECURE_CONNECTION = 12110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUT_OF_FORMAT = 12111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_OR_INTERFACE = 12112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_SUPPORTS_TRIGGER_READ = 12113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_INSTANCE_ID = 12114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ENTITY_OWNER_REMOVE = 12115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ENTITY_OWNER_ADD = 12116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED = 12117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_AUTOCAD = 12118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_IMAGE = 12119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_PDF = 12120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_XPS = 12121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_CREATEINCIDENT = 12122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_SINGLEMONITOR = 12123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_MULTIMONITOR = 12124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_LAYERS = 12125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_SMARTCLICK = 12126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_COMBO_EMPTY_SELECTION_MESSAGE = 12127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_HIDEEVENTS = 12128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LINKSITEM_TOOLTIP_MULTIPLE = 12129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LINKSITEM_TOOLTIP = 12130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MACRO_DEFAULTCONTEXT = 12131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_KML_ACTIVELAYERS = 12132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_INVALIDFOLDER = 12133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_UNABLETOCREATE = 12134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_ROLE_READPERMISSION = 12135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_ROLE_WRITEPERMISSION = 12136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SUPERVISOR_LOGON_FAILED = 12137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H263 = 12138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLYGON = 12139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_IOS = 12140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_FORMAT_NOT_SUPPORTED = 12141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_USE_SUPPORTED_FORMAT = 12142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_LASSO_SELECT = 12143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_BRING_FORWARD = 12144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_BRING_TO_FRONT = 12145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SEND_TO_BACK = 12146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SEND_BACKWARD = 12147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISCARD_CHANGES = 12148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_CHANGE_BACKGROUND = 12149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SET_DEFAULT_VIEW = 12150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_CENTER_HORIZONTAL = 12151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_TOP = 12152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_CENTER_VERTICAL = 12153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_BOTTOM = 12154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISTRIBUTE_HORIZONTALLY = 12155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISTRIBUTE_VERTICALLY = 12156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SELECT_ALL = 12157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_RECTANGLE_SELECT = 12158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_TYPE_SELECT = 12159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEHAVIOR = 12160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_ADD_ACTION = 12161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_BLOCK_FOV = 12162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_BLOCK_FOV_TOOLTIP = 12163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_SHOW_FOV = 12164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTANCE = 12165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFSET = 12166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV_MAX_DISTANCE = 12167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV_ALTITUDE = 12168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV = 12169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_PREVIEW_VIDEO = 12170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_LONG = 12171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_LAT = 12172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_PREVIEW_UNAVAILABLE = 12173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARRANGE = 12174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN = 12175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROTATE = 12176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DESIGNER_DELETE_MAP_ASSOCIATED = 12177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DESIGNER_DELETE_MAP = 12178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DEFAULT_SELECT_GEOGRAPHICAL = 12179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DEFAULT_SET_IN_ROLE = 12180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ADFS_ROOT = 12181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_DOMAINS = 12182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_RELYINGPARTY = 12183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_FULLYQUALIFIEDNAME = 12184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_NETBIOS = 12185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_DEFAULTCLAIM = 12186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_NAME_CLAIM = 12187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_LOGOFF_DURATION = 12188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOMAIN = 12189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PTZ_PRIORITY = 12190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATIONS_MAXIMUM = 12191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASECLEANUP_INTERVAL = 12192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_FILESTREAM_FOLDER = 12193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HOTLISTS = 12194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PROVIDER_INTERVAL = 12195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_PROPERTY_SERVICEDOMAIN = 12196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_XML = 12197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_OWNERSHIP_UPDATE = 12198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DRILLDOWN_IGNORE = 12199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_IMPORT_AREA_AS_REGION = 12200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_IMPORT_AREA_ELEMENT_ONLY = 12201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SELECT_DEFAULT_VIEW = 12202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OR = 12203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ACK_ALL = 12204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_FORCE_ACK_ALL = 12205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION = 12206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOATING = 12207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_RECENT_MAP = 12208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ALL_MAPS = 12209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_NO_THUMBNAIL = 12210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_BROWSE_ALL_MAPS = 12211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SELECT_MAP = 12212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_EVENTS = 12213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_LAYERS = 12214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SHOW_MINIMAP = 12215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ADD_TO_FAVORITE = 12216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_REMOVE_FROM_FAVORITE = 12217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_OPEN_IN_DESIGNER = 12218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_AS_DEFAULT = 12219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_AS_DEFAULT_GLOBAL = 12220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSE_ALL = 12221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_NO_DEFAULT_SELECT = 12222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_APPLY_BACKGROUND = 12223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IMAGE_FORMAT = 12224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_GEOGRAPHIC = 12225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_GEOGRAPHIC_TYPE = 12226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATING_IMAGE = 12227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_REPLACE_BACKGROUND = 12228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_WHAT_KIND_BACKGROUND = 12229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_SUPPORTED = 12230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_FORMAT_NOT_SUPPORTED_LICENSE = 12231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IDENTITY_DESCRIPTION = 12232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_AREA = 12233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_AREA_NAME = 12234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ICON = 12235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IDENTITY_TITLE = 12236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WARNING_SELECT_EXISTING_AREA = 12237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIZARD_SPECIFIC_SCALE_INSTRUCTION = 12238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIZARD_GEOGRAPHIC_SCALE_INSTRUCTION = 12239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_MARKER = 12240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_SCALE_TITLE = 12241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_GENERATING_MAP = 12242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MAP = 12243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_LAYERS_IMPORT = 12244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_SELECTED_LAYERS = 12245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAD_FILE_FORMAT = 12246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_ADDRESS = 12247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_ADDRESS_DESCRIPTION = 12248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_NOT_AVAILABLE = 12249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_MAP = 12250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_MAP = 12251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_MAP = 12252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_MPGA = 12253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_SERVER_PORT = 12254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS = 12255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS_LC = 12256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTED_VIDEO_NO_PRIVATE_KEY = 12257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USER_GROUPS = 12258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DEFAULT_GROUP_CLAIM = 12259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_URL = 12260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_RELYING_PARTY = 12261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_DIFFERENT_FROM_PREVIOUS = 12262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INVALID_CREDENTIALS = 12263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REQUIRED_USERNAME = 12264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INVALID_USERNAME = 12265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_VALIDATE_LOCALUSER = 12266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_PATH = 12267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_ENOUGH_MEMORY_FOR_BUFFERING = 12268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_HIT_REJECT_REASONS = 12269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_OVERTIME_HIT_REJECT_REASONS = 12270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_HOTLIST_HIT_REJECT_REASONS = 12271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_RECORDINGSCHEDULE_ADD = 12272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_RECORDINGSCHEDULE_REMOVE = 12273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_STATES = 12274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_STATES = 12275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIP_SMART_CLICK = 12276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_COMPRESSING_FILES = 12277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_MAP_SOURCE_FILES = 12278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_AUTOCAD = 12279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_IMAGE = 12280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_PDF = 12281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_XPS = 12282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KILOMETERS = 12283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CENTIMETERS = 12284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FEET = 12285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILES = 12286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MEASUREMENT_UNIT_INCHES = 12287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_ADD = 12288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_REMOVE = 12289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_MAP_MODIFIED = 12290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_MOTION = 12291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_RECORDING = 12292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_DEFAULT_CONTEXT = 12293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAP_MONITORING = 12294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLDER_FIRST = 12295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWER_FIRST = 12296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MACRO_CODECHANGED = 12307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_1_DETAIL = 12308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_1_TITLE = 12309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_2_DETAIL = 12310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_2_TITLE = 12311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_3_DETAIL = 12312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_3_TITLE = 12313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_4_DETAIL = 12314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_5_DETAIL = 12315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_5_TITLE = 12316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_7_TITLE = 12317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_USER_CANCELLATION_IN_PROGRESS = 12318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_READ_PLATE = 12319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_READ_PLATE = 12320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ON_MAP = 12321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPERATION_MAPS = 12322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_FILES = 12323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_FAILURE = 12324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_VIDEO_FAILURE = 12325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_VIDEO_FAILURE = 12326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_AN_ALARM = 12327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_NOT_REFERENCED = 12328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAPS_NOT_REFERENCING_CAMERA = 12329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_CLUSTER = 12330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_DEFAULT = 12331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_FOV = 12332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_FAILOVER_SERVER = 12333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_FAILOVER_REMOVE = 12334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_ENCRYPTION = 12335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EXPORT_VIDEO_REMOVE_ENCRYPTION = 12336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEACTIVEDIRECTORIES_DETAILED = 12337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEADFS = 12338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEADFS_DETAILED = 12339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTEXTMENU_SHOW_EVENTS = 12340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_PREPARING_ARCHIVE = 12341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_AT = 12342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIEW_POSITION = 12343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VIDEO_DISPLAY_CONFIGURATION = 12344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_MONITORING = 12345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND_MONITORING = 12346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESUME_MONITORING = 12347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARM_ALL_TILES = 12348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_ALL_TILES = 12349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALARMS = 12350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_EVENTS = 12351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_SUSPENDED = 12352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_EVENT_WARNING = 12353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_ALARM_WARNING = 12354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_INACTIVE = 12355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_ACTIVE = 12356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_PRIVILEGES_CONVERT_ENCRYPTED = 12357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_SERVER_ADDED = 12358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_SERVER_REMOVED = 12359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_NOUN = 12360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METER_ABBREV = 12361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CENTIMETERS_ABBREV = 12362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FEET_ABBREV = 12363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILES_ABBREV = 12364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KILOMETERS_ABBREV = 12365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALL_ALARMS = 12366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MANAGER_ROLE = 12367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_ADDED = 12368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_MODIFIED = 12369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_REMOVED = 12370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_CREDENTIALS_SYNCED = 12371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDNOPIN = 12372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDNOPIN = 12373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDREJECTEDPIN = 12374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDREJECTEDPIN = 12375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_LIVE_HTTP_LISTENING_PORT = 12376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_UPDATE_PROVIDER_HTTP_LISTENING_PORT = 12377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EMAIL_NOTIFICATION_LOGGING = 12379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_CARDANDPINTIMEOUT = 12380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_CARDANDPINTIMEOUT = 12381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDINACTIVEPIN = 12382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDINACTIVEPIN = 12383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_HOTLIST_PLATE_FILTER_LOGGING = 12384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTPS_LISTENING_PORT = 12385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_OPTIMIZE_QUALITY = 12387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_OPTIMIZE_PERFORMANCE = 12388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNIT_USING_DEFAULT_USER_PASSWORD = 12389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READS_HITS_SERVICE = 12390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PICTURE_IN_PICTURE = 12391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND_TILE_MONITORING = 12392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CREDENTIAL_REQUEST_REASONS = 12393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGOFF_FORCED = 12394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_REBOOT = 12395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_USE_CAMERA_APPLICATION = 12396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_DELETED = 12397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_PENDING = 12398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_THUMBNAIL = 12399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_TILES = 12400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_TILES_REMAINING = 12401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_COMPLETED = 12402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AM_EXTENSION_ADDED = 12403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AM_EXTENSION_REMOVED = 12404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_SYNC_STARTED = 12405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_REGISTRATION_REQUIRED = 12406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_DEFAULT_COPIE = 12407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_HITS = 12408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_READS = 12409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_UNIT_WEBPAGE = 12410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_MULTIMONITOR_OFF = 12411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_FILTER = 12412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_DETECTION_WHEN_ENCRYPTION_ENABLED = 12413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CONFIGURATION_TASK = 12414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CONFIGURATION_TASK_DESC = 12415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MONITORING_TASK = 12416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MONITORING_TASK_DESC = 12417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_MC_INCIDENTS = 12418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_MC_INCIDENTS_DESC = 12419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_MANAGEMENT = 12420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINPCAP_LIBRARY_NOT_FOUND = 12421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REQUIRED_PASSWORDS = 12422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAXIMUM_INTERFACES_REACHED = 12423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMATS = 12424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYERS = 12425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_VALIDATE_MISSING_SERVER = 12426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ROOTFOLDER_INCORRECT = 12427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_CREATED = 12428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_DELETED = 12429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_MODIFIED = 12430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_EXTRACT_IMAGE = 12431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EXTENSION_NAME = 12432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_THREATLEVEL_ASSIGN = 12433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_NOT_ACCESSIBLE = 12434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_MODE = 12435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_SECURITY_INFORMATION_HELP = 12436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_CARDHOLER_HAS_SHARED_CREDETIALS = 12437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALERT = 12438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_ELEVATOR_UNKNOWN_CREDENTIAL = 12439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ENCRYPTION_ERROR = 12440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_UNIT_SUCCESS = 12441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_UNIT_FAILED = 12442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_UNIT_ENROLLMENT_DLG = 12443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDING_UNIT_FORMAT = 12444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_NO_ACCESS_MANAGER = 12445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOCUMENT = 12446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATIC = 12447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYNAMIC = 12448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAP_CACHE_LOCATION_INFO = 12449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER = 12450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAY_SHADOW = 12451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_MAPMANAGER = 12452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_DAYS = 12453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_HOURS = 12454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_VALIDITY_RANGE = 12455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE = 12456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND = 12457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED = 12458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEOPLE_IN_AREA = 12459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ENTITY = 12460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_LIVE_ALL = 12461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MLPILOCATIONS_ROUTE_CHANGED = 12462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUXILIARY_ARCHIVER_ADD_NO_ARCHIVE_STREAM_CAMERA = 12463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HEX_VALUE = 12464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_IS_SYNCHRONIZING = 12465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_NO_SERVER = 12466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_TILE_NOT_FOUND = 12467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_DISPLAY_IN = 12468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_MONITORING_TASK = 12469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_MAP = 12470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_TRANSFER_SIMULTANEOUS = 12471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPPROVIDER_CUSTOM = 12472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_PERMITS = 12473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BROWSE = 12474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_INDEXED_ARCHIVER_NEEDS_TO_BE_RESTARTED = 12475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_INDEXED_ARCHIVER_NEEDS_TO_BE_RESTARTED = 12476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INCIDENTMANAGERS = 12477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBFUSCATE_ENTITY_NAMES = 12478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_ADVANCED_SECURITY = 12479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ADVANCED_SECURITY = 12480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_CERTIFICATE_UNSUPPORTED = 12481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND = 12482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROJECTION_WGS84 = 12483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_AUTHENTICATION = 12484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_AUTHENTICATION_FAILURE = 12485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OCCURS = 12486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SECURITYCENTER_ONLINE = 12487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_USER_VIEWER = 12488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_USER_OPERATOR = 12489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FAILOVER_ARCHIVERS_PER_ARCHIVER = 12490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_INVALIDAUTHENTICATION_ERROR = 12491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_SCHEME = 12492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_BASIC = 12493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_DIGEST = 12494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_ANONYMOUS = 12495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_USERNAME_TOKEN = 12496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_THIRD_PARTY = 12497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFUSE_BASICAUTHENTICATION = 12498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESET_AUTHENTICATION_MODE = 12499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_ENTITY = 12500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYSTEM_AVAILABILITY_MONITOR = 12501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_COLLECTION_POLICY = 12502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_DATA_COLLECTION = 12503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANONYMOUS_DATA_COLLECTION = 12504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_DATA_COLLECTION = 12505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_PRIVACY_POLICY = 12506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_PRIVACY_POLICY_END = 12507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_INTELLIGENT_CROPPING = 12508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_INTELLIGENT_CODING = 12509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORT = 12510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIDDLE = 12511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG = 12512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_TRAP_AREA = 12513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_TRACKING_PERIOD = 12514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_HIGHRESOLUTION_WARNING = 12515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_DISCONNECTED_UNIT = 12516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDED_DISCONNECTED = 12517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLE_UNIT = 12518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_UNIT = 12519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISABLE_UNIT = 12520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISABLE_UNITS = 12521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_ENABLED = 12522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_DISABLED = 12523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_MODIFIED = 12524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WELCOME_TO_SECURITY_CENTER = 12525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPACT_EDITION = 12526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_INTRODUCTION_COMPACT = 12527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_USER_LICENSE_AGREEMENT = 12528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_AGREEMENT = 12529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACHINE_NAME_BLANK_LOCAL = 12530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_ACTIVATE_DIRECTORY = 12531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_MODIFIED = 12532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTART_REQUIRED = 12533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LANGUAGE_MODIFIED_RESTART = 12534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_I_ACCEPT = 12535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_I_DECLINE = 12536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_STANDARD = 12537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_APPLIANCE = 12538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_COMPACT = 12539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_ONLINE = 12540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_CLOUD = 12541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_NOT_USED = 12542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_FULL_VIEW = 12543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK_AD400 = 12544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK_AD300 = 12545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_NUMBER = 12546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESTART_INTRUSION_UNITS = 12547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESTART_INTRUSION_UNITS = 12548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UPGRADE_INTRUSION_UNIT_FIRMWARE = 12549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UPGRADE_INTRUSION_UNIT_FIRMWARE = 12550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_HTTPFAILED_TOLISTEN = 12551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_HTTPSUCCEED_TOLISTEN = 12552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SQL_ALWAYSON = 12553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEN_BY = 12554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_GROUPING = 12555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_SHAPE = 12556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS_HIDE_EMPTY_LAYERS = 12557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOKMARK_NOT_SAVED_IN_ARCHIVER = 12558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUR = 12559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUR_LEVEL = 12560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPE = 12561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAINTENANCE_TURN_OFF = 12562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURN_ON = 12563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURN_OFF = 12564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_IN_CONFLICT = 12565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_IN_CONFLICT = 12566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_MODE_IS = 12567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_ENDTIME = 12568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP = 12569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP = 12570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_PASSWORD = 12571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_RTSP_NOT_SECURE = 12572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM_ACCESSIBLE_TO = 12573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IO_ZONE = 12574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IO_ZONE_DESCRIPTION = 12575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DISASTERRECOVERY = 12576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTBEHAVIOUR_WHEN_ACTIVE = 12577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTBEHAVIOUR_WHEN_INACTIVE = 12578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PASSWORD = 12579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SDK_ACCESS_1 = 12580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SDK_ACCESS_2 = 12581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_VIDEO_CODEC_MP4 = 12582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_AUDIO_CODEC_MP4 = 12583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_NAMED_CODEC_MP4 = 12584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_OVERLAY_REMOVED = 12585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IOZONE_INVALID_UNIT_TYPE_ONLY_SMC = 12586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_INPUTS = 12587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_OUTPUTS = 12588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_INACTIVE_COMPLEMENT = 12589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERT_TO = 12590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_SCHEDULE_EXCEPTION = 12591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAILSNAPSHOT = 12592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SQL_NATIVE_CLIENT_NOT_INSTALLED = 12593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MEDIA_SDK = 12594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLUGIN_SDK = 12595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_USE_GLOBAL_CATALOG = 12596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVER_CAMERA = 12597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGTOOL_AUTHORIZED_FORMAT = 12598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGTOOL_UNAUTHORIZED_FORMAT = 12599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AVAILABILITY_MONITOR = 12600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOUR = 12601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LBAEL_UPDATES_AVAILABLE = 12602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALL = 12603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE = 12604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAUTHORIZED = 12605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_UPDATES_INSTALL_NOW = 12606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES_WILL_BE_INSTALLED_FORMAT = 12607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACHINE_UNAUTHORIZED = 12608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_UNAUTHORIZED_ANYMORE_FORMAT = 12609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_COMPACT_RESTART = 12610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTART_COMPACT_MODE = 12611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPRGADED_COMPACT_TO_FULL = 12612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_UNIT = 12613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CONNECTIONSCOUNT = 12614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERASCOUNT = 12615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAILSNAPSHOT_COPIE = 12616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DUPLICATE_GROUP = 12617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_COLUMN = 12618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_THEN_BY = 12619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_ASCENDING = 12620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_DESCENDING = 12621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEB_CLIENT_ROLE_NAME = 12622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEB_CLIENT_ROLE_DESCRIPTION = 12623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_PRIVACY_AGREEMENT = 12624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_YES_MONITOR = 12625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_DO_NOT_MONITOR = 12626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_DESCRIPTION = 12627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALLOW_ANONYMOUS_DATA_REPORTING = 12628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_TIMEOUT = 12629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_SCALE = 12632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_CRITICAL = 12633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGON_FAILED = 12634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_PROPERTIES = 12635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ON_UNIT = 12636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_MUST_BE_RECORDING = 12637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_X_FIELD_REQUIRED = 12638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_INVALID_BOUNDS_X_Y = 12639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_INVALID_ENUMERATION = 12640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONFIGURATION = 12641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ON = 12642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_PARTITION = 12643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_RULE = 12644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_ACTIVATION = 12645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CAMERA = 12646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_TIME = 12647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_VISITORS = 12648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALS_INFO = 12649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILED_VIEW = 12650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_ACTIVITY = 12651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRING = 12652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TELL_US_WHAT_YOU_THINK = 12653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBSITE = 12654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP = 12655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUPS = 12656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBCLIENT = 12657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOST = 12658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTING = 12659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULES = 12660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_DESCRIPTION = 12661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDING = 12662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_SELECTED = 12663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_OUT = 12664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_VIEW = 12665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_PATTERN = 12666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GUIDE = 12667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LANGUAGE_CULTURE_NOT_FOUND = 12668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASK_AFTER = 12669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_EMAIL_ADDRESS = 12670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_CANNOT_EXCEED_X_CHARACTERS = 12671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_NAN = 12672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_IS_REQUIRED = 12673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_BETWEEN_X_Y = 12674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_INFORMATION_AVAILABLE = 12675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_NOT_SUPPORTED = 12676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERT_OUTPUT_BEHAVIOR_NORMAL_COMPLEMENT = 12677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_INACTIVE_TROUBLE = 12678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAMERAS_SELECTED = 12679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_AUDIT_METADATA = 12680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_COORDINATES = 12681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSERS_SUPPORTED = 12682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_DIRECTORY_OLD_VERSION = 12683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_UNTRUSTED_FED_CONNECTIONS = 12684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_SEARCH_FOR_RESULTS = 12685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTION = 12686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DBPROPERTIES = 12687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTARTING = 12688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVICEUNAVAILABLE = 12689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVICEUNAVAILABLEMSG = 12690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGGER = 12691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGTIME = 12692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGSEVERITY = 12693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREADID = 12694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREADNAME = 12695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMANDPARAMETERS = 12696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATEDUMP = 12697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATEDUMP = 12698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITDUMP = 12699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEMES = 12700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEME_DARK = 12701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEMES_LIGHT = 12702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGGERS = 12703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICES = 12704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMANDS = 12705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACELOGGER = 12706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_USERCOMMANDONLY = 12707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ACTIVELOGGERS = 12708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_TRACE = 12709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ADDSERVER = 12710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ASSEMBLY = 12711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_KILLSERVICE = 12712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATEDUMP = 12713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_REDIRECTMAIN = 12714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CANCELREDIRECTION = 12715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESTARTGENETECSERVER = 12716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESTARTGENETECSERVERQUESTION = 12717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TIME_INVALID = 12718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_HTTPSPORT = 12719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MODIDYGENETECSERVERPASSWORD = 12720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACCESS_SERVER_ADMIN = 12721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PLEASEUPGRADE = 12722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PLEASEUPGRADEPERFO = 12723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_NOTSUPPORTED = 12724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BROWSERSUPPORTED = 12725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BROWSERIE9 = 12726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FAILOVERDESC = 12727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_LOGFOLDER = 12728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_DELETEFILESAFTER = 12729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATEFILEAFTER = 12730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_LINES = 12731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_DEBUG = 12732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PERFORMANCE = 12733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_INFORMATION = 12734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WARNING = 12735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ERROR = 12736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FATAL = 12737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDEDSERVERS = 12738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONARCHIVER = 12739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONUNIT = 12740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_UPDATED = 12741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_CREATED = 12742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_CREATE_X = 12743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_UPDATE_X = 12744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_DELETE_X = 12745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_DELETED = 12746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_IMAGE = 12747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLYING_EFFECT = 12748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETTINGS_MULTIPLE_ENTITIES = 12749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_TOO_LARGE_MAX_X = 12750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_IMAGE_DIMENSIONS = 12751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENT = 12752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_TO_SAVE_LANGUAGE = 12753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_ERROR = 12754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_SET_AP_TO_APG = 12755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GROUP_SECURITY_VIOLATION = 12756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_SENT_TO_MEDIA_ROUTER = 12757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_ENTITIES_DELETED = 12758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_DELETE_ENTITIES = 12759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERAL_INVENTORY_ERROR = 12760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_RETRIEVING_LPR = 12761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASSIGNMENT_NOT_POSSIBLE = 12762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ETHERNET_CONNECTION_FAILED = 12763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_CUSTOM_IMAGE = 12764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_EXCEPTIONS_RELATED_TO_ERROR = 12765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOADING_FISHEYE_PARAMS = 12766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_SELECTED_TIME_CRITERIA = 12767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE = 12768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_PEER_TO_PEER = 12769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATION_FAILED = 12770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NB_ITEMS = 12771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNEXPECTED_ERROR = 12772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_PASSWORD = 12773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WRONGVERSION = 12774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_MINIMUM_USER_LEVEL = 12775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_PRIVILEGES_VIEW_MAP = 12776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IOZONE_BACWARD_COMPATIBILITY_ISSUE = 12777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_UNTRACE = 12778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENVIRONMENT = 12779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DATABASE = 12780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANT_ADD_UNIT_NO_INTRUSION = 12781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_SETTINGS = 12782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_ON = 12783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_OFF = 12784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_STARTINGDIRECTORY = 12785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_STOPPINGDIRECTORY = 12786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_ACKNOWLEDGED_ALTERNATE = 12787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RENAMING_ASF_FILE = 12788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_CANNOT_VERIFY_TCP = 12789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_ACCESSDENIED_TCP = 12790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_MESSAGE = 12791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSGAGE_STOP_DIRECTORY_UPGRADE = 12792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREAS = 12793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MAINTENANCE_MODE_ENDTIME = 12794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_MAINTENANCE_MODE_ENDTIME_DETAILS = 12795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_PRIORITY = 12796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROCEDURE_STEP_PROPERTIES = 12797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESETTRACELOGGERS = 12798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_IMPORTLOGGERCLIPBOARD = 12799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_EXPORTLOGGERCLIPBOARD = 12800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SHOWTRACELOGGERCONSOLE = 12801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEO_REFERENCE = 12802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_FACTOR = 12803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_AREA = 12804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PLAN = 12805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBSCRIPTION_LICENSE = 12806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDED_WITH_SUBSCRIPTION = 12807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANNUAL = 12808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTHLY = 12809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SUBSCRIPTION_EXPIRED = 12810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONNECTION = 12811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_CONNECT_SERVER = 12812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_DEFAULT = 12813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_NOT_ENOUGH_POINTS = 12814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_INVALID_POINTS = 12815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_GEOREFERENCE = 12816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLACE_MARKER = 12817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_MARKER = 12818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OWNERS = 12819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_INVALID_CODEC = 12820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_LPR_HIT = 12821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DELETE_HIT = 12822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETE_LPR_HIT = 12823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_HIT = 12824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_HIT_INFORMATION = 12825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_PROTECTED_HIT = 12826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_DELETE_HITS = 12827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_DELETE_HITS = 12828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EYE_DROPPER = 12829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIGHT_THEME = 12830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DARK_THEME = 12831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_SYSTEM_REPORT = 12832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CODE = 12833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHORIZATION_KEY = 12834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLINE_HELP = 12835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_CONNECTION_LOST = 12836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_SECURITY_CAMERA = 12837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_HERE = 12838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SESSION_ABOUT_TO_EXPIRE = 12839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_LOST_MEDIAGATEWAY = 12840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO_FOR_CAMERA = 12841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TILEPATTERN = 12842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CONNECTION_LOST = 12843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AREAVIEW = 12844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FILTERS = 12845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_VISITOR = 12846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CARDHOLDERGROUP = 12847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_CAMERAS = 12848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_EVENTTIMERANGE = 12849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_LOST_MEDIAGATEWAY_REFRESH = 12850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_FAILED_MEDIAGATEWAY = 12851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_MONITORING = 12852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_BOOKMARKS = 12853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_DOORACTIVITY = 12854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CARDHOLDERS = 12855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_VISITORS = 12856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CARDHOLDERGROUPS = 12857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CREDENTIALS = 12858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ZONE_ARMED = 12859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ZONE_DISARMED = 12860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_DOORS = 12861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_ALARMREPORT = 12862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_ENTITIES = 12863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENETEC_UPDATER_SERVICE_UNAVAILABLE = 12864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_SCHEDULE_TIME_FOR_UPDATES = 12865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_TO_UPDATE = 12866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_LOCATION = 12867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_ARCHIVES_FOR = 12868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_PERMISSIONS = 12869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_USE_PTZ = 12870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WELCOME_SECURITY_CENTER_COMPACT = 12871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADVANCED_SUPPORT_OPERATIONS = 12872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASSISTANCE_CONTACT_YOUR_INTEGRATOR = 12873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ENCRYPTION_KEY = 12874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_ENCRYPTION_KEY = 12875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SSLDISABLED = 12876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_ENTER_VALID_HOSTNAME = 12877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CURRENT_TIME = 12878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_WARNING_UNITOFFLINE = 12879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOCUMENTATION = 12880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SELECTED_MAP_LAYER_EXCEEDS_LIMIT = 12881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CONNECTION_SUBSCRIPTION_LICENSE = 12882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SERVEROFFLINE = 12883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_SPLASHSCREEN = 12884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_PARTITION = 12885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PTZ_SLIDER = 12886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALL_PRESETS = 12887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALL_PATTERNS = 12888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAMERA_REQUIRED = 12889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_REQUIRED = 12890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BOOKMARKS_PLAY = 12891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REPORT_EXPORT = 12892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_ERROR_SEE_LOG = 12893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_MOVE_UNIT = 12894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_FILE = 12895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PROTECT_LPR_EVENT = 12896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNPROTECT_LPR_EVENT = 12897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PROTECTION_EXPIRATION = 12898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNDOABLE_ACTION = 12899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEINFINITESESSION = 12900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGER_PAST_READ_MATCHING = 12901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_PAST_READ_MATCHING = 12902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TRIGGER_PAST_READ_MATCHING = 12903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_PAST_READ_MATCHING = 12904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALARM_REQUIRED = 12905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PATROLLER_LOCKDOWN = 12906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFY_GEO_REFERENCE = 12907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_GEO_REFERENCE = 12908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MEDIA_GATEWAY = 12909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MEDIA_GATEWAY = 12910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_HOTLIST_CHANGED = 12911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAG_PERMIT_INVALID_DATA = 12912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAG_PERMIT_INVALID_DATA_DETAILS = 12913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_KB2588507_HOTFIX = 12914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_ALARMS = 12915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_MAP_ITEMS_TO_SET_GEOREF = 12916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATE_CHANGE_NOT_POSSIBLE = 12917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPENWEBCLIENT = 12918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ATTEMPTING_TO_PLAY_MJPEG = 12919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MP4_LIMIT_REACHED = 12920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_LOST = 12921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_LOST = 12922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO_AVAILABLE = 12923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_SECURITY = 12924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTOPATTERN = 12925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAP_LAYER_DISABLED = 12926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRYING_TO_RECONNECT = 12927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SELECTED_KMZ_EXCEEDS_LIMIT = 12928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_EVENTS = 12929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PROTECT_LPR_EVENT = 12930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNPROTECT_LPR_EVENT = 12931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PROTECTED_INDEFINITELY = 12932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PROTECTED_UNTIL = 12933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_ERROR_FIREWALL = 12934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATECERTIFICATE = 12935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_CONNECTION_LIMIT_REACHED = 12936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_ON = 12937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_OFF = 12938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_AUTO = 12939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_DETAILS = 12940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROTATION_CHANGED_MOTION_DETECTION_LOST = 12941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULLHD = 12942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_BACKGROUND = 12943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYWEAK_DETAILS = 12944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_WEAK_DETAILS = 12945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_GOOD_DETAILS = 12946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_STRONG_DETAILS = 12947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYSTRONG_DETAILS = 12948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SERVERADMIN_NEEDS_UPDATE = 12949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_UNIT_WEB_PAGE = 12950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EVENTS_CURRENT_STATUS = 12951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EVENTS_HISTORY = 12952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_SSLCERTIFICATE_ERROR = 12953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CLEANUP_BACKUP_FILES = 12954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VIDEO_DEINTERLACING_UNAVAILABLE = 12955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVBR = 12956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRIVER_AND_FIRMWARE_VER = 12957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_DEPRECATEDHASH = 12958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_DEPRECATEDCRYPTO = 12959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_SECUREMODE_CONFIRMATION = 12960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG = 12961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG_FULL = 12962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG_HALF = 12963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXCLUDE_RESULTS_REPORT = 12964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_TO_BUILD_MAPPING_ENGINE = 12965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_AUTHENTICATION = 12966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_BWC_NAME = 12967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_BWC_DESCRIPTION = 12968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HOLDERS = 12969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE = 12970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_INVENTORY = 12971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_GLOBAL_ANTI_PASSBACK = 12972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_SELECTED = 12973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_IGNORE_REX_AFTER_CLOSE_CONFIGURATION_ERROR = 12974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESET_INVENTORY = 12975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_INVENTORY = 12976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GENETEC_VIDEO_PLAYER = 12977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_DYNAMIC_FPS = 12978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNSUPPORTED_SD_64 = 12979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SUPPORTED_SD_32 = 12980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_MAX_CHARACTERS = 12981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_CAPACITY = 12982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_LPRMANAGER = 12983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_HOTLIST = 12984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_MAX_INVENTORY_DURATION = 12985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_PARKING_RULES = 12986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_DEFAULT_EXPIRATION_DELAY = 12987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_ENABLE_PBP_SYNC = 12988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_FREE_PARKING_PERIOD = 12989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_GRACE_PERIOD = 12990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_PERMIT = 12991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK_PARKING_MONITORING = 12992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_MONITORING = 12993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_FULL_UPDATE = 12994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_PARTIAL_UPDATE = 12995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_REFRESHING = 12996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_CLICK_TO_REFRESH = 12997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_COUNTDOWN = 12998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_ZONE_NAME = 12999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_CAPACITY = 13000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VEHICLE_COUNT = 13001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_OCCUPANCY_PERCENT = 13002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VIOLATIONS = 13003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VIOLATIONS_PERCENT = 13004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_ZONE = 13005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_ZONES = 13006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PARKING_ZONES = 13007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_RULE = 13008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_RULES = 13009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PARKING_RULES = 13010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_PARKING_ZONES = 13011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PARKING_ZONES = 13012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PARKING_ZONES = 13013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PARKING_ZONES = 13014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PARKING_ZONES = 13015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PARKING_ZONES = 13016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PARKING_ZONES = 13017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PARKING_ZONES = 13018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_INVENTORY_RESET = 13019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_INVENTORY_RESET = 13020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_UPDATE_INLOT_VIOLATIONS = 13021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_UPDATE_INLOT_VIOLATIONS = 13022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_MONITORING_TASK = 13023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_MONITORING_TASK = 13024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SESSION_ACTIVITY_REPORT = 13025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SESSION_ACTIVITY_REPORT = 13026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SESSIONS_REPORT = 13027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SESSIONS_REPORT = 13028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_INVENTORY_REPORT = 13029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_INVENTORY_REPORT = 13030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_TIME_RANGE = 13031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_CONTROLS = 13032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_SETTINGS = 13033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_DURATION_OF_STAY = 13034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_STAY = 13035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_TIME = 13036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_ZONE_COUNT = 13037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_MANAGEMENT = 13038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_ZONE = 13039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DIRECTORY_CERTIFICATE_NOT_FULLY_TRUSTED = 13040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DIRECTORY_CERTIFICATE_MANUALLY_TRUSTED = 13041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_BACKWARD_COMPATIBILITY_MODE = 13042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_PLUGIN = 13043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_APPLICATION = 13044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_CANNOT_MODIFY_VAULT = 13045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_ZONE_RETENTION = 13046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_OCCUPANCY_RETENTION = 13047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INCIDENTMANAGER = 13048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_PARKING_ZONE_RULES = 13049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PARKING_ZONE_RULES = 13050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PARKING_ZONE_RULES = 13051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PARKING_ZONE_RULES = 13052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PARKING_ZONE_RULES = 13053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PARKING_ZONE_RULES = 13054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PARKING_ZONE_RULES = 13055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PARKING_ZONE_RULES = 13056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE = 13057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGIS_ONLY = 13058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_2_AND_UP = 13059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_3_AND_UP = 13060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE_SYNC = 13061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_LPR_DEVICES = 13062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAX_INVENTORY_DURATION = 13063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CONVENIENCE_TIME = 13064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GRACE_PERIOD = 13065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DEFAULT_EXPIRATION_DELAY = 13066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MISSING_LPR_MANAGER = 13067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_EXIT_AND_ENTRANCE = 13068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_EXIT = 13069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_ENTRANCE = 13070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_TO_PLAY_SOUND = 13071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TIME_ZONE_NOT_SYNCED = 13072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_BACK_TIME = 13073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_LPR_DEVICES = 13074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_LPR_DEVICES = 13075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATED = 13076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIOLATIONS_AMOUNT = 13077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_CAMERAS_ATTACHED = 13078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_ALARM = 13079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_ALARM = 13080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_SOURCE_ENTITY = 13081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_DOORACTIVITY = 13082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_WITHOUT_CAMERA = 13083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_DOORACTIVITY = 13084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_HOSTNAME_IP = 13085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_WITH_USERNAME = 13086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_CONTROLS = 13087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_HOSTNAME_OR_IPADDRESS = 13088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE_ENTITY_TYPE = 13089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_PATH_ACCESS_DENIED = 13090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_UNABLE_TO_LOAD = 13091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_BASICAUTHENTICATION_DISABLED = 13092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_BOOKMARK = 13093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_POSTMATCHED_STATUS = 13094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTMATCHED_STATUS_POSTMATCHED = 13095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTMATCHED_STATUS_NOTPOSTMATCHED = 13096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAINTENANCE_INDEFINITELY = 13097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PTRZCALIBRATION = 13098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PREVIOUS_YEAR = 13099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NEXT_YEAR = 13100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_X = 13101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_CONVENIENCE_TIME_EXCEEDED = 13102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_ENTRY = 13103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT = 13104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_INVENTORY_RESET = 13105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_MAX_CAPACITY = 13106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_RULE_INVALID = 13107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_RULE_VALID = 13108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION = 13109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_ENFORCED = 13110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_UNKNOWN = 13111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_CONSECUTIVE_ENTRY = 13112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_INVENTORY_RESET = 13113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_MAX_DURATION = 13114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY = 13115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DISCOVERY_NAME = 13116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DISCOVERY_DESCRIPTION = 13117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_BRIGHTNESSCONTRAST = 13118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_ENTERED_TIMESTAMP = 13119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_EXITED_TIMESTAMP = 13120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_ENDED_TIMESTAMP = 13121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_TIMESTAMP = 13122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_ENFORCED_TIMESTAMP = 13123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_TIME_DURATION = 13124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_PAID_DURATION = 13125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_DURATION = 13126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_ENFORCED_DURATION = 13127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_TIME_TIMESTAMP = 13128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_PAID_TIMESTAMP = 13129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_GRACE_PERIOD_TIMESTAMP = 13130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_GRACE_PERIOD_DURATION = 13131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_TOTAL_DURATION = 13132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_READ = 13133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_READ = 13134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_PLATE = 13135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_CONTEXT_IMAGE = 13136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_LPR_IMAGE = 13137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_PLATE = 13138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_CONTEXT_IMAGE = 13139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_LPR_IMAGE = 13140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_ADDED = 13141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_REMOVED = 13142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LAYER_ADDED = 13143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LAYER_REMOVED = 13144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LINK_SETTING_MODIFIED = 13145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_VIEW = 13146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_ACTIVE = 13147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_VIOLATION = 13148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SELECTION = 13149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_STATE = 13150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_SESSIONS = 13151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING_WARNING = 13152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_STATE_MODIFIED = 13153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL = 13154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_SOFT_LIMIT = 13155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_HARD_LIMIT = 13156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MAP_PROVIDER_CHANGE = 13157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING_WARNING_ROLE = 13158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_ZONE_ACTIVITIES = 13159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_NOT_AVAILABLE_GIF = 13160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISCOVER_INTERFACES = 13161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTP_PORT = 13162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN = 13163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNPIN = 13164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEADER_FIELDS = 13165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GROUPING_SWITCH_SIMPLE_VIEW = 13166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_CHECKOUT_X = 13167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNPROTECTED = 13168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LINK_MODIFIED = 13169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TIME_RANGE = 13170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_MAX_ZOOM = 13171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_RANGE_MULTICAST_PORT_EVEN = 13172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED = 13173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CONVENIENCE_TIME = 13174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD = 13175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME = 13176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME = 13177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETED = 13178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PAID_TIME_EXPIRED = 13179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_GRACE_PERIOD_EXPIRED = 13180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PAID_TIME_GRANTED = 13181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_NO_PAID_TIME_GRANTED = 13182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PBP_SERVER_ISSUE = 13183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DUMP_FILE = 13184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_INTERFACE = 13185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IDENTIFIER_NOT_FOUND = 13186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED = 13187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_RESULTS_MAXIMUM_REACHED = 13188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CONFIGURE_PTZ_DRIVER = 13189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SCHEDULE_COVERAGETYPE = 13190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_EXTERIOR_CAMERAS = 13191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_EXTERIOR_CAMERAS_DETAILS = 13192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_OFFLINE = 13193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_OFFLINE_DETAILS = 13194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_FAULTED_CAMERAS_EXIST = 13195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_FAULTED_CAMERAS_EXIST_DETAILS = 13196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_WORKING = 13197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_WORKING_DETAILS = 13198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_NO_CAMERAS_ASSIGNED = 13199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_NO_CAMERAS_ASSIGNED_DETAILS = 13200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_ENTRANCE_CAMERAS = 13201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_ENTRANCE_CAMERAS_DETAILS = 13202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_EXIT_CAMERAS = 13203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_EXIT_CAMERAS_DETAILS = 13204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_ERROR = 13205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_ERROR_DETAILS = 13206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_WORKING = 13207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_WORKING_DETAILS = 13208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_ERROR = 13209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_ERROR_DETAILS = 13210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_WORKING = 13211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_WORKING_DETAILS = 13212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_CAMERAS = 13213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_VEHICLES = 13214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_ENFORCEMENT = 13215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED_UNKNOWN_VEHICLE_EXIT = 13216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED_VEHICLE_ENTERED = 13217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD_CONVENIENCE_TIME_EXPIRED = 13218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD_PAID_TIME_INVALID = 13219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_CONVENIENCE_TIME_EXPIRED = 13220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_PAID_TIME_EXPIRED = 13221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME_PAID_TIME_VALID = 13222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME_PBP_SERVER_ISSUE = 13223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_CONVENIENCE_TIME_EXCEEDED = 13224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_GRACE_PERIOD_EXPIRED = 13225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_PAID_TIME_INVALID = 13226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_INVENTORY_RESET = 13227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_MAX_INVENTORY_DURATION = 13228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_VEHICLE_EXITED = 13229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_VEHICLE_REENTERED = 13230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AXIS_DECODERS_MUST_USE_HTTPS = 13231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARKINGZONE = 13232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARKINGZONERULE = 13233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_EVENT_FOR = 13234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_ENTERED_FROM = 13235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_EXITED_FROM = 13236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_MONITORING_COLOR = 13237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PAST_READ_MATCHING = 13238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PAST_READ_MATCHING_DAYS = 13239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_DIGITAL_PTZ = 13240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_INVALID_URL = 13241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_ZONE_ACTIVITIES = 13242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_ZONE_SESSIONS = 13243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATCORPORATE1000_48BIT = 13244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SUPERVISORIN_ACCESS_RULE = 13245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SUPERVISORIN_UNLOCKING_SCHEDULE = 13246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROOT_PASSWORD = 13247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_PARKING_ZONE_INVENTORY = 13248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_SERVICE_OFFLINE = 13249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_TIME_NOT_MONOTONIC_MP4 = 13250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_PARTIALLY_COMPLETED = 13251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPERTY = 13252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PBP_SYNC_INFORMATION = 13253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_LOADING_PARKING_SESSION = 13254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_RESET_PARKING_ZONE_INVENTORY = 13255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACEDISCOVERY_CONFIRMATION = 13256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_GRACE_PERIOD_ENDS = 13257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CONVENIENCE_TIME_ENDS = 13258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_PAID_TIME_ENDS = 13259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_IMAGE_SOURCE = 13260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_UNIT_CONFIGURED = 13261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPEN_CONFIGURATION_WEB_PAGE = 13262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVED = 13263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_SAVE = 13264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETTOURS = 13265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STARTPRESETTOUR = 13266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STOPRESETTOUR = 13267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTPRESETTOUR = 13268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPPRESETTOUR = 13269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_NOT_SET = 13270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELOG_FOR_CHANGES = 13271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETTOUR = 13272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_STOPALLPRESETTOURS = 13273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATE_MAP_PROVIDER = 13274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SERVER = 13275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_OCCUPANCY_LAST_UPDATED_AT = 13276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SENTENCE_AN_UPDATE_IS_AVAILABLE = 13277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SOFTWARE_UPDATE_AVAILABLE = 13278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SENTENCE_UPDATE_FOR_X_VERSION_Y_IS_AVAILABLE = 13279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SYSTEMMANAGEMENT_GROUP = 13280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWROLES = 13281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYROLES = 13282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDROLES = 13283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEROLES = 13284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUSERS = 13285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUSERS = 13286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDUSERS = 13287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEUSERS = 13288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUSERGROUPS = 13289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUSERGROUPS = 13290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDUSERGROUPS = 13291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEUSERGROUPS = 13292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSERVERS = 13293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSERVERS = 13294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETESERVERS = 13295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWNETWORKS = 13296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYNETWORKS = 13297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDNETWORKS = 13298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETENETWORKS = 13299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWPARTITIONS = 13300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYPARTITIONS = 13301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDPARTITIONS = 13302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEPARTITIONS = 13303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESILIENTCONNECTION = 13304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECONNECTIONTIMEOUT = 13305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FUSIONSTREAM = 13306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FUSIONSTREAMS = 13307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_FUSIONSTREAM = 13308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_RANGE = 13309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_TIME = 13310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STARTED = 13311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STOPPED = 13312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STOPPED_UNEXPECTEDLY = 13313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTORUNMODE = 13314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATIONTIME = 13315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWINGMODE = 13316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENABLEAUTORUN = 13317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DISABLEAUTORUN = 13318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARKING_SESSION_REPORT_SPECIFICTIME_INFO = 13319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARKING_SESSION_REPORT_TIMERANGE_INFO = 13320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWING = 13321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSIONS_SPECIFIC_TIME_AT = 13322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERTED = 13323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEARING = 13324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_PARKING_SESSION_ON = 13325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_LOADED = 13326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_UNABLE_LOAD = 13327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_MISSING = 13328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_STATUS = 13329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_UPGRADE = 13330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_PICTURE = 13331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UPGRADE_FIRMWARE = 13332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODEC_CONFIGURATION = 13333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYMAPLAYERS = 13334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFYMAPLAYERS = 13335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCH_TOLERANCE_THRESHOLD = 13336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_MISSING_DETAILS = 13337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_TO = 13338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_INTRUSION_UNIT_STAGING = 13339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PAYBYPLATE_PORT = 13340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PAYBYPLATE_SERVER = 13341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_FIRMWARE_UPGRADES = 13342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM_CONTENT = 13343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_FILES = 13344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_LAYERS = 13345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SORT_LAYERS = 13346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURE_SERVERS = 13347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LAYOUTS = 13348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_INSUFFICIENT_PRIVILEGES = 13349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_SAVED = 13350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_SAVE_FAILED = 13351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_LOADED = 13352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_LOAD_FAILED = 13353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_DELETED = 13354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_DELETE_FAILED = 13355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_UPDATED = 13356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_UPDATE_FAILED = 13357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_LAYOUT = 13358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYOUT_NAME = 13359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME_LAYOUT = 13360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_MATCHERNOTREADY = 13361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PAYPROVIDERERROR = 13362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PERMITNOTCONFIGURED = 13363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PERMITNOTFOUND = 13364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_REQUESTTIMEOUT = 13365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_UNEXPECTEDERROR = 13366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_UNREACHABLE = 13367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_TIME_OUT = 13368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_UNEXPECTEDERROR = 13369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PBP_CONNECTION_ESTABLISHED = 13370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PBP_CONNECTION_UNREACHABLE = 13371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOPAN_SPEED = 13372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOPAN_TILTANGLE = 13373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODEC_CONFIGURATION_DESCRIPTION = 13374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_COMPATIBLE_EXTENSIONS = 13375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSCH_ROTATION_MIRRORIMAGE = 13376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIMERANGE_EXCEEDS_MINUTE_LIMIT = 13377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_RENAMED = 13378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_RENAME_FAILED = 13379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CANCEL_FIRMWARE_UPGRADES = 13380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_COLOR = 13381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRMWARE_UPGRADE_FILE = 13382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_TIMERANGE_END_BEFORE_START = 13383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTED_AT = 13384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETED_AT = 13385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION = 13386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VEHICLE_PARKING_SESSION = 13387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY_UPGRADE_UNTIL = 13388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIFFERENT_VERSIONS = 13389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_SELECTED = 13390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEARABLE = 13391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT = 13392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_FIRMWARE = 13393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_FIRMWARE = 13394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_KIWI_MODULE = 13395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_ARCGIS = 13396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FREQUENCY = 13397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_CROWD_DETECTED = 13398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_FACE_RECOGNIZED = 13399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_HEAT_MAP_CHANGED = 13400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_DETECTED = 13401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_COUNT_CHANGED = 13402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_DIRECTION_CHANGED = 13403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_IGNORED = 13404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_VELOCITY_CHANGED = 13405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DOWNLOAD = 13406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COMPLETING = 13407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PREPARING = 13408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READYTODOWNLOAD = 13409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_FILENAME = 13410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED_PARKING_SESSION = 13411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_VIOLATION_PARKING_SESSION = 13412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PARKING_OCCUPANCY = 13413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PARKING_HIGH_RES_IMAGES = 13414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_ERROR = 13415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_ERROR_GENERIC_DETAILS = 13416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_BANDWIDTH_LIMIT_EXCEEDED = 13417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_ADVANCED_LICENSE_OPTIONS = 13418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ADVANCED_LICENSE_OPTIONS = 13419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_BASIC = 13420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_STANDARD = 13421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_PARAMETERS = 13422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_CODE = 13423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLIENT_ID = 13424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM = 13425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CAMERA_RELATIVE_MOTION = 13426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACH_AS_ENTER = 13427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACH_AS_EXIT = 13428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_VALUE_CHANGE_SIMPLE = 13429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_FAILED = 13430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_PARTIALLY_FAILED = 13431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_SUCCESS = 13432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_PARTIALLY_FAILED_FOR_ONE_CAMERA = 13433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_SUCCESS_FOR_ONE_CAMERA = 13434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NOT_ENOUGH_SPACE = 13435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NO_PATH_AVAILABLE = 13436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_CONSOLIDATION_MANUAL_START = 13437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_CONSOLIDATION_MANUAL_STOP = 13438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_CONSOLIDATION_MANUAL_START = 13439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_CONSOLIDATION_MANUAL_STOP = 13440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CARDHOLDERS = 13441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CREDENTIALS = 13442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_SUCCESS = 13443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_FAILED = 13444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_PARTIALLY_FAILED = 13445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDHOLDERS_FILTER_IS_UNAVAILABLE = 13446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CREDENTIALS_FILTER_IS_UNAVAILABLE = 13447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACHING = 13448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVING_AWAY = 13449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_RELATIVE_MOTION_DESCRIPTION_TITLE = 13450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION = 13451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION_APPROACHING = 13452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION_MOVING_AWAY = 13453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_SESSION = 13454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_CLOSE_SESSION = 13455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_CLOSE_SESSION = 13456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ENFORCE_IN_LOT_VIOLATIONS = 13457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_LIMITVIEWAREA = 13458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_RESILIENCY_NOTSUPPORTED = 13459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_RESILIENCY_RECOVERINGCONNECTION = 13460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURE_MODE_NOT_SUPPORTED = 13461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORED = 13462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SMART_CARD_ENCODING = 13463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_FIRMWARE_UPGRADE = 13464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STARTED_MANUAL_P = 13465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STOPPED_MANUAL_P = 13466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RECORDING_MANUAL_START = 13467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RECORDING_MANUAL_STOP = 13468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_FOLDER_INITIALIZATION_ERROR_DETAILS = 13469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOO_MANY_INVALID_LOGIN_ATTEMPTS = 13470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_MAPS_FOUND = 13471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_GROUP = 13472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_CUSTOM_FIELD = 13473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_EVENTS = 13474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ACTIONS = 13475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_LOGICAL_ID = 13476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_PASSWORD_SETTINGS = 13477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ACTIVITY_TRAIL = 13478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_GENERAL_SETTINGS_ACTIVITY_TRAIL = 13479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_AUDIO = 13480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_INCIDENT_CATEGORIES = 13481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_FEATURES = 13482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LANE_DIRECTION = 13483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_IGNORE_MOTION = 13484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_APPROACHING_MOTION = 13485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_MOVING_AWAY_MOTION = 13486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_EXIT_APPROACH_TO_ENTER = 13487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_IGNORE_MOTION = 13488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_APPROACHING_MOTION = 13489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_MOVING_AWAY_MOTION = 13490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_EXIT_APPROACH_TO_EXIT = 13491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_SELECT_DETAILS = 13492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_RELATIVE_MOTION_INTRO = 13493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_READER = 13494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_FOLDER_ITEM = 13495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_SELECTED_ITEM = 13496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_DISABLED_INVALID_SETTINGS = 13497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_UNAVAILABLE = 13498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE = 13499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PROCEED_FIRST_LOGON_UNSAFE = 13500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_LOGON = 13501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IDENTITY_SERVER_NOT_VERIFIED_FIRST_LOGON = 13502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DESTINATION_SUBFOLDER_OF_SOURCE = 13503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGES_SAVED_TO = 13504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLERS_FIRMWARE_UPGRADE = 13505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODE_BEFORE_ENROLLMENT = 13506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STID_USB_READER = 13507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_SENT = 13508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_MANDATORY_FIELDS = 13509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PLATELIST_MISSING_MANDATORY_FIELD = 13510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PLATELIST_CONFLICTING_ROWS = 13511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVEAWAY_AS_ENTER = 13512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVEAWAY_AS_EXIT = 13513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_STATE_REASON = 13514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_RESTRICTED_CAMERAS = 13515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECT_TO = 13516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEPLATE_CREDENTIALEXACTMATCH = 13517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_SMART_CODEC = 13518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_SERIALNUMBER = 13519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_VERSION = 13520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_DISCOVERYPORT = 13521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_TESTED_DISCOVERYPORT = 13522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_NETWORKSETTINGS = 13523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_PROCESSED_HARDWAREMODEL = 13524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_INITIALIZED_HARDWARE = 13525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_RESOLVING = 13526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_RESOLVED = 13527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_UNRESOLVED = 13528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIMERANGE_EXCEEDS_HOUR_LIMIT = 13529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_CANNOT_EXCEED_X_HOURS = 13530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_DURATION = 13531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_UNKNOWN_VEHICLE = 13532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_TOOMANYCONCURRENTREQUESTS = 13533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_REQUESTTHROTTLED = 13534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DEVICE_BROWSER_INFO = 13535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPACITY_THRESHOLD = 13536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FAILED_REASON = 13537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_TRANSFER_FILE_FAILED = 13538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_EXTRACT_FAILED = 13539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_INSTALL_FAILED = 13540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_PATH = 13541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_UNABLE_START = 13542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_UNIT_MOVED = 13543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_WRONG_FILE = 13544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_DOWNGRADE = 13545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CAPACITY_THRESHOLD_EVENT_DESCRIPTION = 13546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_ACTIVE_PARKING_SESSIONS = 13547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_VIOLATION_PARKING_SESSIONS = 13548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_REVOKED = 13549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_EXPIRED = 13550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_UNTRUSTED_ROOT = 13551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_DNS_MISMATCH = 13552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_ENTITY_TYPE_CANNOT_BE_SHARED = 13553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_CANNOT_MODIFY_OFFLINE_SHARED_ENTITY = 13554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MULTIPLE_PARKING_VIOLATIONS_CONFIRMATION = 13555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_CANNOT_BE_UNDONE = 13556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADMIN_PASSWORD_REQUIRED = 13557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROOT_PASSWORD_REQUIRED = 13558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED_SECURE = 13559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROOT_PASSWORD_REQUIRED_SECURE = 13560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED_UPGRADE = 13561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN_ON_MAP = 13562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN_ON_SCREEN = 13563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_OFFLINE = 13564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_MODIFIED = 13565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ARCHIVER_SELECTED = 13566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED = 13567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_INFORMATION = 13568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_OFFLINE_SHARED_PARTITION_CONTENT_MODIFIED = 13569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENABLE_LAYER = 13570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_MANUAL_ENROLLMENT_REFUSED = 13571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ENROLLMENT_REFUSED = 13572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_LOADED_ESRI_MAP_ENGINE = 13573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_RESTRICTED = 13574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CAMERA = 13575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_UNSELECTED = 13576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_UNSELECTED_DETAILS = 13577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VERIFY_ARCHIVER_STATE = 13578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_LOGIN_FORBIDDEN = 13579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_LAYOUT = 13580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTRA = 13581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_PARKING_ACTIVITIES_ON = 13582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_FIRMWARE_UPGRADE_SCHEDULED = 13583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_FIRMWARE_UPGRADE_CANCELED = 13584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIOLATION_REASON = 13585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEDEFAULTWEBPORT = 13586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILED_QUERY_PARKING_READS = 13587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILED_QUERY_PARKING_DATA = 13588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_STATUS = 13589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CHANGED = 13590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CHANGED_SUBTEXT = 13591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CHANGE_ARCHIVER = 13592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_YES_CHANGE_ARCHIVER = 13593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_DATA_POINTS = 13594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_OPERATOR_CONNECTIONS = 13595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_TYPES = 13596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_DOCUMENTS = 13597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_EXPORT = 13598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_RULES_ENGINE = 13599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_WORKFLOWS = 13600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_LINKING = 13601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_OPERATING_PROCEDURES = 13602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_FORMS = 13603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_CASE_MANAGEMENT = 13604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_SOPS = 13605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ESCALATION_PROCESS = 13606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_DOCUMENT_MANAGEMENT = 13607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_SUPERVISORS = 13608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_DASHBOARDS = 13609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_MOBILE_USERS = 13610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSER_NOT_SUPPORTED = 13611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DASHBOARD = 13612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ADVANCED_REPORTING = 13613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_NEW_FOLDER = 13614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PARKING_RULE = 13615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECTED_ITEMS = 13616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IN_WARNING = 13617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SNAPSHOT = 13618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_NOT_CONNECTED = 13619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_UNIT = 13620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEDERATED_ESRI_MAP_NOT_SUPPORTED = 13621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_BROWSE_REMOTE_DATABASE_SERVER = 13622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WISE_STREAM = 13623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_WEBCLIENTROLE = 13624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_WARNING = 13625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK_CANT_BE_DISPLAYED = 13626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREPARE_DOWNLOAD = 13627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PREPARING_DOWNLOAD = 13628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DOWNLOAD_VIDEO = 13629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_CSV = 13630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT_MAXIMUM = 13631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_DURATION_CANNOT_EXCEED_X_HOURS = 13632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORTING_VIDEO_FILE = 13633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WEBCLIENT_APPLICATIONPATH_ERROR = 13634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_EXCEPTIONREPORT = 13635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PARKING_PBP_CONFIG = 13636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PARKING_EXPORT_FOLDER_CONFIG = 13637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWAREUPGRADE_CONFIRMATION = 13638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_CONFIRMATION = 13639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_SPLASHSCREEN = 13640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_MONITORING = 13641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_BOOKMARKS = 13642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_DOORACTIVITY = 13643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_ALARMREPORT = 13644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CARDHOLDERS = 13645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_VISITORS = 13646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CARDHOLDERGROUPS = 13647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CREDENTIALS = 13648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_WEARABLE_CAMERA = 13649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_FILTERS = 13650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOWNLOAD_VIDEO = 13651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_NOTIFICATIONS = 13652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_WILL_BE_AUTOMATICALLY_GENERATED = 13653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_IN_PROGRESS = 13654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAPTURE_INPROGRESS = 13655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_READY_TO_BE_ENCODED = 13656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_NOT_READY_TO_BE_ENCODED = 13657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FIRMWARE_UPRADE_INTERFACES = 13658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_ACCESS_DISRUPTION = 13659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_OPERATOR_INITIALIZATION_ERROR = 13660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_PARKING_RULE_ADDITIONS = 13661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_PARKING_RULE_REMOVALS = 13662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SLOW_MOTION = 13663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SESSION_TIMED_OUT = 13664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SESSION_EXPIRING = 13665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOUND_FILE_NOT_FOUND = 13666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EDIT_FAILED = 13667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_MAP_ITEMS_TO_CLEAR_GEOREF = 13668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_80KBPS = 13669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_DOOR_EXPLICITLY = 13670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DOOR_EXPLICITLY_UNLOCKED = 13671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_RESOLUTION_WARNING = 13672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DEFAULT_PARKING_RULE = 13673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_G64_FORMAT_LONG_NAME = 13674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INITIALIZE_CONFIGURATION = 13675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIGURATION_INITIALIZED = 13676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_INITIALIZE_CONFIGURATION = 13677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BIND_CERTIFICATE = 13678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CERTIFICATE_BOUND = 13679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_BIND_CERTIFICATE = 13680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DETAILS_UNABLE_TO_BIND_CERTIFICATE_TO_PORT = 13681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_HOST = 13682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOST_STARTED = 13683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_HOST = 13684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DETAILS_HOST_CONFIGURATION = 13685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_HOST_HTTPS_DISABLED = 13686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_START_HOST_HTTPS_DISABLED = 13687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_HOST_HTTPS_DISABLED = 13688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_WEBCLIENT = 13689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_STARTED = 13690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_STARTED_WITH_ERRORS = 13691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_WEBCLIENT = 13692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_RETREIVE_VIDEO_EXPORT_FOLDER = 13693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_CREATE_VIDEO_EXPORT_FOLDER = 13694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START = 13695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNSUPPORTED_CAMERA_TYPE = 13696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_MUSTCHANGEPASSWORD = 13697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_AUX_ARCHIVE_RECORDING = 13698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PORT_ALREADY_IN_USE = 13699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_UNKNOWN = 13700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPLACE_LAYOUT = 13701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXISTING_SESSION_OPENED = 13702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EXPORT_DETAILS = 13703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_EXPORT_DETAILS = 13704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COOKIES_MUST_BE_ENABLED = 13705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ANTIPASSBACK_NOTSUPPORTEDBY_ELEVATOR = 13706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_INTERLOCK_NOTSUPPORTEDBY_ELEVATOR = 13707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DETAILS_PEOPLECOUNT_NOTSUPPORTEDBY_ELEVATOR = 13708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_DETAILS = 13709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMAGE_EXPORT_TIMEOUT = 13710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATION_COOKIE_NOT_SET = 13711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_CLOCK_NOT_SYNCED = 13712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_SSLDISABLED = 13713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EVENT_TO_LOCATION_ON_DATE = 13714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_BROWSER = 13715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATION_GLOBAL_CREDENTIAL = 13716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_BELOW_RECOMMENDED = 13717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAM_ROUTE = 13718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAM_ROUTE = 13719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_STREAM_LIMIT_REACHED = 13720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_SECURITY_DEMAND_FORMAT = 13721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_DO_NOT_ASK_AGAIN = 13722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_WARNING = 13723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTE = 13724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOT_EXECUTE = 13725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOWNLOAD_CREATING_VIDEO = 13726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_TOO_LARGE_MAX_X_KB = 13727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TILELAYOUT = 13728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_TILELAYOUT = 13729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SAVE_AS_TILELAYOUT = 13730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_TILELAYOUTS = 13731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TILELAYOUTS = 13732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_TILELAYOUTS = 13733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TILELAYOUTS = 13734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_TILELAYOUTS = 13735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_TILELAYOUTS = 13736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TILELAYOUTS = 13737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TILELAYOUTS = 13738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE = 13739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_OVERWRITE_TILELAYOUT = 13740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAM_STATISTICS = 13741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAM_STATISTICS = 13742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EDIT_READ = 13743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTING = 13744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTFAILED_FORMAT = 13745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTFAILED = 13746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_OVERWRITE_TILELAYOUT_PARTITION = 13747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_NODATACOLLECTION_TOOLTIP = 13748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ANONYMOUSDATACOLLECTION_TOOLTIP = 13749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_YESDATACOLLECTION_TOOLTIP = 13750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DISK_USAGE_REACHED_CONFIGURED_MAX = 13751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DATABASE_USAGE_REACHED_CONFIGURED_MAX = 13752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE_DIRECTORY = 13753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE_EXPANSION = 13754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DECODER_PERFORMANCE_LOW = 13755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_ARCHIVE_CONSOLIDATION = 13756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_HIGH = 13757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_LOW = 13758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_ONESHOT = 13759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_WASHER = 13760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_OFF = 13761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_ON = 13762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_OFF = 13763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO1 = 13764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO2 = 13765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO3 = 13766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ARCHIVE_CONSOLIDATION_GROUP = 13767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER__X__VERSION__Y__IS_TOO_OLD = 13768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPES = 13769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_RETRIEVE_TILE_IMAGES = 13770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GO_TO_SPECIFIC_DATE_TIME = 13771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_DURATION_CANNOT_BE_UNDER_X_SECONDS = 13772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_CHANGE_BG = 13773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPLACE_ITEMS_CHANGE_BG = 13774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORIMAGESIZE = 13775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CROPSENSOR = 13776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WS_DISCOVERY = 13777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_HOSTNAME_CHANGE_NOT_HANDLED = 13778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_SETTINGS_AUTOMATICALLY_CONFIGURED = 13779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_TILELAYOUT = 13780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OVERWRITE_TILELAYOUT = 13781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PASSWORD_REQUIREMENTS_NOT_MET = 13782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_PATROLLER = 13783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWSEQUENCE = 13784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_SETTINGS_NOT_MODIFIABLE = 13785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_SETTINGS = 13786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONVERT_EXPORTED_FILES = 13787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONVERT_EXPORTED_FILES = 13788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_ALARM_CONTEXT = 13789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EDIT_ALARM_CONTEXT = 13790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARM_CONTEXT_EDITED = 13791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_ALARM_CONTEXT = 13792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ALARM_CONTEXT = 13793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEXT_FILE_DATE_ORDER = 13794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DATES = 13795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIGINAL_ENTITY_NAME = 13796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNC_ENTITY_NAME_WITH_ORIGINAL_NAME = 13797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENTUSERSEQUENCES = 13798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MESSAGE_RESTORE_ENTITY_ORIGINAL_NAME = 13799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SAVEASUSERSEQUENCE = 13800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_PROBLEM = 13801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSTIME = 13802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROCESSOR_NAME = 13803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROCESSOR_DESCRIPTION = 13804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_OPEN_WEB_BROWSER = 13805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REDUCING_DATA_RETENTION_PERIOD = 13806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION = 13807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_CONTEXT_CHANGED = 13808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_CONTEXT_CHANGED_OVERWRITE = 13809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_ORIGINAL_INITIATOR_ENTITY_NAME = 13810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_FROM_AREA = 13811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PIE_CHART = 13812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOUGHNUT_CHART = 13813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNS_CHART = 13814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STACKED_COLUMNS_CHART = 13815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROWS_CHART = 13816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STACKED_ROWS_CHART = 13817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINES_CHART = 13818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_X_AXIS = 13819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_SHOW = 13820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPLIT_BY = 13821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_TOTAL = 13822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARTS = 13823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_X = 13824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHART_TOO_MUCH_DATA = 13825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_HOUR = 13826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_WEEK = 13827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_MONTH = 13828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_YEAR = 13829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_CHARTS = 13830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_DATA = 13831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_GRAPH = 13832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_TO_EXPORT = 13833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_OTHERS = 13834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRAPH_EXPORTED_TO_LOCATION = 13835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_READ_EDITED = 13836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_SELECTED_TO = 13837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_ALL_TO = 13838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_CONFIGS = 13839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_STAGING_CONFIG = 13840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEPLOY_STAGING_CONFIG_CONFIRM = 13841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_REFRESH = 13842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_PORT = 13843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_PATH = 13844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEST_FOV = 13845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TEST = 13846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_READ_EDITED = 13847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_RULE_DELETED = 13848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DELETED = 13849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY = 13850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ROLE_TO_ENABLE_FEATURE = 13851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PRIVACY_PROTECTION = 13852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PRIVACY_PROTECTION = 13853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_OPACITY_MODIFIED = 13854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_LAYER_PROPERTY_MODIFIED = 13855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAPROCESSOR_REQUIRED = 13856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_Y_AXIS = 13857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIC_DATE = 13858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETING = 13859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_CARDHOLDER_REMOVED_FROM_AREA = 13860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_NAME = 13861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_DESCRIPTION = 13862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_SDK_NOT_INSTALLED = 13863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PEOPLE_COUNT = 13864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PEOPLE_COUNT = 13865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_REFRESHING_GLOBAL_PARTITIONS = 13866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CHANGE_ALARM_STATE = 13867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CREDENTIAL_NO_LONGER_FITS_FORMAT = 13868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_RECORDING_PROBLEM = 13869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_RECORDING_PROBLEM_RECOVERED = 13870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_GOTOBACKUP = 13871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FAILEDAUTOBACKUP = 13872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WHATLIKEDO = 13873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_ANYWAY = 13874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOM_ENTITY_SINGLE_INSTANCE = 13875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_THREAT_LEVEL = 13876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TEST_FOV = 13877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TEST_FOV = 13878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_ON = 13879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_OFF = 13880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTEND_MAINTENANCE_MODE = 13881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CHARTS = 13882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_REMOVE_PRIVACY_PROTECTION = 13883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_PROBLEM_RESOLVED = 13884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_MATCH = 13885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_SHARED_PERMIT_MATCH = 13886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SHARED_PERMIT_MATCH = 13887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_MACROS = 13888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZIPSTREAM_SETTINGS = 13889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_INVALID = 13890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_INVALID = 13891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_OPTIONAL = 13892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_RECOMMENDED = 13893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_CRITICAL = 13894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDED_FIRMWARE_VERSION = 13895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_WITHOUT_RECOMMENDED_FIRMWARE = 13896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_RECOMMENDED_FIRMWARE = 13897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPDATES = 13898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_STREAMING_UDP_PORT_RANGE = 13899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDERS = 13900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDER_EDITOR = 13901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMER_ID = 13902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PRIVACY_PROTECTION = 13903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PRIVACY_PROTECTION_STREAMS = 13904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER = 13905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LIVE_STREAMING_PORT_RANGE = 13906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TO = 13907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_CREATED = 13908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_UPDATED = 13909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_DELETED = 13910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDERS = 13911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_TRIGGER_ALARMS_FAILED = 13912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL = 13913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_LEGACY = 13914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_TEST = 13915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBJECT = 13916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_FOV_COVERAGE = 13917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONCONFIGURATION = 13918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONSCHEME = 13919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONVERSION = 13920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORWARD_ALARM = 13921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORCE_ACK_ALARMS = 13922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_EMAIL_SERVER_CONFIGURED = 13923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARM_ZONE_WITH_ACTIVE_TROUBLE_INPUT = 13924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_MOBILE_CREDENTIAL = 13925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARM_INTRUSION_AREA_WITH_ACTIVE_TROUBLE_INPUT = 13926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_ADDED = 13927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_DELETED = 13928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_MODIFIED = 13929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PRESET_ALREADY_ADDED = 13930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_PRESET = 13931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ACTIVE_ALARMS = 13932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_PARTNUMBER = 13933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOCRED = 13934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERY_SENSOR = 13935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTNUMBER = 13936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERAS = 13937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERAS = 13938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_FIRMWARE = 13939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDED_FIRMWARE_STATUS = 13940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_LAST_CHECK = 13941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CRITICAL_UPDATE_AVAILABLE = 13942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITICAL_UPDATE_AVAILABLE = 13943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_HARDWARE_INVENTORY = 13944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_MOBILE_INVITE = 13945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_REASON = 13946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_REASON_LPR_REPORT = 13947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_REASON_REQUIRED = 13948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL = 13949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_WHERE_TO_CONNECT = 13950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRUSTED_DIRECTORY = 13951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNTRUSTED_DIRECTORY = 13952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_RESPONDING = 13953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCOMPATIBLE_VERSION = 13954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_USER_OR_PASSWORD = 13955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER_LOGON_METHOD = 13956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURED = 13957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDHOLDER_SAVE = 13958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD = 13959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_FILES = 13960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_EMAIL = 13961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_DO_NOT_REPLY = 13962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SYNC_COMPLETED = 13963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_WEARABLECAMERA_HOLDER = 13964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_DOWNSTREAM_FIRMWARE_UPGRADE_SCHEDULED = 13965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_SYNC_NOT_RUNNING = 13966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_SYNC_NOT_RUNNING_DIR_FAILED = 13967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SYNC_OFFLINE = 13968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANNOT_CONNECT_HOST = 13969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_RETRIEVING_DATA = 13970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SYNC_DISABLED = 13971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_STOPPING = 13972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_RECONNECTION_PENDING = 13973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_NO_SCHEDULED_TASK = 13974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_NO_SCHEDULED_TASK_TO_START_SYNC = 13975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_SYNC = 13976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE = 13977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_SYNC = 13978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE = 13979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_SYNC = 13980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE = 13981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CHANGES_CANT_SYNC_HOST_TO_SITE = 13982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_SITE = 13983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_SYNC = 13984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST = 13985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_SYNC = 13986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_HOST = 13987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_SYNC = 13988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST = 13989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CHANGES_CANT_SYNC_SITE_TO_HOST = 13990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_HOST = 13991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_LICENSE_LIMIT = 13992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_SITE_LICENSE_LIMIT = 13993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_LICENSE_LIMIT = 13994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_HOST_LICENSE_LIMIT = 13995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETION_REVERTED = 13996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETION_REVERTED_DETAILED = 13997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATION_REVERTED = 13998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATION_REVERTED_DETAILED = 13999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MODIFICATION_REVERTED = 14000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MODIFICATION_REVERTED_DETAILED = 14001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_REVERTED = 14002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CHANGES_REVERTED = 14003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES = 14004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED = 14005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES = 14006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED = 14007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES = 14008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED = 14009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_SITE_UNAVAILABLE_DEPENDENCIES = 14010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED = 14011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES = 14012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED = 14013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES = 14014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED = 14015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES = 14016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED = 14017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_HOST_UNAVAILABLE_DEPENDENCIES = 14018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED = 14019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DUPLICATE_CREDENTIAL = 14020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SINGLE_DUPLICATE_CREDENTIAL = 14021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MULTIPLE_DUPLICATE_CREDENTIAL = 14022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_SYSTEM_CONFIG = 14023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CUSTOMFIELD_LIMIT_REACHED = 14024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_MOBILE_CREDENTIAL = 14025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOBILE_CREDENTIAL_TRANSFER = 14026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CUSTOMFIELD_MISSING_PRIVILEGE = 14027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INTERACTIVELOGONREQUIRED = 14028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROVIDER_CREDENTIAL_ERROR = 14029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOBILE_CANCEL = 14030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWNETWORKS = 14031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYNETWORKS = 14032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWPARTITIONS = 14033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYPARTITIONS = 14034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDPARTITIONS = 14035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEPARTITIONS = 14036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWROLES = 14037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYROLES = 14038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDROLES = 14039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEROLES = 14040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWSERVERS = 14041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYSERVERS = 14042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETESERVERS = 14043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWUSERGROUPS = 14044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYUSERGROUPS = 14045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDUSERGROUPS = 14046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEUSERGROUPS = 14047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWUSERS = 14048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYUSERS = 14049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDUSERS = 14050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEUSERS = 14051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_GROUP = 14052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_CUSTOM_FIELD = 14053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_EVENTS = 14054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_ACTIONS = 14055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_LOGICAL_ID = 14056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_PASSWORD_SETTINGS = 14057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_AUDIO = 14058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_INCIDENT_CATEGORIES = 14059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_FEATURES = 14060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_MACROS = 14061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SYSTEMCONFIG_ACTIVITYLOG_ACTIVATED = 14062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SYSTEMCONFIG_ACTIVITYLOG_DEACTIVATED = 14063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE = 14064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_START_OVER = 14065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_INVESTIGATION = 14066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SEEK_VIDEO = 14067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ROI = 14068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUALLY_INSPECT = 14069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAST_FINDER = 14070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECTING_INTERVAL = 14071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_SPECIFIC = 14072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_PREVIOUS = 14073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_NEXT = 14074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_MILLISECONDS = 14075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SECONDS = 14076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_MINUTES = 14077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_HOURS = 14078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_1DAY = 14079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_DAYS = 14080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTNAME = 14081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMEVENT_MODIFIED = 14082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BACKWARDAPPS = 14083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER_SETTINGS = 14084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EMAIL_VALIDATION_ERROR = 14085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_TRUSTED_CERTIFICATE = 14086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_DOWNSTREAM_FIRMWARE_UPGRADE_SCHEDULED = 14087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AREA_PERIMETER_DOOR_ADD = 14088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AREA_CAPTIVE_DOOR_ADD = 14089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DOOR_REMOVE_DEVICE_UNASSIGNED = 14090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DOOR_REMOVE_DEVICE = 14091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORTTOOL_UNABLETOACCESSSFILE_SCHEDULEDTASK = 14092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_COMMUNICATIONS_NAME = 14093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CHARTS = 14094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SYSTEMMANAGEMENT_GROUP = 14095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACTIONS_INTRUSIONDETECTION_GROUP = 14096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_AUTOVU_PARKING_MANAGEMENT = 14097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMIN_ALARMMANAGEMENTTASKS_GROUP = 14098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_DEPENDENCY = 14099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MOBILECREDENTIAL_REQUIREMENTS_NOTMET = 14100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PERSON_REMOVED = 14101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_CONFIDENTIAL_VIDEO_REQUESTED = 14102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ENABLE_ACCESS_CONTROL_UNIT_SUPPORT_LOGS = 14103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_DISABLE_ACCESS_CONTROL_UNIT_SUPPORT_LOGS = 14104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT_COLOR_MODIFIED = 14105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_IGNORE = 14106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWINSYSTEMSTATUS = 14107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYTIME = 14108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE = 14109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRAPH = 14110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPENCYMODE = 14111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPENCYLIMIT = 14112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYLIMIT = 14113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYMODE = 14114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYSOFT = 14115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYHARD = 14116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYSTRICT = 14117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURESS = 14118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCY = 14119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_MAXOCCUPANCY = 14120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCY_EXCEEDED = 14121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEGACY_EXPORT_ENCRYPTION_ERROR = 14122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCYREACHED = 14123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCYEXCEEDED = 14124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BELOWMAXOCCUPANCY = 14125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCYREACHED = 14126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURESS_ISUNDERDURESS = 14127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_SYSTEM_CLEARANCE = 14128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DURESSPINENTERED = 14129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_ELEVATOR_SCHEDULE = 14130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_TYPE = 14131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_DATA = 14132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_VISITOR_ASTRAY = 14133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DATABASE_ERRORS = 14134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_ENTITY = 14135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MISSING_TAIL_ESCORT = 14136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_CAPACITY_VALUE = 14137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_VIRTUALINPUT = 14138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_ADDED = 14139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_REMOVED = 14140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_MODIFIED = 14141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_ADDED = 14142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_REMOVED = 14143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SDCARD = 14144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZEINBYTES = 14145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_SYSTEM = 14146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGE_LOCK = 14147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGE_MOUNT_ON_BOOT = 14148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_RECORDINGS_OLDER_THAN = 14149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_LEVEL = 14150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECALIBRATE = 14151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CALIBRATE_FOV_INSTRUCTIONS = 14152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYPAD_MODE = 14153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LED_DRIVE_MODE = 14154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIEGAND_PULSES = 14155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIM_ZEROS = 14156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_NIBBLE_ARRAY = 14157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_BI_MAG_MODE = 14158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_NORTHERN_MAG_MODE = 14159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CASI_1_WIRE = 14160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISED = 14161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUTS_COME_FROM_READER = 14162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OSDP_2_ONLY = 14163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUD_RATE = 14164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACING = 14165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMART_CARD = 14166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LC_MILLISECOND_S = 14167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_FIRMWARE = 14168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_UNIT_CERTIFICATE = 14169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_ERROR = 14170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPATIBLE_FLOORS = 14171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SKIPBACKUPANDSTARTDIRECTORY = 14172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE_PERMIT = 14173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRED_SESSION_HOTLIST = 14174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_INVENTORY_DURATION = 14175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_DEVICES = 14176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_DEVICES = 14177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6 = 14178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4 = 14179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_LPR_UNIT_IP_ADDRESS = 14180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY = 14181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMANENT = 14182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ALLENTITIES = 14183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_SETTING_WILL_RECONNECT = 14184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_UNIT_ENROLLMENT = 14185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIRE = 14186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE = 14187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_FAILOVEROCCURED = 14188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDERS_CREATE = 14189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITY_TO_MONITOR = 14190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_TO_SEE_MESSAGE_CONTENT = 14191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CRED_PASSWORD = 14192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ONLY_NUMERIC_CHARACTERS_ARE_ACCEPTED = 14193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_NO_PP = 14194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR_NO_PP = 14195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME_NO_PP = 14196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_STARTED_NO_PP = 14197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_EDIT_READ = 14198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_CARDHOLDER_ADDED_TO_AREA = 14199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOT_RUNNING = 14200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_GROUP_NOT_FOUND = 14201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVE_DIRECTORY_GROUP_NOT_FOUND = 14202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_STREAMING = 14203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_INSUFFICIENT_SECURITY_INFO = 14204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_SCHEDULED = 14205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_SEQUENCE = 14206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_MULTICAST_ENDPOINT_IPV6 = 14207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST_IPV6 = 14208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOM_FIELD_TYPE_ALREADY_EXISTS = 14209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR_WITHFORMAT = 14210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED_WITHFORMAT = 14211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_UNIT_TRUSTED_CERTIFICATE_RESET = 14212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ASSOCIATED_CAMERA = 14213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SILENCE_INTRUSION_ALARM = 14214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACKNOWLEDGE_INTRUSION_ALARM = 14215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SILENCEINTRUSIONALARM = 14216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACKNOWLEDGEINTRUSIONALARM = 14217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGERINTRUSIONALARM = 14218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_AUDIO_REMOVED = 14219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BOLD = 14220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ITALIC = 14221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNDERLINE = 14222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USED = 14223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED = 14224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CARDHOLDER_GROUP_IS_AN_ESCORT_CANNOT_BE_DELETED = 14225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TIME_FORMAT = 14226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_CANNOTLOADSYSCONFIG = 14227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_CANNOT_INIT_SYSMANAGER = 14228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_TIME_FORMAT = 14229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PERSON_ADDED = 14230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SELECTED_EXPORT_FORMAT = 14231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ROTATION = 14232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_ROTATION_INFORMATION = 14233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDDIRECTORYENDPOINT = 14234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOO_MANY_ITEMS_TO_DISPLAY = 14235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_IS_TEMPORARY_AND_INACTIVE = 14236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_ELEVATOR_SCHEDULE_OVERRIDE = 14237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_SCHEDULE_OVERRIDE = 14238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_CONTROL_RTSP_PORT = 14239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_CONTEXT = 14240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_DISCOVERY_WARNING = 14241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UDP_START_PORT = 14242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UDP_END_PORT = 14243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_TIME_OUT_OF_SYNC = 14244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_TIME_OUT_OF_SYNC_RECOVERED = 14245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING_DASHBOARD_TASK = 14246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RESTROLE_NAME = 14247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RESTROLE_DESCRIPTION = 14248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL = 14249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTION = 14250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATED_CAMERAS = 14251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATEDCAMERA = 14252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHOOSE_AREA = 14253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_RECOVERED = 14254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_STOPPED_UNEXPECTEDLY = 14255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_STOPPED_BYUSER = 14256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_EVENTS = 14257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_HEALTH_STATISTICS = 14258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_HEALTH_EVENTS = 14259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_DISK_CHANGE_LIMIT = 14260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_CONFIGURATION = 14261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_GATEWAY_ADDRESS = 14262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_OVERRIDE = 14263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKLIGHTCOMPENSATION_MODE = 14264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WDR_MODE = 14265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_NOT_SUPPORTED = 14266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_FLOOR_ACCESS = 14267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_FREE = 14268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_RESTRICTED = 14269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_CANCELLED = 14270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_OVERRIDE_SCHEDULE_FOR_FLOOR = 14271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_FILTERS = 14272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOMEONE = 14273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ELEVATORS_GROUP = 14274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ELEVATORS_GROUP = 14275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_30_SECONDS = 14276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_1_MINUTE = 14277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_5_MINUTES = 14278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SUPERVISION = 14279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SUPERVISION_INTERVAL = 14280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_INHERITS_RULE = 14281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_SINGLE_PARKING_VIOLATION_CONFIRMATION = 14282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCONNECT_USER = 14283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCONNECT_SELECTED_USERS = 14284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_TEMPORARY_ACCESSPOINTRULE = 14285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_MODE = 14286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USE_EXISTING_ACCESSPOINTRULE = 14287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TO = 14288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_NEW_TEMPORARY_ACCESSPOINTRULE = 14289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_ZOOM_LEVEL = 14290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAX_ZOOM_LEVEL_INFORMATION = 14291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOVE_UP = 14292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOVE_DOWN = 14293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_INCIDENTS = 14294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_DELETEINCIDENTS = 14295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_READER_SUPERVISION = 14296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CUSTOM_ACCESSPOINTRULE = 14297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAMINGINFO = 14298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAMINGINFO = 14299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_INPUT_PIN = 14300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_MOBILE_CREDENTIAL_INFO = 14301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY_ACCESSPOINTRULE = 14302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEMAXOCCUPANCY = 14303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POPUP = 14304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_MAP_ALARM_RECEIVED = 14305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OPTIONS = 14306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANEL_POSITION = 14307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ITEMS = 14308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PANEL_POSITION = 14309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_PANEL_POSITION = 14310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER_PANEL_POSITION = 14311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_SINGLE_CLICK = 14312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_DOUBLE_CLICK = 14313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POPUP_ON_MAP = 14314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOTHING = 14315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_IN_MONITORING_TASK = 14316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_MONITOR = 14317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_THREATLEVELS = 14318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_THREATLEVELS = 14319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CAMERA_STREAMING_INFO = 14320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_CAMERASTREAMINGINFO = 14321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVACY_PROTECTED_CAMERA_CANNOT_BE_MOVED_TO_56_OR_EARLIER_ROLE = 14322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_SERVER_NAME = 14323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_FEDERATED_SITES = 14324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_FEDERATED_SITES_STATUS_NOTREGISTERED = 14325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SET_PARKING_ZONE_OCCUPANCY = 14326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_PARKING_ZONE_OCCUPANCY = 14327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_OCCUPANCY_SET = 14328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SET_OCCUPANCY = 14329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SET_OCCUPANCY = 14330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_SET_OCCUPANCY = 14331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DEPRECATED_VERSION = 14332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_ENABLE_PASSIVE_AUTH = 14333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORIGINAL_VIDEO_NOT_RECORDED_AUXILIARY = 14334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORIGINAL_VIDEO_RECORDED_ARCHIVER_ONLY = 14335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ENABLED = 14336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_ELEVATOR_SCHEDULE = 14337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFIDENTIAL_VIDEO_UNAVAILABLE = 14338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVACY_PROTECTION_TO_VIEW_CONFIDENTIAL_VIDEO = 14339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_REPORT_GENERATED_NO_RESULTS = 14340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_GENERATED_NO_RESULTS = 14341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SELECT_PLAYBACK_ORIGIN = 14342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_FILTER_TYPE = 14343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMING_SOURCE = 14344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIGINAL_ARCHIVE_SOURCE = 14345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_TIMEOUT = 14346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_BATTERY_FAIL = 14347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AC_FAIL = 14348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_TAMPER_FAIL = 14349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_NO_RESPONSE = 14350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_MONITOR_DASHBOARD = 14351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_ITEM_NUMBER_INFO = 14352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_BATTERY_FAIL_RESTORED = 14353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AC_FAIL_RESTORED = 14354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_TAMPER_FAIL_RESTORED = 14355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_FAILED_CONNECT_HOST = 14356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_FAILED_CONNECT_HOST_REASON = 14357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SCHEDULE_ASSOCIATED_WITH_APR = 14358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ANTIPASSBACK_HARD_STRICT_SHOULD_SET_FOR_MAXOCCUPANCY = 14359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOAD_PART_NUMBERS = 14360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PUT_BACK_PRIVACY_PROTECTION = 14361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PATH_TOO_LONG = 14362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARDS_PAGE = 14363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_DASHBOARD_NAME = 14364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOTE_CONFIGURATION = 14365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REMOTE_CONFIGURATION_DESCRIPTION = 14366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIGURATION = 14367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_RULES = 14368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ENROLL = 14369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_RULE_PROPERTIES = 14370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_EXCEEDED = 14371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_CREATED = 14372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_DELETED = 14373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_UPGRADE = 14374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_BACKUP = 14375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_RESTORE = 14376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_CONFLICTRESOLUTION = 14377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_PORT_FORMAT = 14378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_PATHS_MUST_BE_ENTERED_MANUALLY = 14379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARD_DIRECTORY_REPORTS = 14380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGESTORAGE_ENABLED = 14381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SHARP_CREDENTIALS = 14382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CALIBRATION_REQUIRED = 14383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAXOCCUPANCY_CONFIGURATION_ERROR = 14384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS_WARNING_MAXOCCUPANCY_NOTSUPPORTEDBY_UNIT = 14385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_PRE_SHARED_KEY = 14386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ACCOUNT_TEMPORARILY_LOCKED = 14387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_TILE_SELECTION = 14388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_PTZ_MODE = 14389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_2 = 14390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SD_LICENSE_USAGE_WARNING_THRESHOLD = 14391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HM_DASHBOARD_OPTIONS = 14392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ESCORT_VISITORS = 14393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_ESCORT_VISITORS = 14394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_CARDHOLDER_GROUP_AS_ESCORT = 14395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_SIMILAR_EVENTS = 14396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERTEMPORARYLOCKED = 14397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_LOADING_VERSION = 14398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_UNSUPPORTED_REMOTE_VERSION = 14399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_UNABLE_LOCATE_VERSION = 14400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_CONNECTION_ERROR = 14401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_WINDOW_CLOSED = 14402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_TOO_MUCH_TIME_OPEN = 14403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_LINEISLANDS_STANDARDABBR = 14404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_PRODUCT = 14405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_REPORT = 14406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_TO_HOTLIST = 14407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_INSUFFICIENT_PRIVILEGES = 14408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILEROLE_NAME = 14409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILEROLE_DESCRIPTION = 14410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_VIDEOFILE_REEXPORT = 14411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALPTZ_PRESETS = 14412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_EVENTS_FROM = 14413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMIT_VISITORS = 14414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECOND_HOST = 14415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VISITOR_LIMIT_EXCEEDED = 14416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VISITOR_INVALID_HOST_CONFIGURATION = 14417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_VISITORS = 14418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDERGROUP_HAS_NO_CARDHOLDERS_WHO_CAN_ESCORT = 14419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_SEQUENCE_PAUSED = 14420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_SEQUENCE_RESUMED = 14421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_FLOORS = 14422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_LOCKDISPLAY = 14423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOORS = 14424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOORS_OF = 14425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDIT_FLOORS_INSUFFICIENT_PRIVILEGES = 14426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_FLOOR_REMOVED = 14427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_FLOOR_ADDED = 14428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ALARMS_LINKED_MAPS = 14429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_OUTOFSYNC_RECOVERED = 14430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_OUTOFSYNC = 14431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INTRUSIONAREAWIZARD_ERRORBECAUSEDUPLICATEPHYSICALNAME = 14432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INTRUSIONAREAWIZARD_ERRORBECAUSEDUPLICATEPHYSICALNAMEWITHNAME = 14433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DURESS_CONFIGURATION_ERROR = 14434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS_WARNING_DURESS_NOTSUPPORTEDBY_UNIT = 14435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOST_ALREADY_ESCORTING = 14436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_UNLOCK_ALL_DOORS_OF_AREA = 14437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SELECTED_CARDHOLDER_CANNOT_ESCORT_VISITORS = 14438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DOORS_OF_AREA_EXPLICITLY_UNLOCKED = 14439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNLOCK_DOORS_OF_AREA = 14440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_STREAMMISMATCH = 14441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_DETAILS = 14442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_NOT_ARCHIVING_NO_STREAM_DETAILS = 14443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRYING_TO_CONNECT_TO_X = 14444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_WIZARD = 14445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MULTIFACTOR_AUTHENTICATION = 14446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_ENROLLMENT_WIZARD = 14447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_INVALID_KEYFILE = 14448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_REENROLL_HINT = 14449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_WRONG_KEYFILE_FOR_SITE = 14450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_KEYFILE_ALREADY_CONSUMED = 14451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_USE_MANAGED_ACCOUNT = 14452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNETION_NOT_TRUSTED_EXPLANATION = 14453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EGRESS_TRAFFIC = 14454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGRESS_TRAFFIC = 14455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTION_REFUSED_EXPLANATION = 14456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_SITE_NAME = 14457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_SITE_X = 14458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELAGENT_DISCONNECTED_FROM_SERVER_X = 14459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELAGENT_CONNECTED_TO_SERVER_X = 14460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_CONNECTED = 14461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_DISCONNECTED = 14462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_AGENT_LOST_ON_SERVER_X = 14463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_NOT_YET_ENROLLED = 14464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TUNNEL_REENROLL_WILL_STOP_WORKING = 14465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_RESET_ENROLLMENT = 14466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TUNNELSERVER_DELETE_WILL_STOP_WORKING = 14467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_SERVER_NOT_TRUSTED = 14468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTED = 14469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTION_REFUSED = 14470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_KEYFILE = 14471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPY_KEYFILE_TO_CLIPBOARD = 14472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_SAVE_KEYFILE_TO_DISK = 14473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_ALREADY_ENROLLED = 14474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DASHBOARDS = 14475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_TITLE = 14476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_REFRESH_COPIE = 14477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_WIDGET = 14478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDGETS = 14479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_WIDGET_CONFIGURATION = 14480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DASHBOARD_EDITION_INFO = 14481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARD_OPTIONS = 14482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY_DASHBOARD = 14483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_WIDGETS = 14484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_DASHBOARD = 14485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_DASHBOARD = 14486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BACK = 14487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEW_DASHBOARD = 14488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_SELECTION = 14489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NOT_SUPPORTING_CHARTS = 14490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDGET_NOT_CONFIGURED = 14491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_RESULTS_COUNT = 14492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_RESULTS_WIDGET = 14493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IF_RESULT_COUNT = 14494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_COLORING_CONDITION = 14495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULT_COUNT_WIDGET = 14496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULTCOUNT_WIDGET_DESCRIPTION = 14497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPROWS_WIDGET_DESCRIPTION = 14498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LEGEND = 14499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_WIDGET_DESCRIPTION = 14500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_COUNT_WIDGET = 14501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYCOUNT_WIDGET_DESCRIPTION = 14502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_TOP_ROWS_WIDGET = 14503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NUMBER_OF_RESULTS_WIDGET = 14504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_TO_DASHBOARD = 14505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_WIDGET_DESCRIPTION = 14506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_WEB_ADDRESS = 14507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT_WIDGET_DESCRIPTION = 14508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_WIDGET_DESCRIPTION = 14509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_WIDGET_DESCRIPTION = 14510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_IMAGE_FILE = 14511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_DASHBOARDS = 14512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_DASHBOARDS = 14513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BYPASSANTIPASSBACK = 14514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BYPASSANTIPASSBACK_EVENT_MESSAGE = 14515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARDS_PAGE_DESCRIPTION = 14516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DASHBOARDS = 14517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_DASHBOARDS = 14518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_INCOMPLETE_FRAMES = 14519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_FOV_NOT_SUPPORTED = 14520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FLOORS_REQUIRED = 14521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_ENTITY_ICON_CHANGED = 14522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LAYERS = 14523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED_INFORMATION = 14524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODEL = 14525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DOORTEMPLATE = 14526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DOORTEMPLATES = 14527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACEMODULE_DEVICEDEFINITION = 14528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACEMODULE_DEVICEDEFINITIONS = 14529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_OUTPUT_NORMAL = 14530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_OUTPUT_ACTIVE = 14531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_DETAILS = 14532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_LIMIT_REACHED = 14533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_EVENTS = 14534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HOST_CANNOT_DISABLE_CAN_ESCORT = 14535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITOR = 14536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITORS = 14537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITORS_SHORTLIST = 14538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_VIDEO_FAILURE_SEQUENCE = 14539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_FAILURE_SEQUENCE = 14540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEAUTHENTICATIONMODE_WINDOWS = 14541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEAUTHENTICATIONMODE_SQLSERVER = 14542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_HOTLIST = 14543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_LPR_UNIT_LEGACY = 14544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_MAPS = 14545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_THREAT_LEVELS = 14546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_TRACKING = 14547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_MAPS = 14548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_THREAT_LEVELS = 14549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_TRACKING = 14550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ADD_TO_HOTLIST_NO_LPRMANAGER = 14551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_ADD_ACCESS_RIGHT_NEW_PARTITION_EXCEPTION = 14552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MODIFY_ACCESS_RIGHT_INSUFFICIENT_PRIVILEGES = 14553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CREATION_PRIVILEGE_ESCALATION_GROUP = 14554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_TO_HOTLIST_FAILED = 14555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNABLETOCONFIGURETLS = 14556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_HIDENROLLMENT = 14557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_HARDWAREACCELERATION = 14558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_LIVEVIDEO = 14559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_DAYS = 14560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE = 14561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_MOBILE = 14562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE_TO = 14563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_X = 14564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONAL = 14565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_LESS1MIN = 14566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_SELECT_LAYERS = 14567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILEONMAPS = 14568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILEONMAPS = 14569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSLOCATION = 14570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSDECISION = 14571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_1 = 14572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_2 = 14573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_3 = 14574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_4 = 14575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS = 14576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_ANALYTICS = 14577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTASK_ANALYTICS = 14578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTASK_ARCHIVETRANSFER = 14579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PART_NUMBERS = 14580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_AGENTSTARTED_FORMAT = 14581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_ARMING = 14582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_DIRECTION = 14583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING = 14584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARMING = 14585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_IN = 14586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_OUT = 14587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGIS_AREA = 14588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ALREADY_ASSIGNED = 14589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ALREADY_ASSIGNED_DETAILS = 14590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ASSIGNED_TO_INTRUSION_AUDIT = 14591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PRIVACYPROTECTION = 14592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_PROTOCOL = 14593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS10 = 14594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS11 = 14595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS12 = 14596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_HID_ENCRYPTION = 14597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCORRECT_PASSWORD = 14598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_PROTECT = 14599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PASSWORD_EMPTY = 14600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPEN_PROTECTED_FILE = 14601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_REEXPORT = 14602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_LOADING_ERROR_VERSION = 14603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IS_PASSWORD_PROTECTED = 14604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT_WATERMARK = 14605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PASSWORD_PROTECTED = 14606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REGISTERARCHIVERSOURCE = 14607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DATABASE_ENCRYPT_CONNECTIONS = 14608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VERIFY_DATABASE_CERTIFICATE = 14609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATE_SERVER_CERTIFICATE = 14610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPT_SERVER_CONNECTIONS = 14611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SCHEDULE = 14612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_OPTION = 14613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_WARNING_UNSUPPORTED_OPTIONS = 14614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_NOT_TRUSTED = 14615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPILING_MACRO = 14616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_THE_NEXT = 14617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_SCHEDULE_OVERRIDE_CONFIRMATION = 14618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_SCHEDULE_OVERRIDE_CONFIRMATION = 14619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MOBILE_LOWSTREAM = 14620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFISTREAM = 14621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOBILE_DOESNT_SUPPORT_ALL_ENTITIES = 14622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECT_ENTITY_UNIT_PROGRESS_PAGE_TITLE = 14623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_RECONNECTION_FAILED = 14624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_RECONNECTION_SUCCESSFUL = 14625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECONNECTION_PAGE_TITLE = 14626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHG_OPERATION = 14627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_INTEGRITYLEVEL_MACROS = 14628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_STATUS_WIDGET = 14629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_STATUS_WIDGET_DESCRIPTION = 14630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD = 14631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENFORCE_STRONG_USER_PASSWORD = 14632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_LOCAL_SERVICE_ACCOUNT_FOR_GENETEC_SERVER = 14633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_LOGON_PASSORD = 14634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACTIVATE_AUTO_LOCKING = 14635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURATE_FEDERATION_USER = 14636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_WINDOWS_ACTIVE_DIRECTORY_INTEGRATION = 14637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_CLAIMS_BASED_AUTHENTICATION = 14638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_SERVER_ADMIN_ACCESS_TO_LOCAL_CONNECTIONS = 14639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_USER_PRIVILEGES = 14640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_CONNECTION_OF_CLIENT_APPLICATIONS = 14641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_RECOMMENDTED_SECURITY_SETTINGS = 14642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REVIEW_PRODUCT_IMPROVEMENT_PROGRAM = 14643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_TRUSTED_CERTIFICATE = 14644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONTROL_ACCESS_TO_RESOURCES = 14645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_FUSION_STREAM_ENCRYPTION = 14646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_SC_IN_BACKWARDS = 14647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_DIRECTORY_GATEWAY = 14648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_KEEP_SC_UPDATED = 14649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RECOMMENDED_FIRMWARE = 14650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_BASIC_AUTHENTICATION = 14651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TURN_ON_SECURE_COMMUNICATION_MEDIA_ROUTER = 14652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_CAMERA_FIRMWARE = 14653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SET_ADMIN_PASSWORD_CAMERAS = 14654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONNECT_CAMERAS_HTTPS = 14655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DEACTIVATE_UNUSED_SERVICES = 14656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_GLOBAL_CARDHOLDER_SYNCHRONIZER = 14657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_HID_ENABLE_SECURE_MODE = 14658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_HID_FIRMWARE = 14659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SYNERGIS_APPLIANCE_FIRMWARE = 14660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD_APPLIANCE = 14661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENABLE_SECURE_MODE_APPLIANCE = 14662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_ACTIVATE_P2P_AND_GLOBAL_ANTIPASSBACK = 14663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WHITELIST_IP_ADDRESS = 14664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACTIVATE_LOGGING_IN_ACTIVITY_TRAIL = 14665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_UNLIMITED_SESSION_TIME = 14666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_INSTALL_VALID_CERTIFICATE = 14667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENSURE_HTTPS_MOBILE_ADMIN_AND_MOBILE_SERVER = 14668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHOOSE_LONG_UNIQUE_PASSWORD = 14669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER_AND_WEB_CLIENT = 14670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER_AND_MOBILE_APPS = 14671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_VIDEO_STREAMS = 14672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_ADMIN_PRIVILEDGE_ACCOUNT = 14673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_ENCRYPTED_COMMUNICATION = 14674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_ADMIN_PRIVILEDGES = 14675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_WINDOWS_SECURELY = 14676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_MICROSOFT_EMET = 14677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SYNCHRONIZE_CLOCKS_WITHIN_SYSTEM = 14678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_STATUS_WIDGET = 14679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_STATUS_WIDGET_DESCRIPTION = 14680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_EVENT_WIDGET_DESCRIPTION = 14681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_KEY = 14682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDMESSAGE_TO_X = 14683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_PART_OF_LICENSE = 14684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_SCORE = 14685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_CHECKLIST = 14686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_SCORE = 14687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_COMPLETED_SECTIONS = 14688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_SECURITY_CHECKLIST = 14689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_GUS = 14690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SECURITY_CENTER_MOBILE = 14691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WINDOWS = 14692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_NOT_RESPECTING = 14693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WARNING_MESSAGE = 14694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_SC_HARDENING_GUIDE = 14695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_PRIMARY_AREA_ON_LOGIN = 14696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REARM_IN_STAY_MODE = 14697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU = 14698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ACKNOWLEDGE_ALARMS = 14699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ACKNOWLEDGE_SYSTEMTROUBLE = 14700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_LOGIN_REMOTELY = 14701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOITER_EXPIRY_COUNT_ENABLED = 14702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HAS_DURESS_PIN = 14703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GO_TO_MENU_ON_LOGIN = 14704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GREET_USER = 14705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ALARM_ON_LOGIN = 14706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHONE_EXTENSION = 14707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTING_ID = 14708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_NONE = 14709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_INSTALLER = 14710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_USER = 14711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ILLEGITIMATE_CERTIFICATE = 14712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SWITCH_TO_MAP_MODE = 14713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SPY_MODE = 14714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENETEC_COPYRIGHT = 14715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_ANALYTICS = 14716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_ANALYTICS = 14717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_ALLOW_REX = 14718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_CHECK_UNLOCK_SCHEDULE = 14719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_DISARMED_AND_SCHEDULE_VALID_UNLOCK_DOOR = 14720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_DISARMED_OR_SCHEDULE_VALID_UNLOCK_DOOR = 14721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_ENTRY_IF_INSIDE_AREA_IS_AREMED = 14722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_EXIT_IF_OUTSIDE_AREA_IS_AREMED = 14723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_FOLLOWS_INSIDE_AREA = 14724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_FOLLOWS_OUTSIDE_AREA = 14725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ACCESS_TAKEN_ON_DOOR_UNLOCK_EVENTS = 14726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ACCESS_TAKEN_ON_REX_REN_EVENTS = 14727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_OPEN_CLOSE_EVENTS_ON_SCHEDULE = 14728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCED_DOOR_SENDS_DOOR_OPEN = 14729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_OUT_REX_WHEN_INSIDE_AREA_ARMED = 14730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTAIN_REX = 14731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_UNLOCK_ON_ECHEDULE_IF_INSIDE_AREA_ARMED = 14732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_UNLOCK_ON_ECHEDULE_IF_OUTSIDE_AREA_ARMED = 14733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROMPT_USER_FOR_ACCESS_REASON_CODE = 14734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE_READER_BEEPER_ON_REX = 14735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RCYCLE_DOOR_OPEN_TIME_ON_REX = 14736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECYCLE_REX_TIME = 14737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPERATED_LATE_TO_OPEN = 14738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_USER_AREA_WHEN_PASSBACK_DISABLED = 14739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEPAD_ADDRESS = 14740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_PRE_ALARM_DELAY_TIME = 14741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_PRE_ALARM_EVENTS = 14742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECYCLE_DOOR_OPEN_TIME_ON_REX = 14743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESYNERGISIX = 14744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_AGENTSTOPPED_FORMAT = 14745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_WAITINGFORCONNECTION = 14746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_FAILEDCREATEAGENT = 14747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_INITIALIZATIONFAILED = 14748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVERS_WIDGET_DESCRIPTION = 14749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVERS_WIDGET = 14750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ON_BEHALF_OF = 14751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ON_HOST = 14752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_NETWORK_TRAFFIC_IN = 14753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_NETWORK_TRAFFIC_OUT = 14754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVER_STATISTICS = 14755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_TASK = 14756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU_USAGE = 14757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USAGE = 14758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_TOTAL_CAMERA = 14759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_NETWORK_RECEIVING_RATE = 14760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_NETWORK_SENDING_RATE = 14761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_MODEL = 14762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_DRIVER = 14763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_USAGE = 14764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_VIDEO_ENGINE_LOAD = 14765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_VIDEO_MEMORY_USAGE = 14766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_MEMORY_CONTROLLER_LOAD = 14767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_BENCHMARK_FPS = 14768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_BENCHMARK_LAST_RUN_DATE = 14769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_SCORE_WIDGET_DESCRIPTION = 14770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PASSWORD_AND_CONFIRM_PASSWORD_MATCH = 14771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_CONTAINS_WHITESPACE = 14772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPERATES_LATE_TO_OPEN = 14773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED_ANYWAY_NOT_RECOMMENDED = 14774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME_WITH_ID = 14775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_PAN = 14776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_TILT = 14777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_ZOOM = 14778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENS_CALIBRATION_CIRCLE_RADIUS = 14779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_COMMAND_NUMBER = 14780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVEINTRUSIONUNIT_NOTSUPPORTED = 14781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSGRANTEDTIME = 14782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_RAW_DATA = 14783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_WIDGET_DESCRIPTION = 14784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CARDHOLDER_EXPIRE_AFTER_FIRST_USE = 14785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CREDENTIAL_EXPIRE_AFTER_FIRST_USE = 14786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CARDHOLDER_EXPIRE_WHEN_UNUSED = 14787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CREDENTIAL_EXPIRE_WHEN_UNUSED = 14788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_MULTICAST = 14789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_MULTICAST_WARNING = 14790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_ACTION_ERROR = 14791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_FORMATTED = 14792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_LOCKED = 14793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_MOUNTED = 14794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_UNLOCKED = 14795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_UNMOUNTED = 14796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_FROM_SENDER = 14797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE_VIDEO_FROM_SENDER = 14798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MULTIPLE_ENTRIES_MORE = 14799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATFORM_VERSION = 14800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER = 14801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYERS_TO_IMPORT = 14802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_EXTRACT_IMAGE_FROM_LAYERS = 14803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_MAP_PROVIDER = 14804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_8_AND_UP = 14805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_IDENTIFIABLE_DATA = 14806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSETTINGS = 14807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_PERSONAL_DATA_SYNC = 14808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_DURESS_USER = 14809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_STREAM_QUALITY_MAXRESOLUTION = 14810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_HIGH_RESOLUTION_CUTOFF = 14811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_AREAS_EXIST_BUT_NONE_IS_SELECTED = 14812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUGIN_CANNOT_LEVERAGE_DATABASE_ENCRYPTION = 14813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_PLATFORM_VERSION = 14814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_PLATFORM_DESCRIPTION = 14815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_ENCRYPTED_FILE = 14816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACCEPT_NEXT_CERTIFICATE = 14817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_LICENSE = 14818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LICENSE = 14819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICS_MODULES = 14820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_THUMBNAIL = 14821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_HOTLIST_INFO = 14822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HDREADY = 14823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_RESOLUTION = 14824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_HIDE_OUTPUT_STREAM = 14825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SHOW_OUTPUT_STREAM = 14826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOUBLESWIPEUNLOCK = 14827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOUBLESWIPELOCK = 14828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IDENTITY_UNIT_NOT_VERIFIED = 14829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULDNT_CREATE_ROLE = 14830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATFORM_UPGRADE = 14831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PLATFORM = 14832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PLATFORM = 14833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLATFORM_UPGRADE_ACCESS_DISRUPTION = 14834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERA_INTEGRITY_MONITORS = 14835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNCOMPLETED = 14836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDATION_ONLY = 14837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_IMAGESTABILISATION_CAPABILITIES_NOT_EQUALS = 14838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_CONNECTION_ERROR = 14839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLESTATUS_ONLINE = 14840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLESTATUS_OFFLINE = 14841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UAR_STATUS = 14842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_NEEDS_UAR = 14843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_PERMIT_OR_PERMIT_RESTRICTION = 14844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_MOTOSCANS_COUNT = 14845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_ENFORCEMENT_LIGHT_COUNT = 14846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_GENETEC_SERVICE = 14847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_AVOID_DIRECT_INTERNET_ACCESS = 14848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DEACTIVATE_UNUSED_ROLES = 14849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_HID_ENROLL_ACCESS_CONTROL_UNITS = 14850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD_HID_CONTROLLERS = 14851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_AUTHENTICATE_DATABASE_CONNECTIONS = 14852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_MOTOSCAN = 14853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_PARKING_ENFORCEMENT_LIGHT = 14854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHITELIST = 14855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WHITELIST_MOBILE_DEVICES = 14856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLACKLIST = 14857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OS = 14858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_APPLICATIONS = 14859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BLACKLIST_MOBILE_DEVICES = 14860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLACKLISTED = 14861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMISSIONS = 14862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_S = 14863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ALLOWED = 14864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_DENIED = 14865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_UNDEFINED = 14866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE = 14867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ACCESS = 14868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_WHAT_PRIVILEGES = 14869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ALLOWED = 14870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER = 14871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_LIVE_STREAM = 14872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_UPDATES = 14873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES_AVAILABLE = 14874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABILITY_WIDGET_DESCRIPTION = 14875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_NOT_PROPERLY_CONFIGURED = 14876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_MACHINES_DETECTED = 14877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REPORTING_UNKNOWN = 14878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITABLE = 14879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USERTEMPORARILYLOCKED = 14880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABBREVIATION = 14881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KICKOUT_USER = 14882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PATROLLER_ROUTE = 14883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_OCCUPANCY = 14884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_ZONE_DATA = 14885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HIT_IMAGE = 14886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READ_IMAGE = 14887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BYPASS_CACHE = 14888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_OPERATION_DENIED_BY_FIREWALL = 14889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_GLOBAL_CARDHOLDER = 14890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TRUSTED_CERTIFICATES_SYNERGIS_APPLIANCES = 14891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_LATEST_SYNERGIS_APPLIANCE_SECURITY = 14892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING_PAGE_DESCRIPTION = 14893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_SECURITY_WIDGET = 14894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OPEN_GUS_WEBPORTAL = 14895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECEIVE_GUS_NOTIFICATIONS = 14896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GUS_OPEN_WEBPORTAL = 14897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECEIVE_GUS_NOTIFICATIONS = 14898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVEVIDEOUNIT_NOTSUPPORTEDARCHIVER = 14899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_DIRECTORY_CACHE = 14900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_CACHE = 14901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_JOURNAL_SIZE = 14902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_MAXIMUM_JOURNAL_TABLE_SIZE = 14903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTH_MONITORING_ROLE_DEACTIVATED = 14904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON_REMOTE_MONITOR = 14905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_VALIDATING = 14906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_INVALID_CREDENTIALS = 14907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_TIMEOUT = 14908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_ERROR = 14909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION__REQUEST_ACCESSCONTROL_UNIT_DETAILS = 14910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SECURITY_WIDGET = 14911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY_CACHE = 14912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DOWNLOADINGENTITIES = 14913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETINGENTITIES = 14914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CREATINGENTITIES = 14915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MACRO_EXECUTE_METHOD_CANNOT_BE_ASYNCVOID = 14916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TODAY = 14917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_LASSO = 14918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_VIEW_THREAT_LEVELS = 14919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_THREAT_LEVELS = 14920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ADD_THREAT_LEVELS = 14921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_DELETE_THREAT_LEVELS = 14922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETSENSORS = 14923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESETSENSORS = 14924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BYPASSINTRUSIONINPUT = 14925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BYPASSINTRUSIONINPUT = 14926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_THREAT_LEVELS = 14927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_THREAT_LEVELS = 14928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_THREAT_LEVELS = 14929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_THREAT_LEVELS = 14930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_IMPORT_TOOL = 14931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_ARCHIVE_TRANSFER = 14932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALL_CAMERA_EVERY = 14933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TIME_TO_MONITOR_ALL_CAMERAS = 14934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CAMERA_INTEGRITY_TOOK_TOO_LONG = 14935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_INTEGRITY_TOOK_TOO_LONG = 14936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_PROFILES = 14937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_SDK = 14938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VISITORS = 14939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VISITOR = 14940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VERIFY_FILE_FORMAT = 14941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_FOLDER_LOCAL2 = 14942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDER_GROUPS_CANNOT_ESCORT = 14943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILEDCONNNECTIONNOTIFICATION = 14944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PROXY_DISCONNECTED = 14945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROCESSING = 14946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MULTIPLE_SYSTEMS = 14947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_SCREENSHOT = 14948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MAP_SCREENSHOT = 14949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_MAXCAMBANDWITH = 14950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_NOTAPPLICABLE = 14951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_NOTAPPLICABLE_DETAILS = 14952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFIVIDEODATAFORMAT = 14953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFIFRAMERATE = 14954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARSTREAM = 14955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARVIDEODATAFORMAT = 14956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARFRAMERATE = 14957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_HIGH = 14958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_STANDARD = 14959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_LOW = 14960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_DEFAULT = 14961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PASSWORD_WATERMARK = 14962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEVIDEOSETTINGS_WIFI = 14963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEVIDEOSETTINGS_CELLULAR = 14964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DESFIRE_CONFIGURATION = 14965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_VIDEOMODULES = 14966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_VIDEOMODULES = 14967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_VIDEOMODULES = 14968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIDEOMODULES_ACTIVATION = 14969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_VIDEOMODULES = 14970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOMODULES_ACTIVATION = 14971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_UNLOCKDISPLAY = 14972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIT_DATE = 14973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_HIGHSTREAM = 14974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_LOWSTREAM = 14975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXITING_INTRUSION = 14976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERING_INTRUSION = 14977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPTIONS = 14978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_UNLOCK_OPTIONS = 14979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_OPTIONS = 14980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_OPTIONS = 14981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERING_EXITING = 14982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_KICKOUTBLACKLISTMOBILE = 14983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_KICKOUTBLACKLISTMOBILE = 14984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWMOBILE = 14985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEWMOBILE = 14986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMINTRUSIONAREA = 14987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISARMINTRUSIONAREA = 14988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORCEARMINTRUSIONAREA = 14989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BYPASSARMINTRUSIONAREA = 14990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARMINTRUSIONAREA = 14991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISARMINTRUSIONAREA = 14992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORCEARMINTRUSIONAREA = 14993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BYPASSARMINTRUSIONAREA = 14994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SMARTZOOM = 14995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_USE_EVENT_LOCATION = 14996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RADIUS = 14997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_MANAGER_NOT_PRESENT = 14998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_PENDING_ARRIVAL = 14999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_ON_SITE = 15000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_AVERAGING_PERIOD = 15001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_AVERAGING = 15002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION = 15003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_OFF = 15004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MAXIMUM_QUALITY = 15005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_HIGH_QUALITY = 15006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MEDIUM_QUALITY = 15007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_LOW_BIT_RATE = 15008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MINIMUM_BIT_RATE = 15009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_CONFIRM_CHECKIN = 15010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIT_DURATION = 15011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AND_CHECKIN = 15012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION = 15013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_REPORT = 15014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXMOBILESESSIONS = 15015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXMOBILEVIDEOSESSIONS = 15016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_COMMUNICATIONS = 15017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_COMMUNICATIONS = 15018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CALL_PANEL = 15019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CALL_PANEL = 15020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAKE_NEW_CALL = 15021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAKE_NEW_CALL = 15022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_DIAL_PAD = 15023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_DIAL_PAD = 15024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_CONTACT_LIST = 15025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_CONTACT_LIST = 15026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRANSFER_CALL = 15027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRANSFER_CALL = 15028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CALL_REPORT_TASK = 15029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CALL_REPORT_TASK = 15030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_DESFIRE_PRELOADEDINDEX = 15031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_DESFIRE_INLINEKEY = 15032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CONFIGURATION = 15033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_CONFIG = 15034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USB_READER_TESTING = 15035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_CARD_ENCODING_MODE = 15036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_VERB_FORMAT_CARD_MODE = 15037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_DESFIRE_UPDATE_APPLICATIONMASTERKEY_MODE = 15038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_FREE_CREATE_MODE = 15039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_NAME = 15040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_ID = 15041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRYPTO_METHOD = 15042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_ID = 15043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_COMMUNICATION_SETTINGS = 15044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_LENGTH_IN_BITS = 15045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_VALIDATION = 15046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_KEY = 15047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_KEY_DIVERSIFIED = 15048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SITE_CONFIGURATION_DIALOG = 15049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARD_MASTER_KEY = 15050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_MASTER_KEY = 15051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_READ_KEY = 15052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OLD_APPLICATION_MASTER_KEY = 15053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_KEY_AT_INDEX = 15054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_NUMBER = 15055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_MODE = 15056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_WRITE_MODE = 15057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_OFFSET_IN_BYTES = 15058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE = 15059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUTTYPE = 15060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INPUTDEFINITIONS = 15061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_LOWERCASE = 15062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE = 15063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND = 15064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILED_TO_OVERWRITE_FILE = 15065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIG_NAME_ALREADY_USED = 15066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INLINE_KEYS_WARNING = 15067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORTY_BYTES_HEXADECIMAL_ONLY = 15068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PICTURE_BEING_SYNCHRONIZED = 15069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_NOTIFICATIONS = 15070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPNS = 15071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZUREHUB = 15072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_NOTIFICATION_SERVICE_SETTINGS = 15073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HUB_NAME = 15074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_TEST_SENDS = 15075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_MOBILE_FEATURE = 15076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_INBOX_MESSAGES_PER_USER = 15077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CAMERA_STREAMING = 15078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DYNAMIC_STREAM = 15079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_FIRE = 15080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_BURGLARY = 15081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_PANIC = 15082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_DOOR = 15083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_MOTIONSENSOR = 15084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_WINDOW = 15085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_FENCE = 15086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_GAS = 15087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_DECODING_NOT_ENABLED = 15088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATE_SHARP = 15089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DUPLICATE_SHARP = 15090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFICERS = 15091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_IS_WATCHING_CAMERAS = 15092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_DELTED_ENTITIES = 15093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEDEFAULTSECUREPORT = 15094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SUMMARY_VIEW = 15095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DETAILS_VIEW = 15096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_GUIDE_INSUFFICIENT_PRIVILEGES = 15097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGISIX = 15098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_REVOKE_ENCRYPTED_KEY_STREAM = 15099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_REVOKE_ENCRYPTED_KEY_STREAM = 15100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_BELONGS_TO_ANOTHER_CARDHOLDER_NOT_RESET = 15101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_INTRUSIONINPUTTYPE_ICONMODIFIED = 15102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UPGRADE_OPTIMIZING_DATABASE_AND_CLEANUP = 15103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_CHOOSE_GROUPS = 15104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_CHOOSE_EXTRA_PROPERTIES = 15105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_TXTFILES_CSVFILES = 15106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TURN_ON_ENCRYPTION_ON_TRANSIT = 15107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DELETED_ENTITIES = 15108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_LOW_SENSITIVITY = 15109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_HIGH_SENSITIVITY = 15110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_MEDIUM_SENSITIVITY = 15111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSIONINPUTTYPE = 15112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHARP_PORT_INFO = 15113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ATTEMPTING_TO_RECONNECT = 15114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_STARTINGAGENT_FORMAT = 15115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARD_ALREADY_REFRESH_EVERY = 15116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSRXRATE = 15117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSTXRATE = 15118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSMAXTXRATE = 15119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSMAXRXRATE = 15120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSVIDEOSESSIONS = 15121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSACTIVECAMERA = 15122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_DIFFERENT_VERSION = 15123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_ENCRYPTION = 15124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSCLIENTS = 15125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MUST_CONFIGURE_ONE_SERVER = 15126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERVENTION_REQUIRED = 15127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_USE_JOURNALING = 15128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_PRIVACY_PROTECTION = 15129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_USER_GRANTS_PARTITION_ACCESS = 15130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MULTICAST_DISABLED = 15131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_INFO_BEST_AVAILABLE_MULTICAST_DISABLED = 15132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNREACHABLE_PEER = 15133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_EVENT_SOUNDS = 15134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PERMIT_RESTRICTION = 15135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_NUMBER_OF_CAMERAS = 15136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HTTP_SERVER_START_FAILED = 15137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_EMPTY_PERSISTENCE_PATH = 15138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENABLING_LARGE_RTP_PACKETS_WARNING = 15139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_UP = 15140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_DOWN = 15141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_NOMINAL = 15142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WEBCLIENTLICENSEEXCEEDED = 15143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCONNECT_SELECTED_USER = 15144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REJECT_CALL = 15145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REJECT_CALL = 15146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED = 15147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_FAILED_TIMEOUT = 15148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ACTION_ON_DISARMED_TROUBLE = 15149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_PLATEREPORT = 15150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_PLATEREPORT = 15151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVED_REQUEST = 15152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_DEACTIVATED = 15153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REPORTING_NOT_IMPLEMENTED = 15154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RUN_MACROS_WITH_LIMITED_ACCESS_RIGHTS = 15155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADVANCEDSECURITYSETTINGS = 15156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWUNKNOWNCA = 15157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWNONSERVER = 15158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWINVALIDNAME = 15159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWINVALIDDATE = 15160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWWEAKSIGNATURE = 15161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWUNKNOWNCA = 15162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWNONSERVER = 15163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWINVALIDNAME = 15164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWINVALIDDATE = 15165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWWEAKSIGNATURE = 15166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_UNKNOWNCAALLOWED = 15167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_NONSERVERALLOWED = 15168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_INVALIDNAMEALLOWED = 15169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_INVALIDDATEALLOWED = 15170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_WEAKSIGNATUREALLOWED = 15171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADVANCEDSETTINGS_INVALIDNAME = 15172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EXTENSIONIDENTIFIER = 15173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITMEDIAGATEWAYSERVER = 15174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAX_ITEMS_SELECTED_REACHED = 15175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRST_HOST_ALREADY_ESCORTING = 15176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ENCODE_SMART_CARDS = 15177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ENCODE_SMART_CARDS = 15178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_FIRST_OR_LAST_NAME_REQUIRED = 15179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_MACROS = 15180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_MACROS = 15181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AC_GENERAL_SETTINGS = 15182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_REPORT_INTRUSIONINPUTACTIVITY = 15183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSIONINPUTACTIVITY = 15184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_CATEGORY_INTRUSIONDETECTION = 15185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REPORT_INTRUSIONINPUTACTIVITY = 15186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSIONINPUTACTIVITY = 15187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AGENT_NETWORK_RECEIVING_RATE = 15188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AGENT_NETWORK_SENDING_RATE = 15189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE_DATAFOLDER = 15190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE_LOGFOLDER = 15191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AGENT_MODIFIED = 15192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GVP_NOT_ENOUGH_VIDEO_TILES = 15193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_HID_SECURE_MODE_DISABLED = 15194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_SEARCH_WHEN_ENCRYPTION_ENABLED = 15195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LIMITATIONS_WHEN_ENCRYPTION_ENABLED = 15196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAYS = 15197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_NO_MATCHING_GROUP = 15198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_EXISTS_IN_XNUMBER_GROUPS = 15199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_NO_CLAIMED_GROUPS = 15200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_NO_USERNAME_CLAIM = 15201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_QVGA = 15202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ARCHIVER_STATISTICS = 15203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_FILTER_SELECTED = 15204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CIM_SETTINGS_CHANGED = 15205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC_IN = 15206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC_OUT = 15207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CAMERA_ANALYTIC_SETTINGS_CHANGED = 15208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVER_STATISTICS = 15209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVER_STATISTICS = 15210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENROLL_ACCESSCONTROLUNIT_BECAUSE_DEFAULTPASSWORD = 15211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_ROLE_CANNOT_LEVERAGE_DATABASE_ENCRYPTION = 15212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MOBILE_ROLE_GOOGLE_LICENSE_KEY = 15213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_MOBILE_PORT = 15214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ABOUT_TRUSTED_ROOT_CERTIFICATES = 15215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_WEB_CLIENT_PORT = 15216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REMOVE_MOBILE_DEVICE_SC = 15217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_NESTED_FEDERATIONS_NOT_SUPPORTED = 15218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTO_DIGITALZOOM_PRESET = 15219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTO_PTZ_PRESET = 15220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_CPU_USAGE = 15221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_PROCESS_MEMORY = 15222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MACRO_STARTED = 15223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MACRO_ABORTED = 15224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_PRINT_DASHBOARD = 15225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BULK_APPLY_THREAT_LEVEL_AREAS = 15226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_APPLICATION_CONFIGURATION = 15227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_HOTLIST_CONFIGURATION = 15228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_OVERTIME_RULE_CONFIGURATION = 15229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_PERMIT_CONFIGURATION = 15230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_ANNOTATION_FIELDS_CONFIGURATION = 15231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_APPLICATION_CONFIGURATION = 15232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_HOTLIST_CONFIGURATION = 15233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_OVERTIME_RULE_CONFIGURATION = 15234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_PERMIT_CONFIGURATION = 15235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_ANNOTATION_FIELDS_CONFIGURATION = 15236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_SECURITY = 15237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGS_FOLDER_HAS_MOVED = 15238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_UNIT_CERTIFICATE_HID = 15239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_SUCCESS = 15240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_FAILURE = 15241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_DECRYPTION_FAILURE = 15242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_ENCRYPTION_FAILURE = 15243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_NO_PRIVATE_KEY = 15244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_SIGN_ONLY = 15245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_UNKNOWN_FAILURE = 15246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_OFFLINE_MOBILE_USERS = 15247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL = 15248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_MISSING = 15249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_NOT_FOUND = 15250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL = 15251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_MISSING = 15252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_NOT_FOUND = 15253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_INVALID = 15254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_INVALID = 15255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_ALARMS = 15256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_LPR = 15257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_ALARMS = 15258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_PUSH_NOTIFICATIONS = 15259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_DEVICE_CAMERA_STREAMING = 15260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_VIDEO = 15261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_LPR = 15262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_VIDEO_STREAM_MAX_SEQUENCE_LENGTH = 15263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDETERMINATE = 15264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_CATEGORY = 15265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_ENTRY = 15266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_STATUS = 15267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAUSED_BY = 15268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_LOCATION = 15269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_CURRENTUSER = 15270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_LOCALMACHINE = 15271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELSERVER_CREATE_FEDERATION_FOR_NEW_TUNNEL_QUESTION = 15272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBEROFMEMBERS = 15273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ENTITIES_SELECTED = 15274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDWINDOWSFILENAME = 15275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEAK_ADMIN_PASSWORD = 15276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUDITTRAIL_REMOTEUSER_THROUGH_FEDUSER = 15277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_SHARP_PASSWORD = 15278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_HTTPS_CONNECTION_SHARPV = 15279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_SHARPX_PASSWORD = 15280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_HTTPS_CONNECTION_SHARPX = 15281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_ACCESS_AUTOVU = 15282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_NETWORK_LOCATION = 15283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_COMMUNICATION_PATROLLER_AND_SC = 15284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_GENETEC_PATROLLER_DATABASE = 15285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_ACCESS_GENETEC_PATROLLER_WORKSTATION = 15286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SELECT_GENETEC_PATROLLER_LOGON_TYPE = 15287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_SIMPLE_HOST_FUNCTIONALITY = 15288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_FLOORS = 15289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAVIGATE_TO_PARENT = 15290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOMANYRESULTS = 15291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOACTIONSAVAILABLE = 15292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CAMERA_STREAMING_SETTINGS = 15293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT_START_INDEX = 15294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT_STOP_INDEX = 15295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REVOKE_PERMISSION_STORED_PROCEDURE = 15296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DB_CONNECT_WINDOWS_AUTHENTICATION = 15297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_LIMITING_CONCURRENT_LOGONS = 15298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SCRAMBLE_ENTITY_NAMES = 15299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TECHDOC_HUB = 15300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON = 15301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BLACKLIST_MOBILE_DEVICE = 15302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SECTION_LPR = 15303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_TO_GET_VIDEO_DISPLAY_INFORMATION = 15304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_BACKWARD_NOT_SUPPORTED = 15305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_NO_REGISTRATION = 15306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_DENIED = 15307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_FAILED = 15308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_INACCESSIBLE = 15309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANCEL_WIZARD = 15310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_RECIPIENT_OFFLINE = 15311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_VALIDATOR_SUCCESS_BACKWARD_FAILURE = 15312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_SECURITYDESK_OPTIONS_USERINTERACTION_ASKVISITORCHECKOUT = 15313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSMQ_NOT_RUNNING_ON_SERVER_X = 15314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MOBILELOCALDB = 15315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UNKNOWN_ENTRIES = 15316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UNKNOWN_ENTRY = 15317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPOSURE_ZONE = 15318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVALID_EXPOSURE_ZONE = 15319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_REFRESH_STATUS = 15320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_MANAGEMENT = 15321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACCESS_CONTROL = 15322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_LPM_PROTOCOL_TO_CONNECT_SHARPV = 15323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_SYSTEM = 15324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SECURITYCONFIG_FIXCONFIGURATIONPROBLEM = 15325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GRANT_PARTITION_ACCESS = 15326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_PRIVILEGE = 15327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIXCONFIGURATIONPROBLEM = 15328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PRIVILEGECONFIG_PROBLEMATICPARTITIONACCESS = 15329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANCONFIGURESECURITY = 15330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANCONFIGURESECURITY = 15331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACCESSRIGHTSCONFIG_PROBLEMATICPARTITIONACCESS = 15332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC_RECOVERED = 15333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC = 15334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_DISCONNECTED_FAILED_TO_CONNECT_TO_ADDRESSES = 15335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET = 15336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_DESCRIPTION = 15337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_MODE = 15338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_ALLOW_DISPLAY_MODE_TOGGLE = 15339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TO_TILES = 15340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ZOOM = 15341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EDIT_WIDGET = 15342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW1 = 15343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW2 = 15344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW3 = 15345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW4 = 15346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH1 = 15347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH2 = 15348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH3 = 15349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH4 = 15350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW1 = 15351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW2 = 15352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW3 = 15353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW4 = 15354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH1 = 15355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH2 = 15356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH3 = 15357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH4 = 15358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARKING_OVERLAY = 15359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_STATUS = 15360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_REVERT = 15361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_TO = 15362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_RECOMMENDED_IS = 15363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UNIT_UP_TO_DATE = 15364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACTORY_RESET_REQUIRED = 15365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FACTORY_RESET_REQUIRED = 15366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_FIRMWARE_READ_RELEASE_NOTES = 15367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_DOWNLOAD_ERROR = 15368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIRMWARE_UPGRADE_NOW = 15369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_CANNOT_MOVE_ACCESSCONTROLUNIT_SAAS = 15370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_DISABLED = 15371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIA_PROCESSORS = 15372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_DELETE_ARCHIVER = 15373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION = 15374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_NAME = 15375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAY_TYPE_SINGLE = 15376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAY_TYPE_MOSAIC = 15377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_DIAGONAL = 15378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_VIDEO_WATERMARKING_OVERLAY = 15379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_CENTER_LEFT = 15380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_CENTER_RIGHT = 15381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_CENTER = 15382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_CENTER = 15383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CREDENTIAL_MISSING_CARD_FORMAT = 15384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_WIZARD_COMPLETED = 15385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CARDHOLDERS = 15386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CARDHOLDERS_DESCRIPTION = 15387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CAMERAS = 15388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CAMERAS_DESCRIPTION = 15389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_WIDGET_TOOMANYRESULTS_HEADER = 15390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPMANAGER_ROLE_OFFLINE = 15391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_GENERAL_SETTINGS_GROUP = 15392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LPR_GENERAL_SETTINGS_GROUP = 15393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_ONLINE = 15394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARK_INVALID_CONFIG = 15395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSMQ_SLOW_QUEUE_ON_SERVER_X = 15396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_MSMQ_ERRORS = 15397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_CHAR_IN_ARCHIVE_BACKUP_PATH = 15398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOMORROW = 15399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_NEXT_X_Y = 15400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_RETRIEVE_TILE_SERVER = 15401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDSELECTED = 15402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPY_MAP_OBJECT_DATA = 15403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_ENABLED = 15404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_VALIDATOR_EXPIRED = 15405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_VALIDATOR_EXPIRING_SOON = 15406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_VALIDATOR_NOT_VALID_YET = 15407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_ACCESS_RIGHTS = 15408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_ACCESS_RIGHTS = 15409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANEDITPRIVILEGES = 15410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANEDITPRIVILEGES = 15411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANEDITACCESSRIGHTS = 15412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANEDITACCESSRIGHTS = 15413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_REQUIRES_AT_LEAST_ONE_USER = 15414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSE_ROLE = 15415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDER_DUPLICATE_LICENCE_PLATE = 15416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IP_ADDRESS_PORT = 15417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_MODE_MANUALLY = 15418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_STATE_FILTER = 15419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_WIDGET_DESCRIPTION = 15420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_WIDGET_NAME = 15421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARVESTER_WHAT_TO_COLLECT = 15422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CONNECTION_LOST_WITH_ARCHIVER = 15423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CONNECTION_ESTABLISHED_WITH_ARCHIVER = 15424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INTERFACE_ONLINE = 15425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INTERFACE_OFFLINE = 15426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADAPTIVE_MOTION_SETTINGS = 15427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_THRESHOLD = 15428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_HISTORY_WEIGHT = 15429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_COMPUTE_WINDOW = 15430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_THRESHOLD = 15431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_TEST_WINDOW = 15432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_COMPUTE_SAMPLES = 15433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_HISTORY_WEIGHT = 15434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_DATA_OVER_TUNNEL = 15435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_ENFORCED = 15436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_PREFERRED = 15437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_DISABLED = 15438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_STATUS_INCOMPATIBLE_ENCRYPTION = 15439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPTION_STATUS = 15440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPTION_STATUS_DESCRIPTION = 15441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_INVALID_ENCRYPTION = 15442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSTIC_ENTITY_X_IS_OFFLINE = 15443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENGINEERING_BUILD = 15444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERLOCKED_X_SECONDS = 15445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERLOCKED_X_MINUTES = 15446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_KEY = 15447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_SENSOR = 15448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORSECURED = 15449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORUNSECURED = 15450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_CARDHOLDER_SECURITY_CLEARANCE = 15451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_SECURITY_CLEARANCE = 15452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_SECURITY_CLEARANCE = 15453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_SECURITY_CLEARANCE = 15454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENT_UNIT = 15455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_CONTROLLERS = 15456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_MODULES = 15457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_FIRMWARE_DETECTED = 15458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_READ_BEFORE_UPGRADE = 15459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNKNOWN_FIRMWARE_DETECTED = 15460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_WATERMARKED_WITH_OBSOLETE_ALGORITHM = 15461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_WATERMARKINGORIGIN_TO_CLIPBOARD = 15462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WATERMARK_NOT_SUPPORTED_BY_ALL_SEQUENCES = 15463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WATERMARKING_TYPE_NOT_SUPPORTED = 15464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ARCHIVED_STREAM = 15465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UC_ARCHIVED_STREAMS = 15466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ARCHIVED_STREAMS = 15467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIELDSREQUIREATTENTION = 15468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FILLREQUIREDFIELDS = 15469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_RECORDING_ISSUE = 15470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_PANASONIC_PRIVACYMODE_ON = 15471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_PANASONIC_PRIVACYMODE_OFF = 15472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVABLE_CAMERAS = 15473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NOEXTENSION = 15474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_GRID = 15475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_VALUES = 15476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXCLUDE = 15477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FAILOVER_LICENSE_SERVERS_DOWN = 15478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CAMERASTOINPUT = 15479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DEVICES_ALREADY_ASSIGNED = 15480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADD_UNIT_API_UNSUPPORTED = 15481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRAY_INTRUSIONOVERVIEW = 15482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_DETECTION = 15483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_DISARMEDNOTREADY = 15484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_DISARMEDREADY = 15485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ARMING = 15486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_PERIMETERARMED = 15487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_MASTERARMED = 15488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ALARMACTIVE = 15489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ALARMSILENCED = 15490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ENTRYDELAY = 15491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_DISARMED = 15492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_ARMED = 15493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_ALARMS = 15494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEPLATE_CONTAINSWHITESPACE = 15495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEPLATE_TOOLONG = 15496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_CONFIGURATION = 15497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_LOOP = 15498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CONTACT = 15499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UP_CONTACTS = 15500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_CONTACTS = 15501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCONTACTS = 15502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CONTACTS = 15503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCONTACTS = 15504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CONTACTS = 15505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CONTACT = 15506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CONTACT = 15507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CONTACT = 15508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CONTACT = 15509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_FEDROLE_FOR_TUNNEL_SITE = 15510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSECURED = 15511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_INTERFACEMODULE_TO_OTHER_UNIT = 15512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_INTERFACEMODULE_SELECTDESTINATIONUNIT_DIALOG = 15513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_MAX_RESULTS = 15514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_ENABLE_HIGH_RESOLUTION_IMAGES = 15515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_QUERY_INTERVAL_TIMESPAN = 15516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_SELECTED_ENTITIES = 15517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGEUNITPASSWORD = 15518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_GENERATEPASSWORD = 15519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDCHANGED = 15520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDNOTACCEPTED = 15521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CHECKIFUNITONLINE = 15522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGEPASSWORDUNSECURECONNECTION = 15523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_APPLYTOCONTINUE = 15524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_UARMUSTBEONLINE = 15525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_UNITMUSTBEONLINE = 15526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSGBOX_MIGHTLOSEUNITCONNECTION = 15527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSGBOX_MIGHTLOSEUNITCONNECTION_DETAILS = 15528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_EXACTLYXCHARACTERS = 15529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_BETWEENXANDYCHARACTERS = 15530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_MINXCHARACTERS = 15531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_MAXXCHARACTERS = 15532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_EXACTLYXCHARACTERS = 15533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_BETWEENXANDYCHARACTERS = 15534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_MINXCHARACTERS = 15535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_CANNOTCONTAIN = 15536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_MAXXCHARACTERS = 15537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_EXACTLYXCHARACTERS = 15538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_BETWEENXANDYCHARACTERS = 15539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_MINXCHARACTERS = 15540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_CANNOTCONTAIN = 15541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_MAXXCHARACTERS = 15542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_EXACTLYXCHARACTERS = 15543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_BETWEENXANDYCHARACTERS = 15544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_MINXCHARACTERS = 15545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_CANNOTCONTAIN = 15546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_MAXXCHARACTERS = 15547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_EXACTLYXCHARACTERS = 15548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_BETWEENXANDYCHARACTERS = 15549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_MINXCHARACTERS = 15550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_CANNOTCONTAIN = 15551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_MAXXCHARACTERS = 15552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_EXACTLYXCHARACTERS = 15553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_BETWEENXANDYCHARACTERS = 15554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_MINXCHARACTERS = 15555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_CANNOTCONTAIN = 15556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_MAXXCHARACTERS = 15557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURELOSTPASSWORDTITLE = 15558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURELOSTPASSWORDDESCRIPTION = 15559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURERECOVERYTITLE = 15560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURERECOVERYDESCRIPTION = 15561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILUREOLDPASSWORDTITLE = 15562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILUREOLDPASSWORDDESCRIPTION = 15563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECOVERED = 15564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_FAILURE = 15565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_RECOVERED = 15566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_FAILURE = 15567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_STATE_PERIMETER = 15568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNKNOWNCUSTOMFIELDVALUENOTUNIQUE = 15569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WEBSDK_VIEWPRIVILEGE_ROLENOTLOADEDYET = 15570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_RETRY = 15571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_HEALTHEVENT_ARCHIVER_TRICKLING_PARTIALLY_RETRY = 15572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ROLE_BACKWARD_COMPATIBILITY = 15573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_ROLE_BACKWARD_COMPATIBILITY = 15574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETES_SUPPRESSED = 15575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETES_SUPPRESSED_DETAILS = 15576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_CANCELLED = 15577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_CANCEL_FOR_ONE_CAMERA = 15578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_RETRY = 15579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_CANCEL = 15580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_COPYCONFIG_CREDENTIALS = 15581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_FILTER_TXTFILES_CSVFILES_DATFILES = 15582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LOCKSETS = 15583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_READERS = 15584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_LAST_ERROR_TIMESTAMP = 15585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARVESTER_PERFORMANCE_WARNING = 15586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_NO_PARKING_RULE_ASSIGNED = 15587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUSTERING = 15588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_DESCRIPTION_MUSTERING = 15589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DELETE_OFFICER = 15590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LABEL_PRIVILEGES_FORCEACKNOWLEDGEALARMS = 15591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTING_MORE_THAN = 15592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTING_MORE_THAN_X_Y = 15593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_CARDHOLDERMOBILEPHONE = 15594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSGRANT_CONFIRMATION_REQUESTED = 15595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_DENIED_CONFIRMATIONTIMEOUT = 15596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_GRANTCONFIRMATION_TIMEOUT = 15597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_PASSAGECOUNTEXCEEDED = 15598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_DENIED_PASSAGECOUNTEXCEEDED = 15599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_DIRECTORY = 15600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_CONFIRMATION = 15601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_ARCHIVERSERVICECONNECTIONFAILED = 15602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_ARCHIVERSERVICECONNECTIONFAILED = 15603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READS_MATCHING = 15604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVIDENCE_READY = 15605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_DESCRIPTION_EVIDENCE_READY = 15606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FEDERATED_ENTITIES = 15607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VIDEOWATERMARKING_WORKSTATION_LIMITATION = 15608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATED_ARCHIVERS = 15609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_ENTITIESHAVEDIAGNOSTIC = 15610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_ENTITIESHAVEDIAGNOSTIC = 15611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CIM = 15612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CIM_WIDGET_DESCRIPTION = 15613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVIEW_VIEW = 15614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS_MONITORED = 15615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPERING_DETECTED = 15616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_TAMPERING_DETECTED = 15617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_REFERENCE = 15618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADJECTIVE_CURRENT = 15619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_TO_LOAD = 15620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_THUMBNAIL = 15621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_EDIT_IN_CONFIGTOOL = 15622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_IN_MONITORING = 15623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_CAMERAS = 15624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RESET_CAMERA = 15625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RESET_ALL_CAMERAS = 15626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_EXCLUDED_ENTITIES = 15627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISMISS_HEALTH_EVENTS = 15628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISMISS_HEALTH_EVENTS = 15629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DISMISS_HEALTH_EVENT = 15630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_ALARM_MONITORING_BY_LATEST = 15631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UPDATE_PASSWORD = 15632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNIT_UPDATE_PASSWORD = 15633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_UPDATE_PASSWORD = 15634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_DISMISSED_EVENT = 15635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_STRENGTH = 15636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NOBADGETEMPLATE = 15637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNIT_UPDATE_PASSWORD = 15638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_PASSWORD_UPDATED = 15639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_BACKUP_BEFORE_PASSWORD_CHANGE = 15640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NONLOCALENTITY = 15641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_THEOFFICERISACTIVE = 15642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_THEOFFICERISINACTIVE = 15643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_THEOFFICERISUNLICENSED = 15644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_YOUAREGOINGTODEACTIVATEOFFICER = 15645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INACTIVEOFFICERSCANNOTUPLOADNEWEVIDENCE = 15646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACAMERAISSTILLLINKEDTOOFFICER = 15647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_QUESTION_DOYOUWANTTOUNLINKTHECAMERA = 15648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CAMERASLINKEDTOANINACTIVEOFFICERCANNOTUPLOAD = 15649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUGIN_TYPE = 15650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOURCE_AND_DESTINATION_ROLES_HAVE_DIFFERENT_CONFIGS = 15651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PASSWORDS = 15652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_PASSWORD = 15653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_CONTAINEDINLIST = 15654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CONFIRM_USER_PASSWORD_EXPORT_FILE = 15655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATION = 15656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCORRECT_USER_PASSWORD = 15657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CREDENTIAL_CONFIGURATION = 15658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_CREDENTIAL_CONFIGURATION = 15659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_VIEW_EXPORT_PASSWORDS = 15660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNIT_VIEW_EXPORT_PASSWORDS = 15661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_DIAGNOSTIC = 15662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_FAILED = 15663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_PARTIALLY_SUCCEEDED = 15664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_COMPLETED_SUCCESSFULLY = 15665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_PASSWORDS_EXPORTED = 15666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_PASSWORDS_EXPORTED_DESCRIPTION = 15667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MOBILE_CREDENTIAL_TRANSFER_NO_CARDHOLDER = 15668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_UNIT_INVENTORY = 15669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_UNIT_INVENTORY = 15670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_PASSWORD_CHANGED = 15671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_CHANGED_MANUAL_DESCRIPTION = 15672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_CHANGED_GENERATED_DESCRIPTION = 15673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIFFERENT_USER_IS_NEEDED_FOR_AUTHORIZATION = 15674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VAULT_AUTOMATIC_CLEANUP_OPTION = 15675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATUREDESCRIPTION_UNITASSISTANT = 15676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANT = 15677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANT_TRACEROUTE = 15678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATUREDESCRIPTION_UNITASSISTANT_TRACEROUTE = 15679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VALIDATE_SAAS_CLOUDLINK_LOCALIP = 15680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_IN_TIME = 15681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_OUT_TIME = 15682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_TIME_PRESENT = 15683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SINCE_FIRST_ENTRY = 15684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CIM = 15685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CIM = 15686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CIM_MISSING_PRIVILEGE = 15687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROSS_TOTAL_TIME = 15688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED_AUTHORIZED = 15689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_MULTIPLE_PARKING_SESSIONS_CONFIRMATION = 15690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_SINGLE_PARKING_SESSION_CONFIRMATION = 15691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MAP_ROLE_DISABLING_BACKWARD = 15692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTPORTALREADYUSED = 15693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTHASFAILOVER = 15694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTNOTCOMPATIBLE = 15695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTCANNOTSTART = 15696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BWCROLECANNOTHAVEFAILOVE = 15697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOASSOCIATEDARCHIVERSRUNNING = 15698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_IN_WITH = 15699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CLOSE_PARKING_SESSIONS = 15700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CLOSED_MANUALLY = 15701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_MANUAL_CLOSURE = 15702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION = 15703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_CORRELATION = 15704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_REPORT = 15705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_SHORT_DESC_CORRELATION_REPORT = 15706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPES = 15707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_SOURCES = 15708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_SOURCE = 15709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_SEARCH = 15710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_SEARCH = 15711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CORRELATION_MANAGER_NAME = 15712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CORRELATION_MANAGER_DESCRIPTION = 15713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CORRELATION_RULE_HIT = 15714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_TRIGGERING_TYPE = 15715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_ROOT_CONDITION = 15716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_CORRELATION_RULE_TRIGGER_CONDITIONS = 15717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_CORRELATION_RULE_ACTIONS = 15718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_NAME_CORRELATION_RULE = 15719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CORRELATION_ALERT = 15720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CORRELATION_RULE_HIT_EVENT = 15721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ALARM_DESCRIPTION = 15722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_DATA_SOURCES_GROUP = 15723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_GROUP = 15724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_VIEW_RULES = 15725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_ADD_RULES = 15726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_REMOVE_RULES = 15727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_MODIFY_RULES = 15728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_GROUP = 15729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_VIEW_RULES = 15730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_ADD_RULES = 15731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_REMOVE_RULES = 15732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_MODIFY_RULES = 15733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_AUTHENTICATION_FAILED = 15734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_LICENSE = 15735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVE_DIRECTORY_LINK_PROPERTIES = 15736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SHARED_PARTITION_CANNOTADD = 15737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SHARED_PARTITION_PARTIALADD_XY = 15738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADDELIGIBLEENTITIES = 15739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADD_UNIT_USER_INSUFFICIENT_PERMISSIONS = 15740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_NETWORK_SETTINGS_COMBINATION = 15741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_DATE = 15742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_SLOW_LOGIN = 15743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PASSWORD = 15744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHORIZATION = 15745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_REQUEST_SENT = 15746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITASSISTANT_RESTART = 15747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_REQUESTED = 15748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_SUCCEEDED = 15749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MATCH = 15750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MATCH = 15751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_SUCCEEDED_OPERATOR_CONFIRMATION = 15752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_OPERATOR_CONFIRMATION = 15753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_FAILED = 15754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_FAILED_OPERATOR_CONFIRMATION = 15755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISMATCH = 15756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISMATCH = 15757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISSING = 15758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISSING = 15759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_TIMEOUT = 15760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_TIMEOUT = 15761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_SINGLE_PERSON_CHECK_FAILED = 15762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_NO_PRESENCE_DETECTED = 15763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_AREA_NO_PRESENCE_DETECTED = 15764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_TOO_MANY_PEOPLE = 15765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_AREA_TOO_MANY_PEOPLE = 15766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_REX = 15767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_UNLOCK_POSTPONED = 15768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_UNLOCKED = 15769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_EXTENSION_GUARD = 15770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_EXTENSION_GUARD = 15771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_MAXIMUM_TIME = 15772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_MAXIMUM_TIME = 15773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_OPERATOR = 15774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_OPERATOR = 15775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_RELEASE_DELAY = 15776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_RELEASE_DELAY = 15777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_HOST_TIMEOUT = 15778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_HOST_TIMEOUT = 15779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_RESET = 15780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_AUTOMATIC = 15781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_RESET_AUTOMATIC = 15782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_HARDWARE = 15783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_RESET_HARDWARE = 15784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_OPERATOR = 15785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_CREATED = 15786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_CREATED = 15787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_CHANGED = 15788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_CHANGED = 15789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_REMOVED = 15790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_REMOVED = 15791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_BLOCK = 15792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_NAME_ATTRIBUTE = 15793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SYNCHRONIZE_ENTITIES = 15794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SYNCHRONIZE_ENTITIES_OPTIONAL = 15795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_REMOVED_ITEMS = 15796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SELECT_MAP = 15797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD = 15798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_BLOCK = 15799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_NAME_ATTRIBUTE = 15800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_LATITUDE_ATTRIBUTE = 15801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_LONGITUDE_ATTRIBUTE = 15802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_NO_MAPPINGS_FOUND = 15803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_ASSOCIATE_BLOCK = 15804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_UNMODIFIED = 15805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBECREATED = 15806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBECHANGED = 15807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBEREMOVED = 15808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_AUTOCAD_ITEM_TOBEREMOVED_X = 15809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_AUTOCAD_ITEMS_TOBEREMOVED_X = 15810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATEDPIN = 15811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROFILE_SELECTION = 15812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDSCANNER_REQUIRES_VC2008SP1RUNTIME = 15813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEASUREMENT_UNITS = 15814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUFFIX_WEEKS = 15815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_SYSTEM = 15816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOFENCE_AREAS = 15817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTING = 15818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_BE_ADMIN_TOOL = 15819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FAILED = 15820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SAML2_INTEGRATION_COUNT = 15821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_OPENID_INTEGRATION_COUNT = 15822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_REQUIRES_VC2008SP1RUNTIME = 15823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_DISPLAY_NAME = 15824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ISSUER = 15825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_DOMAIN_NAMES = 15826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_CLIENT_ID = 15827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_RESOURCE_ID = 15828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_AUDIENCE = 15829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_SCOPES = 15830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REDIRECT_URI = 15831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_USERNAME_CLAIM = 15832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_GROUP_CLAIM = 15833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_URL = 15834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_ACS_URL = 15835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_USER_ASSERTION = 15836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_GROUP_ASSERTION = 15837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_SETTINGS = 15838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_IDP = 15839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_PROTOCOL = 15840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_MISSING_HTTPPOST = 15841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_NOTSUPPORTED_WANTAUTHNSIGNED = 15842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_ACS_MISSINGCHARACTER = 15843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_URI_VALIDATION = 15844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_IMPORTED_GROUP_NAME = 15845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_IMPORTED_GROUP_INTERNAL_NAME = 15846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_SUMMARY = 15847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ENABLE_DATA_TYPE_SECURITY = 15848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CORRELATION_ENABLE_DATA_TYPE_SECURITY = 15849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_REGISTRATION_HEARTBEAT = 15850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_NUMBER_OF_QUERIES_PER_RULES_ENGINE = 15851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_TIMEOUT = 15852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_EXTENDED_TIMEOUT = 15853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ENABLE_V1_EVENTS = 15854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_CUSTOM_EVENT_ID = 15855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_EVENT_DESCRIPTION_FORMAT = 15856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_EVENT_DESCRIPTION_FORMAT_ALT = 15857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ADDRESS_NOT_AVAILABLE = 15858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_IMAGE_UNAVAILABLE = 15859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_WEBSITE_LINK = 15860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_SOUND = 15861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_UNKNOWN = 15862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_HIT_DEFAULT_MESSAGE = 15863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DATA_SOURCE_PLURAL_ENDING = 15864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_SELECTED_N_ENTITIES = 15865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_EQUAL_TO = 15866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_LIKE = 15867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_IN = 15868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHES_PATTERN = 15869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_REGION = 15870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_CORRELATION_RULE_VARIABLE_TEXT = 15871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_TIMES = 15872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_SOURCES = 15873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CORRELATION_CHANGING_TRIGGER_DATUM = 15874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_SEARCH_CONDITION = 15875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_CONDITION = 15876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ASSIGN_VARIABLE = 15877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_SEEN = 15878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CHILD_CONDITION = 15879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_BLOCK = 15880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_FILTER_ON_TRIGGER = 15881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_CONDITION = 15882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_CONDITION = 15883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITION = 15884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHERE = 15885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_VARIABLE_ASSIGNMENT = 15886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_ID = 15887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_TIME = 15888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_TYPE = 15889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_CONDITION_OF_TYPE = 15890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_CORRELATION_RULE_DIAGNOSTICS = 15891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_DIAGNOSTICS_CUSTOM_ACTION_NAME = 15892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CLONED_CORRELATION_RULE_NAME = 15893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLONE_CORRELATION_RULE = 15894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_FILE_FILTER_ALL_FILES = 15895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_FILE_FILTER_ZIP_FILES = 15896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CORRELATION_RULE = 15897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CORRELATION_RULES = 15898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_CORRELATION_RULES = 15899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_CORRELATION_RULE_DEFAULT_NAME = 15900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_CORRELATION_RULE_DEFAULT_DESCRIPTION = 15901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PATH_MUST_EXIST_ON_CORRELATION_SERVER = 15902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CORRELATION_FILE_PATH = 15903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_ACTION_AUTOMATICALLY_ATTACH_ENTITIES = 15904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_ENTITIES_TO_APPLICATION = 15905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_DISPATCH = 15906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AUTOMATIC_DISPATCH = 15907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_FILES = 15908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CUSTOM_EVENT = 15909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CORRELATION_HIT_EVENT = 15910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CUSTOM_EVENT_DESCRIPTION_FMT = 15911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK_CAMERAS_DESCRIPTION_FMT = 15912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK_CAMERAS_DESCRIPTION_FMT_DEFAULT = 15913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_FILE_TO = 15914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_MESSAGE_DESCRIPTION_FMT = 15915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_ALARM_AUTOMATIC_DISPATCH_DESCRIPTION_FMT = 15916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY = 15917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREQUENCY = 15918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WITHIN_RANGE = 15919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WITHIN_TIME = 15920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TYPE_FMT = 15921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TEST_TAG = 15922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TEST_SOURCE_ID = 15923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CORRELATION_SERVICES_NOT_AVAILABLE = 15924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_CORRELATION_RULE_FOUND_EVENTS = 15925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_CORRELATION_RULE_NO_HIT = 15926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_ATTACH_CAMERAS = 15927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_SEND_TO_RECIPIENTS = 15928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_OF_SIMULATION = 15929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICK_PIN_TO_SELECT_LOCATION = 15930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_RULE_SIMULATION = 15931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOUBLE_CLICK_TO_UPDATE = 15932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCES_GROUP = 15933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILES_OLDER_THAN = 15934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLOSE_PARKING_SESSIONS = 15935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULED = 15936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_CREDENTIAL = 15937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_IMAGE_COMPRESSED_IF_CONTINUE = 15938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_OF_THE_FOLLOWING_OCCURS = 15939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_GREATER_THAN = 15940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_LESS_THAN = 15941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_GREATER_THAN_OR_EQUAL_TO = 15942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_LESS_THAN_OR_EQUAL_TO = 15943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_NOT_EQUAL_TO = 15944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_EQUAL_TO = 15945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_IN = 15946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS = 15947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVIEW = 15948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ERROR_DUPLICATEFRIENDLYNAME = 15949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_ISSUER_NOTFOUND = 15950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_AVAILABLE_ISSUERS = 15951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ACCESS_TOKEN_CONFIG_ERROR = 15952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS = 15953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_OF_RULE = 15954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_CONFIG_EXTERNAL_UNIQUE_ID = 15955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_SEAMILES_ABBREV = 15956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_SEAMILES = 15957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FAILED_CHECK_DIAG = 15958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_PROBLEMS = 15959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COORDINATES = 15960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_QR_CODE = 15961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_ID = 15962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ZONES_CONTROLLED_WITH_MULTIPLE_UNITS = 15963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DELETE_MAP_ITEMS_TO_CHANGE_SCALE = 15964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TASK_SENT_TO_YOU = 15965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_TEMPLATE = 15966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_TEMPLATES = 15967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE = 15968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE = 15969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_MOBILEFORWARDCAMERAS = 15970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_MOBILEFORWARDCAMERAS = 15971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_ACCESSCONTROL_DOORFORCEDOPENWITHMOTION = 15972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_ACCESSCONTROL_DOORFORCEDOPENWITHMOTION = 15973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_ACCESSCONTROL = 15974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_ACCESSCONTROL = 15975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_AUTOMATICDISPATCH = 15976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_AUTOMATICDISPATCH = 15977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_OF_DAY = 15978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_REGION = 15979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_N_REGIONS = 15980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_MATCHING_OPTIONS = 15981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CHARACTER = 15982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_DIGIT = 15983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_NON_DIGIT = 15984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_WORD_CHARACTER = 15985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_NON_WORD_CHARACTER = 15986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_OR_MORE_TIMES = 15987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_OR_ONE_TIMES = 15988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_OR_MORE_TIMES = 15989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCR_EQUIVALENTS = 15990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCR_EQUIVALENTS_N_TIMES = 15991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU = 15992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU = 15993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU_ONTHEFLYHOTLIST = 15994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU_ONTHEFLYHOTLIST = 15995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU_SPECIFICHOTLIST = 15996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU_SPECIFICHOTLIST = 15997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_MOBILETHREATLEVEL = 15998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_MOBILETHREATLEVEL = 15999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_ACCOUNTLOCKEDDURINGRECOVERYTITLE = 16000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_ACCOUNTLOCKEDDURINGRECOVERYDESCRIPTION = 16001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_IMAGE_SYNC_COMPLETED = 16002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_WARNING_DELTA_SYNC_SLOW = 16003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_DELTA_SYNC_COMPLETED = 16004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_MINIMUM_SECURITY_CLEARANCE = 16005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SET_MINIMUM_SECURITY_CLEARANCE = 16006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TARGET_ENTITIES_RESTART = 16007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IMAGE_FAILED_TO_UPLOAD = 16008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_CAMERA_AUDIO = 16009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_SOUCRES_ONLINE = 16010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_FILTER_KMLFILES = 16011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_EVENTS_GROUP = 16012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_DATASOURCES_WARNING = 16013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTERED_BY = 16014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_MAP_LOCATIONS_FOR = 16015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLING_THREAT_LEVEL_REQ_AREAS = 16016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVE_NORULER_DIFFERENTTIMEZONES = 16017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_MINIMUM_SECURITY_CLEARANCE_MODIFIED = 16018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_MINIMUM_SECURITY_CLEARANCE_CHANGED_TO = 16019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_COPYCONFIG_OPTION_WARNINGS_TOOLTIP = 16020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_REPORT_CONTAINS_FIRST_X_RESULTS = 16021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OHMS = 16022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ACCESSRULE_GRANT = 16023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ACCESSRULE_DENY = 16024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VERB_ACCESSRULE_ADDDOORSELEVATORSAREAS = 16025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSPOINT_SIDE_X = 16026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNIT_RENEW_CERTIFICATE = 16027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_ACCESSRULE = 16028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILE_SPYMODE = 16029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILE_SPYMODE = 16030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEO_UNIT_UPDATE_CERTIFICATE = 16031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_UNIT_UPDATE_CERTIFICATE = 16032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILE_MANAGE = 16033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILE_MANAGE = 16034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MENU_PEOPLE = 16035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROVIDER_CREDENTIAL_LICENSE_ERROR = 16036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSV_FILE = 16037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_COMPLETE = 16038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_ADDED = 16039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_UPDATED = 16040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_IGNORED = 16041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOUND_COLUMNS_AND_USER_GROUPS = 16042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_SKIPPED_DUPLICATE_EXTERNALID = 16043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_DETECTED = 16044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_USED_MORE_THAN_ONCE = 16045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_SHOWADVANCED = 16046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_HIDEADVANCED = 16047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ROWS_WITH_EMPTY_NAME_DETECTED = 16048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURENAME_TRACEROUTE = 16049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREDESCRIPTION_TRACEROUTE = 16050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREINFO_TRACEROUTE = 16051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRACEROUTESETTINGS = 16052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_EXECUTIONTIMEOUT = 16053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_MAXCONCURRENCY = 16054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_MAXCONCURRENCY = 16055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_MAXHOPS = 16056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_MAXHOPS = 16057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_EXECUTIONTIMEOUT = 16058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANTMODULENAME_DIAGNOSTIC = 16059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUPS_ALREADY_UPTODATE = 16060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_USERGROUPS_CREATED = 16061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVE_TRANSFER_HISTORY = 16062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_USERINFO_ENDPOINT = 16063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ACCESSTOKEN = 16064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CLIENT_SECRET = 16065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CONFIDENTIAL_CLIENT = 16066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_OBTAIN_CLAIMS_FROM = 16067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_DECODE_ACCESS_TOKEN = 16068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_EXTRACT_GROUPS_FROM_TOKEN = 16069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_TOKEN_HAS_NO_CLAIM_OF_TYPE_X = 16070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_EXTRACT_USERNAME_FROM_TOKEN = 16071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_CONTAINED_EXTRA_CLAIMS = 16072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_DISPLAYNAME_CONFLICT = 16073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_X_FROM_REMOTE_WITH_DETAILS_Y = 16074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_REMOTE_SERVER_CONFIG = 16075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_CLIENTID = 16076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_REMOTE_SERVER_ERROR_LOGS = 16077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_EXPIRED = 16078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_NOT_YET_VALID = 16079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_NOT_TRUSTED = 16080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_WRONG_USAGE = 16081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_MISSING_PROOF_OF_POSSESSION = 16082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_UNSUPPORTED_RESPONSE_TYPE = 16083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_UNAUTHORIZED_CLIENT = 16084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_CLIENT = 16085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_SCOPE = 16086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_REQUEST = 16087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CONFIGURED_CLAIMS_NOT_FOUND = 16088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RADIO_CANTCHANGEACCESSRULETYPEAFTERCREATION = 16089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTHENTICATION_NAME = 16090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTHENTICATION_DESCRIPTION = 16091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_TSV = 16092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SSV = 16093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_GEOJSON = 16094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_JSON = 16095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_BSON = 16096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_KML = 16097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_KMZ = 16098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SHP = 16099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SHX = 16100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_DBF = 16101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_XLS = 16102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_XLSX = 16103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_DATABASE_PREFIX = 16104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_POPULATE_FROM_SAMPLE_FILE = 16105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_POPULATE_FROM_SAMPLE_FILE = 16106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_POPULATE_FROM_SAMPLE_FILE = 16107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DEFAULT_FIELD_NAME = 16108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON_MAP = 16109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPE_ON_MAP = 16110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_IMAGE = 16111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_FIELDS = 16112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROL_TYPE = 16113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_DESCRIPTOR = 16114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_FIELDS = 16115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DEFAULT_FIELD_NAME_NO_INDEX = 16116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_ICON = 16117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTOR_ICON_FILE_FILTER = 16118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMPORT_DATA = 16119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFRESH_COUNTS = 16120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTING_FILE = 16121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_LOG = 16122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_CONFIGURATION_BEGIN = 16123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELDS = 16124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_EVENT_DRIVEN = 16125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOFENCE = 16126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_GEOFENCE_SHOULD_BE_SET_FOR_EVENT_DRIVEN_DATA = 16127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTOR = 16128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEXED_FIELD = 16129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELDS_COUNT = 16130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_FIELD = 16131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_FIELDS = 16132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_STRING = 16133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_INT = 16134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_LONG = 16135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BOOL = 16136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_DOUBLE = 16137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_DATETIME = 16138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_ENTITY = 16139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_BASE64 = 16140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_UTF8 = 16141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_FILE = 16142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_NON_BINARY_EXTENDED = 16143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_DATABASE_METRICS = 16144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_DATABASE_COUNT_A = 16145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_DATABASE_COUNT_B = 16146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DATASOURCE = 16147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESIGN_NEW_DATASOURCE = 16148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PARSING_COMPLETED = 16149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DISABLING_TRIGGERS = 16150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_DISABLE_CONTRAINTS = 16151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_RENABLE_CONTRAINTS = 16152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_KEY_DETECTED = 16153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_PARSE_FILE = 16154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_IMPORT_FILE = 16155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTION_ENGINE_NAME = 16156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTINO_ENGINE_DESCRIPTION = 16157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_DATA_ON_MAP = 16158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_NEW_DATA = 16159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_OR_DROP_FILE_HERE = 16160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_QUERYING_INGESTION_ROLES = 16161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PLEASE_WAIT_SENDING = 16162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATION = 16163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_NAME = 16164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_DESCRIPTION = 16165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MUST_SELECT_DATA_TO_INGEST = 16166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNABLE_TO_LOAD_ROLE = 16167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ERROR_INGESTING_DATA = 16168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ERROR_SENDING_MESSAGE_TO_INGESTION_ROLE = 16169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_FIND_OWNING_ROLE = 16170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_REGISTRATIONS = 16171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_WORKLOAD_PER_RULES_ENGINE = 16172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_MAPPING_INDICIES = 16173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_TYPES = 16174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_EXPORTER_ENDPOINTS_COUNT = 16175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_METADATA_DOWNLOAD_FAILED = 16176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_STATUS_METADATA_ENDPOINTS = 16177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REDIRECT_URIS = 16178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_SETTINGS = 16179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_SETTINGS_PUBLIC_ENDPOINTS = 16180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILE_CREDENTIAL_MANAGER_NAME = 16181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILE_CREDENTIAL_MANAGER_DESCRIPTION = 16182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOREGROUND = 16183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_LESS = 16184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_ACTION = 16185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMIT_DATASOURCE_FIRST = 16186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DISABLE_ADMIN_ACCOUNT = 16187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DISABLE_ADMIN_ACCOUNT = 16188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_UARCOMPATIBILITYFAILURETITLE = 16189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_UARCOMPATIBILITYFAILUREDESCRIPTION = 16190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TRUST_CERTIFICATE = 16191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATION_RULES = 16192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_RULE = 16193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_USER_LOCATIONS = 16194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHERE_LC = 16195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTION_ENGINE_DESCRIPTION = 16196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITION_LC = 16197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITIONS_LC = 16198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_LC = 16199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIONS_LC = 16200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_EVENT_FORMAT = 16201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_MANAGER_NAME = 16202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_MANAGER_DESCRIPTION = 16203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLEDDRIVERSVERSION = 16204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_GPX = 16205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPLATES = 16206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAGS = 16207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE = 16208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCES = 16209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MODIFY_ENTITIES_NO_PRIVILEGE_WITH_NAME = 16210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MODIFY_ENTITIES_NO_PRIVILEGE_COUNT = 16211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PASSWORDHISTORY = 16212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_DATEOFATTEMPT = 16213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_PREVIOUSPASSWORD = 16214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_NEWPASSWORD = 16215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDHISTORYDESCRIPTION = 16216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDCHANGECOUNT = 16217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FOV_MAX_DISTANCE = 16218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REQUEST_OFFLINE_ACCESS = 16219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_USE_ARTIFACT_RESOLUTION = 16220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2 = 16221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_USE_ARTIFACT_RESOLUTION = 16222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_GROUP_ASSERTION = 16223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_USERNAME_CLAIM = 16224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_URL = 16225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_ISSUER = 16226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID = 16227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WSFED_AND_WSTRUST = 16228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SSO_PROTOCOL_CHANGE = 16229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FOV_DISTANCE = 16230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOV_DISTANCE = 16231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOV_ANGLE_OF_VIEW = 16232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMPORT_CAMERAS = 16233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WSFED_OR_WSTRUST = 16234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNITPASSWORDHISTORYCONSULTED = 16235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_UNITPASSWORDHISTORYCONSULTEDDESCRIPTION = 16236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_PERCENTAGE = 16237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASK_SHORTDESC_COINCIDENCES = 16238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_VALID = 16239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_WARNING = 16240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_ERROR = 16241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATURENOTE_TRACEROUTE = 16242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVE_TRANSFER_SEQUENCE_IMPORTED = 16243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_DATA = 16244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNITPASSWORDRECOVERED = 16245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_UNITPASSWORDRECOVEREDDESCRIPTION = 16246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VERB_PASSWORDRECOVERY_RECOVER = 16247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDRECOVERY_INFO = 16248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDRECOVERY_FAILED = 16249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDRECOVERY_SUCCESS = 16250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDRECOVERY_ONGOING = 16251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSTIC_UNITCONTROLDRIVERPACKNOTINSTALLED = 16252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSTIC_UNITCONTROLDRIVERPACKNOTINSTALLED_FORMAT = 16253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_ACCOUNTBLOCKED = 16254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_DELTA_SYNC_USN_WARNING = 16255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_DRIVE_OUTPUT_RELAYS_SYNERGIS_APPLIANCES = 16256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_SECURE_READER_CONNECTIONS = 16257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_STRONG_PASSWORDS_ACCESS_CONTROL_UNITS = 16258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_ACCESS_CONTROL_EQUIPMENT = 16259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE_DIGITAL = 16260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_ACCESS_DENIED = 16261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_NO_CONNECTION = 16262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_REMOTE_CONNECTION_DISABLED = 16263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_IN_USE = 16264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_COULD_NOT_VERIFY = 16265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TITLE_DATABASE_INVALID_SETTINGS = 16266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DATABASE_VERIFYING_SETTINGS = 16267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_FILE = 16268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TOO_LARGE = 16269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_FILESIZE_IS_FORMAT = 16270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOCODING_SERVICE_URL = 16271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_UNITALREADYONLINE = 16272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_MAP_OBJECTS = 16273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OBJECT_SPECIFIC_PROPERTY = 16274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_OBJECT_PROPERTY = 16275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_USED_BY_ANOTHER_ROLE = 16276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_AUTO_SAVE = 16277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_LAYERS = 16278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND_LAYERS = 16279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VALID_DRIVER_PACK = 16280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_INVALID_DRIVER_PACK = 16281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS = 16282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS_POLICIES = 16283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_EXPIREDCERTIFICATERENEWAL = 16284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANTMODULENAME_SECURITY = 16285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_ENABLEHTTPSAFTERINSTALLATION = 16286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_NOTIFICATIONSENT_XDAYSBEFOREEXPIRED = 16287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_NOTIFICATIONSENT_XDAYSBEFOREEXPIRED_UNIT = 16288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DRIVERPACK_NOT_INSTALLED = 16289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_OBSERVER_ENTITY = 16290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_OBSERVED_RESOURCE_TYPE = 16291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_LOGOUT_URIS = 16292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_SCOPES = 16293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_AUDIENCE = 16294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_RESOURCE = 16295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_GROUP_CLAIM = 16296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_DOMAINS = 16297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_DISPLAY_NAME = 16298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_CLIENT_ID = 16299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_ISSUER = 16300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_USERNAME_CLAIM = 16301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADDUNITDIALOG_DRIVERPACK_NOT_INSTALLED = 16302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITENROLLMENT_DRIVERPACK_NOT_INSTALLED = 16303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SPECIFICCOMMANDS_DRIVERPACK_NOT_INSTALLED = 16304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRMWAREUPGRADE_DRIVERPACK_NOT_INSTALLED = 16305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOMATION_BASIC = 16306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOMATION_ADVANCED = 16307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INGESTION = 16308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INGESTION_COUNT = 16309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_SSL_FAILED = 16310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_VERIFIED = 16311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CORRELATION_REPORT_DESCRIPTION = 16312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATESTVERSIONRECOMMENDED = 16313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ALARM = 16314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILECREDENTIALSTATUS = 16315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISMOBILECREDENTIAL = 16316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HEALTHEVENT_INVALID_DRIVER_PACK_DESCRIPTION = 16317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HEALTHEVENT_VALID_DRIVER_PACK_DESCRIPTION_FORMAT = 16318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITMANAGEMENT_GROUP = 16319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CERTIFICATE_MANAGEMENT_SETTINGS = 16320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YEARLY = 16321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTH = 16322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ONLY_COMMA_SEPARATED_VALUES_ACCEPTED = 16323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_USER_GROUPS_MATCH_WITH_PROVIDER_HINT = 16324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADDED_AND_UPDATED_ENTITIES_ON_MAP = 16325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PREVIEW = 16326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_LPRMONITORING = 16327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_LPRMONITORING = 16328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAR_PLATES = 16329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_HIGH_RES_REPORT_IMAGES = 16330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS_INFORMATION = 16331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_VALIDITYPERIOD = 16332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_SUBJECTALTERNATIVENAMES = 16333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_COUNTRY = 16334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_STATEPROVINCE = 16335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_LOCALITY = 16336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_ORGANIZATION = 16337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_ORGANIZATIONALUNIT = 16338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_COMMONNAME = 16339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CSR_SUBJECTALTERNATIVENAMES = 16340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMAL_CARDHOLDER_SYNCHRONIZATION = 16341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_BEFORE_EXPIRATION = 16342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_RECOMMENDED_DAILY_RECURRENCE_ACTION = 16343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_UNITS = 16344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_SETTINGS_NOT_FOUND = 16345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_ROLE_NOT_FOUND = 16346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_UNEXPECTED_ERROR = 16347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_INHERIT_FROM_UNITASSISTANT = 16348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_USE_CURRENT = 16349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_FOR_ENTITIES = 16350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_ON_DEVICE = 16351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_ON_DEVICES = 16352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_FOR_ENTITY = 16353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_EXPIRED_CERTIFICATES_NOT_PERMIT = 16354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKBOX_FORCE_UPDATE_EXPIRED_CERTIFICATES = 16355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTI_VALUES = 16356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UPDATE_CERTIFICATES = 16357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MISSING_PRIVILEGES_UPDATE_EXPIRED_CERTIFICATES = 16358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNABLE_RETRIEVE_UNITASSISTANT_SETTINGS = 16359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_VIEW_CERTIFICATE = 16360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_EXPIRATION = 16361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_STATUS = 16362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_CERTIFICATE_UPDATE_RESULT = 16363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_VALID = 16364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_NOT_AVAILABLE = 16365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_COMMON_NAME = 16366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_TIME = 16367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_KEY_USAGE = 16368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_REVOKED = 16369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_EXPLICITLY_DISTRUSTED = 16370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_CHAIN_OF_TRUST = 16371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_SIGNATURE_ERROR = 16372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_CERTIFICATE_TRUST_LIST = 16373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_REVOCATION_CHECK_ERROR = 16374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_CONSTRAINT_VIOLATION = 16375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_CERTIFICATE_EXTENSION_ERROR = 16376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CERTIFICATE = 16377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_GENERATE_SIGNING_REQUEST = 16378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_GET_SIGNED_CERTIFICATE = 16379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_APPLY_CERTIFICATE = 16380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_CURRENT_CERTIFICATE_REVOKED = 16381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_CURRENT_CERTIFICATE_EXPIRED = 16382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_UNEXPECTEDLY = 16383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNITMANAGEMENT_GROUP = 16384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CERTIFICATE_MANAGEMENT_SETTINGS = 16385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGING_SETTING_REQUIRE_ACCESSMANAGER_RESTART = 16386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HIGH_RES_IMAGE_USE = 16387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALIDVERSIONCONFIGURATIONNOTSUPPORTED = 16388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PROTOCOL_VERIFYING_AVAILABILITY = 16389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROTOCOL_INSTANCE_NOT_AVAILABLE = 16390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PROTOCOL_INSTANCE_NOT_AVAILABLE = 16391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_GOOD = 16392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_NEARING_LIMIT = 16393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_FULL_USAGE = 16394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_UNKNOWN = 16395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMAININGLICENSECOUNT = 16396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NOMOBILECREDENTIALMANAGERROLE = 16397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVING_NOTMONITORED = 16398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_APPLICATION_CONNECTION_NOTMONITORED = 16399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_APPLICATION_NOTMONITORED = 16400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CONNECTION_NOTMONITORED = 16401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNITCONNECTION_NOTMONITORED = 16402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASEAUTOMATICBACKUP_NOTMONITORED = 16403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASE_NOTMONITORED = 16404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_HIGHCPUUSAGE_NOTMONITORED = 16405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_HIGHMEMORYUSAGE_NOTMONITORED = 16406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDATABASESPACE_NOTMONITORED = 16407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_OFFLOAD_NOTMONITORED = 16408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_PATROLLER_NOTMONITORED = 16409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_POS_DATABASE_NOTMONITORED = 16410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ROLE_NOTMONITORED = 16411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_RTPPACKET_NOTMONITORED = 16412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SERVICE_NOTMONITORED = 16413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SYNCHRONIZATION_NOTMONITORED = 16414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VIDEOSIGNAL_NOTMONITORED = 16415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNAUTHORIZED_DISK_NOTMONITORED = 16416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ACTIVE_ALARMS_NOTMONITORED = 16417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DIRECTORY_NOTMONITORED = 16418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWARCHIVEDISKSPACE_NOTMONITORED = 16419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LIVE_HEALTH_MONITORING_NOTMONITORED = 16420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASEFAILOVER_MAINDB_NOTMONITORED = 16421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASE_RESTORE_NOTMONITORED = 16422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TRICKLING_NOTMONITORED = 16423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_BACKUP_NOTMONITORED = 16424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_AGENT_NOTMONITORED = 16425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_CONSOLIDATION_NOTMONITORED = 16426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_RECORDING_NOTMONITORED = 16427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC_NOTMONITORED = 16428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_CONNECTION_NOTMONITORED = 16429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_TRANSMISSION_NOTMONITORED = 16430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_NOTMONITORED = 16431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_NOTMONITORED = 16432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_NOTMONITORED = 16433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_NOTMONITORED = 16434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DRIVER_PACK_NOTMONITORED = 16435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_IMPORT_CANCELLED = 16436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_DUPLICATE_CONFIGURATION = 16437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIAGNOSTIC_INTRUSIONLICENSE = 16438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_LPRMONITORING = 16439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HELP_LPRMONITORING = 16440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_LIVE_HIT_MONITORING = 16441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_LIVE_HIT_MONITORING = 16442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REVERSETUNNEL_CLIENTS = 16443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REVERSETUNNEL_SERVERS = 16444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTAPPLICABLE = 16445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CUSTOM = 16446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGURATION = 16447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_KEYTRANSFER = 16448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_FILE_XML = 16449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_UNITS_XML = 16450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_EXPORT = 16451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_COMPONENTS = 16452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH = 16453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_INDEXED = 16454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_KCV = 16455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA1 = 16456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA256 = 16457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA384 = 16458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA512 = 16459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVE_APPLICATION_READ_KEYS = 16460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_KEYS_CONFIGURATIONS = 16461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_KEY = 16462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NEW_KEY_VERSION = 16463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_KEY_COMPONENT = 16464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_SELECTION = 16465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_VIRTUAL = 16466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CANNOT_SELECT_UNIT = 16467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_EXPORT_CONGURATIONS_AND_KEYS = 16468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_MODIFY_KEYS = 16469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREEXPORTCONGURATIONSANDKEYS = 16470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREMODIFYKEYS = 16471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONAREA_VIRTUALALARM = 16472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_INPUT = 16473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_OUTPUT = 16474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_REMINDER = 16475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_VIRTUALALARM_INPUT = 16476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_VIRTUALALARM_OUTPUT = 16477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHILD_LAYER_IN_ERROR = 16478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LAYER_TYPE_NOT_SUPPORTED = 16479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_FIND_LAYER_SERVER = 16480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNAVAILABLE_ESRI_LICENSE = 16481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMSOURCES = 16482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CONFIDENTIAL_CLIENT = 16483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLIENT_SECRET = 16484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLAIMS_FROM_ACCESSTOKEN = 16485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLAIMS_FROM_USERINFO_ENDPOINT = 16486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_REQUEST_OFFLINE_ACCESS = 16487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVACUATION_STARTED = 16488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVACUATION_ENDED = 16489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_LITE = 16490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_ADVANCED = 16491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_TOKEN_AUTHENTICATION = 16492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_MATCH_MODE = 16493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTS_WITH = 16494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDS_WITH = 16495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXACT_MATCH = 16496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOCERTIFICATEFOUND = 16497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOCERTIFICATEFOUND = 16498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE = 16499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MUSTERING_ENDED = 16500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MUSTERING_STARTED = 16501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_CERTIFICATEUPDATEFAILED = 16502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_CERTIFICATEUPDATEFAILED = 16503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGNMENT_ON_MULTILINE_ONLY = 16504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ALIGNMENT_ON_MULTILINE_ONLY = 16505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_CERTIFICATE_UPDATED = 16506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWROLERESOURCES = 16507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEWROLERESOURCES = 16508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_CERTIFICATE_CHANGED = 16509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INTRUSIONINPUTTYPE_VIRTUAL_EDITDISABLED = 16510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_REQUEST_PARAMETERS = 16511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARAMETER_X_MUST_USE_ROLE_PROPERTIES_UI = 16512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_PARAMETERS = 16513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CUSTOM_PROTOCOL_REQUEST_PARAMETERS_DESCRIPTION = 16514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_AUDIENCE = 16515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_AUDIENCE = 16516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_FILE_CONTENT = 16517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NEWCREDENTIAL = 16518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CLOUD_STORAGE = 16519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ACCESSCONTROLUNIT_WARNING_ACTIVATED = 16520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ACCESSCONTROLUNIT_WARNING_DEACTIVATED = 16521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_COLOR = 16522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_TYPE = 16523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_RETRIEVE_CLOUD_ARCHIVES_REQUEST = 16524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DXDIAG_REPORT = 16525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_PROGRAMS_LIST = 16526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RUNNING_PROCESSES_LIST = 16527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_LOGS = 16528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLR_ASSEMBLIES = 16529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NIC_LIST = 16530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_CONNECTIONS = 16531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_PROCESS_INFO = 16532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIG_FILES = 16533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_FILES = 16534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTRY_KEYS = 16535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_COUNTERS = 16536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRASH_DUMP_INFORMATION = 16537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWREVOKEDCERTIFICATES = 16538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWREVOKEDCERTIFICATES = 16539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_ALLOWREVOKEDCERTIFICATES = 16540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_STARTED = 16541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED = 16542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_SUCCESS = 16543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIRMWAREUPGRADE_MISSINGPASSWORDPRIVILEGE = 16544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_ABORTED = 16545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_READERSHUNTED = 16546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_DOORNOTSECURED = 16547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_ERROR = 16548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_UNLOCKFAILED = 16549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_RELOCKFAILED = 16550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_SIPIDENTITY = 16551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_USERNAME = 16552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_PASSWORD = 16553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_ABORTED = 16554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_READERSHUNTED = 16555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_DOORNOTSECURED = 16556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_ERROR = 16557;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_UNLOCKFAILED = 16558;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_RELOCKFAILED = 16559;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_SCHEDULED = 16560;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_CANCELLED = 16561;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_SUCCEEDED = 16562;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_STARTED = 16563;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_FAILED = 16564;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_CANCELLED = 16565;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_SCHEDULED = 16566;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_TRANSFERRED = 16567;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSFERRED = 16568;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SYSTEM_INFORMATION = 16569;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_LOGS = 16570;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_CACHE = 16571;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_UNIT_INFORMATION = 16572;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_FILES = 16573;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_AGENT = 16574;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_LOCK_UNLOCK = 16575;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_GET_READ_KEYS = 16576;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TOO_MANY_ENTITIES_REQUIRES_AUTO_SAVE = 16577;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UAR_DIAGNOSTIC_PASSWORDCHANGEFAILED = 16578;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_PASSWORDCHANGEFAILED = 16579;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUICK_MOBILE_CREDENTIAL_REFRESH_INTERVAL = 16580;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL_MOBILE_CREDENTIAL_REFRESH_INTERVAL = 16581;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_AUTO_REVOKE = 16582;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_AS = 16583;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENDERED_AS = 16584;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_EXPRESSION = 16585;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_EXPRESSION = 16586;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RAISE_EVENT_DATA_INGESTION = 16587;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RAISE_EVENT_DATA_INGESTION = 16588;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATE_EVENTS_TO_ENTITY = 16589;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ASSOCIATE_EVENTS_TO_ENTITY = 16590;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_IN_MAP_AS = 16591;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PIN = 16592;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PIN_PREVIEW = 16593;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_PRESENTATION = 16594;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ITEMS = 16595;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_ITEM = 16596;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS = 16597;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_X_ITEMS_IMPORTED_CREATION = 16598;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SIPELIA = 16599;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_BASE = 16600;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_CPACK = 16601;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_FULLDUPLEX_DEVICE_COUNT = 16602;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_HALFDUPLEX_DEVICE_COUNT = 16603;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_TRUNK_DEVICE_COUNT = 16604;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_POTENTIALPASSWORDLOSS = 16605;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_POTENTIALPASSWORDLOSS = 16606;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SAVE_KEYS = 16607;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_GREATER_THAN = 16608;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_GREATER_THAN_OR_EQUAL_TO = 16609;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_LESS_THAN = 16610;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_LESS_THAN_OR_EQUAL_TO = 16611;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_EQUAL_TO = 16612;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_NOT_EQUAL_TO = 16613;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_SET = 16614;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_IN_SET = 16615;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHES_PATTERN_UC = 16616;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOOK_FOR = 16617;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_EXCLUDED = 16618;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_INCLUDED = 16619;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_DEFINED = 16620;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCLUDE_REGIONS = 16621;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXCLUDEREGIONS = 16622;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_REGION = 16623;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITIONS = 16624;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CONDITION_SELECTFIELD = 16625;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_FIELD = 16626;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_FIELDS = 16627;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_MODE = 16628;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIMILAR = 16629;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVITATION_STATUS = 16630;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVIDER = 16631;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESEND = 16632;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVITATION = 16633;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBSCRIPTIONS = 16634;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOBILE_CREDENTIAL_CREATION_WIZARD = 16635;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PROVIDER_DELETE = 16636;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PROVIDER_DELETE_INFORMATIVE_TEXT = 16637;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRED = 16638;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MOBILE_ID = 16639;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CREDENTIAL = 16640;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVOKED = 16641;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVOKING = 16642;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HID_MOBILE_ACCESS = 16643;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CREDENTIAL_NORMAL_REFRESH_QUEUE = 16644;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CREDENTIAL_FAST_REFRESH_QUEUE = 16645;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SETTINGS_CHANGED_MOBILE_CREDENTIAL_ROLE_RESTART = 16646;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CUSTOM_ACTION_NO_UI_COMPONENT = 16647;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_MAKE = 16648;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_ACCESSRULES = 16649;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HELP_ACCESSRULES = 16650;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_RELATIVE_PATH = 16651;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_NAME_USER_GUIDE = 16652;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_NAME_ADMIN_GUIDE = 16653;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_ARGUMENT_XLANGUAGE_YPATH = 16654;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_ADMIN_GUIDE_LANGUAGE_CODE = 16655;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_URL_HOME_PAGE = 16656;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_ENABLED = 16657;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_EXPORTER_JSON2_ENDPOINTS_COUNT = 16658;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE = 16659;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_CREATED = 16660;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_MODIFIED = 16661;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_DELETED = 16662;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_IMPORTED = 16663;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_CREATED = 16664;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_DELETED = 16665;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_MODIFIED = 16666;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_CREATED = 16667;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_DELETED = 16668;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_MODIFIED = 16669;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INVALID_FIRMWARE_PACKAGE_SELECTED = 16670;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_NOT_SUPPORTED_BY_FIRMWARE_UPGRADE_PACKAGE = 16671;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FAILED_INSTALL_CA_CERTIFICATES = 16672;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FAILED_INSTALL_CA_CERTIFICATES = 16673;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_CONCURRENT_OPERATOR_CONNECTIONS = 16674;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ACTIVE_INCIDENTS = 16675;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SIDE = 16676;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REFRESH_MOBILE_CREDENTIAL_DATA = 16677;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_PROVIDER_UPDATE = 16678;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOG_FILES = 16679;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_CREDENTIAL_CREATED = 16680;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_CREATION_FAILED = 16681;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_CREDENTIAL_DELETED = 16682;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_DELETION_FAILED = 16683;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_INVITATION_CANCELED = 16684;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_INVITATION_CANCELLATION_FAILED = 16685;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_INVITATION_RESENT = 16686;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_INVITATION_RESENT_FAILED = 16687;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_REVOKED_CREDENTIALS_HIDDEN = 16688;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORE_ACCESS_DENIED = 16689;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_FILES_COUNT = 16690;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_SIZE = 16691;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_OLDEST_FILE = 16692;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_UPLOAD_SPEED = 16693;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_MANAGER_QUERY_TIMEOUT = 16694;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_FAILED_LOADING = 16695;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_SUCCESS = 16696;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_TIMEOUT = 16697;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_BACKUPFAILED = 16698;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_BACKUPFAILED = 16699;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_GENERATIONFAILED = 16700;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_CANNOTCHANGE = 16701;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_CANNOTCHANGE = 16702;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_VALIDATIONFAILED = 16703;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_FAILED = 16704;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED = 16705;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSEPOLICIES = 16706;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSEFIRMARE = 16707;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSECONNECTION = 16708;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_TESTFAILED = 16709;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_TESTFAILED = 16710;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_ACCOUNTBLOCKED = 16711;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_ACCOUNTBLOCKED = 16712;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_NOTSECURE = 16713;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_NOTSECURE = 16714;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_UNSUPPORTEDMANUFACTURER = 16715;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_COLUMN_PASSWORDCHANGERESULT = 16716;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNSUPPORTEDENCODING = 16717;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTH_SERVICE_MAX_LICENSE = 16718;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_ROTATIONANDDIRECTIONOFFSETS = 16719;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_ROTATIONANDDIRECTIONOFFSETS = 16720;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_TYPE = 16721;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY = 16722;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_EXTENDED_FIELDS_QUERY = 16723;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_LIST_DATASOURCES_QUERY = 16724;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DEFAULT_TEXT_QUERY = 16725;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DATUMS_BY_ID = 16726;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATED_ALARM = 16727;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_TO_ALARM_TIME = 16728;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_CREATED = 16729;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_DELETED = 16730;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_ADDED = 16731;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_REMOVED = 16732;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_UPDATED = 16733;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_CORRELATION_QUERY = 16734;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_INGESTION_DATA_MODIFICATION = 16735;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDS = 16736;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_CONFIGURATION_FILE = 16737;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_CONFIGURATION_UNIT = 16738;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_KEYS = 16739;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_ENCODED_CARD = 16740;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_TESTED_ENCODING_CARD = 16741;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ANNOTATION_FIELDSFILTERS_MUST_USE_PROMOTED_SEARCHFILTERS = 16742;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ANNOTATION_FIELDSFILTERS_MULTICRITERIA_SEARCH_ALLOWED = 16743;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITSPASSWORDCHANGE = 16744;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNITSPASSWORDCHANGEREPORT = 16745;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_IMPORT_CONFIGURATION = 16746;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_REFRESH = 16747;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERSUBJECTALTERNATIVENAMEHERE = 16748;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_CALL_STRATEGY = 16749;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_MAX_LOOP_COUNT = 16750;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_CALL_RINGING_TIMEOUT = 16751;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ESRI_CLIENT_ID = 16752;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROLE_SERVICES_DOWN = 16753;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROLE_ALL_SERVICES_ONLINE = 16754;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_PROVIDER_DATA = 16755;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_PROVIDER_DATA_INFORMATIVE_TEXT = 16756;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SYNCHRONIZE_PROVIDER_DATA_SUCCESS = 16757;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SYNCHRONIZE_PROVIDER_DATA_FAILURE = 16758;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYNCHRONIZE = 16759;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_PROVIDER_DATA = 16760;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_ALREADYPENDING = 16761;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_UNITOFFLINE = 16762;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_CANNOTCHANGEPASSWORD = 16763;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_DESFIRE_RANDOM_UID = 16764;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RETRIEVE_UID_KEY = 16765;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DESFIRE_RANDOM_UID_DIVERSIFIED_KEYS = 16766;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERCOM = 16767;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_UPDATED = 16768;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_CREATION_READY = 16769;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_CREATION_ERROR = 16770;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_KEY_MISMATCH = 16771;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_KEY_MISSING = 16772;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_NEW_LICENSE = 16773;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_RESTART = 16774;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_TRUNK = 16775;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_TRUNK = 16776;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_TRUNK = 16777;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_TRUNK = 16778;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TRUNK = 16779;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TRUNK = 16780;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TRUNK = 16781;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TRUNK = 16782;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCE_READ_WRITE = 16783;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCE_READ_ONLY = 16784;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HEALTHEVENT_SCTOKEN_INVALID_LICENSE = 16785;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HEALTHEVENT_SCTOKEN_MISSING_SIGNING_KEY = 16786;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRWAREUPGRADE_FAILURE = 16787;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_ACTION_GROUP = 16788;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_ACTION_GROUP = 16789;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_EVENT_ACTION = 16790;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_EVENT_ACTION = 16791;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_FILE_ACTION = 16792;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_FILE_ACTION = 16793;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_REST_ACTION = 16794;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_REST_ACTION = 16795;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_EVENT = 16796;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_FILE = 16797;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_REST = 16798;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_EVENT_DESCRIPTION = 16799;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_FILE_DESCRIPTION = 16800;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_REST_DESCRIPTION = 16801;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_NOTMONITORED = 16802;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SET_READER_CARDANDPIN = 16803;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SET_READER_CARDORPIN = 16804;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVITYTRAIL_SET_READER_MODE = 16805;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_VIEWEXPORTPASSWORDS = 16806;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_VIEWEXPORTPASSWORDS = 16807;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALPRUNIT_VIEWEXPORTPASSWORDS = 16808;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALPRUNIT_VIEWEXPORTPASSWORDS = 16809;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONUNIT_VIEWEXPORTPASSWORDS = 16810;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONUNIT_VIEWEXPORTPASSWORDS = 16811;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_UPDATEPASSWORD = 16812;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_UPDATEPASSWORD = 16813;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_UPDATECERTIFICATE = 16814;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_UPDATECERTIFICATE = 16815;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_RETENTIONPERIOD = 16816;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_RETENTIONPERIOD = 16817;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRING_ON_SPECIFIC_DATE = 16818;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ON_SPECIFIC_DATE = 16819;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_RINGING = 16820;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_DECLINED = 16821;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_ANSWERED = 16822;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_REJECTED = 16823;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_TIMED_OUT = 16824;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_ENDED = 16825;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_CREATED = 16826;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CONTACT_REGISTERED = 16827;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CONTACT_UNREGISTERED = 16828;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_TRUNK_REGISTERED = 16829;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_TRUNK_UNREGISTERED = 16830;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTRING = 16831;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_OF_CSV_VALUES = 16832;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGULAR_EXPRESSION = 16833;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTEGER = 16834;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RULE_EXPIRATION = 16835;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_UNITCOMMANDQUEUEFULL = 16836;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WARNING_UAR_UNITCOMMANDQUEUEFULL = 16837;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_DLL_MESSAGE = 16838;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TOO_MANY_MAP_LAYERS = 16839;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITY_TYPE = 16840;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TYPE_NAME_CUSTOMACTION_TYPE = 16841;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_TO_UNIT_KEY_STORE = 16842;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_MEMBER_ORDER = 16843;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_ONLINE = 16844;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_OFFLINE = 16845;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_NOTMONITORED = 16846;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROFILE = 16847;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_MJPEG = 16848;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TROUBLESHOOT_UNIT_IN_ANOTHER_PARTITION = 16849;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTICATEABOUTTOEXPIRE = 16850;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTICATEABOUTTOEXPIRE_DETAILS = 16851;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIRMWARE_UPGRADE_11X = 16852;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARCOMMANDQUEUEFULL = 16853;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARCOMMANDQUEUEFULL_DETAILS = 16854;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARQUEUEDCOMMANDTIMEOUT = 16855;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARQUEUEDCOMMANDTIMEOUT_DETAILS = 16856;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHUNT_READER = 16857;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_VISITOR_ESCORT_SELECTED = 16858;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ENABLE_ESCORT_REQUIRED = 16859;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_AUTO_ENABLE_ESCORT_REQUIRED = 16860;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTO_ENABLE_ESCORT_REQUIRED = 16861;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_MANAGER_PLURAL = 16862;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FUNCTION = 16863;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_RECORD = 16864;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_RECORDS = 16865;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_RECORDS = 16866;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ITEM = 16867;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LAST_IMPORT_LOGS = 16868;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ROTATE_CAMERA_PASSWORDS_PERIODICALLY = 16869;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_INTRUSIONDETECTION = 16870;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_OF_WEEK = 16871;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE_FIELD = 16872;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_DISTINCT = 16873;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTINCT = 16874;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVG = 16875;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX = 16876;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM = 16877;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN = 16878;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_DEVIATION = 16879;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_DEVIATION_SHORT_CODE = 16880;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUM = 16881;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIANCE = 16882;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIANCE_SHORT_CODE = 16883;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAN = 16884;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAN_SHORT_CODE = 16885;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVER = 16886;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION = 16887;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTED_EVENTS = 16888;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_AUTOMATION_RULE_SCALE_BREACH = 16889;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_AUTOMATION_RULE_INVALID_CONFIGURATION = 16890;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTOMATION_RULE_TIMING_INFORMATION = 16891;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTOMATION_RULE_EXPIRED = 16892;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_STARTED = 16893;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FINISHED = 16894;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FAILED = 16895;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FILE_DELETED = 16896;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOBILE_FEATURES = 16897;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_THIS_IN_CORRELATION_REPORT = 16898;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_IN_CORRELATION_REPORT = 16899;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_IN_CORRELATION_REPORT = 16900;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_VIEW = 16901;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AGGREGATION_OPTIONS = 16902;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY_OVER = 16903;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AVAILABLE_FIELDS = 16904;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_POST_PAYLOAD = 16905;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTION_TIME = 16906;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALLOTED_TIME = 16907;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALLOTED_TIME_ZERO = 16908;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_GET = 16909;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_POST = 16910;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_METHOD = 16911;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_HEADER = 16912;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PATH_MUST_BE_ACCESSABLE = 16913;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ADAPTATIVEMOTIONNORMAL = 16914;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ADAPTATIVEMOTIONABNORMAL = 16915;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_CERTIFICATEVALIDATIONFAILED = 16916;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATEVALIDATIONFAILED_DETAILS = 16917;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_CERTIFICATEENABLEHTTPSFAILED = 16918;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATEENABLEHTTPSFAILED_DETAILS = 16919;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SKIP_PTZ_EVALUATION = 16920;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SKIP_PTZ_EVALUATION = 16921;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDITPARTITIONMEMBERSHIPS = 16922;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EDITPARTITIONMEMBERSHIPS = 16923;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMPORT_MAP_OBJECTS = 16924;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OBJECT_TYPE = 16925;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONMANAGEMENT_GROUP = 16926;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONMANAGEMENT_GROUP = 16927;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSION_GENERALSETTINGS_GROUP = 16928;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSION_GENERALSETTINGS_GROUP = 16929;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSION_ALARMCONFIGURATION = 16930;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSION_ALARMCONFIGURATION = 16931;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_STREAM_USAGE = 16932;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIFFERENTCERTIFICATE = 16933;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITPASSWORDCHANGEFAILURE = 16934;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INTRUSIONINPUT_ASSIGNCAMERA = 16935;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ADD_PRIVACY_PROTECTION = 16936;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISMATCH = 16937;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGED = 16938;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNMANAGED = 16939;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASEDISK_USAGE_REACHED_CONFIGURED_MAX = 16940;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVITYTRAIL_REMOVED_UNIT_FROM_CERTIFICATE_MANAGEMENT = 16941;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_REMOVED_UNIT_FROM_CERTIFICATE_MANAGEMENT = 16942;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_MANAGE_PARTITIONS = 16943;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_MANAGE_PARTITIONS = 16944;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOSTNAMECERTIFICATEWARNING = 16945;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_H264_VIDEO_QUALITY = 16946;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIFI = 16947;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CELLULAR = 16948;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_PATH_TOO_LONG = 16949;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_STATE_UNKNOWN = 16950;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATESETTINGS_HTTPSPORTMAYCHANGE = 16951;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_AV1 = 16952;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURENAME_ADVANCEDCERTIFICATEMONITORING = 16953;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREDESCRIPTION_ADVANCEDCERTIFICATEMONITORING = 16954;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREINFO_ADVANCEDCERTIFICATEMONITORING = 16955;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATURENOTE_ADVANCEDCERTIFICATEMONITORING = 16956;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPERATION_MIGHT_HAVE_TIMED_OUT = 16957;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_TLS_CONNECTION = 16958;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PENDING_MOBILE_INVITATION = 16959;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_NAME_COMPARISON = 16960;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY_ROTATION = 16961;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_REENABLING_TRIGGERS = 16962;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEBSDK_FAILEDTOSTART_ERRORTITLE = 16963;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEBSDK_FAILEDTOSTART_ERRORMESSAGE = 16964;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETCUSTOMENDPOINT = 16965;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESETTODEFAULTENDPOINT = 16966;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDPOINT = 16967;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGEPKIENDPOINTRISK = 16968;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGEPKIENDPOINTRISK = 16969;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PKISETTINGS = 16970;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ACTION_MIGHT_AFFECT_UNITASSISTANT_OPERATIONS = 16971;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ACTION_MIGHT_AFFECT_UNITASSISTANT_OPERATIONS = 16972;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HARDENINGGUIDE_USECERTIFICATECAMERA = 16973;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HARDENINGGUIDE_RENEWCAMERACERTIFICATE = 16974;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BWC_INHERITFROMARCHIVERISDEPRECATED = 16975;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_ROTATION_OFFSET = 16976;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWIRE_VERSION = 16977;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_COMMUNICATIONS_RINGGROUPS = 16978;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_COMMUNICATIONS_INTERCOMS = 16979;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_API_PATH = 16980;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVICE_UNAVAILABLE = 16981;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_RETRIEVE_PKI_ENDPOINT = 16982;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATE_PROFILE = 16983;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNABLE_NAVIGATE_URL_EMPTY = 16984;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETED_FILES_ONLY_REMOVED_ON_SUCCESS = 16985;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_GCS_CUSTOMFIELD_DUPLICATE = 16986;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RIGHT_CLICK_DRILL_DOWN_OPTIONS = 16987;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_DISPLAY_ON_MAPS = 16988;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ACTIVE_RECORDS_FOR_PAST = 16989;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_NUMBER_OF_RECORDS = 16990;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AUTH_SERVICE_REMOVE_USER_GROUPS_TITLE = 16991;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AUTH_SERVICE_REMOVE_USER_GROUPS_DETAILS = 16992;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_APPLY_CHANGES = 16993;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUDITTRAIL_CUSTOMENTITYTYPE = 16994;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEARCH_THIS_AREA = 16995;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_SOURCES = 16996;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CARDHOLDER_SHARED_OVERRIDE_NOT_SYNCED = 16997;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PAN_AND_ZOOM = 16998;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_DISPLAY_LOCKED = 16999;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ZOOM_LOCKED = 17000;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTENT_FOUND = 17001;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AD_CARDHOLDER_IMPORT_ERROR = 17002;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CARDHOLDER_EXPIRATION_DURATION = 17003;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CREDENTIAL_EXPIRATION_DURATION = 17004;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_EXPIRATION_CONFLICTS = 17005;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_EXPIRATION_CONFLICTS = 17006;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_GROUP_NOT_ALLOWED = 17007;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ADVANCED_SETTINGS = 17008;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_ADVANCED_SETTINGS = 17009;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SPECIFIC_ACTIVATION_DATE = 17010;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_CONNECTION_MODE = 17011;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAXARCHIVETRANSFERTHROUGHPUT = 17012;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_MOBILE_SERVER_CONFIGURATION = 17013;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSCH_COMMANDPROTOCOL_CHANGED = 17014;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_MINIMAP = 17015;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_ENABLE_MINIMAP = 17016;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_DISABLE_MINIMAP = 17017;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_TOO_SMALL = 17018;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_FULLY_VISIBLE = 17019;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_LPR_UNIT_FIRMWARE_UPGRADE_SCHEDULED = 17020;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SPECIFIC_EXPIRATION_DATE = 17021;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_SAVED_TO_ARCHIVER_DISK = 17022;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_SAVED_TO_ARCHIVER_DISK = 17023;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LIGHTWEIGHTRECORDER_TABNAME = 17024;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT2ACTION_USE_SOURCE_TIMEZONE = 17025;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EVENT2ACTION_USE_SOURCE_TIMEZONE = 17026;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LIGHTWEIGHTRECORDER_CONNECTION = 17027;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LIGHTWEIGHTRECORDER_UNAUTHORIZED = 17028;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_MINIMAP_UNAVAILABLE = 17029;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSH_PORT = 17030;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENCRYPTEDCUSTOMFIELDNOFILTERS = 17031;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WIQ_LOCK_LIMIT = 17032;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MAC_ADDRESS_CONFLICT = 17033;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_TYPE_CONFLICT = 17034;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WIQ_GATEWAY_LIMIT = 17035;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNLOCK_DOOR_MAINTENANCE = 17036;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNLOCK_DOOR_MAINTENANCE_RECURSIVE = 17037;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_MAINTENANCE = 17038;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_MAINTENANCE_RECURSIVE = 17039;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MISSING_ECM_PLUGIN = 17040;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_EXTERNALCARDHOLDERVALIDATION = 17041;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CARDHOLDERSANDCREDENTIALS_REMOVENEVEREXPIRATION = 17042;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_SSL_OR_TLS = 17043;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_STARTTLS = 17044;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_STARTTLS_IF_AVAILABLE = 17045;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_DYNAMIC_STARTUP = 17046;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DYNAMIC_STARTUP = 17047;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMEZONE_BAHIA_STANDARDABBR = 17048;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_KEEPCONFIGFROMUNITWEBPAGE = 17049;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MAP_ROLE_BACKWARD_DESCRIPTION = 17050;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_PASSWORD_CONFIGURATION = 17051;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_PASSWORD_CONFIGURATION = 17052;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BOOST_QUALITY_VIDEO_GAPS = 17053;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_SELECT_EXPORT_ENTITY_TYPE_STEP_INSTRUCTION = 17054;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_EXPORTTOOL = 17055;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_EXPORT_SELECT_SOURCE_STEP_INSTRUCTION = 17056;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_SELECT_OPTIONS_STEP_INSTRUCTION = 17057;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARRAYDELIMITER = 17058;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_FILE_PATH = 17059;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTCONFIG_CANT_GET_SOURCE = 17060;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_PROCESS_COMPLETED_SUCCESSFULLY = 17061;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_SELECT_SETTINGS_STEP_INSTRUCTION = 17062;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOOL_DESCRIPTION_EXPORTCONFIG = 17063;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_ENTITIES_OF_TYPE = 17064;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FEDERATED_ENTITY = 17065;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FEDERATED_ENTITY_DETAILS = 17066;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PARTIAL_SUCCESS_SERVER_DOWN = 17067;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_VIDEOQUALITY_SUPERHIGH = 17068;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SENDEMAIL_TO_EXTERNAL_RECIPIENTS = 17069;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDEMAIL_TO_EXTERNAL_RECIPIENTS = 17070;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_REPLACEMENT_STATUS_CANNOT_COMPLETE_AT_THIS_TIME = 17071;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPING_SORTORDER = 17072;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MERCURY_OSDP_READER_ON_SAME_PORT = 17073;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MUST_BE_ADMIN_SAAS_MOVE_UNIT = 17074;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CONNECTIONS = 17075;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_EVENTINSERTIONTIME = 17076;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_MOBILE_CONNECTIONS_COUNT = 17077;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CUSTOM_PLUGINS_UNABLE_LOAD = 17078;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SEE_STATISTICS_FOR_DETAILS = 17079;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_FLOODING_CAMERA_DETAILS = 17080;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_FLOODING_DETAILS = 17081;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_DATABASE_FLOODING = 17082;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARDEVENTSIFNOTSOURCEENTITYOWNER = 17083;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORWARDEVENTSIFNOTSOURCEENTITYOWNER = 17084;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYNAMIC_STARTUP = 17085;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_MANAGEMENT = 17086;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_WORKSTATION_MANAGEMENT = 17087;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_LPRUNIT_LOCATIONS = 17088;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_AREA_LOCATIONS = 17089;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ASSET_LOCATIONS = 17090;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CAMERA_LOCATIONS = 17091;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CUSTOMENTITY_LOCATIONS = 17092;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_DEVICE_LOCATIONS = 17093;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_DOOR_LOCATIONS = 17094;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_INTRUSIONUNIT_LOCATIONS = 17095;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_MAP_LOCATIONS = 17096;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_VIDEOUNIT_LOCATIONS = 17097;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ZONE_LOCATIONS = 17098;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ACCESS_EVENTS = 17099;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CAMERA_EVENTS = 17100;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ZONE_EVENTS = 17101;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ALARM_INSTANCES = 17102;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_INTRUSION_EVENTS = 17103;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HRECORD_TYPE_EALTH_EVENTS = 17104;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TASKSHORTDESC_WORKSTATION = 17105;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SID = 17106;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_CONNECTION = 17107;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_ACCESS = 17108;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_DISPLAY_MODE = 17109;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_WORKSTATION = 17110;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_WORKSTATION_INFO_PAGE_TITLE = 17111;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_ADD_SELECT_SOURCE_STEP_INSTRUCTION = 17112;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_FLOODING = 17113;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_LIVE_STREAM_STARTED = 17114;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL_LOCATION = 17115;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOGRAPHICAL_LOCATION = 17116;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESETTOUR = 17117;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SELECT_PHYSICAL_LOCATION = 17118;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_MOVE_LPR_UNIT_SSH = 17119;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_ROLES_REQUIRING_QUERY_EXPANSION = 17120;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_REPORT_MISSING_EVENTS = 17121;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARTITION_ACCESS = 17122;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REMOVE_WORKSTATION_MEMBERS = 17123;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DEPENDENTENTITIES = 17124;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DEPENDENTENTITIESSHOWMORE = 17125;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPDEPENDENTENTITIES = 17126;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_LOW = 17127;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_NORMAL = 17128;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_NOTMONITORED = 17129;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_LIVE_STREAM_STOPPED = 17130;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_ACCESS_RIGHTS_EXCEPTIONS = 17131;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_PRIVILEGES_EXCEPTIONS = 17132;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REMOVE_MEMBER_FROM_WORKSTATIONS = 17133;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_LIST_CHANGES_AUTOMATICALLY_APPLIED = 17134;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_SSH_CONNECTION_STATUS = 17135;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MULTISORTING_COLUMN_HEADER_CLICK_OVERRIDE = 17136;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_DECISION_AUTHORITY = 17137;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LPR_UNIT_FIRMWARE_UPGRADE_CANCELLED = 17138;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERADMIN_SSL_PROTOCOL_OPTION_USE_OS_DEFAULT = 17139;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERADMIN_SSL_PROTOCOL_OPTION_USE_WHITELIST = 17140;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVERADMIN_SELECT_AT_LEAST_ONE_PROTOCOL = 17141;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALPR_UNIT_FIRMWARE_UPGRADE = 17142;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALPR_UNIT_FIRMWARE_UPGRADE = 17143;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_PROGRESSION = 17144;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MARGINS = 17145;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MORE_SETTINGS = 17146;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGES = 17147;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPIES = 17148;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTER_PROPERTIES = 17149;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTER = 17150;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_PAGE_COUNT = 17151;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_TOTAL_SHEETS_COUNT = 17152;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_ILLEGAL_CHARACTERS = 17153;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_NEGATIVE_END_PAGE = 17154;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_NEGATIVE_START_PAGE = 17155;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_END_SMALLERTHAN_START = 17156;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_PAGE_OUT_OF_RANGE = 17157;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_SUPPORTS_REBOOT = 17158;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_RECIPIENTS = 17159;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXTERNAL_RECIPIENTS = 17160;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_WEB_SERVER = 17161;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_WEB_CLIENT = 17162;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_CUSTOM_MARGINS_INFO = 17163;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_TEST_USB_READER = 17164;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_FILE_DETAILS = 17165;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_READ_KEY = 17166;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CUSTOM_STRING = 17167;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CREDENTIAL = 17168;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BADGE_CONFIGURATION = 17169;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_APPLICATION_DETAILS = 17170;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_FILE_SELECTION = 17171;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_ASCII = 17172;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_UTF16 = 17173;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT_LEFT = 17174;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT_RIGHT = 17175;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CUSTOM_STRING_MANAGEMENT = 17176;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CONTENT = 17177;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_REMAINING_SPACE = 17178;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_OFFSET = 17179;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT = 17180;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_X_KEYS_USED_OF_Y = 17181;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UPDATE_ALL_KEYS = 17182;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_WRITE_KEY = 17183;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_READ_WRITE_KEY = 17184;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CHANGE_ACCESS_KEY = 17185;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_KEY_NUMBERS = 17186;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_FREE_KEY = 17187;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOTHING_TO_IMPORT = 17188;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_ACCESSMANAGER = 17189;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_SOFTWIRE = 17190;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_INTELLIGENTCONTROLLER = 17191;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CHANGE_CONFIG_WITHOUT_SAVE = 17192;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CARDHOLDER_INFORMATION_NOT_BE_ENCODED = 17193;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_DUPLICATE_READS = 17194;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DUPLICATE_READS = 17195;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UTF16_CUSTOM_STRING_TOO_LONG = 17196;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_FILL_WITH_NULL = 17197;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_SUCCEEDED = 17198;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_FAILED = 17199;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_NOTMONITORED = 17200;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SECURE_CONNECTION_NOT_ESTABLISHED = 17201;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_MAINTENANCE_REASONS = 17202;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MAINTENANCE_REASONS = 17203;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_READER_ADDRESS_ALREADY_IN_USE = 17204;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PDF_PRINT_NO_PRINT_SERVER = 17205;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_CHECK_PRINT_SERVICES_AND_PRINTERS = 17206;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_USER_GUIDE_LANGUAGE_CODE = 17207;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_EVENT_TIMESPAN_RANGE = 17208;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOWER_BOUND = 17209;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPPER_BOUND = 17210;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MINIMUM = 17211;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_UPPER_BOUND = 17212;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAINTENANCE_REASONS = 17213;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_REASON_ADD = 17214;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_REASON_MODIFY = 17215;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_CREDENTIAL_FILE = 17216;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_FILE = 17217;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_CONFIGURATION = 17218;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_CUSTOMSTRING = 17219;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLED_TO_SATISFY = 17220;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PROFILE_SECURE_EMAILS = 17221;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SET_USER_PROFILE = 17222;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMISSION_DENIED = 17223;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_REPORTMANAGER_NO_SECURE_USER_PROFILE = 17224;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_THAI = 17225;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENABLE_DIGITAL_SIGNATURE = 17226;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_DIRECTORY_AVAILABLE = 17227;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_STARTUP_FASTER = 17228;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_STARTUP_SLOWER = 17229;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIMIZEDDIRECTORYSTARTUP_FAILURE_PHASE = 17230;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIMIZEDDIRECTORYSTARTUP_FAILURE_COMPLETE = 17231;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_VIEWPORTAL = 17232;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_VIEWPORTAL = 17233;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_LIKE = 17234;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_CONDITIONS = 17235;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EDIT_CONDITIONS = 17236;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONVERSION_PARTIAL_SUCCESS_FOUND_FRAMES_BACK_IN_TIME = 17237;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XOR = 17238;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CRITERION = 17239;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ROTATE_SYNERGIS_PASSWORDS_PERIODICALLY = 17240;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BADGE_TEMPLATE_IMAGE_INVALID = 17241;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_EQUAL_TO = 17242;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_NOT_EQUAL_TO = 17243;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOES_NOT_CONTAIN = 17244;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_IN = 17245;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_NOT_IN = 17246;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_GREATER_THAN = 17247;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_LESS_THAN = 17248;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_GREATER_THAN_OR_EQUAL_TO = 17249;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_LESS_THAN_OR_EQUAL_TO = 17250;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONVERSION_PARTIAL_SUCCESS_H264_FRAME_SLICE_MISSING = 17251;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_ENTITY_TYPES = 17252;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENTITYTYPEFILTERS_ADDED = 17253;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENTITYTYPEFILTERS_REMOVED = 17254;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_LIVE_STREAM_REQUESTED_FEDERATION = 17255;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_PLAYBACK_STREAM_REQUESTED_FEDERATION = 17256;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WORKSTATION_MANAGEMENT_FEATURE_DEACTIVATION = 17257;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_PRIVILEGE_TO_ADD_UNIT_TO_ACCESSMANAGER_PARTITION = 17258;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CREATION_DATE = 17259;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATEAGENTSONROLESERVERS = 17260;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CREATEAGENTSONROLESERVERS = 17261;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEDERATION_ENTITY_ADVANCED_SETTINGS_INFO = 17262;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NUMBER_2_RESERVED_FOR_UID_RETRIEVAL = 17263;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_NUMBER_IN_APPLICATION = 17264;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_READKEY_OR_READ_WRITEKEY_MUST_BE_DEFINED = 17265;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_HAVE_AT_LEAST_ONE_CUSTOM_STRING = 17266;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MODIFY_DATA_OF_CREDENTIAL_SECTION = 17267;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_CONFIGURATION = 17268;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATIONS = 17269;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UID_RETRIEVAL_KEY = 17270;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_UTF16_CUSTOM_STRING_TOO_LONG = 17271;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_READ_KEY = 17272;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_WRITE_KEY = 17273;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_READ_WRITE_KEY = 17274;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_CHANGE_ACCESS_KEY = 17275;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_LEAST_ONE_CONFIGURATION_SELECTED = 17276;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTODISCONNECT = 17277;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SESSION_DISCONNECT = 17278;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SESSION_ABOUT_TO_DISCONNECT = 17279;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENHANCED_SEARCH_PASTE_CANCELED = 17280;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENHANCED_SEARCH_PASTE_INCORRECT = 17281;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_GIVE_RIGHTS_TO_MACHINEKEYS_FOLDER = 17282;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_ALARMRESOLUTIONTIMESPAN = 17283;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_WINDOWS_FONT_FAMILY__DONT_TRANSLATE = 17284;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_DISCONNECT_DURATION = 17285;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_AND_OLDER = 17286;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OVERWRITE_CONDITION = 17287;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_OVERWRITE_CONDITION = 17288;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_BULKACKNOWLEDGEALARMS = 17289;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LABEL_PRIVILEGES_BULKACKNOWLEDGEALARMS = 17290;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECLAIM_OWNERSHIP_CB = 17291;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INPUT_UNIQUE = 17292;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OUTPUT_UNIQUE = 17293;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOGON_PREVIEW = 17294;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BROWSER_CONSOLE = 17295;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_LOGS = 17296;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TEST_AUTHENTICATION = 17297;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_INCLUDE_WARNING = 17298;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEM_OVEWRITTEN = 17299;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_CONFIGURATION = 17300;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ENDPOINTS = 17301;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_ENDPOINT_CONFIGURATION = 17302;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_ENDPOINTS_PROCEDURE = 17303;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_URI = 17304;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_DEFINED_ENDPOINT = 17305;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_READ_ANALYTIC = 17306;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_LOGON_SUCCESSFUL = 17307;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOGGLE_PII = 17308;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONNECTION_SERVERCONSOLE = 17309;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_READ_ANALYTIC = 17310;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_REPORT_SINGLE_USER_AUTHORIZATION = 17311;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_SCALE_INDICATOR = 17312;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_SCALE_INDICATOR = 17313;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LOGS_SERVERSIDE = 17314;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OLDVERSIONCONFIGURATION_INCOMPATIBLE = 17315;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SOURCE = 17316;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SUBSCRIBING_TO_LOGGERS_FAILED = 17317;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSER_CONSOLE = 17318;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONNECTION_SERVERADMIN_CONSOLE_FAILED = 17319;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOME_UNITS_CONTAIN_EXPIRED_CERTIFICATES_CANNOT_RENEW_DUE_TO_POLICY = 17320;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EXPORT_REPORT_NAME_TYPE_LOCATION_AUTHORIZED = 17321;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_REPORT_NAME_TYPE_PRINTER_AUTHORIZED = 17322;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REPLACE_CARHOLDER_FIELDS = 17323;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEFORE_START = 17324;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_CONSULT_TECH_DOC = 17325;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIND_HERE = 17326;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUSPEND_WIZARD = 17327;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND = 17328;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_STEP_BY_STEP = 17329;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_INDICATOR_UNAVAILABLE = 17330;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APP_REGISTRATION = 17331;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_AZURE_AD_APP = 17332;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_PORTAL = 17333;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED_DOCUMENTATION = 17334;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTEGRATE_AZURE_OPEN_ID = 17335;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTER_ENDPOINT = 17336;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_INDEPENDENT_SETTINGS = 17337;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PER_SERVER_SETTINGS = 17338;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PER_SERVER_SETTINGS = 17339;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_RECORDING_DISABLED = 17340;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_ENABLED = 17341;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_3RDPARTY_NEEDED_TO_OPEN_ZIP_FILE = 17342;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIONS_FILE_ERROR_LINE_X_POSITION_Y = 17343;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MIGRATE = 17344;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_BACKUP_OLDVERSIONCONFIGURATION_DESFIRE = 17345;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_HITCH = 17346;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_MAKE_MODEL = 17347;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_REAR_ATTACHMENT = 17348;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_SPARE_TIRE = 17349;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_TYPE_ENHANCED = 17350;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORE_CONFIGURATION = 17351;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLAIMS_AND_SCOPES = 17352;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_LOAD_SETTINGS = 17353;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEMPORARY_SETTINGS = 17354;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED_HELP = 17355;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_METADATA = 17356;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_CONFIGURATION = 17357;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXAMPLE_AZURE_AD_METADATA_URL = 17358;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MANUAL_METADATA = 17359;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_METADATA = 17360;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_METADATA_UTILITY = 17361;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_METADATA = 17362;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_METADATA = 17363;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE_METADATA = 17364;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_SAVE_ROLE_STATE = 17365;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDENCRYPTION_REQUIRESDIRECTORY5111ANDUP = 17366;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_IDENTITY_AND_PROTOCOL = 17367;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP_WHICHPROTOCOL = 17368;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP_THIRDPARTYAUTH = 17369;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OIDC_DESCRIPTION = 17370;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML_DESCRIPTION = 17371;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBAPP_PREVIEW = 17372;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_GENETEC_WEBAPP_PREVIEW_DESCRIPTION = 17373;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_PII = 17374;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_OFFLINE_UNITS = 17375;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUMDISKSPACE = 17376;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUMDISKSPACE = 17377;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ENABLECOMPRESSION = 17378;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUMLOGFILESIZE = 17379;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIBLE_FROM = 17380;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_SCALE = 17381;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_SCALE = 17382;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM_AUTO = 17383;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_FACTOR_ITEM_NOT_VISIBLE_FORMAT = 17384;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VERB_CREATETRACERGROUP = 17385;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTIONPOLICY = 17386;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISKUSAGE_LOGFILESIZE = 17387;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACERGROUPNAME = 17388;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRACERGROUP = 17389;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FILTER_NOT_SUPPORTED = 17390;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVERAGE_SPEED = 17391;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DUPLICATE_FILTER = 17392;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_WITH_ADMIN_USER = 17393;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_DIVERSIFICATION_MODE = 17394;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UNSUPPORTED_MODE = 17395;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_WITH_ADMIN_USER_DESCRIPTION = 17396;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_DEFINED = 17397;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_URL_HERE = 17398;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBCLIENT_LEGACY = 17399;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER1_RETENTION_PERIOD = 17400;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER2_RETENTION_PERIOD = 17401;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREREMOVEKEYS = 17402;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_REMOVE_KEYS = 17403;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_HASH = 17404;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_KEY = 17405;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_KEY = 17406;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MILES_PER_HOUR_ABBREV = 17407;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KILOMETER_PER_HOUR_ABBREV = 17408;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEET_PER_HOUR_ABBREV = 17409;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METER_PER_HOUR_ABBREV = 17410;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIAGNOSTIC_LPR_MAXIMUM_UNITS_LIMITS = 17411;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIAGNOSTIC_LPR_MAXIMUM_UNITS_LIMITS_DETAILS = 17412;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER1_RECORDING_MODE = 17413;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER2_RECORDING_MODE = 17414;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_WINDOW = 17415;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_TO_WINDOW_DETAIL = 17416;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_HIDE_HEADER = 17417;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_IDENTICAL_PLATE_MULTI_VEHICLE = 17418;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_IDENTICAL_PLATE_MULTI_VEHICLE = 17419;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_DISTANCE = 17420;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EVEN_NUMBER_OF_CHARACTERS = 17421;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IP_ADDRESS_FILTER = 17422;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_WITH_LOCAL_FILE = 17423;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINT_EXPORT_SINGLE_USER_AUTHORIZATION = 17424;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_STATE_WIDGET = 17425;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WIDGET_ENTITYSTATE_DESCRIPTION = 17426;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_AVAILABLE = 17427;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERT_KEY_SMALLER_THAN = 17428;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATE_CUSTOM_ICONS = 17429;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_SELECTED_HOTLISTS = 17430;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCURRENCE = 17431;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SEARCH_SELECTED_HOTLISTS_AND_PERMITS = 17432;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_CONFIGURATION_CANNOT_BE_ENCODED_WITHOUT_CREDENTIAL = 17433;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_NO_CONFIGURATION_WITH_CREDENTIAL_SELECTED = 17434;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_METADATA_RETRIEVED = 17435;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_INITIAL_REQUEST = 17436;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_IDP_RESPONSE = 17437;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_TOKEN_PROVIDED = 17438;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_TOKEN_VALID = 17439;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_SYNCHRONISATION_GROUPS = 17440;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_SOURCE = 17441;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_SHOW_STATE = 17442;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD = 17443;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_ACTIVE_DIRECTORY = 17444;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA = 17445;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_ID_CONNECT = 17446;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML_2_0 = 17447;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_NAME_DESCRIPTION = 17448;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUCCESSFULL_CONFIGURATION = 17449;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEE_AUTHENTICATION_ERROR = 17450;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_PII = 17451;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PII_ACTIVATION_TEST_LOGIN = 17452;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPIED = 17453;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_OKTA_APP = 17454;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_ADD_REDIRECT_URI = 17455;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_CONFIGURATION = 17456;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_OPEN_ID_HELP_LINK = 17457;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_SAML2_HELP_LINK = 17458;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WS_FAMILY_HELP_LINK = 17459;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_ENDPOINTS_REGISTERED = 17460;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENDPOINTS_PURPOSE = 17461;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUSPEND_SAVES_SETTINGS = 17462;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TEST_CONFIGURATION = 17463;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_AUTHENTICATION_SERVICE = 17464;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RECOMMEND_TEST = 17465;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_LOGIN = 17466;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_FILES_DELETED_BEFORE_UPLOAD_TO_CLOUD_ON_RETENTION = 17467;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_AZURE_AD_USER_GROUPS = 17468;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_OKTA_USER_GROUPS = 17469;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WS_FED_USER_GROUPS = 17470;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_DEFAULT_USER_GROUPS = 17471;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_GROUP_HAS_MEMBERS = 17472;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DISASSOCIATING_SSO_GROUPS = 17473;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_USER_GROUP_NO_LOGIN_PRIVILEGES = 17474;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_EXISITING_GROUP = 17475;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_GROUP = 17476;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_EXTERNAL_UNIQUE_ID = 17477;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBJECT_ID = 17478;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALIDATE_INFORMATION = 17479;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIQUE_TO_EACH_USER = 17480;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_ANOTHER_SCOPE = 17481;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADD_DOMAINS = 17482;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HAVE_AT_LEAST_ONE = 17483;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PROVIDER_AS_LOGON_OPTION = 17484;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATE_DOMAIN = 17485;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_DOMAINS = 17486;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TEST_LOGON_RESULT = 17487;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEKEYROTATION = 17488;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATAKEYROTATIONPERIOD = 17489;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTERKEYSROTATIONPERIOD = 17490;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_SECRET_PURPOSE = 17491;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_CLIENT_SECRET_CONFIGURED = 17492;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_SECRET_EMPTY = 17493;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_TO_RETRIEVE_METADATA = 17494;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_SECRET_INVALID = 17495;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_SECRET_VALID = 17496;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WS_FAMILY_DOMAIN_NO_TEST_LOGON = 17497;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_DOMAIN_FORMAT = 17498;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALID_DOMAINS = 17499;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SSO_NO_DISPLAY_NAME = 17500;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_EMPTY_METADATA = 17501;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALID_METADATA = 17502;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_INPUT_INVALID = 17503;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_URI_INVALID = 17504;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_RESPONSE_FROM_PROVIDER = 17505;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_RESPONSE_INVALID = 17506;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_COMMUNICATE_IDP = 17507;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ISSUER_URI = 17508;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNREACHABLE_OPEN_ID_ENDPOINTS = 17509;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_METADATA_RETREIVED = 17510;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ISSUER = 17511;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNREACHABLE_SAML2_ENDPOINTS = 17512;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ISSUER_VALID = 17513;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_FORMAT_INVALID = 17514;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_GUID = 17515;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_URI = 17516;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_APPLICATION_CLIENT_ID_NOT_FOUND = 17517;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_ID_VALID = 17518;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SAML2_AUDIENCE = 17519;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_CLIENT_ID = 17520;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_URI = 17521;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD = 17522;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_FILES_DELETED_BEFORE_UPLOAD_TO_CLOUD_ON_DISK_FULL = 17523;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_PREREQUISITES = 17524;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_SUSPEND_BUTTON = 17525;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_AUTO_SAVE = 17526;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_ISSUER_COMPLEMENT = 17527;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERVIEW_ENDPOINT = 17528;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_CLIENT_ID_COMPLEMENT = 17529;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERVIEW = 17530;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_OPEN_ID_ISSUER_COMPLEMENT = 17531;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_API_AUTHORIZATION_SERVERS = 17532;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_COMPLEMENT = 17533;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_CLIENT_CREDENTIALS = 17534;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_ON_SAML_SETUP_INSTRUCTIONS = 17535;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_AUDIENCE_RESTRICTION = 17536;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AZURE_AD_SAML2_INSTRUCTIONS = 17537;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_OPEN_ID_INSTRUCTIONS = 17538;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_ISSUER_URI = 17539;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_SAML2_INSTRUCTIONS = 17540;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_ON = 17541;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIONS_VIEW_IDP_METADATA = 17542;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_METADATA_RETRIEVED = 17543;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_INITIAL_REQUEST = 17544;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_IDP_RESPONSE = 17545;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_TOKEN_PROVIDED = 17546;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_TOKEN_VALID = 17547;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_SYNCHRONISATION_GROUPS = 17548;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_TEST_LOGIN_NO_LOG = 17549;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEE_LOG_OUTPUT = 17550;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BEFORE_YOU_CONTINUE = 17551;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COMMUNICATE_WITH_PROVIDER = 17552;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ITEMS_ARE_NOW_IN_TASK_FORMAT = 17553;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TAKE_ME_TO_FORMAT = 17554;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_WHEN_READY_REMOVE_TASK_FORMAT = 17555;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERAS_WITH_ARCHIVES = 17556;\n public static Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERAS_WITH_ARCHIVES = 17557;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_PRODUCTGROUP_LPR = 201326592;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DEFAULT_OUTPUT_RELAY_NAME = 201326597;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HOTLIST_AND_PERMIT = 201326600;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_HIT_DELAY = 201326601;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ASSIGNMENT = 201326603;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PASSIVE = 201326604;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_UNITNOTAVAILABLE = 201326605;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_ENTITYISRUNNING = 201326606;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_DIFFERENTMODELS = 201326607;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_NOTFIXEDSHARP = 201326608;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_ENTITYISREADONLY = 201326609;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_DIFFERENTDEVICES = 201326610;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_UNITSWAPPED_DELETEME = 201326611;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_NOT_SENT_EMAIL = 201338094;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_EDIT_READ_PROTECTED = 201338095;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_EDIT_READ_MODIFIED = 201338096;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_NO_EXPIRATION = 201338097;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_DAYS_LEFT = 201338098;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTICS_PASTREADERROR = 201338099;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_FIELD_POSTMATCHED = 201338100;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_ALLHOTLISTSNOTASSOCIATED = 201338101;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_MATCHINGMUSTBEENABLED = 201338102;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_SOMEHOTLISTSNOTASSOCIATED = 201338103;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_UPDATEACTION = 201338104;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_CONFIRM_UNPROTECTION = 201338105;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_CONFIRM_UNPROTECTION_INFORMATION = 201338106;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTIVITYTRAIL_DELETE_HIT = 201338107;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING = 201338108;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_NO_MATCH_EVENTS = 201338109;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTOVU_PASTREADMATCHING_HOTLISTS = 201338110;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_UNSELECT_FROM_PASTREADMATCHING = 201338111;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_ACTION_UNSELECT = 201338112;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_SLOW_QUERY_WITH_IMAGES = 201338113;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PATROLLER_POSITIONS = 201338114;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PATROLLER_EVENTS = 201338115;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PARKING_EVENTS = 201338116;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PARKING_OCCUPANCY = 201338117;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTION_SET_PARKING_ZONE_OCCUPANCY = 201338118;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONNECTION_CONNECTING_TO_SHARP_PORTAL = 201338119;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONNECTION_ADD_UNIT_NOT_SECURE = 201338120;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHEVENT_DEVICES_CONNECTIVITY_PROBLEM_WITH_FUSIONSTREAM = 201338121;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL = 201338122;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_LPM_PROTOCOL_HTTP_LISTENING_PORT = 201338123;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_INFO = 201338124;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_UPDATE_PORT_WARNING = 201338125;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATED_LIVE_PORT_MESSAGE = 201338126;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_PORT_DETAILS = 201338127;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_DISCOVERY_PORT_MESSAGE = 201338128;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_LPM_PROTOCOL_PORT_MESSAGE = 201338129;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_DISABLED_INFO = 201338130;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL = 201338131;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CANNOT_UPGRADE_TO_LPM_PROTOCOL_INFO = 201338132;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL_FAILED = 201338133;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL_SUCCESS = 201338134;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_WHILE_GETTING_LPR_UNIT_CAPABILITIES = 201338135;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_OR_PERMIT_RESTRICTION_MISSING = 201338136;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PERMIT_OR_PERMIT_RESTRICTION = 201338137;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PERMIT_RESTRICTION_REQUIRES_PAY_BY_PLATE_VERSION = 201338138;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_INVALID_IPADDRESS_OR_PORT_USED_FOR_HTTPS_CONNECTION = 201338139;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_SWAP_DIFFERENTPROTOCOLMODELS = 201338140;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HOURS_LEFT = 201338141;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_UNIT_UNREACHABLE = 201338142;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UNIT_UNREACHABLE = 201338143;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_DUPLICATE_LPR_UNIT_ROLE = 201338144;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HTTPS_PORT = 201338145;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_FILE_ASSOCIATION_FOR_SHARP_INFO = 201338146;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_UNIT_UPGRADE_REQUIRED = 201338147;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_FOLDER_DOES_NOT_USABLE_TEMPLATES = 201338148;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_FOLDER_IS_MISSING_USABLE_TEMPLATES = 201338149;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED = 201338150;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLEMENT_FAILED_TIMEOUT = 201338151;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_ZERORETENTION = 201338152;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED_MINUTE = 201338153;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_DUPLICATE_LPR_UNIT_AREA = 201338154;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_EXPORT_PDF = 201338155;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_IPADDRESS_CHANGE_LPMSHARP = 201338156;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_UNITSWAP_NO_PHYSICAL_ADDRESS = 201338157;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPR_MANAGER_UNREACHABLE = 201338158;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LEGACY_PROTOCOL_UPGRADEABLE = 201338159;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LEGACY_PROTOCOL = 201338160;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_DATABASE_REFERENCE = 201338161;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_DATABASE_REFERENCE_DETAILS = 201338162;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_EDIT_EMAILS_DELIMITTER_TO_USE = 201338163;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SEARCH_TIPS = 201338164;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_PLATE_FILTER_INFO = 201338165;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_PLATE_FILTER_LABEL_INFO = 201338166;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTER_PUBLISH_FAILED = 201338167;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTER_EXPORT_FAILED = 201338168;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPR_MONITORING = 201338169;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_NO_HOTLIST_HIT_TO_DISPLAY = 201338170;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_SSLCERTIFICATEREQUIRED = 201338171;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_FILEISNOTVALIDCERTIFICATE = 201338172;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_URL = 201338173;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_MANDATORYINT = 201338174;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSLCERTIFICATE = 201338175;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_TOKENURL = 201338176;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SCOPE = 201338177;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CUSTOMERID = 201338178;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ENDPOINTS = 201338179;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ENDPOINTNAME = 201338180;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SERVERURL = 201338181;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_FILEFORMATSPECIFIC = 201338182;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTHORIZATION = 201338183;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTHORIZATIONMODE = 201338184;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_DATAEXPORTER_INVALIDCONFIG = 201338185;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEMAXENDPOINTSEXCEEDED = 201338186;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_DATAEXPORTER_DISPLAYNAME = 201338187;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_DATAEXPORTER_DESCRIPTION = 201338188;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_LIVE_HIT_MONITORING = 201338189;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CRITICAL = 201338190;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_DATAEXPORTER_CRITICAL = 201338191;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HITS_ENFORCEDONLY = 201338192;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_FILENAMETEMPLATE = 201338193;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSHKEY = 201338194;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSHPASSPHRASE = 201338195;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_FILENAMETEMPLATE = 201338196;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_EDIT_METADATASUGGESTIONS_WITHDELIMITER = 201338197;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_EDIT_METADATASUGGESTIONS = 201338198;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_EDIT_METADATASUGGESTIONS = 201338199;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_MODIFY_KNOWN_VALUE = 201338200;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_KNOWN_VALUE = 201338201;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_COMPANYCODE = 201338202;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONTRACTCODE = 201338203;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_QUEUEINGPROTOCOL = 201338204;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_RABBITMQCOMMUNICATION = 201338205;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_MAXENDPOINTSEXCEEDEDPERALPRROLE = 201338206;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_WATERMARKSTEMPLATE_AVAILABLEVARIABLES = 201338207;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ADDWATERMARKSTOCONTEXTIMAGES = 201338208;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_WATERMARKSTEMPLATE = 201338209;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDAUTHTOKEN = 201338210;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EMPTYAUTHTOKEN = 201338211;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDENDPOINT = 201338212;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CANNOT_USE_HOSTNAME_WITH_LEGACY_CONNECTION = 201338213;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_FILTER_TIMESTAMP_SHARPS = 201338214;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_UNITS_OFFLINE = 201338215;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITS_OFFLINE_LIST = 201338216;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTION_ADDTOHOTLIST = 201338217;\n public static Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_NOPLATEINFO = 201338218;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRODUCTGROUP_VIDEO = 268435456;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_METADATA_RECEIVING_RATE = 268435457;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_METADATA_WRITING_RATE = 268435458;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_RIGHT = 268435459;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_LEFT = 268435460;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_UP = 268435461;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_DOWN = 268435462;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ACTIVATE_END_STOP_POSITIONS = 268435463;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_DEACTIVATE_END_STOP_POSISIONS = 268435464;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BACKLIGHT_COMPENSATION_ON = 268435465;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BACKLIGHT_COMPENSATION_OFF = 268435466;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_COAX_PTZ_CONTROL = 268435467;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_ARCHIVE_TRANSFER = 268435468;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_RESTORE_VIDEO_ARCHIVES = 268435469;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_BACKUP_FOLDER = 268435470;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_FIND_ARCHIVES = 268435471;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVERS = 268435472;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OFFLINE_CAMERA_ARCHIVES = 268435473;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVERYTHING_SINCE_LAST_BACKUP = 268435474;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PLAYBACK_REQUESTS_FROM_EDGE = 268435475;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_EVENTS = 268435476;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESPECTIVE_ARCHIVER = 268435477;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVENTS_OFFLOAD = 268435478;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFER_GROUP_PROPERTIES = 268435479;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TYPE = 268435480;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EDGE_TO_ARCHIVER = 268435481;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_TO_ARCHIVER = 268435482;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESPECTIVE_ARCHIVER_BACKUP_FOLDER = 268435483;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_FULL_ARCHIVER = 268435484;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_CLEAR_PRESET = 268435485;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_CLEAR_PATTERN = 268435486;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_VIDEOINPUTFORMAT = 268435487;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_NIGHTMODE_ON = 268435488;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_NIGHTMODE_OFF = 268435489;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_AUTOIRIS_ON = 268435490;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_AUTOIRIS_OFF = 268435491;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_BACKLIGHTCOMPENSATION_ON = 268435492;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_BACKLIGHTCOMPENSATION_OFF = 268435493;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_H264 = 268435495;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MPEG4 = 268435496;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MJPEG = 268435497;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MPEG2 = 268435498;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_JPEG = 268435499;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_JPEG2000 = 268435500;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_WAVELET = 268435501;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_CONTAINERSTREAM = 268435502;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_DEC = 268435503;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_ENC = 268435504;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_INPUT = 268435505;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_OUTPUT = 268435506;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_PTZ = 268435507;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_SERIAL = 268435508;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_SPK = 268435509;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_MIC = 268435510;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_UNIT = 268435511;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_UNITPLAYBACK = 268435512;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS232 = 268435513;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS485 = 268435514;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS422485 = 268435515;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_SUCCESS = 268435516;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_FAILURE = 268435517;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_PENDING = 268435518;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_STARTED = 268435519;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_INCOMPLETE = 268435520;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_NOVIDEO = 268435521;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_NOSEQUENCE = 268435522;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_INITIALIZING = 268435523;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_DISK_GROUP = 268435524;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_HANDSHAKE = 268435525;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_TRANSFER = 268435526;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_DONE = 268435527;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_REQSENT = 268435528;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_WAIT = 268435529;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_FINALIZING = 268435530;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_GET_INFO_MSG = 268435531;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_PREPARING_FLASH = 268435532;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_REBOOTING = 268435533;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_LOADING_NEW_FILE_SYSTEM = 268435534;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_STARTUPGRADENONAME = 268435535;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_DOWNFIRMFOUND = 268435536;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_DOWNGRADE = 268435537;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FAILURE = 268435538;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FLASHERROR = 268435539;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FWU_LIB_TOO_OLD = 268435540;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_GENERALFAILURE = 268435541;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INSUFMEM = 268435542;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDARCH = 268435543;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDCOMPORT = 268435544;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDFILE = 268435545;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDFILENAME = 268435546;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDIP = 268435547;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_LOADFAIL = 268435548;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_MEMIMAGEFAIL = 268435549;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_OLDFWULIB = 268435550;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RELOCFAIL = 268435551;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RESOLVESYMBOLFAIL = 268435552;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RETRY = 268435553;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RXFAILURE = 268435554;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_TIMEOUT = 268435555;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNABLECONNECT = 268435556;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNEXPFAILURE = 268435557;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNRAMSETTING = 268435558;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNSIGN = 268435559;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNSTP = 268435560;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UPGRADE_17XX_35_TO_40 = 268435561;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UPGRADE_17XX_35_TO_42 = 268435562;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_USERCANCEL = 268435563;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_WININET_LIB_OFFLINE = 268435564;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FILETOOSHORT = 268435565;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FORMATERROR = 268435566;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_READFIRMFILE = 268435567;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_PASSWORD = 268435568;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEODATAFORMAT = 268435569;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_FRAMERATE = 268435570;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_STORAGE_FAILURE = 268435571;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CONNECTION_TIMEOUT = 268435572;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CONNECTION_TIMEOUT_DESC = 268435573;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_INVALID_STREAM_RESOLUTION = 268435574;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MULTIPLESOURCE_DESC = 268435575;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_RTPPACKETLOST_DESC = 268435576;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_DETECTION_WINDOW = 268435577;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_DETECTION_ZONE_TYPE = 268435578;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_GLOBAL_CHANGE = 268435579;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_IMAGE_TOO_BLURRY = 268435580;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_REFERENCE_CHECK_FAILED = 268435581;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_BRIGHT = 268435582;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_DARK = 268435583;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_NOISY = 268435584;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_NOT_ENOUGH_RSC_FOR_CONFIG = 268435585;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_ANALYTICS_SONY_VMF = 268435586;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_INVALID_CONFIG = 268435587;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_INVALID_BOOSTQUALITY = 268435588;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_EVENT_ERROR = 268435589;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_KEEPING_CONFIGURATION = 268435590;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_LOOSING_CONFIGURATION = 268435591;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_ANALYTICS_SONY_VMF_FILTER = 268435592;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_PRESENCE_DETECTED = 268435593;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_TRESHOLD = 268435595;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_EVENT = 268435596;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_SECTION_MOTION_ACTIVE = 268435597;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_SECTION_MOTION_INACTIVE = 268435598;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_H265 = 268435599;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BOSCH_INVALIDCONFIG_NUMBER_OF_STREAM = 268435600;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_SCHEDULE = 268435603;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE = 268435604;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_QUALITY_SETTINGS = 268435605;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_QUALITY = 268435606;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_SECURITY = 268435607;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PROMPT_FOR_CAMERA_CREDENTIALS = 268435608;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_RECORDING_SCHEDULE = 268435609;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_SPECIFY_DEFAULT_CAMERA_CREDENTIALS = 268435610;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_QUALITY_SETTINGS = 268435611;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_REFER_TO_ARCHIVER_SETTINGS = 268435612;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_HIGH = 268435613;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_STANDARD = 268435614;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_LOW = 268435615;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_HIGHEST_RESOLUTION_AVAILABLE = 268435616;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_ALWAYS = 268435617;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_CUSTOM = 268435618;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_MANUAL = 268435619;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_MOTION = 268435620;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_OFF = 268435621;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_CAMERA_DEFAULT_SETTINGS = 268435622;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_VIDEO_QUALITY = 268435623;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_QUALITY_CHANGED = 268435624;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_APPLY_TO_ALL_CAMERAS = 268435625;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_AUTHENTICATION_USERNAME = 268435626;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_HIGH_SPEED_MODE = 268435627;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_SLOW_MODE = 268435628;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_AUTO_MODE = 268435629;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_OVERLAYS = 268435632;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHOW_OVERLAYS = 268435633;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_BACKUP_FOLDER_CONFLICT = 268435634;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_ORIGIN_TYPE = 268435635;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_MEDIA_TYPE = 268435636;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_EDGEPLAYBACK = 268435637;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_EXPORT = 268435638;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_METADATA = 268435639;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_TRICKLING = 268435640;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIORITIZED_SOURCE = 268435641;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGETOARCHIVER = 268435642;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVERTOARCHIVER = 268435643;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVETRANSFER = 268435644;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_ARCHIVETRANSFER = 268435645;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_MODIFIED = 268435646;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETED = 268435647;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETE_CONFIRMATION = 268435648;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_START_TRANSFER_TRANSFERGROUPS = 268435649;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_STOP_TRANSFER_TRANSFERGROUPS = 268435650;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_BACKUP_DESCRIPTION = 268435651;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVER = 268435652;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVER_DESCRIPTION = 268435653;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGE = 268435654;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGE_DESCRIPTION = 268435655;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_TRANSFERGROUP_DETAILS = 268435656;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_TRANSFERRED_SIZE = 268435657;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_START = 268435658;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_END = 268435659;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_STATUS = 268435660;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_NEXT_TRANSFER = 268435661;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFERGROUP_DETAILS = 268435662;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_START_TRANSFER = 268435663;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_STOP_TRANSFER = 268435664;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING = 268435665;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_INCOMPATIBLE_SOURCES = 268435666;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETED_DETAILS = 268435667;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFER_ARCHIVER_OFFLINE = 268435668;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVEBACKUP_MAX_THROUGHPUT = 268435669;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_MAIN = 268435670;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_BASELINE = 268435671;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_HIGH = 268435672;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENABLE_PLAYBACK_REQUESTS = 268435673;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_PARTIAL_SUCCESS_SUMMARY = 268435674;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_FAILURE_SUMMARY = 268435675;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_NORMAL_MODE = 268435676;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_SPECIAL_MODE = 268435677;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SEQUENCE_OVERLAP = 268435678;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAX_UNIT_PLAYBACK_COUNT = 268435679;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAX_PLAYBACK_CAPACITY = 268435680;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NO_OTHER_ARCHIVER_OWNER_FOUND = 268435681;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_REMOTEZOOM = 268435682;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_INCREMENT_ZOOM = 268435683;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_DECREMENT_ZOOM = 268435684;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_INCREMENT_FOCUS = 268435685;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_DECREMENT_FOCUS = 268435686;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_FULLRANGE_FOCUS = 268435687;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_SHORTRANGE_FOCUS = 268435688;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_RESET_ZOOM = 268435689;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_APPLICATION_FAILURE = 268435690;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RESTORE_ARCHIVES = 268435692;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RESTORE_MULTIPLE_ARCHIVES = 268435693;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_OPTION_VIDEO_WATERMARKING_ENABLED = 268435694;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM_ABOVE_THRESHOLD = 268435697;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM_BELOW_THRESHOLD = 268435698;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DELETE_OLD_BACKUP_ON_DISK_FULL = 268435701;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED = 268435702;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED = 268435703;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS = 268435704;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_APPLICATION_EVENTS = 268435705;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESTORED_BACKUP = 268435706;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ORIGINTYPE_EDGE_TRICKLING = 268435707;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CONNECTION_TO_MEDIAROUTER_FAILED = 268435708;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MEDIAROUTER_DESCRIBE_EMPTY = 268435709;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_ARCHIVING = 268435710;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_MOTION = 268435711;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_AUXARC_COVERAGE_CONFLICT_DIAGNOSE_FORMAT = 268435712;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_COMPRESSION = 268435713;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NETWORK_ROUTE_NOT_FOUND = 268435714;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MEDIAROUTER_NO_STREAM_SOURCE_FOUND = 268435715;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NO_CONNECTION_TO_ANY_SOURCE_ARCHIVER = 268435716;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVETRANSFER_COVERAGE_TIMESPAN = 268435718;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_ARCHIVER_OFFLINE = 268435719;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING_UP_TO = 268435720;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFER_GROUP_NO_VALID_SOURCES = 268435721;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_RELATIVE_TIMEZONE = 268435723;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_SHOW_DIAGNOSTIC_TIMELINE = 268435724;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DUAL = 268435725;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_HINT_REORDER_SEQUENCES = 268435726;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_RESULT_NOT_SET = 268435727;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NO_VALID_RTSP_RESULT = 268435728;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_CONNECTION_TO_MEDIA_ROUTER_FORMAT = 268435729;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_ARCHIVER_NOT_OWNER_OF_TRANSFER_GROUP_FORMAT = 268435730;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NO_DATA_RECV_FROM_MEDIA_PLAYER = 268435731;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_BACKUP_SET_FILE_NOT_FOUND_FORMAT = 268435732;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_CANT_RESTORE_NOT_A_BACKUP_SET_FORMAT = 268435733;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_EMPTY_BACKUP_SET = 268435734;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_RESTORE_NOT_ENOUGH_SPACE_FORMAT = 268435735;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NOWHERE_TO_ALLOCATE_FILE_FORMAT = 268435736;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_FILE_ALLOCATION__FORMAT = 268435737;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_START_FANS = 268435738;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_STOP_FANS = 268435739;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_START_HEATERS = 268435740;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_STOP_HEATERS = 268435741;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PLAYBACK_DURATION = 268435742;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_WRITE_TO_DISK = 268435743;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_WRITE_TO_DB = 268435744;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_ARCHIVE_FILE_ERROR = 268435745;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DATABASE_USED_BY_ANOTHER_AUXARC = 268435746;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE_MESSAGE = 268435747;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NOT_ENOUGH_SPACE_MESSAGE = 268435748;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NO_PATH_AVAILABLE_MESSAGE = 268435749;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NO_PATH_AVAILABLE_MESSAGE = 268435750;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE = 268435751;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_ON = 268435752;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_AUTO = 268435753;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_OFF = 268435754;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_DAY = 268435755;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_NIGHT = 268435756;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_DAYNIGHT = 268435757;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNING = 268435758;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENDED_WITH_ERRORS = 268435759;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_SYSTEM_CANCEL = 268435760;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_TRANSFERED_FROM_ARCHIVER = 268435761;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_RECORDED_BY_LOCAL_ARCHIVER = 268435762;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_STORED_ON_UNIT = 268435763;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_TRICKLED_UNIT = 268435764;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_TRANSFERGROUP_CANNOT_MODIFY_ACTIVE = 268435765;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_SHOCK_DETECTED = 268435766;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_MANUAL_BACKUP_DUPLICATE_ARCHIVES = 268435767;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PELCO_OBJECT_COUNT_REACHED = 268435768;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PELCO_ADAPTIVE_MOTION = 268435769;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_CAPABILITY = 268435770;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SONY_ROTATION_INFO = 268435771;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_SHOULD_BE_REPLACED = 268435778;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MUST_BE_REPLACED = 268435779;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_AXIS_WS_CONFIGURATION_WEBPAGE = 268435780;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_DOWNSCALING = 268435781;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_DOWNSCALING_RESOLUTION = 268435782;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHOCK_DETECTION_TRESHOLD = 268435783;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_NOT_FOUND_FORMAT = 268435784;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_ACCESS_ERROR_FORMAT = 268435785;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_ERROR = 268435786;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CAMERA_INVALID_ENCRYPTION_CONFIG = 268435787;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_VIEWING_MODE = 268435790;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PARTIAL_SUCCESS_LEGACY_EXPORT_SOME_SEQUENCE_ENCRYPTED = 268435791;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_LEGACY_EXPORT_ALL_SEQUENCE_ENCRYPTED = 268435792;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONNECTED_TO_UC = 268435793;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_LOSTCONNECTION_TO_UC = 268435794;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_RECOVERED_UC = 268435795;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_UC = 268435796;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_UC_STOPPED = 268435797;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_UC_RESTORED = 268435798;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_SERVICE_CREATION = 268435799;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_TEST = 268435800;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_DESCRIPTION = 268435801;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_RUN = 268435802;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_SINGLE = 268435803;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_QUAD = 268435804;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_PANORAMIC = 268435805;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_RUN_BENCHMARK_TEST = 268435806;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_VIDEO_FILE_IMPORT = 268435808;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIQUEID = 268435809;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LENS_NOT_CONFIGURED = 268435810;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LENS_NOT_CONFIGURED_DESCRIPTION = 268435811;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_SINGLE_PANORAMIC = 268435813;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_DUAL_PANORAMIC = 268435814;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_CLIP = 268435815;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_UNABLE_TO_SET_MC_PORT = 268435816;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_ANY_SOURCE = 268435817;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INVALID_NETWORK = 268435818;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_GPU_WARNING = 268435819;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_RERUN = 268435820;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_SUCCESS = 268435821;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL = 268435822;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_IN_PROGRESS = 268435823;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_NARROW_PANORAMA = 268435824;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_WIDE_PANORAMA = 268435825;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_FAILED = 268435826;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_FAILED = 268435827;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_AUDIO_IMPORT_FAILED = 268435828;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_APPLICATIONS = 268435829;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VENDOR = 268435830;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_MOTION_SEARCH_NOTSUPPORTED_FOR_CAMERA = 268435831;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_THERMAL_SETTINGS = 268435832;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_CELSIUS = 268435833;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_FAHRENHEIT = 268435834;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_UPPER_LEVEL = 268435835;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MIDDLE_LEVEL = 268435836;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOWER_LEVEL = 268435837;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_CELSIUS_SHORT = 268435838;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_FAHRENHEIT_SHORT = 268435839;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_DEFAULT = 268435840;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ASSUME_DATES_AS_LOCAL = 268435841;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_AXISDLG_SPEEDDRY = 268435842;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOCAL_TIME = 268435843;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INFO_TIME_REPORTED = 268435844;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RTSP_AUTHENTICATION_INVALID = 268435845;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_AUTHENTICATION_FAILED = 268435846;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_HTTPS = 268435847;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_HTTP_SERVER_FAILED_TO_LISTEN_ON_XY = 268435848;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DELETE_CERTIFICATE_FILES = 268435849;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PANASONIC_INVALIDCONFIG_MJPEG = 268435850;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_TCP = 268435851;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_UDP = 268435852;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_MULTICAST = 268435853;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INPUT_NUMBER = 268435854;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_LICENSE_COUNT_EXCEEDED = 268435855;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_LICENSE_COUNT_EXCEEDED_DETAIL = 268435856;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USE_SECURE_RTSP_WHEN_AVAILABLE = 268435857;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DELETE_CERTIFICATE_FILES_WARNING = 268435858;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_VALIDATION = 268435859;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_SUBFOLDER_ACCEPTED = 268435860;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_SUSPICIOUS_RETENTION = 268435861;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_SUSPICIOUS_RETENTION_DETAILS = 268435862;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CANNOT_DISPLAY_STREAM = 268435863;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENABLE_SECURE_COMMUNICATION = 268435864;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENCRYPTION_NOT_SUPPORTED = 268435865;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENABLE_METADATA_STREAM = 268435869;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_UNIT_REPLACEMENT = 268435870;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAXIMUM_ITEM_COUNT_FAILOVER = 268435871;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_DISABLING_METADATA_STREAM = 268435872;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_STATIONS = 268435873;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_STATION = 268435874;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_ADD_NEW = 268435875;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_DUPLICATE = 268435876;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_CERTIFICATE = 268435877;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_AUXILIARY_RECORDING = 268435878;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_WARNING = 268435879;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CAMERA_DUPLICATE = 268435880;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EQUIPMENT = 268435881;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_HOLDERS = 268435882;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_HOLDER = 268435883;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_PARTIAL_FAILURE_SUMMARY = 268435884;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEOS_FILTER = 268435885;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_MOTION_CAPABILITIES_INCOMPATIBLE = 268435886;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_MC_RANGE_WARNING = 268435887;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_MC_PORT_RANGE_WARNING = 268435888;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MXPEG = 268435889;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_METADATA = 268435890;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_OMNICASTCPNOTINSTALLED = 268435891;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PANASONIC_INVALID_RESOLUTION_MJPEG = 268435892;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_BOSCH_IVA = 268435893;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_AXIS_DECODER_USE_HTTPS_WHEN_NOBASICAUTH = 268435894;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_SMARTCODEC = 268435901;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_STORAGEMEDIA_ERROR = 268435902;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_ACCESS_ERROR = 268435903;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_NO_FREE_SPACE = 268435904;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_WRITE_PROTECTED = 268435905;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NETWORKSHARE = 268435907;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_REDIRECTOR_NOUDPPORTAVAILABLE = 268435908;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_TRUE = 268435909;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_FALSE = 268435910;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONFIGURE_MOTION_ZONE_FROM_CONFIGTOOL = 268435912;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SHORT_LIVED_OBJECTS = 268435913;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SWAYING_OBJECTS = 268435914;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SMALL_OBJECTS = 268435915;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_EDGE_SIMULTANEOUS_CAMERAS = 268435916;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NOT_ENOUGH_SPACE_MESSAGE = 268435917;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NO_PATH_AVAILABLE_MESSAGE = 268435918;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVECONSOLIDATION = 268435919;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVECONSOLIDATION_DESCRIPTION = 268435920;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_ARCHIVE_CONSOLIDATION = 268435921;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STARTED_MANUAL = 268435922;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STOPPED_MANUAL = 268435923;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_PANASONIC_SMARTCODEC_INVALIDCFG_FMT = 268435924;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_TIME_DETECTION_THRESHOLD = 268435925;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_DISTANCE_DETECTION_THRESHOLD = 268435926;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_SIZE_DETECTION_THRESHOLD = 268435927;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MEDIAGATEWAY_APPLICATIONPATH_ERROR = 268435928;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_SNAPSTREAM = 268435929;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MOTIONONZONE_DESC = 268435930;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MOTIONOFFZONE_DESC = 268435931;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SAMPLE_URL = 268435932;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SAMPLE_URL_RTSP_TOOLTIP = 268435933;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_BWC_REGENERATE_CONFIG_FILES = 268435934;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_REGENERATE_ALL = 268435935;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_STATIONS_CONF_FILE_OBSOLETE = 268435936;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_REGENERATE_ALL = 268435937;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_INCOMING_UDP_PORT_RANGE_EXHAUSTED = 268435938;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USER_UNAUTHORIZED_EXPORT = 268435939;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MEDIAGATEWAY_WEBCLIENTCONNECTION = 268435940;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_ARCHIVE_CONSOLIDATION_CONFIG_ONLY_IN_ADVANCED_SETTINGS = 268435941;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_ARCHIVER_AGENT_FORMAT = 268435942;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_ARCHIVER_AGENT = 268435943;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_NOVIDEO_ALLSOURCE = 268435944;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_NOVIDEO_SPECIFICSOURCE = 268435945;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL = 268435946;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_VIDEO_ERROR = 268435947;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_ERROR = 268435948;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_NONE = 268435949;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_DETAILS = 268435950;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_VIDEO_ERROR_DETAILS = 268435951;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_ERROR_DETAILS = 268435952;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_NONE_DETAILS = 268435953;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_POLICY = 268435954;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_BWC_CONVERSION_POLICY = 268435955;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR = 268435956;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_COPY = 268435957;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_COPIED = 268435958;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_RETENTION = 268435959;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_PRIVATE_VIDEO = 268435960;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_ROLE = 268435961;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_NO_ARCHIVER_WARNING = 268435962;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_NOT_RUNNING_WARNING = 268435963;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_SUCCESS = 268435964;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MSGBOX_INFO_DELETE_BWCAMERA = 268435965;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LINKED_CAMERA = 268435966;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_DATABASE = 268435967;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_STREAMING = 268435968;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_FILEWRITE = 268435969;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_CHANGING_SETTINGS_REQUIRE_REGENERATE_STATION = 268435970;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_CUSTOM_EVENT = 268435971;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_RECEPTION_UDP_PORT_RANGE_OVERLAP = 268435972;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_DEFAULT_ARCHIVER_HAS_MULTIPLE_AGENTS = 268435974;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_HAS_FAILOVER = 268435975;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ADD_PUBLIC_ADDRESS_OVERRIDE = 268435976;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_REMOVE_PUBLIC_ADDRESS_OVERRIDE = 268435977;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_REMOVING_PRIVACY_PROTECTION = 268435978;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_MEDIAPROCESSOR_ASSOCIATION = 268435979;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_NO_DEFAULT_ARCHIVER = 268435980;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_INWARNINGSTATE_WARNING = 268435981;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUBLIC_ADDRESSES = 268435982;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_METHOD = 268435983;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_INTENSITY_LEVEL = 268435984;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_COLOR = 268435985;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_HIGHLIGHT_INTENSITY = 268435986;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_TOLERANCE = 268435987;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PRESET = 268435988;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_NUM_ILLUMINATION = 268435989;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ILLUMINATION_TOLERANCE = 268435990;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_CONTRAST_THRESHOLD = 268435991;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_LOADING_PREVIEW = 268435992;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_STARTUP_PERIOD = 268435993;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_CONTINUOUS_PERIOD = 268435994;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_GRID_BLOCK_SIZE = 268435995;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ANALYSIS_RESOLUTION = 268435996;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SHOW_ZONES_BOUNDARIES = 268435997;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENEPRESET_OUTDOOR = 268435998;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENEPRESET_INDOOR = 268435999;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_PIXELATION = 268436000;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_BLUR = 268436001;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_COLORIZE = 268436002;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_VIRTUAL_OUTPUT = 268436003;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_FAST_PREVIEW = 268436004;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVACY_PROTECTION_FAST_PREVIEW = 268436005;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_LEARNING_PERIOD = 268436006;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CANNOT_CHANGE_VIRTUAL_PORT_STATE = 268436007;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PRESET_CONFIGURATION = 268436008;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PREVIEW_CONFIGURATION = 268436009;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVACY_PROTECTION_PREVIEW = 268436010;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OUT_OF_SYNC = 268436012;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CAMERA_TIME_IS_OFF_BY_MS = 268436013;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CAMERA_TIME_NOT_SUPPORTED = 268436014;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MULTICAST_IPV6 = 268436015;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_NO_ANALYSIS_CONFIG = 268436016;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SAVING_DEFAULT_UNRELIABLE = 268436017;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_INVALID_BITRATE_VALUE = 268436018;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_INACURATE_DETECTION_BLOCKS = 268436019;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_PERFORMANCE = 268436020;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_BALANCED = 268436021;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_QUALITY = 268436022;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ANALYSIS_QUALITY = 268436023;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_BLOCK_PRECISION = 268436024;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_0_DEGREE = 268436025;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_90_DEGREE = 268436026;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_180_DEGREE = 268436027;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_270_DEGREE = 268436028;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_PRESET_SEQUENCE = 268436029;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_PATROL = 268436030;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_HOME_POSITION = 268436031;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PEOPLE_COUNTING = 268436032;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PEOPLE_COUNTING_ALARM = 268436033;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUNCTUAL = 268436034;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DIRECTION = 268436623;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RULENAME = 268436624;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_TOGGLE = 268437704;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_CAMERALIST = 268437705;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_TOOLTIP_CONTINUOUSSTREAMING = 268437706;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CALLUPTIMEOPTIMIZATION_AUTOMATIC_STREAMUSAGE = 268437707;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TEMPERATURE_ALARM_THRESHOLD = 268437708;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MSGBOX_INFO_DELETE_BWCAMERAS = 268437709;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_DELETE = 268437710;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_FILESYSTEM = 268437711;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_OTHER = 268437712;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_WRITE = 268437713;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_READ = 268437714;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MTU = 268437715;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSMISSION_LOST_MTU_JUMBO_FRAME_DETECTED = 268437718;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_CHECKBOX_KEEPMOTIONDETECTIONFROMUNITWEBPAGE = 268437719;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CALLUPTIMEOPTIMIZATION_NOSEQUENCESELECTED = 268437720;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_CALLUPTIMEOPTIMIZATION_NOSEQUENCEFOUND = 268437721;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_ADD_NEVER_BLUR_ZONE = 268437722;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_ADD_ALWAYS_BLUR_ZONE = 268437723;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_REDIRECTION_STRATEGY_USAGE_NOT_SUPPORTED = 268437724;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CANNOT_RESOLVE_GENETEC_SERVER_ADDRESS = 268437725;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ERROR_EXPORT_NOT_POSSIBLE_CURRENT_CONFIGURATION = 268437726;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SECURE_COMMUNICATION_ENCRYPTION_ON_TRANSIT = 268437727;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LARGERTPPACKETS = 268437728;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_LARGERTPPACKETS = 268437729;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_INTEGRITY_MONITOR_SYSTEMWIDE = 268437730;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_SCREAM = 268437731;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_GUNSHOT = 268437732;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_EXPLOSION = 268437733;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_GLASSBREAKING = 268437734;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTICS_DETECTED = 268437735;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTICS_DETECTED_WITH_LIKELIHOOD = 268437736;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USE_PUBLIC_ADDRESS = 268437737;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_IN = 268437738;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_OUT = 268437739;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_LEFT = 268437740;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_RIGHT = 268437741;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_IN = 268437742;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_OUT = 268437743;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_LEFT = 268437744;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_RIGHT = 268437745;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTINGALARM = 268437746;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_STATUS_STARTED = 268437747;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_STATUS_STOPPED = 268437748;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_FAILURE_DETAILS = 268437749;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_RECOVERED = 268437750;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_FULL = 268437751;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_EMPTY = 268437752;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_UNEXPECTED_ERROR = 268437753;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_UNKNOWN = 268437754;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OFF_BY_SEC_MS_DESCRIPTION = 268437755;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OFF_BY_MINUS_SEC_MS_DESCRIPTION = 268437756;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_UNKNOWN_DESCRIPTION = 268437757;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_GPU_WARNING_DRIVER_OUTDATED = 268437758;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVIDENCE_NAME = 268437759;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAPTURE_TIME = 268437760;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_UPLOAD_TIME = 268437761;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONVERSION_STATUS = 268437762;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONVERSION_PROGRESS = 268437763;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_REPORT_WEARABLE_CAMERA_EVIDENCES = 268437764;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASKSHORTDESC_REPORT_WEARABLE_CAMERA_EVIDENCES = 268437765;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM = 268437766;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_IMAGE_COVERED = 268437767;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_IMAGE_BLURRY = 268437768;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_CAMERA_MOVED = 268437769;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_BAD_LIGHTING = 268437770;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_LOW_CONSTRAST = 268437771;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_PERSISTENCE_PATH = 268437772;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_MODULES = 268437773;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_NETWORK_PATH_HINT = 268437774;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MEDIAROUTER_CONFIG_ENCRYPTION_ON_TRANSIT_BACKWARD_REDIRECTOR = 268437775;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MEDIAROUTER_CONFIG_ENCRYPTION_ONTRANSIT_LIMITATION = 268437776;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_PRESETS = 268437777;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_INDOOR = 268437778;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_OUTDOOR_NEAR = 268437779;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_OUTDOOR_FAR = 268437780;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_THERMAL = 268437781;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_SELECTED_PRESET = 268437782;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_EVENT_STORAGE_ARCHIVER = 268437783;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_LEARNING_RATE = 268437784;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_CONTRAST_CHANGE_DETECTION = 268437785;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_LIGHTING_CHANGE_DETECTION = 268437786;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_NO_SELECTED_ARCHIVER = 268437787;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_INVALID_FIELDS = 268437788;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_INVALID_PATH = 268437789;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_AUDITTRAILS_REDIRECTION_STRATEGY_ADDED_REMOVED = 268437790;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DOES_NOT_EXISTS = 268437791;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SERVERVERSION = 268437792;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CREATEREMOTESITEARCHIVER = 268437794;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PTZ_CONFIGURATION = 268437795;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EXTENDED_PTZ_RANGE = 268437796;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENABLE_ENCRYPTION_ON_TRANSIT_TILE = 268437797;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_MULTICAST_ADDRESSES_NOT_VACANT = 268437798;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_MULTICAST_ADDRESSES_VALID = 268437799;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_REDIRECTOR_NEEDS_UPDATE_FOR_ENCRYPTION_ON_TRANSIT_TILE = 268437800;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_LIVE = 268437801;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_PLAYBACK = 268437802;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EXPORT_G64X_FILE_CREATION_FAILED = 268437803;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_WEARABLE_CAMERA_EVIDENCES = 268437804;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CANNOT_CREATE_FILE = 268437805;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_FILE_PATH_LENGTH_TOO_LONG = 268437806;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_EXPORT_FILE_PATH_TOO_LONG = 268437807;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_TRANSPARENCY = 268437808;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_FEDERATION_RETURN_ON_TILE = 268437809;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MULTICAST_PORT_IPV6 = 268437810;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PRIVACYPROTECTION_ADDEDAGENTSLOADBALANCING = 268437811;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONTRANSIT_STREAM_INFO = 268437812;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_FULL_ANALYSIS_TIME_RANGE = 268437813;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAXIMUM_SIMULTANEOUS_ANALYSIS = 268437814;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CIM_CAMERAS = 268437815;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CIM_RELATIONSHIPS = 268437816;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LIST_CAMERAS = 268437817;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PP_RELATIONSHIPS = 268437818;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WARNING_CIM_CONFIG_SHORT_TIME = 268437819;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MESSAGE_NO_RELATED_CAMERA = 268437820;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTP_PORT_IN_USE_ERROR = 268437821;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_PORT_IN_USE_ERROR = 268437822;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DISABLING_SETTING_MIGHT_RECONNECT = 268437823;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INFO_MULTICAST_FROM_UNIT_NOT_SUPPORTED = 268437824;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCRYPTION_TYPE_IN_TRANSIT_AT_REST = 268437825;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_ENCRYPTION_IN_TRANSIT_REQUIRES_SECURECOMM = 268437826;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYSING_STREAMING_STATUS = 268437827;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_REMOVETILE = 268437828;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_STREAMING = 268437829;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MEDIA_GATEWAY_GENERAL = 268437830;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MINIMUM_RESOLUTION_FOR_HIGH_QUALITY = 268437831;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOW_QUALITY = 268437832;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DEFAULT_STREAM = 268437833;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_RESOLUTION_JPEG_TRANSCODING = 268437834;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NO_LIMIT_RESOLUTION = 268437835;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HIGH_QUALITY = 268437836;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER = 268437841;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_GPU_WARNING_INTELDRIVER_OUTDATED = 268437842;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_BLOCK_HIGHLIGHT = 268437843;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PIXELATION_ADVANCED = 268437844;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PT_SPEED_TYPE = 268437845;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PT_PROPORTIONAL_MODE = 268437846;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_ROLE = 268437847;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENE_CHANGED = 268437848;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO__ABOUT_REMOVE_CIM_FROM_CAMERAS = 268437849;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVER_VIDEO_FILE_NOT_FOUND = 268437850;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHRINK = 268437851;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EXPAND = 268437852;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_AXIS_START_WIPER_SEQUENCE = 268437853;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_AXIS_STOP_WIPER_SEQUENCE = 268437854;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_LOADING_MEDIAPROCESSOR_DATA = 268437855;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSE_AUXILIARY_DECRYPTION_NO_KEY_DROPPED_FRAMES = 268437856;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_RENDER_ONLY = 268437857;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_GRAPHIC_CARDS = 268437858;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CONFIGURATION_WILL_BE_LOST = 268437859;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_PARTIAL_SUCCESS_EXPORT_SOME_SEQUENCE_ENCRYPTED = 268437860;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_PARTIAL_SUCCESS_EXPORT_LOST_FILE = 268437861;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_FILE_HEADERS_RETRIEVED = 268437862;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_FILE_HEADERS_RETRIEVED_RANGE = 268437863;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_VIDEO_DIGITALLY_SIGNED = 268437864;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILE_WONT_CONTAIN_DIGITAL_SIGNATURE = 268437865;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_FEDERATION_ARCHIVER_PLAYBACK_SOURCE = 268437866;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_FEDERATION_AUXILIARY_ARCHIVER_PLAYBACK_SOURCE = 268437867;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_ANY_FEDERATION_PLAYBACK_SOURCE = 268437868;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVE_TRANSFER_MISSING_FILES = 268437869;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_CAMERAINTEGRITY_REFRESHALLTHUMBNAILS = 268437870;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CAMERAINTEGRITY_REFRESHTHUMBNAILS = 268437871;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_CAMERAINTEGRITY_REFRESHTHUMBNAILSCONFIRM = 268437872;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTICMODULEOFFLINE = 268437873;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERAINTEGRITY_MUSTBERUNNING = 268437874;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERAINTEGRITY_MUSTBEUPGRADED = 268437875;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_EXPORT_SINGLE_USER_AUTHORIZATION = 268437876;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_EXPORT_SINGLE_USER_AUTHORIZATION = 268437877;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_AUTHENTICATION_FAILED = 268437878;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_LICENSE = 268437879;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_DELETED_VIDEO_URECOVERABLE = 268437880;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_KEEP_ARCHIVES = 268437881;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ROLE_CLOUD_ARCHIVE_PLAYBACK_NAME = 268437882;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ROLE_CLOUD_ARCHIVE_PLAYBACK_DESCRIPTION = 268437883;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TRIGGER_DATE = 268437884;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_END_TRANSFER_TIME = 268437885;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRIGGER_REASON = 268437886;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT = 268437887;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TIMESTAMP_FILTER = 268437888;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_COUNT_FILTER = 268437889;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MANUAL_TRANSFER = 268437890;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCHEDULED_TRANSFER = 268437891;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DUPLICATES_TRANSFER = 268437892;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BACKUP_TRANSFER = 268437893;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_FAIL = 268437894;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_SUCCESS = 268437895;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_PARTIAL = 268437896;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_CANCEL = 268437897;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_SHOW_LAST = 268437898;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_ATTEMPTS = 268437899;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_REPORT_ARCHIVE_TRANSFER_HISTORY = 268437900;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_TASKSHORTDESC_ARCHIVER_TRANSFER_HISTORY = 268437901;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RETRY_COUNT = 268437902;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFER_RESULT_DETAILS = 268437903;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_CAMERA_RESULT = 268437904;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_GPSLOCATION = 268437905;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_GPSLOCATION = 268437906;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MOTION_DETECTION_CODEC_NOT_SUPPORTED_IN_SOFTWARE = 268437907;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NEVER = 268437908;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ALLOW_TRANSCODING = 268437909;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONLY_FOR_PTZ_CONTROL_AND_MOBILE_SERVER = 268437910;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ALWAYS_FOR_UNSUPPORTED_DEVICES_AND_CODECS = 268437911;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAMS_LOCAL = 268437912;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAMS_FEDERATED = 268437913;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_START_ADDRESS = 268437914;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PORT_INCREMENT = 268437915;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PORT_INCREMENT = 268437916;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_METADATAFILELOCATION = 268437917;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONE_ROW_FOR_ALL_ORIGINS = 268437918;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONE_ROW_PER_ORIGIN = 268437919;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DISPLAY_MODE = 268437920;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ALARM_TO_REMOVE = 268437921;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_CANNOT_CONNECT_CLOUDARCHIVEPLAYBACK = 268437922;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_CONNECT_CLOUDARCHIVEPLAYBACK = 268437923;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_CLOUD_ARCHIVE_PLAYBACK_SOURCE = 268437924;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVES_REPORT_FORCE_DISPLAY_GAPS_GREATER_THAN = 268437925;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOW_RESOLUTION_TO_LIVE = 268437926;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LIVE_TO_HIGH_RESOLUTION = 268437927;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAM_DISPLAY_THRESHOLD = 268437928;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_RESOLUTION_MJPEG_TRANSCODING = 268437929;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SHOW_ORIGINAL_STREAMS_FOR_ALL_TILES = 268437930;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SHOW_PROTECTED_STREAMS_FOR_ALL_TILES = 268437931;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_SHOW_ORIGINAL_STREAMS = 268437932;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_SHOW_PROTECTED_STREAMS = 268437933;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_RETRIEVE_CLOUD_ARCHIVES = 268437934;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_RETRIEVE_CLOUD_ARCHIVES = 268437935;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE = 268437936;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_NOT_ACTIVATED = 268437937;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_OPEN_BROWSER_ACTIVATION = 268437938;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CLOUD_STORAGE = 268437939;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WHAT_IS_CLOUD_STORAGE = 268437940;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_DESCRIPTION = 268437941;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LEARN_MORE = 268437942;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ACTIVATE_PRODUCT = 268437943;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_RETRIEVE_FROM_CLOUD_ARCHIVE = 268437944;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ACTIVITYTRAIL_TYPE_RETRIEVEFROMCLOUD_REQUESTED = 268437945;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_PLAYBACK_IS_OFFLINE = 268437946;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ORIGIN_RECORDED_BY_AUXILIARY_ARCHIVER = 268437947;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_REQUIRE_TLS_RTSPS = 268437948;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_ACTIVATION = 268437949;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_CONNECTION = 268437950;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_REFERENCE_POINTS = 268437951;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_REFERENCE_POINTS_CHANGED = 268437952;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_CROWD_COUNTING = 268437953;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_ARCHIVE_TOKEN_MISSING = 268437954;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_ARCHIVE_TOKEN_MISSING_DETAILS = 268437955;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_ERROR_FORBIDDEN_TRANSFORMATION = 268437956;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_LIVE_TO_HIGH_MUST_BE_GREATER_OR_EQUAL_TO_LOW_TO_LIVE = 268437957;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CLOUD_ARCHIVES_LONG_TERM_STORAGE = 268437958;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CLOUD_ARCHIVES_REQUESTED_FROM_LONG_TERM_STORAGE = 268437959;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_CLOUD_PLAYBACK_ROLE = 268437960;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CREATE_ROLE = 268437961;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DEACTIVATE_CLOUD_STORAGE = 268437962;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_DEACTIVATE_CLOUD_STORAGE = 268437963;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_EXISTING_CONFIG_NOT_DELETED = 268437964;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NOT_ACTIVATED_CLOUDARCHIVEPLAYBACK = 268437965;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_SERVER_UNAUTHORIZED_CLOUDARCHIVEPLAYBACK = 268437966;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_SERVER_UNAUTHORIZED_CLOUDARCHIVEPLAYBACK = 268437967;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_NOT_FOUND_CLOUDARCHIVEPLAYBACK = 268437968;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_NOT_FOUND_CLOUDARCHIVEPLAYBACK = 268437969;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_SYNCHRONIZATION_ERROR_CLOUDARCHIVEPLAYBACK = 268437970;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_NETWORK_ERROR_CLOUDARCHIVEPLAYBACK = 268437971;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_NOT_SUPPORTED = 268437972;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_AUTHENTICATION = 268437973;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_COMMUNICATE_CLOUD_SERVICES = 268437974;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_TURNED_OFF = 268437975;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_CLOUD_STORAGE_DESCRIPTION = 268437976;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_PLAYBACK_NOT_ACTIVATED = 268437977;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOTIFICATION_NAME_RETRIEVE_CLOUD_ARCHIVES = 268437978;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVING_CLOUD_ARCHIVES_CAMERAS_NOTIFICATION = 268437979;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_RETRIEVE_LTS_CLOUD_ARCHIVES = 268437980;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_SHOULD_RETRY_STATUS = 268437981;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_EXPIRED_DETAILS = 268437982;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_FAILURE_DETAILS = 268437983;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_RETRYABLE_ERROR_DETAILS = 268437984;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_NOTIFICATION_COMPLTED = 268437985;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_COLUMNNAME_LTS_READY_BEFORE = 268437986;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_RETRIEVE_LTS_REMOVE_NOTIFICATION = 268437987;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_RETRIEVE_LTS_ROLE_UNAVAILABLE_NOT_UPDATING = 268437988;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP = 268437989;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HTTP = 268437990;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_TILE_CLOUD_PLAYBACK_DOWNLOAD = 268437991;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_VEHICLEHORN = 268437992;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SECURITYDESK_OPTIONS_VIDEO_SYNC_VIDEO_BY_DEFAULT = 268437993;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVE_TRANSFER_CONSOLIDATION_BEFORE_INTEGRITY_CHECK = 268437994;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED = 268437995;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_BIGGEST_TIME_DIFFERENCE = 268437996;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_TOLERANCE = 268437997;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_TIMEOUT = 268437998;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_UNREACHABLE = 268437999;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_LIST_SERVERS_NOT_SYNCHRONIZED = 268438000;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MANAGED_APPLIANCE = 268438001;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_MANAGED_APPLIANCE = 268438002;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_DATAREQUESTFAILED = 268438003;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_NODATARECEIVED = 268438004;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_STORAGEPROBLEM = 268438005;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MANAGEDARCHIVER_INCOMPLETEDATARECEIVED = 268438006;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MANAGEDARCHIVER_PERFORMANCEISSUES = 268438007;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUDSCADAPTER_STATUSREQUESTFAILED = 268438008;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MONITOR_INCOMING_EVENTS = 268438009;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOTIFY_HIGH_NUMBER_OF_EVENTS = 268438010;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_THRESHOLD_NUMBER_OF_EVENTS = 268438011;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TIME_PERIOD = 268438012;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TIME_PERIOD_MINUTE = 268438013;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_TIME_PERIOD = 268438014;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_EVENTS_LAST_MINUTE = 268438015;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_PORT = 268438016;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INCOMING_UDP_PORT_RANGE = 268438017;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_PTZ_OVERVIEW = 268438018;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_CORRIDOR = 268438019;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING_THAT_IS = 268438020;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUBLIC_IP = 268438021;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CAMERAS_MISSING_STREAMGROUP = 268438022;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MEDIAPROCESSOR_NO_NETWORK_MATCHING_CONSTRAINTS = 268438023;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOCAL_UDP_PORT_RANGE = 268438024;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILES_DELETION_BEFORE_SENT_CLOUD = 268438025;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_OLDEST_FILES_DELETION_DISK_FULL = 268438026;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_FILES_DELETION_BEFORE_SENT_CLOUD = 268438027;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_OLDEST_FILES_DELETION_DISK_FULL = 268438028;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_WARNING_ENUMERATE_FILES_DELETED = 268438029;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILES_DELETION_DETAILS = 268438030;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_COULD_NOT_CONNECT_TO_CLOUD_STORAGE = 268438031;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_COULD_NOT_CONNECT_TO_CLOUD_STORAGE = 268438032;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECONNECTED_TO_CLOUD_STORAGE = 268438033;\n public static Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WARNING_COULD_NOT_CONNECT_TO_CLOUD_STORAGE = 268438034;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_PRODUCTGROUP_ACCESSCONTROL = 67108864;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENFORCE_VISITOR_ESCORT = 67108865;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VISITOR_ESCORT = 67108866;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENFORCE_TWOMAN_RULE = 67108867;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MAX_DELAY_SWIPES = 67108868;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_ON = 67108869;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_SIDE_A = 67108870;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_SIDE_B = 67108871;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE = 67108872;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_ESCORTNOTSUPPORTED = 67108873;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ESCORTNOTSUPPORTED = 67108874;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_ACCESSPOINT_COMPANIONVISITORDENIED = 67108875;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_COMPANIONVISITORDENIED = 67108876;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDHOLDER_PICTURE = 67108880;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_WAS_MANUALLY_UNLOCKED_BY = 67108881;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_MAINTENANCE_MODE_SET = 67108882;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_MAINTENANCE_MODE_CANCELLED = 67108883;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_UNLOCKING_OVERRIDE_FOR_DOOR = 67108884;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_LOCKING_OVERRIDE_FOR_DOOR = 67108885;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_UNLOCK_SCHEDULE_OVERRIDE_CANCELLED = 67108886;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_HARDNOTSTRICT = 67108887;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_TIMEOUT = 67108888;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_ONEDOORONEREADER = 67108889;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_AND_APB_VERTX_ERROR = 67108891;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_FAILED_CREDENTIAL_FETCH = 67108892;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_CONFLICTING_CRED_FOUND = 67108893;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READERLESS_DOOR = 67108894;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_TYPE = 67108895;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISSCHEDULEIMPORT_NAME = 10750;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISSCHEDULEIMPORT_DESCRIPTION = 10751;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_OUT_OF_RANGE_VERIFYING_PIN = 67108898;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_ACCESSPOINT_WAS_SHUNTED_BY = 67108899;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DEVICE_WAS_SHUNTED_BY = 67108900;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_DOOR = 67108901;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_DISABLE_SHUNT = 67108902;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ONE_POTENTIAL_MATCH = 67108904;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POTENTIAL_MATCHES = 67108905;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STATE_ACTIVE = 67108906;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STATE_SHUNTED = 67108907;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATCSN32BIT = 67108908;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ALL_READERS_SHUNTED = 67108909;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_FIRST_PERSON_RULE_OFFSET = 67108910;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_FIR_OFFSET_NOTSUPPORTED_ERROR = 67108911;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_CONFLICT = 67108912;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_CONFLICT_DETAILS = 67108913;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_LENGTH_OF_CREDENTIAL_IS_INVALID = 67108914;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SECURITY_CLEARANCE_IS_NOT_SYNCHED = 67108916;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_ACCESSRULES_NOTSUPPORTED_PERIMETER_UNIT = 67108920;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_SCHEDULES_NOTSUPPORTED_PERIMETER_UNIT = 67108921;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_DEVICE = 67108922;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_TOO_MANY_DEVICES = 67108923;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_DEVICE_NOT_RUNNING = 67108924;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ARMING_INPUT_CANNOT_BE_QUERIED = 67108925;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ARMING_INPUT_TROUBLE_STATE = 67108926;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_IN_WARNING = 67108927;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_DOES_NOT_EXIST = 67108928;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ARMING_INPUT_OFFLINE = 67108929;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SMC_LOGIN = 67108930;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_LOGIN_TIMEOUT = 67108931;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LOGIN_SUCCEEDED = 67108932;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_READER_ON_ENTRY = 67108933;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_READER_ON_EXIT = 67108934;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_DEVICES_IN_TROUBLE_SHORT_STATE = 67108935;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_DEVICES_IN_TROUBLE_OPEN_STATE = 67108936;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_WITH_ALWAYS_SCHEDULE = 67108937;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_NO_UNLOCK_SCHEDULE = 67108938;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AUTONOMOUS_CAPACITIES_EXCEEDED = 67108939;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENROLLMENT_UPDATED_UNIT_ENDPOINT = 67108940;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_ENROLLED_NOT_STEALING = 67108941;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_ENROLLED_STEAL_IT = 67108942;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_NOT_AUTO_ENROLLING = 67108943;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONNECTION_REFUSED_BY_FACTORY = 67108944;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTACTING_TIMING_OUT = 67108945;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTACTING_FOR_LAST = 67108946;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_ONE_PERIMETER_DOOR_ERROR = 67108949;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_DOOR_WITH_NO_SENSOR_ERROR = 67108950;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_OFFLINE_DEVICE = 67108951;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_TOUBLE_STATE_DEVICE = 67108952;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ELEVATOR_NO_ONLINE_DEVICES = 67108953;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ELEVATOR_RELAY_NOT_CONFIGURED = 67108954;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_UNIT_UNABLE_TO_DISCOVER = 67108957;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_READER_OFFLINE = 67108958;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ALL_INPUTS_OFFLINE = 67108959;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ONE_OR_MORE_INPUTS_OFFLINE = 67108960;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ALL_OUTPUTS_OFFLINE = 67108961;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ONE_OR_MORE_OUTPUTS_OFFLINE = 67108962;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_READER_IS_CONFIGURED = 67108963;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_READER_CONFIGURED_ALL_INPUTS_OFFLINE = 67108964;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_NO_READER_CONFIGURED_AT_LEAST_ONE_INPUT_OFFLINE = 67108965;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_NO_READER_CONFIGURED_BUT_OUTPUT_CONFIGURED = 67108966;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_I_O_CONFIGURED = 67108967;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_INPUTS_OFFLINE = 67108968;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_OUTPUTS_OFFLINE = 67108969;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_ACCESSRULE_SUPPORT = 67108971;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_SCHEDULE_SUPPORT = 67108972;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_DISCONNECTED = 67108973;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WIRING = 67108974;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_TRIGGER_DOOR_HELD = 67108975;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_TRIGGER_DOOR_FORCED = 67108976;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_CARDHOLDERGROUP_CANNOT_ADD_CHILD = 67108977;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE_A = 67108978;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE_B = 67108979;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE_A = 67108980;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE_B = 67108981;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SIDE_A = 67108982;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SIDE_B = 67108983;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_DUPLICATE_WIRINGTEMPLATE_NAME_X = 67108984;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_SAVE_WIRINGTEMPLATE = 67108985;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CAMERAS_SIDE_A = 67108986;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CAMERAS_SIDE_B = 67108987;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_ADD_ANOTHER_DOOR = 67108988;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_UNLOCKING_SCHEDULE_WITH_ALWAYS_SCHEDULE = 67108989;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DATASTORE_NEWINTERFACEMODULE = 67108990;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_ENCLOSURE = 67108991;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_2 = 67108992;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_3 = 67108993;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_TB2 = 67108994;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_TB3 = 67108995;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_WIEGAND = 67108996;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_MAGSTRIPE = 67108997;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_OSDP = 67108998;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_F2F = 67108999;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_SUPERVISED_F2F = 67109000;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_BI_COLOR = 67109001;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_2_WIRE = 67109002;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DORADO_780 = 67109003;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LCD = 67109004;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_BIOSCRYPT = 67109005;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OSDP = 67109006;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SNET = 67109007;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_MR20 = 67109008;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_HID = 67109009;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_INDALA = 67109010;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_MR20_NO_TAMPER = 67109011;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_4BIT_60SEC_KEEP_ALIVE = 67109012;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_8BIT_60SEC_KEEP_ALIVE = 67109013;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_4BIT_10SEC_KEEP_ALIVE = 67109014;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_8BIT_10SEC_KEEP_ALIVE = 67109015;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_ADDRESS_CONFLICT = 67109016;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_IP_ADDRESS_CONFLICT = 67109017;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_FEATURE = 67109018;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_LEVELS = 67109019;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_LEVELS_PER_CARDHOLDER = 67109020;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_READERS = 67109021;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MONITOR_POINTS = 67109022;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTROL_POINTS = 67109023;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MONITOR_POINT_GROUPS = 67109024;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INTERFACE_COUNT_PER_PORT = 67109025;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PIN_DIGITS = 67109026;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARD_BITS_SIZE = 67109027;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PRECISION_ACCESS_LEVELS_PER_CARDHOLDER = 67109028;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INPUTS_PER_ZONE = 67109029;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_OR_INTERFACE_OFFLINE = 67109030;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_CHANNEL_CONFLICT = 67109031;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_CAB_READER_SHUNTED = 67109032;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SUPERVISED_F2F_WITH_INPUTS = 67109033;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POWER_INPUT_MEANING = 67109034;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INVALID_DEBOUNCE = 67109035;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WIRING_TEMPLATE = 67109036;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_PASSWORD_CHANGE_WARNING = 67109038;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_SOME_REX_IN_OR_OUT = 67109039;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_PLAIN = 67109040;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_CRYPTED = 67109041;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_SIGNED = 67109042;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_CRYPTEDSIGNED = 67109043;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_RESERVED = 67109044;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_INVALID_INPUT_CONFIGURATION = 67109045;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_SHARED_MERCURY_ZONE_INPUT = 67109046;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_EXPIRATIONMODE_WHEN_NOT_USED = 67109047;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_NUMBER = 67109048;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_INTENANCE_ON = 67109049;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_OFF = 67109050;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_REVERT_OUTPUT_BEHAVIOR_INACTIVE_TROUBLE = 67109051;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_NORMAL_COMPLEMENT = 67109052;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACTIVATE_ACTION_ON_DISARMED_TROUBLE = 67121454;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SYNERGIS_SUPPORT_LOGS = 67121455;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENABLE_UNIT_SUPPORT_LOGS = 67121456;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DISABLE_UNIT_SUPPORT_LOGS = 67121457;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_DESC = 67121458;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_PASSED = 67121459;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_WARNING = 67121460;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_FAILED = 67121461;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_DESC = 67121462;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_PASSED = 67121463;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_WARNING = 67121464;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_FAILED = 67121465;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_DESC = 67121466;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_PASSED = 67121467;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_WARNING = 67121468;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_FAILED = 67121469;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_DESC = 67121470;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_PASSED = 67121471;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_WARNING = 67121472;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_FAILED = 67121473;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_DESC = 67121474;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_PASSED = 67121475;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_WARNING = 67121476;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_FAILED = 67121477;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_DESC = 67121478;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_PASSED = 67121479;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_WARNING = 67121480;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_FAILED = 67121481;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_DESC = 67121482;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_PASSED = 67121483;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_WARNING = 67121484;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_FAILED = 67121485;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_DESC = 67121486;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_PASSED = 67121487;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_WARNING = 67121488;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_FAILED = 67121489;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_DESC = 67121490;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_PASSED = 67121491;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_WARNING = 67121492;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_FAILED = 67121493;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_DESC = 67121494;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_PASSED = 67121495;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_WARNING = 67121496;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_FAILED = 67121497;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_DESC = 67121498;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_PASSED = 67121499;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_WARNING = 67121500;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_FAILED = 67121501;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_DESC = 67121502;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_PASSED = 67121503;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_WARNING = 67121504;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_FAILED = 67121505;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_DESC = 67121506;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_PASSED = 67121507;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_WARNING = 67121508;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_FAILED = 67121509;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_MASTER_CONTROLLER_NOT_RUNNING = 67121510;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_INPUT_SELECTED = 67121511;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AT_LEAST_ONE_IN_OUT_OFFLINE = 67121512;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE = 67121513;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SECUREMODE_DISABLED = 67121514;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SECUREMODE_INVALID_FIRMWARE = 67121515;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_UNSECURE_PROTOCOLS_ENABLED = 67121516;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_SSL_PROTOCOL_DISABLED_SECUREMODE = 67121517;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_EXCEPTION_DETAILS_WITH_DETAILS = 67121518;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE_DEFAULT_USER_INFO = 67121519;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE_MUST_BE_ENABLED = 67121520;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_ATLEAST_TWO_PERIMETER_DOORS_ERROR = 67121521;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ROUTER = 67121522;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_NUMBER = 67121523;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_DOOR_LOCK_NUMBER_CONFLICT = 67121524;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SECURED_OSDP = 67121525;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_ROUTER_CONFLICT = 67121526;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CUSTOM_OSDP = 67121527;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_FETCHING_FROM_DIRECTORY = 67121528;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_DESC = 67121529;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_PASSED = 67121530;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_WARNING = 67121531;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_FAILED = 67121532;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_RIBBON_PORT = 67121533;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ANTIPASSBACK_EXEMPTION_IS_NOT_SYNCHED = 67122402;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_MISSING_DISCOVERY_PORT = 67122403;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_MAXIMUM_DELAY_INVALID = 67122404;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_UNIT_EXTENSION_NOT_REACHABLE = 67122405;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACCESS_CONTROL_SCHEDULE_NOT_SUPPORTED = 67122406;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ZONE_SINGLE_IN_OUT_OFFLINE = 67122407;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_FAILOVER_DATABASE_LOCALADDRESS = 67122408;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_SYNERGIS_NODISCOVERYPORTS = 67122409;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_IOZONE_MULTIPLEUNITS_NOPEERTOPEER = 67122410;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCY = 67122411;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NON_ZERO_TIMEOUT = 67122412;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_INVALID_USERNAME_OR_PASSWORD = 67122413;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_ASSET_ON_WIRELESS_LOCK = 67122414;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_INPUT_ON_DIFFERENT_UNIT_ERROR = 67122415;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_WITH_MAXOCUUPANCY_MULTIPLEUNITS_NOPEERTOPEER = 67122416;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_UNLOCKING_SCHEDULES = 67122417;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_WITH_ANTIPASSBACK_MULTIPLEUNITS_NOGLOBALANTIPASSBACK = 67122418;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_REACHED = 67122419;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_ON_AREA = 67122420;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SETTING_IS_NOT_SYNCHED = 67122421;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_DESC = 67122422;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_PASSED = 67122423;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_WARNING = 67122424;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_FAILED = 67122425;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATFASCN_75BIT = 67122426;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATFASCN_200BIT = 67122427;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATCSN_32BIT = 67122428;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AGENCY = 67122429;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SYSTEM = 67122430;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CS = 67122431;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ICI = 67122432;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PI = 67122433;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OC = 67122434;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OI = 67122435;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POA = 67122436;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LRC = 67122437;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_RAW = 67122438;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCERTIFICATE_ERROR = 67122439;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_NOGATEWAYCERTIFICATE_MESSAGE = 67122440;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_NOGATEWAYCERTIFICATE_DETAILS = 67122441;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_EVENTPOLLING_OK = 67122442;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_EVENTPOLLING_ERROR = 67122443;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCOMMUNICATION_OK = 67122444;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCOMMUNICATION_ERROR = 67122445;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_OK = 67122446;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_ERROR = 67122447;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_ERROR_DETAILS = 67122448;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_ONLINE = 67122449;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_OFFLINE = 67122450;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_OFFLINE_DETAILS = 67122451;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TOGGLEOUTPUTNOTSUPPORTED = 67122452;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TOGGLEOUTPUTNOTSUPPORTED_DETAILS = 67122453;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TENANTALREADYLINKED = 67122454;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_MAINTENANCE_MODE_ON = 67122455;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_REPORTING_SUBSYSTEM_NOT_RUNNING = 67122456;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TIMED_APB_ONEDOORONEENTERINGREADER = 67122457;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_1 = 67122458;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_ENROLL_ACCESSCONTROLUNIT_BECAUSE_CLOUDAGENTVERSION = 67122459;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_SYNERGIS_P2P_TOO_MANY_UNITS = 67122460;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DIP_SWITCH = 67122461;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_INTELLIGENT_CONTROLLER_DIALECT = 67122462;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_PIM400_DOOR_NUMBERS_CANT_OVERLAP_ON_SAME_PORT = 67122463;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_CANNOT_HAVE_MORE_9_PIM_ON_SAME_PORT = 67122464;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MERCURY_CANNOT_HAVE_GAETWAY_AND_MR51E_ON_SAME_PORT = 67122465;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MSACS_DOWNSTREAM_ADDRESSES_SHOULD_BE_UNIQUE = 67122466;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_MSICS_CANNOT_HAVE_MORE_THAN_2_MSCACS = 67122467;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_MSACS_MISCONFIGURED = 67122468;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MERCURY_CANNOT_HAVE_DOWNSTREAM_DEVICES_FROM_DIFFERENT_MANUFACTURERS_ON_SAME_PORT = 67122469;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_DOOR_LOCK_NUMBER_170 = 67122470;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INVALID_CERTIFICATE = 67122471;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MISSING_ECM_PLUGIN = 67122472;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ACCESSMANAGER_ROLES_MAXUNITCOUNTREACHED = 67122473;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ACCESSMANAGER_ROLES_APPROACHINGMAXUNITCOUNT = 67122474;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNERGIS_P2P_PASSWORD_NOT_SUPPORTED = 67122475;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TASK_REPORTQUERY_UNITPROPAGATIONDELAY = 67122476;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_TASKSHORTDESC_UNITPROPAGATIONDELAY = 67122477;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_UNITPROPAGATIONDELAY = 67122478;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DEVICE_UNITPROPAGATIONDELAY = 67122479;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESSPOINT_UNITPROPAGATIONDELAY = 67122480;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LATESTEVENT_UNITPROPAGATIONDELAY = 67122481;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TOTALEVENTS_UNITPROPAGATIONDELAY = 67122482;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TOTALDELAY_UNITPROPAGATIONDELAY = 67122483;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AVERAGEDELAY_UNITPROPAGATIONDELAY = 67122484;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MINDELAY_UNITPROPAGATIONDELAY = 67122485;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MAXDELAY_UNITPROPAGATIONDELAY = 67122486;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTBELOW_UNITPROPAGATIONDELAY = 67122487;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTBETWEEN_UNITPROPAGATIONDELAY = 67122488;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTABOVE_UNITPROPAGATIONDELAY = 67122489;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNT4_UNITPROPAGATIONDELAY = 67122490;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNT5_UNITPROPAGATIONDELAY = 67122491;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_PRIVILEGE_UNITPROPAGATIONDELAYREPORT = 67122492;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_PROPAGATIONDELAY_REPORT = 67122493;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_PRIVILEGE_SHUNT_INPUTS = 67122494;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SHUNT_INPUTS = 67122495;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_SHUNT_UNSHUNT_INPUTS = 67122496;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_ALL_INPUTS = 67122497;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_DOOR_SENSORS = 67122498;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_ENTRY_SENSORS = 67122499;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_LOCK_SENSORS = 67122500;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_MANUAL_STATIONS = 67122501;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_REQUEST_TO_EXIT_INPUTS = 67122502;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_ALL_INPUTS = 67122503;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_DOOR_SENSORS = 67122504;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_ENTRY_SENSORS = 67122505;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_LOCK_SENSORS = 67122506;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_MANUAL_STATIONS = 67122507;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_REQUEST_TO_EXIT_INPUTS = 67122508;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INPUTS_SHUNTED = 67122509;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITOFFLINE = 67122510;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONFIRM = 67122511;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MAC_ADDRESS_LENGTH = 67122512;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MAC_ADDRESS_HEX_ONLY = 67122513;\n public static Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_DOOR_LOCK_NUMBER_SHOULD_BE_UNIQUE = 67122514;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_DATASTORE_APP_NAME = 9;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_SECURITYDESK_APPNAME_SHORT = 12;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_WD_APP_NAME_SHORT = 20;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_LICENSE_AUTOVU_MANAGER_GEOCODER = 64;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_COULD_NOT_CONNECT_TO_SHARP = 75;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_SERVICE_DISPLAY_NAME_SERVER_SERVICE = 94;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_DIAGNOSTICS_WARNING_DUPLICATE_LIVE_PORT_MESSAGE = 108;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_DIAGNOSTICS_ERROR_PORT_DETAILS = 112;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_TOOLTIP_PRIVILEGE_CONFIGTOOL_APPNAME_SHORT = 114;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_CALCULUS_INPUT = 120;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_TOOLTIP_PRIVILEGE_GUS_APPNAME_SHORT = 121;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_GUS_APPNAME = 122;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_SHARP_BELONGS_TO_ANOTHER_ROLE = 123;\n public static Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_INFO_COPYRIGHT = 125;\n}\n","import { Injectable } from '@angular/core';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { IncidentService } from '@modules/mission-control/services/incident/incident.service';\nimport { combineLatest, forkJoin, from, Observable, of } from 'rxjs';\nimport { catchError, concatAll, filter, map, mergeMap, switchMap, take, toArray } from 'rxjs/operators';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport {\n AlterationType,\n CommentAddedEvent,\n CommentChangedEvent,\n CommentDeletedEvent,\n DescriptionChangedEvent,\n DisabledStatesChangedEvent,\n ExternalEventAggregatedEvent,\n ExternalIdChangedEvent,\n IncidentCreatedEvent,\n IncidentEvent,\n IncidentEventType,\n LinkedEvent,\n LocationChangedEvent,\n LocationClearedEvent,\n NoteAddedEvent,\n OwnershipChangedEvent,\n PriorityChangedEvent,\n ProcedureStepAnsweredEvent,\n RecipientAlteredEvent,\n RecipientsMode,\n StateChangedEvent,\n TypeChangedEvent,\n UnlinkedEvent,\n} from '@modules/mission-control/models/events/incident-event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Icon } from '@genetec/gelato';\nimport moment from 'moment';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { stringFormat } from '@shared/utilities/StringFormat';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { ProcedureStepActionType } from '@modules/mission-control/models/procedure-step-action-type';\nimport { StateService } from '@modules/mission-control/services/state/state.service';\nimport { IncidentLocationService } from '@modules/mission-control/services/incident-location/incident-location.service';\nimport { McUserService } from '@modules/mission-control/services/mc-user.service';\nimport { PriorityService } from '@modules/mission-control/services/priority/priority.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { EventTypesHelper } from '@shared/utilities/eventTypes.helper';\nimport { toGuid } from '@modules/mission-control/utils/guid-utils';\nimport { IEntityCacheTask } from \"RestClient/Client/Interface/IEntityCacheTask\";\n\nexport class ActivityEvent {\n constructor(\n public id: IGuid,\n public type: IncidentEventType,\n public category: EventCategory,\n public processTimeUtc: Date,\n public delimiter: string,\n public isSameDay: boolean,\n public isExpanded: boolean,\n public textDisplay: string\n ) {\n }\n}\n\ninterface EventCategory {\n icon: Icon;\n name: string;\n}\n\n@Injectable()\nexport class ActivityEventService {\n\n private readonly _unavailableInformation: string;\n private readonly _ignoredInitialValue = [\n IncidentEventType.DescriptionChanged,\n IncidentEventType.ExternalIdChanged,\n IncidentEventType.PriorityChanged,\n IncidentEventType.StateChanged,\n ];\n private _entityCache: IEntityCacheTask;\n\n constructor(\n private _incidentService: IncidentService,\n private _locationService: IncidentLocationService,\n private _stateService: StateService,\n private _priorityService: PriorityService,\n private _userService: McUserService,\n private _translateService: TranslateService,\n private securityCenterProvider: SecurityCenterClientService,\n private _logger: LoggerService\n ) {\n this._entityCache = this.securityCenterProvider.scClient.buildEntityCache([EntityFields.idField, EntityFields.nameField]);\n this._unavailableInformation = this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string;\n }\n\n public getActivityEvents(incident: MCIncident, filters: string[]): Observable {\n return of(incident).pipe(switchMap((i) => this.buildActivityEventForIncident(i, filters)));\n }\n\n private buildActivityEventForIncident(incident: MCIncident, filters: string[]): Observable {\n if (!incident || incident.events.size === 0) {\n this._logger.traceInformation('No activity to build');\n return of([]);\n }\n\n const createdEvent = incident.events.find((e) => e.type === IncidentEventType.Created);\n\n const events = incident.events.filter((e) => !(this._ignoredInitialValue.includes(e.type) && e.header.correlationid.equals(createdEvent!.header.correlationid))).toArray();\n\n if (events.length === 0) {\n this._logger.traceInformation(`No activity Event to build [${events.length} event(s)]`);\n return of([]);\n }\n\n const instigators$ = this.buildInstigatorsObs(events);\n const commentHistory = this.buildCommentHistory(incident);\n const ownershipHistory = this.buildOwnershipHistory(incident);\n const disabledStateHistory = this.buildDisabledStateHistory(incident);\n const recipientNameById$ = this.buildRecipientsMap(incident);\n\n return forkJoin(\n [...events].map((ie) => {\n return combineLatest([instigators$, recipientNameById$]).pipe(\n switchMap(([instigators, recipientNameById]) => {\n const instigatorName = instigators[ie.instigatorId.toString().toUpperCase()] ?? this._unavailableInformation;\n try {\n switch (ie.type) {\n case IncidentEventType.StateChanged:\n return this.generateStateChangedEvent(ie as StateChangedEvent, instigatorName);\n case IncidentEventType.RecipientsAltered:\n return this.generateRecipientAlteredActivity(ie as RecipientAlteredEvent, instigatorName, recipientNameById);\n case IncidentEventType.Created:\n return this.generateCreatedActivity(ie as IncidentCreatedEvent, instigatorName);\n case IncidentEventType.PriorityChanged:\n return this.generatePriorityChangedActivity(ie as PriorityChangedEvent, instigatorName);\n case IncidentEventType.Linked:\n return this.generateLinkedActivity(ie as LinkedEvent, instigatorName);\n case IncidentEventType.Unlinked:\n return this.generateUnlinkedActivity(ie as UnlinkedEvent, instigatorName);\n case IncidentEventType.CommentAdded:\n return this.generateCommentAddedActivity(ie as CommentAddedEvent, instigatorName);\n case IncidentEventType.CommentChanged:\n return this.generateCommentChangedActivity(ie as CommentChangedEvent, instigatorName, commentHistory);\n case IncidentEventType.CommentDeleted:\n return this.generateCommentDeletedActivity(ie as CommentDeletedEvent, instigatorName, commentHistory);\n case IncidentEventType.LocationChanged:\n return this.generateLocationChangedActivity(ie as LocationChangedEvent, instigatorName);\n case IncidentEventType.DescriptionChanged:\n return this.generateDescriptionChangedActivity(ie as DescriptionChangedEvent, instigatorName);\n case IncidentEventType.ExternalIdChanged:\n return this.generateExternalIdChangedActivity(ie as ExternalIdChangedEvent, instigatorName);\n case IncidentEventType.IncidentTypeChanged:\n return this.generateIncidentTypeChangedActivity(ie as TypeChangedEvent, instigatorName);\n case IncidentEventType.OwnershipChanged:\n return this.generateOwnershipChangedActivity(ie as OwnershipChangedEvent, ie.instigatorId, instigatorName, ownershipHistory);\n case IncidentEventType.LocationCleared:\n return this.generateLocationClearedActivity(ie as LocationClearedEvent, instigatorName);\n case IncidentEventType.NoteAdded:\n return this.generateNoteAddedActivity(ie as NoteAddedEvent, instigatorName);\n case IncidentEventType.ProcedureStepAnswered:\n return this.generateProcedureStepAnsweredActivity(incident, ie as ProcedureStepAnsweredEvent, instigatorName);\n case IncidentEventType.DisabledStatesChanged:\n return this.generateDisabledStatesChangedActivity(ie as DisabledStatesChangedEvent, instigatorName, disabledStateHistory);\n case IncidentEventType.ExternalEventAggregated:\n return this.generateExternalEventAggregatedActivity(ie as ExternalEventAggregatedEvent);\n default:\n this._logger.traceInformation(`${ie.type} is not supported`);\n return of(null);\n }\n } catch (e) {\n this._logger.traceError(`Unable to determine the text to display : ${e as string}`);\n }\n return of(null);\n }),\n map((textDisplay) => {\n if (!textDisplay) {\n this._logger.traceError(`Unable to build text display for ${ie.type}`);\n return null;\n }\n\n const category = this.determineCategory(ie);\n const isSameDay = moment(moment(ie.processTimeUtc)).isSame(new Date(), 'day');\n const processTimeUtc = new Date(ie.processTimeUtc);\n\n return new ActivityEvent(ie.id, ie.type, category, processTimeUtc, '', isSameDay, false, textDisplay);\n }),\n catchError((e) => {\n this._logger.traceError(`Unable to build ${ie?.type} activity ${e as string}`);\n throw e;\n }),\n take(1)\n );\n })\n ).pipe(\n concatAll(),\n filter((e): e is ActivityEvent => e instanceof ActivityEvent && filters.includes(e.category.name)),\n toArray(),\n map((activityEvents) => this.determineDelimiter(activityEvents)),\n catchError((e) => {\n this._logger.traceError(`Unable to build pipe activity events ${e as string}`);\n throw e;\n })\n );\n }\n\n private generateStateChangedEvent(stateEvent: StateChangedEvent, instigatorName: string): Observable {\n const translatedString = this._translateService.instant('STE_LABEL_INCIDENT_STATE_CHANGED_ACTIVITY') as string;\n return this._stateService.getState$(stateEvent.stateId).pipe(map((state) => stringFormat(translatedString, instigatorName, state?.name ?? this._unavailableInformation)));\n }\n\n private determineCategory(event: IncidentEvent): EventCategory {\n const eventCategory: EventCategory = { icon: Icon.Incident, name: this._translateService.instant('STE_LABEL_SYSTEM_ACTION') as string } as EventCategory;\n const userActionLabel = this._translateService.instant('STE_LABEL_USER_ACTION') as string;\n const systemActionLabel = this._translateService.instant('STE_LABEL_SYSTEM_ACTION') as string;\n const commentsLabel = this._translateService.instant('STE_LABEL_COMMENTS') as string;\n switch (event.type) {\n case IncidentEventType.NoteAdded:\n eventCategory.name = this._translateService.instant('STE_LABEL_NOTES') as string;\n eventCategory.icon = Icon.Email;\n break;\n case IncidentEventType.ProcedureStepAnswered:\n eventCategory.name = this._translateService.instant('STE_LABEL_PROCEDURE') as string;\n eventCategory.icon = Icon.LogFile;\n break;\n case IncidentEventType.IncidentTypeChanged:\n case IncidentEventType.DisabledStatesChanged:\n eventCategory.name = systemActionLabel;\n eventCategory.icon = Icon.Incident;\n break;\n case IncidentEventType.LocationChanged:\n eventCategory.name = systemActionLabel;\n eventCategory.icon = Icon.PushpinOn;\n break;\n case IncidentEventType.ExternalEventAggregated:\n eventCategory.name = userActionLabel;\n eventCategory.icon = Icon.Event;\n break;\n case IncidentEventType.Created:\n case IncidentEventType.DescriptionChanged:\n case IncidentEventType.ExternalIdChanged:\n case IncidentEventType.Linked:\n case IncidentEventType.PriorityChanged:\n case IncidentEventType.OwnershipChanged:\n case IncidentEventType.RecipientsAltered:\n case IncidentEventType.StateChanged:\n case IncidentEventType.Unlinked:\n eventCategory.name = userActionLabel;\n eventCategory.icon = Icon.Person;\n break;\n case IncidentEventType.CommentAdded:\n case IncidentEventType.CommentChanged:\n case IncidentEventType.CommentDeleted:\n eventCategory.name = commentsLabel;\n eventCategory.icon = Icon.Message;\n break;\n default:\n this._logger.traceError(`${event.type} is not supported`);\n break;\n }\n\n if (event.instigatorId.equals(SafeGuid.EMPTY) && eventCategory) {\n eventCategory.name = systemActionLabel;\n eventCategory.icon = Icon.Incident;\n }\n\n return eventCategory;\n }\n\n private determineDelimiter(displayableEvents: ActivityEvent[]): ActivityEvent[] {\n const today = new Date();\n\n const isToday = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(today, 'day');\n const isYesterday = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(moment().subtract(1, 'days').startOf('day'), 'day');\n const isThisWeek = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(today, 'week');\n const isThisMonth = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(today, 'month');\n const isLastMonth = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(moment().subtract(1, 'month').startOf('month'), 'month');\n const isThisYear = (e: ActivityEvent): boolean => moment(moment(e.processTimeUtc)).isSame(today, 'year');\n\n let index = displayableEvents.findIndex((e) => isToday(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_TODAY') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && isYesterday(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_YESTERDAY') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && !isYesterday(e) && isThisWeek(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_THIS_WEEK') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && !isYesterday(e) && !isThisWeek(e) && isThisMonth(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_THIS_MONTH') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && !isYesterday(e) && !isThisWeek(e) && !isThisMonth(e) && isLastMonth(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_LAST_MONTH') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && !isYesterday(e) && !isThisWeek(e) && !isThisMonth(e) && !isLastMonth(e) && isThisYear(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_THIS_YEAR') as string;\n\n index = displayableEvents.findIndex((e) => !isToday(e) && !isYesterday(e) && !isThisWeek(e) && !isThisMonth(e) && !isLastMonth(e) && !isThisYear(e));\n if (index >= 0) displayableEvents[index].delimiter = this._translateService.instant('STE_LABEL_LONG_TIME_AGO') as string;\n\n return displayableEvents;\n }\n\n private buildInstigatorsObs(events: Array): Observable> {\n const ids = SafeGuid.createSet(events.map((e) => e.instigatorId));\n return from(this._entityCache.getEntitiesAsync(UserEntity, ids, true)).pipe(\n map((users) => {\n const record: Record = {};\n users.forEach((user) => (record[user.id.toString().toUpperCase()] = user.name));\n record[SafeGuid.EMPTY.toString().toUpperCase()] = this._translateService.instant('STE_LABEL_SYSTEM') as string;\n return record;\n }),\n catchError((e) => {\n this._logger.traceError(`Unable to build instigator record : ${e as string}`);\n throw e;\n })\n );\n }\n\n private buildCommentHistory(incident: MCIncident): Record> {\n const commentHistory: Record> = {};\n\n try {\n const revertedComments = incident.events.reverse();\n revertedComments.forEach((e) => {\n if (e instanceof CommentAddedEvent) {\n const stringId = e.commentId!.toString();\n if (stringId in commentHistory) {\n commentHistory[stringId].push(e.comment);\n } else {\n commentHistory[stringId] = [e.comment];\n }\n } else if (e instanceof CommentChangedEvent) {\n const stringId = e.commentId!.toString();\n if (stringId in commentHistory) {\n commentHistory[stringId].push(e.comment);\n } else {\n commentHistory[stringId] = [e.comment];\n }\n }\n });\n } catch (e) {\n this._logger.traceError(`Unable to build comment history : ${e as string}`);\n }\n return commentHistory;\n }\n\n private buildDisabledStateHistory(incident: MCIncident): Record> {\n const disabledStateHistory: Record> = {};\n try {\n const sortedEvents = incident.events\n .filter((e) => e instanceof DisabledStatesChangedEvent)\n .sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime())\n .map((e) => e as DisabledStatesChangedEvent)\n .toArray()\n .reverse();\n\n sortedEvents.forEach((e, i) => {\n const eventId = e.id.toString().toUpperCase();\n disabledStateHistory[eventId] = i > 0 ? sortedEvents[i - 1].disabledStates : [];\n });\n } catch (e) {\n this._logger.traceError(`Unable to build disable states history : ${e as string}`);\n }\n return disabledStateHistory;\n }\n\n private buildOwnershipHistory(incident: MCIncident): Record {\n const ownershipHistory: Record = {};\n try {\n const ownershipEvents = incident.events\n .filter((e) => e instanceof OwnershipChangedEvent)\n .sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime())\n .map((e) => e as OwnershipChangedEvent)\n .toArray();\n\n ownershipEvents.forEach((e, i) => {\n const eventId = e.id.toString().toUpperCase();\n ownershipHistory[eventId] = i > 0 ? ownershipEvents[i - 1].owner : null;\n });\n } catch (e) {\n this._logger.traceError(`Unable to build ownership history : ${e as string}`);\n }\n\n return ownershipHistory;\n }\n\n private buildRecipientsMap(incident: MCIncident): Observable> {\n const userIds = incident.events.filter((e): e is RecipientAlteredEvent => e instanceof RecipientAlteredEvent).flatMap((e) => e.addedRecipients.concat(e.removedRecipients));\n const ids = SafeGuid.createSet(userIds);\n return from(this._entityCache.getEntitiesAsync(Entity, ids, true)).pipe(\n map((entities) =>\n new Map(entities.map(entity =>\n [entity.id.toString().toUpperCase(), entity.id.equals(SafeGuid.EMPTY) ? this._translateService.instant('STE_LABEL_SYSTEM') as string : entity.name]))),\n catchError((e) => {\n this._logger.traceError(`Unable to build recipient record : ${e as string}`);\n throw e;\n })\n );\n }\n\n private generateDispatchActivity(event: RecipientAlteredEvent, recipientNameById: Map): string | null {\n let usersString: string | null = null;\n let dispatchToSupervisorsOnly = false;\n switch (event.recipientsMode) {\n case RecipientsMode.Everyone:\n usersString = this._translateService.instant('STE_LABEL_EVERYONE') as string;\n break;\n case RecipientsMode.Specific:\n usersString = event.addedRecipients.map((recipientId) => recipientNameById.get(recipientId.toString().toUpperCase())).join(', ');\n break;\n case RecipientsMode.Supervisors:\n dispatchToSupervisorsOnly = true;\n break;\n }\n if (!usersString && dispatchToSupervisorsOnly) {\n usersString = this._translateService.instant('STE_LABEL_SUPERVISORS') as string;\n } else if (!usersString) {\n return null;\n }\n\n const activityString = this._translateService.instant('STE_MESSAGE_X_RECEIVED_THE_INCIDENT') as string;\n return usersString ? stringFormat(activityString, usersString) : null;\n }\n\n private generateForwardActivity(event: RecipientAlteredEvent, instigatorName: string, recipientNameById: Map): string | null {\n let usersString = event.addedRecipients.map((recipientId) => recipientNameById.get(recipientId.toString().toUpperCase())).join(', ');\n const dispatchToSupervisorsOnly = event.recipientsMode === RecipientsMode.Supervisors;\n if (!usersString && dispatchToSupervisorsOnly) {\n usersString = this._translateService.instant('STE_LABEL_SUPERVISORS') as string;\n } else if (!usersString) {\n return null;\n }\n const activityString = this._translateService.instant('STE_LABEL_INCIDENT_FORWARD_ACTIVITY') as string;\n return stringFormat(activityString, instigatorName, usersString);\n }\n\n private generateTransferActivity(event: RecipientAlteredEvent, instigatorName: string, recipientNameById: Map): string | null {\n const usersString = event.addedRecipients.map((recipientId) => recipientNameById.get(recipientId.toString().toUpperCase())).join(', ');\n\n if (!usersString) return null;\n\n const activityString = this._translateService.instant('STE_LABEL_INCIDENT_TRANSFER_ACTIVITY') as string;\n return stringFormat(activityString, instigatorName, usersString);\n }\n\n private generateAutoDispatchActivity(event: RecipientAlteredEvent, instigatorName: string, recipientNameById: Map): string | null {\n let usersString = event.addedRecipients.map((recipientId) => recipientNameById.get(recipientId.toString().toUpperCase())).join(', ');\n\n if (!usersString) usersString = this._unavailableInformation;\n\n const activityString = this._translateService.instant('STE_MESSAGE_X_AUTO_ASSIGNED_TO_Y') as string;\n return stringFormat(activityString, instigatorName, usersString);\n }\n\n private generateProcedureStepAnsweredActivity(incident: MCIncident, procedureAnsweredEvent: ProcedureStepAnsweredEvent, instigatorName: string): Observable {\n const comment = procedureAnsweredEvent.comment ? `\\n ${this._translateService.instant('STE_LABEL_INCIDENT_COMMENT') as string}: ${procedureAnsweredEvent.comment}` : '';\n\n let translateString: string;\n let displayText: string | null = null;\n const step = incident.procedure?.steps.find((s) => s.id.equals(procedureAnsweredEvent.stepId));\n const option = step?.options.find((o) => procedureAnsweredEvent?.optionId?.equals(o.id));\n switch (procedureAnsweredEvent.actionType) {\n case ProcedureStepActionType.Complete:\n translateString = this._translateService.instant('STE_INCIDENT_PROCEDURE_ANSWERED_ACTIVITY') as string;\n displayText = stringFormat(translateString, instigatorName, step!.name ?? this._unavailableInformation, option?.name ?? this._unavailableInformation) + comment;\n break;\n case ProcedureStepActionType.Previous:\n translateString = this._translateService.instant('STE_INCIDENT_PROCEDURE_PREVIOUS_ACTIVITY') as string;\n displayText = stringFormat(translateString, instigatorName);\n break;\n case ProcedureStepActionType.Reset:\n translateString = this._translateService.instant('STE_INCIDENT_PROCEDURE_RESET_ACTIVITY') as string;\n displayText = stringFormat(translateString, instigatorName);\n break;\n case ProcedureStepActionType.Skip:\n translateString = this._translateService.instant('STE_INCIDENT_PROCEDURE_SKIP_ACTIVITY') as string;\n displayText = stringFormat(translateString, instigatorName, step!.name ?? this._unavailableInformation);\n break;\n case ProcedureStepActionType.Resume:\n translateString = this._translateService.instant('STE_INCIDENT_PROCEDURE_RESUME_ACTIVITY') as string;\n displayText = stringFormat(translateString, instigatorName);\n break;\n }\n\n return of(displayText);\n }\n\n private generateRecipientAlteredActivity(recipientEvent: RecipientAlteredEvent, instigatorName: string, recipientNameById: Map): Observable {\n let activity: string | null;\n switch (recipientEvent.alterationType) {\n case AlterationType.Dispatch:\n activity = this.generateDispatchActivity(recipientEvent, recipientNameById);\n break;\n case AlterationType.Forward:\n // TODO: forwarding might not work\n activity = this.generateForwardActivity(recipientEvent, instigatorName, recipientNameById);\n break;\n case AlterationType.Transfer:\n activity = this.generateTransferActivity(recipientEvent, instigatorName, recipientNameById);\n break;\n case AlterationType.AutoDispatch:\n activity = this.generateAutoDispatchActivity(recipientEvent, instigatorName, recipientNameById);\n break;\n default:\n activity = null;\n break;\n }\n return of(activity);\n }\n\n private generateCreatedActivity(incidentCreatedEvent: IncidentCreatedEvent, instigatorName: string): Observable {\n return of(stringFormat(this._translateService.instant('STE_LABEL_INCIDENT_CREATED_ACTIVITY') as string, instigatorName));\n }\n\n private generatePriorityChangedActivity(priorityEvent: PriorityChangedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_PRIORITY_CHANGED_ACTIVITY') as string;\n return this._priorityService\n .getPriority(priorityEvent.priorityId)\n .pipe(map((newPriority) => stringFormat(translateString, instigatorName, newPriority?.name ?? this._unavailableInformation)));\n }\n\n private generateLinkedActivity(linkedEvent: LinkedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_LINKED_ACTIVITY') as string;\n return from(linkedEvent.linkedIncidentIds).pipe(\n mergeMap((linkedId) => this._incidentService.getIncident(linkedId)),\n filter((i): i is MCIncident => i instanceof MCIncident),\n map((incident) => incident.displayId ?? this._unavailableInformation),\n toArray(),\n map((linkedIds) => stringFormat(translateString, instigatorName, linkedIds.toString()))\n );\n }\n\n private generateUnlinkedActivity(unlinkedEvent: UnlinkedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_UNLINKED_ACTIVITY') as string;\n return from(unlinkedEvent.unlinkedIncidentIds).pipe(\n mergeMap((unlinkedId) => this._incidentService.getIncident(unlinkedId)),\n filter((i): i is MCIncident => i instanceof MCIncident),\n map((incident) => incident.displayId ?? this._unavailableInformation),\n toArray(),\n map((linkedIds) => stringFormat(translateString, instigatorName, linkedIds.toString()))\n );\n }\n\n private generateCommentAddedActivity(commentAddedEvent: CommentAddedEvent, instigatorName: string): Observable {\n return of(stringFormat(this._translateService.instant('STE_LABEL_COMMENT_POSTED_ACTIVITY') as string, instigatorName, commentAddedEvent.comment));\n }\n\n private generateCommentChangedActivity(commentChangedEvent: CommentChangedEvent, instigatorName: string, commentHistory: Record): Observable {\n const translatedString = this._translateService.instant('STE_LABEL_COMMENT_CHANGED_ACTIVITY') as string;\n const arrayLength = commentHistory[commentChangedEvent.commentId!.toString()].length;\n const previousComment = commentHistory[commentChangedEvent.commentId!.toString()][arrayLength - 2];\n return of(stringFormat(translatedString, instigatorName, previousComment, commentChangedEvent.comment));\n }\n\n private generateCommentDeletedActivity(commentDeletedEvent: CommentDeletedEvent, instigatorName: string, commentHistory: Record): Observable {\n const arrayLength = commentHistory[commentDeletedEvent.commentId!.toString()].length;\n const previousComment = commentHistory[commentDeletedEvent.commentId!.toString()][arrayLength - 1];\n return of(stringFormat(this._translateService.instant('STE_LABEL_COMMENT_DELETED_ACTIVITY') as string, instigatorName, previousComment));\n }\n\n private generateLocationChangedActivity(locationChangeEvent: LocationChangedEvent, instigatorName: string): Observable {\n const translatedString = this._translateService.instant('STE_LABEL_INCIDENT_LOCATION_ACTIVITY') as string;\n return this._locationService.getLocation(locationChangeEvent.location.entityId!).pipe(\n map((location) => {\n return location ? stringFormat(translatedString, instigatorName, location.name) : stringFormat(translatedString, instigatorName, this._unavailableInformation);\n })\n );\n }\n\n private generateDescriptionChangedActivity(descriptionChangedEvent: DescriptionChangedEvent, instigatorName: string): Observable {\n const translatedString = this._translateService.instant('STE_LABEL_INCIDENT_DESCRIPTION_CHANGE_ACTIVITY') as string;\n const description = descriptionChangedEvent.description;\n return of(description ? stringFormat(translatedString, instigatorName, description) : null);\n }\n\n private generateExternalIdChangedActivity(externalIdEvent: ExternalIdChangedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_EXTERNAL_ID_CHANGED_ACTIVITY') as string;\n return of(\n externalIdEvent.externalId\n ? stringFormat(translateString, instigatorName, externalIdEvent.externalId.toString())\n : (this._translateService.instant('STE_MESSAGE_EXTERNAL_ID_REMOVED') as string)\n );\n }\n\n private generateIncidentTypeChangedActivity(incidentTypeChangeEvent: TypeChangedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_TYPE_CHANGE_ACTIVITY') as string;\n return this._incidentService\n .getIncident(incidentTypeChangeEvent.incidentId)\n .pipe(map((incident) => stringFormat(translateString, instigatorName, incident?.name ? incident?.name : this._unavailableInformation)));\n }\n\n private generateOwnershipChangedActivity(\n ownershipEvent: OwnershipChangedEvent,\n instigatorId: IGuid,\n instigatorName: string,\n ownershipHistory: Record\n ): Observable {\n const previousOwner = ownershipHistory[ownershipEvent.id.toString().toUpperCase()];\n const currentOwner = ownershipEvent.owner;\n let translateString: string;\n const instigatorIsNewOwner = currentOwner?.equals(instigatorId) ?? false;\n const instigatorWasOwner = previousOwner?.equals(instigatorId) ?? false;\n if (instigatorIsNewOwner && previousOwner) {\n translateString = this._translateService.instant('STE_MESSAGE_X_TOOK_OWNERSHIP_FROM_USER') as string;\n return of(stringFormat(translateString, instigatorName));\n } else if (!instigatorIsNewOwner && !instigatorWasOwner) {\n translateString = this._translateService.instant('STE_MESSAGE_X_RELEASED_OWNERSHIP_FROM_USER') as string;\n return of(stringFormat(translateString, instigatorName));\n } else if (instigatorIsNewOwner && !previousOwner) {\n translateString = this._translateService.instant('STE_MESSAGE_X_TOOK_OWNERSHIP') as string;\n return of(stringFormat(translateString, instigatorName));\n } else if (instigatorWasOwner && !currentOwner) {\n translateString = this._translateService.instant('STE_MESSAGE_X_RELEASED_OWNERSHIP') as string;\n return of(stringFormat(translateString, instigatorName));\n }\n throw new Error(`Unable to generate ownership change activity`);\n }\n\n private generateLocationClearedActivity(locationClearedEvent: LocationClearedEvent, instigatorName: string) {\n return of(stringFormat(this._translateService.instant('STE_LABEL_LOCATION_CLEARED_ACTIVITY') as string, instigatorName));\n }\n\n private generateNoteAddedActivity(noteAddedEvent: NoteAddedEvent, instigatorName: string): Observable {\n const translateString = this._translateService.instant('STE_LABEL_INCIDENT_NOTE_ADDED_ACTIVITY') as string;\n return of(stringFormat(translateString, instigatorName, noteAddedEvent.displayText));\n }\n\n private generateDisabledStatesChangedActivity(\n disabledStatesEvent: DisabledStatesChangedEvent,\n instigatorName: string,\n disabledStateHistory: Record>\n ): Observable {\n const pastDisableStates = disabledStateHistory[disabledStatesEvent.id.toString().toUpperCase()];\n const enabledStates = pastDisableStates.filter((s) => !disabledStatesEvent.disabledStates.includes(s));\n const disabledStates = disabledStatesEvent.disabledStates.filter((s) => !pastDisableStates.includes(s));\n const isEnablingEvent = enabledStates.length > 0;\n const message = isEnablingEvent\n ? (this._translateService.instant('STE_MESSAGE_ENABLED_STATES_ACTIVITY') as string)\n : (this._translateService.instant('STE_MESSAGE_DISABLED_STATES_ACTIVITY') as string);\n const states = this._stateService.getStates(isEnablingEvent ? enabledStates : disabledStates);\n const messageStates = states.map((s) => s?.name ?? this._unavailableInformation).join(', ');\n return of(stringFormat(message, instigatorName, messageStates));\n }\n\n private isAccessPointEvent = (event: ExternalEventAggregatedEvent): boolean =>\n event.publicTypeName === EventTypes.AccessPointFirst || event.publicTypeName === EventTypes.AccessPointLast;\n\n private getRelatedAlarmGuid = (event: ExternalEventAggregatedEvent): IGuid | null => {\n try {\n const payload: { AlarmId: string } = JSON.parse(event.payload) as { AlarmId: string };\n return toGuid(payload.AlarmId);\n } catch {\n return null;\n }\n };\n\n private getRelatedAlarmInstanceId = (event: ExternalEventAggregatedEvent): number | null => {\n try {\n const payload: { AlarmInstanceId: number } = JSON.parse(event.payload) as { AlarmInstanceId: number };\n return payload.AlarmInstanceId;\n } catch {\n return null;\n }\n };\n\n private generateExternalEventAggregatedActivity(eeaEvent: ExternalEventAggregatedEvent): Observable {\n const relatedAlarmGuid = this.getRelatedAlarmGuid(eeaEvent);\n const relatedAlarmInstanceId = this.getRelatedAlarmInstanceId(eeaEvent)?.toString() ?? this._unavailableInformation;\n const locationGuid = toGuid(eeaEvent.locationEntity);\n const triggeringEntityGuid = toGuid(eeaEvent.triggeringEntity);\n\n const ids = SafeGuid.createSet([toGuid(eeaEvent.sourceEntity), locationGuid, relatedAlarmGuid ?? SafeGuid.EMPTY, triggeringEntityGuid]);\n\n return from(this._entityCache.getEntitiesAsync(Entity, ids, false)).pipe(\n map((entities) => new Map(entities.map((entity) => [entity.id.toString(), entity.name]))),\n map((entities) => this.translateExternalEvent(relatedAlarmGuid, relatedAlarmInstanceId, triggeringEntityGuid, locationGuid, entities, eeaEvent))\n );\n }\n\n private translateExternalEvent(\n relatedAlarmGuid: IGuid | null,\n relatedAlarmInstanceId: string,\n triggeringEntityGuid: IGuid,\n locationGuid: IGuid,\n entities: Map,\n eeaEvent: ExternalEventAggregatedEvent\n ): string {\n const stringKey = EventTypesHelper.getStringKey(eeaEvent.publicTypeName) ?? 'STE_LABEL_UNAVAILABLE_INFORMATION';\n let eventName = this._translateService.instant(stringKey) as string;\n\n if (eventName === stringKey) {\n // Fallback when module's specific event names are missing from translation\n const translatedString = this._translateService.instant('STE_LABEL_EXTERNAL_EVENT_AGGREGATED') as string;\n eventName = stringFormat(translatedString, eeaEvent.publicTypeName);\n }\n\n\n const locationEntityName = entities.get(eeaEvent.locationEntity.toString()) ?? this._unavailableInformation;\n let activityEvent: string;\n if (!relatedAlarmGuid) {\n const sourceEntityName = entities.get(eeaEvent.sourceEntity.toString()) ?? this._unavailableInformation;\n const translatedString = this._translateService.instant('STE_MESSAGE_INFO_EVENT_ON_LOCATION') as string;\n activityEvent = stringFormat(translatedString, eventName, this.isAccessPointEvent(eeaEvent) ? locationEntityName : sourceEntityName);\n } else {\n const alarmEntityName = relatedAlarmGuid ? entities.get(relatedAlarmGuid.toString()) ?? this._unavailableInformation : this._unavailableInformation;\n if (!triggeringEntityGuid.isEmpty() && !relatedAlarmGuid.equals(triggeringEntityGuid)) {\n const translatedString = this._translateService.instant('STE_MESSAGE_INFO_EVENT_FROM_ALARM_TRIGGERED_BY') as string;\n const triggeringEntityName = relatedAlarmGuid ? entities.get(triggeringEntityGuid.toString()) ?? this._unavailableInformation : this._unavailableInformation;\n activityEvent = stringFormat(translatedString, eventName, alarmEntityName, relatedAlarmInstanceId, triggeringEntityName);\n } else if (relatedAlarmGuid.equals(locationGuid)) {\n const translatedString = this._translateService.instant('STE_MESSAGE_INFO_EVENT_FROM_ALARM') as string;\n activityEvent = stringFormat(translatedString, eventName, alarmEntityName, relatedAlarmInstanceId);\n } else {\n const translatedString = this._translateService.instant('STE_MESSAGE_INFO_EVENT_FROM_ALARM_TRIGGERED_BY') as string;\n activityEvent = stringFormat(translatedString, eventName, alarmEntityName, relatedAlarmInstanceId, locationEntityName);\n }\n }\n\n return activityEvent;\n\n }\n}\n","import { EventTypes } from 'RestClient/Client/Enumerations/EventTypes';\nimport { getResourceString } from './resources.helper';\n\nexport class EventTypesHelper {\n public static getStringKey(eventType: string): string | undefined {\n const stringId = this.getResourceId(eventType);\n if (stringId !== undefined) {\n const fullString = getResourceString(stringId);\n if (fullString !== undefined) {\n // We split with '_RE_L_S_' since the resource strings all start with the namespace so that string is needed to get only the last part which starts with \"STE\"\n // e.g. \"Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTDELETEDB\"\n return fullString.split('_RE_L_S_')[1].trim();\n }\n }\n return undefined;\n }\n\n private static getResourceId(eventType: string) {\n if (EventTypes.ResourceDict.size === 0) {\n EventTypes.EventTypes();\n }\n return EventTypes.ResourceDict.get(eventType);\n }\n}\n","import { Resources } from 'RestClient/Client/Enumerations/Resources';\n\nexport const getResourceString = (stringId: number): string | undefined => {\n return Object.keys(Resources).find((key) => Resources[key as keyof typeof Resources] === stringId);\n};\n","import { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class MissionControlContentTypes {\n public static incident = SafeGuid.parse('17608296-B2C4-4483-912A-450320924FF2');\n public static incidentList = SafeGuid.parse('B019AB8F-92BA-427C-8BA1-BF2E91C78459');\n public static procedure = SafeGuid.parse('26E5AFFB-4DE9-4DAB-9721-19B76169B3D7');\n public static activity = SafeGuid.parse('57EA9C36-FB30-4D60-83D4-811B921A10DA');\n public static overview = SafeGuid.parse('013128F9-BFD8-4427-B5A7-1C50E5562FBC');\n public static linkedIncident = SafeGuid.parse('1B9A8A06-58A5-47C3-B865-87005507D6D1');\n}\n","import { RestObject } from 'RestClient/Client/Model/RestObject';\nimport { ITransaction } from 'RestClient/Client/Interface/ITransaction';\nimport { IRestResponse } from 'RestClient/Client/Interface/IRestResponse';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { IncidentFilter } from '@modules/mission-control/models/incident-filter';\nimport { ILinkedIncidentController } from '@modules/mission-control/controllers/incident.controller.interfaces';\n\nexport class LinkedIncidentController extends RestObject implements ILinkedIncidentController {\n constructor() {\n super('api');\n this._canGet = true;\n }\n\n public async getFilteredLinkedIncidents(displayId: string | null, incidentFilter: IncidentFilter, transaction?: ITransaction): Promise {\n const responseHandler = (response: IRestResponse): Promise => {\n if (response.statusCode === HttpStatusCode.OK) {\n return new Promise((resolve, reject) => {\n resolve(response);\n });\n } else {\n return new Promise((resolve, reject) => {\n reject(response);\n });\n }\n };\n\n\n const params = incidentFilter.asURLSearchParams();\n if(displayId) params.set('displayId', displayId);\n\n const url = params.toString() !== '' ? `LinkedIncident?${params.toString()}` : 'LinkedIncident';\n\n return this.executeRequestTransactionAsync(url, 'GET', null, transaction, responseHandler);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { McClient } from '@modules/mission-control/services/mc-client.service';\nimport { IGuid } from 'safeguid';\nimport { forkJoin, from, Observable, of } from 'rxjs';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { catchError, concatAll, filter, first, map, switchMap, tap, toArray } from 'rxjs/operators';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { LinkedIncidentController } from '@modules/mission-control/controllers/linked-incident.controller';\nimport { ILinkedIncidentController } from '@modules/mission-control/controllers/incident.controller.interfaces';\nimport { IncidentApiService } from '@modules/mission-control/services/incident/incident-api.service';\nimport { IncidentFilter } from '@modules/mission-control/models/incident-filter';\n\n@Injectable()\nexport class LinkedIncidentService {\n private readonly _scClient: WebAppClient;\n\n constructor(securityCenterProvider: SecurityCenterClientService, private _incidentApiService: IncidentApiService, private _mcClient: McClient) {\n this._scClient = securityCenterProvider.scClient;\n }\n\n public getLinkableIncidents(displayId: string | null, incidentFilter: IncidentFilter): Observable {\n return this.getController().pipe(\n switchMap((controller) => from(controller.getFilteredLinkedIncidents(displayId, incidentFilter))),\n map((x) => x?.body as MCIncident[]),\n catchError((_) => of([]))\n );\n }\n\n public getLinkedIncidents(incidentIds: IGuid[] | null): Observable {\n if (!incidentIds) return of([]);\n\n return forkJoin([...incidentIds].map((id) => this._incidentApiService.getIncident(id).pipe(catchError((_) => of(null))))).pipe(\n concatAll(),\n filter((i): i is MCIncident => i instanceof MCIncident),\n toArray()\n );\n }\n\n private getController(): Observable {\n return from(this._scClient.getAsync(LinkedIncidentController));\n }\n}\n","/* eslint-disable @typescript-eslint/no-namespace */\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport namespace ContentFields {\n export const sourceId = 'sourceid';\n export const incidentId = 'incidentid';\n export const listOrientation = 'listorientation';\n export const requestingContext = 'requestingcontext';\n}\n","import { SafeGuid } from 'safeguid';\n\nexport class MCPrivileges {\n public static triggerIncidents = SafeGuid.parse('d0959abb-b035-426a-b474-ebbb6f8fe76d');\n public static editIncidentPriority = SafeGuid.parse('fbd95f37-5d3a-47f4-8576-d021a48f3e4c');\n public static takeOwnership = SafeGuid.parse('f0bdeb0b-4696-4655-97d2-6368b45899fa');\n public static overrideOwnership = SafeGuid.parse('802e26d5-db95-404b-b569-b5f61df2e9e6');\n public static forwardIncident = SafeGuid.parse('4c1a653e-6b9b-448f-97ae-767d030eb0df');\n public static transferIncident = SafeGuid.parse('9c8615fb-b61c-4e6a-820f-45a516cdc6da');\n public static linkIncidents = SafeGuid.parse('b82a859d-c88f-4387-a2e5-fd6937325d26');\n public static modifyReportedIncidents = SafeGuid.parse('cabd6491-881f-40d6-bc73-a1cfd1287b9a');\n public static editIncidentDescription = SafeGuid.parse('d61794d9-37e6-4b40-a6cb-abdd8449e120');\n public static addComment = SafeGuid.parse('269b79d9-003d-4647-ba58-605d03b1cad3');\n}\n","export enum MCCommandType {\n None = 0,\n TriggerIncident = 1,\n ChangeState = 2,\n PlaceOnHold = 3,\n ChangePriority = 4,\n LinkIncidents = 5,\n UnlinkIncidents = 6,\n AddComment = 7,\n ChangeComment = 8,\n DeleteComment = 9,\n ChangeDescription = 10,\n ChangeExternalId = 11,\n ChangeIncidentType = 12,\n ChangeLocation = 13,\n ClearLocation = 14,\n TakeOwnership = 15,\n ReleaseOwnership = 16,\n AddNote = 17,\n AnswerProcedureStep = 18,\n TransferIncident = 19,\n ForwardIncident = 20,\n}\n\nexport abstract class MCCommandBase {\n public abstract type: MCCommandType;\n\n protected constructor(public url: string, public body: string) {}\n\n public successMessage(statusCode?: number): string {\n return '';\n }\n\n public errorMessage(statusCode?: number): string {\n return '';\n }\n}\n","import { MCCommandBase, MCCommandType } from \"@modules/mission-control/models/commands/command\";\nimport { IGuid } from \"safeguid\";\n\nconst commandType = MCCommandType.LinkIncidents;\n\nexport class LinkIncidentCommand extends MCCommandBase{\n public type = commandType;\n\n constructor(incidentId: IGuid, incidentToLink: IGuid) {\n super(\n `/v2/Incidents`,\n JSON.stringify({\n Type: commandType,\n Ids: [incidentId.toString(),incidentToLink.toString()],\n })\n );\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_CANNOT_LINK_INCIDENTS';\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { Flavor, GenToastService, ToastFlavor } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Injectable } from '@angular/core';\nimport { MCCommandBase } from '../models/commands/command';\n\n@Injectable()\nexport class McNotificationService {\n constructor(private toastNotificationService: GenToastService, private translateService: TranslateService) {}\n\n public notifyFromCommandResponse(command: MCCommandBase, statusCode: number): void {\n if (statusCode === 202) {\n const message = command.successMessage(statusCode);\n this.notifyWarning(message);\n } else if (statusCode >= 200 && statusCode <= 299) {\n const message = command.successMessage(statusCode);\n this.notifySuccess(message);\n } else {\n const message = command.errorMessage(statusCode);\n this.notifyError(message);\n }\n }\n\n public notifySuccess(primaryTextKey: string, secondaryTextKey?: string): void {\n this.toastNotify(primaryTextKey, secondaryTextKey, Flavor.Toast.Success);\n }\n\n public notifyWarning(primaryTextKey: string, secondaryTextKey?: string): void {\n this.toastNotify(primaryTextKey, secondaryTextKey, Flavor.Toast.Warning);\n }\n\n public notifyError(primaryTextKey: string, secondaryTextKey?: string): void {\n this.toastNotify(primaryTextKey, secondaryTextKey, Flavor.Toast.Error);\n }\n\n private toastNotify(primaryTextKey: string, secondaryTextKey?: string, flavor: ToastFlavor = ToastFlavor.Information) {\n if (primaryTextKey === '') return;\n this.toastNotificationService.show({\n id: SafeGuid.newGuid().toString(),\n text: this.translateService?.instant(primaryTextKey) as string,\n secondaryText: secondaryTextKey ? (this.translateService?.instant(secondaryTextKey) as string) : secondaryTextKey,\n flavor,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IWebApiResponse } from '@modules/mission-control/models/web-api-response';\nimport { MCCommandBase } from '../../models/commands/command';\nimport { McNotificationService } from '../mc-notification.service';\nimport { McClient } from '../mc-client.service';\n\n@Injectable()\nexport class IncidentCommandService {\n constructor(private _mcClient: McClient, private _notificationService: McNotificationService) {}\n\n public execute(command: MCCommandBase): Observable {\n return this._mcClient.post(command.url, command.body).pipe(\n tap((x) => this._notificationService.notifyFromCommandResponse(command, x.statusCode)),\n tap((x) => {\n if (!this.isSuccessStatusCode(x)) throw new Error('Command failed');\n })\n );\n }\n\n public tryExecute(command: MCCommandBase): Observable {\n return this._mcClient.post(command.url, command.body).pipe(\n tap((x) => this._notificationService.notifyFromCommandResponse(command, x.statusCode)),\n map((response) => this.isSuccessStatusCode(response))\n );\n }\n\n private isSuccessStatusCode(response: IWebApiResponse): boolean {\n return response.statusCode >= 200 && response.statusCode < 300;\n }\n}\n","import { MCCommandBase, MCCommandType } from \"@modules/mission-control/models/commands/command\";\nimport { IGuid } from \"safeguid\";\n\nconst commandType = MCCommandType.UnlinkIncidents;\n\nexport class UnlinkIncidentCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentsToUnlink: IGuid[]) {\n super('/v2/Incidents', JSON.stringify({ Type: commandType, Ids: incidentsToUnlink.map(id => id.toString()) }));\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_CANNOT_UNLINK_INCIDENTS';\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\nimport { Step, StepApi } from './step';\n\nexport interface McProcedureApi {\n Id: IGuid;\n Revision: number;\n Steps: StepApi[];\n}\n\nexport class McProcedure {\n constructor(public id: IGuid, public revision: number, public steps: Step[]) {\n Object.freeze(this);\n }\n\n public static assign(procedure: McProcedureApi): McProcedure {\n return new McProcedure(toGuid(procedure.Id), procedure.Revision, procedure.Steps.map(Step.assign));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IGuid } from 'safeguid';\nimport { EMPTY, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { McProcedure, McProcedureApi } from '../../models/procedure';\nimport { McClient } from '../mc-client.service';\n\n@Injectable()\nexport class ProcedureService {\n constructor(private _mcClient: McClient) {}\n\n public getProcedure(procedureGuid: IGuid | string | null, procedureRevision: number | null): Observable {\n if (procedureGuid === null) return EMPTY;\n\n const procedureId = isInstanceOfGuid(procedureGuid) ? procedureGuid.toString() : procedureGuid;\n const url = procedureRevision ? `v2/Procedures/${procedureId}/Revisions/${procedureRevision}` : `v2/Procedures/${procedureId}`;\n return this._mcClient.get(url).pipe(map((procedure) => McProcedure.assign(procedure)));\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { Injectable } from '@angular/core';\nimport { IGuid } from 'safeguid';\nimport { EMPTY, Observable } from 'rxjs';\nimport { catchError, concatAll, map, toArray } from 'rxjs/operators';\nimport { eventFactory, IncidentEvent, IncidentEventType, IncidentEventTypeValues } from '../../models/events/incident-event';\nimport { McClient } from '../mc-client.service';\n\n@Injectable()\nexport class IncidentEventService {\n constructor(private _mcClient: McClient) {\n }\n\n public getAllFromMcClient(url: string, searchParams: URLSearchParams): Observable {\n\n\n return this._mcClient.getAll(url, searchParams).pipe(\n concatAll(),\n map((ie) => (eventFactory(ie) as T)),\n toArray(),\n catchError((e) => {\n console.error(e);\n return EMPTY;\n })\n );\n }\n\n public getIncidentEvent(incidentId: IGuid, filter?: IncidentEventType[]): Observable {\n const url = `/v2/Incidents/${incidentId.toString()}/events`;\n const searchParams = new URLSearchParams();\n\n if (filter && filter.length > 0) {\n searchParams.append('eventTypes', filter.map((t) => IncidentEventTypeValues[t].toString()).join(','));\n }\n return this.getAllFromMcClient(url, searchParams);\n }\n\n public getAllIncidentEvents(incidentId: IGuid): Observable {\n const url = `/v2/Incidents/${incidentId.toString()}/events`;\n const searchParams = new URLSearchParams();\n searchParams.append('eventTypes', '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19');\n return this.getAllFromMcClient(url, searchParams);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n AlterationType,\n DescriptionChangedEvent,\n ExternalIdChangedEvent,\n IncidentEvent,\n IncidentEventType,\n LinkedEvent,\n LocationChangedEvent,\n OwnershipChangedEvent,\n PriorityChangedEvent,\n ProcedureStepAnsweredEvent,\n RecipientAlteredEvent,\n StateChangedEvent,\n UnlinkedEvent,\n} from '@modules/mission-control/models/events/incident-event';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { McProcedure } from '@modules/mission-control/models/procedure';\nimport { ProcedureService } from '@modules/mission-control/services/procedures/procedure.service';\nimport { StateGuids } from '@modules/mission-control/state-guids';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { List } from 'immutable';\nimport { isEqual } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, shareReplay, takeUntil, tap, withLatestFrom } from 'rxjs/operators';\nimport { McEventReceiverService } from '../events/mc-event-receiver.service';\nimport { IncidentEventService } from './../events/incident-event.service';\nimport { IncidentApiService } from './incident-api.service';\nimport { IncidentHandler } from './incident-handler';\n\n@UntilDestroy()\n@Injectable()\nexport class IncidentSelectionService {\n private _refresh$ = new BehaviorSubject(null);\n private _selectedIncident$!: Observable;\n\n constructor(\n private _incidentEventService: IncidentEventService,\n private _procedureService: ProcedureService,\n private _incidentApiService: IncidentApiService,\n _eventReceiver: McEventReceiverService\n ) {\n this.createSelectedObservable();\n\n _eventReceiver\n .getIncidentEvents()\n .pipe(\n withLatestFrom(this._refresh$),\n tap(async ([events, selectedIncident]) => await this.handleIncidentEvent(events, selectedIncident)),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n public get selectedIncident$(): Observable {\n return this._selectedIncident$;\n }\n\n public async selectIncident(incident: MCIncident): Promise {\n const incidentEventsPromise = this._incidentEventService.getAllIncidentEvents(incident.id).toPromise();\n let procedurePromise: Promise | null = null;\n if (incident.procedureId && incident.procedureRevision) {\n procedurePromise = this._procedureService.getProcedure(incident.procedureId, incident.procedureRevision).toPromise();\n }\n let newIncident: MCIncident;\n if (procedurePromise) {\n await Promise.all([incidentEventsPromise, procedurePromise]);\n newIncident = incident.with({\n events: List(await incidentEventsPromise),\n procedure: await procedurePromise,\n });\n } else {\n newIncident = incident.with({\n events: List(await incidentEventsPromise),\n });\n }\n this._refresh$.next(newIncident);\n }\n\n private async handleIncidentEvent(events: IncidentEvent[], selectedIncident: MCIncident | null): Promise {\n for (const event of events) {\n const handleSelectedEvent = async (incident: MCIncident): Promise => {\n const oldEventList = incident?.events;\n incident = incident.with({ events: oldEventList.insert(0, event) });\n switch (event?.type) {\n case IncidentEventType.StateChanged:\n return this.handleSelectedStateChange(incident, event as StateChangedEvent);\n case IncidentEventType.RecipientsAltered:\n return await this.handleSelectedRecipientChange(incident, event as RecipientAlteredEvent);\n case IncidentEventType.PriorityChanged:\n return IncidentHandler.priorityChange(incident, event as PriorityChangedEvent);\n case IncidentEventType.LocationChanged:\n return IncidentHandler.locationChange(incident, event as LocationChangedEvent);\n case IncidentEventType.DescriptionChanged:\n return IncidentHandler.descriptionChange(incident, event as DescriptionChangedEvent);\n case IncidentEventType.ExternalIdChanged:\n return IncidentHandler.externalIdChange(incident, event as ExternalIdChangedEvent);\n case IncidentEventType.ProcedureStepAnswered:\n return IncidentHandler.currentStepChange(incident, event as ProcedureStepAnsweredEvent);\n case IncidentEventType.OwnershipChanged:\n return IncidentHandler.ownerChange(incident, event as OwnershipChangedEvent);\n case IncidentEventType.Linked:\n return IncidentHandler.linkIncidents(incident, event as LinkedEvent);\n case IncidentEventType.Unlinked:\n return IncidentHandler.unlinkIncidents(incident, event as UnlinkedEvent);\n case IncidentEventType.LocationCleared:\n return IncidentHandler.clearLocation(incident);\n case IncidentEventType.IncidentTypeChanged:\n return await this.handleSelectedIncidentTypeChange(incident);\n }\n\n return incident;\n };\n\n const isEventForSelection = selectedIncident?.id.equals(event.incidentId) ?? false;\n if (isEventForSelection && selectedIncident) {\n selectedIncident = await handleSelectedEvent(selectedIncident);\n }\n\n this._refresh$.next(selectedIncident);\n }\n }\n\n private handleSelectedStateChange(incident: MCIncident, event: StateChangedEvent): MCIncident | null {\n return !event.stateId.equals(StateGuids.CLOSED) ? IncidentHandler.stateChange(incident, event) : null;\n }\n\n private createSelectedObservable(): void {\n this._selectedIncident$ = this._refresh$.pipe(\n distinctUntilChanged((a, b) => isEqual(a, b)),\n shareReplay(1)\n );\n }\n\n private async handleSelectedIncidentTypeChange(incident: MCIncident): Promise {\n const newIncident = await this._incidentApiService.getIncident(incident.id).toPromise();\n if (newIncident) {\n return IncidentHandler.incidentTypeChange(incident, newIncident);\n } else {\n return null;\n }\n }\n\n private async handleSelectedRecipientChange(incident: MCIncident, event: RecipientAlteredEvent): Promise {\n incident = incident.with({ recipientsMode: event.recipientsMode });\n switch (event.alterationType) {\n case AlterationType.Dispatch:\n case AlterationType.Forward: {\n return IncidentHandler.recipientChange(incident, event);\n }\n case AlterationType.Transfer: {\n const newIncident = await this._incidentApiService.getIncident(incident.id).toPromise();\n if (!newIncident) {\n return null;\n }\n return newIncident;\n }\n }\n return incident;\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { Icon } from '@genetec/gelato';\nimport { ButtonFlavor, ComboboxFlavor, ComboboxPosition, GenMeltedItem } from '@genetec/gelato-angular';\nimport { IncidentFilter } from '@modules/mission-control/models/incident-filter';\nimport { Output, EventEmitter } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport moment from 'moment/moment';\nimport { tap } from 'rxjs/operators';\nimport { List } from 'immutable';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'app-linked-incident-filter',\n templateUrl: './linked-incident-filter.component.html',\n styleUrls: ['./linked-incident-filter.component.scss'],\n})\nexport class LinkedIncidentFilterComponent implements OnInit, OnChanges {\n @Input()\n public hiddenFilter = false;\n\n @Output()\n public incidentFilterChanged = new EventEmitter();\n\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly ComboboxPosition = ComboboxPosition;\n public readonly ComboboxFlavor = ComboboxFlavor;\n public readonly Icon = Icon;\n public timeFrameList: GenMeltedItem[] = [];\n public sameIncidentType = false;\n public sameLocation = false;\n public selectedTimeRange: GenMeltedItem | null = null;\n public anyTime: GenMeltedItem = { id: '0', text: this._translateService.instant('STE_LABEL_ANY_TIME') };\n\n private _sameIncidentType$: BehaviorSubject = new BehaviorSubject(false);\n private _sameLocation$: BehaviorSubject = new BehaviorSubject(false);\n private _isFilterVisible$: BehaviorSubject = new BehaviorSubject(false);\n private _dateTimeFrom$: BehaviorSubject = new BehaviorSubject(null);\n private _lastHour: GenMeltedItem = { id: '1', text: this._translateService.instant('STE_LABEL_LAST_HOUR') };\n private _lastDay: GenMeltedItem = { id: '2', text: this._translateService.instant('STE_LABEL_LAST_DAY') };\n private _lastWeek: GenMeltedItem = { id: '3', text: this._translateService.instant('STE_LABEL_LAST_WEEK') };\n private _lastMonth: GenMeltedItem = { id: '4', text: this._translateService.instant('STE_LABEL_LAST_MONTH') };\n\n constructor(private _translateService: TranslateService, private _incidentSelectionService: IncidentSelectionService) {}\n\n public ngOnInit() {\n this.timeFrameList = [this.anyTime, this._lastHour, this._lastDay, this._lastWeek, this._lastMonth];\n\n combineLatest([this._incidentSelectionService.selectedIncident$, this._sameIncidentType$, this._sameLocation$, this._dateTimeFrom$, this._isFilterVisible$])\n .pipe(\n tap(([selectedIncident, sameIncidentType, sameLocation, dateTimeFrom, isFilterVisible]) => {\n let incidentFilter = IncidentFilter.empty;\n\n if (!!selectedIncident && isFilterVisible) {\n if (sameIncidentType) incidentFilter = incidentFilter.with({ incidentTypeIds: List([selectedIncident.typeId]) });\n if (sameLocation && selectedIncident.location?.entityId) incidentFilter = incidentFilter.with({ locationIds: List([selectedIncident.location.entityId]) });\n if (dateTimeFrom) incidentFilter = incidentFilter.with({ dateTimeFrom });\n }\n\n this.incidentFilterChanged.emit(incidentFilter);\n }),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('hiddenFilter')) {\n this._isFilterVisible$.next(!changes.hiddenFilter.currentValue);\n }\n }\n\n public onSameIncidentTypeChanged = (event: CustomEvent) => this._sameIncidentType$.next(event.detail);\n\n public onSameLocationChanged = (event: CustomEvent) => this._sameLocation$.next(event.detail);\n\n public onTimeFrameChanged(item: GenMeltedItem) {\n const now = moment().utc();\n switch (item.id) {\n case '0':\n this._dateTimeFrom$.next(null);\n break;\n case '1':\n this._dateTimeFrom$.next(now.subtract(1, 'hours').toISOString());\n break;\n case '2':\n this._dateTimeFrom$.next(now.subtract(1, 'days').toISOString());\n break;\n case '3':\n this._dateTimeFrom$.next(now.subtract(1, 'weeks').toISOString());\n break;\n case '4':\n this._dateTimeFrom$.next(now.subtract(1, 'months').toISOString());\n break;\n }\n }\n}\n","\n","import { SafeGuid, IGuid } from 'safeguid';\nimport { Injectable } from '@angular/core';\nimport { Observable, of, ReplaySubject } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { McClient } from '../mc-client.service';\nimport { toGuid } from '../../utils/guid-utils';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { Icon } from '@genetec/gelato';\n\n@UntilDestroy()\n@Injectable()\nexport class IconService {\n private icons = SafeGuid.createMap>();\n static readonly DefaultIncidentIconID = '9780C3C0-6D67-4023-9C2F-1BB5802FA127';\n constructor(private mcClient: McClient, private logger: LoggerService) {}\n\n public getIcon(id: IGuid | string, defaultIcon: string = Icon.Incident): Observable {\n const idGuid = toGuid(id);\n\n //Check if default MC Icon (yellow lightning)\n if (IconService.isDefaultIncidentIcon(idGuid)) {\n return of(defaultIcon);\n }\n\n //Check if already downloaded\n if (this.icons.has(idGuid)) {\n return this.icons.get(idGuid)!.asObservable();\n }\n\n const obs$ = new ReplaySubject(1);\n this.icons.set(idGuid, obs$);\n this.mcClient\n .get(`v2/Icons/${id.toString()}`, 'blob')\n .pipe(\n switchMap((x) => {\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.readAsDataURL(x);\n reader.onloadend = (e) => {\n const response = e?.target?.result as string;\n if (!response) this.logger.traceWarning(`Icon ${id.toString()} not found`);\n observer.next(response);\n observer.complete();\n };\n reader.onerror = () => observer.complete();\n });\n }),\n catchError((err) => {\n console.error(err);\n return of(undefined);\n }),\n untilDestroyed(this)\n )\n .subscribe(obs$);\n return obs$;\n }\n\n public static isDefaultIncidentIcon(id: IGuid | string): boolean {\n return toGuid(id).equals(IconService.DefaultIncidentIconID);\n }\n}\n","\"\"\n\n \n\n","import { Component, Input } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { IconService } from '@modules/mission-control/services/icons/icon.service';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\n\n/**\n * Component used to display an incident icon with the Gelato Incident Icon (⚡) being defaulted if iconId is null\n */\n@Component({\n selector: 'app-incident-icon',\n templateUrl: './incident-icon.component.html',\n})\nexport class IncidentIconComponent {\n @Input() public set iconId(value: IGuid | null) {\n this.incidentSubject.next(value);\n }\n\n @Input() public width = '100%';\n @Input() public height = '100%';\n\n private incidentSubject = new BehaviorSubject(null);\n\n public incident$ = this.incidentSubject.asObservable();\n\n public icon$ = this.incident$.pipe(switchMap((iconId) => (iconId ? this.iconService.getIcon(iconId, '') : of(''))));\n\n public Icon = Icon;\n\n constructor(private iconService: IconService) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { from, Observable, of } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { defaultIfEmpty, map } from 'rxjs/operators';\nimport { IncidentLocationService } from '../../services/incident-location/incident-location.service';\n\n@Pipe({ name: 'incidentLocationName' })\nexport class LocationNamePipe implements PipeTransform {\n constructor(private _locationService: IncidentLocationService, private _translateService: TranslateService) {}\n\n public transform(id: IGuid | string | null | undefined): Observable {\n const noLocationTranslatedName = this._translateService.instant('STE_LABEL_NONE') as string;\n const unavailableInformationTranslatedName = this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string;\n\n if (!id) return of(noLocationTranslatedName);\n const locationId = isInstanceOfGuid(id) ? id : SafeGuid.parse(id);\n if (locationId.isEmpty()) return of(noLocationTranslatedName);\n\n return from(this._locationService.getLocation(locationId)).pipe(\n map((entity) => entity?.name ?? unavailableInformationTranslatedName),\n defaultIfEmpty(unavailableInformationTranslatedName)\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TimeService } from '@shared/services/time/time.service';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { Observable, of } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n/*\n Converts an utc time to local time, using a specific format.\n Ex:
    {{ timeUtc | dateFormatWithTimezone: 'MM/DD/yyyy h:mm A' | async }}
    \n*/\n@Pipe({ name: 'dateFormatWithTimezone' })\nexport class TimezoneConversionPipe implements PipeTransform {\n private static utcTimezoneId = 'UTC';\n\n constructor(private timeService: TimeService, private loggerService: LoggerService) {}\n\n public transform = (utcTime: Date | null, format: string): Observable =>\n utcTime\n ? this.timeService.timezone$.pipe(\n map((timezone) => timezone?.iana ?? null),\n this.traceErrorIfNull(this.timeService.useDeviceTimezone ? 'Unable to fetch device timezone' : 'Unable to use configured timezone'),\n this.formatIana(utcTime, format)\n )\n : of(null);\n\n private traceErrorIfNull =\n (error: string) =>\n (source$: Observable): Observable =>\n source$.pipe(\n tap((timezone) => {\n if (timezone === null) {\n this.loggerService.traceError(error);\n }\n })\n );\n\n private formatIana =\n (utc: Date, format: string) =>\n (source$: Observable): Observable =>\n source$.pipe(map((iana) => this.timeService.formatTime(utc, format, true, true, iana ?? TimezoneConversionPipe.utcTimezoneId)));\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { StateService } from '../services/state/state.service';\n\n@Pipe({ name: 'stateName' })\nexport class StateNamePipe implements PipeTransform {\n constructor(private stateService: StateService, private _translateService: TranslateService) {}\n\n public transform(stateId: IGuid | null): Observable {\n if (!stateId) return of(this._translateService.instant('STE_LABEL_NONE') as string);\n\n return this.stateService.getState$(stateId).pipe(map((x) => x?.name ?? (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string)));\n }\n}\n","\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\n\n@Component({\n selector: 'app-incident-card',\n templateUrl: './incident-card.component.html',\n styleUrls: ['./incident-card.component.scss'],\n})\nexport class IncidentCardComponent {\n @Input() public incident: MCIncident | null = null;\n @Input() public disabled: boolean = false;\n @Input() public selected: boolean = false;\n\n public TextFlavor = TextFlavor;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PriorityService } from '../services/priority/priority.service';\n\n@Pipe({ name: 'priorityName' })\nexport class PriorityNamePipe implements PipeTransform {\n constructor(private priorityService: PriorityService, private translateService: TranslateService) {}\n\n public transform(priorityId: IGuid): Observable {\n return this.priorityService.getPriority(priorityId).pipe(map((x) => x?.name ?? (this.translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string)));\n }\n}\n","\n \n
    \n {{ 'STE_LABEL_LINKED_INCIDENT' | translate }}\n {{ ' (' + linkedIncidents.length + ')' }}\n
    \n
    \n \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n {{ 'STE_MESSAGE_NO_LINKED_INCIDENT' | translate }}\n
    \n
    0\" class=\"linked-incident-list\">\n \n
    \n
    \n \n
    \n
    \n
    {{ linkedIncident.name }}
    \n
    {{ '(#' + linkedIncident.displayId + ')' }}
    \n
    \n
    \n
    \n \n {{ linkedIncident.location?.entityId | incidentLocationName | async }}\n \n \n {{ linkedIncident.priorityId | priorityName | async }}\n \n
    \n
    \n \n {{ linkedIncident.triggerTimeUtc | dateFormatWithTimezone: 'MM-DD h:mm:ss A' | async }}\n \n {{ linkedIncident.stateId | stateName | async }} \n
    \n
    \n
    \n
    \n
    \n \n
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n \n\n\n\n \n \n \n\n\n\n \n {{ unlinkMessage }}\n \n\n","import { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { MissionControlContentTypes } from '@modules/mission-control/mission-control-content-types';\nimport { InternalContentPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { TextFlavor } from '@genetec/gelato';\nimport { Icon, SpinnerSize } from '@genetec/gelato';\nimport { ButtonFlavor, GenMeltedItem, GenModalService, IconSize, MeltedModalAction, Severity } from '@genetec/gelato-angular';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { filter, switchMap, tap } from 'rxjs/operators';\nimport { LinkedIncidentService } from '@modules/mission-control/services/linked-incident/linked-incident.service';\nimport { ContentProviderService } from '@shared/services/content/content-provider.service';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { ContentFields } from '@modules/mission-control/content-fields';\nimport { toGuid } from '@modules/mission-control/utils/guid-utils';\nimport { ContentService } from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { MCPrivileges } from '@modules/mission-control/mc-privileges';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { LinkIncidentCommand } from '@modules/mission-control/models/commands/link-incident-command';\nimport { IncidentCommandService } from '@modules/mission-control/services/incident/incident-command.service';\nimport { UnlinkIncidentCommand } from '@modules/mission-control/models/commands/unlink-incident-command';\nimport { stringFormat } from '@shared/utilities/StringFormat';\nimport { TranslateService } from '@ngx-translate/core';\nimport { StateGuids } from '@modules/mission-control/state-guids';\nimport { McNotificationService } from '@modules/mission-control/services/mc-notification.service';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { IncidentFilter } from '@modules/mission-control/models/incident-filter';\nimport { LinkedIncidentFilterComponent } from '@modules/mission-control/components/linked-incident-filter/linked-incident-filter.component';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nconst isContentSupported = (content: Content): boolean => !!content?.type.equals(MissionControlContentTypes.linkedIncident);\n\n@UntilDestroy()\n@Component({\n selector: 'app-linked-incident-widget',\n templateUrl: './linked-incident-widget.component.html',\n styleUrls: ['./linked-incident-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: LinkedIncidentWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: LinkedIncidentWidgetComponent.pluginId } as PluginComponentExposure,\n requirements: {\n optionalGlobalPrivileges: [MCPrivileges.linkIncidents, MCPrivileges.modifyReportedIncidents],\n },\n isContentSupported,\n})\nexport class LinkedIncidentWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('A9258DF6-7A91-4232-8276-1C22D3B4FA63');\n\n @ViewChild('linkedIncidentFilter') public incidentFilter!: LinkedIncidentFilterComponent;\n\n public readonly TextFlavor = TextFlavor;\n public readonly Severity = Severity;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly IconSize = IconSize;\n public readonly SpinnerSize = SpinnerSize;\n\n public content: Content | null = null;\n public dataContext: ContentService | null = null;\n\n public linkIncidentAction: () => Promise;\n public unlinkIncidentAction: () => Promise;\n public targetLinkIncident: MCIncident | null = null;\n public targetUnlinkIncident: MCIncident | null = null;\n public linkedIncidents$: Observable;\n public linkableIncidents$: Observable;\n public linkIncidentModalId = 'link-incident-modal';\n public unlinkIncidentModalId = 'unlink-incident-modal';\n public hasLinkIncidentPrivilege = false;\n public hasModifyReportedIncidentPrivilege = false;\n public linkDisplayId: string | null = null;\n public unlinkFlavor = TextFlavor.Normal;\n public unlinkMessage = '';\n public incidentId: IGuid | null = null;\n public hiddenFilter = true;\n public timeList: Array = [];\n\n private _linkedIncident$: BehaviorSubject = new BehaviorSubject([]);\n private _requestingContext: IGuid | null = null;\n private _selectedIncidentDisplayId: string | null = null;\n private _incidentFilter$: BehaviorSubject = new BehaviorSubject(IncidentFilter.empty);\n private _searchDisplayId$: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(\n private _translateService: TranslateService,\n private _privilegeService: PrivilegeService,\n private _linkedIncidentService: LinkedIncidentService,\n private _incidentCommandService: IncidentCommandService,\n private _contentProviderService: ContentProviderService,\n private _notificationService: McNotificationService,\n private _incidentSelectionService: IncidentSelectionService,\n private _modalService: GenModalService,\n private _logger: LoggerService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n\n this.linkIncidentAction = this.linkIncident.bind(this);\n this.unlinkIncidentAction = this.unlinkIncident.bind(this);\n\n this.linkedIncidents$ = this._linkedIncident$.asObservable();\n\n this.linkableIncidents$ = combineLatest([this._searchDisplayId$, this._incidentFilter$]).pipe(\n switchMap(([displayId, incidentFilter]) => {\n if ((!displayId || displayId.trim() === '') && this.hiddenFilter) return of([]);\n\n return this._linkedIncidentService.getLinkableIncidents(displayId, incidentFilter);\n })\n );\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n this.initializePrivileges();\n\n this._linkedIncident$.next([]);\n\n const selectedIncident$ = this._incidentSelectionService.selectedIncident$.pipe(\n filter((i): i is MCIncident => i instanceof MCIncident && (this.incidentId?.equals(i.id) ?? false)),\n tap((incident) => (this._selectedIncidentDisplayId = incident.displayId.toString()))\n );\n\n selectedIncident$\n .pipe(\n switchMap((incident) => this._linkedIncidentService.getLinkedIncidents(incident.linkedIncidentIds)),\n untilDestroyed(this)\n )\n .subscribe((incidents) => this._linkedIncident$.next(incidents));\n }\n\n public canLinkIncident = (incident: MCIncident): boolean => {\n const displayId = incident.displayId.toString();\n const selectedDisplayId = this._selectedIncidentDisplayId?.toString() ?? null;\n const linkedDisplayIds = this._linkedIncident$.getValue().map((x) => x.displayId.toString());\n\n return !!selectedDisplayId && displayId !== selectedDisplayId && !linkedDisplayIds.includes(displayId);\n };\n\n public canUnlinkIncident = (): boolean =>\n !!this.targetUnlinkIncident && this.hasLinkIncidentPrivilege && (!this.targetUnlinkIncident.stateId.equals(StateGuids.CLOSED) || this.hasModifyReportedIncidentPrivilege);\n\n public selectLinkIncident(incident: MCIncident): void {\n this.targetLinkIncident = incident;\n }\n\n public selectUnlinkIncident(incident: MCIncident): void {\n this.targetUnlinkIncident = incident;\n }\n\n public async navigateToIncident(incident: MCIncident): Promise {\n if (incident.stateId.equals(StateGuids.CLOSED)) {\n this._notificationService.notifyError('STE_MESSAGE_INCIDENT_IS_CLOSED');\n return;\n }\n const content = await this._contentProviderService.getContentAsync(incident.id, this._requestingContext ?? undefined);\n if (content) {\n this.dataContext?.pushContent(content);\n }\n }\n\n public updateIncidentFilter(incidentFilter: IncidentFilter): void {\n this._incidentFilter$.next(incidentFilter);\n }\n\n public toggleFilter(): void {\n this.hiddenFilter = !this.hiddenFilter;\n if (this.hiddenFilter) {\n this.resetFilter();\n }\n }\n\n public updateSelectedIncident(linkDisplayId: string | null): void {\n this._searchDisplayId$.next(linkDisplayId);\n }\n\n public setContent(content: Content): void {\n this.content = content;\n const hasIncidentId = this.content?.parameters?.hasField(ContentFields.incidentId) ?? false;\n const hasContextId = this.content?.parameters?.hasField(ContentFields.requestingContext) ?? false;\n\n this.incidentId = hasIncidentId ? toGuid(this.content?.parameters?.getField(ContentFields.incidentId) as string) : null;\n this._requestingContext = hasContextId ? toGuid(this.content?.parameters?.getField(ContentFields.requestingContext) as string) : null;\n }\n\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext as ContentService;\n }\n\n public showLinkIncidentModal = (): void => {\n this.linkDisplayId = null;\n this._searchDisplayId$.next(null);\n this.targetLinkIncident = null;\n this.resetFilter();\n this.showModal(this.linkIncidentModalId);\n };\n\n public showUnlinkIncidentModal(): void {\n this.unlinkMessage = '';\n this.unlinkFlavor = TextFlavor.Normal;\n if (!this.targetUnlinkIncident) {\n return;\n } else if (this.targetUnlinkIncident.stateId.equals(StateGuids.CLOSED) && !this.hasModifyReportedIncidentPrivilege) {\n this.unlinkFlavor = TextFlavor.Warning;\n this.unlinkMessage = stringFormat(\n this._translateService.instant('STE_MESSAGE_MISSING_X_PRIVILEGE'),\n this._translateService.instant('STE_LABEL_MODIFY_REPORTED_INCIDENT_PRIVILEGE')\n );\n } else {\n const unavailableInformation = this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string;\n const targetIncidentDisplayId = this.targetUnlinkIncident?.displayId.toString() ?? unavailableInformation;\n this.unlinkMessage = stringFormat(\n this._translateService.instant('STE_MESSAGE_UNLINK_INCIDENT_X_FROM_INCIDENT_Y'),\n targetIncidentDisplayId,\n this._selectedIncidentDisplayId ?? unavailableInformation\n );\n }\n\n this.showModal(this.unlinkIncidentModalId);\n }\n\n public closeLinkIncidentModal = (): Promise => {\n this._modalService.hide(this.linkIncidentModalId);\n return Promise.resolve(true);\n };\n\n public closeUnlinkIncidentModal = (): Promise => {\n this._modalService.hide(this.unlinkIncidentModalId);\n return Promise.resolve(true);\n };\n\n private resetFilter = () => {\n this.hiddenFilter = true;\n this._incidentFilter$.next(IncidentFilter.empty);\n this.incidentFilter.sameIncidentType = false;\n this.incidentFilter.sameLocation = false;\n this.incidentFilter.selectedTimeRange = this.incidentFilter.anyTime;\n };\n\n private showModal(modalId: string): void {\n if (this._modalService) {\n this._modalService.show(modalId);\n // TODO: ideally, the modal service should handle this: not allow 2 modals to be open.\n (document.activeElement as HTMLElement)?.blur();\n }\n }\n\n private initializePrivileges(): void {\n this.hasLinkIncidentPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.linkIncidents);\n this.hasModifyReportedIncidentPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.modifyReportedIncidents);\n }\n\n private async linkIncident(): Promise {\n if (!!this.incidentId && !!this.targetLinkIncident) {\n try {\n const success = await this._incidentCommandService.tryExecute(new LinkIncidentCommand(this.incidentId, this.targetLinkIncident.id)).toPromise();\n if (success) this.targetLinkIncident = null;\n return success;\n } catch (e) {\n this._logger.traceError(`Unable to link incidents ${e as string}`);\n }\n }\n\n return false;\n }\n\n private async unlinkIncident(): Promise {\n if (!!this.incidentId && !!this.targetUnlinkIncident) {\n try {\n const success = await this._incidentCommandService.tryExecute(new UnlinkIncidentCommand([this.incidentId, this.targetUnlinkIncident.id])).toPromise();\n if (success) this.targetUnlinkIncident = null;\n return success;\n } catch (e) {\n this._logger.traceError(`Unable to unlink incidents ${e as string}`);\n }\n }\n return false;\n }\n}\n","import { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.AddComment;\nexport class AddCommentCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: string, comment: string) {\n super(\n `/v2/Incidents/${incidentId}`,\n JSON.stringify({\n Type: commandType,\n Comment: comment,\n })\n );\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nconst appendRegexMatches = (regex: RegExp, str: string) => {\n let append = '';\n for (let match = regex.exec(str); match; match = regex.exec(str)) {\n append += match;\n }\n return append;\n};\n\n// Those regexes were provided by MissionControl team from Security Center\nconst incidentCommentFirstCharRegex = new RegExp(/^[;=\\+@-]/);\nconst incidentCommentRegex = new RegExp(/[^\\p{L}\\p{N}\\p{Sc}!@&=+$#%?*:;_,.~\"\"'`°^<>«»(){}[\\]|\\/\\\\\\r\\n -]/gu);\n\nexport const incidentCommentValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) return null; //Empty comment is valid\n const comment = control.value;\n let error = { invalidFirstChar: '', invalidChars: '' };\n // Match all invalid chars in the whole string\n error.invalidChars = appendRegexMatches(incidentCommentRegex, comment);\n // Match invalid chars at the beginning of the string\n error.invalidFirstChar += incidentCommentFirstCharRegex.exec(comment) ?? '';\n\n if (error.invalidChars || error.invalidFirstChar) {\n return error;\n }\n\n return null;\n};\n","\n {{ label !== undefined ? label : ('STE_LABEL_INCIDENT_COMMENT' | translate) }}\n \n \n {{ customError }}\n\n \n \n {{ 'STE_MESSAGE_ERROR_FIELDISREQUIRED' | translate }}\n \n\n \n {{ 'STE_MESSAGE_ERROR_FORMAT_COMMENT_CANNOT_START_WITH_X_CHARACTERS' | translate | stringFormat: ngControl.errors.invalidFirstChar }}\n \n\n \n {{ 'STE_MESSAGE_ERROR_FORMAT_COMMENT_CANNOT_CONTAIN_XYZ_CHARACTERS' | translate | stringFormat: ngControl.errors.invalidChars }}\n \n \n \n \n \n\n","import { Component, Input, OnChanges, OnInit, Self, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { incidentCommentValidator } from '@modules/mission-control/validators/incident-comment-validator';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\n\n@Component({\n selector: 'app-incident-comment',\n templateUrl: './incident-comment.component.html',\n})\nexport class IncidentCommentComponent extends TrackedComponent implements OnInit, ControlValueAccessor {\n @Input() comment = '';\n @Input() label?: string;\n @Input() disabled = false;\n @Input() required = false;\n @Input() readonly = false;\n @Input() multiline = 2;\n @Input() maxlength?: number;\n @Input() autofocus = false;\n @Input() placeholder = '';\n @Input() customError?: string;\n\n constructor(@Self() public ngControl: NgControl, trackingService: TrackingService) {\n super(trackingService);\n ngControl.valueAccessor = this;\n }\n ngOnInit(): void {\n const control = this.ngControl.control;\n if (control) {\n let validators = control.validator ? [control.validator, incidentCommentValidator] : incidentCommentValidator;\n control.setValidators(validators);\n control.updateValueAndValidity();\n }\n }\n public onChange = (_value: unknown) => {};\n public onTouch = () => {};\n\n public writeValue(value: unknown): void {\n if (typeof value === 'string') {\n this.comment = value;\n }\n }\n\n public registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n public onCommentChange(value: string): void {\n this.onChange?.(value);\n }\n}\n","
    \n
    \n
    \n {{ data.stateName }}\n {{ ', ' + ('STE_LABEL_INCIDENTOWNEDBY_X' | translate | stringFormat: data.ownerName) }}\n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n\n\n \n
    \n
    \n \n
    \n
    \n
    \n\n","import { Content, ContentPluginComponent, PluginComponentExposure, PluginComponentRequirements } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { MissionControlContentTypes } from '@modules/mission-control/mission-control-content-types';\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { MCPrivileges } from '@modules/mission-control/mc-privileges';\nimport { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ButtonFlavor, GenModalService, PopupPosition } from '@genetec/gelato-angular';\nimport { combineLatest, from, Observable, of, Subscription } from 'rxjs';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { filter, map, switchMap, tap } from 'rxjs/operators';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { McNotificationService } from '@modules/mission-control/services/mc-notification.service';\nimport { IncidentCommandService } from '@modules/mission-control/services/incident/incident-command.service';\nimport { AddCommentCommand } from '@modules/mission-control/models/commands/add-comment-command';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { StateService } from '@modules/mission-control/services/state/state.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { McUserService } from '@modules/mission-control/services/mc-user.service';\nimport { ContentFields } from '@modules/mission-control/content-fields';\nimport { toGuid } from '@modules/mission-control/utils/guid-utils';\nimport { stringFormat } from '@shared/utilities/StringFormat';\n\nconst isContentSupported = (content: Content): boolean => !!content?.type.equals(MissionControlContentTypes.incident);\n\n@Component({\n selector: 'app-quick-action-widget',\n templateUrl: './quick-action-widget.component.html',\n styleUrls: ['./quick-action-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: QuickActionWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: QuickActionWidgetComponent.pluginId } as PluginComponentExposure,\n requirements: {\n optionalGlobalPrivileges: [MCPrivileges.addComment],\n },\n isContentSupported,\n})\nexport class QuickActionWidgetComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('8DDBE03B-8162-4E14-88F9-4DE8DD8F271A');\n\n public content: Content | null = null;\n\n public ButtonFlavor = ButtonFlavor;\n public PopupPosition = PopupPosition;\n\n public comment = '';\n public addCommentAction: () => Promise;\n public hasCommentPrivilege = false;\n public data$!: Observable<{ stateName: string; ownerName: string | null }>;\n\n private addCommentModalId = 'add-comment-modal';\n private _subscription: Subscription | null = null;\n private _selectedIncidentId: IGuid | null = null;\n\n constructor(\n private _notificationService: McNotificationService,\n private _incidentCommandService: IncidentCommandService,\n private stateService: StateService,\n private _privilegeService: PrivilegeService,\n private _modalService: GenModalService,\n private _selectionService: IncidentSelectionService,\n private _translateService: TranslateService,\n private _userService: McUserService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n this.addCommentAction = this.addComment.bind(this);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n this.initializePrivileges();\n const selectedIncident$ = this._selectionService.selectedIncident$.pipe(\n filter((i): i is MCIncident => i instanceof MCIncident && this._selectedIncidentId?.equals(i.id) === true)\n );\n const stateName$ = this.getStateName(selectedIncident$);\n const ownerName$ = this.getOwnerName(selectedIncident$);\n this.data$ = combineLatest([stateName$, ownerName$]).pipe(map(([stateName, ownerName]) => ({ stateName, ownerName })));\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._subscription?.unsubscribe();\n }\n\n public initializePrivileges(): void {\n this.hasCommentPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.addComment);\n }\n\n public async addComment(): Promise {\n if (!this.hasCommentPrivilege) {\n const translatedMessage = this._translateService.instant('STE_MESSAGE_MISSING_X_PRIVILEGE') as string;\n const translatedPrivilegeName = this._translateService.instant('STE_LABEL_ADD_INCIDENT_COMMENT_PRIVILEGE') as string;\n this._notificationService.notifyError(stringFormat(translatedMessage, translatedPrivilegeName));\n return false;\n }\n\n if (!this._selectedIncidentId) {\n throw new Error('No selected incident id');\n }\n\n const command = new AddCommentCommand(this._selectedIncidentId.toString(), this.comment);\n return await this._incidentCommandService.tryExecute(command).toPromise();\n }\n\n public openModal = (): void => {\n this.comment = '';\n this._modalService.show(this.addCommentModalId);\n };\n\n public closeModal = (): Promise => {\n this._modalService.hide(this.addCommentModalId);\n return Promise.resolve(true);\n };\n\n public setContent(content: Content): void {\n this.content = content;\n if (this.content?.parameters?.hasField(ContentFields.incidentId) ?? false) {\n const incidentIdString = this.content?.parameters?.getField(ContentFields.incidentId) as string;\n this._selectedIncidentId = toGuid(incidentIdString);\n }\n }\n\n public setDataContext(dataContext: unknown): void {}\n\n private getStateName(selectedIncident$: Observable): Observable {\n return selectedIncident$.pipe(\n map((i) => i.stateId),\n switchMap((stateId) =>\n this.stateService.getState$(stateId).pipe(map((x) => x?.name ?? (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string)))\n )\n );\n }\n\n private getOwnerName(selectedIncident$: Observable): Observable {\n return selectedIncident$.pipe(\n map((i) => i.ownerId),\n switchMap((ownerId) => {\n if (!ownerId) return of(null);\n\n if (ownerId.isEmpty()) return of(null);\n\n return from(this._userService.getUserOrGroup(ownerId)).pipe(map((x) => x?.name));\n })\n );\n }\n}\n","import { IGuid } from 'safeguid';\nimport { toGuid } from '../utils/guid-utils';\nexport interface CategoryApi {\n Id: string;\n Name: string;\n ParentId: string | null;\n IconId: string;\n}\n\nexport class Category {\n constructor(public id: IGuid, public name: string, public parentId: string | null, public iconId: IGuid) {}\n\n public static assign = (category: CategoryApi): Category => new Category(toGuid(category.Id), category.Name, category.ParentId, toGuid(category.IconId));\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { concatAll, map, toArray } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { Category, CategoryApi } from '@modules/mission-control/models/category';\nimport { McClient } from '../mc-client.service';\n\n@Injectable()\nexport class CategoryApiService {\n constructor(private _mcClient: McClient) {}\n\n public getCategory(id: IGuid): Observable {\n return this._mcClient.get(`v2/categories/${id.toString()}`).pipe(map((category) => Category.assign(category)));\n }\n\n public getCategories(): Observable {\n return this._mcClient.getAll('v2/categories').pipe(\n concatAll(),\n map((category) => Category.assign(category)),\n toArray()\n );\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { List } from 'immutable';\nimport { toGuid } from './../utils/guid-utils';\n\nexport interface IncidentTypeApi {\n Id: string;\n Revision: number;\n Name: string;\n Description: string;\n IsManuallyTriggerable: boolean;\n CategoryId?: string;\n PriorityId: string;\n SubIncidentIds: Array;\n ArgbColor?: string;\n IconId: string;\n ProcedureId?: string;\n ProcedureRevision?: number;\n}\n\nexport class IncidentType {\n constructor(\n public id: IGuid,\n public revision: number,\n public name: string,\n public description: string,\n public isManuallyTriggerable: boolean,\n public categoryId: IGuid | null,\n public priorityId: IGuid,\n public subIncidentIds: List,\n public argbColor: string | null,\n public iconId: IGuid,\n public procedureId: IGuid | null,\n public procedureRevision: number | null\n ) {}\n\n public static assign = (incidentType: IncidentTypeApi): IncidentType =>\n new IncidentType(\n toGuid(incidentType.Id),\n incidentType.Revision,\n incidentType.Name,\n incidentType.Description,\n incidentType.IsManuallyTriggerable,\n incidentType.CategoryId ? toGuid(incidentType.CategoryId) : null,\n toGuid(incidentType.PriorityId),\n incidentType.SubIncidentIds ? List(incidentType.SubIncidentIds.map(toGuid)) : List(),\n incidentType.ArgbColor ?? null,\n toGuid(incidentType.IconId),\n incidentType.ProcedureId ? toGuid(incidentType.ProcedureId) : null,\n incidentType.Revision ?? null\n );\n}\n","import { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { ConnectableObservable, Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, publishReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { IncidentType, IncidentTypeApi } from '../models/incident-type';\nimport { McClient } from './mc-client.service';\nimport { IGuid } from 'safeguid';\n\n@Injectable()\nexport class IncidentTypeService implements OnDestroy {\n private _incidentTypes$: Observable;\n private _refresh$ = new Subject();\n private _stopObs$ = new Subject();\n\n constructor(private _mcClient: McClient) {\n const obs$ = this._refresh$.pipe(\n switchMap(() => this.fetchIncidentTypes()),\n takeUntil(this._stopObs$),\n publishReplay(1)\n ) as ConnectableObservable;\n\n obs$.connect();\n this._incidentTypes$ = obs$;\n }\n\n public ngOnDestroy(): void {\n this._stopObs$.next();\n }\n\n public getIncidentTypes(): Observable {\n this._refresh$.next();\n return this._incidentTypes$;\n }\n\n public refresh(): void {\n this._refresh$.next();\n }\n\n public getIncidentType(id: IGuid, revision: number): Observable {\n return this._mcClient.get(`v2/IncidentTypes/${id}/Revisions/${revision}`).pipe(map((incidentType) => IncidentType.assign(incidentType)));\n }\n\n private fetchIncidentTypes(): Observable {\n return this._mcClient.getAll('v2/IncidentTypes').pipe(\n map((x) => x.map((i) => IncidentType.assign(i)).sort((a, b) => (a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1))),\n catchError(() => {\n return of([]);\n })\n );\n }\n}\n","import { IGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ChangeDescription;\n\nexport class ChangeDescriptionCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, description: string) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n Description: description,\n })\n );\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_ERROR_EDIT_INCIDENT_DESCRIPTION_FAILED';\n }\n}\n","import { IGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ChangeExternalId;\n\nexport class ChangeExternalIdCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, externalId: string) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n ExternalId: externalId,\n })\n );\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_ERROR_EDIT_INCIDENT_EXTERNAL_ID_FAILED';\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ChangePriority;\n\nexport class ChangePriorityCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, priorityId: IGuid) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n PriorityId: priorityId.toString(),\n })\n );\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_ERROR_EDIT_INCIDENT_PRIORITY_FAILED';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { map } from 'rxjs/operators';\nimport { IncidentLocationService } from '../services/incident-location/incident-location.service';\nimport { toGuid } from '../utils/guid-utils';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({name: 'sourceIdsName'})\nexport class SourceIdsNamePipe implements PipeTransform {\n private readonly _unavailableInformation: string;\n private readonly _none: string;\n\n constructor(private translateService: TranslateService, private incidentLocationService: IncidentLocationService) {\n this._unavailableInformation = translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string;\n this._none = translateService.instant('STE_LABEL_NONE') as string;\n }\n\n public transform(id: IGuid | string | null | undefined): Observable {\n if (!id) return of(this._none);\n\n return this.incidentLocationService.getLocation(toGuid(id)).pipe(\n map((entity) => entity?.name ?? this._unavailableInformation),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { map } from 'rxjs/operators';\nimport { IncidentLocationService } from '../services/incident-location/incident-location.service';\nimport { toGuid } from '../utils/guid-utils';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({name: 'locationAreaName'})\nexport class LocationAreaNamePipe implements PipeTransform {\n private readonly _unavailableInformation: string;\n private readonly _none: string;\n\n constructor(translateService: TranslateService, private incidentLocationService: IncidentLocationService) {\n this._unavailableInformation = translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string;\n this._none = translateService.instant('STE_LABEL_NONE') as string;\n }\n\n public transform(id: IGuid | string | null | undefined): Observable {\n if (!id) return of(this._none);\n\n return this.incidentLocationService.getLocation(toGuid(id)).pipe(\n map((entity) => entity?.name ?? this._unavailableInformation)\n );\n }\n}\n","import { TranslateService } from '@ngx-translate/core';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { map } from 'rxjs/operators';\nimport { McUserService } from './../services/mc-user.service';\n\n@Pipe({ name: 'userName' })\nexport class UserNamePipe implements PipeTransform {\n constructor(private _userService: McUserService, private _translateService: TranslateService) {}\n\n public transform(id: IGuid | string | null | undefined, defaultName: string = 'STE_LABEL_USERNAME_NONE'): Observable {\n const defaultTranslateName = (this._translateService?.instant(defaultName) as string) ?? defaultName;\n if (!id) return of(defaultTranslateName);\n const userId = isInstanceOfGuid(id) ? id : SafeGuid.parse(id);\n if (userId.isEmpty()) return of(defaultTranslateName);\n\n return from(this._userService.getUserOrGroup(userId)).pipe(map((x) => x?.name ?? defaultTranslateName));\n }\n}\n","\n
    \n
    \n {{ 'STE_LABEL_OVERVIEW' | translate }}\n \n \n \n
    \n \n {{ 'STE_BUTTON_CANCEL' | translate }}\n \n \n {{ 'STE_BUTTON_SAVE' | translate }}\n \n
    \n
    \n\n
    \n \n \n \n \n {{ 'STE_LABEL_PRIORITY' | translate }}\n \n \n {{ truncate(priority) }}\n \n \n \n \n\n \n \n {{ 'STE_LABEL_INCIDENT_DESCRIPTION' | translate }}\n \n
    \n \n {{ truncate(incident.description) }}\n \n
    \n \n
    \n\n \n \n {{ 'STE_LABEL_STATE' | translate }}\n \n \n {{ truncate(state) }}\n \n \n\n \n \n {{ 'STE_LABEL_TRIGGER_TIME' | translate }}\n \n \n {{ incident.triggerTimeUtc | dateFormatWithTimezone: 'MMM d, y h:mm:ss A' | async }}\n \n \n\n \n \n {{ 'STE_ENTITY_AREA' | translate }}\n \n
    \n
    0; else labelNone\">\n \n {{ locationAreaId | locationAreaName | async }}\n \n
    \n
    \n
    \n \n \n {{ 'STE_LABEL_INCIDENT_CATEGORY' | translate }}\n \n \n {{ truncate(category) }}\n \n \n \n \n {{ 'STE_LABEL_INCIDENT_SOURCES' | translate }}\n \n
    \n
    0; else labelNone\">\n \n {{ sourceId | sourceIdsName | async }}\n \n
    \n
    \n
    \n\n \n \n {{ 'STE_LABEL_LOCATION' | translate }}\n \n \n {{ truncate(location) }}\n \n \n\n \n \n {{ 'STE_LABEL_OWNER' | translate }}\n \n \n {{ truncate(owner) }}\n \n \n\n \n \n {{ 'STE_LABEL_INCIDENT_RECIPIENTS' | translate }}\n \n
    0\">\n
    \n \n {{ recipient | userName | async }}\n \n
    \n
    \n\n \n {{ 'STE_LABEL_EVERYONE' | translate }}\n \n
    \n \n \n {{ 'STE_LABEL_LATITUDE' | translate }}\n \n \n {{ incident.location?.latitude }}\n \n \n \n \n {{ 'STE_LABEL_LONGITUDE' | translate }}\n \n \n {{ incident.location?.longitude }}\n \n \n \n \n {{ 'STE_LABEL_INCIDENT_EXTERNAL_ID' | translate }}\n \n
    \n \n {{ truncate(incident.externalId) }}\n \n
    \n \n
    \n
    \n\n
    \n \n {{ 'STE_BUTTON_SHOWMORE' | translate }}\n \n\n \n {{ 'STE_BUTTON_SHOWLESS' | translate }}\n \n
    \n
    \n\n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n\n \n \n {{ 'STE_LABEL_NONE' | translate }}\n \n \n
    \n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { filter, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { GenMeltedItem } from '@genetec/gelato-angular';\nimport { ButtonFlavor, Icon, IconSize, TextFlavor, SpinnerSize } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { IncidentLocationService } from '@modules/mission-control/services/incident-location/incident-location.service';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { IncidentApiService } from '@modules/mission-control/services/incident/incident-api.service';\nimport { CategoryApiService } from '@modules/mission-control/services/category/category-api.service';\nimport { IncidentTypeService } from '@modules/mission-control/services/incident-type.service';\nimport { Category } from '@modules/mission-control/models/category';\nimport { IncidentCommandService } from '@modules/mission-control/services/incident/incident-command.service';\nimport { ChangeDescriptionCommand } from '@modules/mission-control/models/commands/change-description-command';\nimport { ChangeExternalIdCommand } from '@modules/mission-control/models/commands/change-external-id-command';\nimport { McUserService } from '@modules/mission-control/services/mc-user.service';\nimport { ChangePriorityCommand } from '@modules/mission-control/models/commands/change-priority-command';\nimport { PriorityService } from '@modules/mission-control/services/priority/priority.service';\nimport { MCPrivileges } from '@modules/mission-control/mc-privileges';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { MissionControlContentTypes } from '../../mission-control-content-types';\nimport { NgControl } from '@angular/forms';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nconst isContentSupported = (content: Content): boolean => !!content?.type.equals(MissionControlContentTypes.overview);\n\n@UntilDestroy()\n@Component({\n selector: 'app-overview-widget',\n templateUrl: './overview-widget.component.html',\n styleUrls: ['./overview-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: OverviewWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: OverviewWidgetComponent.pluginId } as PluginComponentExposure,\n requirements: {\n optionalGlobalPrivileges: [MCPrivileges.editIncidentPriority, MCPrivileges.editIncidentDescription],\n },\n isContentSupported,\n})\nexport class OverviewWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('8DDBE03B-8162-4E14-88F9-4DE8DD8F271A');\n\n @ViewChild('descriptionInput', { read: NgControl }) descriptionInputModel?: NgControl;\n @ViewChild('externalIDInput', { read: NgControl }) externalIDInputModel?: NgControl;\n\n public readonly TextFlavor = TextFlavor;\n public readonly IconSize = IconSize;\n public readonly Icon = Icon;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly SpinnerSize = SpinnerSize;\n\n public maxTextLength = 20;\n public content: Content | null = null;\n public dataContext: unknown;\n public incident$!: Observable;\n public sourceIds$!: Observable;\n public locationAreaIds$!: Observable;\n public category$!: Observable;\n public isOwner$: BehaviorSubject = new BehaviorSubject(false);\n\n public recipientIds: IGuid[] = [];\n public incidentDescriptionInput = '';\n public incidentExternalIdInput = '';\n public incidentPriorityName = '';\n public incidentPriorityInput = { id: '', text: '' };\n public prioritiesList: Array = [];\n public hasEditIncidentDescriptionPrivilege = false;\n public hasEditIncidentExternalIdPrivilege = false;\n public hasEditIncidentPriorityPrivilege = false;\n public timezone$!: Observable;\n\n public get selectedEventTypes(): GenMeltedItem[] {\n return this._selectedEventTypes$.getValue();\n }\n\n public isExpanded = false;\n public editing = false;\n\n private _selectedEventTypes$ = new BehaviorSubject>([]);\n private incidentId: IGuid = toGuid('');\n private incidentPriorityId: IGuid = toGuid('');\n private _previousDescription: string | null = null;\n private _previousExternalId: string | null = null;\n private _previousPriorityId: GenMeltedItem | null = null;\n\n constructor(\n private _incidentSelectionService: IncidentSelectionService,\n private _incidentApiService: IncidentApiService,\n private _incidentTypeService: IncidentTypeService,\n private _translateService: TranslateService,\n private _incidentLocationService: IncidentLocationService,\n private _categoryApiService: CategoryApiService,\n private _incidentCommandService: IncidentCommandService,\n private _priorityService: PriorityService,\n private _mcUserService: McUserService,\n private _privilegeService: PrivilegeService,\n private _logger: LoggerService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n this.initializePrivileges();\n\n this.incident$ = this._incidentSelectionService.selectedIncident$.pipe(\n filter((incident): incident is MCIncident => incident instanceof MCIncident),\n tap((incident) => {\n this.incidentId = incident.id;\n this.incidentPriorityId = incident.priorityId;\n this._previousDescription = incident.description;\n this._previousExternalId = incident.externalId;\n const priorityText =\n this.prioritiesList.find((element) => element.id === incident.priorityId.toString())?.text ??\n (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string);\n this._previousPriorityId = { id: incident.priorityId.toString(), text: priorityText };\n }),\n shareReplay(1)\n );\n\n this.sourceIds$ = this.incident$.pipe(\n map((incident) => incident.sourceIds),\n filter((sourceIds) => !!sourceIds),\n tap((sourceIds) => this._incidentLocationService.prefetch(sourceIds!))\n );\n\n this.locationAreaIds$ = this.incident$.pipe(\n map((incident) => incident.locationAreaIds),\n filter((locationAreaIds) => !!locationAreaIds),\n tap((locationAreaIds) => this._incidentLocationService.prefetch(locationAreaIds!))\n );\n\n this.category$ = this.incident$.pipe(\n switchMap((incident) => this._incidentTypeService.getIncidentType(incident.typeId, incident.typeRevision)),\n switchMap((incidentType) => (incidentType.categoryId ? this._categoryApiService.getCategory(incidentType.categoryId) : of(null))),\n map((category) => (category as Category)?.name ?? this._translateService.instant('STE_LABEL_NONE'))\n );\n\n this.incident$\n .pipe(\n map((incident) => this._mcUserService.isCurrentUserOwner(incident.ownerId)),\n untilDestroyed(this)\n )\n .subscribe(this.isOwner$);\n\n this.initializePriorities();\n }\n\n public initializePrivileges(): void {\n this.hasEditIncidentDescriptionPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.editIncidentDescription);\n this.hasEditIncidentPriorityPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.editIncidentPriority);\n }\n\n public truncate = (input: string): string => {\n return input.length > this.maxTextLength ? `${input.substring(0, this.maxTextLength)}...` : input;\n };\n\n public hasChanged = (): boolean => this.hasDescriptionChanged() || this.hasExternalIdChanged() || this.hasPriorityChanged();\n\n public hasDescriptionChanged = (): boolean => this.incidentDescriptionInput !== this._previousDescription;\n\n public hasExternalIdChanged = (): boolean => this.incidentExternalIdInput !== this._previousExternalId;\n\n public hasPriorityChanged = (): boolean => this.incidentPriorityInput.id !== this._previousPriorityId?.id;\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext;\n }\n\n public toggleEditing(): void {\n if (!this.editing) {\n this.incident$.pipe(untilDestroyed(this)).subscribe((incident) => {\n this._previousDescription = incident.description ?? '';\n this.incidentDescriptionInput = this._previousDescription;\n\n this._previousExternalId = incident.externalId ?? '';\n this.incidentExternalIdInput = this._previousExternalId;\n\n const priorityText = this.prioritiesList.find((element) => element.id === incident.priorityId.toString())?.text;\n this._previousPriorityId = {\n id: incident.priorityId.toString(),\n text: this.truncate(priorityText ?? (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string)),\n };\n this.incidentPriorityInput = this._previousPriorityId;\n });\n }\n this.editing = !this.editing;\n }\n\n public async saveChangesClick(descriptionText: string, externalIdText: string, priorityText: GenMeltedItem | undefined): Promise {\n const commands: Promise[] = [];\n\n if (this.hasExternalIdChanged()) {\n const externalIdCommand = this._incidentCommandService.execute(new ChangeExternalIdCommand(this.incidentId, externalIdText)).toPromise();\n commands.push(externalIdCommand);\n }\n\n if (this.hasDescriptionChanged()) {\n const descriptionCommand = this._incidentCommandService.execute(new ChangeDescriptionCommand(this.incidentId, descriptionText)).toPromise();\n commands.push(descriptionCommand);\n }\n\n if (this.hasPriorityChanged()) {\n const priorityCommand = this._incidentCommandService\n .execute(new ChangePriorityCommand(this.incidentId, priorityText ? toGuid(priorityText.id) : toGuid('')))\n .toPromise();\n commands.push(priorityCommand);\n }\n\n if (commands.length > 0) {\n await Promise.allSettled(commands);\n }\n\n this.toggleEditing();\n }\n\n private initializePriorities() {\n this._priorityService\n .getPriorities$()\n .pipe(untilDestroyed(this))\n .subscribe((priorities) => {\n for (const priority of priorities) {\n this.prioritiesList.push({\n id: priority.id.toString(),\n text: this.truncate(priority.name),\n });\n }\n });\n\n this._priorityService\n .getPriority(this.incidentPriorityId)\n .pipe(untilDestroyed(this))\n .subscribe((priority) => (this.incidentPriorityName = priority ? priority.name : ''));\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { LoggerService } from \"@modules/shared/services/logger/logger.service\";\nimport { isArray } from \"lodash-es\";\n\nexport class McSetting {\n public static eventFilter = \"MC_EventFilter\";\n}\n\nexport class McSettingNameError extends Error {\n}\n\nexport class McSettingTypeError extends Error {\n}\n\n@Injectable()\nexport class McSettingService {\n\n constructor(private _logger: LoggerService) {}\n\n public getEventFilter(): Array {\n try {\n const eventFilter = this.get>(McSetting.eventFilter);\n if (!isArray(eventFilter))\n throw new McSettingTypeError();\n return eventFilter;\n }\n catch(error) {\n if (error instanceof McSettingNameError) return Array();\n else if (error instanceof McSettingTypeError) this._logger.traceError(`EventFilter setting has invalid type`);\n else throw error;\n }\n return Array();\n }\n\n public set(settingName: string, objectToStore: T): void {\n sessionStorage.setItem(settingName, JSON.stringify(objectToStore));\n }\n\n public doesSettingExist = (settingName: string): boolean => !!sessionStorage.getItem(settingName);\n\n private get(settingName: string): T {\n const setting: any = sessionStorage.getItem(settingName);\n if (setting) {\n return JSON.parse(setting) as T;\n }\n throw new McSettingNameError(`Setting name ${settingName} doesn't exist`);\n }\n}\n","import { AfterViewInit, Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { EntityBrowserCheckSelection } from '@modules/shared/entity-browser/entity-browser-selection';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserComponent } from '@modules/shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { TrackingService } from '../../../shared/services/tracking.service';\nimport { MCIncident } from '../../models/mc-incident';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\n\n@Component({\n selector: 'app-incident-recipient-modal',\n templateUrl: './incident-recipient-modal.component.html',\n styleUrls: ['incident-recipient-modal.component.scss'],\n})\nexport class IncidentRecipientModalComponent extends ConnectionAwareModalComponent implements OnInit, AfterViewInit {\n public static pluginId = SafeGuid.parse('cf52c8c9-c2cb-4445-886e-7b5e97d74bfa');\n\n @ViewChild('entityBrowser')\n public entityBrowser!: EntityBrowserComponent;\n\n @Input() public incident!: MCIncident;\n\n @Input() public recipientChange!: (recipients: IGuid[]) => void;\n\n public entityBrowserFilter!: EntityBrowserFilter;\n\n public seletedRecipients: IGuid[] = [];\n\n public recipientChangeAction!: () => Promise;\n\n constructor(protected authService: AuthService, injector: Injector, trackingService: TrackingService) {\n super(authService, injector, trackingService);\n this.recipientChangeAction = this.onRecipientChangePressed.bind(this);\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n const filter = new EntityBrowserFilter([EntityTypes.UserGroups, EntityTypes.Users]);\n if (this.incident.recipientIds.count() > 0) {\n filter.excludedEntities = SafeGuid.createSet(this.incident.recipientIds.toArray());\n }\n this.entityBrowserFilter = filter;\n }\n\n public onRecipientChange(recipientSelection: EntityBrowserCheckSelection): void {\n this.seletedRecipients = recipientSelection.ids;\n }\n\n private onRecipientChangePressed(): Promise {\n this.recipientChange(this.seletedRecipients);\n return Promise.resolve(true);\n }\n}\n","\n \n
    \n \n
    \n
    \n\n","export enum FilterOwnerMode {\n Any = 'Any',\n OwnedByMe = 'OwnedByMe',\n User = 'User',\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { McUserService } from '@modules/mission-control/services/mc-user.service';\nimport { FilterClient } from '@modules/shared/api/api';\nimport { EntityComboComponent } from '@modules/shared/components/entity-browser/entity-combo/entity-combo.component';\nimport { FilterBaseComponent } from '@modules/shared/components/filters/common-filters/filter-base.component';\nimport { SharedEntityBrowserRefreshTypes } from '@modules/shared/entity-browser/enumerations/shared-entity-browser-refresher-types';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { FilterCoordinatorService } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { FilterOwnerMode } from './filter-owner-mode';\n\n@Component({\n selector: 'app-filter-owner',\n templateUrl: './filter-owner.component.html',\n styleUrls: ['./filter-owner.component.scss'],\n})\nexport class FilterOwnerComponent extends FilterBaseComponent implements OnInit {\n //#region Public fields\n @ViewChild('entityCombo') public entityCombo!: EntityComboComponent;\n public readonly FilterOwnerMode = FilterOwnerMode;\n\n public mode = FilterOwnerMode.Any;\n public users = new Array();\n public userName = '';\n public ownerBrowserFilter = new EntityBrowserFilter(EntityTypes.Users);\n\n //#endregion\n\n constructor(\n trackingService: TrackingService,\n filterClient: FilterClient,\n filterCoordinatorService: FilterCoordinatorService,\n translateService: TranslateService,\n private _mcUserService: McUserService\n ) {\n super(trackingService, filterClient, filterCoordinatorService, translateService);\n //Needed to not show user groups because MC Incident Manager backend doesn't work with user groups\n this.ownerBrowserFilter.refresherType = SharedEntityBrowserRefreshTypes.FlatView;\n }\n\n //#region Public methods\n\n public ngOnInit(): void {\n super.ngOnInit();\n this.value = [];\n }\n\n public onFilterChange(newMode: string): void {\n this.mode = FilterOwnerMode[newMode as keyof typeof FilterOwnerMode];\n\n switch (this.mode) {\n case FilterOwnerMode.Any:\n this.users = [];\n break;\n case FilterOwnerMode.OwnedByMe: {\n const user = this._mcUserService.currentUser;\n if (!user) return;\n this.users = [user.userInfo.id];\n break;\n }\n }\n\n this.updateValue();\n }\n\n public async onUserChange(users: IGuid[]): Promise {\n this.users = users;\n if (users.length === 1) this.userName = (await this._mcUserService.getUser(this.users[0]).toPromise())?.name ?? '';\n this.updateValue();\n }\n\n public updateState(): void {\n let selection = this.state.selection;\n\n switch (this.mode) {\n case FilterOwnerMode.Any:\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n break;\n case FilterOwnerMode.OwnedByMe:\n selection = this.translateService.instant('STE_LABEL_INCIDENTOWNEDBYME') as string;\n break;\n case FilterOwnerMode.User:\n if (this.users.length === 0) {\n selection = this.translateService.instant('STE_LABEL_NO_FILTER_APPLIED') as string;\n } else if (this.users.length === 1) {\n selection = stringFormat(this.translateService.instant('STE_LABEL_INCIDENTOWNEDBY_X'), this.userName);\n } else {\n selection = this.translateService.instant('STE_LABEL_FORMAT_N_ITEMSSELECTED', { count: this.users.length }) as string;\n }\n break;\n }\n\n this.state = { ...this.state, selection };\n }\n\n public clearFilter(): void {\n this.entityCombo.clearSelection();\n this.mode = FilterOwnerMode.Any;\n this.users = [];\n this.updateValue();\n }\n\n public isDefaulted(): boolean {\n return this.value.length === 0;\n }\n\n public override isDirty(firstValue: IGuid[], secondValue: IGuid[]) {\n const arr1 = firstValue.map((guid: SafeGuid) => guid.toString());\n const arr2 = secondValue.map((guid: SafeGuid) => guid.toString());\n\n if (arr1.length !== arr2.length) {\n return true;\n }\n\n // compare each item\n return arr1.some((value, index) => arr2.indexOf(value) === -1);\n }\n\n public override getDefaultValue(): IGuid[] {\n return [];\n }\n\n //#endregion\n\n //#region Protected and Private methods\n\n private updateValue() {\n this.value = this.users;\n }\n\n //#endregion\n}\n","\n
      \n
    • \n \n {{ 'STE_LABEL_ANY_OWNER' | translate }}\n \n
    • \n
    • \n \n {{ 'STE_LABEL_INCIDENTOWNEDBYME' | translate }}\n \n
    • \n
    • \n \n {{ 'STE_LABEL_SPECIFICOWNER' | translate }}\n \n
      \n \n
      \n
    • \n
    \n
    \n","import { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\n\nexport const INCIDENT_LOCATION = [\n EntityTypes.Areas,\n EntityTypes.Alarms,\n EntityTypes.Cameras,\n EntityTypes.Doors,\n EntityTypes.LprUnits,\n EntityTypes.Patrollers,\n EntityTypes.TileLayouts,\n EntityTypes.TilePlugins,\n EntityTypes.Sequences,\n];\n","
    \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n
    \n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CalendarFlavor, CalendarTimeFrame } from '@genetec/gelato-angular';\nimport { PopupPosition } from '@genetec/gelato';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { List } from 'immutable';\nimport moment from 'moment';\nimport { unitOfTime } from 'moment';\nimport { FilterCoordinatorService } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { FilterDateModel } from '@modules/shared/components/filters/common-filters/filter-date/filter-date.model';\nimport { EntityFilterModel } from '@modules/shared/components/filters/common-filters/filter-entity/filter-entity.model';\nimport { IncidentType } from '../../models/incident-type';\nimport { Priority } from '../../models/priority';\nimport { State } from '../../models/state';\nimport { IncidentTypeService } from '../../services/incident-type.service';\nimport { PriorityService } from '../../services/priority/priority.service';\nimport { StateService } from '../../services/state/state.service';\nimport { INCIDENT_LOCATION } from '../../entity-location';\nimport { IncidentFilter } from '../../models/incident-filter';\nimport { toGuid } from '../../utils/guid-utils';\nimport { ListItem } from '@modules/shared/interfaces/list-item';\nimport { SharedEntityBrowserRefreshTypes } from '@modules/shared/entity-browser/enumerations/shared-entity-browser-refresher-types';\n\n@Component({\n selector: 'app-incident-filter',\n templateUrl: './incident-filter.component.html',\n})\nexport class IncidentFilterComponent extends TrackedComponent implements OnInit {\n @Input() public incidentFilter = IncidentFilter.empty;\n @Output() public incidentFilterChange = new EventEmitter();\n\n public priorityFilterItem$!: Observable;\n public stateFilterItem$!: Observable;\n public typeAvailableFilterItem$!: Observable;\n public typeFilteredFilterItem$!: Observable;\n\n public readonly PopupPosition = PopupPosition;\n\n // MC API doesn't work with location ID that are areas, so display flat Entity Browser until it is supported\n public readonly locationEntityTypes = INCIDENT_LOCATION;\n\n public readonly SharedEntityBrowserRefreshTypes = SharedEntityBrowserRefreshTypes;\n\n constructor(\n trackingService: TrackingService,\n private _priorityService: PriorityService,\n private _stateService: StateService,\n private _incidentTypeService: IncidentTypeService,\n private _filterCoordinatorService: FilterCoordinatorService\n ) {\n super(trackingService);\n }\n\n public get CalendarTimeFrame(): typeof CalendarTimeFrame {\n return CalendarTimeFrame;\n }\n\n public get CalendarFlavor(): typeof CalendarFlavor {\n return CalendarFlavor;\n }\n\n ngOnInit() {\n const convertToFilterItem = (i: State | Priority | IncidentType) => ({ id: i.id.toString(), text: i.name, isChecked: false });\n\n this.priorityFilterItem$ = this._priorityService.getPriorities$().pipe(map((priorities) => priorities.map(convertToFilterItem)));\n\n this.stateFilterItem$ = this._stateService.getActiveStates$().pipe(map((states) => states.map(convertToFilterItem)));\n\n this.typeAvailableFilterItem$ = this._incidentTypeService.getIncidentTypes().pipe(map((types) => types.map(convertToFilterItem)));\n this.typeFilteredFilterItem$ = this.typeAvailableFilterItem$;\n }\n\n public onSearchTypeChange(search: string): void {\n if (!search || search.trim().length === 0) {\n this.typeFilteredFilterItem$ = this.typeAvailableFilterItem$;\n return;\n }\n\n this.typeFilteredFilterItem$ = this.typeAvailableFilterItem$.pipe(map((types) => types.filter((type) => type.text.toLowerCase().includes(search.toLowerCase()))));\n }\n\n public typeFilterChange(types: ListItem[] | null): void {\n this.applyCheckedListItemFilters('incidentTypeIds', types);\n }\n\n public priorityFilterChange(priorities: ListItem[] | null): void {\n this.applyCheckedListItemFilters('priorityIds', priorities);\n }\n\n public stateFilterChange(states: ListItem[] | null): void {\n this.applyCheckedListItemFilters('stateIds', states);\n }\n\n public onDateChange(dateFilter: FilterDateModel | null): void {\n let start: string | undefined;\n let end: string | undefined;\n\n if (dateFilter) {\n if (dateFilter.isAbsolute) {\n start = dateFilter.timeStart;\n end = dateFilter.timeEnd;\n } else if (dateFilter.quanta) {\n if (dateFilter.quanta > 0) {\n start = moment.utc().toISOString();\n end = moment\n .utc()\n .add(dateFilter.quanta, dateFilter.timeUnit as unitOfTime.DurationConstructor | undefined)\n .toISOString();\n } else {\n start = moment\n .utc()\n .subtract(-dateFilter.quanta, dateFilter.timeUnit as unitOfTime.DurationConstructor | undefined)\n .toISOString();\n end = undefined;\n }\n }\n }\n this.incidentFilter = this.incidentFilter.with({ dateTimeFrom: start ?? null, dateTimeTo: end ?? null });\n this.emitFilter();\n }\n\n public onEntityChange(entityFilter: EntityFilterModel | null): void {\n this.applyIdListFilter('locationIds', entityFilter?.includedEntities);\n }\n\n public onOwnerChange(owners: IGuid[] | null): void {\n this.applyIdListFilter('ownerIds', owners);\n }\n\n public clearFilters(): void {\n this._filterCoordinatorService.resetAllFiltersToDefault();\n }\n\n public areFiltersCleared(): boolean {\n return this._filterCoordinatorService.allDefaulted;\n }\n\n public emitFilter = (): void => this.incidentFilterChange.emit(this.incidentFilter);\n\n public onReloadPriorities = (): void => this._priorityService.refresh();\n\n public onReloadStates = (): void => this._stateService.refresh();\n\n public onReloadTypes = (): void => this._incidentTypeService.refresh();\n\n private applyCheckedListItemFilters(filterKey: keyof Parameters[0], filterItems: ListItem[] | null | undefined) {\n this.applyIdListFilter(filterKey, filterItems ? filterItems.filter((item) => item.isChecked).map((item) => toGuid(item.id)) : []);\n }\n\n private applyIdListFilter(filterKey: keyof Parameters[0], guids: IGuid[] | null | undefined) {\n this.incidentFilter = this.incidentFilter.with({ [filterKey]: List(guids ?? []) });\n this.emitFilter();\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\nexport class MCFeature {\n public static missionControlfeature = SafeGuid.parse('9F1ADE98-4E68-471B-91E8-AD2A814B64F9');\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ModalGuids {\n export const triggerIncidentModalId: IGuid = SafeGuid.parse('687708EF-006F-4A63-AB21-FD15FDDE5B3D');\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ChangeState;\n\nexport class ChangeStateCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, stateId: IGuid) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n StateId: stateId.toString(),\n })\n );\n }\n\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_CANNOT_CHANGE_STATE';\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ForwardIncident;\nexport class ForwardCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, recipients: IGuid[]) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n Recipients: recipients.map((x) => x.toString()),\n })\n );\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.ReleaseOwnership;\nexport class ReleaseOwnershipCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n })\n );\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.TakeOwnership;\nexport class TakeOwnershipCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n })\n );\n }\n}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.TransferIncident;\nexport class TransfertCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentId: IGuid, recipients: IGuid[]) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n Recipients: recipients.map((x) => x.toString()),\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { isNullOrUndefined } from '@genetec/web-maps';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { forkJoin, from, Observable, Subject } from 'rxjs';\nimport { concatAll, filter, first, map, pairwise, startWith, switchMap, takeUntil, tap, toArray } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { IncidentRecipientModalComponent } from '../../components/incident-recipient/incident-recipient-modal.component';\nimport { ChangeStateCommand } from '../../models/commands/change-state-command';\nimport { ForwardCommand } from '../../models/commands/forward-command';\nimport { ReleaseOwnershipCommand } from '../../models/commands/release-ownership-command';\nimport { MCIncident } from '../../models/mc-incident';\nimport { StateGuids } from '../../state-guids';\nimport { toGuid } from '../../utils/guid-utils';\nimport { IncidentApiService } from '../incident/incident-api.service';\nimport { IncidentCommandService } from '../incident/incident-command.service';\nimport { PriorityService } from '../priority/priority.service';\nimport { PrivilegeService } from '../../../shared/privilege/privilege.service';\nimport { IncidentSelectionService } from '../incident/incident-selection.service';\nimport { MCPrivileges } from './../../mc-privileges';\nimport { ChangePriorityCommand } from './../../models/commands/change-priority-command';\nimport { TakeOwnershipCommand } from './../../models/commands/take-ownership-command';\nimport { McUserService } from './../mc-user.service';\nimport { StateService } from './../state/state.service';\nimport { RecipientsMode } from './../../models/events/incident-event';\nimport { TransfertCommand } from './../../models/commands/transfer-command';\n\n@Injectable()\nexport class IncidentActionService {\n private closeContextMenu$: Subject = new Subject();\n constructor(\n private _incidentCommandService: IncidentCommandService,\n private _userService: McUserService,\n private _priorityService: PriorityService,\n private _privilegeService: PrivilegeService,\n private _translateService: TranslateService,\n private _incidentSelectionService: IncidentSelectionService,\n private _incidentApiService: IncidentApiService,\n private _stateService: StateService,\n private _modalService: GenModalService,\n private _loggerService: LoggerService\n ) {}\n\n public getActions(incident: MCIncident): Observable {\n const createItem = async (i: MCIncident, createHandler: (i: MCIncident) => Promise) => {\n try {\n const item = await createHandler(i);\n if (!item) return;\n return item;\n } catch (error) {\n this._loggerService.traceError(`Exception occured while creating incident action: ${error as string}`);\n }\n };\n\n return from(this._incidentSelectionService.selectIncident(incident)).pipe(\n switchMap(() => this._incidentSelectionService.selectedIncident$),\n startWith(null),\n pairwise(),\n tap(([previous, current]) => {\n if (current === null || (previous !== null && !previous.id.equals(current.id))) {\n this.closeContextMenu();\n }\n }),\n map(([_, current]) => current),\n takeUntil(this.closeContextMenu$),\n filter((i): i is MCIncident => i instanceof MCIncident),\n switchMap((i) => {\n return forkJoin([\n from(createItem(i, this.createChangePriorityItem.bind(this))),\n from(createItem(i, this.createTakeOwnershipItem.bind(this))),\n from(createItem(i, this.createReleaseOwnershipItem.bind(this))),\n from(createItem(i, this.createChangeStateItem.bind(this))),\n from(createItem(i, this.createForwardItem.bind(this))),\n from(createItem(i, this.createTransferItem.bind(this))),\n ]).pipe(\n concatAll(),\n filter((x): x is ContextMenuItem => x !== undefined),\n toArray()\n );\n })\n );\n }\n\n private closeContextMenu() {\n this.closeContextMenu$.next();\n }\n\n private async createChangePriorityItem(incident: MCIncident): Promise {\n if (this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.editIncidentPriority) && this._userService.isCurrentUserOwner(incident.ownerId)) {\n const priorities = await this._priorityService.getPriorities$().pipe(first()).toPromise();\n\n const priorityItems = priorities\n .filter((p) => !p.id.equals(incident.priorityId))\n .map((p) => {\n return {\n text: p.name,\n id: p.id.toString(),\n actionItem: {\n execute: async (menuItem: ContextMenuItem) => {\n await this._incidentCommandService.execute(new ChangePriorityCommand(incident.id, toGuid(menuItem.id!))).toPromise();\n this.closeContextMenu();\n },\n },\n };\n });\n return {\n id: this._translateService.instant('STE_LABEL_CHANGE_PRIORITY') as string,\n text: this._translateService.instant('STE_LABEL_CHANGE_PRIORITY') as string,\n children: priorityItems,\n };\n }\n return null;\n }\n\n private createTakeOwnershipItem(incident: MCIncident): Promise {\n if (!this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.takeOwnership) || this._userService.isCurrentUserOwner(incident.ownerId)) return Promise.resolve(null);\n const isIncidentAlreadyOwned = !isNullOrUndefined(incident.ownerId);\n let item: ContextMenuItem | null = null;\n if (!isIncidentAlreadyOwned) {\n const commandHandler = async () => {\n await this._incidentCommandService.execute(new TakeOwnershipCommand(incident.id)).toPromise();\n this.closeContextMenu();\n };\n item = {\n id: this._translateService.instant('STE_LABEL_TAKEOWNERSHIP') as string,\n text: this._translateService.instant('STE_LABEL_TAKEOWNERSHIP') as string,\n actionItem: {\n execute: commandHandler,\n },\n };\n } else if (this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.overrideOwnership)) {\n const commandHandler = async () => {\n await this._incidentCommandService.execute(new TakeOwnershipCommand(incident.id)).toPromise();\n this.closeContextMenu();\n };\n item = {\n id: this._translateService.instant('STE_LABEL_TAKEOWNERSHIP_FROMUSER') as string,\n text: this._translateService.instant('STE_LABEL_TAKEOWNERSHIP_FROMUSER') as string,\n actionItem: {\n execute: commandHandler,\n },\n };\n }\n return Promise.resolve(item);\n }\n\n private createReleaseOwnershipItem(incident: MCIncident): Promise {\n if (!this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.takeOwnership)) return Promise.resolve(null);\n const isIncidentAlreadyOwned = !isNullOrUndefined(incident.ownerId);\n const isIncidentOwnedByMe = this._userService.isCurrentUserOwner(incident.ownerId);\n let item: ContextMenuItem | null = null;\n if (isIncidentOwnedByMe) {\n const commandHandler = async () => {\n await this._incidentCommandService.execute(new ReleaseOwnershipCommand(incident.id)).toPromise();\n this.closeContextMenu();\n };\n item = {\n id: this._translateService.instant('STE_LABEL_RELEASEOWNERSHIP') as string,\n text: this._translateService.instant('STE_LABEL_RELEASEOWNERSHIP') as string,\n actionItem: {\n execute: commandHandler,\n },\n };\n } else if (isIncidentAlreadyOwned && this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.overrideOwnership)) {\n const commandHandler = async () => {\n await this._incidentCommandService.execute(new ReleaseOwnershipCommand(incident.id)).toPromise();\n this.closeContextMenu();\n };\n item = {\n id: this._translateService.instant('STE_LABEL_RELEASEOWNERSHIP_FROMUSER') as string,\n text: this._translateService.instant('STE_LABEL_RELEASEOWNERSHIP_FROMUSER') as string,\n actionItem: {\n execute: commandHandler,\n },\n };\n }\n return Promise.resolve(item);\n }\n\n private async createChangeStateItem(incident: MCIncident): Promise {\n const isIncidentAlreadyOwned = !(incident.ownerId?.isEmpty() ?? true);\n const isIncidentOwnedByMe = this._userService.isCurrentUserOwner(incident.ownerId);\n if (!isIncidentOwnedByMe && isIncidentAlreadyOwned) return null;\n const stateTransitions = await this._incidentApiService.getPossibleStateTransitions(incident.id).toPromise();\n if (!stateTransitions) return Promise.resolve(null);\n const states = this._stateService.getStates().filter((s) => {\n const isEnabled = stateTransitions?.results.find((r) => toGuid(r.id).equals(s.id))?.enabled ?? false;\n\n // Temporary hide hold state for now, waiting for Gelato Time picker component\n return !s.id.equals(incident.stateId) && !s.id.equals(StateGuids.PARKED) && isEnabled;\n });\n\n const stateItems = states.map((s) => {\n /*\n if (s.Id.equals(StateGuids.PARKED)) {\n const executeOnHold = async (delayInSeconds: number) => {\n await this._incidentCommandService.execute(new PlaceOnHoldCommand(incident.Id, delayInSeconds)).toPromise();\n this.closeContextMenu();\n };\n const commandHandler = async () => this._modalService.open(OnHoldModalComponent, { delayInSecondsChange: executeOnHold.bind(this) });\n return new MenuItem({ text: s.Name, id: s.Id.toString(), execute: commandHandler });\n }\n */\n return {\n text: s.name,\n id: s.id.toString(),\n actionItem: {\n execute: async (p: ContextMenuItem) => {\n await this._incidentCommandService.execute(new ChangeStateCommand(incident.id, toGuid(p.id!))).toPromise();\n this.closeContextMenu();\n },\n },\n };\n });\n return {\n id: this._translateService.instant('STE_LABEL_CHANGE_STATE') as string,\n text: this._translateService.instant('STE_LABEL_CHANGE_STATE') as string,\n children: stateItems,\n };\n }\n\n private createForwardItem(incident: MCIncident): Promise {\n if (!this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.forwardIncident) || incident.recipientsMode === RecipientsMode.Everyone) return Promise.resolve(null);\n const executeForward = async (recipients: IGuid[]) => {\n await this._incidentCommandService.execute(new ForwardCommand(incident.id, recipients)).toPromise();\n this.closeContextMenu();\n };\n\n const commandHandler = () =>\n this._modalService.open(IncidentRecipientModalComponent, {\n incident,\n recipientChange: executeForward.bind(this),\n });\n return Promise.resolve({\n id: this._translateService.instant('STE_LABEL_FORWARD') as string,\n text: this._translateService.instant('STE_LABEL_FORWARD') as string,\n actionItem: {\n execute: commandHandler,\n },\n });\n }\n\n private createTransferItem(incident: MCIncident): Promise {\n if (!this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.transferIncident) || incident.recipientsMode === RecipientsMode.Everyone) return Promise.resolve(null);\n const executeTransfer = async (recipients: IGuid[]) => {\n await this._incidentCommandService.execute(new TransfertCommand(incident.id, recipients)).toPromise();\n this.closeContextMenu();\n };\n\n const commandHandler = () =>\n this._modalService.open(IncidentRecipientModalComponent, {\n incident,\n recipientChange: executeTransfer.bind(this),\n });\n return Promise.resolve({\n id: this._translateService.instant('STE_LABEL_TRANSFER') as string,\n text: this._translateService.instant('STE_LABEL_TRANSFER') as string,\n actionItem: {\n execute: commandHandler,\n },\n });\n }\n}\n","import { SafeGuid } from 'safeguid';\n\nexport class MissionControlContextIds{\n public static incidentList = SafeGuid.parse('ec8a6402-2ca4-4ca5-ba46-0c91227ac8f4')\n}\n","import { Injectable } from '@angular/core';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, map, switchMap, tap, take } from 'rxjs/operators';\nimport { StateMapService } from '@modules/maps/services/map/state-map-service';\nimport { MissionControlContextIds } from '@modules/mission-control/mission-control-context-ids';\nimport { MissionControlContentTypes } from '@modules/mission-control/mission-control-content-types';\nimport { ContentProviderService } from '@shared/services/content/content-provider.service';\nimport { MCIncident } from '../../models/mc-incident';\nimport { IncidentSelectionService } from '../incident/incident-selection.service';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { AreaEntity } from 'RestClient/Client/Model/AreaEntity';\nimport { IAreaEntity } from 'RestClient/Client/Interface/IAreaEntity';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Injectable()\nexport class IncidentMapSelectorService {\n public readonly currentDisplayedIncident$!: Observable;\n\n private readonly _scClient: WebAppClient;\n\n private _currentDisplayedIncident$: Subject = new Subject();\n private _onIncidentClose: Subscription | null = null;\n private _activeContentId: IGuid | null = null;\n\n constructor(\n securityCenterProvider: SecurityCenterClientService,\n private _incidentSelectionService: IncidentSelectionService,\n private _contentProviderService: ContentProviderService,\n private _mapService: StateMapService,\n private _logger: LoggerService\n ) {\n this._scClient = securityCenterProvider.scClient;\n this.currentDisplayedIncident$ = this._currentDisplayedIncident$.asObservable();\n this._onIncidentClose = this._incidentSelectionService.selectedIncident$.pipe(untilDestroyed(this)).subscribe((incident) => {\n if (!incident && this._activeContentId) this.hideWidgets();\n });\n }\n\n public ngOnDestroy(): void {\n this.hideWidgets();\n this._onIncidentClose?.unsubscribe();\n }\n\n public setMapSidePaneSelection(incident: MCIncident): void {\n this.getAssociatedMap(incident)\n .pipe(\n take(1),\n tap(async (mapId) => {\n if (mapId) {\n this._mapService.select(incident.id.toString(), mapId);\n }\n\n const content = await this._contentProviderService.getContentAsync(incident.id.toString(), MissionControlContextIds.incidentList);\n if (!content || !content?.mainContent.type?.equals(MissionControlContentTypes.incident)) {\n this._logger.traceError('No content found');\n return;\n }\n this._activeContentId = content.id;\n this._mapService.updateContextualData(content);\n\n this._currentDisplayedIncident$.next(incident);\n }),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n private hideWidgets(): void {\n if (this._activeContentId) {\n this._mapService.clearContextualData(this._activeContentId);\n this._activeContentId = null;\n this._currentDisplayedIncident$.next(null);\n }\n }\n\n private getAssociatedMap(incident: MCIncident): Observable {\n const location = incident.location;\n\n if (!location || !location.entityId) return of(null);\n\n const locationId = toGuid(location.entityId);\n\n if (locationId.equals(SafeGuid.EMPTY)) return of(null);\n\n return from(this._scClient.getEntityAsync(Entity, locationId)).pipe(\n switchMap((entity) => {\n if (!entity) return of(null);\n\n // Directly return id if the entity is already a map\n if (entity?.entityType === EntityTypes.Areas) {\n return from(this._scClient.getEntityAsync(AreaEntity, locationId)).pipe(map((area) => area?.link ?? null));\n }\n\n //Take the first map where we can find this attached entity\n return from(entity.getLinkedMapsAsync()).pipe(map((maps) => maps?.first().id ?? null));\n }),\n catchError((err) => {\n this._logger.traceError(`Unable to get map ${err as string}`);\n return of(null);\n })\n );\n }\n}\n","export const toRecord = (list: Array, keySelector: (object: V) => K, valueSelector: (object: V) => T): Record => {\n const record: Record = {} as Record;\n for (const entry of list) {\n record[keySelector(entry)] = valueSelector(entry);\n }\n return record;\n};\n","import { IncidentLocation } from '../incident-location';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.TriggerIncident;\nexport class TriggerIncidentCommand extends MCCommandBase {\n public type = commandType;\n\n constructor(incidentTypeId: string, location: IncidentLocation | null, externalId: string | null, comment: string | null) {\n super(\n '/v2/Incidents',\n JSON.stringify({\n Type: commandType,\n IncidentTypeId: incidentTypeId,\n Location: location\n ? {\n EntityId: location.entityId?.toString(),\n Latitude: location.latitude,\n Longitude: location.longitude,\n }\n : null,\n ExternalId: externalId,\n Comment: comment,\n })\n );\n }\n\n public successMessage(statusCode?: number): string {\n return 'STE_MESSAGE_INFO_INCIDENT_SUCCESSFULLYCREATED';\n }\n public errorMessage(statusCode?: number): string {\n return 'STE_MESSAGE_ERROR_INCIDENT_CREATIONFAILED';\n }\n}\n","\n \n \n \n \n \n
    \n 0; else noIncidentError\"\n id=\"incidentTypeTree\"\n [selectionType]=\"SelectionTypes.Single\"\n [density]=\"TreeDensity.Compact\"\n >\n \n \n \n
    \n {{ 'STE_MESSAGE_NO_INCIDENTS_FOUND' | translate }}\n
    \n
    \n
    \n
    \n \n \n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n\n\n
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n\n\n \n \n \n \n\n
    \n \n \n {{ item.text }}\n
    \n
    \n
    \n","import { Component, Injector, OnInit, ViewChild } from '@angular/core';\nimport { MeltedIcon, Severity } from '@genetec/gelato-angular';\nimport { SelectionType, TreeDensity, Icon, TextFlavor } from '@genetec/gelato';\nimport { Category } from '@modules/mission-control/models/category';\nimport { CategoryApiService } from '@modules/mission-control/services/category/category-api.service';\nimport { IconService } from '@modules/mission-control/services/icons/icon.service';\nimport { toRecord } from '@modules/mission-control/utils/list-utils';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserComponent } from '@shared/components/entity-browser/entity-browser/entity-browser.component';\nimport { Coordinate, GeoCoordinate } from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { cloneDeep } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, forkJoin, Observable } from 'rxjs';\nimport { defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { INCIDENT_LOCATION } from '../../entity-location';\nimport { TriggerIncidentCommand } from '../../models/commands/trigger-incident-command';\nimport { IncidentLocation } from '../../models/incident-location';\nimport { IncidentType } from '../../models/incident-type';\nimport { IncidentTypeService } from '../../services/incident-type.service';\nimport { IncidentCommandService } from '../../services/incident/incident-command.service';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\n\n@Component({\n selector: 'app-trigger-incident-modal',\n templateUrl: './trigger-incident-modal.component.html',\n styleUrls: ['./trigger-incident-modal.component.scss'],\n})\nexport class TriggerIncidentModalComponent extends ConnectionAwareModalComponent implements OnInit {\n public static pluginId = SafeGuid.parse('96F59E47-1AAF-4868-B9F7-945F98C585C2');\n\n @ViewChild('incidentTriggerEntityBrowser') public entityBrowser!: EntityBrowserComponent;\n\n public incidentTypeTreeItems$!: Observable;\n public selectedLocation: IGuid = SafeGuid.EMPTY;\n public selectedIncidentTypeId: string | null = null;\n public selectedCoordinates: Coordinate | null = null;\n public searchText!: string;\n public dataContext: any;\n public comment = '';\n public canUserTrigger = false;\n public triggerAction: () => Promise;\n\n public readonly incidentTypeModalBrowserFilter = new EntityBrowserFilter(INCIDENT_LOCATION);\n public readonly SelectionTypes = SelectionType;\n public readonly Severity = Severity;\n public readonly TreeDensity = TreeDensity;\n public readonly TextFlavor = TextFlavor;\n\n private readonly _nameFilter$: BehaviorSubject = new BehaviorSubject(null);\n\n private _skipCoordinateReset = false;\n private availableTypes: string[] = [];\n\n constructor(\n protected authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private incidentTypeService: IncidentTypeService,\n private incidentCommandService: IncidentCommandService,\n private incidentCategoryApiService: CategoryApiService,\n private iconService: IconService\n ) {\n super(authService, injector, trackingService);\n this.triggerAction = this.onTriggerClick.bind(this);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n // TODO: Fix image (looks like garbage)\n // Incident categories (folder) icons retrieval not implemented yet\n const getIcon = (iconId: IGuid) => this.iconService.getIcon(iconId).pipe(map((icon) => ({ iconId, icon })));\n\n const categories$ = this.incidentCategoryApiService.getCategories();\n const incidentTypes$ = this.incidentTypeService.getIncidentTypes().pipe(\n tap((types) => (this.availableTypes = types.map((t) => t.id.toString()))),\n map((incidentTypes) => incidentTypes.filter((x) => x.isManuallyTriggerable))\n );\n const elements$ = combineLatest([categories$, incidentTypes$]).pipe(map(([categories, incidentTypes]) => [...categories, ...incidentTypes]));\n\n const elementImages$ = elements$.pipe(\n map((elements) => [...elements.map((e) => getIcon(e.iconId))]),\n switchMap((requests) => forkJoin([...requests]).pipe(defaultIfEmpty([] as { iconId: IGuid; icon: string }[]))),\n map((pairs) =>\n toRecord(\n pairs,\n (p) => p.iconId.toString(),\n (v) => v.icon\n )\n )\n );\n\n const incidentTypeTreeItems$ = combineLatest([elements$, elementImages$]).pipe(map(([elements, elementImages]) => this.buildTreeItems(elements, elementImages)));\n this.incidentTypeTreeItems$ = combineLatest([incidentTypeTreeItems$, this._nameFilter$]).pipe(\n map(([treeItems, filter]) => (filter ? this.filterItems(filter, cloneDeep(treeItems)) : treeItems))\n );\n }\n\n public onSearchInputChange(input: string): void {\n this.canUserTrigger = false;\n this.selectedIncidentTypeId = null;\n\n if (!input || input.trim().length === 0) {\n this._nameFilter$.next(null);\n return;\n }\n\n this._nameFilter$.next(input);\n }\n\n public async onTriggerClick(): Promise {\n if (!this.selectedIncidentTypeId) {\n return true;\n }\n let location: IncidentLocation | null = null;\n if (this.selectedLocation) {\n location = new IncidentLocation(this.selectedLocation, null, null);\n }\n if (this.selectedCoordinates) {\n location = new IncidentLocation(this.selectedLocation, this.selectedCoordinates.x, this.selectedCoordinates.y);\n }\n\n await this.incidentCommandService.execute(new TriggerIncidentCommand(this.selectedIncidentTypeId, location, null, this.comment)).toPromise();\n return true;\n }\n\n public initializeLocation(location: IGuid, coordinates: GeoCoordinate | Coordinate | null = null, isGeoLocalised: boolean): void {\n if (coordinates) {\n if (isGeoLocalised) {\n const geoCoordinates = coordinates as GeoCoordinate;\n this.selectedCoordinates = { x: geoCoordinates.latitude, y: geoCoordinates.longitude } as Coordinate;\n } else {\n this.selectedCoordinates = coordinates as Coordinate;\n }\n this._skipCoordinateReset = true;\n }\n this.selectedLocation = location;\n }\n\n public onSelectedIncidentTypeChange(newValue: TreeItem | null, event: Event): void {\n if (newValue?.id) {\n const isNewValudIncluded = this.availableTypes.includes(newValue.id ?? '');\n this.canUserTrigger = !!newValue && isNewValudIncluded;\n this.selectedIncidentTypeId = newValue?.id ?? null;\n event.stopImmediatePropagation();\n }\n }\n\n public onLocationChanged(location: IGuid): void {\n this.selectedLocation = location;\n if (!this._skipCoordinateReset) this.selectedCoordinates = null;\n this._skipCoordinateReset = false;\n }\n\n private buildTreeItems(elements: (IncidentType | Category)[], elementImages: Record): TreeItem[] {\n const getParentId = (element: Category | IncidentType): string | null => {\n if (element instanceof Category && !!element.parentId) return element.parentId.toString();\n\n if (element instanceof IncidentType && !!element.categoryId) return element.categoryId.toString();\n\n return null;\n };\n\n const createElement = (\n element: Category | IncidentType,\n elementsRecord: Record,\n displayItems: Map,\n parentId: string | null\n ): Map => {\n const current: TreeItem = {\n id: element.id.toString(),\n text: element.name,\n icon: element instanceof IncidentType ? MeltedIcon.Incident : MeltedIcon.Folder,\n isChecked: false,\n };\n if (element instanceof IncidentType) {\n const img = elementImages[element.iconId.toString()];\n current.image = img !== Icon.Incident ? elementImages[element.iconId.toString()] : undefined;\n } else {\n current.icon = MeltedIcon.Folder;\n }\n\n if (parentId) {\n const parent: Category | IncidentType = elementsRecord[parentId];\n if (parent) {\n let parentItem = displayItems.get(parentId);\n if (!parentItem) {\n createElement(parent, elementsRecord, displayItems, getParentId(parent));\n parentItem = displayItems.get(parentId);\n }\n if (!parentItem!.children) parentItem!.children = [];\n parentItem!.children.push(current);\n current.parent = parentItem;\n }\n }\n\n displayItems.set(element.id.toString(), current);\n\n return displayItems;\n };\n\n let items: Map = new Map();\n\n for (const element of elements) {\n items = createElement(\n element,\n toRecord(\n elements,\n (e) => e.id.toString(),\n (e) => e\n ),\n items,\n getParentId(element)\n );\n }\n\n const array = Array.from(items, ([key, value]) => value).filter((i) => !i.parent);\n return array;\n }\n\n private filterItems(filter: string, treeItems: TreeItem[]): TreeItem[] {\n const hasChildren = (item: TreeItem): boolean => !!item.children && item.children.length > 0;\n\n const shouldIncludeItem = (item: TreeItem): boolean => {\n if (item?.text) {\n return !filter || item.text.toLowerCase().includes(filter.toLowerCase());\n } else {\n return false;\n }\n };\n\n const filterItems = (displayItems: TreeItem[]): TreeItem[] => {\n const result: TreeItem[] = [];\n for (const displayItem of displayItems) {\n if (shouldIncludeItem(displayItem) && !hasChildren(displayItem)) {\n result.push(displayItem);\n } else if (shouldIncludeItem(displayItem) && hasChildren(displayItem)) {\n displayItem.isExpanded = filterItems(displayItem.children!).length > 0;\n result.push(displayItem);\n } else if (!shouldIncludeItem(displayItem) && hasChildren(displayItem)) {\n displayItem.children = filterItems(displayItem.children!);\n displayItem.isExpanded = true;\n if (displayItem.children.length > 0) result.push(displayItem);\n }\n }\n\n return result;\n };\n\n return filterItems(treeItems);\n }\n}\n","import { isNullOrUndefined } from '@genetec/web-maps';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { IGuid } from 'safeguid';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { Icon } from '@genetec/gelato';\nimport { IconsService } from '@shared/services/icons.service';\nimport { IncidentLocationService } from '../services/incident-location/incident-location.service';\nimport { toGuid } from '../utils/guid-utils';\n\n@Pipe({ name: 'locationIconPipe' })\nexport class LocationIconPipe implements PipeTransform {\n constructor(private iconsService: IconsService, private incidentLocationService: IncidentLocationService) {}\n\n public transform(id: IGuid | string | null | undefined): Observable {\n if (isNullOrUndefined(id)) return EMPTY;\n return this.incidentLocationService.getLocation(toGuid(id)).pipe(\n switchMap((entity) => (entity ? of(this.iconsService.getEntityIcon(entity)) : EMPTY)),\n catchError((_) => EMPTY)\n );\n }\n}\n","\n
    \n
    \n
    \n \n
    \n
    \n {{ params.data.name }}\n
    \n
    \n
    \n\n {{ params.data.ownerId | userName | async }}\n\n\n\n {{ params.data.triggerTimeUtc | dateFormatWithTimezone: 'MM/DD/yyyy h:mm A' | async }}\n\n\n\n
    \n
    \n \n
    \n
    \n {{ params.data.location?.entityId | incidentLocationName | async }}\n
    \n
    \n
    \n\n\n
    \n {{ label }}\n \n
    \n
    \n\n\n {{ params.data.priorityId | priorityName | async }}\n\n\n\n {{ params.data.stateId | stateName | async }}\n\n\n\n \n
    \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n \n \n {{ 'STE_TITLE_TRIGGERANINCIDENT' | translate }}\n \n
    \n
    \n
    \n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n \n \n \n \n \n \n \n
      \n
    • \n
      \n \n \n
      \n
      \n
      \n \n \n \n \n {{ item.name }} (#{{ item.displayId }})\n \n
      \n
      \n {{ item.triggerTimeUtc | date: 'MM-dd h:mm aa' }}\n
      \n
      \n
      \n \n
      \n
      \n
      \n \n \n \n \n {{ item.location.entityId | incidentLocationName | async }}\n \n
      \n
      \n
      \n \n {{ item.priorityId | priorityName | async }}\n \n
      \n
      \n
      \n \n
      \n
      \n
      \n \n \n \n \n {{ item.ownerId | userName | async }}\n \n
      \n
      \n
      \n \n {{ item.stateId | stateName | async }}\n \n
      \n
      \n
      \n
      \n
      \n
    • \n
    \n
    \n \n \n \n
    \n
    \n \n\n \n
    \n \n {{ (incidentServiceState.error!.message | translate) + (incidentServiceState.details ? ' - ' + (incidentServiceState.details | translate) : '') }}\n \n
    \n
    \n\n \n
    \n \n {{ (incidentServiceState.error!.message | translate) + (incidentServiceState.details ? ' - ' + (incidentServiceState.details | translate) : '') }}\n \n
    \n
    \n\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { AfterViewChecked, AfterViewInit, Component, ElementRef, EmbeddedViewRef, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\nimport { ButtonFlavor, Icon, IconSize, ItemSlot, TextFlavor, SpinnerSize } from '@genetec/gelato';\nimport { ContextMenuPosition, GenMeltedTableComponent, GenMenu, GenModalService, GenTableActions, GenTableColumn, TableCellType } from '@genetec/gelato-angular';\nimport { ContentFields } from '@modules/mission-control/content-fields';\nimport { ModalGuids } from '@modules/mission-control/mc-modal-ids';\nimport { MCPrivileges } from '@modules/mission-control/mc-privileges';\nimport { MissionControlContentTypes } from '@modules/mission-control/mission-control-content-types';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContextMenuFactory } from '@modules/shared/services/context-menu/context-menu.factory';\nimport { FilterContext } from '@modules/shared/services/filters/filter';\nimport { FilterCoordinatorService, FILTER_CONTEXT } from '@modules/shared/services/filters/filter-coordinator-service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { debounce } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { delay, switchMap, take, tap } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ResizeWidthEvent } from 'src/app/modules/shared/directives/resized/interfaces/resize-width-event';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { IncidentFilter } from '../../models/incident-filter';\nimport { IncidentSorting, sortingOrientation, sortingParameter } from '../../models/incident-sorting';\nimport { ServiceState, StateEnum } from '../../models/service-state';\nimport { IncidentActionService } from '../../services/incident-actions/incident-actions.service';\nimport { IncidentLocationService } from '../../services/incident-location/incident-location.service';\nimport { IncidentMapSelectorService } from '../../services/incident-map-selector/incident-map-selector.service';\nimport { IncidentService } from '../../services/incident/incident.service';\nimport { PrivilegeService } from '../../../shared/privilege/privilege.service';\nimport { toGuid } from '../../utils/guid-utils';\nimport { TriggerIncidentModalComponent } from '../trigger-incident-modal/trigger-incident-modal.component';\nimport { IconService } from '@modules/mission-control/services/icons/icon.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nexport const isContentSupported = (content: Content, pluginType: IGuid): boolean => {\n return content?.type?.equals(MissionControlContentTypes.incidentList) || pluginType === PluginTypes.Dashboard;\n};\n\nenum IncidentTemplateStyle {\n List,\n Card,\n}\n\nexport enum IncidentOrientation {\n None,\n Up,\n Right,\n Bottom,\n Left,\n}\n\n/*\n Up or Down -> List\n Left or Right -> Card\n None -> Container width size decide the template style\n*/\nclass IncidentComponentParameter {\n private _incidentOrientation = IncidentOrientation.Bottom;\n private _incidentTemplateStyle = IncidentTemplateStyle.List;\n private _infiniteScrollContainer: '.ag-body-viewport.ag-layout-normal' | '#incident-cards-list' = '.ag-body-viewport.ag-layout-normal';\n\n public get infiniteScrollContainer() {\n return this._infiniteScrollContainer;\n }\n\n public get incidentTemplateStyle(): IncidentTemplateStyle {\n return this._incidentTemplateStyle;\n }\n\n public set incidentTemplateStyle(value: IncidentTemplateStyle) {\n this._incidentTemplateStyle = value;\n if (this.incidentTemplateStyle === IncidentTemplateStyle.Card) this._infiniteScrollContainer = '#incident-cards-list';\n else this._infiniteScrollContainer = '.ag-body-viewport.ag-layout-normal';\n }\n\n public get incidentOrientation(): IncidentOrientation {\n return this._incidentOrientation;\n }\n\n public set incidentOrientation(value: IncidentOrientation) {\n this._incidentOrientation = value;\n if (this.incidentOrientation === IncidentOrientation.Left || this.incidentOrientation === IncidentOrientation.Right)\n this.incidentTemplateStyle = IncidentTemplateStyle.Card;\n else if (this.incidentOrientation === IncidentOrientation.Up || this.incidentOrientation === IncidentOrientation.Bottom)\n this.incidentTemplateStyle = IncidentTemplateStyle.List;\n }\n}\n@UntilDestroy()\n@Component({\n selector: 'app-incidents-list',\n templateUrl: './incidents-list.component.html',\n styleUrls: ['./incidents-list.component.scss'],\n animations: [\n trigger('inOutAnimation', [\n transition(':enter', [style({ height: 0, opacity: 0 }), animate('1s 1.5s ease-out', style({ height: '100%', opacity: 1 }))]),\n transition(':leave', [style({ height: '100%', opacity: 1 }), animate('1s ease-in', style({ height: 0, opacity: 0 }))]),\n ]),\n ],\n providers: [{ provide: FilterCoordinatorService }, { provide: FILTER_CONTEXT, useValue: FilterContext.IncidentList }],\n})\n@InternalContentPluginDescriptor({\n type: IncidentsListComponent,\n pluginTypes: [PluginTypes.Widget, PluginTypes.Dashboard],\n exposure: { id: IncidentsListComponent.pluginId, icon: Icon.Incident, title: 'Incidents' } as PluginComponentExposure,\n requirements: {\n optionalGlobalPrivileges: [\n MCPrivileges.triggerIncidents,\n MCPrivileges.editIncidentPriority,\n MCPrivileges.takeOwnership,\n MCPrivileges.overrideOwnership,\n MCPrivileges.forwardIncident,\n MCPrivileges.transferIncident,\n ],\n globalPrivileges: [KnownPrivileges.incidentMonitoringTaskPrivilege],\n },\n isContentSupported,\n})\nexport class IncidentsListComponent extends TrackedComponent implements OnInit, ContentPluginComponent, AfterViewInit, AfterViewChecked {\n public static pluginId = SafeGuid.parse('786FCAF6-EA8A-43C3-95BB-D5319DA931EF');\n\n @ViewChild('sortingLabelTemplate') private sortingLabelTemplate: TemplateRef | undefined;\n @ViewChild('incidentListContainer') private incidentListContainer!: ElementRef;\n @ViewChild('nameTemplate') private nameTemplate: TemplateRef | undefined;\n @ViewChild('timeTemplate') private timeTemplate: TemplateRef | undefined;\n @ViewChild('priorityNameTemplate') private priorityNameTemplate: TemplateRef | undefined;\n @ViewChild('stateNameTemplate') private stateNameTemplate: TemplateRef | undefined;\n @ViewChild('ownerNameTemplate') private ownerNameTemplate: TemplateRef | undefined;\n @ViewChild('locationNameTemplate') private locationNameTemplate: TemplateRef | undefined;\n @ViewChildren('incidentsTable') private tables!: QueryList;\n @ViewChild('contextMenu') contextMenu!: GenMenu;\n\n public ContextMenuPosition = ContextMenuPosition;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly IconSize = IconSize;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly IncidentTemplateStyle = IncidentTemplateStyle;\n public readonly IncidentOrientation = IncidentOrientation;\n public readonly ItemSlot = ItemSlot;\n public readonly SpinnerSize = SpinnerSize;\n public readonly IconService = IconService;\n\n public columns: Array = [];\n public actions: GenTableActions | undefined;\n public incidents$!: Observable;\n public incidentServiceState$!: Observable;\n public stateEnum = StateEnum;\n\n public content: Content | undefined;\n public dataContext: unknown;\n public hasTriggerIncidentPrivilege = false;\n public isScrollEnabled = true;\n public incidentActions$: Observable = new Observable();\n public contextPosition = { x: 0, y: 0 };\n public isListRendered = false;\n public incidentComponentParameter = new IncidentComponentParameter();\n\n private direction: 'UP' | 'DOWN' | 'NONE' = 'NONE';\n private savedScrollPosition = 0;\n private containsNewData = false;\n private allLabels = new Array();\n private currentSortingOrientation: sortingOrientation = '';\n private currentSortingParameter!: sortingParameter;\n private incidentTable: GenMeltedTableComponent | null = null;\n private selectedIncident: MCIncident | null = null;\n\n private supportedSorting: Record = {\n STE_LABEL_ABBREV_IDENTIFIER: 'displayId',\n STE_LABEL_NAME: 'name',\n STE_LABEL_INCIDENT_LOCATION: 'location',\n STE_LABEL_INCIDENT_TRIGGERINGTIME: 'triggerTime',\n STE_LABEL_INCIDENTSTATE: 'state',\n STE_LABEL_PRIORITY: 'priority',\n };\n\n private eventModelUpdated = debounce(() => this.selectIncident(this.selectedIncident?.id ?? null), 50) as () => void;\n\n private eventVirtualColumnsChange = debounce(() => {\n this.allLabels = [];\n this.arrangeSorting();\n }, 50) as () => void;\n\n private eventGridSizeChange = debounce(() => this.incidentTable?.gridApi?.sizeColumnsToFit(), 50) as () => void;\n\n constructor(\n trackingService: TrackingService,\n private _incidentService: IncidentService,\n private _translateService: TranslateService,\n private _modalService: GenModalService,\n private _privilegeService: PrivilegeService,\n private _incidentActionService: IncidentActionService,\n private _incidentLocationService: IncidentLocationService,\n private _incidentMapSelectorService: IncidentMapSelectorService,\n private _contextMenuFactory: ContextMenuFactory,\n private _viewContainerRef: ViewContainerRef\n ) {\n super(trackingService);\n this._incidentMapSelectorService.currentDisplayedIncident$.pipe(untilDestroyed(this)).subscribe((incident) => this.selectIncident(incident?.id ?? null));\n }\n\n public onResize(event: ResizeWidthEvent): void {\n if (this.incidentComponentParameter.incidentOrientation !== IncidentOrientation.None) return;\n if (event.newWidth < 720) {\n this.incidentComponentParameter.incidentTemplateStyle = IncidentTemplateStyle.Card;\n } else {\n this.incidentComponentParameter.incidentTemplateStyle = IncidentTemplateStyle.List;\n }\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n this.initializePrivileges();\n this.incidentServiceState$ = this._incidentService.state$.pipe(\n tap((x) => {\n if (x.state !== StateEnum.Running) this.isListRendered = false;\n })\n );\n\n this._incidentService\n .getIncidents()\n .pipe(\n switchMap((incidents) => {\n const locationsIds = incidents.map((i) => i.location?.entityId ?? null);\n const nonEmptyLocationIds = locationsIds.filter((id): id is IGuid => id instanceof SafeGuid && !id.isEmpty());\n return this._incidentLocationService.prefetch(nonEmptyLocationIds);\n }),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.incidents$ = this._incidentService.getIncidents().pipe(\n tap((_) => {\n this.containsNewData = true;\n if (this.direction === 'NONE') this.saveScrollPosition();\n })\n );\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n if (!this.content.parameters?.hasField(ContentFields.listOrientation)) return;\n const listOrientation: string = (JSON.parse(this.content.parameters.getField(ContentFields.listOrientation)) as string) ?? IncidentOrientation.None.toString();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n this.incidentComponentParameter.incidentOrientation = IncidentOrientation[listOrientation as keyof typeof IncidentOrientation];\n }\n\n public ngAfterViewInit(): void {\n // TODO: Update once gen-table will be migrated, allows selection to be preserve when table is updated\n // Hack with delay because gridApi is always null since Angular 12\n if (this.tables.last) {\n debounce(() => this.addEventsForIncidentTable(this.tables.last), 1000)();\n } else {\n this.tables.changes\n .pipe(delay(1000), untilDestroyed(this))\n .subscribe((components: QueryList) => this.addEventsForIncidentTable(components.last));\n }\n\n this.columns = [\n { columnName: 'id', label: 'Id', cellType: TableCellType.Text, hide: true },\n { columnName: 'displayId', label: this._translateService.instant('STE_LABEL_ABBREV_IDENTIFIER'), cellType: TableCellType.Text, maxWidth: 60, suppressSorting: true },\n { columnName: 'name', label: this._translateService.instant('STE_LABEL_NAME'), cellType: TableCellType.Custom, cellTemplate: this.nameTemplate, suppressSorting: true },\n {\n columnName: 'location',\n label: this._translateService.instant('STE_LABEL_INCIDENT_LOCATION'),\n cellType: TableCellType.Custom,\n cellTemplate: this.locationNameTemplate,\n suppressSorting: true,\n },\n {\n columnName: 'triggerTimeUtc',\n label: this._translateService.instant('STE_LABEL_INCIDENT_TRIGGERINGTIME'),\n cellType: TableCellType.Custom,\n cellTemplate: this.timeTemplate,\n suppressSorting: true,\n },\n {\n columnName: 'stateId',\n label: this._translateService.instant('STE_LABEL_INCIDENTSTATE'),\n cellType: TableCellType.Custom,\n cellTemplate: this.stateNameTemplate,\n suppressSorting: true,\n },\n {\n columnName: 'priorityId',\n label: this._translateService.instant('STE_LABEL_PRIORITY'),\n cellType: TableCellType.Custom,\n cellTemplate: this.priorityNameTemplate,\n suppressSorting: true,\n },\n {\n columnName: 'ownerId',\n label: this._translateService.instant('STE_LABEL_OWNER'),\n cellType: TableCellType.Custom,\n cellTemplate: this.ownerNameTemplate,\n suppressSorting: true,\n },\n ];\n }\n\n public ngAfterViewChecked(): void {\n this.arrangeScrollbar();\n this.arrangeSorting();\n }\n\n public initializePrivileges(): void {\n this.hasTriggerIncidentPrivilege = this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.triggerIncidents);\n }\n\n public onTriggerIncidentClick(): void {\n if (this._modalService) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._modalService.open(TriggerIncidentModalComponent, { id: ModalGuids.triggerIncidentModalId.toString() });\n // TODO: ideally, the modal service should handle this: not allow 2 modals to be open.\n this.removeFocusFromActiveElement();\n }\n }\n\n public onSelectItem(incident: MCIncident) {\n this.selectedIncident = incident;\n this._incidentMapSelectorService.setMapSidePaneSelection(incident);\n }\n\n public translate = (toTranslate: string): string => (this._translateService?.instant(toTranslate) as string) ?? toTranslate;\n\n public onIncidentFilterChange(incidentFilter: IncidentFilter): void {\n this._incidentService.applyFilter(incidentFilter);\n }\n\n public onIncidentSortingChange(element: HTMLDivElement, key: string): void {\n const toggleOrientation = (iconElem: HTMLGenIconElement) => {\n switch (this.currentSortingOrientation) {\n case '':\n case 'desc':\n this.currentSortingOrientation = 'asc';\n iconElem.icon = Icon.ArrowUp;\n break;\n case 'asc':\n this.currentSortingOrientation = 'desc';\n iconElem.icon = Icon.ArrowDown;\n break;\n }\n };\n\n //get the correct label from the hashmap\n const label = this.supportedSorting[key];\n if (element) {\n const iconElement = element.querySelector('gen-icon');\n\n if (!iconElement || !element) return;\n\n //we dont support sorting for the following labels\n if (label === this.currentSortingParameter) {\n toggleOrientation(iconElement);\n } else {\n //set the default orientation to asc on first click\n this.currentSortingParameter = label;\n this.currentSortingOrientation = 'asc';\n this.allLabels.forEach((x) => {\n const e = x.querySelector('gen-icon');\n if (!e) return;\n e.icon = Icon.None;\n });\n iconElement.icon = Icon.ArrowUp;\n }\n\n const isNoOrientation = this.currentSortingOrientation === '';\n const sort = isNoOrientation ? new IncidentSorting() : new IncidentSorting(this.currentSortingParameter, this.currentSortingOrientation);\n this._incidentService.applySorting(sort);\n }\n }\n\n public removeFocusFromActiveElement(): void {\n (document.activeElement as HTMLElement)?.blur();\n }\n\n public onScrollDown(): void {\n if (this._incidentService.isLastPage()) return;\n this.isScrollEnabled = false;\n this.direction = 'DOWN';\n this._incidentService.nextPage();\n this.saveScrollPosition();\n }\n\n public onScrollUp(): void {\n if (this._incidentService.isFirstPage()) return;\n this.isScrollEnabled = false;\n this.direction = 'UP';\n this._incidentService.previousPage();\n this.saveScrollPosition();\n }\n\n public saveScrollPosition(): void {\n const container = this.incidentListContainer?.nativeElement?.querySelector(this.incidentComponentParameter.infiniteScrollContainer) as HTMLElement;\n //we do -1 pixel to cause a the incident list to NOT disappear on incident trigger or state change.\n this.savedScrollPosition = container?.scrollTop - 1 ?? 0;\n }\n\n public openContextMenu(data: MCIncident, event: Event | null | undefined): void {\n if (event) {\n const mouseEvent = event as MouseEvent;\n this.preventDefaultContext(mouseEvent);\n this.selectedIncident = data;\n this.selectIncident(data.id);\n const contextPosition = { x: mouseEvent.x ?? 0, y: mouseEvent.y ?? 0 };\n\n // Retrieve the actual values.\n this._incidentActionService\n .getActions(data)\n .pipe(take(1), untilDestroyed(this))\n .subscribe((itemList: ContextMenuItem[]) => {\n if (itemList.length > 0) {\n this._contextMenuFactory.showMenuAsync(this._viewContainerRef, itemList, contextPosition).fireAndForget();\n }\n });\n }\n }\n\n public preventDefaultContext(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private selectIncident(id: IGuid | string | null): void {\n const incidentId = id ? toGuid(id) : null;\n\n this.incidentTable?.gridApi?.forEachNode((node) => node.selectThisNode(!!incidentId && node.data instanceof MCIncident && node.data.id.equals(incidentId)));\n }\n\n private arrangeSorting(): void {\n //create array of all the headers that match the class\n if (this?.incidentListContainer?.nativeElement && this.allLabels.length === 0) {\n this.allLabels = Array.from(this?.incidentListContainer.nativeElement.querySelectorAll('.ag-cell-label-container') as NodeListOf);\n //iterate thru each label class\n this.allLabels\n .filter((e) => !!this.supportedSorting[e.innerText])\n .forEach((labelCell: HTMLElement) => {\n //create HTML element from template\n const sortLabeltemplate = this.sortingLabelTemplate?.createEmbeddedView({\n key: labelCell.innerText,\n label: this.translate(labelCell.innerText),\n }) as EmbeddedViewRef;\n sortLabeltemplate.detectChanges();\n labelCell.innerHTML = '';\n //append the template to the label location\n labelCell.appendChild(sortLabeltemplate.rootNodes[0]);\n });\n this.currentSortingOrientation = '';\n this.currentSortingParameter = 'displayId';\n }\n }\n\n private arrangeScrollbar(): void {\n if (!this.containsNewData) return;\n this.containsNewData = false;\n const container = this.incidentListContainer.nativeElement.querySelector(this.incidentComponentParameter.infiniteScrollContainer) as HTMLElement;\n if (container == null) return;\n if (this.direction === 'NONE') container.scrollTop = this.savedScrollPosition;\n else if (this.direction === 'UP') container.scrollTop = container.scrollHeight * 0.5;\n else if (this.direction === 'DOWN') container.scrollTop = this.savedScrollPosition * 0.5 - container.offsetHeight / 2;\n this.direction = 'NONE';\n this.isScrollEnabled = true;\n }\n\n private addEventsForIncidentTable(table: GenMeltedTableComponent) {\n this.incidentTable = table;\n if (!this.incidentTable?.gridApi) return;\n this.incidentTable.gridApi.removeEventListener('modelUpdated', this.eventModelUpdated.bind(this));\n this.incidentTable.gridApi.removeEventListener('virtualColumnsChanged', this.eventVirtualColumnsChange.bind(this));\n this.incidentTable.gridApi.removeEventListener('gridSizeChanged', this.eventGridSizeChange.bind(this));\n this.incidentTable.gridApi.addEventListener('modelUpdated', this.eventModelUpdated.bind(this));\n this.incidentTable.gridApi.addEventListener('virtualColumnsChanged', this.eventVirtualColumnsChange.bind(this));\n this.incidentTable.gridApi.addEventListener('gridSizeChanged', this.eventGridSizeChange.bind(this));\n }\n}\n","export namespace McContentNames{\n export const activityContent = 'ActivityContent';\n export const incidentListContent = 'IncidentListContent';\n export const procedureContent = 'ProcedureContent';\n export const linkedIncidentContent = 'LinkedIncidentContent';\n}\n","import { SafeGuid } from 'safeguid';\nimport { AlterationType, IncidentEvent, IncidentEventType, RecipientAlteredEvent } from '@modules/mission-control/models/events/incident-event';\nimport { AudioService } from '@modules/shared/services/audio/audio.service';\nimport { McEventReceiverService } from './../events/mc-event-receiver.service';\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\nimport { IncidentApiService } from '../incident/incident-api.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Injectable()\nexport class McActionService {\n constructor(private _audioService: AudioService, private _incidentApiService: IncidentApiService, _eventReceiver: McEventReceiverService) {\n _eventReceiver\n .getIncidentEvents()\n .pipe(\n tap(async (events) => await this.handleEvent(events)),\n untilDestroyed(this)\n )\n .subscribe();\n }\n\n public async handleEvent(events: IncidentEvent[]): Promise {\n for (const event of events) {\n switch (event.type) {\n case IncidentEventType.Created:\n case IncidentEventType.RecipientsAltered:\n await this.playSound(event);\n }\n }\n }\n\n private async playSound(event: IncidentEvent): Promise {\n const incident = await this._incidentApiService.getIncident(event.incidentId).toPromise();\n if (incident && (event.type === IncidentEventType.Created || (event as RecipientAlteredEvent).alterationType === AlterationType.Transfer)) {\n if (incident.soundId.equals(SafeGuid.EMPTY)) return;\n await this._audioService.playAudio(incident.soundId);\n }\n }\n}\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ButtonFlavor, Icon } from '@genetec/gelato';\nimport { InternalPluginDescriptor } from '../../../shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '../../../shared/interfaces/plugins/public/plugin-types';\nimport { PluginComponentExposure, PluginComponentRequirements } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService, MAPS_BOTTOM_CONTEXT_SERVICE, SIDE_CONTEXT_SERVICE } from '../../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { MissionControlContentTypes } from '../../mission-control-content-types';\nimport { MCFeature } from '../../mc-feature';\nimport { McEventReceiverService } from '../../services/events/mc-event-receiver.service';\nimport { IncidentOrientation } from '../incidents-list/incidents-list.component';\nimport { McContentNames } from '../../mc-content-names';\nimport { ContentFields } from '../../content-fields';\nimport { McActionService } from '@modules/mission-control/services/action/mc-action.service';\n\n@Component({\n selector: 'app-incidents-tray',\n templateUrl: './incidents-tray.component.html',\n styleUrls: ['./incidents-tray.component.css'],\n})\n@InternalPluginDescriptor({\n type: IncidentsTrayComponent,\n pluginTypes: [PluginTypes.MapTray],\n exposure: { id: IncidentsTrayComponent.pluginId } as PluginComponentExposure,\n requirements: {\n features: [MCFeature.missionControlfeature],\n globalPrivileges: [KnownPrivileges.incidentMonitoringTaskPrivilege],\n },\n isSupported: () => true,\n})\nexport class IncidentsTrayComponent extends TrackedComponent implements OnInit, OnDestroy {\n public static pluginId = SafeGuid.parse('786FCAF6-EA8A-43C3-95BB-D5319DA931EF');\n\n public isBottom = true;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n\n public incidentListContentType = MissionControlContentTypes.incidentList;\n\n constructor(\n @Inject(MAPS_BOTTOM_CONTEXT_SERVICE) public bottomContextService: ContentService,\n @Inject(SIDE_CONTEXT_SERVICE) private sideContextService: ContentService,\n private contentProviderService: ContentProviderService,\n trackingService: TrackingService,\n actionService: McActionService, // Initialize service hidden behind the feature requirement\n mcEventReceiver: McEventReceiverService // Initialize service hidden behind the feature requirement\n ) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n public async toggleIncidents(): Promise {\n if (this.bottomContextService.contentCount === 0) {\n const incidentListRequest = new FieldObject();\n incidentListRequest.setField(McContentNames.incidentListContent, this.incidentListContentType.toString());\n incidentListRequest.setField(ContentFields.listOrientation, IncidentOrientation.Bottom);\n const content = await this.contentProviderService.getContentFromFieldsAsync(incidentListRequest);\n if (content && !content.id.isEmpty()) {\n this.bottomContextService.setMainContent(content);\n } else {\n this.bottomContextService.setMainContent(undefined);\n }\n } else {\n this.bottomContextService.clearMainContent();\n }\n }\n}\n","\n \n\n","import { Inject, Injectable } from '@angular/core';\nimport { GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IMapEntity } from 'RestClient/Client/Interface/IMapEntity';\nimport { MapEntity } from 'RestClient/Client/Model/MapEntity';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { ContextTypes } from '@shared/interfaces/plugins/public/context-types';\nimport {\n CommandBindings,\n CommandContext,\n CommandsService,\n COMMANDS_SERVICE,\n Coordinate,\n ExecuteCommandData,\n FEATURES_SERVICE,\n GeoCoordinate,\n} from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandArgs, CommandDescriptor, CommandProviderBase } from '@shared/services/commands/command-provider-base';\nimport { LanguageService } from '@shared/services/language/language.service';\nimport { TriggerIncidentModalComponent } from '../components/trigger-incident-modal/trigger-incident-modal.component';\nimport { ModalGuids } from '../mc-modal-ids';\nimport { MCPrivileges } from '../mc-privileges';\nimport { PrivilegeService } from '@shared/privilege/privilege.service';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { MCFeature } from '../mc-feature';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\n\nexport namespace MissionControlCommands {\n export const triggerIncident: IGuid = SafeGuid.parse('FF592BB3-1451-4F7A-984B-CA3BFE2BDAB6');\n export const changePriority: IGuid = SafeGuid.parse('9DB8A670-36F8-4DD8-8BB2-2A6D0773B507');\n}\n\n// TODO Expose Mission Control commands needed for external module action like trigger on map and keyboard shortcut here.\n@Injectable()\nexport class IncidentCommandProvider extends CommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = SafeGuid.createMap();\n descriptors.set(MissionControlCommands.triggerIncident, {\n id: MissionControlCommands.triggerIncident,\n icon: MeltedIcon.Incident,\n groupIcon: MeltedIcon.Incident,\n nameResourceId: 'STE_TITLE_TRIGGERANINCIDENT',\n requirements: this.fillCommandRequirements({\n supportedContentTypes: SafeGuid.createSet([ContextTypes.Map]),\n requiredPrivileges: SafeGuid.createSet([MCPrivileges.triggerIncidents]),\n }),\n });\n\n this.internalCommandDescriptors = descriptors;\n }\n return this.internalCommandDescriptors;\n }\n\n public get requiredFeatures(): Set {\n return SafeGuid.createSet([...super.requiredFeatures, MCFeature.missionControlfeature]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n private _privilegeService: PrivilegeService,\n private _modalService: GenModalService,\n protected advancedSettingsService: AdvancedSettingsService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: CommandContext): Promise {\n const commandIds: IGuid[] = [];\n\n if (this.isTriggerIncidentAvailable(commandContext)) {\n commandIds.push(MissionControlCommands.triggerIncident);\n }\n\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: MissionControlCommands.triggerIncident,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteCommand((safeExecuteCommandData) => this.executeTriggerIncident(safeExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) => this.safeIsCommandAvailable((safeCommandContext) => this.isTriggerIncidentAvailable(safeCommandContext), commandContext),\n canExecuteCommandHandler: () => this._privilegeService.isGlobalPrivilegeGranted(MCPrivileges.triggerIncidents),\n });\n }\n\n private async executeTriggerIncident(executeCommandData: ExecuteCommandData): Promise {\n const args = this.extractArgs(executeCommandData.commandContext);\n const coordinates: GeoCoordinate | Coordinate | null = args.mapContext?.location ?? null;\n if (coordinates && args.mapContext) {\n const mapEntity = await this.scClient.getEntityAsync(MapEntity, args.mapContext?.mapId, null, null, 'AssociatedArea');\n if (this._modalService && mapEntity?.id && !mapEntity.id.equals(SafeGuid.EMPTY)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const triggerIncidentModal = this._modalService.open(TriggerIncidentModalComponent, { id: ModalGuids.triggerIncidentModalId.toString() });\n triggerIncidentModal.initializeLocation(mapEntity.associatedArea, coordinates, args.mapContext.geoLocalised);\n }\n }\n executeCommandData.isHandled = true;\n }\n\n private isTriggerIncidentAvailable(commandContext: CommandContext, commandArgs?: CommandArgs): boolean {\n commandArgs = commandArgs ?? this.extractArgs(commandContext);\n return !!commandArgs.mapContext?.geoLocalised;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { EMPTY, Observable } from 'rxjs';\nimport { McClient } from '../mc-client.service';\nimport { ListResultApi } from '../../models/list-result';\nimport { MCIncidentApi } from '../../models/mc-incident';\nimport { LoggerService } from '../../../shared/services/logger/logger.service';\nimport { StateService } from '../state/state.service';\n\n@Injectable()\nexport class IncidentCountService {\n constructor(private mcClient: McClient, private stateService: StateService, private logger: LoggerService) {}\n\n public getNewIncidentCount(): Observable {\n return this.stateService.getActiveStates$().pipe(\n map((states) => states.map((state) => state.id).join()),\n map((joinedStates) => `v2/Incidents?limit=1&stateIds=${joinedStates}&isRecipient=true`),\n switchMap((url) =>\n this.mcClient.get>(url).pipe(\n map(({ TotalResultsCount }) => TotalResultsCount ?? 0),\n catchError((error: Error) => {\n this.logger.traceError('An exception occured while refreshing the incident count', error.message);\n return EMPTY;\n })\n )\n )\n );\n }\n}\n","import { SafeGuid } from 'safeguid';\nimport { Observable } from 'rxjs';\nimport { ButtonFlavor } from '@genetec/gelato-angular';\nimport { defaultIfEmpty, filter, startWith, switchMap } from 'rxjs/operators';\nimport { Component, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { InternalPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { MCFeature } from '../../mc-feature';\nimport { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { McEventReceiverService } from '../../services/events/mc-event-receiver.service';\nimport { Header, IncidentEventType, StateChangedEvent } from '../../models/events/incident-event';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IncidentCountService } from '../../services/incident-count/incident-count.service';\nimport { StateGuids } from '../../state-guids';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\n\n@Component({\n selector: 'app-incident-notification',\n templateUrl: './incident-notification.component.html',\n styleUrls: ['./incident-notification.component.scss'],\n})\n@InternalPluginDescriptor({\n type: IncidentNotificationComponent,\n pluginTypes: [PluginTypes.Tray],\n exposure: { id: IncidentNotificationComponent.pluginId },\n isSupported: () => true,\n requirements: {\n features: [MCFeature.missionControlfeature],\n globalPrivileges: [KnownPrivileges.incidentMonitoringTaskPrivilege],\n },\n})\nexport class IncidentNotificationComponent extends TrackedComponent implements OnInit {\n public static pluginId = SafeGuid.parse('786FCAF6-EA8A-43C3-95BB-D5319DA931EF');\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n\n public incidentCount$!: Observable;\n\n private initializingEvent = new StateChangedEvent(IncidentEventType.StateChanged, SafeGuid.EMPTY, new Date(), SafeGuid.EMPTY, StateGuids.NEW, Header.Empty());\n\n private targetedEvent: IncidentEventType[] = [IncidentEventType.Created, IncidentEventType.StateChanged, IncidentEventType.RecipientsAltered];\n\n constructor(\n trackingService: TrackingService,\n securityCenterClientService: SecurityCenterClientService,\n private _eventService: McEventReceiverService,\n private _incidentService: IncidentCountService\n ) {\n super(trackingService);\n }\n\n ngOnInit() {\n this.incidentCount$ = this._eventService.getIncidentEvents().pipe(\n startWith([this.initializingEvent]),\n filter((x) => x.some((event) => this.targetedEvent.some((type) => event.type === type))),\n switchMap((_) => this._incidentService.getNewIncidentCount().pipe(defaultIfEmpty(0)))\n );\n }\n}\n","
    \n \n \n
    \n {{ incidentCount$ | async }}\n
    \n
    \n
    \n","import { IGuid, SafeGuid } from 'safeguid';\nimport { ProcedureStepActionType } from '../procedure-step-action-type';\nimport { MCCommandBase, MCCommandType } from './command';\n\nconst commandType = MCCommandType.AnswerProcedureStep;\n\nexport class AnswerProcedureCommand extends MCCommandBase {\n type = commandType;\n\n constructor(incidentId: IGuid, actionType: ProcedureStepActionType, optionId: IGuid, comment: string) {\n super(\n `/v2/Incidents/${incidentId.toString()}`,\n JSON.stringify({\n Type: commandType,\n ActionType: actionType,\n OptionId: optionId?.toString(),\n Comment: comment ?? '',\n })\n );\n }\n}\n","export class TimeSpan {\n public readonly days: number;\n public readonly hours: number;\n public readonly minutes: number;\n public readonly seconds: number;\n public readonly milliseconds: number;\n public readonly totalMilliseconds: number;\n\n private readonly SECONDS_IN_MILLISECONDS = 1000;\n private readonly MINUTES_IN_MILLISECONDS = 60 * this.SECONDS_IN_MILLISECONDS;\n private readonly HOUR_IN_MILLISECONDS = 60 * this.MINUTES_IN_MILLISECONDS;\n private readonly DAYS_IN_MILLISECONDS = 24 * this.HOUR_IN_MILLISECONDS;\n\n constructor(milliseconds: number) {\n this.totalMilliseconds = milliseconds;\n this.days = Math.floor(milliseconds / this.DAYS_IN_MILLISECONDS);\n milliseconds %= this.DAYS_IN_MILLISECONDS;\n this.hours = Math.floor(milliseconds / this.HOUR_IN_MILLISECONDS);\n milliseconds %= this.HOUR_IN_MILLISECONDS;\n this.minutes = Math.floor(milliseconds / this.MINUTES_IN_MILLISECONDS);\n milliseconds %= this.MINUTES_IN_MILLISECONDS;\n this.seconds = Math.floor(milliseconds / this.SECONDS_IN_MILLISECONDS);\n this.milliseconds = milliseconds % this.SECONDS_IN_MILLISECONDS;\n }\n\n public toString(): string {\n let value = '';\n if (this.days > 0) value += this.days >= 10 ? `${this.days}:` : `0${this.days}:`;\n if (this.hours > 0) value += this.hours >= 10 ? `${this.hours}:` : `0${this.hours}:`;\n value += this.minutes === 0 || this.minutes >= 10 ? `${this.minutes}:` : `0${this.minutes}:`;\n value += this.seconds >= 10 ? `${this.seconds}` : `0${this.seconds}`;\n\n return value;\n }\n}\n","/* eslint-disable @typescript-eslint/no-namespace */\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport namespace DsopConstant {\n export const STEP_PROCEDURE_COMPLETED = SafeGuid.parse('8B4719CE-0FB9-4A8C-B1CE-7824D77A3C48');\n export const STEP_PROCEDURE_BEGIN = SafeGuid.parse('f510a412-d8c3-42c9-afa3-fa5950fe987f');\n export const OPTION_START_NODE = SafeGuid.parse('08C729C7-3BD8-4D6F-9605-57BFB60D9E7B');\n export const OPTION_YES_NO = SafeGuid.parse('AF5E7576-C1B3-45CB-BBF6-FC329EB29A1C');\n export const OPTION_DONE = SafeGuid.parse('57990620-FAAA-4E80-9E32-0B99C91C61D2');\n export const OPTION_YES = SafeGuid.parse('3D0C4B10-FE9E-4D13-8DF2-F43E201CAC0E');\n export const OPTION_NO = SafeGuid.parse('008E8B7D-787A-4A09-B5CC-4CE058263C46');\n}\n","\n\n
    \n
    \n {{ params.data.name }}\n
    \n
    \n
    \n\n\n\n
    \n
    \n {{ params.data.elapsedTime.toString() }}\n
    \n
    \n
    \n\n\n\n
    \n
    \n {{ params.data.cumulativeTime.toString() }}\n
    \n
    \n
    \n\n\n \n \n
    \n {{ 'STE_LABEL_PROCEDURE' | translate }}\n
    \n
    \n 0\" id=\"contextMenuButton\" [flavor]=\"ButtonFlavor.Flat\" (click)=\"toggleContextMenu()\">\n \n \n \n
    \n
    \n\n \n \n \n \n\n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n\n \n \n
    \n \n \n {{ 'STE_LABEL_INTERRUPTED' | translate }}\n \n
    \n
    \n\n \n \n
    \n \n \n {{ completedLabel }}\n \n
    \n \n
    \n\n \n \n {{ currentStep.name }}\n {{ currentStep.instructions }}\n
    \n \n
    \n
    \n \n
    \n
    \n \n {{ currentStepOption.name }}\n \n
    \n
    4\" class=\"ha-center gen-flex gen-flex-column p-1\">\n \n \n \n
    \n \n {{ currentStepOption.name }}\n \n
    \n
    \n
    \n
    \n\n \n \n
    \n \n {{ 'STE_LABEL_BACK' | translate }}\n \n
    \n
    \n \n {{ 'STE_LABEL_SKIP' | translate }}\n \n
    \n
    \n
    \n\n\n\n \n \n \n\n\n\n\n \n \n \n\n\n\n\n \n \n \n\n","import { AfterViewInit, Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { BehaviorSubject, EMPTY, Observable, Subject } from 'rxjs';\nimport { catchError, concatAll, defaultIfEmpty, distinctUntilChanged, filter, map, tap, toArray } from 'rxjs/operators';\nimport { GenModalService, TableCellType, ButtonFlavor, GenPopup, GenMenu, GenTableColumn } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TextFlavor, PopupPosition, ItemSlot, SpinnerSize } from '@genetec/gelato';\nimport { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { Content, ContentPluginComponent } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { LoggerService } from '@shared/services/logger/logger.service';\nimport { stringFormat } from '@shared/utilities/StringFormat';\nimport { List } from 'immutable';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { IWebApiResponse } from '@modules/mission-control/models/web-api-response';\nimport { IncidentApiService } from '@modules/mission-control/services/incident/incident-api.service';\nimport { MissionControlContentTypes } from '../../mission-control-content-types';\nimport { Step } from '../../models/step';\nimport { IncidentCommandService } from '../../services/incident/incident-command.service';\nimport { AnswerProcedureCommand } from '../../models/commands/answer-procedure-command';\nimport { ChangeStateCommand } from '../../models/commands/change-state-command';\nimport { StateGuids } from '../../state-guids';\nimport { TakeOwnershipCommand } from '../../models/commands/take-ownership-command';\nimport { MCCommandBase } from '../../models/commands/command';\nimport { MCIncident } from '../../models/mc-incident';\nimport { IncidentEvent, ProcedureStepActionType, ProcedureStepAnsweredEvent, StateChangedEvent } from '../../models/events/incident-event';\nimport { McUserService } from '../../services/mc-user.service';\nimport { TimeSpan } from '../../utils/timespan';\nimport { McNotificationService } from '../../services/mc-notification.service';\nimport { DsopConstant } from '../../dsop-constants';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { NgControl } from '@angular/forms';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nconst isContentSupported = (content: Content): boolean => !!content?.type.equals(MissionControlContentTypes.procedure);\n\ninterface TTRDetails {\n name: string;\n elapsedTime: TimeSpan;\n cumulativeTime: TimeSpan;\n}\n\n@UntilDestroy()\n@Component({\n selector: 'app-procedure-widget',\n templateUrl: './procedure-widget.component.html',\n styleUrls: ['./procedure-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ProcedureWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: ProcedureWidgetComponent.pluginId },\n isContentSupported,\n})\nexport class ProcedureWidgetComponent extends TrackedComponent implements OnInit, AfterViewInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('FAC4D8FD-2A84-4FC8-9C1A-4B0088B7EC78');\n\n @ViewChild('nameTemplate') private nameTemplate: TemplateRef | undefined;\n @ViewChild('elapsedTimeTemplate') private elapsedTimeTemplate!: TemplateRef | undefined;\n @ViewChild('cumulativeTimeTemplate') private cumulativeTimeTemplate: TemplateRef | undefined;\n @ViewChild('optionsPopup') optionsPopup!: GenPopup;\n @ViewChild('contextMenu') contextMenu!: GenMenu;\n @ViewChild('commentInput', { read: NgControl }) commentInputModel?: NgControl;\n\n public content?: Content;\n public dataContext: unknown;\n\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly PopupPosition = PopupPosition;\n public readonly ItemSlot = ItemSlot;\n public readonly SpinnerSize = SpinnerSize;\n\n public isCurrentStepRoot = false;\n public skipAction: () => Promise;\n public restartAction: () => Promise;\n public closeAction: () => Promise;\n public ttrOkAction: () => Promise;\n public currentStepDisplayed$!: Observable;\n public currentStepOptionsAsGenItem$!: Observable;\n public ttrDetails$: Observable;\n public ttrDetails: Subject = new Subject();\n public skipReason = '';\n public restartReason = '';\n public isContextMenuOpen = false;\n public manualCommentOpen = false;\n public comment = '';\n public procedureMenuOptions: Array = new Array();\n public ttrColumns: Array = [];\n public completedLabel = '';\n public isReadonly = false;\n\n public readonly startId: IGuid = DsopConstant.STEP_PROCEDURE_BEGIN;\n public readonly loadingId: IGuid = SafeGuid.parse('4C5B7DB6-4500-4DF4-BAFF-0B267C1B9780');\n public readonly interruptedId: IGuid = SafeGuid.parse('1A9FF984-81BA-47DE-9913-093A0BF49A10');\n public readonly endId: IGuid = DsopConstant.STEP_PROCEDURE_COMPLETED;\n\n private _incident!: MCIncident;\n private readonly loadingStep: Step = new Step(this.loadingId, 'Loading', 'Loading', [], false, false, false);\n private _currentStep$: BehaviorSubject = new BehaviorSubject(this.loadingStep);\n private _hadFirstStateChangeToInProgress = false;\n private _lastKnownStepId: IGuid | null = null;\n private _hasOwner = false;\n private _isOwner = false;\n private _isReverting = false;\n\n private readonly _skipStepModalId: string = 'skip-step-modal';\n private readonly _restartModalId: string = 'restart-modal';\n private readonly _ttrModalId: string = 'ttr-modal';\n private readonly startStep: Step = new Step(this.startId, 'Start', 'Start', [], false, false, false);\n private readonly interruptedStep: Step = new Step(this.interruptedId, 'Interrupted', 'Interrupted', [], false, false, false);\n private readonly endStep: Step = new Step(this.endId, 'End', 'End', [], false, false, false);\n private readonly _steps: Map = new Map();\n\n constructor(\n private _incidentCommandService: IncidentCommandService,\n private _logger: LoggerService,\n private _mcUserService: McUserService,\n private _incidentApiService: IncidentApiService,\n private _modalService: GenModalService,\n private _translateService: TranslateService,\n private _notificationService: McNotificationService,\n private _incidentSelectionService: IncidentSelectionService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n\n this.currentStepDisplayed$ = this._currentStep$.pipe(\n tap((_) => {\n this.comment = '';\n this.manualCommentOpen = false;\n }),\n catchError((e) => {\n this._logger.traceError(e);\n return EMPTY;\n }),\n defaultIfEmpty(this.loadingStep),\n distinctUntilChanged((prev, next) => !this._isReverting && !!this._lastKnownStepId && this._lastKnownStepId?.equals(next.id)),\n tap((_) => {\n if (this._isReverting) this._isReverting = false;\n })\n );\n\n this.skipAction = this.skip.bind(this);\n this.restartAction = this.restartProcedure.bind(this);\n this.closeAction = this.cancelRestart.bind(this);\n this.ttrOkAction = this.closeTTRModal.bind(this);\n this.ttrDetails$ = this.ttrDetails;\n\n this.handleUpdate.bind(this);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n this._incidentSelectionService.selectedIncident$\n .pipe(\n filter((i): i is MCIncident => i instanceof MCIncident),\n tap(async (incident) => await this.handleUpdate(incident)),\n catchError((e) => {\n this._logger.traceError(e);\n return EMPTY;\n }),\n untilDestroyed(this)\n )\n .subscribe();\n\n this.currentStepOptionsAsGenItem$ = this.currentStepDisplayed$.pipe(\n map((x) => x.options),\n concatAll(),\n map((x) => ({ text: '', id: x.id.toString().toUpperCase(), type: x.name })),\n toArray()\n );\n }\n\n public ngAfterViewInit() {\n this.ttrColumns = [\n {\n columnName: 'name',\n label: this._translateService.instant('STE_LABEL_NAME') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.nameTemplate,\n minWidth: 80,\n suppressSorting: true,\n },\n {\n columnName: 'elapsedTime',\n label: this._translateService.instant('STE_LABEL_ELAPSED_TIME') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.elapsedTimeTemplate,\n minWidth: 80,\n maxWidth: 160,\n suppressSorting: true,\n },\n {\n columnName: 'cumulativeTime',\n label: this._translateService.instant('STE_LABEL_CUMULATIVE_TIME') as string,\n cellType: TableCellType.Custom,\n cellTemplate: this.cumulativeTimeTemplate,\n minWidth: 80,\n maxWidth: 160,\n suppressSorting: true,\n },\n ];\n }\n\n public isStart = (currentStepId: IGuid): boolean => currentStepId.equals(this.startId);\n\n public isLoading = (currentStepId: IGuid): boolean => {\n return currentStepId.equals(this.loadingId);\n };\n\n public isInProgress = (currentStepId: IGuid): boolean => {\n return !this.isLoading(currentStepId) && !this.isStart(currentStepId) && !this.isEnd(currentStepId) && !this.isInterrupted(currentStepId);\n };\n\n public isInterrupted = (currentStepId: IGuid): boolean => {\n return currentStepId.equals(this.interruptedId);\n };\n\n public isEnd = (currentStepId: IGuid): boolean => {\n return currentStepId.equals(this.endId);\n };\n\n public isProcedureStarted = (): boolean => {\n return this._hadFirstStateChangeToInProgress || !this._incident.stateId.equals(StateGuids.NEW);\n };\n\n public isProcedureInterrupted = (): boolean => {\n return !this._incident.currentStepId?.isEmpty() && !this._incident.currentStepId?.equals(this.endId) && this._incident.stateId.equals(StateGuids.SOLVED);\n };\n\n public isProcedureCompleted = (): boolean => {\n return !this._incident.currentStepId?.isEmpty() && (this._incident.currentStepId?.equals(this.endId) || this._incident.stateId.equals(StateGuids.CLOSED));\n };\n\n public isResetCommandVisible = (): boolean => !this.isReadonly && (!this.isCurrentStepRoot || this.isProcedureCompleted());\n\n public async back(): Promise {\n try {\n this._currentStep$.next(this.loadingStep);\n switch (this._incident.stateId?.toString().toUpperCase()) {\n case StateGuids.SOLVED.toString().toUpperCase():\n await this.executeCommandOrThrow(new ChangeStateCommand(this._incident.id, StateGuids.IN_PROGRESS));\n if (this._incident.currentStepId?.equals(this.endId)) {\n await this.executeCommandOrThrow(new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Previous, SafeGuid.EMPTY, this.comment));\n }\n break;\n case StateGuids.IN_PROGRESS.toString().toUpperCase():\n await this.executeCommandOrThrow(new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Previous, SafeGuid.EMPTY, this.comment));\n break;\n default:\n await this.executeCommandOrThrow(new ChangeStateCommand(this._incident.id, StateGuids.IN_PROGRESS));\n await this.executeCommandOrThrow(new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Previous, SafeGuid.EMPTY, this.comment));\n break;\n }\n return;\n } catch (e) {\n this._logger.traceError(e);\n this._notificationService.notifyError(this._translateService.instant('STE_MESSAGE_GO_BACK_FAILED') as string);\n this.revertToLatest();\n }\n }\n\n public async skip(): Promise {\n try {\n if (!this._incident.id) return false;\n this._currentStep$.next(this.loadingStep);\n if (!this._incident.stateId?.equals(StateGuids.IN_PROGRESS)) {\n await this.executeCommandOrThrow(new ChangeStateCommand(this._incident.id, StateGuids.IN_PROGRESS));\n }\n const command = new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Skip, SafeGuid.EMPTY, this.skipReason);\n await this.executeCommandOrThrow(command);\n this.skipReason = '';\n\n return true;\n } catch (e) {\n this._logger.traceError(e);\n this._notificationService.notifyError(this._translateService.instant('STE_MESSAGE_SKIP_STEP_FAILED') as string);\n this.revertToLatest();\n }\n return false;\n }\n\n public async onOptionClicked(optionId: IGuid): Promise {\n try {\n const comment = this.comment;\n this._currentStep$.next(this.loadingStep);\n // TODO: WAPI should change ownership when swapping state or answering procedure but it does not\n if (!this._isOwner) await this.executeCommandOrThrow(new TakeOwnershipCommand(this._incident.id));\n if (optionId.equals(this.startId)) {\n if (!this._incident.stateId?.equals(StateGuids.IN_PROGRESS)) {\n await this.executeCommandOrThrow(new ChangeStateCommand(this._incident.id, StateGuids.IN_PROGRESS));\n }\n } else {\n await this.executeCommandOrThrow(new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Complete, optionId, comment));\n await this.optionsPopup?.close();\n }\n return;\n } catch (e) {\n this._logger.traceError(e);\n this._notificationService.notifyError(this._translateService.instant('STE_MESSAGE_COMPLETE_STEP_FAILED') as string);\n this.revertToLatest();\n }\n }\n\n public async toggleOptions(): Promise {\n await this.optionsPopup?.toggle();\n }\n\n public toggleContextMenu(): void {\n this.isContextMenuOpen = !this.isContextMenuOpen && this.procedureMenuOptions.length > 0;\n this.contextMenu.toggle().fireAndForget();\n }\n\n public toggleSkipModal = (): void => this.showModal(this._skipStepModalId);\n\n public toggleRestartModal = (): void => this.showModal(this._restartModalId);\n\n public toggleTTRModal = (): void => this.showModal(this._ttrModalId);\n\n public addComment(): void {\n this.manualCommentOpen = true;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext;\n }\n\n private showModal(modalId: string): void {\n if (this._modalService) {\n this._modalService.show(modalId);\n this.loseFocus();\n }\n }\n\n private executeCommandOrThrow(command: MCCommandBase): Promise {\n return this._incidentCommandService.execute(command).toPromise();\n }\n\n private loseFocus(): void {\n // TODO: ideally, the modal service should handle this: not allow 2 modals to be open.\n (document.activeElement as HTMLElement)?.blur();\n }\n\n private async restartProcedure(): Promise {\n try {\n this._currentStep$.next(this.loadingStep);\n await this.executeCommandOrThrow(new AnswerProcedureCommand(this._incident.id, ProcedureStepActionType.Reset, SafeGuid.EMPTY, this.restartReason));\n this.restartReason = '';\n return true;\n } catch (e) {\n this._logger.traceError(e);\n this.revertToLatest();\n }\n return false;\n }\n\n private cancelRestart(): Promise {\n this.restartReason = '';\n return this.closeModal(this._restartModalId);\n }\n\n private closeTTRModal = (): Promise => this.closeModal(this._ttrModalId);\n\n private closeModal(modalId: string): Promise {\n if (this._modalService) {\n this._modalService.hide(modalId);\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n }\n\n private updateContextMenu() {\n this.procedureMenuOptions = [];\n if (this.isResetCommandVisible()) {\n this.procedureMenuOptions.push({\n id: '1',\n text: this._translateService.instant('STE_LABEL_RESTART_PROCEDURE') as string,\n actionItem: {\n execute: () => this.toggleRestartModal(),\n },\n });\n }\n if (this._isOwner) {\n this.procedureMenuOptions.push({\n id: '1',\n text: this._translateService.instant('STE_LABEL_TTR_DETAILS') as string,\n actionItem: {\n execute: () => this.toggleTTRModal(),\n },\n });\n }\n }\n\n private buildTTRDetails(events: List, steps: Step[]) {\n const eventsOrderedByProcessTime = events?.sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime());\n const startedTime = eventsOrderedByProcessTime.find((e) => e instanceof StateChangedEvent && e.stateId.equals(StateGuids.IN_PROGRESS))?.processTimeUtc ?? null;\n const entries: { name: string; elapsedTime: TimeSpan; cumulativeTime: TimeSpan }[] = [];\n\n if (startedTime) {\n let previousElapsedTime = new TimeSpan(new Date(startedTime).getTime());\n events\n .filter((e): e is ProcedureStepAnsweredEvent => e instanceof ProcedureStepAnsweredEvent)\n .sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime())\n .forEach((value) => {\n const processTime = new Date(value.processTimeUtc);\n const name =\n value.stepId === this.endId\n ? (this._translateService.instant('STE_LABEL_COMPLETED') as string)\n : steps.find((step) => step.id.equals(value.stepId))?.name ?? (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string);\n const cumulativeTime = new TimeSpan(processTime.getTime() - new Date(startedTime).getTime());\n const elapsedTime = new TimeSpan(processTime.getTime() - previousElapsedTime.totalMilliseconds);\n entries.push({ cumulativeTime, name, elapsedTime });\n previousElapsedTime = new TimeSpan(processTime.getTime());\n });\n }\n this.ttrDetails.next(entries.sort((a, b) => a.cumulativeTime.totalMilliseconds - b.cumulativeTime.totalMilliseconds));\n }\n\n private revertToLatest(): void {\n const latestKnownStep = this._steps.get(this._lastKnownStepId!.toString().toUpperCase())!;\n this._isReverting = true;\n this._currentStep$.next(latestKnownStep);\n }\n\n private getStepName(stepId: IGuid): string {\n if (stepId.equals(this.endId)) return this._translateService.instant('STE_LABEL_COMPLETED') as string;\n\n return this._steps.get(stepId.toString().toUpperCase())?.name ?? (this._translateService.instant('STE_LABEL_UNAVAILABLE_INFORMATION') as string);\n }\n\n private async handleUpdate(incident: MCIncident): Promise {\n if (!incident.procedure) {\n this._logger.traceWarning('Incident procedure was not defined for procedure widget');\n return;\n }\n\n this._incident = incident;\n const events = incident.events;\n\n const stateChangedEvents = events?.filter((e) => e instanceof StateChangedEvent).map((e) => e as StateChangedEvent);\n this._hadFirstStateChangeToInProgress = !!stateChangedEvents?.find((e) => e.stateId.equals(StateGuids.IN_PROGRESS));\n\n const ownerId = incident.ownerId ?? null;\n this._hasOwner = !!ownerId;\n\n this._isOwner = !!(ownerId && this._mcUserService.currentUser.userInfo.id?.equals(ownerId));\n\n this.isReadonly = this._hasOwner && !this._isOwner;\n\n this.buildTTRDetails(events, incident.procedure.steps);\n\n let elapsedTime = new TimeSpan(0);\n let nextStep: Step | null;\n if (!this.isProcedureStarted()) {\n nextStep = this.startStep;\n } else if (this.isProcedureInterrupted()) {\n nextStep = this.interruptedStep;\n } else if (this.isProcedureCompleted()) {\n nextStep = this.endStep;\n const processTimeSortedEvents = events.sort((a, b) => new Date(a.processTimeUtc).getTime() - new Date(b.processTimeUtc).getTime());\n const startEvent = processTimeSortedEvents.find((e) => e instanceof StateChangedEvent && e.stateId.equals(StateGuids.IN_PROGRESS)) ?? null;\n const startedTime = new TimeSpan(startEvent ? new Date(startEvent.processTimeUtc).getTime() : 0);\n const endEvent = processTimeSortedEvents.reverse().find((e) => e instanceof ProcedureStepAnsweredEvent && e.nextStepId.equals(this.endId));\n const endTime = new TimeSpan(endEvent ? new Date(endEvent.processTimeUtc).getTime() : 0);\n elapsedTime = new TimeSpan(endTime.totalMilliseconds - startedTime.totalMilliseconds);\n } else {\n try {\n nextStep = await this._incidentApiService.getCurrentProcedureStep(incident.id).toPromise();\n this._steps.set(nextStep.id.toString().toUpperCase(), nextStep);\n } catch (e) {\n this._notificationService.notifyError(this._translateService.instant('STE_MESSAGE_STEP_FAILED') as string);\n this.revertToLatest();\n throw e;\n }\n }\n\n this.completedLabel =\n elapsedTime.totalMilliseconds > 0\n ? stringFormat(this._translateService.instant('STE_LABEL_COMPLETED_IN') as string, elapsedTime.toString())\n : (this._translateService.instant('STE_LABEL_COMPLETED') as string);\n\n if (nextStep) {\n this.isCurrentStepRoot = nextStep.isRoot(events.toArray());\n this._currentStep$.next(nextStep);\n this._lastKnownStepId = nextStep.id;\n }\n\n this.updateContextMenu();\n }\n}\n","\n \n \n
    \n {{ 'STE_LABEL_LATEST_ACTIVITY' | translate }}\n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n {{ 'STE_MESSSAGE_NO_FILTER' | translate }}\n
    \n \n
    \n
    \n \n {{ activityEvent.delimiter }}\n \n
    \n
    \n
    \n \n
    \n
    \n {{ activityEvent.category.name }} \n
    \n
    \n \n {{\n activityEvent.isSameDay\n ? (activityEvent.processTimeUtc | dateFormatWithTimezone: 'h:mm:ss A' | async)\n : (activityEvent.processTimeUtc | dateFormatWithTimezone: 'MMM d, y h:mm:ss A' | async)\n }}\n \n
    \n
    \n \n {{ activityEvent.textDisplay.length > maxTextLength ? truncate(activityEvent.textDisplay) : activityEvent.textDisplay }}\n maxTextLength\"\n [flavor]=\"ButtonFlavor.Flat\"\n (click)=\"activityEvent.isExpanded = true\"\n appTooltip=\"Show More\"\n >\n \n \n \n {{ activityEvent.textDisplay }}\n \n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n \n \n
    \n\n\n \n \n
    \n \n \n \n \n {{ availableEventType.text }}\n \n \n \n
    \n
    \n\n","import { McSetting, McSettingService } from './../../services/mc-setting/mc-setting.service';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { filter, map, switchMap, tap } from 'rxjs/operators';\nimport { GenMeltedModal } from '@genetec/gelato-angular';\nimport { ButtonFlavor, Icon, IconSize, TextFlavor, PopupPosition, SpinnerSize, SelectionType } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackedComponent } from '@shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { PluginTypes } from '@shared/interfaces/plugins/public/plugin-types';\nimport { MissionControlContentTypes } from '../../mission-control-content-types';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '@shared/interfaces/plugins/public/plugin-public.interface';\nimport { TrackingService } from '@shared/services/tracking.service';\nimport { IncidentService } from '../../services/incident/incident.service';\nimport { ContentFields } from '../../content-fields';\nimport { toGuid } from '../../utils/guid-utils';\nimport { MCIncident } from '@modules/mission-control/models/mc-incident';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { ActivityEvent, ActivityEventService } from '@modules/mission-control/services/activity-event/activity-event.service';\nimport { IncidentSelectionService } from '@modules/mission-control/services/incident/incident-selection.service';\nimport { ListItem } from '@modules/shared/interfaces/list-item';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\nconst isContentSupported = (content: Content): boolean => !!content?.type.equals(MissionControlContentTypes.incident);\n\n@UntilDestroy()\n@Component({\n selector: 'app-activity-widget',\n templateUrl: './activity-widget.component.html',\n styleUrls: ['./activity-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: ActivityWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: ActivityWidgetComponent.pluginId } as PluginComponentExposure,\n isContentSupported,\n})\nexport class ActivityWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('A9258DF6-7A91-4232-8276-1C22D3B4FA63');\n\n @ViewChild('filterModal') eventFilterModal!: GenMeltedModal;\n\n public readonly TextFlavor = TextFlavor;\n public readonly IconSize = IconSize;\n public readonly Icon = Icon;\n public readonly ListSelectionType = SelectionType;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly PopupPosition = PopupPosition;\n public readonly SpinnerSize = SpinnerSize;\n\n public maxTextLength = 250;\n public content: Content | null = null;\n public dataContext: unknown;\n public filteredIncidentEvents$!: Observable;\n private _incidentId: IGuid | null = null;\n\n public set selectedEventTypes(value: ListItem[]) {\n this._selectedEventTypes$.next(value);\n this._mcSettingService.set(\n McSetting.eventFilter,\n this.selectedEventTypes.map((x) => x.id)\n );\n }\n\n public get selectedEventTypes() {\n return this._selectedEventTypes$.getValue();\n }\n\n private cachedSelectedEventTypes: ListItem[] = [];\n\n public availableEventTypes!: ListItem[];\n\n private _selectedEventTypes$ = new BehaviorSubject([]);\n private _filteredIncidentEvents$!: Subject;\n\n constructor(\n private _incidentService: IncidentService,\n private _incidentSelectionService: IncidentSelectionService,\n private _translateService: TranslateService,\n private _activityEventService: ActivityEventService,\n private _mcSettingService: McSettingService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n\n this.availableEventTypes = [\n { id: '1000', text: this._translateService.instant('STE_LABEL_SYSTEM_ACTION') as string, icon: this.MeltedIcon.Incident },\n { id: '1001', text: this._translateService.instant('STE_LABEL_USER_ACTION') as string, icon: this.MeltedIcon.Person },\n { id: '1002', text: this._translateService.instant('STE_LABEL_COMMENTS') as string, icon: this.MeltedIcon.Message },\n { id: '1003', text: this._translateService.instant('STE_LABEL_NOTES') as string, icon: this.MeltedIcon.Email },\n { id: '1004', text: this._translateService.instant('STE_LABEL_PROCEDURE') as string, icon: this.MeltedIcon.LogFile },\n ] as ListItem[];\n\n const targetedIncident = this._incidentId ? (await this._incidentService.getIncident(this._incidentId).toPromise()) ?? null : null;\n\n const incident$ = this._incidentSelectionService.selectedIncident$.pipe(filter((i): i is MCIncident => i instanceof MCIncident && i.id.equals(targetedIncident?.id!)));\n\n this._filteredIncidentEvents$ = new Subject();\n this.filteredIncidentEvents$ = this._filteredIncidentEvents$.asObservable();\n\n this.refreshEventTypesFromSettings();\n\n const filters$ = this._selectedEventTypes$.pipe(map((item) => item.map((i) => i.text)));\n\n combineLatest([incident$, filters$])\n .pipe(\n switchMap(([incident, filters]) => this._activityEventService.getActivityEvents(incident, filters)),\n untilDestroyed(this)\n )\n .subscribe(this._filteredIncidentEvents$);\n }\n\n truncate = (input: string): string => (input.length > this.maxTextLength ? `${input.substring(0, this.maxTextLength)}...` : input);\n\n public eventFilterChange(selectEventType: ListItem, isChecked: boolean): void {\n selectEventType.isChecked = isChecked;\n if (isChecked) {\n this.selectedEventTypes.push(selectEventType);\n } else {\n this.selectedEventTypes.remove(selectEventType);\n }\n }\n\n public toggleEventFilterSelection() {\n this.refreshEventTypesFromSettings();\n\n // Clone the current list to restore it in case the user cancels\n this.cachedSelectedEventTypes = this.selectedEventTypes.map(({ id, text, icon, isChecked }) => ({\n id,\n text,\n icon,\n isChecked,\n }));\n\n this.eventFilterModal.show();\n }\n\n public onEventFilterSelectionSaved = async (): Promise => {\n this._selectedEventTypes$.next(this.selectedEventTypes);\n this._mcSettingService.set(\n McSetting.eventFilter,\n this.selectedEventTypes.map((x) => x.id)\n );\n return Promise.resolve(true);\n };\n\n public onEventFilterSelectionCancelled = async (): Promise => {\n this.selectedEventTypes = this.cachedSelectedEventTypes;\n return Promise.resolve(true);\n };\n\n public trackById = (_: number, item: ActivityEvent): IGuid => item.id;\n\n public setContent(content: Content): void {\n this.content = content;\n // TODO: Move to main content which will probably be the incident-info widget\n if (this.content?.parameters?.hasField(ContentFields.incidentId) ?? false) {\n const incidentIdString = this.content?.parameters?.getField(ContentFields.incidentId) as string;\n const incidentId = toGuid(incidentIdString);\n this._incidentId = incidentId;\n this._incidentService\n .getIncident(incidentId)\n .pipe(\n filter((i): i is MCIncident => i instanceof MCIncident),\n tap(async (incident) => await this._incidentSelectionService.selectIncident(incident)),\n untilDestroyed(this)\n )\n .subscribe();\n }\n }\n\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext;\n }\n\n private refreshEventTypesFromSettings() {\n const eventFilter = this._mcSettingService.doesSettingExist(McSetting.eventFilter) ? this._mcSettingService.getEventFilter() : this.availableEventTypes.map((x) => x.id);\n this.selectedEventTypes = this.availableEventTypes.filter((type) => eventFilter.includes(type.id));\n this.availableEventTypes.forEach((x) => (x.isChecked = eventFilter.includes(x.id)));\n }\n}\n","import { Constants } from '@modules/shared/utilities/constants';\nimport { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2022 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const KnownCustomHeaderIds = Constants({\n IncidentCustomHeaderId: SafeGuid.parse('1C1E8D8B-7EA7-4F3D-8076-E8C5BA911D0B'),\n});\n","import { Component, Input } from '@angular/core';\nimport { IconService } from '@modules/mission-control/services/icons/icon.service';\nimport { SidePaneHeaderInfo } from '@modules/shared/components/side-pane/sidepane-header/sidepane-header.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { Icon } from '@genetec/gelato';\nimport { Subject } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport { KnownCustomHeaderIds } from '@modules/mission-control/side-pane-custom-headers';\n\n@Component({\n selector: 'app-incident-sidepane-header',\n templateUrl: './incident-sidepane-header.component.html',\n})\n@InternalPluginDescriptor({\n type: IncidentSidePaneHeaderComponent,\n pluginTypes: [PluginTypes.SidePaneHeader],\n exposure: {\n id: IncidentSidePaneHeaderComponent.pluginId,\n subSection: KnownCustomHeaderIds.IncidentCustomHeaderId,\n },\n isSupported: () => true,\n})\nexport class IncidentSidePaneHeaderComponent extends TrackedComponent implements ContentPluginComponent {\n public static pluginId = SafeGuid.parse('1C1E8D8B-7EA7-4F3D-8076-E8C5BA911D0B');\n\n @Input() public headerInfo?: SidePaneHeaderInfo;\n\n private dataContext?: unknown;\n private onDestroy$ = new Subject();\n\n constructor(trackingService: TrackingService, private iconService: IconService) {\n super(trackingService);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.onDestroy$.next();\n }\n\n setContent(content: Content): void {\n if (this.isHeaderInfo(content)) {\n this.headerInfo = content;\n\n //Load the icon from MC Icon Service instead of ResourceProvider\n if (this.headerInfo.titleIcon) {\n const iconID = this.headerInfo.titleIcon;\n // Show this icon while loading\n this.headerInfo.titleIcon = Icon.Incident;\n this.iconService\n .getIcon(iconID)\n .pipe(take(1), takeUntil(this.onDestroy$))\n .subscribe((icon) => {\n if (this.headerInfo) {\n this.headerInfo.titleIcon = icon;\n }\n });\n }\n }\n }\n\n setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext;\n }\n\n private isHeaderInfo(content: unknown): content is SidePaneHeaderInfo {\n return (content as SidePaneHeaderInfo) !== undefined;\n }\n}\n","\n","import { NgModule } from '@angular/core';\nimport { AsyncPipe, CommonModule, DatePipe } from '@angular/common';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { NgxsModule } from '@ngxs/store';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { SharedModule } from '@shared/shared.module';\nimport { ActivityEventService } from '@modules/mission-control/services/activity-event/activity-event.service';\nimport { LinkedIncidentWidgetComponent } from '@modules/mission-control/components/linked-incident-widget/linked-incident-widget.component';\nimport { LinkedIncidentService } from '@modules/mission-control/services/linked-incident/linked-incident.service';\nimport { LinkedIncidentController } from '@modules/mission-control/controllers/linked-incident.controller';\nimport { QuickActionWidgetComponent } from '@modules/mission-control/components/quick-action-widget/quick-action-widget.component';\nimport { OverviewWidgetComponent } from '@modules/mission-control/components/overview-widget/overview-widget.component';\nimport { SourceIdsNamePipe } from '@modules/mission-control/pipes/source-ids.pipe';\nimport { LocationAreaNamePipe } from '@modules/mission-control/pipes/local-area-ids.pipe';\nimport { CategoryApiService } from '@modules/mission-control/services/category/category-api.service';\nimport { LinkedIncidentFilterComponent } from '@modules/mission-control/components/linked-incident-filter/linked-incident-filter.component';\nimport { IncidentCardComponent } from '@modules/mission-control/components/incident-card/incident-card.component';\nimport { TimezoneConversionPipe } from '@modules/mission-control/pipes/timezone-conversion.pipe';\nimport { IncidentApiService } from './services/incident/incident-api.service';\nimport { IncidentSelectionService } from './services/incident/incident-selection.service';\nimport { McSettingService } from './services/mc-setting/mc-setting.service';\nimport { IncidentRecipientModalComponent } from './components/incident-recipient/incident-recipient-modal.component';\nimport { IncidentCommandService } from './services/incident/incident-command.service';\nimport { FilterOwnerComponent } from './components/filters/filter-owner/filter-owner.component';\nimport { IncidentFilterComponent } from './components/incident-filter/incident-filter.component';\nimport { McUserService } from './services/mc-user.service';\nimport { UserNamePipe } from './pipes/user-name.pipe';\nimport { IncidentsTrayComponent } from './components/incidents-tray/incidents-tray.component';\nimport { IncidentsListComponent } from './components/incidents-list/incidents-list.component';\nimport { IncidentCommandProvider } from './services/incident-command-provider';\nimport { IncidentService } from './services/incident/incident.service';\nimport { McClient } from './services/mc-client.service';\nimport { PriorityNamePipe } from './pipes/priority-name.pipe';\nimport { StateNamePipe } from './pipes/state-name.pipe';\nimport { PriorityService } from './services/priority/priority.service';\nimport { StateService } from './services/state/state.service';\nimport { LocationNamePipe } from './pipes/location-name/location-name.pipe';\nimport { IncidentLocationService } from './services/incident-location/incident-location.service';\nimport { IncidentTypeService } from './services/incident-type.service';\nimport { McNotificationService } from './services/mc-notification.service';\nimport { IconService } from './services/icons/icon.service';\nimport { IncidentActionService } from './services/incident-actions/incident-actions.service';\nimport { LocationIconPipe } from './pipes/location-icon.pipe';\nimport { IncidentNotificationComponent } from './components/incident-notification/incident-notification.component';\nimport { IncidentCountService } from './services/incident-count/incident-count.service';\nimport { IncidentMapSelectorService } from './services/incident-map-selector/incident-map-selector.service';\nimport { ProcedureWidgetComponent } from './components/procedure-widget/procedure-widget.component';\nimport { ProcedureService } from './services/procedures/procedure.service';\nimport { IncidentEventService } from './services/events/incident-event.service';\nimport { ActivityWidgetComponent } from './components/activity-widget/activity-widget.component';\nimport { TriggerIncidentModalComponent } from './components/trigger-incident-modal/trigger-incident-modal.component';\nimport { McActionService } from './services/action/mc-action.service';\nimport { IncidentCommentComponent } from './components/incident-comment/incident-comment.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IncidentSidePaneHeaderComponent } from './components/incident-sidepane-header/incident-sidepane-header.component';\nimport { IncidentIconComponent } from './components/incident-icon/incident-icon.component';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@NgModule({\n imports: [CommonModule, SharedModule, GenAngularModule, NgxsModule, InfiniteScrollModule, ReactiveFormsModule],\n declarations: [\n FilterOwnerComponent,\n IncidentCardComponent,\n IncidentFilterComponent,\n IncidentNotificationComponent,\n IncidentRecipientModalComponent,\n IncidentsTrayComponent,\n IncidentsListComponent,\n LinkedIncidentWidgetComponent,\n LinkedIncidentFilterComponent,\n TriggerIncidentModalComponent,\n LocationIconPipe,\n LocationNamePipe,\n PriorityNamePipe,\n SourceIdsNamePipe,\n LocationAreaNamePipe,\n TimezoneConversionPipe,\n ProcedureWidgetComponent,\n ActivityWidgetComponent,\n OverviewWidgetComponent,\n QuickActionWidgetComponent,\n StateNamePipe,\n UserNamePipe,\n IncidentCommentComponent,\n IncidentSidePaneHeaderComponent,\n IncidentIconComponent,\n ],\n providers: [\n ActivityEventService,\n IconService,\n IncidentActionService,\n IncidentCommandProvider,\n IncidentCommandService,\n IncidentCountService,\n IncidentEventService,\n McActionService,\n IncidentLocationService,\n IncidentMapSelectorService,\n IncidentService,\n IncidentApiService,\n IncidentSelectionService,\n IncidentTypeService,\n LinkedIncidentService,\n McClient,\n McUserService,\n McNotificationService,\n PriorityService,\n ProcedureService,\n StateService,\n McSettingService,\n CategoryApiService,\n UserNamePipe,\n StateNamePipe,\n LocationNamePipe,\n PriorityNamePipe,\n SourceIdsNamePipe,\n LocationAreaNamePipe,\n AsyncPipe,\n DatePipe,\n LinkedIncidentController,\n ],\n})\nexport class MissionControlModule {\n constructor(incidentCommandProvider: IncidentCommandProvider) {}\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { IGuid } from 'safeguid';\nimport { SafeGuid as _guidImplementation } from 'safeguid';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const baseUrl = new InjectionToken('baseUrl');\n\nexport interface IHitClient {\n /**\n * @return Success\n */\n hitRule(hitRuleId: IGuid): Observable;\n}\n\n@Injectable()\nexport class HitClient implements IHitClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n hitRule(hitRuleId: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/Hit/HitRule?\";\n if (hitRuleId === undefined || hitRuleId === null)\n throw new Error(\"The parameter 'hitRuleId' must be defined and cannot be null.\");\n else\n url_ += \"hitRuleId=\" + encodeURIComponent(\"\" + hitRuleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processHitRule(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processHitRule(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processHitRule(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IHitRule.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface IReadClient {\n /**\n * @return Success\n */\n readInformation(readId: IGuid, timestamp: string, sourceEntity: IGuid): Observable;\n /**\n * @return Success\n */\n getReadImages(readId: IGuid, timestamp: string, sourceEntity: IGuid): Observable;\n}\n\n@Injectable()\nexport class ReadClient implements IReadClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(baseUrl) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"/WebApp\";\n }\n\n /**\n * @return Success\n */\n readInformation(readId: IGuid, timestamp: string, sourceEntity: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/Read/ReadInformation?\";\n if (readId === undefined || readId === null)\n throw new Error(\"The parameter 'readId' must be defined and cannot be null.\");\n else\n url_ += \"readId=\" + encodeURIComponent(\"\" + readId) + \"&\";\n if (timestamp === undefined || timestamp === null)\n throw new Error(\"The parameter 'timestamp' must be defined and cannot be null.\");\n else\n url_ += \"timestamp=\" + encodeURIComponent(\"\" + timestamp) + \"&\";\n if (sourceEntity === undefined || sourceEntity === null)\n throw new Error(\"The parameter 'sourceEntity' must be defined and cannot be null.\");\n else\n url_ += \"sourceEntity=\" + encodeURIComponent(\"\" + sourceEntity) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processReadInformation(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processReadInformation(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processReadInformation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReadInformation.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getReadImages(readId: IGuid, timestamp: string, sourceEntity: IGuid): Observable {\n let url_ = this.baseUrl + \"/Api/Read/ReadImages?\";\n if (readId === undefined || readId === null)\n throw new Error(\"The parameter 'readId' must be defined and cannot be null.\");\n else\n url_ += \"readId=\" + encodeURIComponent(\"\" + readId) + \"&\";\n if (timestamp === undefined || timestamp === null)\n throw new Error(\"The parameter 'timestamp' must be defined and cannot be null.\");\n else\n url_ += \"timestamp=\" + encodeURIComponent(\"\" + timestamp) + \"&\";\n if (sourceEntity === undefined || sourceEntity === null)\n throw new Error(\"The parameter 'sourceEntity' must be defined and cannot be null.\");\n else\n url_ += \"sourceEntity=\" + encodeURIComponent(\"\" + sourceEntity) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n withCredentials: true,\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processGetReadImages(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processGetReadImages(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetReadImages(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReadImages.fromJS(resultData200);\n \n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Bad Request\", status, _responseText, _headers);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class IHitRule implements IIHitRule {\n readonly id?: IGuid;\n readonly color?: string | null;\n readonly name?: string | null;\n\n constructor(data?: IIHitRule) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).id = _guidImplementation.from(_data[\"id\"]) !== undefined ? _guidImplementation.from(_data[\"id\"]) : null;\n (this).color = _data[\"color\"] !== undefined ? _data[\"color\"] : null;\n (this).name = _data[\"name\"] !== undefined ? _data[\"name\"] : null;\n }\n }\n\n static fromJS(data: any): IHitRule {\n data = typeof data === 'object' ? data : {};\n let result = new IHitRule();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id?.toString() !== undefined ? this.id?.toString() : null;\n data[\"color\"] = this.color !== undefined ? this.color : null;\n data[\"name\"] = this.name !== undefined ? this.name : null;\n return data;\n }\n\n clone(): IHitRule {\n const json = this.toJSON();\n let result = new IHitRule();\n result.init(json);\n return result;\n }\n}\n\nexport interface IIHitRule {\n id?: IGuid;\n color?: string | null;\n name?: string | null;\n}\n\nexport class PlateRead implements IPlateRead {\n plate?: string | null;\n plateState?: string | null;\n attributes?: { [key: string]: string; } | null;\n source?: PlateReadSource;\n timestamp?: string;\n address?: string | null;\n\n constructor(data?: IPlateRead) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.plate = _data[\"plate\"] !== undefined ? _data[\"plate\"] : null;\n this.plateState = _data[\"plateState\"] !== undefined ? _data[\"plateState\"] : null;\n if (_data[\"attributes\"]) {\n this.attributes = {} as any;\n for (let key in _data[\"attributes\"]) {\n if (_data[\"attributes\"].hasOwnProperty(key))\n (this.attributes)![key] = _data[\"attributes\"][key] !== undefined ? _guidConverters.toGuid(_data[\"attributes\"][key]) : null;\n }\n }\n else {\n this.attributes = null;\n }\n this.source = _data[\"source\"] ? PlateReadSource.fromJS(_data[\"source\"]) : null;\n this.timestamp = _data[\"timestamp\"] !== undefined ? _data[\"timestamp\"] : null;\n this.address = _data[\"address\"] !== undefined ? _data[\"address\"] : null;\n }\n }\n\n static fromJS(data: any): PlateRead {\n data = typeof data === 'object' ? data : {};\n let result = new PlateRead();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"plate\"] = this.plate !== undefined ? this.plate : null;\n data[\"plateState\"] = this.plateState !== undefined ? this.plateState : null;\n if (this.attributes) {\n data[\"attributes\"] = {};\n for (let key in this.attributes) {\n if (this.attributes.hasOwnProperty(key))\n (data[\"attributes\"])[key] = this.attributes[key] !== undefined ? this.attributes[key] : null;\n }\n }\n data[\"source\"] = this.source ? this.source.toJSON() : null;\n data[\"timestamp\"] = this.timestamp !== undefined ? this.timestamp : null;\n data[\"address\"] = this.address !== undefined ? this.address : null;\n return data;\n }\n\n clone(): PlateRead {\n const json = this.toJSON();\n let result = new PlateRead();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPlateRead {\n plate?: string | null;\n plateState?: string | null;\n attributes?: { [key: string]: string; } | null;\n source?: PlateReadSource;\n timestamp?: string;\n address?: string | null;\n}\n\nexport class PlateReadSource implements IPlateReadSource {\n patrollerId?: IGuid;\n userId?: IGuid;\n unitId?: IGuid;\n isManual?: boolean;\n\n constructor(data?: IPlateReadSource) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.patrollerId = _guidImplementation.from(_data[\"patrollerId\"]) !== undefined ? _guidImplementation.from(_data[\"patrollerId\"]) : null;\n this.userId = _guidImplementation.from(_data[\"userId\"]) !== undefined ? _guidImplementation.from(_data[\"userId\"]) : null;\n this.unitId = _guidImplementation.from(_data[\"unitId\"]) !== undefined ? _guidImplementation.from(_data[\"unitId\"]) : null;\n this.isManual = _data[\"isManual\"] !== undefined ? _data[\"isManual\"] : null;\n }\n }\n\n static fromJS(data: any): PlateReadSource {\n data = typeof data === 'object' ? data : {};\n let result = new PlateReadSource();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"patrollerId\"] = this.patrollerId?.toString() !== undefined ? this.patrollerId?.toString() : null;\n data[\"userId\"] = this.userId?.toString() !== undefined ? this.userId?.toString() : null;\n data[\"unitId\"] = this.unitId?.toString() !== undefined ? this.unitId?.toString() : null;\n data[\"isManual\"] = this.isManual !== undefined ? this.isManual : null;\n return data;\n }\n\n clone(): PlateReadSource {\n const json = this.toJSON();\n let result = new PlateReadSource();\n result.init(json);\n return result;\n }\n}\n\nexport interface IPlateReadSource {\n patrollerId?: IGuid;\n userId?: IGuid;\n unitId?: IGuid;\n isManual?: boolean;\n}\n\nexport class ReadImages implements IReadImages {\n contextImage?: string | null;\n lprImage?: string | null;\n\n constructor(data?: IReadImages) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.contextImage = _data[\"contextImage\"] !== undefined ? _data[\"contextImage\"] : null;\n this.lprImage = _data[\"lprImage\"] !== undefined ? _data[\"lprImage\"] : null;\n }\n }\n\n static fromJS(data: any): ReadImages {\n data = typeof data === 'object' ? data : {};\n let result = new ReadImages();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"contextImage\"] = this.contextImage !== undefined ? this.contextImage : null;\n data[\"lprImage\"] = this.lprImage !== undefined ? this.lprImage : null;\n return data;\n }\n\n clone(): ReadImages {\n const json = this.toJSON();\n let result = new ReadImages();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReadImages {\n contextImage?: string | null;\n lprImage?: string | null;\n}\n\nexport class ReadInformation implements IReadInformation {\n location?: ReadLocation;\n plateRead?: PlateRead;\n\n constructor(data?: IReadInformation) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.location = _data[\"location\"] ? ReadLocation.fromJS(_data[\"location\"]) : null;\n this.plateRead = _data[\"plateRead\"] ? PlateRead.fromJS(_data[\"plateRead\"]) : null;\n }\n }\n\n static fromJS(data: any): ReadInformation {\n data = typeof data === 'object' ? data : {};\n let result = new ReadInformation();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"location\"] = this.location ? this.location.toJSON() : null;\n data[\"plateRead\"] = this.plateRead ? this.plateRead.toJSON() : null;\n return data;\n }\n\n clone(): ReadInformation {\n const json = this.toJSON();\n let result = new ReadInformation();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReadInformation {\n location?: ReadLocation;\n plateRead?: PlateRead;\n}\n\nexport class ReadLocation implements IReadLocation {\n address?: string | null;\n latitude?: number;\n longitude?: number;\n\n constructor(data?: IReadLocation) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.address = _data[\"address\"] !== undefined ? _data[\"address\"] : null;\n this.latitude = _data[\"latitude\"] !== undefined ? _data[\"latitude\"] : null;\n this.longitude = _data[\"longitude\"] !== undefined ? _data[\"longitude\"] : null;\n }\n }\n\n static fromJS(data: any): ReadLocation {\n data = typeof data === 'object' ? data : {};\n let result = new ReadLocation();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"address\"] = this.address !== undefined ? this.address : null;\n data[\"latitude\"] = this.latitude !== undefined ? this.latitude : null;\n data[\"longitude\"] = this.longitude !== undefined ? this.longitude : null;\n return data;\n }\n\n clone(): ReadLocation {\n const json = this.toJSON();\n let result = new ReadLocation();\n result.init(json);\n return result;\n }\n}\n\nexport interface IReadLocation {\n address?: string | null;\n latitude?: number;\n longitude?: number;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n\nexport class _guidConverters {\n public static toGuid(inpt: any) : any {\n if (typeof inpt === 'string') {\n if (_guidImplementation.isGuid(inpt)) {\n return _guidImplementation.parse(inpt);\n }\n }\n return inpt;\n }\n}","export enum LprContentFields {\n ReadInformation = 'ReadInformation',\n ReadLocations = 'ReadLocations',\n AdditionalInformation = 'AdditionalInformation',\n ReadId = 'ReadId',\n LprRuleId = 'LprRuleId',\n HitType = 'HitType',\n}\n","import { SafeGuid } from 'safeguid';\nimport { Constants } from '../../shared/utilities/constants';\n\n// ==========================================================================\n// Copyright (C) 2022 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport const LprContentTypes = Constants({\n HitEvent: SafeGuid.parse('649788e8-1fc6-4de3-a8e4-5719c84d435d'),\n ReadEvent: SafeGuid.parse('73352e23-f185-4b98-98e3-51e1370548f4'),\n ReadEventContent: SafeGuid.parse('34b29c02-3406-48fb-8ef4-ea42ba1c0857'),\n});\n","\n
    \n \n
    \n\n\n\n
    \n
    \n {{ entry.key | titlecase }}\n {{ entry.value }}\n
    \n
    \n
    \n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { PlateRead } from '@modules/lpr/api/api';\nimport { TextFlavor } from '@genetec/gelato';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { BehaviorSubject, forkJoin, from, Observable } from 'rxjs';\nimport { filter, first, map, shareReplay, take, tap } from 'rxjs/operators';\nimport { IGuid } from 'safeguid';\nimport { DateFormat } from '@genetec/gelato-angular';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n@UntilDestroy()\n@Component({\n selector: 'app-read-general-information',\n templateUrl: './read-general-information.component.html',\n styleUrls: ['./read-general-information.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReadGeneralInformationComponent implements OnInit {\n @Input()\n public plateRead?: PlateRead;\n public isLoading$: Observable;\n public generalInformation: { key: string; value: string }[] = [];\n\n public readonly TextFlavor = TextFlavor;\n\n private isLoadingSubject$ = new BehaviorSubject(true);\n\n constructor(private securityCenterClientService: SecurityCenterClientService, private timeService: TimeService, private translateService: TranslateService) {\n this.isLoading$ = this.isLoadingSubject$.asObservable();\n }\n\n ngOnInit() {\n if (this.plateRead?.source) {\n const patroller$ = this.getEntityObservable(this.plateRead.source.patrollerId).pipe(first(), shareReplay(1));\n const unit$ = this.getEntityObservable(this.plateRead.source.unitId).pipe(first(), shareReplay(1));\n\n // forkJoin will continue only when all input observables are completed\n forkJoin([patroller$, unit$])\n .pipe(take(1), untilDestroyed(this))\n .subscribe(() => {\n this.isLoadingSubject$.next(false);\n });\n\n patroller$.pipe(this.addGeneralEntryFromEntityWithTitle('STE_ENTITY_PATROLLER'), untilDestroyed(this)).subscribe();\n unit$.pipe(this.addGeneralEntryFromEntityWithTitle('STE_ENTITY_LPR_UNIT'), untilDestroyed(this)).subscribe();\n } else {\n this.isLoadingSubject$.next(false);\n }\n\n if (this.plateRead?.timestamp) {\n const formattedTimestamp = this.timeService.formatTime(this.plateRead.timestamp, DateFormat.DateTime, true, false, undefined, false);\n this.addGeneralEntry('STE_LABEL_TIME', formattedTimestamp);\n }\n if (this.plateRead?.address) {\n this.addGeneralEntry('STE_LABEL_ADDRESS', this.plateRead.address);\n }\n }\n\n private addGeneralEntry(key: string, value: string): void {\n const translatedKey = this.translateService.instant(key) as string;\n this.generalInformation.push({ key: translatedKey, value });\n }\n\n private getEntityObservable(entityId?: IGuid): Observable {\n return from(entityId ? this.securityCenterClientService.scClient.getEntityAsync(Entity, entityId) : Promise.resolve(null));\n }\n\n private addGeneralEntryFromEntityWithTitle =\n (title: string) =>\n (source: Observable): Observable =>\n source.pipe(\n this.getEntityName(),\n filter((entityName) => !!entityName),\n tap((entityName) => this.addGeneralEntry(title, entityName as string))\n );\n\n private getEntityName =\n () =>\n (source: Observable): Observable =>\n source.pipe(map((entity) => entity?.name));\n}\n","
    \n
    \n \n {{ content?.title }}\n
    \n\n
    \n \n
    \n

    {{ plate }}

    \n

    {{ plateState }}

    \n
    \n
    \n\n \n\n \n\n
    \n \n \n
    \n
    \n {{ entry.name | titlecase }}\n {{ entry.information }}\n
    \n
    \n
    \n
    \n
    \n
    \n\n\n\n
    \n \n
    \n
    \n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { Icon, ImageFlavor, ImageFit, TextFlavor } from '@genetec/gelato';\nimport { ReadClient, ReadImages, ReadInformation } from '@modules/lpr/api/api';\nimport { LprContentFields } from '@modules/lpr/enumerations/lpr-content-fields';\nimport { LprContentTypes } from '@modules/lpr/enumerations/lpr-content-types';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { SharedContentFields } from '@modules/shared/enumerations/shared-content-fields';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { Observable } from 'rxjs';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2022 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport class AdditionalInformationEntry {\n constructor(public name: string, public information: string) {}\n}\n\nconst isContentSupported = (content: Content): boolean => {\n return content.type.equals(LprContentTypes.ReadEventContent);\n};\n\n@InternalContentPluginDescriptor({\n type: PlateReadWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: PlateReadWidgetComponent.pluginId, priority: 1 },\n isContentSupported,\n})\n@Component({\n selector: 'app-plate-read-widget',\n templateUrl: './plate-read-widget.component.html',\n styleUrls: ['./plate-read-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlateReadWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('2d646662-f55b-4a50-93e4-822b7871d666');\n public readonly TextFlavor = TextFlavor;\n public readonly Icon = Icon;\n public readonly ImageFlavor = ImageFlavor;\n public readonly ImageFit = ImageFit;\n\n public dataContext?: ContentService;\n public content?: Content;\n public readInformation?: ReadInformation;\n\n public readImages$?: Observable;\n public plate?: string;\n public plateState?: string;\n public additionalInformation: AdditionalInformationEntry[] = [];\n\n constructor(trackingService: TrackingService, private readClient: ReadClient) {\n super(trackingService);\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext as ContentService;\n }\n\n ngOnInit() {\n this.initializeFields();\n }\n\n private initializeFields(): void {\n const parameters = this.content?.parameters;\n if (parameters?.hasField(LprContentFields.ReadInformation)) {\n this.readInformation = ReadInformation.fromJS(parameters.getField(LprContentFields.ReadInformation));\n const plateRead = this.readInformation?.plateRead;\n if (plateRead) {\n this.plate = plateRead.plate ?? '';\n this.plateState = plateRead.plateState ?? '';\n\n if (plateRead.attributes) {\n this.additionalInformation = Object.entries(plateRead.attributes).map(([key, value]) => new AdditionalInformationEntry(key, value));\n }\n }\n }\n\n if (parameters?.hasField(LprContentFields.ReadId) && parameters.hasField(SharedContentFields.Timestamp) && parameters.hasField(SharedContentFields.SourceEntityGuid)) {\n const readId = parameters.getField(LprContentFields.ReadId);\n const readTimestamp = parameters.getField(SharedContentFields.Timestamp);\n const readSourceId = parameters.getField(SharedContentFields.SourceEntityGuid);\n if (readId && readTimestamp && readSourceId) {\n this.readImages$ = this.readClient.getReadImages(readId, readTimestamp, readSourceId);\n }\n }\n }\n}\n","\n
    \n \n
    \n\n\n\n
    \n \n \n {{ readLocation.address }} \n \n
    \n
    \n\n\n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Icon } from '@genetec/gelato';\nimport { LatLngBounds } from '@genetec/web-maps';\nimport { ReadLocation } from '@modules/lpr/api/api';\nimport { LprContentFields } from '@modules/lpr/enumerations/lpr-content-fields';\nimport { LprContentTypes } from '@modules/lpr/enumerations/lpr-content-types';\nimport { MapService } from '@modules/maps/services/map/map-service';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { from } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2022 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content): boolean => {\n return (\n (content.type.equals(LprContentTypes.ReadEvent) || content.type.equals(LprContentTypes.HitEvent)) &&\n content.parameters != null &&\n content.parameters.hasField(LprContentFields.ReadLocations) &&\n content.parameters.getField(LprContentFields.ReadLocations).length > 0\n );\n};\n\n@UntilDestroy()\n@InternalContentPluginDescriptor({\n type: ReadLocationWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: ReadLocationWidgetComponent.pluginId, priority: 2 },\n isContentSupported,\n})\n@Component({\n selector: 'app-read-location-widget',\n templateUrl: './read-location-widget.component.html',\n styleUrls: ['./read-location-widget.component.scss'],\n providers: [MapService],\n})\nexport class ReadLocationWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('0dd4c0ad-f610-4419-be71-f27b5746098a');\n\n public dataContext?: ContentService;\n public content?: Content;\n public readLocations: ReadLocation[] = [];\n public isLoading = true;\n public Icon = Icon;\n\n constructor(trackingService: TrackingService, private mapService: MapService) {\n super(trackingService);\n }\n\n ngOnInit() {\n if (this.content?.parameters?.hasField(LprContentFields.ReadLocations)) {\n this.readLocations = this.content.parameters.getField(LprContentFields.ReadLocations).map((location) => ReadLocation.fromJS(location));\n }\n from(this.mapService.initializeMap({ mapId: null, withEvents: false }))\n .pipe(take(1), untilDestroyed(this))\n .subscribe(() => {\n this.addAndZoomToReadLocations();\n this.isLoading = false;\n });\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext as ContentService;\n }\n\n private addAndZoomToReadLocations() {\n this.addReadLocationsToMap();\n this.fitMapBoundsToReadLocations();\n }\n\n private addReadLocationsToMap() {\n this.readLocations.forEach((readLocation, index) => {\n if (readLocation.latitude && readLocation.longitude) {\n this.mapService.addPin(`pin${index}`, { latitude: readLocation.latitude, longitude: readLocation.longitude });\n }\n });\n }\n\n private fitMapBoundsToReadLocations() {\n const latitudes = this.readLocations.map((location) => location.latitude).filter((latitude) => latitude);\n const longitudes = this.readLocations.map((location) => location.longitude).filter((longitude) => longitude);\n\n if (!this.mapService.map || latitudes.length === 0 || longitudes.length === 0) return;\n\n const southWest = { lat: latitudes.min() as number, lng: longitudes.min() as number };\n const northEast = { lat: latitudes.max() as number, lng: longitudes.max() as number };\n\n this.mapService.map.fitBounds(new LatLngBounds(southWest, northEast), { maxZoom: 8 });\n }\n}\n","
    \n
    \n \n \n {{ hitRule.name }}\n \n
    \n\n
    \n
    \n {{ hitField.key | titlecase }}\n {{ hitField.value }}\n
    \n
    \n
    \n\n\n\n
    \n \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { TextFlavor } from '@genetec/gelato';\nimport { HitClient, IHitRule } from '@modules/lpr/api/api';\nimport { LprContentFields } from '@modules/lpr/enumerations/lpr-content-fields';\nimport { LprContentTypes } from '@modules/lpr/enumerations/lpr-content-types';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\n\nconst isContentSupported = (content: Content): boolean => {\n return (\n content.type.equals(LprContentTypes.HitEvent) &&\n content.parameters != null &&\n (content.parameters.hasField(LprContentFields.LprRuleId) || content.parameters.hasField(LprContentFields.HitType))\n );\n};\n\n@InternalContentPluginDescriptor({\n type: HitEventWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: HitEventWidgetComponent.pluginId, priority: 1 },\n isContentSupported,\n})\n@Component({\n selector: 'app-hit-event-widget',\n templateUrl: './hit-event-widget.component.html',\n styleUrls: ['./hit-event-widget.component.scss'],\n})\nexport class HitEventWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('9abccd14-bd66-415d-89fd-643e41cde116');\n\n public readonly TextFlavor = TextFlavor;\n\n public dataContext?: ContentService;\n public content?: Content;\n public hitRule$?: Observable;\n\n public hitFields: { key: string; value: string }[] = [];\n\n constructor(private hitClient: HitClient, trackingService: TrackingService, private translateService: TranslateService) {\n super(trackingService);\n }\n\n setContent(content: Content): void {\n this.content = content;\n }\n setDataContext(dataContext: unknown): void {\n this.dataContext = dataContext as ContentService;\n }\n\n ngOnInit() {\n this.initializeHitFields();\n }\n\n private initializeHitFields(): void {\n if (this.content?.parameters) {\n if (this.content.parameters.hasField(LprContentFields.LprRuleId)) {\n const lprRuleId = this.content.parameters.getField(LprContentFields.LprRuleId);\n if (lprRuleId) {\n const { success, value } = SafeGuid.tryParse(lprRuleId);\n if (success) {\n this.hitRule$ = this.hitClient.hitRule(value).pipe(first());\n }\n }\n }\n\n if (this.content.parameters.hasField(LprContentFields.HitType)) {\n this.hitFields.push({ key: this.translateService.instant('STE_LABEL_HIT_TYPE') as string, value: this.content.parameters.getField(LprContentFields.HitType) });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenAngularModule } from '@genetec/gelato-angular';\nimport { SharedModule } from '@modules/shared/shared.module';\nimport { PlateReadWidgetComponent } from './components/widgets/plate-read-widget/plate-read-widget.component';\nimport { ReadGeneralInformationComponent } from './components/widgets/plate-read-widget/read-general-information/read-general-information.component';\nimport { ReadLocationWidgetComponent } from './components/widgets/read-location-widget/read-location-widget.component';\nimport { HitEventWidgetComponent } from './components/widgets/hit-event-widget/hit-event-widget.component';\nimport { HitClient, ReadClient } from './api/api';\n\n@NgModule({\n imports: [CommonModule, GenAngularModule, SharedModule],\n declarations: [PlateReadWidgetComponent, ReadLocationWidgetComponent, ReadGeneralInformationComponent, HitEventWidgetComponent],\n providers: [HitClient, ReadClient],\n})\nexport class LprModule {}\n","import { IGuid, SafeGuid } from 'safeguid';\nimport { ContentExtensionServicesProvider, ExtensionService } from '../../interfaces/plugins/public/plugin-services-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n// This service is used to be able to add service bound to a content\nexport class ContentServicesProviderService implements ContentExtensionServicesProvider {\n private contentServices = new Map();\n\n public getService(contentId: IGuid): T | undefined {\n const services: ExtensionService[] | undefined = this.contentServices.get(contentId.toString());\n\n if (services === undefined) {\n return undefined;\n }\n\n return services.find((item) => (item as T) !== undefined) as T;\n }\n\n public setService(contentId: IGuid, contentService: T): void {\n let services: ExtensionService[] | undefined = this.contentServices.get(contentId.toString());\n\n if (services === undefined) {\n services = [];\n this.contentServices.set(contentId.toString(), services);\n }\n\n const existingService = services.find((item) => (item as T) !== undefined);\n if (existingService) {\n this.removeService(contentId);\n }\n\n services.push(contentService);\n }\n\n public removeService(contentId: IGuid): boolean {\n const services: ExtensionService[] | undefined = this.contentServices.get(contentId.toString());\n\n if (services === undefined) {\n return false;\n }\n\n const service = services.find((item) => (item as T) !== undefined);\n if (!service) {\n return false;\n }\n\n const indexOfService = services.indexOf(service);\n if (indexOfService === -1) {\n return false;\n }\n\n services.splice(indexOfService, 1);\n return true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, NgModule } from '@angular/core';\nimport { GenAngularModule, GenModalService, MeltedIcon } from '@genetec/gelato-angular';\nimport { ModuleDescriptor } from '@modules/shared/interfaces/modules/public/module-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { DndModule } from 'ngx-drag-drop';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { SharedCommands } from '../shared/enumerations/shared-commands';\nimport { CommandsService, COMMANDS_SERVICE } from '../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '../shared/services/language/language.service';\nimport { SharedModule } from '../shared/shared.module';\nimport { TileCanvasComponent } from './components/tile-canvas/tile-canvas.component';\nimport { TileStateHeaderComponent } from './components/tile-state-header/tile-state-header.component';\nimport { TilesTaskComponent } from './components/tiles-task/tiles-task.component';\nimport { TileComponent } from './components/tiles/tile.component';\nimport { TileService } from './services/tile.service';\nimport { TileCanvasStateService } from './state/tile-canvas-state.service';\nimport { TileCanvasState } from './state/tile-canvas.state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@NgModule({\n imports: [CommonModule, SharedModule, DndModule, NgxsModule.forFeature([TileCanvasState]), GenAngularModule],\n declarations: [TilesTaskComponent, TileComponent, TileCanvasComponent, TileStateHeaderComponent],\n providers: [GenModalService, TileCanvasStateService, TileService],\n})\n@ModuleDescriptor({\n type: TilesModule,\n inclusions: {\n globalPrivileges: [KnownPrivileges.changeTilePatternPrivilege],\n },\n})\nexport class TilesModule {\n constructor(private translateService: TranslateService, languageService: LanguageService, @Inject(COMMANDS_SERVICE) private commandsService: CommandsService) {\n languageService.ready.pipe(untilDestroyed(this)).subscribe(() => {\n this.registerCommands();\n });\n }\n\n private registerCommands() {\n this.commandsService.registerCommands([\n {\n id: SharedCommands.ClearTiles,\n name: () => this.translateService?.instant('STE_BUTTON_CLEARALL') as string,\n icon: MeltedIcon.Trash,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'CTRL.Backspace',\n },\n {\n id: SharedCommands.ClearTile,\n name: () => this.translateService?.instant('STE_BUTTON_CLEAR') as string,\n icon: MeltedIcon.Trash,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'Backspace',\n },\n {\n id: SharedCommands.ExpandTile,\n name: () => this.translateService?.instant('STE_BUTTON_MAXIMIZETILE') as string,\n icon: MeltedIcon.MaximizeWindow,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'E',\n },\n {\n id: SharedCommands.MaximizeTileFullscreen,\n name: () => this.translateService?.instant('STE_ACTION_MAXIMIZETILEFULLSCREEN') as string,\n icon: MeltedIcon.Fullscreen,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'CTRL.Enter',\n },\n {\n id: SharedCommands.SelectPreviousTile,\n name: () => this.translateService?.instant('STE_ACTION_SELECTPREVIOUSTILE') as string,\n icon: MeltedIcon.AngleLeft,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'T',\n },\n {\n id: SharedCommands.SelectNextTile,\n name: () => this.translateService?.instant('STE_ACTION_SELECTNEXTTILE') as string,\n icon: MeltedIcon.AngleRight,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'Y',\n },\n {\n id: SharedCommands.ShowVideoDiagnostics,\n name: () => this.translateService?.instant('STE_ACTION_SHOWVIDEODIAG') as string,\n icon: MeltedIcon.LogFile,\n sectionName: () => this.translateService?.instant('STE_LABEL_TILES') as string,\n keyBinding: 'CTRL.SHIFT.A',\n },\n ]);\n }\n}\n","import { Component, OnInit, ViewChild, Injector } from '@angular/core';\nimport { GenMeltedModalComponent, MeltedModalAction } from '@genetec/gelato-angular';\nimport { isNullOrEmpty } from 'RestClient/Helpers/Helpers';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\n\n@Component({\n selector: 'app-bookmark',\n templateUrl: './bookmark.component.html',\n styleUrls: ['./bookmark.component.scss'],\n})\nexport class BookmarkComponent extends ConnectionAwareModalComponent implements OnInit {\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n public message = '';\n public isValid = false;\n public protectVideo = false;\n\n constructor(\n injector: Injector,\n // private activatedRoute: ActivatedRoute,\n authService: AuthService,\n trackingService: TrackingService\n ) {\n super(authService, injector, trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n // this.activatedRoute.queryParams.pipe(untilDestroyed(this)).subscribe(async (params) => {\n // if (params !== undefined) {\n // if (params['entityId'] !== undefined && params['timestamp'] !== undefined) {\n // this.entityId = SafeGuid.parse(params['entityId']);\n // this.timestamp = new Date(params['timestamp']);\n // }\n // }\n // });\n }\n\n public createBookmark(): void {\n // ensure we have a valid message\n if (this.message) {\n this.genModalComponent.genModalAction.emit(MeltedModalAction.Default);\n this.hide();\n }\n }\n\n public keyPressed(e: KeyboardEvent): void {\n if (e.code === 'Enter') {\n this.createBookmark();\n }\n }\n\n public hideModal(): void {}\n\n public onMessageChanged(): void {\n this.isValid = !isNullOrEmpty(this.message);\n }\n}\n","\n \n
    \n \n \n \n {{ 'STE_LABEL_BOOKMARK_MESSAGE' | translate }}\n \n\n \n \n \n
    \n
    \n\n","// Autogenerated: v2/help/enumerations/ApiRecordingState?codegen=ts&showresources=False on 2020-07-23 3:40:06 PM\n\nexport class RecordingState {\n public static OffLocked = 'OffLocked';\n public static Off = 'Off';\n public static OnLocked = 'OnLocked';\n public static On = 'On';\n public static OnAboutToStop = 'OnAboutToStop';\n public static Problem = 'Problem';\n\n public static readonly values = [\n RecordingState.OffLocked,\n RecordingState.Off,\n RecordingState.OnLocked,\n RecordingState.On,\n RecordingState.OnAboutToStop,\n RecordingState.Problem\n ];\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandsSubscription, ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { RecordingState } from 'RestClient/Client/Enumerations/RecordingStates';\nimport { RunningState } from 'RestClient/Client/Enumerations/RunningState';\nimport { CameraEntityFields, ICameraEntity } from 'RestClient/Client/Interface/ICameraEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { IGuid, SafeGuid } from 'safeguid';\n\n@Component({\n selector: 'app-camera-base-component',\n template: '',\n})\nexport class CameraBaseComponent extends TrackedComponent implements OnInit, OnDestroy, ContentPluginComponent {\n private static cameraFields = [\n CameraEntityFields.nameField,\n CameraEntityFields.recordingStateField,\n CameraEntityFields.runningStateField,\n CameraEntityFields.customIconIdField,\n CameraEntityFields.maintenanceField,\n ];\n\n public dataContext?: ContentService;\n public readonly excludedCommandIds = [SharedCommands.AddBookmark, SharedCommands.StartStopRecording];\n public content?: Content;\n public isLoading = true;\n public recordingState = RecordingState.Off;\n public cameraRunningState = RunningState.NotRunning;\n public cameraCustomIconId?: IGuid;\n public isMaintenanceModeActive?: boolean;\n\n private cameraEntity: CameraEntity | null = null;\n private entityCacheTask?: IEntityCacheTask;\n private commandsSubscription!: CommandsSubscription;\n\n public get hasWarnings(): boolean {\n return this.cameraRunningState === RunningState.Warning;\n }\n\n public get isOffline(): boolean {\n return this.cameraRunningState === RunningState.NotRunning;\n }\n\n public get isRecording(): boolean {\n return this.isRecordingState(this.recordingState);\n }\n\n public get recordingText(): string {\n if (this.isRecording) {\n return this.translateService.instant('STE_LABEL_RECORDING') as string;\n } else {\n return this.translateService.instant('STE_LABEL_NOT_RECORDING') as string;\n }\n }\n\n public get statusText(): string {\n if (this.isOffline) {\n return this.translateService.instant('STE_LABEL_OFFLINE') as string;\n } else if (this.hasWarnings) {\n return this.translateService.instant('STE_LABEL_WARNING') as string;\n } else {\n return this.translateService.instant('STE_LABEL_ONLINE') as string;\n }\n }\n\n constructor(private securityCenterClientService: SecurityCenterClientService, private translateService: TranslateService, trackingService: TrackingService) {\n super(trackingService);\n }\n\n public async ngOnDestroy(): Promise {\n if (this.entityCacheTask) {\n await this.entityCacheTask.dispose();\n }\n\n if (this.commandsSubscription) {\n this.commandsSubscription.unsubscribe();\n }\n\n super.ngOnDestroy();\n }\n\n public async ngOnInit(): Promise {\n super.ngOnInit();\n\n const scClient = this.securityCenterClientService?.scClient;\n if (scClient) {\n this.entityCacheTask = scClient.buildEntityCache(CameraBaseComponent.cameraFields);\n\n if (this.entityCacheTask && this.content) {\n this.cameraEntity = (await this.entityCacheTask.getEntityAsync(\n CameraEntity,\n SafeGuid.parse(this.content.source),\n true\n )) as CameraEntity;\n if (this.cameraEntity) {\n this.recordingState = this.cameraEntity.recordingState;\n this.cameraRunningState = this.cameraEntity.runningState;\n this.cameraCustomIconId = this.cameraEntity.customIconId;\n this.isMaintenanceModeActive = this.cameraEntity.maintenance;\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cameraEntity,\n () => {\n const _ = this.cameraEntity?.recordingState;\n },\n ((_: ICameraEntity, newValue: string, __: string) => {\n this.recordingState = newValue;\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cameraEntity,\n () => {\n const _ = this.cameraEntity?.runningState;\n },\n ((_: ICameraEntity, newValue: string, __: string) => {\n this.cameraRunningState = newValue;\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cameraEntity,\n () => {\n const _ = this.cameraEntity?.maintenance;\n },\n ((_: ICameraEntity, newValue: boolean, __: boolean) => {\n this.isMaintenanceModeActive = newValue;\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n\n await this.entityCacheTask.detectFieldChangeAsync(\n this.cameraEntity,\n () => {\n const _ = this.cameraEntity?.customIconId;\n },\n ((_: ICameraEntity, newValue: string, __: string) => {\n this.cameraCustomIconId = SafeGuid.parse(newValue);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n this.isLoading = false;\n }\n }\n\n public setDataContext(context: ContentService): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n private isRecordingState(recordingState?: RecordingState): boolean {\n let state = recordingState;\n if (state === undefined) {\n state = this.recordingState;\n }\n return state === RecordingState.On || state === RecordingState.OnLocked || state === RecordingState.OnAboutToStop;\n }\n}\n","import { Component } from '@angular/core';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { VideoContentTypes } from '@modules/video/enumerations/video-content-types';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { CameraBaseComponent } from '../../camera-base.component';\n\nconst isContentSupported = (content: Content, pluginType: IGuid) => {\n if (content) {\n return content.type.equals(VideoContentTypes.Video) && (!content.contextContent || content.contextContent?.type.equals(VideoContentTypes.Event));\n }\n return false;\n};\n\n@Component({\n selector: 'app-camera-entity-state',\n templateUrl: './camera-entity-state.component.html',\n styleUrls: ['./camera-entity-state.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: CameraEntityStateComponent,\n pluginTypes: [PluginTypes.TileHeader],\n exposure: {\n id: CameraEntityStateComponent.pluginId,\n priority: -1,\n },\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video], enabledFeatureFlags: [GeneralFeatureFlags.EntityState] },\n})\nexport class CameraEntityStateComponent extends CameraBaseComponent {\n public static pluginId = SafeGuid.parse('23147670-D00A-40B7-A9FC-FE8A840A8C95');\n\n constructor(securityCenterClientService: SecurityCenterClientService, translateService: TranslateService, trackingService: TrackingService) {\n super(securityCenterClientService, translateService, trackingService);\n }\n}\n","\n \n {{ content?.title }}\n \n {{ statusText }}\n {{ recordingText }}\n\n","import { Component } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { VideoContentTypes } from '@modules/video/enumerations/video-content-types';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { CameraBaseComponent } from '../../camera-base.component';\n\nconst isContentSupported = (content: Content, pluginType: IGuid) => {\n if (content) {\n return content.type.equals(VideoContentTypes.Video) && (!content.contextContent || content.contextContent?.type.equals(VideoContentTypes.Event));\n }\n return false;\n};\n\n@Component({\n selector: 'app-camera-actions-widget.component',\n templateUrl: './camera-actions-widget.component.html',\n styleUrls: ['./camera-actions-widget.component.scss'],\n})\n@InternalContentPluginDescriptor({\n type: CameraActionsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CameraActionsWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video] },\n})\nexport class CameraActionsWidgetComponent extends CameraBaseComponent implements ContentPluginComponent {\n public static pluginId = SafeGuid.parse('E117DDEE-B661-4B10-9F17-F7041ED4F545');\n\n constructor(securityCenterClientService: SecurityCenterClientService, translateService: TranslateService, trackingService: TrackingService) {\n super(securityCenterClientService, translateService, trackingService);\n }\n}\n","\n {{ statusText }}\n {{ recordingText }}\n\n","import { Component, OnInit } from '@angular/core';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { SafeGuid } from 'safeguid';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { VideoContentTypes } from '@modules/video/enumerations/video-content-types';\n\nconst isContentSupported = (content: Content) => {\n if (content && !content.contextContent) {\n return content.type.equals(VideoContentTypes.Video);\n }\n return false;\n};\n\n@Component({\n selector: 'app-camera-events-widget',\n templateUrl: './camera-events-widget.component.html',\n})\n@InternalContentPluginDescriptor({\n type: CameraEventsWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: CameraEventsWidgetComponent.pluginId, priority: 10 },\n isContentSupported,\n})\nexport class CameraEventsWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('865E6579-6335-4093-8716-0D775A92C154');\n\n public content!: Content;\n public dataContext!: ContentService;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n}\n","\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport moment from 'moment';\n\n/**\n * Will validate if there's less than 24 hours between start time and end time.\n * To be used by passing directly to the validators array in a FormGroup.\n *\n * @param control - an AbstractControl (usually a FormGroup) that has a child control called 'startTime' and another called 'endTime'\n */\nfunction twentyFourHoursValidator(control: AbstractControl): ValidationErrors | null;\n\n/**\n * Will validate if there's less than 24 hours between start time and end time.\n * To be used by calling the function with the keys of the FormGroup's startTime and the endTime.\n *\n * @param startTime - the key that reprensents a startTime in the FormGroup\n * @param endTime - the key that reprensents a endTime in the FormGroup\n */\nfunction twentyFourHoursValidator(startTimeKey: string, endTimeKey: string): ValidatorFn;\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction twentyFourHoursValidator(startTimeKeyOrControl: string | AbstractControl, endTimeKey?: string): ValidatorFn | ValidationErrors | null {\n if (typeof startTimeKeyOrControl === 'string' && typeof endTimeKey === 'string') {\n return (control: AbstractControl) => {\n const startTime = control.get(startTimeKeyOrControl);\n const endTime = control.get(endTimeKey);\n if (!startTime || !endTime) {\n return null;\n }\n return validate(startTime, endTime);\n };\n } else {\n const startTime = (startTimeKeyOrControl as AbstractControl).get('startTime');\n const endTime = (startTimeKeyOrControl as AbstractControl).get('endTime');\n if (!startTime || !endTime) {\n return null;\n } else {\n return validate(startTime, endTime);\n }\n }\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction validate(startTime: AbstractControl, endTime: AbstractControl): ValidationErrors | null {\n // has errors\n if (startTime && endTime && moment(endTime.value as string).diff(startTime.value as string, 'h') >= 24) {\n setErrors(startTime);\n setErrors(endTime);\n\n return { twentyFourHours: true };\n }\n\n // no errors\n if (startTime) {\n removeErrors(startTime);\n }\n if (endTime) {\n removeErrors(endTime);\n }\n\n return null;\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction setErrors(control: AbstractControl) {\n control.setErrors({ ...control.errors, twentyFourHours: true });\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction removeErrors(control: AbstractControl) {\n if (control.errors?.twentyFourHours) {\n // Angular Forms considers a FormControl as invalid when Object.keys(control.errors) >= 1\n delete control.errors.twentyFourHours;\n control.updateValueAndValidity();\n }\n}\n\nexport { twentyFourHoursValidator };\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport moment from 'moment';\n\n/**\n * Will validate if startTime comes before endTime.\n * To be used by passing directly to the validators array in a FormGroup.\n *\n * @param control - an AbstractControl (usually a FormGroup) that has a child control called 'startTime' and another called 'endTime'\n */\nfunction timeRangeValidator(control: AbstractControl): ValidationErrors | null;\n\n/**\n * Will validate if startTime comes before endTime.\n * To be used by wrapping around a function that calls timeRangeValidator with two FromControls, and then pass it to the validators array in a FormGroup.\n *\n * @param startTime - an AbstractControl (usually a FormControl) that reprensents a startTime\n * @param endTime - an AbstractControl (usually a FormControl) that reprensents an endTime\n */\nfunction timeRangeValidator(startTime: AbstractControl | null, endTime: AbstractControl | null): ValidationErrors | null;\n\nfunction timeRangeValidator(controlOrStartTime: AbstractControl | null, endTime?: AbstractControl | null): ValidationErrors | null {\n let startTime;\n if (controlOrStartTime && !endTime) {\n let control = controlOrStartTime;\n startTime = control.get('startTime');\n endTime = control.get('endTime');\n } else {\n startTime = controlOrStartTime;\n }\n\n // has error\n if (startTime && endTime && moment(startTime.value as string) >= moment(endTime.value as string)) {\n setErrors(startTime);\n setErrors(endTime);\n\n return { timeRange: true };\n }\n\n // no errors\n if (startTime) {\n removeErrors(startTime);\n }\n if (endTime) {\n removeErrors(endTime);\n }\n\n return null;\n}\n\nfunction setErrors(control: AbstractControl) {\n control.setErrors({ ...control.errors, timeRange: true });\n}\n\nfunction removeErrors(control: AbstractControl) {\n if (control.errors?.timeRange) {\n // Angular Forms considers a FormControl as invalid when Object.keys(control.errors) >= 1\n delete control.errors.timeRange;\n control.updateValueAndValidity();\n }\n}\n\nexport { timeRangeValidator };\n","\n \n
    \n
    \n \n \n \n \n \n \n \n {{ 'STE_LABEL_CAMERA_NAME' | translate }} \n {{ cameraName }}\n \n \n\n \n \n {{ 'STE_LABEL_DESCRIPTION' | translate }}\n {{ 'STE_MESSAGE_ERROR_FIELDISREQUIRED' | translate }}\n \n \n\n \n \n \n \n \n \n \n \n\n \n \n {{ duration$ | async }} \n \n\n \n \n \n \n\n \n \n
    \n \n
    \n
    \n\n \n \n \n \n
    \n \n
    \n
    \n \n \n {{ 'STE_LABEL_ENCRYPTIONKEY' | translate }}\n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n\n\n\n \n\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { GenModalService } from '@genetec/gelato-angular';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { twentyFourHoursValidator } from '@modules/shared/validators/twenty-four-hours-validator';\nimport { ExportRequestParameter, VideoExportService } from '@modules/video/services/video-export.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport moment from 'moment';\nimport { ICameraEntity } from 'RestClient/Client/Interface/ICameraEntity';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { filter, startWith, take } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { ThumbnailRangeRequest, VideoClient } from '../../api/api';\nimport { ExportVideoAuthorizationComponent } from '../export-video-authorization/export-video-authorization.component';\nimport { ExportVideoFormGroup } from './export-video.form-group';\nimport { FormatMenuItem } from './format-menu-item';\nimport { timeRangeValidator } from './validators/time-range-validator';\n\n@UntilDestroy()\n@Component({\n selector: 'app-export-video',\n templateUrl: './export-video.component.html',\n styleUrls: ['./export-video.component.scss'],\n})\nexport class ExportVideoComponent extends ConnectionAwareModalComponent implements OnInit, OnDestroy {\n //#region Fields\n\n public cameraName = '';\n public entityId = SafeGuid.EMPTY;\n public encrypt = false;\n public encryptionKey = '';\n public exportAudio = false;\n public readonly formats: FormatMenuItem[] = [];\n public fromAuthorizationComponent = false;\n public form: ExportVideoFormGroup;\n public duration = '';\n public hasExportPrivilege = false;\n public readonly timeFormatInFilename = '-YYYY-MM-DD_HH[h]mm[min]ss[s]SSS[ms]';\n\n public get endTimeError(): string {\n if (this.form.errors?.timeRange) {\n return this.translateService.instant('STE_MESSAGE_ERROR_INVALIDTIMERANGE') as string;\n }\n\n if (this.form.errors?.twentyFourHours) {\n return this.translateService.instant('STE_MESSAGE_ERROR_EXPORTOVER24HOURS') as string;\n }\n\n return '';\n }\n\n private durationSubject = new BehaviorSubject('5 m');\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public duration$?: Observable = this.durationSubject.asObservable();\n\n private thumbnailSubject = new BehaviorSubject(null);\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public thumbnail$: Observable = this.thumbnailSubject.asObservable();\n\n private defaultFormat: keyof typeof this.formatsDefinition = 'MP4';\n\n private formatsDefinition = {\n G64: {\n id: 'G64',\n text: `G64 (${this.translateService.instant('STE_LABEL_COMPATIBILITYMODE_LC') as string})`,\n supportsAudio: false,\n supportsEncryption: false,\n },\n G64x: {\n id: 'G64x',\n text: 'G64x',\n supportsAudio: false,\n supportsEncryption: true,\n },\n MP4: {\n id: 'MP4',\n text: 'MP4',\n supportsAudio: true,\n supportsEncryption: false,\n },\n ASF: {\n id: 'ASF',\n text: 'ASF',\n supportsAudio: true,\n supportsEncryption: false,\n },\n };\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n authService: AuthService,\n injector: Injector,\n trackingService: TrackingService,\n private timeService: TimeService,\n private translateService: TranslateService,\n private videoClient: VideoClient,\n private videoExportService: VideoExportService,\n private modalService: GenModalService,\n private securityCenterClientService: SecurityCenterClientService\n ) {\n super(authService, injector, trackingService);\n\n this.hasExportPrivilege = this.securityCenterClientService.scClient.isGlobalPrivilegeGranted(KnownPrivileges.singleUserExportPrivilege);\n\n // setup before OnInit because startTime and endTime can be changed later\n this.formats = this.getFormats();\n\n this.form = new FormGroup(\n {\n filename: new FormControl('', {\n validators: [Validators.required],\n nonNullable: true,\n }),\n description: new FormControl('', {\n validators: this.hasExportPrivilege ? [] : [Validators.required],\n nonNullable: true,\n }),\n startTime: new FormControl(moment().subtract(5, 'minutes').toISOString(), {\n validators: [Validators.required],\n nonNullable: true,\n }),\n endTime: new FormControl(moment().toISOString(), {\n validators: [Validators.required],\n nonNullable: true,\n }),\n format: new FormControl(this.formatsDefinition[this.defaultFormat], {\n nonNullable: true,\n }),\n exportAudio: new FormControl(false, {\n nonNullable: true,\n }),\n encrypt: new FormControl(false, {\n nonNullable: true,\n }),\n encryptionKey: new FormControl('', {\n nonNullable: true,\n }),\n },\n { validators: [timeRangeValidator, twentyFourHoursValidator] }\n );\n\n combineLatest([this.form.controls.format.valueChanges, this.form.controls.encrypt.valueChanges])\n .pipe(untilDestroyed(this))\n .subscribe(([format, encrypt]: [FormatMenuItem, boolean]) => {\n this.setEncryptionKeyValidators(format, encrypt);\n });\n\n this.durationSubject.next(this.computeDuration(this.form.getRawValue().startTime, this.form.getRawValue().endTime));\n }\n\n //#endregion\n\n //#region Methods\n\n ngOnInit() {\n super.ngOnInit();\n\n if (!this.fromAuthorizationComponent) {\n this.securityCenterClientService.scClient\n .getEntityAsync(CameraEntity, this.entityId)\n .then((cameraEntity) => {\n this.cameraName = cameraEntity?.name ?? '';\n this.form.controls.filename.setValue(`${this.cameraName}${moment(this.form.value.startTime).format(this.timeFormatInFilename)}`);\n this.form.controls.filename.markAsUntouched();\n })\n .fireAndForget();\n }\n\n combineLatest([\n this.form.controls.startTime.valueChanges.pipe(startWith(this.form.value.startTime)),\n this.form.controls.endTime.valueChanges.pipe(startWith(this.form.value.endTime)),\n ])\n .pipe(untilDestroyed(this))\n .subscribe(([startTime, endTime]) => {\n if (startTime && endTime) {\n this.durationSubject.next(this.computeDuration(startTime, endTime));\n\n this.updateThumbnail(startTime, endTime);\n }\n });\n\n this.form.controls.startTime.valueChanges\n .pipe(filter(() => !this.form.controls.filename.touched))\n .pipe(untilDestroyed(this))\n .subscribe((startTime: string) => {\n this.form.controls.filename.setValue(`${this.cameraName}${moment(startTime).format(this.timeFormatInFilename)}`);\n this.form.controls.filename.markAsUntouched();\n });\n }\n\n public onSubmit = (): Promise => {\n if (!this.hasExportPrivilege) {\n const exportVideoAuthorizationComponent = this.modalService.open(ExportVideoAuthorizationComponent, {\n entityId: this.entityId,\n cameraName: this.cameraName,\n thumbnail: this.thumbnailSubject.getValue(),\n duration: this.durationSubject.getValue(),\n });\n exportVideoAuthorizationComponent.exportVideoForm = this.form;\n } else {\n const formRawValue = this.form.getRawValue();\n const request: ExportRequestParameter = {\n entityId: this.entityId,\n startTime: formRawValue.startTime,\n endTime: formRawValue.endTime,\n supportsEncryption: formRawValue.format?.supportsEncryption,\n encrypt: formRawValue.encrypt,\n encryptionKey: formRawValue.encryptionKey,\n exportAudio: formRawValue.exportAudio,\n format: formRawValue.format,\n description: formRawValue.description,\n };\n const modelValue = this.videoExportService.buildVideoExportRequest(request);\n if (modelValue && this.form.value.filename) {\n this.videoExportService.exportAsync(modelValue, this.form.value.filename).fireAndForget();\n }\n }\n\n return Promise.resolve(true);\n };\n\n //#endregion\n private setEncryptionKeyValidators(format: FormatMenuItem, encrypt: boolean): void {\n const required = format.supportsEncryption && encrypt;\n this.form.controls.encryptionKey.setValidators(required ? Validators.required : []);\n this.form.controls.encryptionKey.updateValueAndValidity();\n }\n\n private computeDuration(startTime: string, endTime: string): string {\n const length = moment(endTime).diff(moment(startTime), 'ms');\n\n return this.timeService.formatDuration(length);\n }\n\n private getFormats() {\n return Object.values(this.formatsDefinition);\n }\n\n private updateThumbnail(startTime: string, endTime: string): void {\n if (this.videoClient) {\n const request = new ThumbnailRangeRequest({\n cameraId: this.entityId,\n width: 192,\n startTime: moment(startTime).toISOString(),\n endTime: moment(endTime).toISOString(),\n });\n\n this.videoClient\n .getThumbnail(request)\n .pipe(take(1), untilDestroyed(this))\n .subscribe((res) => this.thumbnailSubject.next(!res?.thumbnail ? null : `data:image/png;base64,${res.thumbnail}`));\n }\n }\n}\n","\n \n
    \n
    \n
    \n \n {{ 'STE_TITLE_AUTHORIZATION_FOUR_EYE' | translate }}\n \n
    \n
    \n {{ 'STE_LABEL_REQUESTED_VIDEO' | translate }} \n \n
    \n
    \n {{ cameraName }}
    \n \n
    \n {{ startTimeString }}\n
    \n
    {{ endTimeString }}
    \n
    {{ timeString }}
    \n
    {{ duration }}
    \n
    \n
    \n \n {{ 'STE_LABEL_USERNAME' | translate: { Default: 'Username' } }}\n \n \n {{ 'STE_LABEL_PASSWORD' | translate: { Default: 'Password' } }}\n \n \n {{ errorMessageString }}\n \n
    \n
    \n
    \n
    \n\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { GenModalService, Flavor } from '@genetec/gelato-angular';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ExportStatus2 } from '@modules/video/api/video-export-progress.event';\nimport { VideoExportService } from '@modules/video/services/video-export.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { EntityFields } from 'RestClient/Client/Interface/IEntity';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { SafeGuid } from 'safeguid';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { ExportVideoComponent } from '../export-video/export-video.component';\nimport { ExportVideoFormGroup } from '../export-video/export-video.form-group';\n\n@Component({\n selector: 'app-export-video-authorization',\n templateUrl: './export-video-authorization.component.html',\n styleUrls: ['./export-video-authorization.component.scss'],\n})\nexport class ExportVideoAuthorizationComponent extends ConnectionAwareModalComponent implements OnInit {\n public password = '';\n public username = '';\n public errorMessage = false;\n public errorMessageString = '';\n public readonly Flavor = Flavor;\n public entityId!: SafeGuid;\n public supportsEncryption!: boolean;\n public encrypt!: boolean;\n public encryptionKey!: string;\n public exportAudio!: boolean;\n public cameraName!: string;\n public thumbnail!: string;\n public duration!: string;\n public enableAuthorize = false;\n public startTimeString = '';\n public endTimeString = '';\n public timeString = '';\n public isNewDay = false;\n public description = '';\n public exportVideoForm?: ExportVideoFormGroup;\n private user: IUserEntity | null = null;\n private scClient: WebAppClient;\n\n constructor(\n authService: AuthService,\n injector: Injector,\n securityCenterClientService: SecurityCenterClientService,\n trackingService: TrackingService,\n private translateService: TranslateService,\n private videoExportService: VideoExportService,\n private modalService: GenModalService\n ) {\n super(authService, injector, trackingService);\n this.scClient = securityCenterClientService?.scClient;\n }\n\n public async ngOnInit() {\n super.ngOnInit();\n this.entityInformationStringProducer();\n this.user = await this.scClient.getEntityAsync(UserEntity, this.scClient.userId, null, null, EntityFields.nameField);\n }\n public onAuthorize = async (): Promise => {\n let authorized = false;\n if (this.user?.name.trim().toLowerCase() === this.username.trim().toLowerCase()) {\n this.errorMessage = true;\n this.errorMessageString = this.translateService.instant('STE_MESSAGE_ERROR_SAME_USER_EXPORT') as string;\n return authorized;\n }\n const credentialModel = { username: this.username, password: this.password };\n\n if (this.exportVideoForm) {\n const formRawValues = this.exportVideoForm.getRawValue();\n const modelValue = this.videoExportService.buildVideoExportRequest({\n entityId: this.entityId,\n startTime: formRawValues.startTime,\n endTime: formRawValues.endTime,\n supportsEncryption: formRawValues.format.supportsEncryption,\n encrypt: formRawValues.encrypt,\n encryptionKey: formRawValues.encryptionKey,\n exportAudio: formRawValues.exportAudio,\n format: formRawValues.format,\n description: formRawValues.description,\n credentialModel,\n });\n if (modelValue) {\n try {\n await this.videoExportService.exportAsync(modelValue, formRawValues.filename);\n authorized = true;\n } catch (error: any) {\n if ((error as ExportStatus2) === ExportStatus2.InsufficientPrivilegeError) {\n this.errorMessage = true;\n this.errorMessageString = this.translateService.instant('STE_MESSAGE_ERROR_INVALID_CREDENTIALS_OR_INSUFFICIENT_PRIVILEGE') as string;\n }\n }\n }\n }\n\n return authorized;\n };\n\n public onBack = (): Promise => {\n const exportVideoComponent = this.modalService.open(ExportVideoComponent, {\n entityId: this.entityId,\n cameraName: this.cameraName,\n fromAuthorizationComponent: true,\n });\n\n if (this.exportVideoForm && exportVideoComponent.form) {\n exportVideoComponent.form.patchValue(this.exportVideoForm.value);\n }\n\n return Promise.resolve(true);\n };\n public onUsernameChanged(userInput: string): void {\n this.enableAuthorize = userInput !== '';\n }\n public entityInformationStringProducer(): void {\n if (this.exportVideoForm) {\n const formRawValues = this.exportVideoForm.getRawValue();\n this.startTimeString = formRawValues.startTime.split('T', 1)[0];\n this.endTimeString = formRawValues.endTime.split('T', 1)[0];\n this.isNewDay = formRawValues.endTime.split('T')[0] !== formRawValues.startTime.split('T')[0];\n this.timeString = formRawValues.startTime.split('T')[1].split('.')[0];\n }\n }\n}\n","import { Component, ViewChild, Injector } from '@angular/core';\nimport { GenMeltedModalComponent, MeltedModalAction } from '@genetec/gelato-angular';\nimport moment from 'moment';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\n\n@Component({\n selector: 'app-goto-time',\n templateUrl: './goto-time.component.html',\n styleUrls: ['./goto-time.component.scss'],\n})\nexport class GotoTimeComponent extends ConnectionAwareModalComponent {\n @ViewChild(GenMeltedModalComponent) public genModalComponent!: GenMeltedModalComponent;\n\n public isMilitaryTime = false;\n public timestamp = moment().utc().toISOString();\n\n constructor(authService: AuthService, injector: Injector, trackingService: TrackingService, private loggerService: LoggerService, translationService: TranslateService) {\n super(authService, injector, trackingService);\n const timeFormat = moment().locale(translationService.currentLang).localeData().longDateFormat('LT');\n // Covers the case where HH, H, kk or k is specified. (k, kk is 24 hours from 1 to 24)\n this.isMilitaryTime = timeFormat.includes('H') || timeFormat.includes('k');\n }\n\n public onAction(action: MeltedModalAction): void {\n this.loggerService.traceInformation(this.timestamp);\n }\n\n public getModalInstance(): GenMeltedModalComponent {\n return this.genModalComponent;\n }\n\n public close(): void {\n this.genModalComponent.onCloseClick().fireAndForget();\n }\n}\n","\n \n
    \n \n
    \n
    \n\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ItemSlot } from '@genetec/gelato';\nimport { MeltedIcon } from '@genetec/gelato-angular';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { SafeGuid } from 'safeguid';\nimport { VideoContentTypes } from '../../../enumerations/video-content-types';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nconst isContentSupported = (content: Content) => {\n if (content?.type && content.contextContent) {\n return content.type.equals(VideoContentTypes.Video) && content.contextContent.type.equals(VideoContentTypes.Event);\n }\n return false;\n};\n\n@Component({\n selector: 'app-camera-event-widget',\n templateUrl: './camera-event-widget.component.html',\n styleUrls: ['./camera-event-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalContentPluginDescriptor({\n type: CameraEventWidgetComponent,\n pluginTypes: [PluginTypes.MapPopupCompact, PluginTypes.MapPopupExpand],\n exposure: { id: CameraEventWidgetComponent.pluginId, priority: 0 },\n isContentSupported,\n})\nexport class CameraEventWidgetComponent extends TrackedComponent implements OnInit, ContentPluginComponent {\n public static pluginId = SafeGuid.parse('A1B48B6B-CE21-4DD3-B097-D9BF0629CB68');\n\n public content?: Content;\n public dataContext: unknown;\n\n public icon: MeltedIcon | null = MeltedIcon.Camera;\n public readonly ItemSlot = ItemSlot;\n public entityName = 'Unknown';\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const videoContent = this.content?.contextsubContents?.find((content) => content.type.equals(VideoContentTypes.Video));\n\n if (videoContent) {\n this.entityName = videoContent.title;\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public onClick(): void {}\n}\n","
    \n \n \n {{ this.content?.contextContent?.title }}\n {{ entityName }}\n \n
    \n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-lcd-panel',\n templateUrl: './lcd-panel.component.html',\n styleUrls: ['./lcd-panel.component.scss'],\n})\nexport class LcdPanelComponent {\n @Input()\n public maxCharUntilOverflow = 36;\n\n private textValue = '';\n private fontColorValue = '#6ac66a';\n private backgroundColorValue = 'black';\n\n constructor() {}\n\n @Input()\n public set text(value: string | null) {\n if (value) {\n this.textValue = value;\n } else {\n this.textValue = '';\n }\n }\n public get text(): string | null {\n return this.textValue;\n }\n\n @Input()\n public set fontColor(color: string) {\n if (color) {\n this.fontColorValue = color;\n }\n }\n\n @Input()\n public set backgroundColor(bgColor: string) {\n if (bgColor) {\n this.backgroundColorValue = bgColor;\n }\n }\n\n public getStyles(): any {\n return {\n color: this.fontColorValue,\n backgroundColor: this.backgroundColorValue,\n };\n }\n\n public shouldTextWrap(): boolean {\n return this.textValue?.length > this.maxCharUntilOverflow;\n }\n}\n","\n {{ text }}\n\n","import { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\n\nexport class PtzPrivileges {\n public readonly allowBasicPtz: boolean;\n public readonly allowVideo: boolean;\n public readonly allowPlayback: boolean;\n public readonly allowDigitalZoom: boolean;\n public readonly allowAudio: boolean;\n public readonly allowPtzLockOverride: boolean;\n public readonly allowSpecificCommands: boolean;\n public readonly allowChangeFocusAndIris: boolean;\n public readonly allowPresetsUse: boolean;\n public readonly allowEditPtzPreset: boolean;\n public readonly allowTogglePtzMenu: boolean;\n public readonly allowUsePtzAuxiliaries: boolean;\n public readonly allowSetPtzAuxiliaries: boolean;\n public readonly allowPatternsUse: boolean;\n public readonly allowLockPtz: boolean;\n\n constructor(initData: Content) {\n const priv = initData.grantedPrivileges;\n this.allowBasicPtz = priv.some((item) => item.equals(KnownPrivileges.basicPtzOperationsPrivilege));\n this.allowVideo = priv.some((item) => item.equals(KnownPrivileges.allowVideoPrivilege));\n this.allowPlayback = priv.some((item) => item.equals(KnownPrivileges.allowPlaybackVideoPrivilege));\n this.allowDigitalZoom = priv.some((item) => item.equals(KnownPrivileges.digitalZoomPrivilege));\n this.allowAudio = priv.some((item) => item.equals(KnownPrivileges.useAudioPrivilege));\n this.allowPtzLockOverride = priv.some((item) => item.equals(KnownPrivileges.overrideLockPtzPrivilege));\n this.allowSpecificCommands = priv.some((item) => item.equals(KnownPrivileges.useSpecificCommandsPrivilege));\n this.allowChangeFocusAndIris = priv.some((item) => item.equals(KnownPrivileges.changeFocusAndIrisPrivilege));\n this.allowPresetsUse = priv.some((item) => item.equals(KnownPrivileges.usePtzPresetsPrivilege));\n this.allowEditPtzPreset = priv.some((item) => item.equals(KnownPrivileges.editPtzPresetPrivilege));\n this.allowTogglePtzMenu = priv.some((item) => item.equals(KnownPrivileges.togglePtzMenuPrivilege));\n this.allowSetPtzAuxiliaries = priv.some((item) => item.equals(KnownPrivileges.setPtzAuxiliariesPrivilege));\n this.allowUsePtzAuxiliaries = priv.some((item) => item.equals(KnownPrivileges.usePtzAuxiliariesPrivilege));\n this.allowPatternsUse = priv.some((item) => item.equals(KnownPrivileges.usePtzPatternsPrivilege));\n this.allowLockPtz = priv.some((item) => item.equals(KnownPrivileges.lockPtzPrivilege));\n }\n\n public hasAtLeastOnePtzPrivilege(): boolean {\n return (\n this.allowBasicPtz ||\n this.allowPtzLockOverride ||\n this.allowSpecificCommands ||\n this.allowChangeFocusAndIris ||\n this.allowPresetsUse ||\n this.allowEditPtzPreset ||\n this.allowTogglePtzMenu ||\n this.allowSetPtzAuxiliaries ||\n this.allowUsePtzAuxiliaries ||\n this.allowPatternsUse ||\n this.allowLockPtz\n );\n }\n}\n","import { Component, ViewContainerRef } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { Subject } from 'rxjs';\nimport { TrackingService } from '../../services/tracking.service';\nimport { TrackedComponent } from '../tracked/tracked.component';\n\n@UntilDestroy()\n@Component({\n selector: 'app-hideable-component',\n template: '',\n})\n/**\n * This base class allows a component to interact with the \"hideRequestSubject\" by pushing it's conditions to toggle it's display to none.\n * This class will evaluate the given boolean expression and will then either append the 'hideCssClassSelector' value to the 'rootWrappingElement's classList.\n * By default, the wrapperElement is considered to be a gen-card.context-plugin-card\n * And will also by default assign the 'hideable-component--hidden' css class. Make sure to react accordingly in the scss file of the component that contains the RootWrapperElement.\n * For Example: The side-pane contains PTZ-Controller that is displayed in a gen-card, so the side-pane.component.scss should contain a hideable-component--hidden rule.\n */\nexport class HideableComponent extends TrackedComponent {\n /** interact with this property by using it's 'next()' function */\n protected hideRequestSubject = new Subject();\n /** Css class that will be added to the rootWrapperElement. Defaults to hideCssClassSelector */\n protected hideCssClassSelector = 'hideable-component--hidden';\n /** Selector to the wrapper element that surrounds your HideableComponent. Defaults to gen-card.context-plugin-card */\n protected rootWrapperElementSelector = 'gen-card.context-plugin-card'; // heavily based on my implementation.. not sure if good idea.\n\n private rootWrappingElement?: Element | null;\n\n constructor(protected viewContainerRef: ViewContainerRef, protected trackingService: TrackingService) {\n super(trackingService);\n\n // Make sure we subscribe in the constructor\n this.hideRequestSubject.pipe(untilDestroyed(this)).subscribe((condition: boolean) => {\n this.retrieveRootElement();\n if (condition) {\n this.hideComponent();\n } else {\n this.showComponent();\n }\n });\n }\n\n private hideComponent(): void {\n this.rootWrappingElement?.classList.add(this.hideCssClassSelector);\n }\n\n private showComponent(): void {\n if (!this.rootWrappingElement) {\n return;\n }\n\n const isHidden = this.rootWrappingElement.classList.contains(this.hideCssClassSelector);\n if (isHidden) {\n this.rootWrappingElement.classList.remove(this.hideCssClassSelector);\n }\n }\n\n private retrieveRootElement(): void {\n const elem = this.viewContainerRef.element.nativeElement as HTMLElement;\n this.rootWrappingElement ??= elem.closest(this.rootWrapperElementSelector);\n }\n}\n","/**\n * Helper class that takes an array of string, built from the videoController that represents supported commands on a specific camera.\n * This class exposes everyPossible commands, and a method that returns true or false if its supported or not.\n * This makes for a cleaner approach in the template\n */\nexport class SupportedCommands {\n private InvalidCommand = 'InvalidCommand';\n private StartZoom = 'StartZoom';\n private StopZoom = 'StopZoom';\n private StartPanTilt = 'StartPanTilt';\n private StopPanTilt = 'StopPanTilt';\n private GoToPreset = 'GoToPreset';\n private SetPreset = 'SetPreset';\n private ClearPreset = 'ClearPreset';\n private StartIris = 'StartIris';\n private StopIris = 'StopIris';\n private StartFocus = 'StartFocus';\n private StopFocus = 'StopFocus';\n private SetAuxiliary = 'SetAuxiliary';\n private ClearAuxiliary = 'ClearAuxiliary';\n private StartPattern = 'StartPattern';\n private StopPattern = 'StopPattern';\n private RunPattern = 'RunPattern';\n private ClearPattern = 'ClearPattern';\n private Flip = 'Flip';\n private Enter = 'Enter';\n private Home = 'Home';\n private MenuOn = 'MenuOn';\n private MenuOff = 'MenuOff';\n private MenuUp = 'MenuUp';\n private MenuDown = 'MenuDown';\n private MenuLeft = 'MenuLeft';\n private MenuRight = 'MenuRight';\n private MenuNext = 'MenuNext';\n private MenuPrevious = 'MenuPrevious';\n private MenuStop = 'MenuStop';\n private MenuCancel = 'MenuCancel';\n private MenuTextMode = 'MenuTextMode';\n private SpecificCommand = 'SpecificCommand';\n private Vcr = 'Vcr';\n private Eject = 'Eject';\n private Stop = 'Stop';\n private Record = 'Record';\n private Pause = 'Pause';\n private Play = 'Play';\n private Rewind = 'Rewind';\n private Fastfoward = 'Fastfoward';\n private NextFrame = 'NextFrame';\n private PrevKeyFrame = 'PrevKeyFrame';\n private GoToPosition = 'GoToPosition';\n private RunTour = 'RunTour';\n private RunSequence = 'RunSequence';\n private SetPositionZero = 'SetPositionZero';\n private GoToAbsolutePosition = 'GoToAbsolutePosition';\n private GoToRelativePosition = 'GoToRelativePosition';\n private GetPosition = 'GetPosition';\n private MenuUpUp = 'MenuUpUp';\n private MenuDownUp = 'MenuDownUp';\n private MenuLeftUp = 'MenuLeftUp';\n private MenuRightUp = 'MenuRightUp';\n private MenuUpDown = 'MenuUpDown';\n private MenuDownDown = 'MenuDownDown';\n private MenuLeftDown = 'MenuLeftDown';\n private MenuRightDown = 'MenuRightDown';\n private Alarm = 'Alarm';\n private Sequence = 'Sequence';\n private Clear = 'Clear';\n private Set = 'Set';\n private First = 'First';\n private MenuBank = 'MenuBank';\n private MenuStart = 'MenuStart';\n private MenuNumber = 'MenuNumber';\n private MenuExit = 'MenuExit';\n private MenuScrollLeft = 'MenuScrollLeft';\n private MenuScrollRight = 'MenuScrollRight';\n private MenuScrollUp = 'MenuScrollUp';\n private MenuScrollDown = 'MenuScrollDown';\n private Lock = 'Lock';\n private OverrideLock = 'OverrideLock';\n private GoToNormalizedPosition = 'GoToNormalizedPosition';\n private GoToImagePosition = 'GoToImagePosition';\n private StartPresetTour = 'StartPresetTour';\n private StopPresetTour = 'StopPresetTour';\n private LastCommand = 'LastCommand';\n\n private commands: string[];\n constructor(commands: string[]) {\n this.commands = commands;\n }\n public supportsInvalidCommand(): boolean {\n return this.commands.indexOf(this.InvalidCommand) !== -1;\n }\n\n public supportsStartZoom(): boolean {\n return this.commands.indexOf(this.StartZoom) !== -1;\n }\n\n public supportsStopZoom(): boolean {\n return this.commands.indexOf(this.StopZoom) !== -1;\n }\n\n public supportsStartPanTilt(): boolean {\n return this.commands.indexOf(this.StartPanTilt) !== -1;\n }\n\n public supportsStopPanTilt(): boolean {\n return this.commands.indexOf(this.StopPanTilt) !== -1;\n }\n\n public supportsGoToPreset(): boolean {\n return this.commands.indexOf(this.GoToPreset) !== -1;\n }\n\n public supportsSetPreset(): boolean {\n return this.commands.indexOf(this.SetPreset) !== -1;\n }\n\n public supportsClearPreset(): boolean {\n return this.commands.indexOf(this.ClearPreset) !== -1;\n }\n\n public supportsStartIris(): boolean {\n return this.commands.indexOf(this.StartIris) !== -1;\n }\n\n public supportsStopIris(): boolean {\n return this.commands.indexOf(this.StopIris) !== -1;\n }\n\n public supportsStartFocus(): boolean {\n return this.commands.indexOf(this.StartFocus) !== -1;\n }\n\n public supportsStopFocus(): boolean {\n return this.commands.indexOf(this.StopFocus) !== -1;\n }\n\n public supportsSetAuxiliary(): boolean {\n return this.commands.indexOf(this.SetAuxiliary) !== -1;\n }\n\n public supportsClearAuxiliary(): boolean {\n return this.commands.indexOf(this.ClearAuxiliary) !== -1;\n }\n\n public supportsStartPattern(): boolean {\n return this.commands.indexOf(this.StartPattern) !== -1;\n }\n\n public supportsStopPattern(): boolean {\n return this.commands.indexOf(this.StopPattern) !== -1;\n }\n\n public supportsRunPattern(): boolean {\n return this.commands.indexOf(this.RunPattern) !== -1;\n }\n\n public supportsClearPattern(): boolean {\n return this.commands.indexOf(this.ClearPattern) !== -1;\n }\n\n public supportsFlip(): boolean {\n return this.commands.indexOf(this.Flip) !== -1;\n }\n\n public supportsEnter(): boolean {\n return this.commands.indexOf(this.Enter) !== -1;\n }\n\n public supportsHome(): boolean {\n return this.commands.indexOf(this.Home) !== -1;\n }\n\n public supportsMenuOn(): boolean {\n return this.commands.indexOf(this.MenuOn) !== -1;\n }\n\n public supportsMenuOff(): boolean {\n return this.commands.indexOf(this.MenuOff) !== -1;\n }\n\n public supportsMenuUp(): boolean {\n return this.commands.indexOf(this.MenuUp) !== -1;\n }\n\n public supportsMenuDown(): boolean {\n return this.commands.indexOf(this.MenuDown) !== -1;\n }\n\n public supportsMenuLeft(): boolean {\n return this.commands.indexOf(this.MenuLeft) !== -1;\n }\n\n public supportsMenuRight(): boolean {\n return this.commands.indexOf(this.MenuRight) !== -1;\n }\n\n public supportsMenuNext(): boolean {\n return this.commands.indexOf(this.MenuNext) !== -1;\n }\n\n public supportsMenuPrevious(): boolean {\n return this.commands.indexOf(this.MenuPrevious) !== -1;\n }\n\n public supportsMenuStop(): boolean {\n return this.commands.indexOf(this.MenuStop) !== -1;\n }\n\n public supportsMenuCancel(): boolean {\n return this.commands.indexOf(this.MenuCancel) !== -1;\n }\n\n public supportsMenuTextMode(): boolean {\n return this.commands.indexOf(this.MenuTextMode) !== -1;\n }\n\n public supportsSpecificCommand(): boolean {\n return this.commands.indexOf(this.SpecificCommand) !== -1;\n }\n\n public supportsVcr(): boolean {\n return this.commands.indexOf(this.Vcr) !== -1;\n }\n\n public supportsEject(): boolean {\n return this.commands.indexOf(this.Eject) !== -1;\n }\n\n public supportsStop(): boolean {\n return this.commands.indexOf(this.Stop) !== -1;\n }\n\n public supportsRecord(): boolean {\n return this.commands.indexOf(this.Record) !== -1;\n }\n\n public supportsPause(): boolean {\n return this.commands.indexOf(this.Pause) !== -1;\n }\n\n public supportsPlay(): boolean {\n return this.commands.indexOf(this.Play) !== -1;\n }\n\n public supportsRewind(): boolean {\n return this.commands.indexOf(this.Rewind) !== -1;\n }\n\n public supportsFastfoward(): boolean {\n return this.commands.indexOf(this.Fastfoward) !== -1;\n }\n\n public supportsNextFrame(): boolean {\n return this.commands.indexOf(this.NextFrame) !== -1;\n }\n\n public supportsPrevKeyFrame(): boolean {\n return this.commands.indexOf(this.PrevKeyFrame) !== -1;\n }\n\n public supportsGoToPosition(): boolean {\n return this.commands.indexOf(this.GoToPosition) !== -1;\n }\n\n public supportsRunTour(): boolean {\n return this.commands.indexOf(this.RunTour) !== -1;\n }\n\n public supportsRunSequence(): boolean {\n return this.commands.indexOf(this.RunSequence) !== -1;\n }\n\n public supportsSetPositionZero(): boolean {\n return this.commands.indexOf(this.SetPositionZero) !== -1;\n }\n\n public supportsGoToAbsolutePosition(): boolean {\n return this.commands.indexOf(this.GoToAbsolutePosition) !== -1;\n }\n\n public supportsGoToRelativePosition(): boolean {\n return this.commands.indexOf(this.GoToRelativePosition) !== -1;\n }\n\n public supportsGetPosition(): boolean {\n return this.commands.indexOf(this.GetPosition) !== -1;\n }\n\n public supportsMenuUpUp(): boolean {\n return this.commands.indexOf(this.MenuUpUp) !== -1;\n }\n\n public supportsMenuDownUp(): boolean {\n return this.commands.indexOf(this.MenuDownUp) !== -1;\n }\n\n public supportsMenuLeftUp(): boolean {\n return this.commands.indexOf(this.MenuLeftUp) !== -1;\n }\n\n public supportsMenuRightUp(): boolean {\n return this.commands.indexOf(this.MenuRightUp) !== -1;\n }\n\n public supportsMenuUpDown(): boolean {\n return this.commands.indexOf(this.MenuUpDown) !== -1;\n }\n\n public supportsMenuDownDown(): boolean {\n return this.commands.indexOf(this.MenuDownDown) !== -1;\n }\n\n public supportsMenuLeftDown(): boolean {\n return this.commands.indexOf(this.MenuLeftDown) !== -1;\n }\n\n public supportsMenuRightDown(): boolean {\n return this.commands.indexOf(this.MenuRightDown) !== -1;\n }\n\n public supportsAlarm(): boolean {\n return this.commands.indexOf(this.Alarm) !== -1;\n }\n\n public supportsSequence(): boolean {\n return this.commands.indexOf(this.Sequence) !== -1;\n }\n\n public supportsClear(): boolean {\n return this.commands.indexOf(this.Clear) !== -1;\n }\n\n public supportsSet(): boolean {\n return this.commands.indexOf(this.Set) !== -1;\n }\n\n public supportsFirst(): boolean {\n return this.commands.indexOf(this.First) !== -1;\n }\n\n public supportsMenuBank(): boolean {\n return this.commands.indexOf(this.MenuBank) !== -1;\n }\n\n public supportsMenuStart(): boolean {\n return this.commands.indexOf(this.MenuStart) !== -1;\n }\n\n public supportsMenuNumber(): boolean {\n return this.commands.indexOf(this.MenuNumber) !== -1;\n }\n\n public supportsMenuExit(): boolean {\n return this.commands.indexOf(this.MenuExit) !== -1;\n }\n\n public supportsMenuScrollLeft(): boolean {\n return this.commands.indexOf(this.MenuScrollLeft) !== -1;\n }\n\n public supportsMenuScrollRight(): boolean {\n return this.commands.indexOf(this.MenuScrollRight) !== -1;\n }\n\n public supportsMenuScrollUp(): boolean {\n return this.commands.indexOf(this.MenuScrollUp) !== -1;\n }\n\n public supportsMenuScrollDown(): boolean {\n return this.commands.indexOf(this.MenuScrollDown) !== -1;\n }\n\n public supportsLock(): boolean {\n return this.commands.indexOf(this.Lock) !== -1;\n }\n\n public supportsOverrideLock(): boolean {\n return this.commands.indexOf(this.OverrideLock) !== -1;\n }\n\n public supportsGoToNormalizedPosition(): boolean {\n return this.commands.indexOf(this.GoToNormalizedPosition) !== -1;\n }\n\n public supportsGoToImagePosition(): boolean {\n return this.commands.indexOf(this.GoToImagePosition) !== -1;\n }\n\n public supportsStartPresetTour(): boolean {\n return this.commands.indexOf(this.StartPresetTour) !== -1;\n }\n\n public supportsStopPresetTour(): boolean {\n return this.commands.indexOf(this.StopPresetTour) !== -1;\n }\n\n public supportsLastCommand(): boolean {\n return this.commands.indexOf(this.LastCommand) !== -1;\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { Point } from '@modules/shared/interfaces/drawing';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentExtensionServicesProvider, CONTENT_SERVICES_PROVIDER } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IVideoPlayer } from 'Marmot/ivideoplayer';\nimport { PlayerMode } from 'Marmot/Marmot/enums';\nimport { PlayerModeChangeEvent } from 'Marmot/Marmot/events';\nimport { PtzFocusDistance, PtzIrisOperation } from 'Marmot/Marmot/gwp';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { CameraEntityFields, ICameraEntity, IPtzInfo } from 'RestClient/Client/Interface/ICameraEntity';\nimport { EntityFields, IEntity } from 'RestClient/Client/Interface/IEntity';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { CameraEntity, PtzCapabilitiesInfo } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { VideoClient } from '../../../api/api';\nimport { SupportedCommands } from '../supported-commands';\nimport { PtzPrivileges } from './ptz-privileges';\n\n@UntilDestroy()\n@Injectable()\nexport class PtzControlsService implements OnDestroy {\n // public\n public entityCacheTask: IEntityCacheTask;\n\n // Constants\n private readonly guid = SafeGuid.parse('BFE42E92-40FB-4EFC-BD22-1285BBFB2A69');\n private readonly defaultSupportedCommandsHex = '0000000000000000000';\n\n // Camera Information\n private lockingStateInformationSubject: BehaviorSubject = new BehaviorSubject(this.translateService.instant('STE_LABEL_PTZ_ANALOG_PTZ') as string);\n\n // Observable tracker\n\n // privileges related to PTZ control\n private ptzPrivilegesSubject = new ReplaySubject();\n private ptzPrivileges?: PtzPrivileges = undefined;\n\n private iscontentReceived = false;\n // Init data\n private contentSubject: Subject = new Subject();\n private content$: Observable = this.contentSubject.asObservable();\n\n // Instance of the video player to which this service is bound.\n private videoPlayer?: IVideoPlayer;\n\n // Ptz Configuration\n private zoomSpeed = 50;\n\n // Security Center client\n private scClient: SecurityCenterClient;\n\n // CameraEntity\n private cameraEntitySubject = new Subject();\n private cameraEntity$ = this.cameraEntitySubject.asObservable();\n\n // PtzCapabilities\n private cameraCapabilitiesSubject = new Subject();\n private ptzPatternsSubject = new Subject>();\n private ptzPresetsSubject = new Subject>();\n\n // Supported commands\n private supportedCommandsHexSubject = new BehaviorSubject(this.defaultSupportedCommandsHex);\n private supportedCommandsSubject = new Subject();\n\n // Camera mode\n private playerModeSubject = new BehaviorSubject(PlayerMode.live);\n\n private currentLockingUserId: IGuid | undefined;\n private currentLockingUserAppId: IGuid | undefined;\n\n // Cache pour les entity informationd\n constructor(\n @Inject(CONTENT_SERVICES_PROVIDER) public contentServicesProvider: ContentExtensionServicesProvider,\n private translateService: TranslateService,\n private securityCenterClientService: SecurityCenterClientService,\n private videoApiClient: VideoClient\n ) {\n // Retrieve SecurityCenterClient\n this.scClient = this.securityCenterClientService.scClient;\n // Build cacheTask\n this.entityCacheTask = this.scClient.buildEntityCache([CameraEntityFields.lockingUserIdField, CameraEntityFields.lockingUserAppIdField, EntityFields.isFederatedField]);\n\n // Listen for incoming content from a Ptz controllable content\n // content will be coming from a component that injects this service.\n this.content$.pipe(untilDestroyed(this)).subscribe(async (content: Content) => {\n this.iscontentReceived = true;\n // We received the ID of the videoPlayer, let's bind our service to it.\n this.videoPlayer = this.contentServicesProvider.getService(content.id);\n\n // Register this service with the ContentServicesProvider\n this.contentServicesProvider.setService(this.guid, this as PtzControlsService);\n\n // Register callback for videoMode\n this.registerPlayerModeChangedCallback();\n\n // Create the privilege class from the content, en emit the resutlt\n this.ptzPrivileges = new PtzPrivileges(content);\n this.ptzPrivilegesSubject.next(this.ptzPrivileges);\n\n //Bind cameraService to a specific guid entity\n const cameraEntity = await this.getCameraEntityFromCache(SafeGuid.parse(content.source));\n if (cameraEntity !== null) {\n this.cameraEntitySubject.next(cameraEntity);\n }\n });\n this.cameraEntity$.pipe(untilDestroyed(this)).subscribe(async (cameraEntity: CameraEntity) => {\n // Check for ptzLockInfo\n await this.checkForLockingStateInformation(cameraEntity);\n\n // init cache\n await this.entityCacheTask.detectFieldChangeAsync(\n cameraEntity,\n () => {\n const _ = cameraEntity?.lockingUserId;\n },\n async (entity: IEntity) => {\n await this.checkForLockingStateInformation(entity as CameraEntity);\n }\n );\n await this.entityCacheTask.detectFieldChangeAsync(\n cameraEntity,\n () => {\n const _ = cameraEntity?.lockingUserAppId;\n },\n async (entity: IEntity) => {\n await this.checkForLockingStateInformation(entity as CameraEntity);\n }\n );\n\n // Look for ptzCamera capabilities\n const ptzCapabilities = await cameraEntity.getPtzCapabilitiesAsync();\n if (ptzCapabilities) {\n this.cameraCapabilitiesSubject.next(ptzCapabilities as PtzCapabilitiesInfo);\n // for internal use\n this.supportedCommandsHexSubject.next(ptzCapabilities.supportedCommands);\n }\n\n // Look for ptzPatterns\n const ptzPatterns = await cameraEntity.getPatternsAsync();\n if (ptzPatterns) {\n this.ptzPatternsSubject.next(ptzPatterns);\n }\n\n // look for ptzPresets\n const ptzPresets = await cameraEntity.getPresetsAsync();\n if (ptzPresets) {\n this.ptzPresetsSubject.next(ptzPresets);\n }\n });\n }\n /**\n * Assigns the content of the component that injects this service\n * to the observable so that we can properly retrieve the videoPlayer.\n * This HAS to be done before the service is usable.\n *\n * @param content\n */\n public setContent(content: Content): void {\n this.contentSubject.next(content);\n }\n\n public getZoomSpeed(): number {\n return this.zoomSpeed;\n }\n\n public ngOnDestroy(): void {\n this.entityCacheTask.dispose().fireAndForget();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Exposed Observables\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Subscribe to this to receive the latests PtzPrivilege your user have over the PtzCamera bound to this service\n *\n * @returns A PtzPrivilege object that encapsulates every PtzRelated privileges for the user interacting with the camera bound to this service.\n */\n public getPtzPrivileges(): Observable {\n return this.ptzPrivilegesSubject.asObservable();\n }\n\n /**\n * Returns an observable containing the lock string information. This observable will be updated whenever there is a change in\n * the ptzLockUser or ptzLockUserApp.\n */\n public getLockingStateInformation(): Observable {\n return this.lockingStateInformationSubject.asObservable();\n }\n\n /**\n * Subscribe to this to receive the latest PtzCapabilitiesInfo for the PtzCamera bound to this service\n *\n * @returns ptzCapabilities of the ptz camera bound to this service\n */\n public getCameraCapabilities(): Observable {\n return this.cameraCapabilitiesSubject.asObservable();\n }\n\n /**\n * Subscribe to this to get the latest player mode of the PtzCamera bound to this service\n *\n * @returns Observable of the latest playerMode\n */\n public getPlayerMode(): Observable {\n return this.playerModeSubject.asObservable();\n }\n\n /**\n * Subscribe to this to get the camera presets list of the PtzCamera bound to this service\n *\n * @returns Observable of the latest cameraPresets\n */\n public getCameraPresets(): Observable> {\n return this.ptzPresetsSubject.asObservable();\n }\n\n /**\n * Subscribe to this to get the camera patterns list of the PtzCamera bound to this service\n *\n * @returns Observable of the latest cameraPatterns\n */\n public getCameraPatterns(): Observable> {\n return this.ptzPatternsSubject.asObservable();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Locking Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public ptzTriggerLock(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowLockPtz) {\n this.videoPlayer.ptzControl?.lock();\n return true;\n } else {\n return false;\n }\n }\n\n public ptzTriggerUnlock(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowPtzLockOverride) {\n this.videoPlayer.ptzControl?.unlock();\n return true;\n } else {\n return false;\n }\n }\n ///////////////////////////////////////////////////////////////////////////////////////\n // Home Position Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public ptzGoHomePosition(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowBasicPtz) {\n this.videoPlayer.ptzControl?.goHome();\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Presets Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public ptzGoToPreset(preset: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowPresetsUse) {\n this.videoPlayer.ptzControl?.goToPreset(preset);\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Patterns Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public ptzRunPattern(patternNumber: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowPatternsUse) {\n this.videoPlayer.ptzControl?.runPattern(patternNumber);\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Zooming Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Allows to set the zoom speed for the startZoom method.\n *\n * @param value numeric value between -100 and 100. If smaller or bigger, will be adjusted to the closer limit.\n */\n public setZoomSpeed(value: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowDigitalZoom) {\n let speed = value;\n // constraint the zoom value\n if (speed < -100) {\n speed = -100;\n } else if (speed > 100) {\n speed = 100;\n }\n this.zoomSpeed = speed;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Zooms in the Ptz Camera until it receives a stopZoom Signal.\n * if the zoom speed is set to -x%, then the value is adjusted to it's positive equivalent.\n */\n public zoomIn(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowDigitalZoom) {\n if (this.zoomSpeed < 0) {\n this.zoomSpeed = Math.abs(this.zoomSpeed);\n }\n this.videoPlayer.ptzControl?.startZoom(this.zoomSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Zooms out the Ptz Camera until it receives a stopZoom() signal.\n * if the zoom speed is set to +x%, then the value is adjusted to it's negative equivalent.\n */\n public zoomOut(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowDigitalZoom) {\n if (this.zoomSpeed > 0) {\n this.zoomSpeed = this.zoomSpeed * -1;\n }\n this.videoPlayer.ptzControl?.startZoom(this.zoomSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Stops the zooming action in progress (in, or out)\n */\n public stopZoom(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowDigitalZoom) {\n this.videoPlayer.ptzControl?.stopZoom();\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Pan, Tilt Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Stops any movement of the camera\n */\n public stopPtz(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowBasicPtz) {\n this.videoPlayer.ptzControl?.stopPanTilt();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Applies velocity on x and y coordinates.\n * Negative x values move the camera to the left, and positive values to the right.\n * Negative y values move the camera downward, and positive values upward.\n *\n * @param velocity x and y values must be between -100 and 100\n */\n public ptzStartPanTilt(velocity: Point): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n // ensure the user has the basic PTZ privilege\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowBasicPtz) {\n this.videoPlayer.ptzControl?.startPanTilt(velocity.x, velocity.y);\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Focus & Iris Functionnalities\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Focuses in the ptz camera\n *\n * @param ptzSpeed speed at which the action will take place\n * @returns whether the action succeeded or failed\n */\n public ptzFocusIn(ptzSpeed: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.startFocus(PtzFocusDistance.Far, ptzSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Focuses out the ptz camera\n *\n * @param ptzSpeed speed at which the action will take place\n * @returns whether the action succeeded or failed\n */\n public ptzFocusOut(ptzSpeed: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.startFocus(PtzFocusDistance.Near, ptzSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Sends a stop signal to the focus motors\n *\n * @returns whether the action succeeded or failed\n */\n public ptzStopFocus(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.stopFocus();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Opens the aperture of the camera\n *\n * @param ptzSpeed speed at which the action will take place\n * @returns whether the action succeeded or failed\n */\n public ptzIrisOpen(ptzSpeed: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.startIris(PtzIrisOperation.Open, ptzSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Closes the aperture of the camera\n *\n * @param ptzSpeed speed at which the action will take place\n * @returns whether the action succeeded or failed\n */\n public ptzIrisClose(ptzSpeed: number): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.startIris(PtzIrisOperation.Close, ptzSpeed);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Sends a stop signal to the iris motors\n *\n * @returns whether the action succeeded or failed\n */\n public ptzStopIris(): boolean {\n if (!this.isPtzServiceProperlyInitialized()) {\n throw new Error('PTZ methods cannot be used at the moment, are you sure you called method \"setcontent\" before calling this PTZ action ?');\n }\n if (this.videoPlayer?.isPtz && this.ptzPrivileges?.allowChangeFocusAndIris) {\n this.videoPlayer.ptzControl?.stopIris();\n return true;\n } else {\n return false;\n }\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Capabilities Section\n ///////////////////////////////////////////////////////////////////////////////////////\n public getAllSupportedCommands(supportedCommandHex: string | undefined): Observable {\n const subject = new BehaviorSubject(new SupportedCommands([]));\n if (!supportedCommandHex) {\n const emptyCommands = new SupportedCommands([]);\n subject.next(emptyCommands);\n } else {\n this.videoApiClient\n .supportedCommands(supportedCommandHex)\n .pipe(take(1), untilDestroyed(this))\n .subscribe((supportedCommandList: string[]) => {\n subject.next(new SupportedCommands(supportedCommandList));\n });\n }\n return subject.asObservable();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Locking State Information\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Returns the locking state information of the PtzCamera bound to this service. The Business logic is extracted straight from the\n * Security Desk application.\n *\n * @param entityQuery must regroup lockingUserAppId and lockingUserId. The order does not matter.\n */\n private async getPtzLockingStateInformation(entity: CameraEntity): Promise {\n // Create a guidset from the two guids\n const guidset = SafeGuid.createSet();\n guidset.add(entity?.lockingUserAppId);\n guidset.add(entity?.lockingUserId);\n\n // Seek out an empty Guid\n let msg = '';\n guidset.forEach((guid: IGuid) => {\n if (guid.isEmpty()) {\n msg = this.translateService.instant('STE_LABEL_PTZ_ANALOG_PTZ') as string;\n }\n });\n if (msg !== '') {\n return Promise.resolve(msg);\n }\n\n // Extract the objects from the returned entities\n const entities = await this.entityCacheTask.getEntitiesAsync(Entity, guidset, false);\n const ptzLockOwnerAppObject: IEntity | undefined = entities?.find((entry) => entry.entityType === EntityTypes.Applications);\n const ptzLockOwnerObject: IEntity | undefined = entities?.find((entry) => entry.entityType === EntityTypes.Users);\n\n // retrieve their name if present, otherwise return null\n let ptzLockOwner = ptzLockOwnerObject?.name || null;\n let ptzLockOwnerApp = ptzLockOwnerAppObject?.name || null;\n\n if (ptzLockOwnerObject === null || ptzLockOwnerObject === undefined) {\n if (entity?.isFederated) {\n ptzLockOwner = this.translateService.instant('STE_LABEL_PTZ_FEDERATION') as string;\n } else {\n ptzLockOwner = this.translateService.instant('STE_LABEL_PTZ_ANOTHER_USER_LC') as string;\n }\n }\n let message = '';\n if (ptzLockOwnerApp !== null && ptzLockOwner !== null) {\n // if the returned ptzLockOwnerApp contains a GUID,\n const itMatchesRegex = /[a-z0-9A-Z]{8}-([a-z0-9-A-Z]{4}-){3}[a-zA-Z0-9]{12}/.exec(ptzLockOwnerApp);\n if (itMatchesRegex) {\n // then reinterpret it as being issued by the webApp itself\n ptzLockOwnerApp = this.translateService.instant('STE_LABEL_PTZ_LOCKED_BY_WEB_APP') as string;\n }\n message = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_PTZ_LOCKED_BY_ON_MACHINE') as string, ptzLockOwner, ptzLockOwnerApp ? ptzLockOwnerApp : '');\n } else if (ptzLockOwner !== null) {\n message = stringFormat(this.translateService.instant('STE_LABEL_FORMAT_PTZ_LOCKED_BY') as string, ptzLockOwner);\n }\n return Promise.resolve(message);\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Privileges Section\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n *\n * @param entity the entity on which change detection is registered\n */\n private async checkForLockingStateInformation(entity: ICameraEntity): Promise {\n if (entity.lockingUserId.equals(this.currentLockingUserId) && entity.lockingUserAppId.equals(this.currentLockingUserAppId)) {\n return;\n }\n\n this.currentLockingUserId = entity.lockingUserId;\n this.currentLockingUserAppId = entity.lockingUserAppId;\n // Fetch them as one\n const lockingStateInfo = await this.getPtzLockingStateInformation(entity as CameraEntity);\n\n // Put the lockingInformation in the Subject\n this.lockingStateInformationSubject.next(lockingStateInfo);\n }\n\n private isPtzServiceProperlyInitialized(): boolean {\n if (this.iscontentReceived === false) {\n return false;\n } else {\n return true;\n }\n }\n\n private async getCameraEntityFromCache(guid: IGuid): Promise {\n return this.entityCacheTask.getEntityAsync(CameraEntity, guid);\n }\n\n private registerPlayerModeChangedCallback(): void {\n this.videoPlayer?.onPlayerModeChanged.register((event: PlayerModeChangeEvent) => {\n this.playerModeSubject.next(event.playerMode);\n });\n }\n}\n","\n \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n
    \n {{ 'STE_MENU_PTZ_CONTEXT_MENU' | translate }}\n
    \n
    \n \n
    \n\n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n \n
    \n \n
    \n \n \n \n \n \n \n
    \n \n
    \n\n \n
    \n \n {{ presetIndex }}\n \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n\n \n \n \n \n
    \n \n
    \n \n \n \n \n
    \n\n \n \n\n \n \n
    \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n\n {{ 'STE_LABEL_LOADING_ELLIPSIS' | translate }}\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ButtonFlavor, IconSize, PopupPosition } from '@genetec/gelato';\nimport { GenMeltedItem, GenMeltedMenuItem, GenMenu, GenPopup, MeltedIcon, Orientation } from '@genetec/gelato-angular';\nimport { HideableComponent } from '@modules/shared/components/hideable/hideable.component';\nimport { Content } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { ContextMenuItemSwitcherService } from '@shared/services/context-menu/context-menu-item-switcher.service';\nimport { uniqueId } from 'lodash-es';\nimport { PlayerMode } from 'Marmot/Marmot/enums';\nimport { IPtzInfo } from 'RestClient/Client/Interface/ICameraEntity';\nimport { PtzCapabilitiesInfo } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { PtzControlsService } from './services/ptz-controls.service';\nimport { PtzPrivileges } from './services/ptz-privileges';\nimport { SupportedCommands } from './supported-commands';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-ptz-controls',\n templateUrl: './ptz-controls.component.html',\n styleUrls: ['./ptz-controls.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [PtzControlsService],\n})\n/**\n * This version of the PtzControlsComponent is not a plugin, and it currently appears in the videoControls button overlay (when the PTZ icon is clicked)\n */\nexport class PtzControlsComponent extends HideableComponent implements OnInit, AfterViewInit {\n @Input()\n public content?: Content;\n\n @Input()\n public showContextMenu?: boolean;\n\n @Output()\n public hideRequested = new EventEmitter();\n\n @ViewChild('speedMenuPopup') public speedMenuPopup!: GenPopup;\n @ViewChild('contextMenu') private contextMenu!: GenMenu;\n @ViewChild('hamburgerMenu') private hamburgerMenu!: GenMenu;\n\n // Public constants\n public readonly NUMBER_PAD_PRESETS_AMOUNT = 8;\n public readonly PTZ_DEFAULT_SPEED = 50;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly IconSize = IconSize;\n public readonly PopupPosition = PopupPosition;\n public readonly Orientation = Orientation;\n public readonly componentGuid = uniqueId();\n\n // PUBLIC members\n public speedIconToUse: MeltedIcon = MeltedIcon.SpeedLow;\n public ptzSpeed = this.PTZ_DEFAULT_SPEED;\n public ptzPrivileges$ = new Observable();\n public allSupportedCommands$ = new Observable();\n public ptzCapabilities$ = new Observable();\n public patternComboBoxItemList$: Observable;\n public presetsComboBoxItemList$: Observable;\n public patternComboBoxSelection: GenMeltedItem | undefined;\n public presetsComboBoxSelection: GenMeltedItem | undefined;\n public presetsNumpadItemList$: Observable;\n public playerMode$ = new Observable();\n public currentSelection: ContextMenuItem = { id: '', text: '' };\n public viewOptionsList: ContextMenuItem[] = [\n {\n id: 'ptz-mode-default',\n text: this.translateService.instant('STE_MENU_ITEM_PTZ_MODE_DEFAULT') as string,\n icon: MeltedIcon.Checkmark,\n actionItem: {\n execute: (item: ContextMenuItem): void => this.onContextMenuItemChange(item),\n isAllowed: (): boolean => true,\n canExecute: (): boolean => true,\n },\n },\n {\n id: 'ptz-mode-advanced',\n text: this.translateService.instant('STE_MENU_ITEM_PTZ_MODE_ADVANCED') as string,\n icon: MeltedIcon.None,\n actionItem: {\n execute: (item: ContextMenuItem): void => this.onContextMenuItemChange(item),\n isAllowed: (): boolean => true,\n canExecute: (): boolean => true,\n },\n },\n ];\n public hamburgerOptionsList: ContextMenuItem[] = [];\n public presetsNumpadDisabledState = new Array(this.NUMBER_PAD_PRESETS_AMOUNT).fill(false);\n\n // Private Members\n // Pre-populate the dropdowns so it's compliant with the new restriction on the source of the gen-dropdown\n private patternComboBoxItemListSubject = new BehaviorSubject([\n { id: 'dropdown-no-item', text: this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PATTERNS_DROPDOWN_NO_VALUE') as string },\n ]);\n private presetsComboBoxItemListSubject = new BehaviorSubject([\n { id: 'dropdown-no-item', text: this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PRESETS_DROPDOWN_NO_VALUE') as string },\n ]);\n private presetsNumpadItemListSubject = new BehaviorSubject(this.generateGenericPresetsTooltip(this.NUMBER_PAD_PRESETS_AMOUNT));\n\n constructor(\n trackingService: TrackingService,\n private changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService,\n public ptzControlsService: PtzControlsService,\n private contextMenuItemSwitcherService: ContextMenuItemSwitcherService,\n viewContainerRef: ViewContainerRef\n ) {\n super(viewContainerRef, trackingService);\n\n this.patternComboBoxItemList$ = this.patternComboBoxItemListSubject.asObservable();\n this.presetsComboBoxItemList$ = this.presetsComboBoxItemListSubject.asObservable();\n this.presetsNumpadItemList$ = this.presetsNumpadItemListSubject.asObservable();\n }\n\n ngOnInit(): void {\n // Process user privileges over this camera\n this.ptzPrivileges$ = this.ptzControlsService.getPtzPrivileges();\n\n // Process camera capabilitigites\n this.ptzCapabilities$ = this.ptzControlsService.getCameraCapabilities();\n\n // subscribe to the playerModeEvents\n this.playerMode$ = this.ptzControlsService.getPlayerMode();\n\n // Combine predicates, and then push to baseClass resulting predicate evaluation, it will handle css manipulation in order to hide the component\n combineLatest([this.ptzControlsService.getPtzPrivileges(), this.ptzControlsService.getCameraCapabilities(), this.ptzControlsService.getPlayerMode()])\n .pipe(untilDestroyed(this))\n .subscribe((vals) => {\n // compute privileges based actions for the UI\n this.addActionsInHamburger(vals[0]);\n\n // hide component if said predicate is true\n const predicate = vals[0] === undefined || !vals[1].ptzControlEnabled || vals[2] !== 'live';\n this.hideRequestSubject.next(predicate);\n this.hideRequested.emit(predicate);\n });\n\n // parse the capabilities\n this.processCapabilities();\n\n this.changeDetectorRef.detectChanges();\n }\n\n ngAfterViewInit(): void {\n // Select \"default mode\" in the viewOptionsList\n this.currentSelection = this.viewOptionsList[0];\n\n // initialize the service\n if (this.content) {\n // Initialize PtzControlsService with the proper content information\n this.ptzControlsService.setContent(this.content);\n }\n this.changeDetectorRef.detectChanges();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Context Menu logic\n ///////////////////////////////////////////////////////////////////////////////////////\n public onContextMenuItemChange(item: ContextMenuItem): void {\n this.viewOptionsList = this.contextMenuItemSwitcherService.getNextDataSourceWithNewSelection(item.id, this.viewOptionsList);\n this.currentSelection = item;\n this.changeDetectorRef.detectChanges();\n }\n\n public async toggleContextMenu(): Promise {\n await this.contextMenu.toggle();\n this.changeDetectorRef.markForCheck();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Hamburger Menu logic\n ///////////////////////////////////////////////////////////////////////////////////////\n public async toggleHamburgerMenu(): Promise {\n await this.hamburgerMenu.toggle();\n this.changeDetectorRef.markForCheck();\n }\n\n public triggerHomePosition(): void {\n this.ptzControlsService.ptzGoHomePosition();\n }\n\n public unlockPtz(): void {\n this.ptzControlsService.ptzTriggerUnlock();\n this.changeDetectorRef.markForCheck();\n }\n\n public lockPtz(): void {\n this.ptzControlsService.ptzTriggerLock();\n this.changeDetectorRef.markForCheck();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Speed Menu logic\n ///////////////////////////////////////////////////////////////////////////////////////\n public async toggleSpeedMenu(): Promise {\n await this.speedMenuPopup.toggle();\n this.changeDetectorRef.markForCheck();\n }\n\n public onSpeedSliderChange(newValue: number): void {\n this.ptzSpeed = newValue;\n const currentSpeed = this.ptzSpeed;\n if (currentSpeed <= 30) {\n this.speedIconToUse = MeltedIcon.SpeedLow;\n } else if (currentSpeed >= 31 && currentSpeed <= 60) {\n this.speedIconToUse = MeltedIcon.SpeedAverage;\n } else if (currentSpeed >= 61) {\n this.speedIconToUse = MeltedIcon.SpeedHigh;\n }\n this.changeDetectorRef.markForCheck();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Pan/Tilt Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public stopPtz(): void {\n this.ptzControlsService.stopPtz();\n }\n\n public onUpArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: 0, y: this.ptzSpeed });\n }\n\n public onDiagDownRightArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed, y: this.ptzSpeed * -1 });\n }\n\n public onDownArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: 0, y: this.ptzSpeed * -1 });\n }\n\n public onDiagDownLeftArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed * -1, y: this.ptzSpeed * -1 });\n }\n\n public onRightArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed, y: 0 });\n }\n\n public onLeftArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed * -1, y: 0 });\n }\n\n public onDiagUpRightArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed, y: this.ptzSpeed });\n }\n\n public onDiagUpLeftArrowMouseDown(): void {\n this.ptzControlsService.ptzStartPanTilt({ x: this.ptzSpeed * -1, y: this.ptzSpeed });\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Zooming Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public onZoomInMouseDown(): void {\n this.ptzControlsService.setZoomSpeed(this.ptzSpeed);\n this.ptzControlsService.zoomIn();\n }\n\n public onZoomOutMouseDown(): void {\n this.ptzControlsService.setZoomSpeed(this.ptzSpeed * -1);\n this.ptzControlsService.zoomOut();\n }\n\n public onAnyZoomMouseUp(): void {\n this.ptzControlsService.stopZoom();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Presets Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public goToPreset(presetNumber: string | number | undefined): void {\n if (presetNumber && presetNumber !== -1) {\n this.ptzControlsService.ptzGoToPreset(+presetNumber);\n }\n }\n\n public onPresetSelectionChange(newValue: GenMeltedItem): void {\n this.presetsComboBoxSelection = newValue;\n this.changeDetectorRef.markForCheck();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Patterns Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public runPattern(patternNumber: string | number | undefined): void {\n if (patternNumber && patternNumber !== -1) {\n this.ptzControlsService.ptzRunPattern(+patternNumber);\n }\n }\n\n public onPatternSelectionChange(newValue: GenMeltedItem): void {\n this.patternComboBoxSelection = newValue;\n this.changeDetectorRef.markForCheck();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Focus Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public focusIn(): void {\n this.ptzControlsService.ptzFocusIn(this.ptzSpeed);\n }\n\n public focusOut(): void {\n this.ptzControlsService.ptzFocusOut(this.ptzSpeed);\n }\n\n public stopFocus(): void {\n this.ptzControlsService.ptzStopFocus();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Iris Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public irisOpen(): void {\n this.ptzControlsService.ptzIrisOpen(this.ptzSpeed);\n }\n\n public irisClose(): void {\n this.ptzControlsService.ptzIrisClose(this.ptzSpeed);\n }\n\n public stopIris(): void {\n this.ptzControlsService.ptzStopIris();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Status Functionalities\n ///////////////////////////////////////////////////////////////////////////////////////\n public getPtzLockingStateInformation(): Observable {\n return this.ptzControlsService.getLockingStateInformation();\n }\n\n ///////////////////////////////////////////////////////////////////////////////////////\n // Utilities methods\n ///////////////////////////////////////////////////////////////////////////////////////\n /**\n * Use this method to dynamically add elements based on privileges in the hamburger menu.\n */\n private addActionsInHamburger(privileges: PtzPrivileges) {\n const lockCallback: () => void = () => this.lockPtz();\n const unlockCallback: () => void = () => this.unlockPtz();\n\n // Only add home action if user has basic ptz privilege\n const newOptionsList: ContextMenuItem[] = [];\n this.addHomeMenuItem(newOptionsList, privileges);\n this.addLockMenuItem(newOptionsList, privileges, 'STE_MENU_ITEM_PTZ_HAMBURGER_MENU_LOCK', lockCallback);\n this.hamburgerOptionsList = newOptionsList;\n\n // Register lock change handler for this item\n // use the ptzService to discover if lock is applied right now\n this.getPtzLockingStateInformation()\n .pipe(untilDestroyed(this))\n .subscribe((lockString: string) => {\n this.mapLockCallback(lockString, privileges, unlockCallback, lockCallback);\n });\n }\n\n private mapLockCallback(lockString: string, privileges: PtzPrivileges, unlockCallback: () => void, lockCallback: () => void) {\n const newOptionsList: ContextMenuItem[] = [];\n if (lockString && lockString.length > 0 && lockString !== this.translateService.instant('STE_LABEL_PTZ_ANALOG_PTZ')) {\n // then someone has locked the camera, provide the unlock option.\n this.addHomeMenuItem(newOptionsList, privileges);\n this.addLockMenuItem(newOptionsList, privileges, 'STE_MENU_ITEM_PTZ_HAMBURGER_MENU_UNLOCK', unlockCallback);\n } else {\n this.addHomeMenuItem(newOptionsList, privileges);\n this.addLockMenuItem(newOptionsList, privileges, 'STE_MENU_ITEM_PTZ_HAMBURGER_MENU_LOCK', lockCallback);\n }\n this.hamburgerOptionsList = newOptionsList;\n }\n\n private addHomeMenuItem(array: ContextMenuItem[], privileges: PtzPrivileges): void {\n array.push({\n id: 'hamburger-menu-home',\n text: this.translateService.instant('STE_MENU_ITEM_PTZ_HAMBURGER_MENU_HOME') as string,\n icon: MeltedIcon.None,\n actionItem: {\n execute: () => this.triggerHomePosition(),\n isAllowed: () => privileges.allowBasicPtz,\n },\n });\n }\n\n private addLockMenuItem(array: ContextMenuItem[], privileges: PtzPrivileges, textKey: string, callback: () => void): void {\n array.push({\n id: 'hamburger-menu-lock',\n text: this.translateService.instant(textKey) as string,\n actionItem: {\n execute: callback,\n isAllowed: () => privileges.allowLockPtz || privileges.allowPtzLockOverride,\n },\n });\n }\n\n private processCapabilities(): void {\n this.ptzCapabilities$.pipe(untilDestroyed(this)).subscribe((capabilities: PtzCapabilitiesInfo) => {\n this.processPatterns(capabilities.patternBase, capabilities.numberOfPattern + capabilities.patternBase);\n this.processPresets(capabilities.presetBase, capabilities.numberOfPresets + capabilities.presetBase);\n this.processSupportedCommands(capabilities.supportedCommands);\n });\n }\n\n private processSupportedCommands(supportedCommands: string) {\n this.allSupportedCommands$ = this.ptzControlsService.getAllSupportedCommands(supportedCommands);\n }\n\n /**\n * Based on the patternAmount and patternBase, this will build an array with the corresponding GenItem. This method pushes the resulting array in the patternComboBoxItemList$ observable\n * so that the UI can properly update the values displayed in the patterns combobox.\n */\n private processPatterns(patternBase: number, patternAmount: number): void {\n const patternsNoValueDropdown = this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PATTERNS_DROPDOWN_NO_VALUE') as string;\n const patternsDefaultString = this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PATTERNS_DROPDOWN') as string;\n // if not empty, select first item by default for each combobox\n const emptyDropdown: GenMeltedItem = {\n id: 'combobox-no-item',\n text: patternsNoValueDropdown,\n } as GenMeltedItem;\n const patternArray: GenMeltedItem[] = [];\n\n // We must construct the patternArray with \"default items\"\n for (let i = patternBase; i < patternAmount; i++) {\n const value = stringFormat(patternsDefaultString, i.toString());\n patternArray.push({ id: i.toString(), text: value } as GenMeltedItem);\n }\n\n // run checks for Patterns\n this.ptzControlsService\n .getCameraPatterns()\n .pipe(untilDestroyed(this))\n .subscribe((patterns: ObservableCollection) => {\n for (const pattern of patterns) {\n patternArray.some((item, index) => {\n if (+item?.id === pattern.id) {\n patternArray[index] = { id: pattern.id.toString(), text: pattern.name };\n return true;\n }\n return false;\n });\n }\n this.patternComboBoxItemListSubject.next(patternArray);\n\n if (patternArray.length > 0) {\n this.patternComboBoxSelection = patternArray[0];\n } else {\n this.patternComboBoxItemListSubject.next([emptyDropdown]);\n this.patternComboBoxSelection = emptyDropdown;\n }\n this.changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Generates an array of MenuItem to be used as tooltips for the PresetsNumpad in the PTZ controller.\n *\n * @amount The quantity of tooltips you want. This typically should be the same amount as there are on the controller's template.\n * @returns array containing the MenuItem\n */\n private generateGenericPresetsTooltip(amount: number): GenMeltedItem[] {\n const presetsNumpadArray: GenMeltedItem[] = [];\n // Fill the array of the presets numpad\n for (let i = 0; i < amount; i++) {\n const value = stringFormat(this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PRESETS_DROPDOWN') as string, i.toString());\n presetsNumpadArray.push({ id: i.toString(), text: value } as GenMeltedItem);\n }\n return presetsNumpadArray;\n }\n\n /**\n * Generates an array of MenuItem to display inside the presets dropdown. The text is generic, and will be replaced later on if they are configured\n * in the camera\n *\n * @startingId the number of the preset that will be displayed in the text\n * @desiredAmount the amount of MenuItem you want\n *\n * @returns an array of MenuItem\n */\n private generateGenericPresetsDropdownItems(startingId: number, desiredAmount: number): GenMeltedItem[] {\n const patternsDefaultString = this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PRESETS_DROPDOWN') as string;\n const presetDropdownArray: GenMeltedItem[] = [];\n\n for (let i = startingId; i < desiredAmount; i++) {\n const value = stringFormat(patternsDefaultString, i.toString());\n presetDropdownArray.push({ id: i.toString(), text: value } as GenMeltedItem);\n }\n return presetDropdownArray;\n }\n\n /**\n * Generates a 1-1 correspondance array with the presets pad. Deactivating anyting that comes after the presetsAmount if its smaller than NUMBER_PAD_PRESETS_AMOUNT\n * and everything that comes before the configured presetsBase.\n *\n * @returns an array with either true or false as a value. True will disable the corresponding Preset numpad number. False will leave it enabled.\n */\n private deactivateCorrespondingPresets(presetsBase: number, presetsAmount: number): Array {\n const array: Array = new Array(this.NUMBER_PAD_PRESETS_AMOUNT).fill(false);\n\n // Also deactivate all presets that comes before the presetsBase\n if (presetsBase > 0) {\n for (let i = 0; i < presetsBase; i++) {\n array[i] = true;\n }\n }\n // Also deactivate everything that comes after the threshold\n if (presetsAmount < this.NUMBER_PAD_PRESETS_AMOUNT) {\n for (let i = presetsAmount; i < this.NUMBER_PAD_PRESETS_AMOUNT; i++) {\n array[i] = true;\n }\n }\n return array;\n }\n\n /**\n * Based on the presetsAmount and presetsBase, this will build an array with the corresponding GenItem. This method pushes the resulting array in the presetComboBoxItemList$ observable\n * so that the UI can properly update the values displayed in the presets combobox.\n */\n private processPresets(presetsBase: number, presetsAmount: number): void {\n const presetsNoValueDropdown = this.translateService.instant('STE_VALUE_FORMAT_PTZ_ADVANCED_PRESETS_DROPDOWN_NO_VALUE') as string;\n\n // Run checks for presets\n const emptyDropdown: GenMeltedItem = {\n id: 'combobox-no-item',\n text: presetsNoValueDropdown,\n };\n\n // We must construct the presetArray with \"default items\"\n const presetDropdownArray: GenMeltedItem[] = this.generateGenericPresetsDropdownItems(presetsBase, presetsAmount);\n\n // Fill the array of the presets numpad\n const presetsNumpadArray: GenMeltedItem[] = this.generateGenericPresetsTooltip(presetsAmount);\n\n // Deactivate presets that are greater than the number of presets supported by the camera.\n this.presetsNumpadDisabledState = this.deactivateCorrespondingPresets(presetsBase, presetsAmount);\n\n // Component is ripe for change detection.\n this.changeDetectorRef.markForCheck();\n\n this.ptzControlsService\n .getCameraPresets()\n .pipe(untilDestroyed(this))\n .subscribe((userDefinedPresets: ObservableCollection) => {\n for (const preset of userDefinedPresets) {\n // Change the names in the dropdown from default to what's in the camera\n presetDropdownArray.some((item: GenMeltedItem, index: number) => {\n if (+item.id === preset.id) {\n if (preset.name && preset.id) {\n presetDropdownArray[index] = { id: preset.id.toString(), text: preset.name };\n return true;\n }\n }\n return false;\n });\n\n // Change the name for the presets numpad as well\n presetsNumpadArray.some((item: GenMeltedItem, index: number) => {\n if (+item.id === preset.id) {\n if (preset.name && preset.id) {\n presetsNumpadArray[index + presetsBase] = { id: preset.id.toString(), text: preset.name };\n return true;\n }\n }\n return false;\n });\n }\n this.presetsNumpadItemListSubject.next(presetsNumpadArray);\n this.presetsComboBoxItemListSubject.next(presetDropdownArray);\n\n if (presetDropdownArray.length > 0) {\n this.presetsComboBoxSelection = presetDropdownArray[0];\n } else {\n this.presetsComboBoxItemListSubject.next([emptyDropdown]);\n this.presetsComboBoxSelection = emptyDropdown;\n }\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent, PluginComponentExposure, PluginComponentRequirements } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentService } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { VideoContentTypes } from '../../../enumerations/video-content-types';\nimport { PtzPrivileges } from '../services/ptz-privileges';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nconst isContentSupported = (content: Content, pluginType: IGuid) => {\n if (content) {\n if (content.type.equals(VideoContentTypes.Video)) {\n // do not want to display video in compact mode when having not only the video, this will happen when expanding the popup instead\n if (pluginType.equals(PluginTypes.MapPopupCompact) && content.contextContent) {\n return false;\n }\n\n // Make sure our content has at least one ptz related privilege set to true.\n return new PtzPrivileges(content).hasAtLeastOnePtzPrivilege();\n }\n }\n return false;\n};\n\n@InternalContentPluginDescriptor({\n type: PtzControlsPluginComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: { id: PtzControlsPluginComponent.pluginId, priority: 2.1, supportsCarousel: true } as PluginComponentExposure,\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video] },\n})\n@Component({\n selector: 'app-ptz-controls-plugin',\n templateUrl: './ptz-controls-plugin.component.html',\n styleUrls: ['./ptz-controls-plugin.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class PtzControlsPluginComponent extends TrackedComponent implements ContentPluginComponent {\n // PUBLIC members\n public static pluginId = SafeGuid.parse('0526E7C5-7713-493C-B88D-D711FC5679F0');\n public dataContext?: ContentService;\n public content?: Content;\n\n constructor(trackingService: TrackingService) {\n super(trackingService);\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as ContentService;\n }\n}\n","\n","import { RecordingState } from 'RestClient/Client/Enumerations/RecordingStates';\n\nexport class CameraHelper {\n public static isRecording(state: string): boolean {\n switch (state) {\n case RecordingState.OffLocked:\n case RecordingState.Off:\n return false;\n case RecordingState.OnLocked:\n case RecordingState.OnAboutToStop:\n case RecordingState.On:\n return true;\n }\n return false;\n }\n\n public static isRecordingLocked(state: string): boolean {\n switch (state) {\n case RecordingState.OffLocked:\n case RecordingState.OnLocked:\n return true;\n case RecordingState.Off:\n case RecordingState.On:\n return false;\n }\n return false;\n }\n}\n","// Autogenerated: v2/help/enumerations/ApiCameraFeatureCapabilties?codegen=ts&showresources=False on 2022-12-21 2:23:40 PM\n\nexport class CameraFeatureCapabilties {\n public static Trickling = 'Trickling';\n public static Backup = 'Backup';\n public static Restore = 'Restore';\n public static EdgeTrickling = 'EdgeTrickling';\n public static Thumbnails = 'Thumbnails';\n public static Bookmarks = 'Bookmarks';\n public static MotionSearch = 'MotionSearch';\n public static DegradeVideo = 'DegradeVideo';\n public static BlockCamera = 'BlockCamera';\n public static LiveVideo = 'LiveVideo';\n public static StreamUsage = 'StreamUsage';\n public static DigitalZoom = 'DigitalZoom';\n public static Snapshot = 'Snapshot';\n public static LiveCache = 'LiveCache';\n public static VideoInfo = 'VideoInfo';\n public static ProtectVideoFile = 'ProtectVideoFile';\n public static Transparency = 'Transparency';\n public static Playback = 'Playback';\n public static NetworkTrace = 'NetworkTrace';\n public static Ping = 'Ping';\n public static Ptz = 'Ptz';\n public static LockPtz = 'LockPtz';\n public static EnhancedPtz = 'EnhancedPtz';\n public static PtzCoordinates = 'PtzCoordinates';\n public static Lens = 'Lens';\n public static CustomIcons = 'CustomIcons';\n public static PtzPriority = 'PtzPriority';\n public static CopyConfig = 'CopyConfig';\n public static MotionDetection = 'MotionDetection';\n public static CameraColor = 'CameraColor';\n public static CameraStreams = 'CameraStreams';\n public static Hardware = 'Hardware';\n public static Recording = 'Recording';\n public static VisualTracking = 'VisualTracking';\n public static ArchiveStorageDetails = 'ArchiveStorageDetails';\n public static VideoPage = 'VideoPage';\n public static SystemStatus = 'SystemStatus';\n public static RecordOnAuxArc = 'RecordOnAuxArc';\n public static RecordOnEdge = 'RecordOnEdge';\n public static ForensicSearch = 'ForensicSearch';\n public static Overlay = 'Overlay';\n public static Encrypted = 'Encrypted';\n public static PtzConnectionShareable = 'PtzConnectionShareable';\n public static DeniedRetrieveCloudArchives = 'DeniedRetrieveCloudArchives';\n public static CameraConfigurationReport = 'CameraConfigurationReport';\n public static CameraEventReport = 'CameraEventReport';\n public static Location = 'Location';\n public static LocationEdit = 'LocationEdit';\n public static PrivacyProtection = 'PrivacyProtection';\n public static CameraSwap = 'CameraSwap';\n public static FeatureLast = 'FeatureLast';\n\n public static readonly values = [\n CameraFeatureCapabilties.Trickling,\n CameraFeatureCapabilties.Backup,\n CameraFeatureCapabilties.Restore,\n CameraFeatureCapabilties.EdgeTrickling,\n CameraFeatureCapabilties.Thumbnails,\n CameraFeatureCapabilties.Bookmarks,\n CameraFeatureCapabilties.MotionSearch,\n CameraFeatureCapabilties.DegradeVideo,\n CameraFeatureCapabilties.BlockCamera,\n CameraFeatureCapabilties.LiveVideo,\n CameraFeatureCapabilties.StreamUsage,\n CameraFeatureCapabilties.DigitalZoom,\n CameraFeatureCapabilties.Snapshot,\n CameraFeatureCapabilties.LiveCache,\n CameraFeatureCapabilties.VideoInfo,\n CameraFeatureCapabilties.ProtectVideoFile,\n CameraFeatureCapabilties.Transparency,\n CameraFeatureCapabilties.Playback,\n CameraFeatureCapabilties.NetworkTrace,\n CameraFeatureCapabilties.Ping,\n CameraFeatureCapabilties.Ptz,\n CameraFeatureCapabilties.LockPtz,\n CameraFeatureCapabilties.EnhancedPtz,\n CameraFeatureCapabilties.PtzCoordinates,\n CameraFeatureCapabilties.Lens,\n CameraFeatureCapabilties.CustomIcons,\n CameraFeatureCapabilties.PtzPriority,\n CameraFeatureCapabilties.CopyConfig,\n CameraFeatureCapabilties.MotionDetection,\n CameraFeatureCapabilties.CameraColor,\n CameraFeatureCapabilties.CameraStreams,\n CameraFeatureCapabilties.Hardware,\n CameraFeatureCapabilties.Recording,\n CameraFeatureCapabilties.VisualTracking,\n CameraFeatureCapabilties.ArchiveStorageDetails,\n CameraFeatureCapabilties.VideoPage,\n CameraFeatureCapabilties.SystemStatus,\n CameraFeatureCapabilties.RecordOnAuxArc,\n CameraFeatureCapabilties.RecordOnEdge,\n CameraFeatureCapabilties.ForensicSearch,\n CameraFeatureCapabilties.Overlay,\n CameraFeatureCapabilties.Encrypted,\n CameraFeatureCapabilties.PtzConnectionShareable,\n CameraFeatureCapabilties.DeniedRetrieveCloudArchives,\n CameraFeatureCapabilties.CameraConfigurationReport,\n CameraFeatureCapabilties.CameraEventReport,\n CameraFeatureCapabilties.Location,\n CameraFeatureCapabilties.LocationEdit,\n CameraFeatureCapabilties.PrivacyProtection,\n CameraFeatureCapabilties.CameraSwap,\n CameraFeatureCapabilties.FeatureLast\n ];\n}\n","import gwp, {\n AudioAvailabilityChangeEvent,\n AudioStateChangeEvent,\n ErrorStatusEvent,\n IDewarperControl,\n IDigitalZoomControl,\n ILiteEvent,\n IPtzControl,\n ITimelineProvider,\n PlayerModeChangeEvent,\n PlayerStateChangeEvent,\n PlaySpeedChangeEvent,\n StreamingConnectionStatusChangeEvent,\n} from './Marmot/gwp';\nimport { ExportModel, ExportProgressEvent } from './export';\nimport { TimelinePartEvent } from './Timeline/timelinePartEvent';\nimport { IGuid } from 'safeguid';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n// important: expose the gwp object in the console for diagnostics\ndeclare global {\n interface Window {\n gwp: gwp;\n }\n}\n\nexport class LoopChangeEvent {\n public readonly isLooping: boolean;\n public readonly start: Date | undefined;\n public readonly end: Date | undefined;\n\n constructor(isLooping: boolean, start: Date | undefined, end: Date | undefined) {\n this.isLooping = isLooping;\n this.start = start;\n this.end = end;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface IVideoPlayer {\n //#region Events\n\n /** Event raised when the player gets into an Error state */\n readonly onErrorStateRaised: ILiteEvent;\n /** Event raised periodically (not every time) when a frame is rendered */\n readonly onFrameRendered: ILiteEvent;\n /** Event raised when the streaming connection status changes */\n readonly onStreamStatusChanged: ILiteEvent;\n /** Event raised when the player state changes */\n readonly onPlayerStateChanged: ILiteEvent;\n /** Event raised when play speed changes */\n readonly onPlaySpeedChanged: ILiteEvent;\n /** Event raised when loop range changes */\n readonly onLoopChanged: ILiteEvent;\n /** Event raised when audio playback state changes */\n readonly onAudioStateChanged: ILiteEvent;\n /** Event raised when audio playback availability changes */\n readonly onAudioAvailabilityChanged: ILiteEvent;\n /** Event raised when player mode changes between live and playback */\n readonly onPlayerModeChanged: ILiteEvent;\n /** Event raised periodically while player needs to buffer before it can start playing */\n readonly onBufferingProgress: ILiteEvent;\n /** Event raised periodically while export is in progress */\n readonly onExportProgress: ILiteEvent;\n /** Event raised when a new timeline part is received */\n readonly onTimelinePart: ILiteEvent;\n\n //#endregion\n\n //#region Properties\n\n isAudioEnabled: boolean;\n isAudioAvailable: boolean;\n isStarted: boolean;\n lastFrameTime: Date | undefined;\n ptzControl: IPtzControl | undefined;\n digitalZoomControl: IDigitalZoomControl | null;\n dewarperControl: IDewarperControl | null;\n timelineProvider: ITimelineProvider | undefined;\n baseUrl: string | undefined;\n isPtz?: boolean;\n supportPtz?: boolean;\n //#endregion\n\n //#region Methods\n\n addTimelineProviders(providers: Array, add: boolean, entities: Array): Promise;\n getExportAsync(exportModel: ExportModel): Promise;\n getThumbnailAsync(timestamp: Date, width: number): Promise;\n seek(seekTime: Date): void;\n playLive(): void;\n resume(maintainSpeed?: boolean): void;\n pause(maintainSpeed?: boolean): void;\n clearLoop(): void;\n setLoop(start: Date, end: Date): void;\n setPlaySpeed(playSpeed: number): void;\n takeSnapshotAsync(): Promise;\n setAudioEnabled(isAudioEnabled: boolean): void;\n setPtzMode(ptzMode: boolean): void;\n //#endregion\n}\n","import { DateTimeSpan } from \"./Marmot/gwp\";\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport enum ExportStatus {\n Running = 0,\n Success = 1,\n NoVideoError = 2,\n EncryptedError = 3,\n CodecNotSupportedError = 4,\n CameraNotFoundError = 5,\n TooManyConnectionsError = 6,\n InsufficientPrivilegeError = 7,\n UnknownError = 8,\n Cancelled = 9,\n TooManyConcurrentRequestsError = 10,\n RequestIsThrottled = 11,\n LegacyExportWithEncryptionNotSupported = 12,\n}\n\nexport abstract class ExportModel {\n public exportType: string;\n public cameraId = \"\";\n public timeRange: DateTimeSpan = new DateTimeSpan(new Date().toISOString(), new Date().toISOString());\n public alwaysZip: boolean = false; // We do not want zip files by default\n constructor(exportType: string) {\n this.exportType = exportType;\n }\n}\n\nexport class ExportG64Model extends ExportModel {\n public encryptionKey: string | null = null;\n constructor() {\n super(\"G64\");\n }\n}\n\nexport class ExportMp4Model extends ExportModel {\n public excludeAudio = true;\n constructor() {\n super(\"Mp4\");\n }\n}\n\nexport class ExportAsfModel extends ExportModel {\n public excludeAudio = true;\n public includeDateTime = false;\n public includeCameraName = false;\n constructor() {\n super(\"Asf\");\n }\n}\n\nexport class ExportProgressEvent {\n public readonly status: ExportStatus;\n public readonly progress: number;\n\n constructor(status: ExportStatus, progress: number) {\n this.status = status;\n this.progress = progress;\n }\n}\n ","import {\n CreateStreamResponse,\n ErrorCode,\n ErrorDetails,\n ErrorResponse,\n IEventDispatcher,\n ITransport,\n ITransportBuilder,\n IWebSocketRequest,\n IWebSocketResponse,\n SegmentInfo,\n StreamingStatus,\n SuccessResponse,\n UpdateStreamResponse,\n} from './Marmot/gwp';\nimport { IMessageParser, MessageParser, WebSocketMessageTypeV2 } from './Marmot/players/WebSocket/MessageParser';\nimport { InFlightQueries, InFlightQuery } from './Marmot/services/InFlightQueries';\nimport { WebSocketPayloadV2 } from './Marmot/services/WebSocketTransportV2';\nimport { ILiteEvent, LiteEvent } from './Marmot/utils/liteEvents';\nimport { AutoReconnectSocket, ISocket } from './Marmot/players/WebSocket/AutoReconnectSocket';\nimport { WebSocketBuilder } from './Marmot/players/WebSocket/WebSocketBuilder';\nimport { ILogger, Logger } from './Marmot/utils/logger';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { Deserializer } from './Marmot/utils/Deserializer';\nimport { ExportProgressEvent } from './export';\nimport { TimelinePartEvent } from './Timeline/timelinePartEvent';\nimport { SafeGuid } from 'safeguid';\n\nexport class WebAppTransport implements ITransport {\n // #region Fields\n\n private readonly _logger: ILogger;\n private readonly _client: WebAppClient;\n private readonly _messageParser: IMessageParser;\n private _dispatcher!: IEventDispatcher;\n private readonly _inFlightQueries = new InFlightQueries();\n private readonly _connectionReestablishedEvent = new LiteEvent();\n private readonly _connectionLostEvent = new LiteEvent();\n private _socket!: ISocket;\n private _sessionId = SafeGuid.newGuid().toString();\n private _isWebSocket = false;\n private _isOpen = false;\n private _currentPacketView: DataView | null = null;\n private _currentPacket: Uint8Array | null = null;\n private _currentPacketOffSet = 0;\n private _mergeNextBuffer = false;\n private _exportHandler!: LiteEvent;\n private _timelinePartHandler!: LiteEvent;\n\n // #endregion\n\n // #region Properties\n\n public get ConnectionReestablished(): ILiteEvent {\n return this._connectionReestablishedEvent.expose();\n }\n\n public get ConnectionLost(): ILiteEvent {\n return this._connectionLostEvent.expose();\n }\n\n // #endregion\n\n // #region Events\n\n // #endregion\n\n // #region Constructor\n\n constructor(marmotLogger: ILogger, client: WebAppClient, messageParser: IMessageParser) {\n this._messageParser = messageParser;\n this._client = client;\n this._logger = marmotLogger;\n this._isWebSocket = this._client.isWebSocket;\n }\n\n // #endregion\n\n // #region Public methods\n\n public async start(eventDispatcher: IEventDispatcher): Promise {\n this._dispatcher = eventDispatcher;\n this._isOpen = true;\n let url = this._client.rest.restServerUrl + '/media';\n\n if (this._isWebSocket) {\n // Websocket\n url = url.replace('http', 'ws');\n const headers: any = {};\n for (const [key, value] of this._client.rest.additionalHeaders) {\n headers[key] = value;\n }\n headers['WebAppMediaSessionIdHeader'] = this._sessionId;\n headers['Authorization'] = this._client.rest.authorizationHeader;\n const headerString = JSON.stringify(headers);\n url = url + '?headers=' + headerString;\n this._socket = await AutoReconnectSocket.build(this._logger, new WebSocketBuilder(this._logger, url));\n this._socket.onmessage = this.onMessage.bind(this);\n this._socket.ConnectionLost.register(this.onConnectionLost);\n this._socket.ConnectionReestablished.register(this.onConnectionReestablished);\n } else {\n // SSE\n const requestHeaders = this.getHttpHeaders();\n url = url + '/v2/ws';\n\n fetch(url, {\n method: 'GET',\n headers: requestHeaders,\n })\n .then(async (response) => {\n if (response.body == null) {\n this.onConnectionLost();\n return;\n }\n const reader = response.body.getReader();\n do {\n const result = await reader.read();\n if (result.done) {\n this.onConnectionLost();\n return;\n }\n this.queueData(result.value);\n } while (this._isOpen === true);\n })\n .catch((err) => {\n this.onConnectionLost();\n });\n }\n return true;\n }\n\n public fetch(method: string, url: string, body: string | null): Promise {\n const requestHeaders = this.getHttpHeaders();\n const fullUrl = this._client.rest.restServerUrl + '/media/' + url;\n\n if (body != null) {\n return fetch(fullUrl, {\n method: method,\n headers: requestHeaders,\n body: body,\n });\n } else {\n return fetch(fullUrl, {\n method: method,\n headers: requestHeaders,\n });\n }\n }\n\n public getHttpHeaders(): HeadersInit {\n const requestHeaders: HeadersInit = new Headers();\n const headers = this._client.rest.additionalHeaders;\n for (const [key, value] of headers) {\n requestHeaders.set(key, value);\n }\n requestHeaders.set('WebAppMediaSessionIdHeader', this._sessionId);\n requestHeaders.set('Authorization', this._client.rest.authorizationHeader);\n return requestHeaders;\n }\n\n public async stop(): Promise {\n this.unbindEvents();\n await this._socket.dispose();\n this._inFlightQueries.failAll('Connection closed');\n }\n\n public async send(message: IWebSocketRequest): Promise {\n let p: Promise;\n\n if (message.expectResponse) {\n p = new Promise((win, fail) => {\n this._inFlightQueries.add(message.channel, new InFlightQuery(win, fail, message));\n this.internalSend(message.serialize());\n });\n } else {\n p = Promise.resolve({ channel: message.channel });\n this.internalSend(message.serialize());\n }\n return p;\n }\n\n public async getTokenRetriever(camera: string): Promise {\n const response = await this._client.rest.executeRequestAsync('GET', `/media/v2/token/${camera}?id=${this._sessionId}`, null);\n return response.body;\n }\n\n public setExportEventHandler(handler: LiteEvent): void {\n this._exportHandler = handler;\n }\n\n public setTimelinePartEventHandler(handler: LiteEvent): void {\n this._timelinePartHandler = handler;\n }\n\n // #endregion\n\n // #region Private methods\n\n private unbindEvents() {\n this._socket.onmessage = null;\n this._socket.ConnectionLost.unregister(this.onConnectionLost);\n this._socket.ConnectionReestablished.unregister(this.onConnectionReestablished);\n }\n\n private onMessage(arrayBuffer: ArrayBuffer) {\n const payload = this._messageParser.parse(arrayBuffer);\n if (payload === undefined) {\n // WebApp specific message\n const des = new Deserializer(arrayBuffer);\n const version = des.getUint8();\n const channel = des.getInt32();\n const msgType = des.getString();\n if (msgType === 'ExportProgress') {\n const str = des.getString();\n const exportProgressPayload = JSON.parse(str);\n\n if (this._exportHandler) {\n const event = new ExportProgressEvent(exportProgressPayload.Status, exportProgressPayload.Progress);\n this._exportHandler.trigger(event);\n }\n } else if (msgType === 'TimelinePart') {\n const str = des.getString();\n const timelinePartPayload = JSON.parse(str);\n\n if (this._timelinePartHandler) {\n const event = new TimelinePartEvent(timelinePartPayload);\n this._timelinePartHandler.trigger(event);\n }\n }\n return;\n }\n\n // Intercept responses to complete requests\n switch (payload?.MessageType) {\n case WebSocketMessageTypeV2.UpdateStreamResponse: {\n const updateStreamResponse: UpdateStreamResponse = payload.Event;\n this._inFlightQueries.complete(updateStreamResponse.channel, updateStreamResponse);\n this.receiveEvent(payload);\n break;\n }\n case WebSocketMessageTypeV2.SuccessResponse: {\n const successResponse: SuccessResponse = payload.Event;\n this._inFlightQueries.complete(successResponse.channel, successResponse);\n break;\n }\n case WebSocketMessageTypeV2.ErrorResponse: {\n const errorResponse: ErrorResponse = payload.Event;\n this._logger.error?.trace('Received an error response:', errorResponse.body.ErrorMessage);\n this._inFlightQueries.fail(errorResponse.channel, errorResponse.body.ErrorMessage);\n break;\n }\n case WebSocketMessageTypeV2.CreateStreamResponse: {\n const createStreamResponse: CreateStreamResponse = payload.Event;\n this._inFlightQueries.complete(createStreamResponse.channel, createStreamResponse);\n break;\n }\n default:\n // Code path for events\n this.receiveEvent(payload);\n }\n }\n\n private receiveEvent(payload: WebSocketPayloadV2) {\n switch (payload?.MessageType) {\n case WebSocketMessageTypeV2.Buffering: {\n this._dispatcher.receiveBufferingProgress(payload.ChannelId.toString(), payload.Event);\n break;\n }\n case WebSocketMessageTypeV2.Error: {\n const errorDetails: ErrorDetails = payload.Event;\n if (errorDetails.ErrorCode === undefined) {\n this._logger.error?.trace('Failed to deserialize an error detail event: ' + payload);\n this._dispatcher.receiveErrorDetails(payload.ChannelId.toString(), new ErrorDetails(ErrorCode.Unknown, 'WebPlayer parsing error'));\n return;\n }\n\n this._dispatcher.receiveErrorDetails(payload.ChannelId.toString(), errorDetails);\n break;\n }\n case WebSocketMessageTypeV2.Jpeg: {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._dispatcher.receiveJpeg(payload.ChannelId.toString(), payload.Event, payload.Payload!);\n break;\n }\n case WebSocketMessageTypeV2.PlayerState: {\n this._dispatcher.receivePlayerState(payload.ChannelId.toString(), payload.Event);\n break;\n }\n case WebSocketMessageTypeV2.PlaySpeed: {\n this._dispatcher.receivePlaySpeedChange(payload.ChannelId.toString(), payload.Event);\n break;\n }\n case WebSocketMessageTypeV2.Segment: {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._dispatcher.receiveSegment(payload.ChannelId.toString(), new SegmentInfo(payload.Event), payload.Payload!);\n break;\n }\n case WebSocketMessageTypeV2.StreamingStatus: {\n const streamingStatus: StreamingStatus = payload.Event;\n if (streamingStatus.State === undefined) {\n this._logger.error?.trace('Failed to deserialize a streaming connection status event: ' + payload);\n return;\n }\n this._dispatcher.receiveStreamingConnectionStatus(payload.ChannelId.toString(), streamingStatus);\n break;\n }\n case WebSocketMessageTypeV2.TimelineUpdate: {\n this._dispatcher.receiveTimelineContent(payload.ChannelId.toString(), payload.Event);\n break;\n }\n case WebSocketMessageTypeV2.UpdateStreamResponse: {\n this._dispatcher.receiveAudioAvailable(payload.ChannelId.toString(), (payload.Event).body.AudioAvailable);\n break;\n }\n default:\n this._logger.error?.trace('Unsupported payload from Web Socket', payload);\n }\n }\n\n private onConnectionLost = () => {\n this._inFlightQueries.failAll('Connection lost');\n this._connectionLostEvent.trigger();\n };\n\n private onConnectionReestablished = () => {\n this._logger.info?.trace('Connection reestablished');\n this._connectionReestablishedEvent.trigger();\n };\n\n private queueData(data: Uint8Array) {\n if (this._mergeNextBuffer === false) {\n this._currentPacketOffSet = 0;\n this._currentPacketView = new DataView(data.buffer);\n this._currentPacket = data;\n } else {\n if (this._currentPacket == null) {\n throw Error('_currentPacket should not be null');\n }\n // merge with current\n // this._logger.info?.trace('Merging packet!');\n const mergedArray = new Uint8Array(this._currentPacket.length + data.length);\n mergedArray.set(this._currentPacket);\n mergedArray.set(data, this._currentPacket.length);\n this._currentPacketView = new DataView(mergedArray.buffer);\n this._currentPacket = mergedArray;\n this._mergeNextBuffer = false;\n }\n\n let parseAgain = true;\n while (parseAgain === true) {\n if (this._currentPacketView == null) {\n throw Error('_currentPacketView should not be null');\n }\n // Read the total length of the message\n if (this._currentPacketOffSet + 4 > this._currentPacket.byteLength) {\n // Not enought data, wait for next packet\n parseAgain = false;\n this._mergeNextBuffer = true;\n } else {\n const msgLength = this._currentPacketView.getInt32(this._currentPacketOffSet, true);\n const nextOffSet = this._currentPacketOffSet + 4 + msgLength;\n if (nextOffSet > this._currentPacket.byteLength) {\n // Not enought data, wait for next packet\n this._mergeNextBuffer = true;\n parseAgain = false;\n } else {\n // Parse current\n this._currentPacketOffSet += 4;\n // this._logger.info?.trace('Message of ' + msgLength.toString() + ' bytes');\n\n const buffer = this._currentPacketView.buffer.slice(this._currentPacketOffSet, this._currentPacketOffSet + msgLength);\n this.onMessage(buffer);\n this._currentPacketOffSet += msgLength;\n // End of current buffer ?\n if (this._currentPacketOffSet === this._currentPacketView.byteLength) {\n parseAgain = false;\n this._currentPacketOffSet = 0;\n this._currentPacketView = null;\n }\n }\n }\n }\n }\n\n private internalSend(data: ArrayBuffer) {\n if (this._isWebSocket === true) {\n this._socket.send(data);\n } else {\n const payload = new FieldObject();\n\n payload.setField('payload', this.arrayBufferToBase64(data));\n this._client.rest.executeRequestAsync('POST', `/media/v2/${this._sessionId}/commands`, payload.toString());\n }\n }\n\n private arrayBufferToBase64(buffer: ArrayBuffer): string {\n let binary = '';\n const bytes = [].slice.call(new Uint8Array(buffer));\n bytes.forEach((b) => (binary += String.fromCharCode(b)));\n return window.btoa(binary);\n }\n\n // #endregion\n}\n\nexport class WebAppTransportBuilder implements ITransportBuilder {\n private readonly _client: WebAppClient;\n private readonly _transport: WebAppTransport;\n\n constructor(client: WebAppClient) {\n this._client = client;\n const logger = new Logger(0, 'MediaGatewayService');\n this._transport = new WebAppTransport(logger, this._client, new MessageParser());\n }\n\n public async getTokenRetriever(camera: string): Promise {\n return await this._transport.getTokenRetriever(camera);\n }\n\n public async build(eventDispatcher: IEventDispatcher): Promise {\n await this._transport.start(eventDispatcher);\n return this._transport;\n }\n\n public getTransport(): WebAppTransport {\n return this._transport;\n }\n}\n","import { PtzRequest, PtzSubCommand } from './Marmot/players/WebSocket/Api/Ptz';\nimport { IPtzControlSession } from './Marmot/players/WebSocket/WsSessionV2';\nimport { ILogger } from './Marmot/utils/logger';\nimport { IPtzThrottlingService, ThrottledCommand } from './Marmot/ptzControl';\n\nexport class PtzThrottlingService implements IPtzThrottlingService {\n private readonly m_isEnabled = true;\n private m_timer: number | undefined;\n private readonly m_logger: ILogger;\n private readonly m_session: IPtzControlSession;\n private m_lastCommand: number = 0;\n\n // flag used to enable logs for more diagnostics\n private readonly enableLog = false;\n\n // represent the minimum delay in ms between two commands\n private readonly ThrottlingDelayInMS = 75;\n\n private readonly queueCommands: ThrottledCommand[] = [];\n\n constructor(logger: ILogger, session: IPtzControlSession) {\n this.m_logger = logger.subLogger('PtzThrottlingService');\n this.m_session = session;\n }\n\n private processQueue() {\n if (this.queueCommands.length > 0) {\n if (this.enableLog) {\n console.log('Processing queue (length = ' + this.queueCommands.length + ')');\n }\n\n const executed = new Set();\n // reverse the commands\n const reversed = this.queueCommands.reverse();\n\n reversed.forEach((throttled) => {\n const command = throttled.command;\n // ensure the command type wasn't already processed in that loop\n if (command && !executed.has(command.type)) {\n executed.add(command.type);\n this.sendCommand(command);\n } else if (this.enableLog) {\n console.log('Skipped from queue');\n }\n });\n this.queueCommands.length = 0;\n }\n\n // clear the timer when the queue is empty\n if (this.m_timer) {\n window.clearTimeout(this.m_timer);\n this.m_timer = undefined;\n }\n }\n\n /**\n * Sends a command in the queue. It will be processed only if it's different from the last one.\n * @param command throttled command\n */\n public enqueue(command: ThrottledCommand) {\n if (this.m_isEnabled) {\n const timestamp = performance.now();\n const diff = timestamp - this.m_lastCommand;\n\n // ensure we do not flood the backend with PTZ commands\n if (diff < this.ThrottlingDelayInMS) {\n // push it in the queue\n this.queueCommands.push(command);\n\n // if there is no timer yet, set one\n if (!this.m_timer) {\n this.m_timer = window.setTimeout(() => {\n this.processQueue();\n }, this.ThrottlingDelayInMS);\n }\n } else {\n // it's been long enough, execute it now\n this.m_lastCommand = timestamp;\n this.sendCommand(command.command);\n }\n } else {\n // if the throttler is disabled, execute it now\n this.sendCommand(command.command);\n }\n }\n\n /**\n * Only use this when you know what you are doing.\n * @param cmd command to send straight to the session.\n */\n public bypassQueue(command: PtzRequest) {\n this.queueCommands.length = 0;\n this.sendCommand(command);\n }\n\n /**\n * Use this method to send the command through the PtzControlSession\n * @param command ptz command to send\n */\n private sendCommand(command: PtzRequest) {\n try {\n if (this.enableLog) {\n console.log('Sending ' + command.type + ' ' + command.body?.toString());\n }\n\n this.m_session.sendCommand(command);\n } catch (error) {\n this.m_logger.error?.trace('Error while trying to send PTZ request:', error);\n throw error;\n }\n }\n}\n","import { WebAppClient } from 'WebClient/WebAppClient';\nimport { IVideoPlayer, LoopChangeEvent } from './ivideoplayer';\nimport { ExportModel, ExportProgressEvent } from './export';\nimport gwp, {\n AudioAvailabilityChangeEvent,\n AudioStateChangeEvent,\n Camera,\n ErrorStatusEvent,\n IDewarperControl,\n IDigitalZoomControl,\n IMediaGatewayService,\n IPtzControl,\n ITimelineProvider,\n IWebPlayer,\n PlayerModeChangeEvent,\n PlayerState,\n PlayerStateChangeEvent,\n PlaySpeed,\n PlaySpeedChangeEvent,\n StreamingConnectionStatusChangeEvent,\n TokenRetrieverFct,\n} from './Marmot/gwp';\nimport { HtmlElements } from './Marmot/players/htmlElements';\nimport { WebPlayer } from './Marmot/players/webPlayer';\nimport { buildMediaGatewayService, MediaGatewayService } from './Marmot/services/mediaGatewayService';\nimport { TimelineProvider } from './Marmot/timelineProvider';\nimport { ILiteEvent, LiteEvent } from './Marmot/utils/liteEvents';\nimport { ILogger, Logger } from './Marmot/utils/logger';\nimport { WebAppTransport, WebAppTransportBuilder } from './webapp-transport';\nimport { TimelinePartEvent } from './Timeline/timelinePartEvent';\nimport { FieldObject } from 'RestClient/Helpers/FieldObject';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { Utils } from './Marmot/utils/Utils';\nimport { PlayersList } from './Marmot/Players';\nimport { IStreamUsageSelectorBuilder } from './Marmot/players/StreamUsageSelector';\nimport { PtzThrottlingService } from './ptzThrottlingService';\nimport { IGuid, SafeGuid } from 'safeguid';\n\nexport class Size {\n public width: number;\n public height: number;\n\n constructor(width: number, heigth: number) {\n this.width = width;\n this.height = heigth;\n }\n\n public equals(size: Size): boolean {\n return size.width === this.width && size.height === this.height;\n }\n\n public toString(): string {\n return JSON.stringify(this);\n }\n}\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\nexport class VideoCorePlayer implements IVideoPlayer, IWebPlayer {\n // #region Fields\n private readonly _logger: ILogger;\n private readonly _playerId: number;\n private _client!: WebAppClient;\n private _placeholder!: HTMLDivElement;\n private _transport!: WebAppTransport;\n private _cameraId = SafeGuid.EMPTY;\n\n private isLooping = false;\n private loopStart: Date | undefined;\n private loopEnd: Date | undefined;\n private lastLoopingSeek = 0;\n\n private readonly _htmlElements: HtmlElements;\n\n // Will be set only if we created it and are responsible to dispose it.\n private _mediaGatewayService?: MediaGatewayService;\n private _webPlayer: WebPlayer | undefined;\n private readonly _timelineProvider = new TimelineProvider();\n private _isDisposed = false;\n\n private static _nextPlayerId = 1;\n\n private _lastPlayerState: PlayerState = PlayerState.Stopped;\n\n private readonly errorEvent = new LiteEvent();\n private readonly frameRenderedEvent = new LiteEvent();\n private readonly streamStatusEvent = new LiteEvent();\n private readonly playerStateEvent = new LiteEvent();\n private readonly playSpeedEvent = new LiteEvent();\n private readonly loopEvent = new LiteEvent();\n private readonly audioEvent = new LiteEvent();\n private readonly audioAvailabilityEvent = new LiteEvent();\n private readonly playerModeEvent = new LiteEvent();\n private readonly bufferingProgress = new LiteEvent();\n private readonly exportProgress = new LiteEvent();\n private readonly timelinePart = new LiteEvent();\n\n // #endregion\n\n // #region Properties\n\n public get playerId(): number {\n return this._playerId;\n }\n\n public get renderingDimension(): Size {\n return new Size(this.canvasElement.scrollWidth, this.canvasElement.scrollHeight);\n }\n\n public get lastFrameTime(): Date {\n return this.webPlayer.lastFrameTime;\n }\n\n public get ptzControl(): IPtzControl {\n return this.webPlayer.PtzControl;\n }\n\n public get digitalZoomControl(): IDigitalZoomControl | null {\n if (this.webPlayer.DigitalZoomControl) return this.webPlayer.DigitalZoomControl;\n return null;\n }\n\n public get dewarperControl(): IDewarperControl | null {\n return this.webPlayer.Dewarper;\n }\n\n public get timelineProvider(): ITimelineProvider {\n return this._timelineProvider;\n }\n\n public get isLive(): boolean {\n return this._webPlayer?.isLive === true;\n }\n\n public get isPaused(): boolean {\n return this._webPlayer?.isPaused === true;\n }\n\n public get playSpeed(): number {\n if (this._webPlayer) {\n return this._webPlayer?.playSpeed.Value;\n }\n return 0;\n }\n\n public get isAudioAvailable(): boolean {\n return this._webPlayer?.isAudioAvailable === true;\n }\n\n public get isAudioEnabled(): boolean {\n return this._webPlayer?.isAudioEnabled === true;\n }\n\n public get isStarted(): boolean {\n return this._webPlayer !== undefined;\n }\n\n public get playerState(): PlayerState {\n return this._lastPlayerState;\n }\n\n // retrieve the underlying audio element\n public get audioElement(): HTMLAudioElement {\n return this._htmlElements.AudioElement;\n }\n\n // retrieve the underlying canvas element to render motion jpeg video\n public get canvasElement(): HTMLCanvasElement {\n return this._htmlElements.CanvasElement;\n }\n\n // retrieve the underlying video element\n public get videoElement(): HTMLVideoElement {\n return this._htmlElements.VideoElement;\n }\n\n // Base url\n public get baseUrl(): string | undefined {\n return this._client.rest.restServerUrl + '/media/';\n }\n\n public enableH264 = true;\n\n // #endregion\n\n //#region Events\n\n public get onErrorStateRaised(): ILiteEvent {\n return this.errorEvent.expose();\n }\n\n public get onFrameRendered(): ILiteEvent {\n return this.frameRenderedEvent.expose();\n }\n\n public get onStreamStatusChanged(): ILiteEvent {\n return this.streamStatusEvent.expose();\n }\n\n public get onPlayerStateChanged(): ILiteEvent {\n return this.playerStateEvent.expose();\n }\n\n public get onPlaySpeedChanged(): ILiteEvent {\n return this.playSpeedEvent.expose();\n }\n\n public get onLoopChanged(): ILiteEvent {\n return this.loopEvent.expose();\n }\n\n public get onAudioStateChanged(): ILiteEvent {\n return this.audioEvent.expose();\n }\n\n public get onAudioAvailabilityChanged(): ILiteEvent {\n return this.audioAvailabilityEvent.expose();\n }\n\n public get onPlayerModeChanged(): ILiteEvent {\n return this.playerModeEvent.expose();\n }\n\n public get onBufferingProgress(): ILiteEvent {\n return this.bufferingProgress.expose();\n }\n\n public get onExportProgress(): ILiteEvent {\n return this.exportProgress.expose();\n }\n\n public get onTimelinePart(): ILiteEvent {\n return this.timelinePart.expose();\n }\n\n //#endregion\n\n // #region Constructor\n\n constructor(client: WebAppClient, placeholder: HTMLDivElement) {\n PlayersList.Instance.add(this);\n this._playerId = VideoCorePlayer._nextPlayerId++;\n this._logger = new Logger(this._playerId, 'WebPlayer');\n this._client = client;\n this._placeholder = placeholder;\n this._htmlElements = new HtmlElements(this._placeholder);\n }\n\n public dispose(): void {\n if (this._isDisposed) return;\n\n PlayersList.Instance.remove(this);\n\n this.errorEvent.dispose();\n this.frameRenderedEvent.dispose();\n this.streamStatusEvent.dispose();\n this.playerStateEvent.dispose();\n this.playSpeedEvent.dispose();\n this.audioEvent.dispose();\n this.audioAvailabilityEvent.dispose();\n this.playerModeEvent.dispose();\n this._timelineProvider.dispose();\n\n this._webPlayer?.disposeAsync().then(() => this._mediaGatewayService?.stop());\n this._htmlElements.dispose();\n\n this._isDisposed = true;\n }\n\n //#endregion\n\n //#region Methods\n\n public getSnapshot(): ImageData | null {\n return this.webPlayer.getSnapshot();\n }\n\n public async start(camera: string, mediaGatewayEndpoint: string, tokenRetriever: TokenRetrieverFct): Promise {\n this.throwIfDisposed();\n if (this.isStarted) {\n throw new Error(`Player ${this._playerId} is already started`);\n }\n\n this._logger.debug?.trace('Starting with its own MediaGatewayService');\n this._mediaGatewayService = (await buildMediaGatewayService(mediaGatewayEndpoint, tokenRetriever)) as MediaGatewayService;\n try {\n await this.startWithService(camera, this._mediaGatewayService);\n } catch (error) {\n this._logger.error?.trace('Couldnt start web player: ', error);\n this._mediaGatewayService?.stop();\n throw error;\n }\n }\n\n public async startAsync(cameraId: IGuid, streamUsageSelectorBuilder: IStreamUsageSelectorBuilder | null = null): Promise {\n this.throwIfDisposed();\n if (this.isStarted) {\n throw new Error(`Player ${this._playerId} is already started`);\n }\n try {\n // ensure GWP is created\n if (!window.gwp) {\n window.gwp = new gwp();\n }\n\n this._cameraId = cameraId;\n const builder = new WebAppTransportBuilder(this._client);\n this._transport = builder.getTransport();\n this._transport.setExportEventHandler(this.exportProgress);\n this._transport.setTimelinePartEventHandler(this.timelinePart);\n const mgService = await window.gwp.buildMediaGatewayServiceWithTransport('', (cam: string) => builder.getTokenRetriever(cam), builder, streamUsageSelectorBuilder);\n this._mediaGatewayService = mgService as MediaGatewayService;\n await this.startWithService(cameraId.toString(), this._mediaGatewayService);\n } catch (error) {\n this._logger.error?.trace('Couldnt start web player: ', error);\n this._mediaGatewayService?.stop();\n throw error;\n }\n }\n\n public async startWithService(camera: string, mediaGatewayService: IMediaGatewayService): Promise {\n this.throwIfDisposed();\n if (this.isStarted) {\n throw new Error(`Player ${this._playerId} is already started`);\n }\n if (!(mediaGatewayService instanceof MediaGatewayService)) {\n throw new Error('The provided MediaGatewayService is not of the expected type');\n }\n\n const webPlayer = new WebPlayer(this._playerId, this._htmlElements, new Camera(camera), mediaGatewayService, this.enableH264);\n try {\n const session = await webPlayer.SessionEstablishment;\n webPlayer.PtzThrottlingService = new PtzThrottlingService(this._logger, session.ptzControlSession);\n } catch (error) {\n await webPlayer.disposeAsync();\n throw error;\n }\n this.subscribeToPlayerEvent(webPlayer);\n this._webPlayer = webPlayer;\n }\n\n public async stop(): Promise {\n if (this._webPlayer) {\n this.unsubscribeToPlayerEvent(this._webPlayer);\n await this._webPlayer.disposeAsync();\n this._webPlayer = undefined;\n }\n this._mediaGatewayService?.stop();\n this._mediaGatewayService = undefined;\n this.onPlayerStateChangedHandler(new PlayerStateChangeEvent(PlayerState.Stopped, ''));\n }\n\n public playLive(): void {\n // when going live, restore the play speed\n if (this._webPlayer) {\n if (this._webPlayer.playSpeed.Value !== 1) {\n this.setPlaySpeed(1);\n }\n this._webPlayer.playLive();\n }\n }\n\n public pause(maintainSpeed: boolean = false): void {\n if (!this._webPlayer) {\n return;\n }\n if (!maintainSpeed) {\n // when paused, restore the play speed\n if (this._webPlayer.playSpeed.Value !== 1) {\n this.setPlaySpeed(1);\n }\n }\n this._webPlayer.pause();\n }\n\n public resume(maintainSpeed: boolean = false): void {\n if (!this._webPlayer) {\n return;\n }\n if (!maintainSpeed) {\n // when resuming, restore the play speed\n if (this._webPlayer.playSpeed.Value !== 1) {\n this.setPlaySpeed(1);\n }\n }\n this._webPlayer.resume();\n }\n\n public seek(seekTime: Date): void {\n if (!(seekTime instanceof Date) || isNaN(seekTime.valueOf())) {\n throw new Error('Invalid Seek Time was requested');\n }\n this._webPlayer?.seek(seekTime);\n }\n\n // perform a safe seek operation by ensuring to skip it if we asked for one few seconds ago\n private safeSeek(time: Date) {\n const now = new Date();\n const ticks = now.getTime();\n const diff = ticks - this.lastLoopingSeek;\n\n if (diff > 2500) {\n this.lastLoopingSeek = ticks;\n this.seek(time);\n }\n }\n\n public clearLoop(): void {\n this.isLooping = false;\n this.loopEvent.trigger(new LoopChangeEvent(false, undefined, undefined));\n }\n\n public setLoop(start: Date, end: Date): void {\n this.loopStart = start;\n this.loopEnd = end;\n this.isLooping = true;\n\n // seek at the beginning of the loop\n this.seek(start);\n\n this.loopEvent.trigger(new LoopChangeEvent(true, this.loopStart, this.loopEnd));\n }\n\n public setPlaySpeed(playSpeed: number): void {\n this._webPlayer?.setPlaySpeed(new PlaySpeed(playSpeed));\n }\n\n public setAudioEnabled(isAudioEnabled: boolean): void {\n this._webPlayer?.setAudioEnabled(isAudioEnabled);\n }\n\n public setPtzMode(ptzMode: boolean): void {\n this._webPlayer?.setPtzMode(ptzMode);\n }\n\n public showDebugOverlay(show: boolean): void {\n this._webPlayer?.showDebugOverlay(show);\n }\n\n private throwIfDisposed() {\n if (this._isDisposed) {\n throw new Error('PublicWebPlayer is disposed');\n }\n }\n\n private throwIfDisposedOrNotStarted() {\n this.throwIfDisposed();\n if (this._webPlayer === undefined) {\n throw new Error('Player need to be started first.');\n }\n }\n\n private get webPlayer(): WebPlayer {\n this.throwIfDisposedOrNotStarted();\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._webPlayer!;\n }\n\n public async takeSnapshotAsync(): Promise {\n const imageData = this.getSnapshot();\n if (imageData) {\n const canvas = document.createElement('canvas');\n canvas.width = imageData.width;\n canvas.height = imageData.height;\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.putImageData(imageData, 0, 0);\n }\n return new Promise(function (resolve) {\n canvas.toBlob(function (blob) {\n resolve(blob as Blob);\n });\n });\n }\n return Promise.reject();\n }\n\n public async getExportAsync(exportModel: ExportModel): Promise {\n const response = await this._transport.fetch('POST', 'api/v1/exports', JSON.stringify(exportModel));\n return response;\n }\n\n public async getThumbnailAsync(timestamp: Date, width = 192): Promise {\n let base64 = '';\n const cameraId = this._cameraId.toString();\n const timeText = timestamp.toISOString();\n const url = `api/v1/cameras/${cameraId}/thumbnails/${timeText}/?width=${width}`;\n const response = await this._transport.fetch('GET', url, null);\n if (response && response.ok) {\n const blob = await response.blob();\n base64 = (await this.convertBlobToBase64(blob)) as string;\n }\n\n return base64;\n }\n\n private convertBlobToBase64 = (blob: Blob) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onload = () => {\n resolve(reader.result);\n };\n reader.readAsDataURL(blob);\n });\n\n private onErrorState = (errorStatus: ErrorStatusEvent): void => {\n if (errorStatus.isFatal) {\n this.stop();\n }\n // forward the event\n this.errorEvent.trigger(errorStatus);\n };\n\n private onFrameRenderedHandler = (frameTime: Date): void => {\n // if we are looping, ensure we are between the bounds\n if (this.isLooping && this.loopStart && this.loopEnd) {\n const isReverse = this._webPlayer?.playSpeed.IsReverse;\n if (isReverse) {\n if (frameTime < this.loopStart) {\n this.safeSeek(this.loopEnd);\n }\n } else if (frameTime > this.loopEnd) {\n this.safeSeek(this.loopStart);\n }\n }\n // forward the event\n this.frameRenderedEvent.trigger(frameTime);\n };\n\n private onPlayerStateChangedHandler = (evt: PlayerStateChangeEvent): void => {\n this._lastPlayerState = evt.playerState;\n // forward the event\n this.playerStateEvent.trigger(evt);\n };\n\n private subscribeToPlayerEvent(webPlayer: WebPlayer): void {\n webPlayer.errorStateRaised.register(this.onErrorState);\n webPlayer.frameRendered.register(this.onFrameRenderedHandler);\n webPlayer.streamStatusChanged.register(this.streamStatusEvent.boundTrigger);\n webPlayer.playerStateChanged.register(this.onPlayerStateChangedHandler);\n webPlayer.playSpeedChanged.register(this.playSpeedEvent.boundTrigger);\n webPlayer.audioStateChanged.register(this.audioEvent.boundTrigger);\n webPlayer.audioAvailabilityChanged.register(this.audioAvailabilityEvent.boundTrigger);\n webPlayer.playerModeChanged.register(this.playerModeEvent.boundTrigger);\n webPlayer.bufferingProgress.register(this.bufferingProgress.boundTrigger);\n this._timelineProvider.register(webPlayer);\n }\n\n private unsubscribeToPlayerEvent(webPlayer: WebPlayer): void {\n webPlayer.errorStateRaised.unregister(this.onErrorState);\n webPlayer.frameRendered.unregister(this.onFrameRenderedHandler);\n webPlayer.streamStatusChanged.unregister(this.streamStatusEvent.boundTrigger);\n webPlayer.playerStateChanged.unregister(this.onPlayerStateChangedHandler);\n webPlayer.playSpeedChanged.unregister(this.playSpeedEvent.boundTrigger);\n webPlayer.audioStateChanged.unregister(this.audioEvent.boundTrigger);\n webPlayer.audioAvailabilityChanged.unregister(this.audioAvailabilityEvent.boundTrigger);\n webPlayer.playerModeChanged.unregister(this.playerModeEvent.boundTrigger);\n webPlayer.bufferingProgress.unregister(this.bufferingProgress.boundTrigger);\n this._timelineProvider.unregister(webPlayer);\n }\n\n public debugStatus(): string {\n const indent = 1;\n return (\n `PublicWebPlayer${Utils.indentNewLine(indent)}` +\n `PlayerId: ${this._playerId}${Utils.indentNewLine(indent)}` +\n (this._isDisposed ? `${Utils.indentNewLine(indent)}Disposed${Utils.indentNewLine(indent)}` : '') +\n (this._webPlayer?.debugStatus(indent + Utils.Indentation) ?? 'WebPlayer undefined')\n );\n }\n\n public async addTimelineProviders(providers: Array, add: boolean, entities: Array): Promise {\n const fo = new FieldObject();\n fo.setField('add', add);\n const providerIds = new ObservableCollection();\n providers.forEach((x) => {\n providerIds.add(x);\n });\n fo.setFieldArrayGuid('Providers', providerIds);\n const col = new ObservableCollection();\n entities.forEach((x) => {\n col.add(x);\n });\n fo.setFieldArrayGuid('Entities', col);\n const response = await this._transport.fetch('POST', 'api/v1/timeline', fo.toString());\n return response;\n }\n\n //#endregion\n}\n","import { Injectable, Inject, OnDestroy } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { SharedCommands } from '../../shared/enumerations/shared-commands';\nimport { CommandBindings, CommandsService, COMMANDS_SERVICE, CommandsSubscription } from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VideoDiagnosticService implements OnDestroy {\n public get debugOverlayActivated$(): Observable {\n return this.debugOverlayActivated.asObservable();\n }\n\n private commandsSubscription!: CommandsSubscription;\n\n private debugOverlayActivated: BehaviorSubject = new BehaviorSubject(false);\n\n private debugOverlay = false;\n\n constructor(@Inject(COMMANDS_SERVICE) private commandsService: CommandsService) {\n if (this.commandsService) {\n const bindings = new CommandBindings();\n bindings.addCommand({\n commandId: SharedCommands.ShowVideoDiagnostics,\n executeCommandHandler: (executeCommandData) => {\n this.debugOverlay = !this.debugOverlay;\n this.debugOverlayActivated.next(this.debugOverlay);\n executeCommandData.isHandled = true;\n },\n });\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: 200,\n });\n }\n }\n\n public ngOnDestroy(): void {\n if (this.commandsSubscription) {\n this.commandsSubscription.unsubscribe();\n }\n }\n\n public isDebugOverlayActivated(): boolean {\n return this.debugOverlayActivated.value;\n }\n}\n","
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n","/* eslint-disable no-param-reassign */\nimport { Component, OnInit, Input, OnDestroy, Inject, ViewChild, ElementRef, ChangeDetectionStrategy, NgZone, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport moment from 'moment';\nimport { VideoCorePlayer, Size } from 'Marmot/videoplayer';\nimport { Subscription } from 'rxjs';\nimport { SharedContentFields } from '@modules/shared/enumerations/shared-content-fields';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { CameraTypes } from 'RestClient/Client/Enumerations/CameraType';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { Point } from '@modules/shared/interfaces/drawing';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { JoystickCommandData, JoystickService } from '@modules/general/services/joystick.service';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AudioAvailabilityChangeEvent,\n AudioStateChangeEvent,\n ErrorCode,\n ErrorStatusEvent,\n IDewarperControl,\n IDigitalZoomControl,\n ILiteEvent,\n IPtzControl,\n ITimelineProvider,\n PlayerMode,\n PlayerModeChangeEvent,\n PlayerState,\n PlayerStateChangeEvent,\n PlaySpeedChangeEvent,\n StreamingConnectionStatus,\n StreamingConnectionStatusChangeEvent,\n} from 'Marmot/Marmot/gwp';\nimport { LiteEvent } from 'Marmot/Marmot/utils/liteEvents';\nimport { IVideoPlayer, LoopChangeEvent } from 'Marmot/ivideoplayer';\nimport { ExportModel, ExportProgressEvent } from 'Marmot/export';\nimport { LoggerService } from '@modules/shared/services/logger/logger.service';\nimport { TimelinePartEvent } from 'Marmot/Timeline/timelinePartEvent';\nimport { CameraEntityFields, ICameraEntity } from 'RestClient/Client/Interface/ICameraEntity';\nimport { debounce } from 'lodash-es';\nimport { WINDOW } from '@utilities/common-helper';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { IEntityCacheTask } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { RenderingHelper } from '../../utilities/renderinghelper';\nimport { SecurityCenterClientService } from '../../../../security-center/services/client/security-center-client.service';\nimport { VideoContentTypes } from '../../enumerations/video-content-types';\nimport { InternalContentPluginDescriptor } from '../../../shared/interfaces/plugins/internal/plugin-internal.interface';\nimport {\n CONTENT_SERVICES_PROVIDER,\n ContentExtensionServicesProvider,\n COMMANDS_SERVICE,\n CommandsService,\n CommandBindings,\n CommandsSubscription,\n ExecuteCommandData,\n} from '../../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { Content, ContentPluginComponent, DisplayContext, PluginComponentExposure, PluginContext } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '../../../shared/interfaces/plugins/public/plugin-types';\nimport { VideoDiagnosticService } from '../../services/video-diagnostic-service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nconst isContentSupported = (content: Content, pluginType: IGuid) => {\n if (content) {\n if (content.type.equals(VideoContentTypes.Video)) {\n // do not want to display video in compact mode when having not only the video, this will happen when expanding the popup instead\n if (pluginType.equals(PluginTypes.MapPopupCompact) && content.contextContent) {\n return false;\n }\n\n return content.grantedPrivileges.some(\n (privilege) => privilege.equals(KnownPrivileges.allowVideoPrivilege) || privilege.equals(KnownPrivileges.allowPlaybackVideoPrivilege)\n );\n }\n }\n return false;\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalContentPluginDescriptor({\n type: VideoPlayerComponent,\n pluginTypes: [PluginTypes.Tile, PluginTypes.Widget, PluginTypes.MapPopupCompact, PluginTypes.MapPopupExpand],\n exposure: { id: VideoPlayerComponent.pluginId, priority: 2, supportsCarousel: true } as PluginComponentExposure,\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video] },\n})\nexport class VideoPlayerComponent extends TrackedComponent implements OnInit, OnDestroy, AfterViewInit, ContentPluginComponent, IVideoPlayer {\n public static pluginId = SafeGuid.parse('3957B0C1-7086-484F-A5DA-C3E5848B3F5B');\n // #region Properties\n\n // div player\n @ViewChild('div', { static: true, read: ElementRef }) public divElement!: ElementRef;\n\n @Input() public dataContext: unknown;\n\n // digital zoom snapshot image\n @ViewChild('zoomboximage') public zoomboximage!: ElementRef;\n\n // digital zoom view box\n @ViewChild('zoomboxlens') public zoomboxlens!: ElementRef;\n\n // parent container\n @ViewChild('parent')\n public set parentContent(child: ElementRef | undefined) {\n if (this.parent) {\n this.parent.removeEventListener('wheel', this.onParentMouseWheelHandler);\n }\n this.parent = child?.nativeElement as HTMLCanvasElement | undefined;\n if (this.parent) {\n // do not use the passive event handler in that case because we want to stopPropagation()\n this.parent.addEventListener('wheel', this.onParentMouseWheelHandler, { passive: false, capture: true });\n }\n }\n\n // free look container\n @ViewChild('freelook')\n public set freelookContent(child: ElementRef | undefined) {\n if (this.freelook) {\n this.freelook.removeEventListener('wheel', this.onMouseWheelHandler);\n }\n this.freelook = child?.nativeElement as HTMLCanvasElement | undefined;\n if (this.freelook) {\n // do not use the passive event handler in that case because we want to stopPropagation()\n this.freelook.addEventListener('wheel', this.onMouseWheelHandler, { passive: false });\n }\n }\n\n // gets a flag indicating if the digital zoom preview is currently visible\n public get isDigitalZoomEnabled(): boolean {\n return this.videoPlayer?.digitalZoomControl?.Preview.Enabled === true && this.videoPlayer?.digitalZoomControl?.Zoom > 1;\n }\n\n // H264 player\n public videoElement!: HTMLVideoElement;\n\n // Mjpeg player\n public canvasElement!: HTMLCanvasElement;\n\n // audio player\n public audioElement!: HTMLAudioElement;\n\n public content?: Content;\n public playerSubscription?: Subscription;\n public serverStatus?: string;\n public entityContent?: Content;\n public entityCacheTask: IEntityCacheTask;\n\n // determine if the user is currently moving the ptz with the mouse\n public freeLookIsGripped = false;\n\n // hold the pointer id capturing the mouse\n public freeLookMousecapture = -1;\n\n // determine if the mouse is currently over the control\n public isMouseOver = false;\n\n // represent the middle ptz dot opacity\n public dotOpacity = 0;\n\n // the state displayed to the client\n public displayedState: string | undefined;\n\n // determine if we can currently perform ptz operation (isPtz & live mode)\n public supportPtz = false;\n // determine if the current camera is a ptz\n public isPtz = false;\n\n // privileges\n public allowLiveVideo = false;\n public allowPlaybackVideo = false;\n public allowDigitalZoom = false;\n\n public stateBackgroundColor!: string | undefined;\n public displayVideo = true; // flag used to hide the video when blocked\n\n public isInPopup = false;\n\n private videoPlayer?: VideoCorePlayer;\n\n // Security Center client\n private scClient: SecurityCenterClient;\n\n private playerState: string | undefined;\n private streamingState: string | undefined;\n private errorState: string | undefined;\n\n private wheelTimerInterval = 500;\n private wheelTimerId: number | undefined;\n private wheelCumulativeDelta = 0;\n private readonly wheelDeltaFactor = 15;\n private isWheelSpeedPending = false;\n private unitToMouseWheelDeltaFactor = 100;\n\n private allowAudio = false;\n private allowBasicPtz = false;\n\n private parent?: HTMLCanvasElement | undefined;\n private freelook?: HTMLCanvasElement | undefined;\n private freelookFocused = false;\n\n private commandsSubscription!: CommandsSubscription;\n\n private isInSidePane = false;\n\n // determine is the video is currently in live mode\n private isLive = false;\n\n // the PTZ stopped dead zone where the ptz stop moving\n private deadZone = 0.05;\n\n // represent how far the old notification position to the actual mouse position need to be enough to trigger a new displacement notification\n private threshold = 0.03;\n\n // determine if the current camera has fish eye support\n private isPanoramic = false;\n\n // represent the current PTZ velocity applied\n private actualVelocity: Point = { x: 0, y: 0 };\n\n // debounce the displayed text update to prevent flickering\n private updateDisplayedStateDebounce = debounce(() => {\n this.updateDisplayedState();\n }, 200);\n\n private readonly errorEvent = new LiteEvent();\n private readonly frameRenderedEvent = new LiteEvent();\n private readonly streamStatusEvent = new LiteEvent();\n private readonly playerStateEvent = new LiteEvent();\n private readonly playSpeedEvent = new LiteEvent();\n private readonly loopEvent = new LiteEvent();\n private readonly audioEvent = new LiteEvent();\n private readonly audioAvailabilityEvent = new LiteEvent();\n private readonly playerModeEvent = new LiteEvent();\n private readonly bufferingProgress = new LiteEvent();\n private readonly exportProgress = new LiteEvent();\n private readonly timelinePart = new LiteEvent();\n\n public get isAudioAvailable(): boolean {\n return this.videoPlayer?.isAudioAvailable === true;\n }\n\n public get isAudioEnabled(): boolean {\n return this.videoPlayer?.isAudioEnabled === true;\n }\n\n public get isStarted(): boolean {\n return this.videoPlayer?.isStarted === true;\n }\n\n public get lastFrameTime(): Date | undefined {\n return this.videoPlayer?.lastFrameTime;\n }\n\n public get ptzControl(): IPtzControl | undefined {\n return this.videoPlayer?.ptzControl;\n }\n\n public get digitalZoomControl(): IDigitalZoomControl | null {\n if (this.videoPlayer?.digitalZoomControl) {\n return this.videoPlayer?.digitalZoomControl;\n }\n return null;\n }\n\n public get dewarperControl(): IDewarperControl | null {\n if (this.videoPlayer?.dewarperControl) {\n return this.videoPlayer?.dewarperControl;\n }\n return null;\n }\n\n public get timelineProvider(): ITimelineProvider | undefined {\n return this.videoPlayer?.timelineProvider;\n }\n\n public get baseUrl(): string | undefined {\n return this.videoPlayer?.baseUrl;\n }\n\n public get isGhost(): boolean {\n return this.tryGetCameraSubType() === CameraTypes.GhostCamera;\n }\n\n // flag used to enable logs for more diagnostics\n private enableLog = false;\n\n // #endregion\n\n // #region Events\n\n public get onErrorStateRaised(): ILiteEvent {\n return this.errorEvent.expose();\n }\n\n public get onFrameRendered(): ILiteEvent {\n return this.frameRenderedEvent.expose();\n }\n\n public get onStreamStatusChanged(): ILiteEvent {\n return this.streamStatusEvent.expose();\n }\n\n public get onPlayerStateChanged(): ILiteEvent {\n return this.playerStateEvent.expose();\n }\n\n public get onPlaySpeedChanged(): ILiteEvent {\n return this.playSpeedEvent.expose();\n }\n\n public get onLoopChanged(): ILiteEvent {\n return this.loopEvent.expose();\n }\n\n public get onAudioStateChanged(): ILiteEvent {\n return this.audioEvent.expose();\n }\n\n public get onAudioAvailabilityChanged(): ILiteEvent {\n return this.audioAvailabilityEvent.expose();\n }\n\n public get onPlayerModeChanged(): ILiteEvent {\n return this.playerModeEvent.expose();\n }\n\n public get onBufferingProgress(): ILiteEvent {\n return this.bufferingProgress.expose();\n }\n\n public get onExportProgress(): ILiteEvent {\n return this.exportProgress.expose();\n }\n\n public get onTimelinePart(): ILiteEvent {\n return this.timelinePart.expose();\n }\n\n // #endregion\n\n // #region Constructor\n\n constructor(\n private zone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n private joystickService: JoystickService, // keep reference\n private restService: SecurityCenterClientService, //TODO: Remove injection of SecurityCenterClient\n private translateService: TranslateService,\n private loggerService: LoggerService,\n private videoDiagnosticService: VideoDiagnosticService,\n @Inject(CONTENT_SERVICES_PROVIDER) public contentServicesProvider: ContentExtensionServicesProvider,\n @Inject(COMMANDS_SERVICE) public commandsService: CommandsService,\n trackingService: TrackingService,\n @Inject(WINDOW) private window: Window // applicationRef: ApplicationRef\n ) {\n super(trackingService);\n\n // Code used to debug Angular's change detections from video\n // if (applicationRef) {\n // const originalTick = applicationRef.tick;\n // applicationRef.tick = function() {\n // const windowPerfomance = this.window.performance;\n // const before = this.windowPerfomance.now();\n // const retValue = originalTick.apply(this, []);\n // const after = this.windowPerfomance.now();\n // const runTime = after - before;\n // this.loggerService.traceInformation('CHANGE DETECTION TIME (VideoPlayer)' , runTime);\n // return retValue;\n // };\n // }\n\n this.videoDiagnosticService.debugOverlayActivated$.pipe(untilDestroyed(this)).subscribe((show) => {\n this.videoPlayer?.showDebugOverlay(show);\n });\n\n // Retrieve SecurityCenterClient\n this.scClient = this.restService.scClient;\n // Build cacheTask\n this.entityCacheTask = this.scClient.buildEntityCache([CameraEntityFields.lockingUserIdField]);\n }\n\n // #endregion\n\n // #region Ng...\n\n public ngOnInit() {\n super.ngOnInit();\n\n if (this.commandsService) {\n const bindings = new CommandBindings();\n bindings.addCommand({\n commandId: SharedCommands.PtzStartPanTilt,\n executeCommandHandler: (executeCommandData) => {\n this.ptzStartPanTilt(executeCommandData);\n },\n isCommandAvailableHandler: () => this.isPtz && this.allowBasicPtz,\n });\n bindings.addCommand({\n commandId: SharedCommands.PtzStopPanTilt,\n executeCommandHandler: (executeCommandData) => {\n this.ptzStopPanTilt();\n executeCommandData.isHandled = true;\n },\n isCommandAvailableHandler: () => this.isPtz && this.allowBasicPtz,\n });\n bindings.addCommand({\n commandId: SharedCommands.ToggleListen,\n executeCommandHandler: (executeCommandData) => {\n this.toggleListen();\n executeCommandData.isHandled = true;\n },\n isCommandAvailableHandler: () => this.allowAudio,\n });\n\n this.commandsService.registerCommandShortcut(SharedCommands.MinimizeVideo, 'Esc');\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: 200,\n });\n }\n }\n\n public ngAfterViewInit() {\n if (this.content) {\n this.entityContent = this.content;\n\n // read privileges\n const priv = this.content.grantedPrivileges;\n this.allowBasicPtz = priv.some((item) => item.equals(KnownPrivileges.basicPtzOperationsPrivilege));\n this.allowLiveVideo = priv.some((item) => item.equals(KnownPrivileges.allowVideoPrivilege));\n this.allowPlaybackVideo = priv.some((item) => item.equals(KnownPrivileges.allowPlaybackVideoPrivilege));\n this.allowDigitalZoom = priv.some((item) => item.equals(KnownPrivileges.digitalZoomPrivilege));\n this.allowAudio = priv.some((item) => item.equals(KnownPrivileges.useAudioPrivilege));\n\n this.contentServicesProvider.setService(this.entityContent.id, this as IVideoPlayer);\n\n // IMPORTANT, setup the video player outside Angular to prevent change detection\n this.zone.runOutsideAngular(() => {\n this.videoPlayer = new VideoCorePlayer(this.restService.scClient, this.divElement.nativeElement);\n // retrieve the underlying controls from the video player\n this.videoElement = this.videoPlayer.videoElement;\n this.canvasElement = this.videoPlayer.canvasElement;\n this.audioElement = this.videoPlayer.audioElement;\n\n // register events\n this.videoPlayer.onAudioAvailabilityChanged.register(this.onAudioAvailabilityChangedHandler);\n this.videoPlayer.onAudioStateChanged.register(this.onAudioStateChangedHandler);\n this.videoPlayer.onErrorStateRaised.register(this.onErrorStateHandler);\n this.videoPlayer.onFrameRendered.register(this.onFrameRenderedHandler);\n this.videoPlayer.onExportProgress.register(this.onExportProgressHandler);\n this.videoPlayer.onPlayerModeChanged.register(this.onPlayerModeChangedHandler);\n this.videoPlayer.onPlaySpeedChanged.register(this.onPlayerSpeedChangedHandler);\n this.videoPlayer.onPlayerStateChanged.register(this.onPlayerStateChangedHandler);\n this.videoPlayer.onLoopChanged.register(this.onLoopChangedHandler);\n this.videoPlayer.onStreamStatusChanged.register(this.onStreamingConnectionStatusHandler);\n this.videoPlayer.onTimelinePart.register(this.onTimelinePartHandler);\n });\n\n // determine if the camera is a PTZ or not\n const cameraSubType = this.tryGetCameraSubType();\n if (cameraSubType) {\n this.isPtz = cameraSubType === CameraTypes.PTZCamera;\n this.isPanoramic = cameraSubType === CameraTypes.PanoramicCamera;\n }\n\n // start the player\n this.startPlayerAsync().fireAndForget();\n }\n }\n\n public ngOnDestroy() {\n try {\n this.entityCacheTask.dispose().fireAndForget();\n\n if (this.commandsSubscription) {\n this.commandsSubscription.unsubscribe();\n }\n\n // clearing the following properties will unsubcribe their event listeners\n this.parentContent = undefined;\n this.freelookContent = undefined;\n\n if (this.wheelTimerId) {\n clearInterval(this.wheelTimerId);\n this.wheelTimerId = undefined;\n }\n\n if (this.entityContent) {\n this.contentServicesProvider.removeService(this.entityContent.id);\n }\n if (this.videoPlayer) {\n // unregister events\n this.videoPlayer.onAudioAvailabilityChanged.unregister(this.onAudioAvailabilityChangedHandler);\n this.videoPlayer.onAudioStateChanged.unregister(this.onAudioStateChangedHandler);\n this.videoPlayer.onErrorStateRaised.unregister(this.onErrorStateHandler);\n this.videoPlayer.onFrameRendered.unregister(this.onFrameRenderedHandler);\n this.videoPlayer.onExportProgress.unregister(this.onExportProgressHandler);\n this.videoPlayer.onPlayerModeChanged.unregister(this.onPlayerModeChangedHandler);\n this.videoPlayer.onPlaySpeedChanged.unregister(this.onPlayerSpeedChangedHandler);\n this.videoPlayer.onPlayerStateChanged.unregister(this.onPlayerStateChangedHandler);\n this.videoPlayer.onLoopChanged.unregister(this.onLoopChangedHandler);\n this.videoPlayer.onStreamStatusChanged.unregister(this.onStreamingConnectionStatusHandler);\n this.videoPlayer.onTimelinePart.unregister(this.onTimelinePartHandler);\n if (this.videoPlayer.digitalZoomControl) {\n this.videoPlayer.digitalZoomControl.onPositionChanged.unregister(this.onDigitalZoomPositionChangedHandler);\n }\n\n this.videoPlayer.dispose();\n }\n if (this.playerSubscription) {\n this.playerSubscription.unsubscribe();\n }\n } catch (exception) {\n this.loggerService.traceError(`Error occurs when destroying video player component ${(exception as Error).message}`);\n }\n\n super.ngOnDestroy();\n }\n\n public setDataContext(context: PluginContext | undefined): void {\n this.dataContext = context;\n if (context) {\n this.isInPopup = context.displayContext === DisplayContext.MapPopup;\n this.isInSidePane = context.displayContext === DisplayContext.Sidepane;\n }\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n //#endregion\n\n // #region IVideoPlayer\n\n public addTimelineProviders(providers: Array, add: boolean, entities: Array): Promise {\n if (this.videoPlayer) {\n return this.videoPlayer.addTimelineProviders(providers, add, entities);\n }\n return Promise.reject();\n }\n\n public async getExportAsync(exportModel: ExportModel): Promise {\n if (this.videoPlayer) {\n return await this.videoPlayer.getExportAsync(exportModel);\n }\n return Promise.reject();\n }\n\n public async getThumbnailAsync(timestamp: Date): Promise {\n if (this.videoPlayer) {\n return await this.videoPlayer.getThumbnailAsync(timestamp);\n }\n return Promise.reject();\n }\n\n public ptzGoHomePosition(): void {\n // ensure the user has the basic PTZ privilege\n if (this.isPtz && this.allowBasicPtz) {\n this.videoPlayer?.ptzControl?.goHome();\n }\n }\n\n public ptzGoToPreset(preset: number): void {\n // ensure the user has the basic PTZ privilege\n if (this.isPtz && this.allowBasicPtz) {\n this.videoPlayer?.ptzControl?.goToPreset(preset);\n }\n }\n\n public seek(seekTime: Date): void {\n this.videoPlayer?.seek(seekTime);\n }\n\n public playLive(): void {\n this.videoPlayer?.playLive();\n }\n\n public resume(maintainSpeed: boolean = true): void {\n this.videoPlayer?.resume(maintainSpeed);\n }\n\n public pause(maintainSpeed: boolean = true): void {\n this.videoPlayer?.pause(maintainSpeed);\n }\n\n public clearLoop(): void {\n this.videoPlayer?.clearLoop();\n }\n\n public setLoop(start: Date, end: Date): void {\n this.videoPlayer?.setLoop(start, end);\n }\n\n public setAudioEnabled(isAudioEnabled: boolean): void {\n this.videoPlayer?.setAudioEnabled(isAudioEnabled);\n }\n\n public setPlaySpeed(playSpeed: number): void {\n this.videoPlayer?.setPlaySpeed(playSpeed);\n }\n\n public setPtzMode(ptzMode: boolean): void {\n this.videoPlayer?.setPtzMode(ptzMode);\n }\n\n public getPlayerState(state: PlayerState): string {\n switch (state) {\n case PlayerState.Buffering:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_BUFFERING') as string;\n\n case PlayerState.BeginReached:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_BEGINREACH') as string;\n\n case PlayerState.EndReached:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_ENDREACH') as string;\n\n case PlayerState.NoVideoSequenceAvailable:\n case PlayerState.AwaitingSynchronizedTime:\n return this.translateService.instant(this.isGhost ? 'STE_ENTITY_SUBTYPE_GHOST_CAMERA' : 'STE_LABEL_PLAYERSTATE_NOVIDEO') as string;\n\n case PlayerState.WaitingForArchiverData:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_WAITINGDATA') as string;\n\n case PlayerState.Starting:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_STARTING') as string;\n\n case PlayerState.Stopping:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_STOPPING') as string;\n\n case PlayerState.InsufficientSecurityInformation:\n return this.translateService.instant('STE_LABEL_PLAYERSTATE_INSUFFICIENT_SECURITY') as string;\n\n case PlayerState.Error:\n return this.translateService.instant('STE_LABEL_ERROR') as string;\n }\n\n return PlayerState[state];\n }\n\n public takeSnapshotAsync(): Promise {\n if (this.videoPlayer) {\n return this.videoPlayer.takeSnapshotAsync();\n }\n return Promise.reject();\n }\n\n public toggleListen(): void {\n if (this.allowAudio && this.videoPlayer?.isAudioAvailable) {\n this.videoPlayer.setAudioEnabled(!this.videoPlayer.isAudioEnabled);\n }\n }\n\n // #endregion\n\n public onMouseEnter(event: MouseEvent): void {\n this.isMouseOver = true;\n this.changeDetectorRef.detectChanges();\n }\n\n public onMouseLeave(event: MouseEvent): void {\n this.isMouseOver = false;\n this.changeDetectorRef.detectChanges();\n }\n\n public onMouseDoubleClick(): void {\n if (this.isInSidePane) {\n this.commandsService.executeCommand(SharedCommands.ToggleMaximizeVideo);\n }\n }\n\n public onPointerDown(event: PointerEvent): void {\n // if the freelook doesn't have focus, give it. on next click, we will process the freelook events.\n if (!this.freelookFocused) {\n this.freelook?.focus();\n } else if (this.supportPtz) {\n if (event.button === 0) {\n // Clear text selection. This fixes a bug where PtzDot drag + selected text would spin\n // the ptz endlessly.\n this.window.getSelection()?.empty();\n\n this.freeLookIsGripped = true;\n this.freeLookMousecapture = event.pointerId;\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n\n public onPointerUp(event: PointerEvent): void {\n if (this.isPtz) {\n let handled = false;\n\n if (this.freeLookIsGripped) {\n this.freeLookIsGripped = false;\n this.stopPtz();\n handled = true;\n }\n\n // if the click was handled, force a redraw\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.freeLookMousecapture = -1; // release mouse capture\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public onPointerMove(event: PointerEvent): void {\n // ensure we have focus before controlling the PTZ\n if (this.supportPtz && this.freelookFocused) {\n const velocity = this.getVelocity(event.offsetX, event.offsetY);\n const min = Math.min(Math.abs(velocity.x), Math.abs(velocity.y));\n if (min <= 0.8) {\n this.dotOpacity = (1 - min) / 4;\n } else {\n this.dotOpacity = 0;\n }\n if (this.freeLookIsGripped) {\n // ensure where are not within the dead zone\n if (Math.abs(velocity.x) < this.deadZone && Math.abs(velocity.y) < this.deadZone) {\n velocity.x = 0;\n velocity.y = 0;\n }\n\n // to send notification, the movement need to be greated than the displacement threshold or the movement need to be newly in the deadzone\n if (\n Math.abs(velocity.x - this.actualVelocity.x) > this.threshold ||\n Math.abs(velocity.y - this.actualVelocity.y) > this.threshold ||\n ((this.actualVelocity.x !== 0 || this.actualVelocity.y !== 0) && velocity.x === 0 && velocity.y === 0)\n ) {\n this.movePtz(velocity);\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n }\n\n public onMouseWheel(event: WheelEvent): void {\n // if the user holds Shift, it means he want to do digital zoom\n if (this.supportPtz && !event.shiftKey) {\n const speed = -(event.deltaY / this.unitToMouseWheelDeltaFactor);\n\n // check whether there has been recent wheel activity or the wheel has changed direction\n if (!this.wheelTimerId) {\n this.setZoomSpeed(speed);\n\n // start the wheel timer\n clearInterval(this.wheelTimerId);\n this.wheelTimerId = this.window.setInterval(() => this.onTimerWheelActivity(), this.wheelTimerInterval);\n } else {\n // the wheel timer is already running, increase the speed\n this.wheelCumulativeDelta += speed;\n this.isWheelSpeedPending = true;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.changeDetectorRef.detectChanges();\n }\n }\n\n public onParentMouseWheel(event: WheelEvent): void {\n let handled = false;\n\n if (this.allowDigitalZoom) {\n const dewarperControl = this.dewarperControl;\n if (this.isPanoramic || dewarperControl) {\n if (dewarperControl) {\n dewarperControl.Preview.Enabled = true;\n // if dewrapping was off and we are zooming in, reputting on at 0,0\n if (!dewarperControl.isDewarping && event.deltaY < 0) {\n dewarperControl.gotoXY(0, 0);\n handled = true;\n }\n }\n } else if (!this.supportPtz || event.shiftKey || this.isDigitalZoomEnabled) {\n /* enable the digital if a PTZ operation is not currently possible */\n\n const digitalZoomControl = this.digitalZoomControl;\n if (digitalZoomControl) {\n let currentZoom: number;\n if (event.deltaY > 0) {\n currentZoom = this.incrementZoom(-0.5, digitalZoomControl.Zoom);\n } else {\n currentZoom = this.incrementZoom(0.5, digitalZoomControl.Zoom);\n }\n\n // only apply the new zoom if it has changed\n if (currentZoom !== digitalZoomControl.Zoom) {\n const clientSize = this.getClientSize();\n const x = event.offsetX / clientSize.width;\n const y = event.offsetY / clientSize.height;\n digitalZoomControl.zoomWithFocus(x, y, currentZoom);\n digitalZoomControl.Preview.Enabled = true;\n handled = true;\n }\n }\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n public onGotFocus(): void {\n // note that we are focused so that we will enable the freelook\n this.freelookFocused = true;\n }\n\n public onLostFocus(): void {\n // note that we lost focus so that we will disable the freelook\n this.freelookFocused = false;\n }\n\n //#region Private methods\n\n private displayPlayerState(state: PlayerState): boolean {\n switch (state) {\n case PlayerState.Paused:\n case PlayerState.Playing:\n case PlayerState.Rewinding:\n return false;\n }\n return true;\n }\n\n private getVelocity(x: number, y: number): Point {\n const canvas = this.freelook;\n if (!canvas) return { x: 0, y: 0 };\n\n const height = canvas.scrollHeight;\n const width = canvas.scrollWidth;\n\n let xx = (x / width) * 2 - 1;\n let yy = -((y / height) * 2 - 1);\n\n // constraint value between -1 and 1\n if (xx < -1) {\n xx = -1;\n } else if (xx > 1) {\n xx = 1;\n }\n\n if (yy < -1) {\n yy = -1;\n } else if (yy > 1) {\n yy = 1;\n }\n return { x: xx, y: yy };\n }\n\n private getClientSize(): Size {\n const div = this.divElement.nativeElement;\n if (div) {\n return new Size(div.clientWidth, div.clientHeight);\n }\n return new Size(0, 0);\n }\n\n private incrementZoom(increment: number, currentZoom: number): number {\n currentZoom += increment;\n if (currentZoom < 1) {\n currentZoom = 1;\n } else if (currentZoom > 20) {\n currentZoom = 20;\n }\n return currentZoom;\n }\n\n private log(msg: string) {\n if (this.enableLog) {\n this.loggerService.traceInformation('VideoPlayer: ' + msg);\n }\n }\n\n private movePtz(velocity: Point): void {\n if (velocity.x !== 0 && velocity.y !== 0) {\n this.log(`${velocity.x} ${velocity.y}`);\n this.actualVelocity = velocity;\n this.videoPlayer?.ptzControl?.startPanTilt(velocity.x * 100, velocity.y * 100);\n } else {\n this.stopPtz();\n }\n }\n\n private ptzStartPanTilt(executeCommandData: ExecuteCommandData) {\n const joystickCommandData = JoystickCommandData.extract(executeCommandData);\n if (joystickCommandData) {\n // ensure the user has the basic PTZ privilege\n if (this.isPtz && this.allowBasicPtz) {\n this.videoPlayer?.ptzControl?.startPanTilt(joystickCommandData.velocity.x * 100, joystickCommandData.velocity.y * 100);\n }\n }\n }\n\n private ptzStopPanTilt() {\n // ensure the user has the basic PTZ privilege\n if (this.isPtz && this.allowBasicPtz) {\n this.videoPlayer?.ptzControl?.stopPanTilt();\n }\n }\n\n private setZoomSpeed(value: number) {\n let speed = value;\n // constraint the zoom value\n if (speed < -100) {\n speed = -100;\n } else if (speed > 100) {\n speed = 100;\n }\n\n this.log(`Setting zoom speed to ${speed}%`);\n this.videoPlayer?.ptzControl?.startZoom(speed);\n }\n\n private stopPtz() {\n this.log('Stop PTZ...');\n this.actualVelocity = { x: 0, y: 0 };\n this.ptzStopPanTilt();\n }\n\n private stopZoom() {\n this.log('Stop zoom...');\n this.videoPlayer?.ptzControl?.stopZoom();\n }\n\n private async startPlayerAsync() {\n // uncomment for full blown comments\n // Logger.enable(true);\n if (this.videoPlayer && this.entityContent && this.content) {\n await this.videoPlayer.startAsync(SafeGuid.parse(this.entityContent.source), null);\n\n // register to more events\n if (this.videoPlayer.digitalZoomControl) {\n this.videoPlayer.digitalZoomControl.onPositionChanged.register(this.onDigitalZoomPositionChangedHandler);\n }\n\n // verify if a seek time was provided\n let seekTime: Date | undefined;\n if (this.content.parameters && this.allowPlaybackVideo && this.content.parameters.hasField(SharedContentFields.Timestamp)) {\n const seekTimeValue = this.content.parameters.getField(SharedContentFields.Timestamp);\n\n // ensure the date format is correct by passing it into moment\n seekTime = moment(seekTimeValue).toDate();\n }\n // ensure the user has the privilege for live video\n if (this.allowLiveVideo && !this.isGhost) {\n this.playLive();\n } else if (this.allowPlaybackVideo && !seekTime) {\n // if we dont have access to live video, inject a 30 seconds delay\n seekTime = moment().subtract(30, 'seconds').utc().toDate();\n }\n\n // seek to the specified time if needed\n if (seekTime) {\n this.seek(seekTime);\n }\n\n this.videoPlayer.showDebugOverlay(this.videoDiagnosticService.isDebugOverlayActivated());\n\n const cameraEntity = await this.entityCacheTask.getEntityAsync(CameraEntity, SafeGuid.parse(this.entityContent.source));\n if (cameraEntity !== null) {\n this.entityCacheTask\n .detectEntityChange(cameraEntity, 'lockingUserId')\n .pipe(untilDestroyed(this))\n .subscribe((updatedCameraEntity) => this.setPtzMode(!updatedCameraEntity?.lockingUserId.isEmpty()));\n }\n }\n }\n\n private async getCameraEntityCache(guid: IGuid): Promise {\n return this.entityCacheTask.getEntityAsync(CameraEntity, guid);\n }\n\n private updateDisplayedState() {\n const currentState = this.displayedState;\n\n if (this.errorState) {\n this.displayedState = this.errorState;\n } else if (this.streamingState) {\n this.displayedState = this.streamingState;\n } else if (this.playerState) {\n this.displayedState = this.playerState;\n } else {\n this.displayedState = undefined;\n }\n\n if (currentState !== this.displayedState) {\n this.changeDetectorRef.detectChanges();\n }\n }\n\n private updatePtzSupport() {\n this.supportPtz = this.allowBasicPtz && this.isPtz && this.isLive;\n\n // in case we support PTZ in live mode, ensure we close the digital zoom\n if (this.supportPtz) {\n this.videoPlayer?.digitalZoomControl?.stop();\n }\n }\n\n private tryGetCameraSubType(): string | null {\n if (this.entityContent?.parameters?.hasField(CameraEntityFields.cameraSubTypeField)) {\n return this.entityContent.parameters.getField(CameraEntityFields.cameraSubTypeField);\n }\n return null;\n }\n\n // #endregion\n\n // #region Event Handlers\n\n private onParentMouseWheelHandler = (event: WheelEvent): void => {\n return this.onParentMouseWheel(event);\n };\n\n private onMouseWheelHandler = (event: WheelEvent): void => {\n this.onMouseWheel(event);\n };\n\n private onAudioAvailabilityChangedHandler = (event: AudioAvailabilityChangeEvent): void => {\n this.audioAvailabilityEvent.trigger(event);\n };\n\n private onAudioStateChangedHandler = (event: AudioStateChangeEvent): void => {\n this.audioEvent.trigger(event);\n };\n\n private onErrorStateHandler = (event: ErrorStatusEvent): void => {\n let errorState: string | undefined;\n if (event.errorCode) {\n switch (event.errorCode) {\n case ErrorCode.ConnectionLost:\n case ErrorCode.ConnectionFailed:\n errorState = this.translateService.instant('STE_LABEL_ERROR_CONNECTION_FAILED') as string;\n break;\n case ErrorCode.InsufficientPrivilege:\n case ErrorCode.InsufficientCapability:\n errorState = this.translateService.instant('STE_LABEL_ERROR_MISSING_PRIVILEGES') as string;\n break;\n case ErrorCode.LiveCapacityExceeded:\n errorState = this.translateService.instant('STE_LABEL_ERROR_LIVE_CAPACITY_EXCEEDED') as string;\n break;\n case ErrorCode.PlaybackCapacityExceeded:\n errorState = this.translateService.instant('STE_LABEL_ERROR_PLAYBACK_CAPACITY_EXCEEDED') as string;\n break;\n case ErrorCode.UnsupportedEncoding:\n errorState = this.translateService.instant('STE_LABEL_ERROR_UNSUPPORTED_ENCODING') as string;\n break;\n case ErrorCode.Mp4CodecNotSupported:\n errorState = this.translateService.instant('STE_LABEL_ERROR_ENCODING_NOT_SUPPORTED') as string;\n break;\n case ErrorCode.NoTranscodingAllowed:\n errorState = this.translateService.instant('STE_LABEL_ERROR_ENABLE_SECURE_COMMUNICATION') as string;\n break;\n case ErrorCode.ForbiddenTransformation:\n errorState = this.translateService.instant('STE_LABEL_ERROR_FORBIDDEN_TRANSFORMATION') as string;\n break;\n case ErrorCode.MissingCertificate:\n case ErrorCode.CantUsePrivateKey:\n errorState = this.translateService.instant('STE_LABEL_ERROR_CERTIFICATE_ERROR') as string;\n break;\n case ErrorCode.DatabaseUpgradeRequired:\n errorState = this.translateService.instant('STE_LABEL_ERROR_DB_UPGRADE_REQUIRED') as string;\n break;\n case ErrorCode.RequestTimedOut:\n errorState = this.translateService.instant('STE_LABEL_ERROR_REQUEST_TIMEOUT') as string;\n break;\n case ErrorCode.StreamNotFound:\n errorState = this.translateService.instant('STE_LABEL_ERROR_STREAM_NOT_FOUND') as string;\n break;\n default:\n errorState = `${this.translateService.instant('STE_LABEL_ERROR') as string} (${event.errorCode})`;\n break;\n }\n }\n\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.errorState = errorState;\n this.updateDisplayedStateDebounce();\n });\n\n this.errorEvent.trigger(event);\n };\n\n private onFrameRenderedHandler = (frameTime: Date): void => {\n // inform the rendering helper that we received a frame\n RenderingHelper.invalidate();\n\n this.frameRenderedEvent.trigger(frameTime);\n };\n\n private onExportProgressHandler = (event: ExportProgressEvent): void => {\n this.exportProgress.trigger(event);\n };\n\n private onLoopChangedHandler = (event: LoopChangeEvent): void => {\n this.loopEvent.trigger(event);\n };\n\n private onStreamingConnectionStatusHandler = (event: StreamingConnectionStatusChangeEvent): void => {\n let streamingState: string | undefined;\n let displayVideo = true;\n\n if (event.state === StreamingConnectionStatus.Blocked) {\n streamingState = this.translateService.instant('STE_LABEL_PLAYERSTATE_BLOCKED') as string;\n displayVideo = false;\n } else if (event.state === StreamingConnectionStatus.CameraNotRunning) {\n streamingState = this.translateService.instant('STE_LABEL_PLAYERSTATE_WAITING_OFFLINE_CAMERA') as string;\n }\n\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.streamingState = streamingState;\n this.displayVideo = displayVideo;\n this.updateDisplayedStateDebounce();\n });\n\n this.streamStatusEvent.trigger(event);\n };\n\n private onTimelinePartHandler = (event: TimelinePartEvent): void => {\n this.timelinePart.trigger(event);\n };\n\n private onPlayerModeChangedHandler = (event: PlayerModeChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.isLive = event.playerMode === PlayerMode.live;\n this.updatePtzSupport();\n });\n\n this.playerModeEvent.trigger(event);\n };\n\n private onPlayerSpeedChangedHandler = (event: PlaySpeedChangeEvent): void => {\n this.playSpeedEvent.trigger(event);\n };\n\n private onPlayerStateChangedHandler = (event: PlayerStateChangeEvent): void => {\n let playerState: string | undefined;\n if (event.playerState && this.displayPlayerState(event.playerState)) {\n playerState = this.getPlayerState(event.playerState);\n }\n\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.playerState = playerState;\n this.updatePtzSupport();\n\n if (event.playerState === PlayerState.NoVideoSequenceAvailable) {\n this.stateBackgroundColor = '#1b1e1f';\n } else if (event.playerState === PlayerState.Playing) {\n this.stateBackgroundColor = undefined;\n }\n\n // live update here\n this.updateDisplayedState();\n });\n\n this.playerStateEvent.trigger(event);\n };\n\n private onDigitalZoomPositionChangedHandler = (): void => {\n // trigger the change detection to restore the free look\n this.changeDetectorRef.detectChanges();\n };\n\n private onTimerWheelActivity() {\n // if the user increase the zoom speed before the timer tick, apply it\n if (this.isWheelSpeedPending) {\n this.isWheelSpeedPending = false;\n this.setZoomSpeed(this.wheelCumulativeDelta * this.wheelDeltaFactor);\n } else {\n // the wheel has been idle long enough, stop the timer and the zoom\n clearInterval(this.wheelTimerId);\n this.wheelTimerId = undefined;\n this.wheelCumulativeDelta = 0;\n this.stopZoom();\n }\n }\n\n //#endregion\n}\n","// Decreasing priority\nexport enum VideoButtonsLeftBar {\n Record,\n PlayOrPause,\n JumpBack,\n JumpForward,\n Rewind,\n FastForward,\n SlowMotion,\n GoLive,\n}\n\n// Decreasing priority\nexport enum VideoButtonsRightBar {\n Expand,\n Bookmarks,\n SaveSnapshot,\n Audio,\n PTZControls,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n Convert number/float value to video speed format (i.e. : '-0.125' becomes '-1/8x')\n Example :
    \n*/\n@Pipe({ name: 'videoSpeed' })\nexport class VideoSpeedPipe implements PipeTransform {\n public static readonly speedSymbol = 'x';\n public static readonly videoSpeedFractions: ReadonlyMap = new Map([\n [1 / 8, '1/8'],\n [1 / 4, '1/4'],\n [0.333, '1/3'],\n [1 / 2, '1/2'],\n ]);\n\n public transform(speed?: number): string {\n if (!speed) {\n return '';\n }\n\n // Registered Fractions\n if (!Number.isInteger(speed)) {\n const speedFraction = VideoSpeedPipe.videoSpeedFractions.get(Math.abs(speed));\n if (speedFraction) {\n return `${speed < 0 ? '-' : ''}${speedFraction}${VideoSpeedPipe.speedSymbol}`;\n }\n }\n\n // Integers and Unregistered fractions\n return `${speed}${VideoSpeedPipe.speedSymbol}`;\n }\n}\n","
    \n \n\n
    \n
    \n
    \n \n {{ title }}\n
    \n\n
    \n \n \n \n \n \n
    \n
    \n\n
    \n \n \n \n {{ timestampText }}\n \n \n \n
    \n {{ relativeTimeText }}\n {{ currentSpeed | videoSpeed }}\n
    \n
    \n\n
    \n \n \n \n \n \n \n\n \n \n \n
    \n
    \n
    \n\n\n \n \n \n \n \n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ButtonFlavor, Icon } from '@genetec/gelato';\nimport { GenMenu, MeltedIcon } from '@genetec/gelato-angular';\nimport { MeltedModalAction } from '@genetec/gelato-angular/lib/components/gen-melted-modal/enums/melted-modal-action.enum';\nimport { ActivityTrailClient, ITimezoneInfo, SaveSnapshotInfo } from '@modules/shared/api/api';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { TimelineComponent } from '@modules/shared/components/timeline/timeline.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport {\n CommandBindings,\n CommandContext,\n CommandsService,\n COMMANDS_SERVICE,\n ContentExtensionServicesProvider,\n CONTENT_SERVICES_PROVIDER,\n PluginComponentCommandHandler,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { ContextMenuFactory } from '@modules/shared/services/context-menu/context-menu.factory';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TileItem } from '@modules/tiles/models/tile-item';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport * as FileSaver from 'file-saver';\nimport { uniqueId } from 'lodash-es';\nimport { IVideoPlayer } from 'Marmot/ivideoplayer';\nimport {\n AudioAvailabilityChangeEvent,\n AudioStateChangeEvent,\n PlayerMode,\n PlayerModeChangeEvent,\n PlayerState,\n PlayerStateChangeEvent,\n PlaySpeedChangeEvent,\n} from 'Marmot/Marmot/gwp';\nimport moment from 'moment';\nimport { CameraTypes } from 'RestClient/Client/Enumerations/CameraType';\nimport { CameraEntityFields, ICameraEntity } from 'RestClient/Client/Interface/ICameraEntity';\nimport { IEntityCacheTask, modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { BehaviorSubject, fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { CameraHelper } from '@modules/video/utilities/camerahelper';\nimport { Enum } from '@src/app/utilities/types';\nimport { FullscreenService } from '@modules/shared/services/fullscreen/fullscreen.service';\nimport { RecordingStates } from '@modules/shared/interfaces/recording-states';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { DisplayContext } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { ContentOverlayService } from '@modules/shared/services/content-overlay/content-overlay.service';\nimport { CameraFeatureCapabilties } from 'RestClient/Client/Enumerations/CameraFeatureCapabilties';\nimport { GenMeltedModalParams } from '@genetec/gelato-angular/lib/components/gen-melted-modal/interfaces/gen-melted-modal-params';\nimport { InternalContentPluginDescriptor } from '../../../shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, ContentPluginComponent, PluginComponentExposure } from '../../../shared/interfaces/plugins/public/plugin-public.interface';\nimport { PluginTypes } from '../../../shared/interfaces/plugins/public/plugin-types';\nimport { ExportMp4Request, SerializableDateTimeSpan } from '../../api/api';\nimport { VideoContentTypes } from '../../enumerations/video-content-types';\nimport { VideoExportService } from '../../services/video-export.service';\nimport { RenderingHelper } from '../../utilities/renderinghelper';\nimport { ExportVideoComponent } from '../export-video/export-video.component';\nimport { GotoTimeComponent } from '../goto-time/goto-time.component';\nimport { PtzPopupService } from '../ptz-controls/services/ptz-popup.service';\nimport { PtzPrivileges } from '../ptz-controls/services/ptz-privileges';\nimport { VideoPlayerComponent } from '../video-player/video-player.component';\nimport { VideoButtonsLeftBar, VideoButtonsRightBar } from './buttons/enum/buttons.enum';\nimport { TileButton } from './buttons/interfaces/tile-button.interface';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\nexport const isContentSupported = (content: Content): boolean => {\n if (content?.type.equals(VideoContentTypes.Video)) {\n return content.grantedPrivileges.some(\n (privilege) => privilege.equals(KnownPrivileges.allowVideoPrivilege) || privilege.equals(KnownPrivileges.allowPlaybackVideoPrivilege)\n );\n }\n return false;\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-video-controls',\n templateUrl: './video-controls.component.html',\n styleUrls: ['./video-controls.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalContentPluginDescriptor({\n type: VideoControlsComponent,\n pluginTypes: [PluginTypes.Tile, PluginTypes.Widget],\n exposure: {\n id: VideoControlsComponent.pluginId,\n priority: 5,\n requiredParentPlugin: VideoPlayerComponent.pluginId,\n availableCommands: [SharedCommands.SaveSnapshot],\n } as PluginComponentExposure,\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video] },\n})\nexport class VideoControlsComponent extends TrackedComponent implements AfterViewInit, OnInit, OnDestroy, ContentPluginComponent, PluginComponentCommandHandler {\n public static pluginId = SafeGuid.parse('71101942-A977-4CC0-A04A-5AA28C4FC69D');\n private static MinDate = new Date(0);\n\n @ViewChild('timeline') public timeline?: TimelineComponent;\n\n @ViewChild('PtzPopupTemplate') public ptzPopupTemplate!: TemplateRef;\n\n @Input() public dataContext?: TileItem;\n\n @ViewChild('GotoTimeModal')\n private gotoTimeModal!: GotoTimeComponent;\n\n public gotoTimeModalId = SafeGuid.newGuid().toString();\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly componentId: number | string;\n public readonly timeFormat = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n\n public get fullscreenElement(): ElementRef | undefined {\n return document?.fullscreenElement ? new ElementRef(document.fullscreenElement) : undefined;\n }\n\n public title = '';\n public entityId = SafeGuid.EMPTY;\n public entityContent?: Content;\n\n public isPaused = false;\n public isLive = true;\n public isSlowMotion = false;\n public isAudioAvailable = false;\n public isListening = false;\n public isWithinTile = false;\n public isCameraStreaming = false;\n public canListen = false;\n\n // Recording states\n public recordingStates$: Observable;\n\n public timestampText = '';\n public relativeTimeText = '';\n public isMoreMenuOpen = false;\n\n public get canShowPlayback(): boolean {\n return this.isPlaybackCapabilitySupported && this.hasPlaybackVideoPrivilege;\n }\n\n public get moreMenuItemSource(): ContextMenuItem[] {\n return this.moreMenuItemSourceInternal;\n }\n\n public set moreMenuItemSource(newMoreMenuItemSource: ContextMenuItem[]) {\n this.moreMenuItemSourceInternal = newMoreMenuItemSource;\n this.destroyMoreMenu();\n }\n\n public content?: Content;\n public videoPlayer?: IVideoPlayer;\n\n // Buttons\n public leftBarVisibleButtons: TileButton[] = []; // Buttons that fit in the player's bottom bar directly\n public rightBarVisibleButtons: TileButton[] = [];\n\n // Privileges\n public hasLiveVideoPrivilege = false;\n public hasPlaybackVideoPrivilege = false;\n public hasBasicPtzPrivilege = false;\n public canAddBookmark = true;\n public canSaveSnapshots = false;\n\n // Determine if the current camera is a ptz\n public isPtz = false;\n public ptzPopup?: HTMLGenPopupElement | null;\n\n // Speed\n public currentSpeed = 1;\n private readonly speeds = {\n forward: {\n normalMotion: [2, 4, 6, 8, 10, 20, 40, 100],\n slowMotion: [1 / 8, 1 / 4, 0.333, 1 / 2],\n },\n backward: {\n normalMotion: [-10, -20, -40, -100],\n slowMotion: [-1 / 8, -1 / 4, -0.333, -1 / 2],\n },\n };\n\n private entityTimezone?: ITimezoneInfo;\n private parentHost?: Element | null;\n\n // Buttons\n private leftBarAllowedButtons: TileButton[] = []; // Buttons that the user has the privileges to use/see\n private leftBarButtonsPriority: string[] = []; // Button IDs ordered by priority, the least important ones will appear in the More menu first\n private leftBarAdditionalButtons: ContextMenuItem[] = []; // Buttons that are displayed in the More menu because they don't fit in the player's bottom bar directly\n\n private rightBarAllowedButtons: TileButton[] = [];\n private rightBarButtonsPriority: string[] = [];\n private rightBarAdditionalButtons: ContextMenuItem[] = [];\n\n private readonly BUTTON_WIDTH = 40;\n private lastRightBarAvailableWidth = 0; // Used to recalculate the visible buttons (the Audio button for example causes a race condition)\n private lastLeftBarAvailableWidth = 0;\n private computeButtonsVisibilityDebounced: Subject = new Subject();\n\n private isPlaybackCapabilitySupported = false;\n\n // Privileges\n private hasStartRecordingPrivilege = false;\n private hasExportVideoPrivilege = false;\n private hasBookmarkPrivilege = false;\n private hasSaveSnapshotsPrivilege = false;\n\n private entityCacheTask!: IEntityCacheTask;\n\n private playerStateChangedSubject = new Subject();\n\n private moreMenu?: ComponentRef;\n\n private moreMenuCloseSubscription?: Subscription;\n\n private moreMenuItemSourceInternal: ContextMenuItem[] = [];\n\n // Recording states\n private recordingStates: RecordingStates = { isRecording: false, isRecordingLocked: false };\n\n // Subjects\n private recordingStatesSubject = new BehaviorSubject(this.recordingStates);\n\n //#endregion\n\n //#region Constructor\n\n constructor(\n private hostElement: ElementRef,\n private zone: NgZone,\n private translateService: TranslateService,\n private timeService: TimeService,\n private scClientService: SecurityCenterClientService,\n private videoExportService: VideoExportService,\n private ptzPopupService: PtzPopupService,\n private viewContainerRef: ViewContainerRef,\n private contextMenuFactory: ContextMenuFactory,\n private activityTrailClient: ActivityTrailClient,\n @Inject(CONTENT_SERVICES_PROVIDER) private tilesService: ContentExtensionServicesProvider,\n @Inject(COMMANDS_SERVICE) public commandsService: CommandsService,\n trackingService: TrackingService,\n private fullscreenService: FullscreenService,\n private changeDetectorRef: ChangeDetectorRef,\n private contentOverlayService: ContentOverlayService\n ) {\n super(trackingService);\n\n this.recordingStates$ = this.recordingStatesSubject.asObservable();\n\n this.computeButtonsVisibilityDebounced\n .pipe(debounceTime(200))\n .pipe(untilDestroyed(this))\n .subscribe(() => this.computeButtonsVisibility());\n this.componentId = uniqueId();\n this.ptzPopupService.viewContainerRef = this.viewContainerRef;\n\n this.playerStateChangedSubject\n .pipe(debounceTime(200))\n .pipe(untilDestroyed(this))\n .subscribe((playerState) => this.updateIsCameraStreaming(playerState));\n\n this.fullscreenService.fullscreenElementChanged$.pipe(untilDestroyed(this)).subscribe(() => {\n this.destroyMoreMenu();\n });\n\n this.recordingStates$.pipe(untilDestroyed(this)).subscribe((recordingStates) => (this.recordingStates = recordingStates));\n }\n\n @HostListener('document:keydown', ['$event']) async handleGlobalKeyboardEvent(event: KeyboardEvent): Promise {\n const key = event.key;\n if (key === 'Escape') {\n await this.ptzPopupService.closeAllPopups();\n }\n }\n\n public setDataContext(context: unknown): void {\n this.dataContext = context as TileItem;\n }\n\n public setContent(content: Content): void {\n this.content = content;\n }\n\n public getCommandBindings(): CommandBindings {\n const bindings = new CommandBindings();\n bindings.addCommand({\n commandId: SharedCommands.ExportVideo,\n executeCommandHandler: (executeCommandData) => {\n const commandContext = executeCommandData.commandContext;\n if (this.hasExportVideoPrivilege && commandContext?.type.equals(ContextTypes.Specific) && isNonEmptyString(commandContext.data)) {\n this.downloadAsync(commandContext.data).fireAndForget();\n executeCommandData.isHandled = true;\n } else {\n // if we are capturing this we are the target, so download from our specific data\n this.downloadAsync(undefined).fireAndForget();\n executeCommandData.isHandled = true;\n }\n },\n isCommandAvailableHandler: () => this.hasExportVideoPrivilege,\n });\n bindings.addCommand({\n commandId: SharedCommands.FastForward,\n executeCommandHandler: (executeCommandData) => {\n this.fastForward();\n executeCommandData.isHandled = true;\n },\n isCommandAvailableHandler: () => !this.isLive,\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n bindings.addCommand({\n commandId: SharedCommands.PauseVideo,\n executeCommandHandler: (executeCommandHandler) => {\n this.pause();\n executeCommandHandler.isHandled = true;\n },\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n bindings.addCommand({\n commandId: SharedCommands.PlayVideo,\n executeCommandHandler: (executeCommandHandler) => {\n this.playLive();\n executeCommandHandler.isHandled = true;\n },\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n bindings.addCommand({\n commandId: SharedCommands.Rewind,\n executeCommandHandler: (executeCommandHandler) => {\n this.rewind();\n executeCommandHandler.isHandled = true;\n },\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n bindings.addCommand({\n commandId: SharedCommands.SaveSnapshot,\n executeCommandHandler: (executeCommandHandler) => {\n this.takeSnapshot().fireAndForget();\n executeCommandHandler.isHandled = true;\n },\n isCommandAvailableHandler: () => this.canSaveSnapshots,\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n bindings.addCommand({\n commandId: SharedCommands.SlowMotion,\n executeCommandHandler: (executeCommandHandler) => {\n this.slowMotion();\n executeCommandHandler.isHandled = true;\n },\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n // Hijack shareEntity command to set playbackTime\n bindings.addCommand({\n commandId: SharedCommands.ShareEntity,\n executeCommandHandler: (executeCommandHandler) => {\n const commandContext = executeCommandHandler.commandContext;\n if (this.content && commandContext) {\n let entityId = SafeGuid.parse(this.content.source);\n if (this.content.contextContent?.source) {\n entityId = SafeGuid.parse(this.content.contextContent.source);\n }\n\n if (entityId) {\n commandContext.type = ContextTypes.Specific;\n if (!this.isLive) {\n commandContext.data = { entityId, timestamp: this.videoPlayer?.lastFrameTime };\n } else {\n commandContext.data = { entityId, timestamp: undefined };\n }\n }\n }\n executeCommandHandler.isHandled = false;\n },\n });\n // Hijack addBookmark command to set playbackTime\n bindings.addCommand({\n commandId: SharedCommands.AddBookmark,\n executeCommandHandler: (executeCommandHandler) => {\n const commandContext = executeCommandHandler.commandContext;\n if (this.content && this.videoPlayer && commandContext) {\n const entityId = SafeGuid.parse(this.content.source);\n let timestamp: Date | undefined;\n // In playback, add the timestamp\n if (!this.isLive) {\n timestamp = this.videoPlayer?.lastFrameTime;\n }\n\n const params = { entityId, timestamp };\n commandContext.type = ContextTypes.Specific;\n commandContext.data = params;\n }\n executeCommandHandler.isHandled = false;\n },\n canExecuteCommandHandler: () => this.isCameraStreaming,\n });\n return bindings;\n }\n\n //#endregion\n\n //#region Ng...\n\n async ngOnInit() {\n super.ngOnInit();\n\n if (this.content) {\n this.entityContent = this.content;\n this.title = this.entityContent.title;\n this.entityId = SafeGuid.parse(this.entityContent.source);\n\n // Read privileges\n const priv = this.content.grantedPrivileges;\n this.hasLiveVideoPrivilege = priv.some((item) => item.equals(KnownPrivileges.allowVideoPrivilege));\n this.hasPlaybackVideoPrivilege = priv.some((item) => item.equals(KnownPrivileges.allowPlaybackVideoPrivilege));\n this.hasBasicPtzPrivilege = priv.some((item) => item.equals(KnownPrivileges.basicPtzOperationsPrivilege));\n this.hasBookmarkPrivilege = priv.some((item) => item.equals(KnownPrivileges.addBookmarkPrivilege));\n this.hasSaveSnapshotsPrivilege = priv.some((item) => item.equals(KnownPrivileges.saveAndPrintSnapshotsPrivilege));\n this.hasStartRecordingPrivilege = priv.some((item) => item.equals(KnownPrivileges.recordManuallyPrivilege));\n this.hasExportVideoPrivilege = priv.some((item) => item.equals(KnownPrivileges.exportVideoPrivilege));\n\n // determine if the camera is a PTZ or not\n if (this.entityContent.parameters?.hasField(CameraEntityFields.cameraSubTypeField) === true) {\n this.isPtz = this.entityContent.parameters.getField(CameraEntityFields.cameraSubTypeField) === CameraTypes.PTZCamera;\n }\n\n // Determines whether or not the input audio is permitted on the video unit\n if (this.entityContent?.parameters?.hasField(CameraEntityFields.audioStreamInField)) {\n const audioStreamInId = this.entityContent.parameters.getFieldGuid(CameraEntityFields.audioStreamInField);\n this.canListen = !audioStreamInId.isEmpty();\n }\n }\n\n await this.updateFromCameraCapabilities();\n\n // Wait until we read the privileges before initializing the buttons\n this.initializeButtons();\n\n const scClient = this.scClientService?.scClient;\n if (scClient) {\n this.entityCacheTask = scClient.buildEntityCache([CameraEntityFields.timeZoneIdField, CameraEntityFields.recordingStateField]);\n const cameraEntity = (await this.entityCacheTask.getEntityAsync(CameraEntity, this.entityId, true)) as CameraEntity;\n if (cameraEntity) {\n this.entityTimezone = await this.timeService.retrieveTimezoneAsync(cameraEntity.timeZoneId);\n this.initTimeline();\n this.updateRecordingState(cameraEntity.recordingState);\n\n await this.entityCacheTask.detectFieldChangeAsync(\n cameraEntity,\n () => {\n const _ = cameraEntity?.recordingState;\n },\n ((_: ICameraEntity, newValue: string, __: string) => {\n this.updateRecordingState(newValue);\n this.setMoreMenuItemSource();\n return new Deferred(true).promise;\n }) as modificationHandlerField\n );\n }\n }\n\n this.setMoreMenuItemSource();\n }\n\n ngAfterViewInit() {\n // take care, timeline can be undefined if we do not have the playback privilege\n setTimeout(() => {\n this.zone.runOutsideAngular(() => {\n if (this.content) {\n this.videoPlayer = this.tilesService.getService(this.content.id);\n if (this.videoPlayer) {\n this.videoPlayer.onPlayerModeChanged.register(this.onPlayerModeChangedHandler);\n this.videoPlayer.onPlaySpeedChanged.register(this.onPlayerSpeedChangedHandler);\n this.videoPlayer.onPlayerStateChanged.register(this.onPlayerStateChangedHandler);\n this.videoPlayer.onAudioAvailabilityChanged.register(this.onPlayerAudioAvailabilityChangedHandler);\n this.videoPlayer.onAudioStateChanged.register(this.onPlayerAudioStateChangedHandler);\n\n this.isAudioAvailable = this.videoPlayer.isAudioAvailable;\n\n this.computeRightButtonsVisibility(this.lastRightBarAvailableWidth);\n }\n }\n });\n\n // subscribe to the RenderingHelper that is used to reduce the number of Angular's change detection\n RenderingHelper.onRefresh.pipe(untilDestroyed(this)).subscribe(() => this.onRenderingRefresh());\n\n // determine whether we are inside a TileComponent\n const parentTile = this.hostElement.nativeElement.closest('app-tile');\n if (parentTile) {\n this.isWithinTile = true;\n }\n this.parentHost = this.hostElement.nativeElement.closest('app-navigation-plugin-host');\n });\n this.parentHost = this.hostElement.nativeElement.closest('app-navigation-plugin-host');\n }\n\n async ngOnDestroy() {\n if (this.videoPlayer) {\n this.videoPlayer.onPlayerModeChanged.unregister(this.onPlayerModeChangedHandler);\n this.videoPlayer.onPlaySpeedChanged.unregister(this.onPlayerSpeedChangedHandler);\n this.videoPlayer.onPlayerStateChanged.unregister(this.onPlayerStateChangedHandler);\n this.videoPlayer.onAudioAvailabilityChanged.unregister(this.onPlayerAudioAvailabilityChangedHandler);\n this.videoPlayer.onAudioStateChanged.unregister(this.onPlayerAudioStateChangedHandler);\n }\n\n this.recordingStatesSubject.complete();\n\n if (this.entityCacheTask) {\n await this.entityCacheTask.dispose();\n }\n\n this.destroyMoreMenu();\n\n super.ngOnDestroy();\n }\n\n //#endregion\n\n //#region Methods\n public playLive(): void {\n this.videoPlayer?.playLive();\n }\n\n public togglePlayingState(): void {\n if (this.isPaused) {\n this.resume();\n } else {\n this.pause();\n }\n }\n\n public resume(maintainSpeed: boolean = this.isSlowMotion): void {\n this.videoPlayer?.resume(maintainSpeed);\n }\n\n public pause(maintainSpeed: boolean = this.isSlowMotion): void {\n this.videoPlayer?.pause(maintainSpeed);\n }\n\n public rewind(): void {\n // if we are in live mode, switch to playback\n if (this.isLive) {\n this.switchToNearLive();\n }\n\n this.changeSpeed(false);\n }\n\n public fastForward(): void {\n this.changeSpeed(true);\n }\n\n public slowMotion(): void {\n // if we are in live mode, switch to playback\n if (this.isLive) {\n this.switchToNearLive();\n }\n\n const isSlowMotion = !this.isSlowMotion;\n if (isSlowMotion) {\n const speeds = this.currentSpeed > 0 ? this.speeds.forward : this.speeds.backward;\n this.videoPlayer?.setPlaySpeed(speeds.slowMotion[0]);\n } else {\n this.videoPlayer?.setPlaySpeed(1);\n }\n }\n\n public toggleExpandWidget(): void {\n if (this.parentHost) {\n this.contentOverlayService.setOverlay(this.parentHost);\n }\n }\n\n public jumpBackAsync(seconds: number): void {\n if (this.videoPlayer) {\n const lastFrameReceived = this.videoPlayer?.lastFrameTime;\n if (lastFrameReceived) {\n const toGo = moment(lastFrameReceived).subtract(seconds, 'seconds');\n this.videoPlayer.seek(toGo.toDate());\n }\n }\n }\n\n public jumpForwardAsync(seconds: number): void {\n if (this.videoPlayer) {\n const lastReceivedFrame = this.videoPlayer?.lastFrameTime;\n if (lastReceivedFrame) {\n let toGo = moment(lastReceivedFrame).add(seconds, 'seconds');\n\n // if we do not allow live video, ensure we stay in near live\n if (!this.hasLiveVideoPrivilege && toGo.isAfter(moment())) {\n toGo = moment().subtract(5, 'seconds');\n }\n\n this.videoPlayer.seek(toGo.toDate());\n }\n }\n }\n\n public addBookmark(message?: string): void {\n // check the add bookmark privilege\n if (this.hasBookmarkPrivilege && this.content && this.videoPlayer) {\n const entityId = SafeGuid.parse(this.content.source);\n let timestamp: Date | undefined;\n // In playback, add the timestamp\n if (!this.isLive) {\n timestamp = this.videoPlayer?.lastFrameTime;\n }\n\n const params = { entityId, timestamp, message };\n const commandContext: CommandContext = { type: ContextTypes.Specific, data: params };\n\n // we want to force execution on this component to prevent the command being routed to the active tile when the user executed the command in the side pane.\n this.commandsService.forceExecuteCommand(SharedCommands.AddBookmark, commandContext, undefined, this.hostElement?.nativeElement);\n }\n }\n\n public expandTile(): void {\n this.commandsService.executeCommand(SharedCommands.ExpandTile);\n }\n\n public gotoTime(): void {\n // check the allow playback privilege\n if (this.hasPlaybackVideoPrivilege && this.videoPlayer) {\n const gotoTimeComponent = this.fullscreenService.displayModal(this.gotoTimeModal);\n if (gotoTimeComponent) {\n gotoTimeComponent.genModalAction\n .pipe(untilDestroyed(this))\n .subscribe((modalAction: MeltedModalAction) => this.handleGotoTime(modalAction, gotoTimeComponent.timestamp));\n }\n }\n }\n\n public async takeSnapshot(): Promise {\n // ensure the user has privilege to save the snapshot\n if (this.hasSaveSnapshotsPrivilege) {\n const blob = await this.videoPlayer?.takeSnapshotAsync();\n if (blob != null) {\n // build the default snapshot's filename\n let defaultFilename = '';\n // the browser saves it as png by default\n const defaultExtension = '.png';\n\n // append the content's title\n if (this.entityContent) {\n defaultFilename = this.entityContent.title;\n }\n\n // append the date/time\n const lastFrameTime = this.videoPlayer?.lastFrameTime;\n let timestamp;\n if (lastFrameTime) {\n // 'L LTS' => L: \"MM/DD/YYYY\" LTS: \"h:mm:ss A\"\n timestamp = this.timeService.formatTime(lastFrameTime, 'L LTS', true, true, this.entityTimezone, false);\n defaultFilename += ` (${timestamp})`;\n // remove invalid characters for a file name added by the timestamp\n defaultFilename = defaultFilename.replaceAll(':', '_');\n }\n\n // save the file (the FileSaver already ensure the filename is valid by replacing forbidden characters by '_')\n FileSaver.saveAs(blob, defaultFilename + defaultExtension);\n\n // log activity trail\n const saveSnapshotInfo = new SaveSnapshotInfo();\n saveSnapshotInfo.fileName = defaultFilename + defaultExtension;\n saveSnapshotInfo.fileType = defaultExtension;\n if (lastFrameTime) {\n saveSnapshotInfo.videoFrameDateTime = timestamp;\n }\n if (this.content) {\n saveSnapshotInfo.camera = SafeGuid.parse(this.content.source);\n }\n await this.activityTrailClient.saveSnapshot(saveSnapshotInfo).toPromise();\n }\n }\n }\n\n public toggleListen(): void {\n this.commandsService.executeCommand(SharedCommands.ToggleListen);\n\n this.computeRightButtonsVisibility(this.lastRightBarAvailableWidth);\n }\n\n public async toggleMoreMenu(): Promise {\n this.buildMoreMenu();\n\n await this.moreMenu?.instance.toggle();\n\n this.isMoreMenuOpen = this.moreMenu?.instance.open ?? false;\n }\n\n public async togglePtzControls(event?: Event): Promise {\n let id = '';\n if (!event) {\n id = `#video-controls-more-${this.componentId}`;\n } else {\n id = `#${(event?.currentTarget as HTMLElement).id}`;\n }\n const key = this.generateUniqueKeyForContent(this.content);\n // Create the popup if it doesn't already exist. Otherwise will return null.\n const newPopup = this.ptzPopupService.createPtzPopupRef(this.ptzPopupTemplate, key, id);\n if (newPopup) {\n this.ptzPopup = newPopup;\n }\n await this.ptzPopupService.togglePopup(key, id);\n }\n\n public onHidePtzRequested(request: boolean): void {\n if (request) {\n // limitation for now, we can't know when a user moves or deletes a tile.\n this.ptzPopupService.destroyAllPopups();\n }\n }\n\n private changeSpeed(isForward: boolean) {\n const speedDirectionValues = isForward ? this.speeds.forward : this.speeds.backward;\n const speeds = this.isSlowMotion ? speedDirectionValues.slowMotion : speedDirectionValues.normalMotion;\n\n let newSpeed = speeds[0];\n let speedIndex = speeds.findIndex((speed) => speed === this.currentSpeed);\n\n if (speedIndex >= 0) {\n speedIndex = Math.min(speedIndex + 1, speeds.length - 1);\n newSpeed = speeds[speedIndex];\n }\n\n if (this.currentSpeed !== newSpeed) {\n this.videoPlayer?.setPlaySpeed(newSpeed);\n } else {\n this.videoPlayer?.setPlaySpeed(speeds[0]);\n }\n }\n\n private moreItemMenuClosed = () => {\n this.isMoreMenuOpen = false;\n };\n\n private generateUniqueKeyForContent(content?: Content): IGuid {\n return content?.id ?? SafeGuid.EMPTY;\n }\n\n private initTimeline() {\n if (this.content && this.timeline) {\n let entityId!: IGuid;\n // inform the timeline about the source & camera entities\n if (this.content.contextContent?.source) {\n entityId = SafeGuid.parse(this.content.contextContent.source);\n }\n\n const cameraId = SafeGuid.parse(this.content.source);\n\n // setup privileges\n this.timeline.allowPlayback = this.hasPlaybackVideoPrivilege;\n\n // refesh the timeline by providing it entities to query\n this.timeline.refresh(cameraId, entityId, this.entityTimezone);\n }\n }\n\n // switch in playback mode to near live position\n private switchToNearLive(): void {\n this.videoPlayer?.seek(new Date());\n }\n\n private async downloadAsync(tokensString?: string) {\n // ensure the user has the export video privilege\n if (this.hasExportVideoPrivilege) {\n let handled = false;\n const filename = this.content?.title as string;\n\n // if an argument is specified, use it\n if (tokensString) {\n const tokens = tokensString.split(' ');\n if (tokens.length === 2) {\n // tslint:disable-next-line: radix\n const quanta = Number.parseInt(tokens[0]);\n const units = tokens[1] as moment.unitOfTime.DurationConstructor;\n if (!Number.isNaN(quanta) && units) {\n const endTime = moment().toDate();\n const startTime = moment(endTime).subtract(quanta, units).toDate();\n if (this.videoPlayer) {\n const model2 = new ExportMp4Request({\n cameraId: new SafeGuid(this.entityId),\n timeRange: new SerializableDateTimeSpan({\n end: endTime.toISOString(),\n start: startTime.toISOString(),\n }),\n });\n await this.videoExportService.exportAsync(model2, filename);\n handled = true;\n }\n }\n }\n }\n\n if (!handled) {\n // ExportVideoComponent should need Timezone to display times accordingly\n // only use params for entityId. ExportVideoComponent does public properties that can be set.\n const params: GenMeltedModalParams = {};\n\n if (this.timeline) {\n params.entityId = this.entityId;\n\n // try to extract the looping range\n const range = this.timeline.getLoop();\n if (this.entityCacheTask) {\n const cameraEntity = (await this.entityCacheTask.getEntityAsync(CameraEntity, this.entityId, true)) as CameraEntity;\n if (cameraEntity) {\n this.entityTimezone = await this.timeService.retrieveTimezoneAsync(cameraEntity.timeZoneId);\n\n let startTime;\n let endTime;\n\n if (range.start && range.end) {\n startTime = this.timeService.formatTime(range.start, this.timeFormat, true, false, this.entityTimezone, false);\n endTime = this.timeService.formatTime(range.end, this.timeFormat, true, false, this.entityTimezone, false);\n } else {\n startTime = this.timeService.formatTime(this.timeline.startTime, this.timeFormat, true, false, this.entityTimezone, false);\n endTime = this.timeService.formatTime(this.timeline.endTime, this.timeFormat, true, false, this.entityTimezone, false);\n }\n\n const exportVideoModal = this.fullscreenService.displayModal(ExportVideoComponent, params);\n\n exportVideoModal.form.controls.startTime.setValue(startTime);\n exportVideoModal.form.controls.endTime.setValue(endTime);\n\n handled = true;\n }\n }\n }\n }\n }\n }\n\n private toggleRecording() {\n // ensure we have the privilege\n if (this.hasStartRecordingPrivilege) {\n const commandContext: CommandContext = { type: ContextTypes.Content, data: this.content };\n // we want to force execution on this component to prevent the command being routed to the active tile when the user executed the command in the side pane.\n this.commandsService.forceExecuteCommand(SharedCommands.StartStopRecording, commandContext, undefined, this.hostElement?.nativeElement);\n }\n }\n\n private setMoreMenuItemSource() {\n this.moreMenuItemSource = [];\n\n if (this.hasExportVideoPrivilege) {\n this.moreMenuItemSource.push({\n id: 'download',\n text: this.translateService.instant('STE_BUTTON_DOWNLOAD') as string,\n icon: MeltedIcon.Download,\n actionItem: {\n execute: () => this.downloadAsync(),\n isAllowed: () => this.hasExportVideoPrivilege,\n },\n });\n }\n }\n\n private updateRecordingState(state: string) {\n this.recordingStatesSubject.next({\n isRecording: CameraHelper.isRecording(state),\n isRecordingLocked: CameraHelper.isRecordingLocked(state),\n });\n }\n\n private getRecordColor(): string {\n if (this.recordingStates.isRecording) return this.Color.Fragola;\n return '';\n }\n\n private getRecordIcon(): MeltedIcon {\n return this.recordingStates.isRecordingLocked ? MeltedIcon.RecordLocked : MeltedIcon.Record;\n }\n\n private getRecordTooltip(): string {\n let resourceId: string | undefined;\n if (this.recordingStates.isRecording) resourceId = this.recordingStates.isRecordingLocked ? 'STE_TOOLTIP_RECORDING_ON_LOCKED' : 'STE_ACTION_STOPRECORDING';\n else resourceId = this.recordingStates.isRecordingLocked ? 'STE_TOOLTIP_RECORDING_OFF_LOCKED' : 'STE_BUTTON_STARTRECORDING';\n return this.translateService.instant(resourceId) as string;\n }\n\n private updateTime(frameTime: Date | null | undefined) {\n // ensure the player is started to prevent exceptions\n if (this.videoPlayer?.isStarted !== true) return;\n\n let newFrameTime = frameTime;\n if (!newFrameTime) {\n newFrameTime = this.videoPlayer?.lastFrameTime;\n }\n\n let text = this.translateService.instant('STE_LABEL_VIDEOTIMELINE_SEEKING') as string;\n let relativeTime = '';\n\n if (!this.isLive) {\n if (newFrameTime && newFrameTime > VideoControlsComponent.MinDate) {\n text = this.timeService.formatTime(newFrameTime, 'LTS', true, true, this.entityTimezone);\n relativeTime = this.timeService.formatRelative(newFrameTime);\n }\n } else {\n text = this.translateService.instant('STE_LABEL_VIDEOTIMELINE_LIVE') as string;\n }\n\n this.timestampText = text;\n this.relativeTimeText = relativeTime;\n }\n\n private async updateFromCameraCapabilities() {\n const scClient = this.scClientService?.scClient;\n if (scClient) {\n this.entityCacheTask = scClient.buildEntityCache([CameraEntityFields.timeZoneIdField, CameraEntityFields.recordingStateField]);\n const cameraEntity = (await this.entityCacheTask.getEntityAsync(CameraEntity, this.entityId, true)) as CameraEntity;\n if (cameraEntity) {\n const capabilities = await cameraEntity.getFeatureCapabilitiesAsync();\n if (!capabilities) {\n return;\n }\n const bookmarkCapabilities = capabilities.firstOrDefault((c) => c?.id === CameraFeatureCapabilties.Bookmarks);\n this.canAddBookmark = bookmarkCapabilities?.supported ?? false;\n\n const playbackCapabilities = capabilities.firstOrDefault((c) => c?.id === CameraFeatureCapabilties.Playback);\n this.isPlaybackCapabilitySupported = playbackCapabilities?.supported ?? false;\n }\n }\n }\n\n //#endregion\n\n /* eslint-disable @typescript-eslint/member-ordering */\n\n //#region Event Handlers\n\n private handleGotoTime(modalAction: MeltedModalAction, timestamp: string) {\n if (this.videoPlayer && timestamp && modalAction === 'default') {\n let timezone: ITimezoneInfo | undefined;\n if (this.timeService.useDeviceTimezone) {\n timezone = this.entityTimezone;\n }\n // The received timestamp will be in computer local time. We need to converted it to the local time of the unit's timezone\n const seekTime = this.timeService.convertToTimeZone(timestamp, timezone).toDate();\n this.videoPlayer.seek(seekTime);\n }\n }\n\n public async onMoreMenuItemClick(clickedItem: ContextMenuItem): Promise {\n switch (clickedItem?.id) {\n case 'record':\n this.toggleRecording();\n break;\n case 'download':\n await this.downloadAsync();\n break;\n default:\n break;\n }\n }\n\n private onRenderingRefresh() {\n this.updateTime(null);\n }\n\n private onPlayerModeChangedHandler = (event: PlayerModeChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.isLive = event.playerMode === PlayerMode.live;\n this.changeDetectorRef.markForCheck();\n this.updateTime(null);\n });\n };\n\n private onPlayerSpeedChangedHandler = (event: PlaySpeedChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.currentSpeed = event.playSpeed;\n // determine if we are in slow motion motion (between -1 and 1)\n this.isSlowMotion = this.currentSpeed > -1 && this.currentSpeed < 1;\n this.changeDetectorRef.markForCheck();\n });\n };\n\n private onPlayerStateChangedHandler = (event: PlayerStateChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.playerStateChangedSubject.next(event.playerState);\n this.isPaused = event.playerState === PlayerState.Paused;\n this.changeDetectorRef.markForCheck();\n this.updateTime(null);\n });\n };\n\n private updateIsCameraStreaming(playerState: PlayerState) {\n this.isCameraStreaming = [\n PlayerState.BeginReached,\n PlayerState.Rewinding,\n PlayerState.Playing,\n PlayerState.Paused,\n PlayerState.EndReached,\n PlayerState.Buffering,\n PlayerState.NoVideoSequenceAvailable,\n ].includes(playerState);\n this.changeDetectorRef.markForCheck();\n }\n\n private onPlayerAudioAvailabilityChangedHandler = (event: AudioAvailabilityChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.isAudioAvailable = event.isAudioAvailable;\n this.computeRightButtonsVisibility(this.lastRightBarAvailableWidth);\n this.changeDetectorRef.markForCheck();\n });\n };\n\n private onPlayerAudioStateChangedHandler = (event: AudioStateChangeEvent): void => {\n // process updates in Angular's zone\n this.zone.runGuarded(() => {\n this.isListening = event.isAudioEnabled;\n this.changeDetectorRef.markForCheck();\n });\n };\n\n //#endregion\n\n //#region TileButtons\n\n private enumToArray(enumToConvert: Enum): string[] {\n return (\n Object.keys(enumToConvert)\n .filter((value) => isNaN(Number(value)))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n .map((key) => enumToConvert[key] as string)\n );\n }\n\n public getColor(button: TileButton): string {\n const color = typeof button.color === 'function' ? button.color() : button.color;\n return color ?? '';\n }\n\n public getIcon(button: TileButton): MeltedIcon {\n return typeof button.icon === 'function' ? button.icon() : button.icon;\n }\n\n public getId(button: TileButton): string {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return typeof button.id === 'function' ? (button.id?.() as string) : (button.id as string);\n }\n\n public getText(button: TileButton): string {\n return typeof button.text === 'function' ? button.text() : button.text;\n }\n\n public isVisible(button: TileButton): boolean {\n return !button.isVisible || button.isVisible();\n }\n\n public execute(button: TileButton, event?: Event): void {\n button.execute(event);\n }\n\n public isDisabled(button: TileButton): boolean {\n return button.isDisabled ? button.isDisabled() : false;\n }\n\n public computeLeftButtonsVisibility(newWidth: number): void {\n this.lastLeftBarAvailableWidth = newWidth;\n\n const { visibleButtons, additionalButtons } = this.getVisibleAndAdditionalButtons(this.leftBarAllowedButtons, this.leftBarButtonsPriority, newWidth);\n this.leftBarVisibleButtons = visibleButtons;\n this.leftBarAdditionalButtons = additionalButtons;\n\n this.computeButtonsVisibilityDebounced.next();\n }\n\n public computeRightButtonsVisibility(newWidth: number): void {\n this.lastRightBarAvailableWidth = newWidth;\n\n // Save space for the More button\n const { visibleButtons, additionalButtons } = this.getVisibleAndAdditionalButtons(this.rightBarAllowedButtons, this.rightBarButtonsPriority, newWidth - this.BUTTON_WIDTH);\n\n this.rightBarVisibleButtons = visibleButtons;\n this.rightBarAdditionalButtons = additionalButtons;\n\n this.computeButtonsVisibilityDebounced.next();\n }\n\n private computeButtonsVisibility() {\n this.setMoreMenuItemSource();\n this.moreMenuItemSource = [...this.moreMenuItemSource, ...this.leftBarAdditionalButtons, ...this.rightBarAdditionalButtons];\n }\n\n private buildMoreMenu() {\n if (!this.moreMenu) {\n this.moreMenu = this.contextMenuFactory.buildMenu(this.viewContainerRef, this.moreMenuItemSource, `#video-controls-more-${this.componentId}`);\n this.moreMenuCloseSubscription = fromEvent(this.moreMenu.location.nativeElement as HTMLElement, 'didClose')\n .pipe(untilDestroyed(this))\n .subscribe(this.moreItemMenuClosed);\n }\n }\n\n private destroyMoreMenu() {\n if (this.moreMenu) {\n this.moreMenuCloseSubscription?.unsubscribe();\n this.moreMenu.destroy();\n this.moreMenu = undefined;\n }\n }\n\n // Returns the list of buttons that the user has the right to use/see\n private getAllowedButtons(buttons: Array): Array {\n const allowedButtons = [];\n\n for (const button of buttons) {\n if (!button.isAllowed || button.isAllowed?.()) {\n allowedButtons.push(button);\n }\n }\n\n return allowedButtons;\n }\n\n // Returns a tuple of the visible buttons on the player bar and the ones that will be collapsed into the More button\n private getVisibleAndAdditionalButtons(allowedButtons: Array, buttonsByPriority: Array, availableWidth: number) {\n const visibleButtons: Array = [];\n const additionalButtons: Array = [];\n let width = availableWidth;\n\n for (const buttonByPriority of buttonsByPriority) {\n const button = allowedButtons.find((x) => x.id === buttonByPriority);\n\n if (!button) {\n continue;\n }\n\n if (!button.isVisible || button.isVisible?.()) {\n // If the button fits\n if (this.BUTTON_WIDTH < width) {\n visibleButtons.push(button);\n width -= this.BUTTON_WIDTH;\n } else {\n additionalButtons?.push({\n id: button.id as string,\n text: this.getText(button),\n icon: this.getIcon(button),\n actionItem: {\n execute: () => button.execute(),\n },\n });\n }\n }\n }\n\n return { visibleButtons, additionalButtons };\n }\n\n private initializeButtons() {\n this.leftBarAllowedButtons = this.getAllowedButtons(this.getLeftBarButtons());\n this.rightBarAllowedButtons = this.getAllowedButtons(this.getRightBarButtons());\n\n this.leftBarButtonsPriority = this.enumToArray(VideoButtonsLeftBar);\n this.rightBarButtonsPriority = this.enumToArray(VideoButtonsRightBar);\n\n this.computeLeftButtonsVisibility(this.lastLeftBarAvailableWidth);\n this.computeRightButtonsVisibility(this.lastRightBarAvailableWidth);\n }\n\n // To add a new button on the left player bar, add it to this list\n // To set it's priority (used to decide when the button is collapsed), add it to `buttons.enum.ts`\n private getLeftBarButtons(): Array {\n return [\n {\n id: VideoButtonsLeftBar.Record,\n text: () => this.getRecordTooltip(),\n icon: () => this.getRecordIcon(),\n color: () => this.getRecordColor(),\n execute: this.toggleRecording.bind(this),\n isVisible: () => this.isLive,\n isAllowed: () => this.hasStartRecordingPrivilege && !this.recordingStates.isRecordingLocked,\n isDisabled: () => !this.isCameraStreaming || this.recordingStates.isRecordingLocked,\n },\n {\n id: VideoButtonsLeftBar.PlayOrPause,\n text: () => (this.isPaused ? this.translateService.instant('STE_BUTTON_RESUMEVIDEO') : this.translateService.instant('STE_BUTTON_PAUSEVIDEO')) as string,\n icon: () => (this.isPaused ? MeltedIcon.Play : MeltedIcon.Pause),\n color: undefined,\n execute: this.togglePlayingState.bind(this),\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsLeftBar.JumpBack,\n text: this.translateService.instant('STE_BUTTON_JUMPBACKWARD') as string,\n icon: MeltedIcon.Rewind15,\n color: undefined,\n execute: () => this.jumpBackAsync(15),\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsLeftBar.JumpForward,\n text: this.translateService.instant('STE_BUTTON_JUMPFORWARD') as string,\n icon: MeltedIcon.Forward15,\n color: undefined,\n execute: () => this.jumpForwardAsync(15),\n isVisible: () => !this.isLive,\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsLeftBar.Rewind,\n text: this.translateService.instant('STE_BUTTON_REWINDVIDEO') as string,\n icon: MeltedIcon.Rewind,\n color: undefined,\n execute: this.rewind.bind(this),\n isVisible: () => !this.isLive,\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming || this.isSlowMotion, //Bug49903: Smooth reverse isnt supported in browsers according to Marmot\n },\n {\n id: VideoButtonsLeftBar.FastForward,\n text: this.translateService.instant('STE_BUTTON_FASTFORWARD') as string,\n icon: MeltedIcon.FastForward,\n color: undefined,\n execute: this.fastForward.bind(this),\n isVisible: () => !this.isLive,\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsLeftBar.SlowMotion,\n text: this.translateService.instant('STE_BUTTON_SLOWMOTION') as string,\n icon: () => (this.isSlowMotion ? MeltedIcon.SlowOff : MeltedIcon.Slow),\n color: undefined,\n execute: this.slowMotion.bind(this),\n isVisible: () => !this.isLive,\n isAllowed: () => this.canShowPlayback,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsLeftBar.GoLive,\n text: this.translateService.instant('STE_BUTTON_GOLIVE') as string,\n icon: MeltedIcon.ArrowRight,\n color: undefined,\n execute: this.playLive.bind(this),\n isVisible: () => !this.isLive,\n isAllowed: () => this.hasLiveVideoPrivilege,\n isDisabled: () => !this.isCameraStreaming,\n },\n ];\n }\n\n // To add a new button on the right player bar, add it to this list\n // To set it's priority (used to decide when the button is collapsed), add it to `buttons.enum.ts`\n private getRightBarButtons(): Array {\n let hasAtLeastOnePtzPrivilege = false;\n if (this.content) {\n const priv = new PtzPrivileges(this.content);\n hasAtLeastOnePtzPrivilege = priv.hasAtLeastOnePtzPrivilege();\n }\n\n return [\n {\n id: VideoButtonsRightBar.Expand,\n text: () =>\n (this.dataContext?.isExpanded ? this.translateService.instant('STE_BUTTON_RESTORETILE') : this.translateService.instant('STE_BUTTON_MAXIMIZETILE')) as string,\n icon: () => (this.dataContext?.isExpanded ? MeltedIcon.Collapse : MeltedIcon.Expand),\n color: undefined,\n execute: this.expandTile.bind(this),\n isVisible: () => this.isWithinTile,\n },\n {\n id: VideoButtonsRightBar.Bookmarks,\n text: this.translateService.instant('STE_BUTTON_ADDBOOKMARK') as string,\n icon: MeltedIcon.Bookmark,\n color: undefined,\n execute: () => this.addBookmark(),\n isAllowed: () => this.hasBookmarkPrivilege && this.canAddBookmark,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsRightBar.SaveSnapshot,\n text: this.translateService.instant('STE_BUTTON_SAVESNAPSHOT') as string,\n icon: MeltedIcon.Snapshot,\n color: undefined,\n execute: this.takeSnapshot.bind(this),\n isAllowed: () => this.hasSaveSnapshotsPrivilege,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsRightBar.Audio,\n text: () => (this.isListening ? this.translateService.instant('STE_BUTTON_STOP_LISTENING') : this.translateService.instant('STE_BUTTON_START_LISTENING')) as string,\n icon: () => (this.isListening ? MeltedIcon.VolumeLoud : MeltedIcon.VolumeMute),\n color: undefined,\n execute: this.toggleListen.bind(this),\n isVisible: () => this.isAudioAvailable && this.canListen,\n isDisabled: () => !this.isCameraStreaming,\n },\n {\n id: VideoButtonsRightBar.PTZControls,\n text: this.translateService.instant('STE_LABEL_PTZ_ANALOG_PTZ') as string,\n icon: MeltedIcon.Joystick,\n color: undefined,\n execute: (event?: Event) => this.togglePtzControls(event),\n // TODO : Remove when technical debt #57297 is done\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isVisible: () => this.isLive && hasAtLeastOnePtzPrivilege && (this.dataContext as any)?.displayContext !== DisplayContext.Sidepane,\n isAllowed: () => this.isPtz && hasAtLeastOnePtzPrivilege,\n isDisabled: () => !this.isCameraStreaming,\n },\n ];\n }\n //#endregion\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Color, GenToastService, MeltedIcon, MeltedModalAction } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isString } from 'lodash-es';\nimport moment from 'moment';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport HttpStatusCode from 'RestClient/Client/Enumerations/HttpStatusCode';\nimport { CameraEntityFields, ICameraEntity } from 'RestClient/Client/Interface/ICameraEntity';\nimport { modificationHandlerField } from 'RestClient/Client/Interface/IEntityCacheTask';\nimport { CameraEntity } from 'RestClient/Client/Model/Video/CameraEntity';\nimport { Deferred } from 'RestClient/Helpers/Helpers';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { GuidMap, GuidSet, IGuid, SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { SharedContentFields } from '@modules/shared/enumerations/shared-content-fields';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { TimeService } from '@modules/shared/services/time/time.service';\nimport { Entity } from 'RestClient/Client/Model/Entity';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { FullscreenService } from '@modules/shared/services/fullscreen/fullscreen.service';\nimport { CameraFeatureCapabilties } from 'RestClient/Client/Enumerations/CameraFeatureCapabilties';\nimport { SharedCommands } from '../../shared/enumerations/shared-commands';\nimport {\n CommandBindings,\n CommandDisplay,\n CommandsService,\n COMMANDS_SERVICE,\n EntityCommandRequirements,\n FEATURES_SERVICE,\n} from '../../shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { CommandArgs, CommandDescriptor } from '../../shared/services/commands/command-provider-base';\nimport { EntityCommandsUsageContext } from '../../shared/services/commands/commands-usage/entity-commands-usage-context';\nimport { EntityCommandContext } from '../../shared/services/commands/entity-command-context';\nimport { EntityCommandProviderBase, ExecuteEntityCommandData } from '../../shared/services/commands/entity-command-provider-base';\nimport { LanguageService } from '../../shared/services/language/language.service';\nimport { BookmarkComponent } from '../components/bookmark/bookmark.component';\nimport { ExportVideoComponent } from '../components/export-video/export-video.component';\nimport { VideoContentTypes } from '../enumerations/video-content-types';\nimport { CameraHelper } from '../utilities/camerahelper';\nimport { VideoExportService } from './video-export.service';\n\ninterface AddBookmarkSpecificData {\n entityId: IGuid;\n message?: string;\n timestamp?: Date;\n playback?: boolean;\n}\n\ninterface InternalRecordingState {\n isLocked: boolean;\n isRecording: boolean;\n}\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class CameraCommandProvider extends EntityCommandProviderBase {\n protected get commandDescriptors(): Map {\n if (!this.internalCommandDescriptors) {\n const descriptors = new GuidMap();\n descriptors.set(\n SharedCommands.AddBookmark,\n this.createCameraCommandDescriptor(\n SharedCommands.AddBookmark,\n 'STE_BUTTON_ADDBOOKMARK',\n MeltedIcon.Bookmark,\n this.fillCommandRequirements({ requiredPrivileges: new GuidSet([KnownPrivileges.addBookmarkPrivilege]) }),\n 'Control.B'\n )\n );\n descriptors.set(\n SharedCommands.ExportVideo,\n this.createCameraCommandDescriptor(\n SharedCommands.ExportVideo,\n 'STE_BUTTON_DOWNLOAD',\n MeltedIcon.Download,\n this.fillCommandRequirements({ requiredPrivileges: new GuidSet([KnownPrivileges.exportVideoPrivilege]) }),\n 'D'\n )\n );\n // );\n // descriptors.set(\n // SharedCommands.saveSnapshot,\n // this.createCameraCommandDescriptor(\n // SharedCommands.saveSnapshot,\n // 'STE_BUTTON_SAVESNAPSHOT',\n // MeltedIcon.Snapshot,\n // undefined,\n // this.createCommandRequirements({ requiredPrivileges: [KnownPrivileges.saveAndPrintSnapshotsPrivilege] })\n // )\n // );\n descriptors.set(\n SharedCommands.StartStopRecording,\n this.createCameraCommandDescriptor(\n SharedCommands.StartStopRecording,\n 'STE_BUTTON_STARTRECORDING',\n MeltedIcon.Record,\n this.fillCommandRequirements({ requiredPrivileges: new GuidSet([KnownPrivileges.recordManuallyPrivilege]) })\n )\n );\n this.internalCommandDescriptors = descriptors;\n }\n\n return this.internalCommandDescriptors;\n }\n\n public get requiredEntityFields(): Set {\n return new Set([...super.requiredEntityFields, CameraEntityFields.recordingStateField]);\n }\n\n public get requiredFeatures(): Set {\n return new GuidSet([...super.requiredFeatures, KnownFeatures.videoId]);\n }\n\n constructor(\n @Inject(COMMANDS_SERVICE) commandsService: CommandsService,\n scClientService: SecurityCenterClientService,\n languageService: LanguageService,\n @Inject(FEATURES_SERVICE) featuresService: FeaturesService,\n translateService: TranslateService,\n private timeService: TimeService,\n private toastService: GenToastService,\n private videoExportService: VideoExportService,\n protected advancedSettingsService: AdvancedSettingsService,\n private fullscreenService: FullscreenService\n ) {\n super(commandsService, scClientService, languageService, featuresService, translateService, advancedSettingsService);\n }\n\n public async getAvailableCommandIdsAsync(commandContext: EntityCommandContext): Promise {\n const commandIds: IGuid[] = [];\n const commandArgs = this.extractArgs(commandContext);\n\n // Prefetch privileges\n await this.prefetchPrivileges(commandContext, commandArgs);\n\n if (await this.isAddBookmarkAvailableAsync(commandContext, commandArgs)) {\n const cameraEntity = await this.extractCameraEntity(commandContext);\n if (cameraEntity) {\n const caps = await cameraEntity.getFeatureCapabilitiesAsync();\n const bookmarkCap = caps?.firstOrDefault((c) => c.id === CameraFeatureCapabilties.Bookmarks);\n if (bookmarkCap?.supported) {\n commandIds.push(SharedCommands.AddBookmark);\n }\n }\n }\n\n if (await this.isExportVideoAvailableAsync(commandContext, commandArgs)) {\n commandIds.push(SharedCommands.ExportVideo);\n }\n // TODO FM: Once possible, saveSnapshot should be handled here instead of in the VideoControlComponent\n // if (await this.isSaveSnapshotAvailableAsync(commandContext, args)) {\n // commandIds.push(SharedCommands.saveSnapshot);\n // }\n if (await this.isStartStopRecordingAvailableAsync(commandContext, commandArgs)) {\n this.configureStartStopRecordingInvalidatesAsync(commandContext as EntityCommandsUsageContext).fireAndForget();\n commandIds.push(SharedCommands.StartStopRecording);\n }\n\n return commandIds;\n }\n\n protected fillCommandBindings(bindings: CommandBindings): void {\n bindings.addCommand({\n commandId: SharedCommands.AddBookmark,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeAddBookmark(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isAddBookmarkAvailableAsync(entityCommandContext), commandContext),\n });\n bindings.addCommand({\n commandId: SharedCommands.ExportVideo,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeExportAsync(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsCommandAvailableAsync((entityCommandContext) => this.isExportVideoAvailableAsync(entityCommandContext), commandContext),\n });\n // TODO FM: Once possible, saveSnapshot should be handled here instead of in the VideoControlComponent\n // bindings.addCommand({\n // commandId: SharedCommands.saveSnapshot,\n // executeCommandHandler: (executeCommandData) => this.safeExecuteCommand((entityExecuteCommandData) => this.executeSaveSnapshot(entityExecuteCommandData), executeCommandData),\n // isCommandAvailableHandler: (commandContext) => this.safeIsCommandAvailableAsync((entityCommandContext) => this.isSaveSnapshotAvailableAsync(entityCommandContext), commandContext),\n // });\n bindings.addCommand({\n commandId: SharedCommands.StartStopRecording,\n executeCommandHandler: (executeCommandData) =>\n this.safeExecuteEntityCommand((entityExecuteCommandData) => this.executeStartStopRecording(entityExecuteCommandData), executeCommandData),\n isCommandAvailableHandler: (commandContext) =>\n this.safeIsEntityCommandAvailableAsync((entityCommandContext) => this.isStartStopRecordingAvailableAsync(entityCommandContext), commandContext),\n canExecuteCommandHandler: (commandContext) =>\n this.safeCanExecuteEntityCommandAsync((entityCommandContext) => this.canStartStopRecordingAsync(entityCommandContext), commandContext),\n getCommandDisplayHandler: (commandContext) =>\n this.safeGetEntityCommandDisplayAsync((entityCommandContext) => this.getStartStopRecordingDisplayAsync(entityCommandContext), commandContext),\n });\n }\n\n protected fillCommandRequirements(requirements: EntityCommandRequirements): EntityCommandRequirements {\n if (!requirements.supportedContentTypes) {\n requirements.supportedContentTypes = new GuidSet([VideoContentTypes.Event, VideoContentTypes.Video]);\n }\n\n if (!requirements.supportedEntityTypes) {\n requirements.supportedEntityTypes = new Set([EntityTypes.Cameras]);\n }\n\n return super.fillCommandRequirements(requirements);\n }\n\n private async addBookmarkAsync(cameraEntity: ICameraEntity, message: string, timestamp: Date, playback: boolean): Promise {\n const response = await cameraEntity.addBookmarkAsync(message, timestamp, playback);\n // TODO PROTECT VIDEO\n if (response && response.statusCode === HttpStatusCode.OK) {\n const notification = this.translateService.instant('STE_LABEL_BOOKMARKADDED') as string;\n this.toastService.show({ text: notification, flavorCustomColor: Color.Pistacchio });\n } else {\n const notification = this.translateService.instant('STE_MESSAGE_ERROR_ERRORADDINGBOOKMARK') as string;\n this.toastService.show({ text: notification, flavorCustomColor: Color.Fragola });\n }\n }\n\n private async canStartStopRecordingAsync(commandContext: EntityCommandContext): Promise {\n const recordingState = await this.getRecordingStateAsync(commandContext);\n if (recordingState) {\n return !recordingState.isLocked;\n }\n return false;\n }\n\n private async configureStartStopRecordingInvalidatesAsync(commandContext: EntityCommandsUsageContext): Promise {\n if (commandContext.entityCache && commandContext.invalidateDisplay) {\n const cameraEntity = await this.extractCameraEntity(commandContext);\n if (cameraEntity) {\n commandContext.entityCache\n .detectFieldChangeAsync(\n cameraEntity,\n () => {\n const _ = cameraEntity.recordingState;\n },\n (() => {\n commandContext.invalidateDisplay(SharedCommands.StartStopRecording);\n commandContext.invalidateCanExecute(SharedCommands.StartStopRecording);\n return new Deferred(true).promise;\n }) as modificationHandlerField\n )\n .fireAndForget();\n }\n }\n }\n\n private createCameraCommandDescriptor(\n commandId: IGuid,\n nameResourceId: string,\n icon: MeltedIcon,\n requirements?: EntityCommandRequirements,\n keyBinding?: string\n ): CommandDescriptor {\n return {\n id: commandId,\n nameResourceId,\n icon,\n groupNameResourceId: 'STE_ENTITY_CAMERA',\n groupIcon: MeltedIcon.Camera,\n keyBinding,\n requirements,\n };\n }\n\n private executeAddBookmark(executeCommandData: ExecuteEntityCommandData): void {\n this.executeAddBookmarkAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeAddBookmarkAsync(commandContext: EntityCommandContext): Promise {\n const args = this.extractArgs(commandContext);\n const speficicData = this.extractAddBookmarkSpecificData(commandContext, args);\n if (speficicData) {\n args.entityId = speficicData.entityId;\n }\n\n const cameraEntity = await this.getEntityAsync(CameraEntity, undefined, args.entity, args.entityId, commandContext.entityCache);\n if (cameraEntity) {\n const timestamp: Date = speficicData?.timestamp ?? new Date();\n const message = speficicData?.message;\n const playback = speficicData?.playback ?? false;\n\n const now = moment();\n const diff = moment(now).diff(timestamp);\n const isLive = diff < 5000; // if the timestamp is less than 5 seconds ago, consider it live\n let startedRecording = false;\n // in live mode, start the recording before adding the bookmark\n if (isLive) {\n // only start recording if the camera was not already recording\n const isRecording = CameraHelper.isRecording(cameraEntity.recordingState);\n const isRecordingLocked = CameraHelper.isRecordingLocked(cameraEntity.recordingState);\n if (!isRecording && !isRecordingLocked) {\n cameraEntity.startRecordingAsync().fireAndForget();\n startedRecording = true;\n }\n }\n\n if (message) {\n await this.addBookmarkAsync(cameraEntity, message, timestamp, playback);\n } else {\n const bookmarkComponent = this.fullscreenService.displayModal(BookmarkComponent, { entityId: cameraEntity.id, timestamp });\n\n if (bookmarkComponent) {\n bookmarkComponent.genModalAction.pipe(untilDestroyed(this)).subscribe(async (modalAction: MeltedModalAction) => {\n if (modalAction === 'default') {\n await this.addBookmarkAsync(cameraEntity, bookmarkComponent.message, timestamp, playback);\n } else if (startedRecording) {\n // if we started the recording automatically and the user canceled, stop recording\n cameraEntity.stopRecordingAsync().fireAndForget();\n }\n });\n }\n }\n }\n }\n\n private async executeExportAsync(executeCommandData: ExecuteEntityCommandData): Promise {\n const args = this.extractArgs(executeCommandData.commandContext);\n const eventContent = args.content;\n\n let source = args.entityId;\n let filename = '';\n let startTime = moment.utc(moment()).toISOString() || '';\n if (eventContent) {\n if (eventContent.parameters?.hasField(SharedContentFields.Timestamp)) {\n // ExportVideoComponent should need Timezone to display times accordingly\n let timezone: string | undefined;\n if (eventContent.parameters?.hasField(SharedContentFields.Timezone)) {\n timezone = eventContent.parameters.getField(SharedContentFields.Timezone);\n }\n const startTimestamp = eventContent.parameters.getField(SharedContentFields.Timestamp);\n // Export video 5 seconds before the event timestamp. Would be nice to use the archiver 'Time to record before an event'\n const preStartTimestamp = moment(startTimestamp).subtract(5, 'second');\n startTime = this.timeService.formatTime(preStartTimestamp.toISOString(), 'YYYY-MM-DDTHH:mm:ss.SSSZ', true, false, timezone, false);\n filename = eventContent.description;\n }\n source = SafeGuid.parse(eventContent.source);\n }\n\n if (!filename && source) {\n const entity = await this.scClient.getEntityAsync(Entity, source);\n if (entity) {\n filename = entity?.name;\n }\n }\n\n const exportVideoModal = this.fullscreenService.displayModal(ExportVideoComponent, {\n entityId: source ?? SafeGuid.EMPTY,\n });\n\n exportVideoModal.form.controls.filename.setValue(filename);\n\n executeCommandData.isHandled = true;\n }\n\n private executeStartStopRecording(executeCommandData: ExecuteEntityCommandData): void {\n this.executeStartStopRecordingAsync(executeCommandData.commandContext).fireAndForget();\n executeCommandData.isHandled = true;\n }\n\n private async executeStartStopRecordingAsync(commandContext: EntityCommandContext): Promise {\n const cameraEntity = await this.extractCameraEntity(commandContext);\n if (cameraEntity) {\n const recordingState = await this.getRecordingStateAsync(commandContext, cameraEntity);\n if (recordingState) {\n if (recordingState.isRecording) {\n await cameraEntity.stopRecordingAsync();\n } else {\n await cameraEntity.startRecordingAsync();\n }\n }\n }\n }\n\n private extractAddBookmarkSpecificData(commandContext: EntityCommandContext, commandArgs?: CommandArgs): AddBookmarkSpecificData | undefined {\n let args = commandArgs;\n if (!args) {\n args = this.extractArgs(commandContext);\n }\n\n let entityId: IGuid | undefined = args.entityId;\n let timestamp: Date | undefined;\n let message: string | undefined;\n\n if (args.specificData) {\n const argsData = args.specificData as AddBookmarkSpecificData;\n entityId = argsData.entityId;\n timestamp = argsData.timestamp;\n message = argsData.message;\n } else if (args.content?.parameters) {\n // try to extract the timestamp from the content\n timestamp = args.content?.parameters.getFieldDate('timestamp');\n }\n\n if (!isNonEmptyGuid(entityId)) {\n return undefined;\n }\n\n const data: AddBookmarkSpecificData = { entityId };\n if (isString(message)) {\n data.message = message;\n }\n if (timestamp instanceof Date) {\n data.timestamp = timestamp;\n data.playback = true;\n }\n return data;\n }\n\n private async extractCameraEntity(commandContext: EntityCommandContext): Promise {\n return this.extractEntityAsync(CameraEntity, commandContext);\n }\n\n private async getRecordingStateAsync(commandContext: EntityCommandContext, cameraEntity?: ICameraEntity): Promise {\n const entity = cameraEntity ?? (await this.extractCameraEntity(commandContext));\n if (!entity) {\n return;\n }\n\n return {\n isLocked: CameraHelper.isRecordingLocked(entity.recordingState),\n isRecording: CameraHelper.isRecording(entity.recordingState),\n };\n }\n\n private async getStartStopRecordingDisplayAsync(commandContext: EntityCommandContext): Promise {\n const recordingState = await this.getRecordingStateAsync(commandContext);\n if (recordingState) {\n let resourceId = '';\n let icon = MeltedIcon.Record;\n if (recordingState.isRecording) {\n if (recordingState.isLocked) {\n resourceId = 'STE_TOOLTIP_RECORDING_ON_LOCKED';\n icon = MeltedIcon.RecordLocked;\n } else {\n resourceId = 'STE_ACTION_STOPRECORDING';\n }\n } else {\n if (recordingState.isLocked) {\n resourceId = 'STE_TOOLTIP_RECORDING_OFF_LOCKED';\n icon = MeltedIcon.RecordLocked;\n } else {\n resourceId = 'STE_BUTTON_STARTRECORDING';\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n return { name: () => this.translateService?.instant(resourceId) as string, icon };\n }\n }\n\n private async isAddBookmarkAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(SharedCommands.AddBookmark, commandContext, commandArgs);\n }\n\n private async isExportVideoAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(SharedCommands.ExportVideo, commandContext, commandArgs);\n }\n\n private async isSaveSnapshotAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(SharedCommands.SaveSnapshot, commandContext, commandArgs);\n }\n\n private async isStartStopRecordingAvailableAsync(commandContext: EntityCommandContext, commandArgs?: CommandArgs): Promise {\n return await this.areCommandRequirementsMetAsync(SharedCommands.StartStopRecording, commandContext, commandArgs);\n }\n}\n","\n \n \n \n\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Inject, OnDestroy, ViewContainerRef } from '@angular/core';\nimport { Icon, ButtonFlavor } from '@genetec/gelato';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { HideableComponent } from '@modules/shared/components/hideable/hideable.component';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { InternalContentPluginDescriptor } from '@modules/shared/interfaces/plugins/internal/plugin-internal.interface';\nimport { Content, PluginComponentExposure } from '@modules/shared/interfaces/plugins/public/plugin-public.interface';\nimport { CommandBindings, CommandsService, CommandsSubscription, COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContentOverlayService } from '@modules/shared/services/content-overlay/content-overlay.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { VideoContentTypes } from '@modules/video/enumerations/video-content-types';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { ViewSelectSnapshot } from '@ngxs-labs/select-snapshot';\nimport { map, tap } from 'rxjs/operators';\nimport { SafeGuid } from 'safeguid';\nimport { KnownFeatures } from 'WebClient/KnownFeatures';\nimport { KnownLicenses } from 'WebClient/KnownLicenses';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { VideoPlayerComponent } from '../video-player/video-player.component';\n\nexport const isContentSupported = (content: Content): boolean => {\n if (content?.type.equals(VideoContentTypes.Video)) {\n return content.grantedPrivileges.some(\n (privilege) => privilege.equals(KnownPrivileges.allowVideoPrivilege) || privilege.equals(KnownPrivileges.allowPlaybackVideoPrivilege)\n );\n }\n return false;\n};\n\n@UntilDestroy()\n@Component({\n selector: 'app-expand-widget',\n templateUrl: './expand-widget.component.html',\n styleUrls: ['./expand-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@InternalContentPluginDescriptor({\n type: ExpandWidgetComponent,\n pluginTypes: [PluginTypes.Widget],\n exposure: {\n id: ExpandWidgetComponent.pluginId,\n priority: 6,\n requiredParentPlugin: VideoPlayerComponent.pluginId,\n } as PluginComponentExposure,\n isContentSupported,\n requirements: { features: [KnownFeatures.videoId], licenses: [KnownLicenses.video] },\n})\nexport class ExpandWidgetComponent extends HideableComponent implements AfterViewInit, OnDestroy {\n public static pluginId = SafeGuid.parse('8F33D8D0-EEC2-4CFF-8D58-ABB1B7CE2CFD');\n\n @ViewSelectSnapshot(FeatureFlagsState.featureFlags(GeneralFeatureFlags.ExpandWidget))\n public isPortalEnabled!: boolean;\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n\n public isExpanded$ = this.contentOverlayService.contentOverlay$.pipe(map((content) => content !== null));\n\n // To define the parent host of the Dom element\n private parentHost?: Element | null;\n\n private commandsSubscription?: CommandsSubscription;\n\n constructor(\n private hostElement: ElementRef,\n private contentOverlayService: ContentOverlayService,\n viewContainerRef: ViewContainerRef,\n trackingService: TrackingService,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService\n ) {\n super(viewContainerRef, trackingService);\n this.registerVideoCommands();\n }\n\n ngAfterViewInit(): void {\n this.parentHost = this.hostElement.nativeElement.closest('app-navigation-plugin-host');\n\n if (this.parentHost && this.contentOverlayService.hasOverlay()) {\n this.contentOverlayService.setOverlay(this.parentHost);\n }\n }\n\n ngOnDestroy(): void {\n this.commandsSubscription?.unsubscribe();\n }\n\n public toggleExpandWidget(): void {\n if (this.contentOverlayService.hasOverlay()) {\n this.contentOverlayService.clearOverlay();\n this.hideRequestSubject.next(false);\n } else {\n if (this.parentHost) {\n this.contentOverlayService.setOverlay(this.parentHost);\n this.hideRequestSubject.next(true);\n }\n }\n }\n\n private registerVideoCommands(): void {\n const bindings = new CommandBindings();\n bindings.addCommand({\n commandId: SharedCommands.MinimizeVideo,\n executeCommandHandler: (executeCommandData) => {\n this.contentOverlayService.clearOverlay();\n executeCommandData.isHandled = true;\n },\n isCommandAvailableHandler: () => this.isPortalEnabled,\n });\n bindings.addCommand({\n commandId: SharedCommands.ToggleMaximizeVideo,\n executeCommandHandler: (executeCommandData) => {\n this.toggleExpandWidget();\n executeCommandData.isHandled = true;\n },\n isCommandAvailableHandler: () => this.isPortalEnabled,\n });\n\n this.commandsSubscription = this.commandsService.subscribe(bindings, {\n priority: 200,\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, NgModule, NgZone } from '@angular/core';\nimport { GenAngularModule, MeltedIcon } from '@genetec/gelato-angular';\nimport { GeneralModule } from '@modules/general/general.module';\nimport { ModuleDescriptor } from '@modules/shared/interfaces/modules/public/module-public.interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { SharedCommands } from '@shared/enumerations/shared-commands';\nimport { CommandsService, COMMANDS_SERVICE } from '@shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { LanguageService } from '@shared/services/language/language.service';\nimport { SharedModule } from '@shared/shared.module';\nimport { WINDOW } from '@utilities/common-helper';\nimport { GetBaseUriForCodeGen } from '@utilities/base-uri-getter';\nimport gwp from 'Marmot/Marmot/gwp';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { baseUrl, VideoClient } from './api/api';\nimport { BookmarkComponent } from './components/bookmark/bookmark.component';\nimport { CameraBaseComponent } from './components/camera/camera-base.component';\nimport { CameraEntityStateComponent } from './components/camera/tile/camera-entity-state/camera-entity-state.component';\nimport { CameraActionsWidgetComponent } from './components/camera/widgets/camera-actions-widget/camera-actions-widget.component';\nimport { CameraEventsWidgetComponent } from './components/camera/widgets/camera-events-widget/camera-events-widget.component';\nimport { ExportVideoAuthorizationComponent } from './components/export-video-authorization/export-video-authorization.component';\nimport { ExportVideoComponent } from './components/export-video/export-video.component';\nimport { GotoTimeComponent } from './components/goto-time/goto-time.component';\nimport { CameraEventWidgetComponent } from './components/maps/camera-event-widget/camera-event-widget.component';\nimport { LcdPanelComponent } from './components/ptz-controls/lcd-panel/lcd-panel.component';\nimport { PtzControlsPluginComponent } from './components/ptz-controls/ptz-controls-plugin/ptz-controls-plugin.component';\nimport { PtzControlsComponent } from './components/ptz-controls/ptz-controls.component';\nimport { VideoControlsComponent } from './components/video-controls/video-controls.component';\nimport { VideoPlayerComponent } from './components/video-player/video-player.component';\nimport { CameraCommandProvider } from './services/camera-command-provider';\nimport { RenderingHelper } from './utilities/renderinghelper';\nimport { VideoSpeedPipe } from './pipes/video-speed.pipe';\nimport { ExpandWidgetComponent } from './components/expand-widget/expand-widget.component';\n\n@UntilDestroy()\n@NgModule({\n imports: [CommonModule, SharedModule, NgxsModule, GenAngularModule, GeneralModule, ReactiveFormsModule],\n declarations: [\n VideoControlsComponent,\n VideoPlayerComponent,\n BookmarkComponent,\n GotoTimeComponent,\n ExportVideoComponent,\n CameraActionsWidgetComponent,\n CameraEventsWidgetComponent,\n CameraEventWidgetComponent,\n PtzControlsComponent,\n PtzControlsPluginComponent,\n LcdPanelComponent,\n ExportVideoAuthorizationComponent,\n CameraEntityStateComponent,\n CameraBaseComponent,\n VideoSpeedPipe,\n ExpandWidgetComponent,\n ],\n exports: [VideoPlayerComponent],\n providers: [\n VideoClient,\n {\n provide: baseUrl,\n deps: [],\n useFactory: GetBaseUriForCodeGen,\n },\n ],\n})\n@ModuleDescriptor({\n type: VideoModule,\n inclusions: {\n globalPrivileges: [KnownPrivileges.singleUserExportPrivilege],\n },\n})\nexport class VideoModule {\n public static references = [];\n\n constructor(\n private translateService: TranslateService,\n languageService: LanguageService,\n cameraCommandProvider: CameraCommandProvider, // DO NOT DELETE,\n @Inject(COMMANDS_SERVICE) private commandsService: CommandsService,\n zone: NgZone,\n @Inject(WINDOW) private window: Window\n ) {\n languageService.ready.pipe(untilDestroyed(this)).subscribe(() => {\n this.registerCommands();\n });\n RenderingHelper.initialize(zone);\n\n // ensure GWP is created\n if (!window.gwp) {\n window.gwp = new gwp();\n }\n }\n\n private registerCommands() {\n // allow share command for some of our entity types\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.commandsService.appendRequirements(SharedCommands.ShareEntity, { supportedEntityTypes: new Set([EntityTypes.Cameras, EntityTypes.Sequences]) });\n\n this.commandsService.registerCommands([\n {\n id: SharedCommands.FastForward,\n name: () => this.translateService?.instant('STE_BUTTON_FASTFORWARD') as string,\n icon: MeltedIcon.FastForward,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Camera,\n },\n {\n id: SharedCommands.PauseVideo,\n name: () => this.translateService?.instant('STE_BUTTON_PAUSEVIDEO') as string,\n icon: MeltedIcon.Pause,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Pause,\n },\n {\n id: SharedCommands.PlayVideo,\n name: () => this.translateService?.instant('STE_BUTTON_RESUMEVIDEO') as string,\n icon: MeltedIcon.Play,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Play,\n },\n {\n id: SharedCommands.Rewind,\n name: () => this.translateService?.instant('STE_BUTTON_REWINDVIDEO') as string,\n icon: MeltedIcon.Rewind,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Camera,\n },\n {\n id: SharedCommands.SaveSnapshot,\n name: () => this.translateService?.instant('STE_BUTTON_SAVESNAPSHOT') as string,\n icon: MeltedIcon.Snapshot,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Camera,\n },\n {\n id: SharedCommands.SlowMotion,\n name: () => this.translateService?.instant('STE_BUTTON_SLOWMOTION') as string,\n icon: MeltedIcon.Slow,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Camera,\n keyBinding: 'Shift.-',\n },\n {\n id: SharedCommands.ToggleListen,\n name: () => this.translateService?.instant('STE_BUTTON_TOGGLE_LISTENING') as string,\n icon: MeltedIcon.VolumeLoud,\n groupName: () => this.translateService?.instant('STE_ENTITY_CAMERA') as string,\n groupIcon: MeltedIcon.Camera,\n },\n ]);\n }\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\nimport { ObservableCollection } from 'RestClient/Helpers/ObservableCollection';\nimport { IGuid } from 'safeguid';\n\nexport class NotificationsChangedEvent extends EventBase {\n public get added(): ObservableCollection {\n return this.getFieldArrayGuid('added');\n }\n\n public get removed(): ObservableCollection {\n return this.getFieldArrayGuid('removed');\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BannerFlavor } from '@genetec/gelato-angular';\nimport { NotificationItem, NotificationsClient, NotificationsFilter, NotificationType } from '@modules/shared/api/api';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { stringFormat } from '@modules/shared/utilities/StringFormat';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { SecurityCenterClient } from 'RestClient/Client/SecurityCenterClient';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SafeGuid } from 'safeguid';\nimport { LanguageService } from '../language/language.service';\nimport { NotificationsChangedEvent } from './NotificationsChangedEvent';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationsService implements OnDestroy {\n //#region Fields\n\n public notifications: NotificationItem[] = [];\n\n private scClient!: SecurityCenterClient;\n private message: BehaviorSubject = new BehaviorSubject('');\n private messageType: BehaviorSubject = new BehaviorSubject(BannerFlavor.Information);\n\n private eventHandlers: Map void> = new Map void>();\n private subscriptions = new SubscriptionCollection();\n private notificationsMap = SafeGuid.createMap();\n\n //#endregion\n\n //#region Properties\n\n public get message$(): Observable {\n return this.message.asObservable();\n }\n\n public get messageType$(): Observable {\n return this.messageType.asObservable();\n }\n\n //#endregion\n\n //#region Constructors\n\n constructor(\n scClientService: SecurityCenterClientService,\n private languageService: LanguageService,\n private translateService: TranslateService,\n private notificationsClient: NotificationsClient\n ) {\n this.scClient = scClientService.scClient;\n this.initialize();\n\n if (this.scClient) {\n this.scClient.onLogonStateChanged(async (args) => {\n if (args.loggedOn()) {\n await this.refreshNotifications();\n } else {\n this.notifications.length = 0;\n this.notificationsMap.clear();\n }\n });\n }\n\n this.languageService.languageChanged.pipe(untilDestroyed(this)).subscribe(async () => {\n await this.refreshNotifications();\n });\n }\n\n //#endregion\n\n //#region Methods\n\n public ngOnDestroy() {\n this.subscriptions.unsubscribeAll();\n }\n\n public async refreshNotifications(): Promise {\n this.notifications.length = 0;\n this.notificationsMap.clear();\n\n const filter = new NotificationsFilter();\n const notifications = await this.notificationsClient.getNotifications(filter).toPromise();\n if (notifications) {\n notifications.forEach((nt) => {\n this.notifications.push(nt);\n this.notificationsMap.set(nt.id, nt);\n });\n }\n\n this.setMainNotification();\n }\n\n private initialize() {\n this.scClient.registerAdditionalEventTypes('NotificationsChangedEvent', NotificationsChangedEvent);\n this.eventHandlers.set('NotificationsChangedEvent', (event) => this.onNotificationsChangedEvent(event as NotificationsChangedEvent));\n\n this.subscriptions.add(this.scClient.onEventReceived((arg) => this.onEventReceived(arg)));\n\n // load active notifications on startup\n this.refreshNotifications().fireAndForget();\n }\n\n private setMainNotification() {\n let message = '';\n let messageType = BannerFlavor.Information;\n\n if (this.notifications && this.notifications.length > 0) {\n const maxPriorityValue = Number.MAX_VALUE;\n const sorted = this.notifications.sort((a, b) => ((a.priority ?? maxPriorityValue) > (b.priority ?? maxPriorityValue) ? 1 : -1));\n\n message = sorted[0].title;\n if (sorted[0].type) {\n switch (sorted[0].type) {\n case NotificationType.Error:\n messageType = BannerFlavor.Error;\n break;\n case NotificationType.Warning:\n messageType = BannerFlavor.Warning;\n break;\n }\n }\n if (this.notifications.length > 1) {\n const more = stringFormat(this.translateService.instant('STE_LABEL_X_MORE_FORMAT') as string, (this.notifications.length - 1).toString());\n message += ' (+ ' + more + ')';\n }\n }\n\n this.message.next(message);\n this.messageType.next(messageType);\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private onEventReceived(args: EventReceivedArg) {\n const eventHandler = this.eventHandlers.get(args.event.eventType);\n if (eventHandler) {\n eventHandler(args.event);\n }\n }\n\n private async onNotificationsChangedEvent(event: NotificationsChangedEvent) {\n const added = event.added;\n const removed = event.removed;\n let modified = false;\n\n if (removed && removed.size > 0) {\n removed.forEach((id) => {\n const nt = this.notificationsMap.get(id);\n if (nt) {\n this.notifications.remove(nt);\n this.notificationsMap.delete(id);\n }\n });\n modified = true;\n }\n\n if (added && added.size > 0) {\n const filter = new NotificationsFilter();\n filter.ids = [];\n added.forEach((x) => filter.ids?.push(x));\n const newItems = await this.notificationsClient.getNotifications(filter).toPromise();\n if (newItems) {\n newItems.forEach((nt) => {\n this.notifications.push(nt);\n this.notificationsMap.set(nt.id, nt);\n });\n }\n modified = true;\n }\n\n if (modified) {\n this.setMainNotification();\n }\n }\n\n //#endregion\n}\n","import { EventBase } from 'RestClient/Client/Event/EventBase';\n\nexport class UpgradeStartedEvent extends EventBase {}\n","import { HttpStatusCode } from '@angular/common/http';\nimport { EventEmitter, Injectable, OnDestroy, Output } from '@angular/core';\nimport { SubscriptionCollection } from '@modules/shared/utilities/subscription-collection';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { LogonStateChangedArgs } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { IEventBase } from 'RestClient/Client/Interface/IEventBase';\nimport { EventReceivedArg } from 'RestClient/Connection/RestArgs';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { UpgradeStartedEvent } from './UpgradeStartedEvent';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UpdaterService implements OnDestroy {\n //#region Fields\n\n @Output() public isUpgrading = false;\n\n @Output() public stateChanged = new EventEmitter();\n\n private isTimedOutValue = new BehaviorSubject(false);\n private messageValue = new BehaviorSubject('');\n\n private readonly scClient: WebAppClient;\n private timer: number | undefined;\n private upgradeTimestamp: number | undefined;\n\n // represent the delay between reconnection retry\n private readonly ReconnectionDelayInMS = 5000;\n\n // represent the maximum upgrade delay before abandoning\n private readonly MaximumUpgradeDelayInMS = 300000;\n\n private eventHandlers: Map void> = new Map void>();\n private subscriptions = new SubscriptionCollection();\n\n //#endregion\n\n //#region Constructors\n\n constructor(scClientService: SecurityCenterClientService, private translateService: TranslateService) {\n this.scClient = scClientService.scClient;\n this.initialize();\n }\n\n //#endregion\n\n //#region Methods\n\n public get isTimedOut(): boolean {\n return this.isTimedOutValue.getValue();\n }\n\n public get isTimedOut$(): Observable {\n return this.isTimedOutValue.asObservable();\n }\n\n public get message$(): Observable {\n return this.messageValue.asObservable();\n }\n\n public ngOnDestroy() {\n this.subscriptions.unsubscribeAll();\n }\n\n private initialize() {\n this.scClient.registerAdditionalEventTypes('UpgradeStartedEvent', UpgradeStartedEvent);\n this.eventHandlers.set('UpgradeStartedEvent', (event) => this.onUpgradeStartedEvent(event as UpgradeStartedEvent));\n\n this.subscriptions.add(this.scClient.onLogonStateChanged((arg) => this.onLogonStateChanged(arg)));\n this.subscriptions.add(this.scClient.onEventReceived((arg) => this.onEventReceived(arg)));\n }\n\n private getString(key: string, defaultValue: string): string {\n let result = this.translateService.instant(key) as string;\n if (result === key) {\n result = defaultValue;\n }\n return result;\n }\n\n //#endregion\n\n //#region Event Handlers\n\n private onEventReceived(args: EventReceivedArg) {\n const eventHandler = this.eventHandlers.get(args.event.eventType);\n if (eventHandler) {\n eventHandler(args.event);\n }\n }\n\n private onLogonStateChanged(args: LogonStateChangedArgs) {\n // When the application is logged back on, we are not upgrading anymore for sure\n if (args.loggedOn()) {\n this.isUpgrading = false;\n }\n }\n\n private async onUpgradeStartedEvent(event: UpgradeStartedEvent) {\n this.upgradeTimestamp = new Date().getTime();\n this.isUpgrading = true;\n this.isTimedOutValue.next(false);\n\n const message = this.getString('STE_MESSAGE_INFO_UPGRADE_IN_PROGRESS', 'Upgrade in progress. Please wait.');\n this.messageValue.next(message);\n this.onStateChanged();\n\n await this.scClient.pauseConnectionAsync();\n\n // if there is no timer yet, set one\n if (!this.timer) {\n this.timer = window.setInterval(() => {\n this.tryReconnectAsync().fireAndForget();\n }, this.ReconnectionDelayInMS);\n }\n }\n\n private async tryReconnectAsync() {\n const url = this.scClient.rest.restServerUrl;\n\n // We are fetch the version info to see if the backend is back online\n const fetchResponse = await fetch(url + '/Api/Version/VersionInfo');\n if (fetchResponse.body === null) {\n return;\n }\n if (fetchResponse.status === HttpStatusCode.Ok) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const versionInfo = await fetchResponse.json();\n if (versionInfo) {\n // Nice, the server is back online\n this.isUpgrading = false;\n this.upgradeTimestamp = undefined;\n\n // Stop the timer\n window.clearInterval(this.timer);\n this.onStateChanged();\n\n // The index.html has the no-cache header and the main.js has an hash in it's name so the reload will load the new version\n location.reload();\n return;\n }\n } else if (this.upgradeTimestamp) {\n const elapsed = new Date().getTime() - this.upgradeTimestamp;\n if (elapsed >= this.MaximumUpgradeDelayInMS) {\n // Stop the timer\n window.clearInterval(this.timer);\n\n this.isTimedOutValue.next(true);\n\n const message = this.getString('STE_MESSAGE_INFO_UPGRADE_TOO_LONG', 'The upgrade is taking too long. Please try to refresh the page.');\n this.messageValue.next(message);\n this.onStateChanged();\n }\n }\n }\n\n private onStateChanged() {\n this.stateChanged?.emit();\n }\n\n //#endregion\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { WINDOW } from '@utilities/common-helper';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@UntilDestroy()\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Unique instance of a state service that manages the various possible states of the nav-bar.\n * It exposes observables of all possible states, and mutator for each of them as well.\n */\nexport class NavBarService {\n public get isPinned$(): Observable {\n return this.isPinned.asObservable();\n }\n\n public get isOpened$(): Observable {\n return this.isOpened.asObservable();\n }\n\n public get isFocused$(): Observable {\n return this.isFocused.asObservable();\n }\n\n public get skipHoveringCheck$(): Observable {\n return this.skipHoveringCheck.asObservable();\n }\n\n private isPinned: BehaviorSubject;\n private isOpened = new BehaviorSubject(false);\n private isFocused = new BehaviorSubject(false);\n private skipHoveringCheck = new BehaviorSubject(false);\n\n constructor(@Inject(WINDOW) private window: Window) {\n // read from local storage\n const isPinnedLocalStorage = this.window.localStorage.getItem('nav-bar-pinned')?.toLowerCase() === 'true';\n this.isPinned = new BehaviorSubject(isPinnedLocalStorage);\n if (isPinnedLocalStorage) {\n // also open\n this.setIsOpenedState(true);\n }\n }\n\n /**\n * Pushed the newState in the isPinnedState subject.\n *\n * @param newState boolean value to push in the store\n */\n public setIsPinnedState(newState: boolean): void {\n this.setPinnedAndStore(newState);\n }\n\n /**\n * Retrieves the last emitted state, toggles it, and pushes it in the isPinnedState subject.\n */\n public toggleIsPinnedState(): void {\n this.isPinned$.pipe(take(1), untilDestroyed(this)).subscribe((value: boolean) => {\n this.setPinnedAndStore(!value);\n });\n }\n\n /**\n * Pushes the newState in the isOpened subject\n *\n * @param newState boolean value to push in the store\n */\n public setIsOpenedState(newState: boolean): void {\n this.isOpened.next(newState);\n }\n\n /**\n *\n * @param newState boolean value to push in the store\n */\n public setIsFocusedState(newState: boolean): void {\n this.isFocused.next(newState);\n }\n\n /**\n * Pushes the newState in the skipHoveringCheck subject.\n *\n * @param newState boolean value to push in the store\n */\n public setSkipHoveringCheck(newState: boolean): void {\n this.skipHoveringCheck.next(newState);\n }\n\n /**\n * Takes the isPinned boolean value, pushes it in the isPinnedSubject and saves it in the local storage.\n *\n * @param value\n */\n private setPinnedAndStore(value: boolean): void {\n this.isPinned.next(value);\n this.window.localStorage.setItem('nav-bar-pinned', value.toString());\n }\n}\n","\n \n \n
    \n \n \n \n \n \n \n \n
    \n
    \n \n
      \n
    • \n \n {{ 'STE_LABEL_TASKS' | translate }}\n
    • \n\n
    • \n \n \n \n
    • \n\n
    • \n \n \n
    • \n \n \n \n {{ title | translate }}\n \n 1\"\n [icon]=\"Icon.AngleRight\"\n >\n \n \n
    • \n \n \n
      \n
      \n \n \n {{ title | translate }}\n \n
      \n
      \n \n \n \n \n
    • \n {{ group.header }}\n
    • \n
    • \n \n \n \n {{ item.title }}\n \n \n
    • \n
      \n
      \n
      \n {{ 'STE_LABEL_NORESULTS' | translate }}\n
      \n \n\n
      \n \n
      \n \n
    \n
    \n \n\n \n
    \n
    \n\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ButtonFlavor, Icon, TextFlavor } from '@genetec/gelato';\nimport { TranslateService } from '@ngx-translate/core';\nimport { combineLatest, Subject } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { MainSearchComponent } from '@modules/shared/components/main-search/main-search.component';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { SharedCommands } from '@modules/shared/enumerations/shared-commands';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { ContextTypes } from '@modules/shared/interfaces/plugins/public/context-types';\nimport { CommandBindings, COMMANDS_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContentProviderService } from '@modules/shared/services/content/content-provider.service';\nimport { NavigationService } from '@modules/shared/services/navigation/navigation.service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { SearchResultGroup } from '@modules/shared/services/search/search.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { focusDomElement } from '@modules/shared/utilities/dom-helper';\nimport { IGuid } from 'safeguid';\nimport { AsidePosition, GenPopup, PopupPosition } from '@genetec/gelato-angular';\nimport { AccessControlFeatureFlags } from '@modules/access-control/feature-flags';\nimport { AdvancedSettingsService } from '@modules/shared/services/advanced-settings/advanced-settings.service';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { AuthService } from '../../security-center/services/authentication/auth.service';\nimport { NavBarService } from './services/nav-bar.service';\nimport { NavBarState } from './models/nav-bar-state';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-nav-bar',\n templateUrl: './nav-bar.component.html',\n styleUrls: ['./nav-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavBarComponent extends TrackedComponent implements OnInit, OnDestroy {\n @ViewChild('mainSearch') public mainSearch!: MainSearchComponent;\n @ViewChild('resultSection') public resultSection!: ElementRef;\n @ViewChild(GenPopup) subTasksPopup!: GenPopup;\n public readonly PopupPosition = PopupPosition;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly TextFlavor = TextFlavor;\n public readonly AsidePosition = AsidePosition;\n\n /**\n * Selected plugin (used to display the subTasks list in the popup)\n */\n public selectedTask: PluginItem | undefined;\n\n public hasAccessControlGeneralFeatureFlag? = false;\n\n public taskPlugins: PluginItem[] = [];\n public navBarExtensionPlugins: PluginItem[] = [];\n public wasPinned = false;\n public pinTooltip: string | undefined;\n public groupedSearchResults: SearchResultGroup[] | null = null;\n public resetNavbarAnimation: Subject = new Subject();\n public clearMainSearchText: Subject = new Subject();\n public isSearching = false;\n\n private timeout: number | null = null;\n\n public get activatedTask(): IGuid {\n return this.navigationService.getCurrentTask();\n }\n\n constructor(\n private pluginService: PluginService,\n private authService: AuthService,\n private translateService: TranslateService,\n private navigationService: NavigationService,\n @Inject(COMMANDS_SERVICE) public commandsService: InternalCommandsService,\n trackingService: TrackingService,\n public activatedRoute: ActivatedRoute,\n private contentProviderService: ContentProviderService,\n public navBarService: NavBarService,\n private advancedSettingsService: AdvancedSettingsService\n ) {\n super(trackingService);\n this.hasAccessControlGeneralFeatureFlag = AccessControlFeatureFlags.General.isEnabled(this.advancedSettingsService);\n }\n\n // off click handling\n @HostListener('document:click', ['$event'])\n public onClickAnywhere(mouseEvent: MouseEvent): void {\n combineLatest([this.navBarService.isPinned$, this.navBarService.isFocused$, this.navBarService.isOpened$, this.navBarService.skipHoveringCheck$])\n .pipe(\n take(1),\n map(([isPinned, isFocused, isOpened, skipHoveringCheck]) => {\n return {\n isPinned,\n isFocused,\n isOpened,\n skipHoveringCheck,\n } as NavBarState;\n }),\n untilDestroyed(this)\n )\n .subscribe((state: NavBarState) => {\n if (!mouseEvent || (!state.isOpened && !state.skipHoveringCheck)) {\n return;\n }\n const specifiedElement = document.getElementById('floating-nav-bar');\n if (!specifiedElement) {\n return;\n }\n\n const burgerMenuButton = document.getElementById('burger-menu-button');\n\n const isClickFromMenuBurger = burgerMenuButton === mouseEvent.target || (mouseEvent.target instanceof Node && burgerMenuButton?.contains(mouseEvent.target));\n if (!isClickFromMenuBurger && !specifiedElement.contains(mouseEvent.target as Node)) {\n this.navBarService.setSkipHoveringCheck(false);\n this.navBarService.setIsOpenedState(false);\n this.dispatchIsOpenedStateMutation(false);\n }\n\n if (isClickFromMenuBurger && state.isOpened) {\n // Focus on main search if nav-bar was opened by clicking menu-burger\n this.mainSearch?.focus();\n }\n });\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe(async (loggedIn: boolean) => {\n if (loggedIn) {\n this.taskPlugins = await this.pluginService.getPlugins(PluginTypes.Task);\n this.navBarExtensionPlugins = await this.pluginService.getPlugins(PluginTypes.NavBarExtension);\n }\n });\n\n // Register keyboard shortcuts for this view.\n this.subscribeCommands();\n }\n\n public onCancelMenu(): void {\n this.navBarService.setSkipHoveringCheck(false);\n this.dispatchIsOpenedStateMutation(false);\n }\n\n public onIsSearchingChange(isSearching: boolean): void {\n this.isSearching = isSearching;\n }\n\n public onItemSelected(navigation?: string | null): void {\n if (!navigation || !this.canNavigate(navigation)) {\n return;\n }\n\n this.navigationService.navigate(navigation).fireAndForget();\n\n this.dispatchIsOpenedStateMutation(false);\n this.navBarService.setSkipHoveringCheck(false);\n\n this.navBarService.setIsFocusedState(false);\n this.resetNavbarAnimation.next();\n this.clearMainSearchText.next();\n }\n\n public async onItemContextMenu(mouseEvent: MouseEvent, id?: IGuid): Promise {\n this.navBarService.setSkipHoveringCheck(true);\n if (id) {\n // own the context menu\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n\n const content = await this.contentProviderService.getContentAsync(id);\n if (content?.mainContent) {\n this.commandsService.showContextMenuAsync(mouseEvent, { type: ContextTypes.Content, data: content?.mainContent }).fireAndForget();\n }\n }\n }\n\n public onSearchClick(): void {\n this.navBarService.setSkipHoveringCheck(true);\n this.dispatchIsOpenedStateMutation(true);\n }\n\n public onTaskSelected(task: PluginItem): void {\n // If task contains sub tasks, open popup to select the subtask\n if (this.hasAccessControlGeneralFeatureFlag && task.subTaskPlugins?.length > 1) {\n //open menu\n this.selectedTask = task;\n this.subTasksPopup.show().fireAndForget();\n } else {\n this.onItemSelected(`/task/${task.exposure.id.toString()}`);\n }\n }\n\n public onSubTaskClick(item: PluginItem): void {\n this.subTasksPopup.close().fireAndForget();\n\n if (!this.selectedTask) return;\n this.onItemSelected(`/task/${this.selectedTask.exposure.id.toString()}/${item.exposure.id.toString()}`);\n }\n\n public onSearchResultsChange(searchResults: SearchResultGroup[] | null): void {\n this.groupedSearchResults = searchResults;\n }\n\n public onSidePaneOpenChange(val: boolean): void {\n this.dispatchIsOpenedStateMutation(val);\n }\n\n public onTogglePin(): void {\n this.navBarService.toggleIsPinnedState();\n }\n\n public pinMouseEnter(): void {\n this.timeout = window.setTimeout(() => {\n this.dispatchIsOpenedStateMutation(true);\n this.mainSearch?.focus();\n }, 300);\n }\n\n public pinMouseLeave(): void {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n public focusResultSection(): void {\n // Focus first element\n focusDomElement('li:not(.with-search-results) > a[tabindex=\"0\"]', this.resultSection.nativeElement);\n }\n\n public onMainSearchFocus(): void {\n this.navBarService.isPinned$.pipe(take(1), untilDestroyed(this)).subscribe((isPinned: boolean) => {\n if (isPinned) {\n this.navBarService.setSkipHoveringCheck(true);\n }\n });\n }\n\n private dispatchIsOpenedStateMutation(newState: boolean): void {\n if (!newState) {\n if (this.groupedSearchResults) {\n this.groupedSearchResults.length = 0;\n }\n } else {\n this.mainSearch?.focus();\n }\n this.navBarService.setIsOpenedState(newState);\n\n this.mainSearch?.clear();\n this.clearMainSearchText.next();\n }\n\n private subscribeCommands(): void {\n this.commandsService.registerCommandShortcut(SharedCommands.Search, 'CTRL.F');\n\n const commandBindings = new CommandBindings();\n commandBindings.addCommand({\n commandId: SharedCommands.Search,\n executeCommandHandler: (executeCommandData) => {\n this.navBarService.setSkipHoveringCheck(true);\n this.mainSearch.focus();\n executeCommandData.isHandled = true;\n },\n });\n this.commandsService.registerCommandShortcut(SharedCommands.CloseNavBar, 'Esc');\n commandBindings.addCommand({\n commandId: SharedCommands.CloseNavBar,\n executeCommandHandler: (executeCommandData) => {\n this.navBarService.setSkipHoveringCheck(false);\n this.navBarService.setIsFocusedState(false);\n this.dispatchIsOpenedStateMutation(false);\n executeCommandData.isHandled = true;\n },\n });\n this.commandsService.subscribe(commandBindings, { priority: 100 });\n }\n\n private canNavigate(navigation: string) {\n const hasParams = navigation.includes('?');\n const hasSubTaskRegex = new RegExp('task/[^/]+/+.');\n const hasSubTask = hasSubTaskRegex.exec(navigation);\n\n // cannot navigate if we try to navigate to the already active task without any params or sub task\n if (!hasParams && !hasSubTask) {\n if (navigation.includes(this.activatedTask.toString())) {\n return false;\n }\n }\n\n return true;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { ContentService, SIDE_CONTEXT_SERVICE } from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\n\n// ==========================================================================\n// Copyright (C) 2020 by Genetec Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n\n@Component({\n selector: 'app-shell-side-pane',\n templateUrl: 'side-pane.component.html',\n})\nexport class AppSidePaneComponent {\n constructor(@Inject(SIDE_CONTEXT_SERVICE) public contextDataService: ContentService) {}\n}\n","\n","import { GenModalService } from '@genetec/gelato-angular';\nimport { Injectable } from '@angular/core';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { IUserEntity } from 'RestClient/Client/Interface/IUserEntity';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { ISystemConfigurationEntity } from 'RestClient/Client/Interface/ISystemConfigurationEntity';\nimport { SystemConfigurationEntity } from 'RestClient/Client/Model/SystemConfigurationEntity';\nimport { ChangePasswordNotificationComponent } from './change-password-notification.component';\n\n@Injectable({ providedIn: 'root' })\nexport class ChangePasswordNotificationService {\n private user?: IUserEntity;\n private milsInDay = 86400000;\n private lastTimeModified = 0;\n private passwordExpiration = 0;\n private today = Date.now();\n private securityCenterClient: WebAppClient;\n\n constructor(private modalService: GenModalService, private scProvider: SecurityCenterClientService) {\n this.securityCenterClient = scProvider?.scClient;\n }\n\n public async openPasswordNotificationModalIfNeeded(): Promise {\n if (await this.verifyPasswordNotificationPeriod()) {\n this.modalService.open(ChangePasswordNotificationComponent, { daysRemaining: this.getRemainderToExpirePassword() });\n }\n }\n\n private getRemainderToExpirePassword(): number {\n return Math.max(0, Math.floor((this.lastTimeModified + this.passwordExpiration - this.today) / this.milsInDay));\n }\n\n private async verifyPasswordNotificationPeriod(): Promise {\n this.user = (await this.securityCenterClient.getEntityAsync(UserEntity, this.securityCenterClient.userId)) as IUserEntity;\n const userSysConfig = (await this.securityCenterClient.getEntityAsync(\n SystemConfigurationEntity,\n Guids.SystemConfiguration\n )) as ISystemConfigurationEntity;\n if (this.user !== null) {\n this.lastTimeModified = this.user.passwordLastModified.getTime() - (this.user.passwordLastModified.getTime() % this.milsInDay);\n this.passwordExpiration = this.user.passwordExpiration * this.milsInDay;\n if (this.passwordExpiration === 0) {\n return false;\n }\n this.today = Date.now() - (Date.now() % this.milsInDay);\n if (userSysConfig !== null) {\n const notificationPeriod = userSysConfig.passwordExpiryNotificationPeriod * this.milsInDay;\n const notificationWindow = this.lastTimeModified + Math.max(0, this.passwordExpiration - notificationPeriod);\n if (this.today >= notificationWindow) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","
    \n
    \n
    \n
    \n \n\n
    \n \n
    {{ appVersion }}
    \n
    \n \n {{\n 'STE_LABEL_ABOUT' | translate: { Default: 'About' }\n }}\n \n {{\n 'STE_LABEL_SEND_FEEDBACK' | translate: { Default: 'Send feedback' }\n }}\n
    \n
    \n
    \n
    \n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ButtonFlavor, TextFlavor, ButtonType } from '@genetec/gelato';\nimport { Gelato, GenModalService } from '@genetec/gelato-angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CancellationToken } from 'RestClient/Helpers/Helpers';\nimport { AboutComponent } from '@modules/general/components/about/about.component';\nimport { ChangePasswordComponent } from '@modules/general/components/change-password/change-password.component';\nimport { LanguageService } from '@shared/services/language/language.service';\nimport { VersionService } from '@shared/services/version/version.service';\nimport { Constants } from '@src/constants';\nimport { AuthenticationError } from '@securityCenter/services/authentication/models/authentication-error';\nimport { ChangePasswordNotificationService } from '@modules/general/components/change-password/notification/change-password-notification.service';\nimport { SessionClient, OpenIdProvider } from '@shared/api/api';\nimport { WINDOW } from '@utilities/common-helper';\nimport { SendFeedbackComponent } from '@modules/general/components/send-feedback/send-feedback.component';\nimport { AuthService } from '../../security-center/services/authentication/auth.service';\nimport { UserLogin } from './user-login.model';\nimport { LogonResult } from 'RestClient/Client/Enumerations/LogonResult';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n})\nexport class LoginComponent extends Gelato implements OnInit, OnDestroy {\n //#region Fields\n\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly TextFlavor = TextFlavor;\n public readonly ButtonType = ButtonType;\n\n public userLogin = new UserLogin();\n public isLoggingIn = false;\n public isWaitingForReload = false;\n public appVersion = '';\n public openIdProviders: OpenIdProvider[] = [];\n public hasCancelled = false;\n public waitOnOpenId = true;\n\n private cancellationToken?: CancellationToken;\n\n //#endregion\n\n constructor(\n @Inject(Constants.baseUrlIdentifier) private baseUrl: string,\n public authService: AuthService,\n private languageService: LanguageService,\n private modalService: GenModalService,\n private translateService: TranslateService,\n private versionService: VersionService,\n public changePasswordNotificationService: ChangePasswordNotificationService,\n private sessionClient: SessionClient,\n @Inject(WINDOW) private window: Window\n ) {\n super();\n }\n\n async ngOnInit() {\n // setting a blank title will display the base title ('Security Center Web')\n this.languageService.setTitle('');\n\n const versionInfo = await this.versionService.retrieveVersionAsync();\n if (versionInfo) {\n // display the build version at login\n this.appVersion = versionInfo.buildVersion;\n }\n\n // Verify if the role supports OpenId\n const encodedRedirectUri = encodeURIComponent(this.baseUrl + '?redirect=true');\n const info = await this.sessionClient.getLoginInfo(encodedRedirectUri).toPromise();\n if (info === null) throw new Error('');\n\n this.openIdProviders = info.openIdProviders ?? [];\n setTimeout(() => {\n this.waitOnOpenId = false;\n }, 750);\n }\n\n public onSignIn(): void {\n //If form empty, do not login\n if (!this.userLogin.username.value.trim()) {\n return;\n }\n if (this.cancellationToken) {\n // if we are already logging in, cancel it\n this.cancellationToken.cancelToken();\n this.cancellationToken = undefined;\n this.hasCancelled = true;\n this.authService.isSigningIn(false);\n // be sure to logout if we were already sign in as we priorize the cancel request\n this.authService.logOutAsync().fireAndForget();\n } else {\n this.isLoggingIn = true;\n this.userLogin.password.resetMessage();\n this.cancellationToken = new CancellationToken(AuthService.defaultTimeout);\n this.hasCancelled = false;\n this.authService.isSigningIn(false);\n this.authService\n .logInWithCredentialsAsync(this.userLogin, this.cancellationToken)\n .catch((error: AuthenticationError) => {\n if (error.type === LogonResult.PasswordExpired) {\n this.modalService.open(ChangePasswordComponent, {\n isExpired: true,\n oldPassword: this.userLogin.password.value,\n directory: this.authService.userDirectory,\n username: this.userLogin.username.value,\n logonResultPasswordConstraint: this.authService.passwordConstraint,\n });\n } else if (error.type === LogonResult.AlreadyConnected) {\n this.isWaitingForReload = true;\n this.window.location.reload();\n }\n })\n .then(() => this.changePasswordNotificationService.openPasswordNotificationModalIfNeeded())\n .finally(() => {\n this.isLoggingIn = false;\n this.cancellationToken = undefined;\n })\n .fireAndForget();\n }\n }\n\n public onAbout(): void {\n this.modalService.open(AboutComponent);\n }\n\n public onSendFeedback(): void {\n this.modalService.open(SendFeedbackComponent);\n }\n\n public ngOnDestroy(): void {\n this.authService.isSigningIn(false);\n }\n}\n","\n\n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n {{ message | async }}\n {{ progressEllipsis | async }}\n
    \n
    \n
    \n
    \n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LogonState } from 'RestClient/Client/Args/LogonStateChangedArgs';\nimport { BehaviorSubject, Observable, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { WebAppClient } from 'WebClient/WebAppClient';\nimport { UpdaterService } from '@modules/shared/services/updates/updater.service';\n\n/**\n * Loading screen component is tied to the WebAppClient connection state, if it's \"reconnecting\", it will\n * display a loading overlay, and the property \"loadingText\".\n */\n@Component({\n selector: 'app-loading-screen',\n templateUrl: './loading-screen.component.html',\n styleUrls: ['./loading-screen.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingScreenComponent {\n public showProgressEllipsis = true;\n public showSpinner: Observable = new BehaviorSubject(true);\n public progressEllipsis?: Observable;\n public isReconnecting = false;\n public message?: Observable;\n private securityCenterClient: WebAppClient;\n\n constructor(\n private scProvider: SecurityCenterClientService,\n private changeDetectorRef: ChangeDetectorRef,\n private updaterService: UpdaterService,\n private translateService: TranslateService\n ) {\n this.refreshMessage();\n\n this.securityCenterClient = this.scProvider?.scClient;\n this.securityCenterClient?.onLogonStateChanged((stateChanged) => {\n this.refreshMessage();\n\n if (stateChanged.state === LogonState.ReloggingOn) {\n this.isReconnecting = true;\n this.changeDetectorRef.detectChanges();\n } else {\n this.isReconnecting = false;\n this.changeDetectorRef.detectChanges();\n }\n });\n if (this.showProgressEllipsis) {\n const array = ['', ' ⠄', ' ⠤', ' ⠴', ' ⠶', ' ⠲', ' ⠒', ' ⠂'];\n\n this.progressEllipsis = timer(0, 1000).pipe(map((e) => array[e % array.length]));\n }\n }\n\n private refreshMessage() {\n if (this.updaterService.isUpgrading || this.updaterService.isTimedOut) {\n this.message = this.updaterService.message$;\n this.showSpinner = this.updaterService.isTimedOut$.pipe(map((x) => !x));\n } else {\n const key = 'STE_LABEL_CONNECTION_LOST_RECONNECTING';\n let message = this.translateService.instant(key) as string;\n if (message === key) {\n message = 'Connection lost, reconnecting';\n }\n this.message = new BehaviorSubject(message);\n }\n }\n}\n","\n \n
    \n \n \n
    \n
      \n
    • \n \n \n \n
    • \n
    • \n \n
    • \n
    \n\n
      \n \n
    • \n \n
    • \n
      \n
    • \n \n \n \n
    • \n
    • \n \n \n
    • \n
    \n
    \n
    \n\n \n\n
    \n
    \n \n
    \n
    \n\n \n \n \n\n \n \n \n\n \n \n
    \n\n \n \n
    \n \n
    \n
    \n
    \n\n \n \n \n \n \n \n \n \n
    \n","import { Component, ElementRef, Inject, isDevMode, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ButtonFlavor, Icon, PopupPosition, ItemSlot } from '@genetec/gelato';\nimport { ContextMenuSize, GenMenu, GenPopup, TextFlavor } from '@genetec/gelato-angular';\nimport { AnalyticsService } from '@modules/shared/services/analytics/analytics.service';\nimport { ContextMenuItem } from '@shared/interfaces/context-menu-item/context-menu-item';\nimport { ContextMenuFactory } from '@modules/shared/services/context-menu/context-menu.factory';\nimport { Observable, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { NotificationsService } from '@modules/shared/services/notifications/notifications.service';\nimport { UpdaterService } from '@modules/shared/services/updates/updater.service';\nimport { SendFeedbackService } from '@modules/general/services/send-feedback.service';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Select } from '@ngxs/store';\nimport { GeneralFeatureFlags } from '@modules/general/feature-flags';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { ContentOverlayService } from '@shared/services/content-overlay/content-overlay.service';\nimport { NavBarService } from './components/nav-bar/services/nav-bar.service';\nimport { TrackedComponent } from './modules/shared/components/tracked/tracked.component';\nimport { SharedCommands } from './modules/shared/enumerations/shared-commands';\nimport { PluginItem } from './modules/shared/interfaces/plugins/internal/pluginItem';\nimport { COMMANDS_SERVICE } from './modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { PluginTypes, TraySubSections } from './modules/shared/interfaces/plugins/public/plugin-types';\nimport { ContextMenuHandler, InternalCommandsService } from './modules/shared/services/commands/commands.service';\nimport { LanguageService } from './modules/shared/services/language/language.service';\nimport { PluginService } from './modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from './modules/shared/services/tracking.service';\nimport { AuthService } from './security-center/services/authentication/auth.service';\nimport { TouchEventHandler } from './utilities/touch-event-handler';\nimport { AdvancedSettingsService } from './modules/shared/services/advanced-settings/advanced-settings.service';\nimport { ApplicationInsightsFeatureFlags } from './modules/shared/services/analytics/feature-flags';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n providers: [\n // Service instance controlling the global dom portal outlet\n ContentOverlayService,\n ],\n})\nexport class AppComponent extends TrackedComponent implements OnInit, ContextMenuHandler {\n @ViewChild(GenPopup) secondaryTrayPopup!: GenPopup;\n @ViewChild('contextMenu') contextMenu!: GenMenu;\n\n @Select(FeatureFlagsState.featureFlags(GeneralFeatureFlags.ExpandWidget))\n public isPortalEnabled$!: Observable;\n\n public readonly ContextMenuSize = ContextMenuSize;\n public readonly ButtonFlavor = ButtonFlavor;\n public readonly Icon = Icon;\n public readonly PopupPosition = PopupPosition;\n public readonly TextFlavor = TextFlavor;\n public readonly ItemSlot = ItemSlot;\n\n public contextMenuItemsSource!: Array;\n public contextMenuPositionX!: number;\n public contextMenuPositionY!: number;\n public contextMenuReference: ElementRef | undefined = undefined;\n public mainTrayPlugins: PluginItem[] = [];\n public secondaryTrayPlugins: PluginItem[] = [];\n public title = 'app';\n public onContextMenuShow$: Observable;\n public onContextMenuHide$: Observable;\n private onContextMenuHideSubject = new Subject();\n private onContextMenuShowSubject = new Subject();\n\n // DO NOT REMOVE: We create this instance to manage touch events throughout the entire app, do not remove even if it isn't used elsewhere\n private touchEventHandler!: TouchEventHandler;\n\n private contextMenuOpen = false;\n public get isContextMenuOpen(): boolean {\n return this.contextMenuOpen;\n }\n public set isContextMenuOpen(value: boolean) {\n this.contextMenuOpen = value;\n if (!this.contextMenuOpen && value) {\n this.onContextMenuShowSubject.next();\n }\n }\n\n constructor(\n private contextMenuFactory: ContextMenuFactory,\n private pluginService: PluginService,\n public authService: AuthService,\n public languageService: LanguageService,\n trackingService: TrackingService,\n public navBarService: NavBarService,\n @Inject(COMMANDS_SERVICE) private commandsService: InternalCommandsService,\n private analyticsService: AnalyticsService,\n private advancedSettingsService: AdvancedSettingsService,\n public updaterService: UpdaterService,\n public notificationsService: NotificationsService,\n private sendFeedbackService: SendFeedbackService,\n private viewContainerRef: ViewContainerRef\n ) {\n super(trackingService);\n\n this.onContextMenuShow$ = this.onContextMenuShowSubject.asObservable();\n this.onContextMenuHide$ = this.onContextMenuHideSubject.asObservable();\n\n commandsService.registerContextMenuHandler(this);\n }\n\n public ngOnInit(): void {\n super.ngOnInit();\n\n // DO NOT REMOVE: We create this instance to manage touch events throughout the entire app, do not remove even if it isn't used elsewhere\n this.touchEventHandler = new TouchEventHandler();\n\n this.sendFeedbackService.setupAppInsightsAsync().fireAndForget();\n\n this.authService.loggedIn$.pipe(untilDestroyed(this)).subscribe(async (loggedIn: boolean) => {\n if (loggedIn) {\n const trayPlugins = await this.pluginService.getPlugins(PluginTypes.Tray);\n if (trayPlugins) {\n this.mainTrayPlugins = trayPlugins.filter((plugin) => !plugin.exposure.subSection || plugin.exposure.subSection.equals(TraySubSections.MainBar));\n this.secondaryTrayPlugins = trayPlugins.filter((plugin) => plugin.exposure.subSection?.equals(TraySubSections.Secondary));\n }\n if (ApplicationInsightsFeatureFlags.General.isEnabled(this.advancedSettingsService)) {\n this.analyticsService.setupAppInsightsAsync().fireAndForget();\n }\n } else {\n this.analyticsService.clearAppInsightsData();\n }\n });\n }\n\n public showContextMenu(mouseEvent: MouseEvent, menuItems?: ContextMenuItem[], reference?: ElementRef): boolean {\n this.hideContextMenu();\n\n // TODO: Remove last condition (isHidden) when the following issue is resolved.\n // https://tfs.genetec.com/DefaultCollection/PortfolioManagement/_workitems/edit/2697313/\n if (!menuItems || menuItems.length === 0 || menuItems.filter((x) => !x.isHidden || !x.isHidden(x)).length === 0) {\n // in dev mode, let the browser menu appear\n if (isDevMode()) {\n return false;\n }\n mouseEvent.preventDefault();\n return false;\n }\n\n this.contextMenuFactory\n .showMenuAsync(this.viewContainerRef, menuItems, { x: mouseEvent.x, y: mouseEvent.y })\n .then((contextMenu) => {\n // Using instance's (contextMenu.instance) property does not work for gelato component's,\n // using native custom element's event instead.\n // Fix when we update Gelato version with this fix:\n // Bug 63289: Angular - Cannot manually subscribe to events\n // https://dev.azure.com/GenetecCentral/UXDev/_workitems/edit/63289/\n (contextMenu.location.nativeElement as Element).addEventListener('didClose', () => {\n this.isContextMenuOpen = false;\n this.onContextMenuHideSubject.next();\n });\n })\n .fireAndForget();\n\n this.isContextMenuOpen = true;\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n return true;\n }\n\n public hideContextMenu(): void {\n if (this.isContextMenuOpen) {\n this.isContextMenuOpen = false;\n this.contextMenuFactory.destroy();\n }\n }\n\n public onOpenOptionsClicked(): void {\n this.commandsService.executeCommand(SharedCommands.ShowOptions);\n }\n\n public async onShowSecondaryTrayClicked(): Promise {\n await this.secondaryTrayPopup.toggle();\n }\n\n public onHamburgerMenuClick(): void {\n this.navBarService.isOpened$.pipe(take(1), untilDestroyed(this)).subscribe((val: boolean) => {\n this.navBarService.setIsOpenedState(!val);\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TrackedComponent } from '@modules/shared/components/tracked/tracked.component';\nimport { PluginItem } from '@modules/shared/interfaces/plugins/internal/pluginItem';\nimport { PluginTypes } from '@modules/shared/interfaces/plugins/public/plugin-types';\nimport { LanguageService, StringEntry } from '@modules/shared/services/language/language.service';\nimport { NavigationService } from '@modules/shared/services/navigation/navigation.service';\nimport { PluginService } from '@modules/shared/services/plugin/plugin.service';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { Constants } from '@src/constants';\nimport { SafeGuid } from 'safeguid';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Component({\n selector: 'app-task-plugin',\n templateUrl: './task-plugin.component.html',\n styleUrls: ['./task-plugin.component.scss'],\n})\nexport class TaskPluginComponent extends TrackedComponent implements OnInit, OnDestroy {\n public taskPlugin: PluginItem | undefined;\n constructor(\n private route: ActivatedRoute,\n private navigationService: NavigationService,\n private pluginService: PluginService,\n private languageService: LanguageService,\n trackingService: TrackingService\n ) {\n super(trackingService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.route.params.pipe(untilDestroyed(this)).subscribe(async (params) => {\n const pluginId = params[Constants.pluginTaskIdentifier] as string;\n const subTaskId = params[Constants.subTaskIdentifier] as string;\n\n let useFirstAvailableTask = true;\n\n if (pluginId) {\n this.taskPlugin = await this.pluginService.getPlugin(PluginTypes.Task, SafeGuid.parse(pluginId), undefined);\n if (this.taskPlugin) {\n useFirstAvailableTask = false;\n\n // update the page's title\n const title = this.taskPlugin.exposure.title;\n if (title) {\n this.languageService.setTitle(new StringEntry(title));\n }\n }\n }\n\n if (useFirstAvailableTask) {\n const plugins = await this.pluginService.getPlugins(PluginTypes.Task, undefined);\n if (plugins.length > 0) {\n const id = plugins[0].exposure?.id;\n if (id) {\n // use the navigation service to bring up the default task because we want the route to be applied\n let url = `/task/${id.toString()}`;\n\n if (subTaskId) {\n url += `/${subTaskId}`;\n }\n await this.navigationService.navigate(url);\n }\n }\n }\n });\n }\n}\n","\n","\n \n {{ 'STE_LABEL_DESTINATION' | translate }} \n\n \n {{ 'STE_LABEL_PRIVATE_TASKS' | translate }}\n \n \n {{ 'STE_LABEL_PUBLIC_TASKS' | translate }}\n \n\n {{ 'STE_LABEL_EXISTING_TASKS' | translate }} \n\n {{ 'STE_LABEL_NO_TASKS' | translate }} \n\n 0\">\n \n \n\n \n {{ 'STE_LABEL_TASK_NAME' | translate }}\n \n\n \n \n\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { MeltedIcon, MeltedModalAction, TextFlavor } from '@genetec/gelato-angular';\nimport { EvaluateSaveOutcome, SaveRequest, TasksClient, TaskVisibility } from '@modules/shared/api/api';\nimport { EntityComboComponent } from '@modules/shared/components/entity-browser/entity-combo/entity-combo.component';\nimport { ConnectionAwareModalComponent } from '@modules/shared/components/tracked/connection-aware-modal.component';\nimport { EntityBrowserFilter } from '@modules/shared/entity-browser/filters/entity-browser-filter';\nimport { EntityBrowserItemModel } from '@modules/shared/entity-browser/Items/entity-browser-item-model';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { TrackingService } from '@modules/shared/services/tracking.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '@securityCenter/services/authentication/auth.service';\nimport { SecurityCenterClientService } from '@securityCenter/services/client/security-center-client.service';\nimport { TreeItem } from '@shared/interfaces/tree-item/tree-item';\nimport { EntityTypes } from 'RestClient/Client/Enumerations/EntityTypes';\nimport { Guids } from 'RestClient/Client/Enumerations/Guids';\nimport { PrivilegedEntity } from 'RestClient/Client/Model/PrivilegedEntity';\nimport { UserEntity } from 'RestClient/Client/Model/UserEntity';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { IGuid, SafeGuid } from 'safeguid';\nimport { KnownPrivileges } from 'WebClient/KnownPrivileges';\nimport { TreeViewItem } from './tree-view-item';\n\n@UntilDestroy()\n@Component({\n selector: 'app-save-task',\n templateUrl: './save-task.component.html',\n styleUrls: ['./save-task.component.scss'],\n})\nexport class SaveTaskComponent extends ConnectionAwareModalComponent implements OnInit {\n /** Represents the task type of all web app tasks */\n private static readonly webAppTaskTypeId = SafeGuid.parse('{5CC16A69-2247-4E63-A415-C0913AFD105A}');\n\n /** Guid of the Partition feature. If the feature is not enabled, partitions are hidden from the user */\n private static readonly partitionFeatureGuid = SafeGuid.parse('9260e773-4d06-4778-99e6-a638b2e4e6e1');\n\n @Input() public taskSubtype: IGuid = SafeGuid.EMPTY;\n @Input() public taskContext = '';\n\n @ViewChild('partitionEntityCombo') public set setPartitionEntityCombo(content: EntityComboComponent) {\n if (content) {\n const filter = new EntityBrowserFilter(EntityTypes.Partitions);\n filter.excludedEntities.add(Guids.SystemPartition);\n content.entityBrowserFilter = filter;\n // TODO: Pick a default partition\n }\n }\n\n public readonly TextFlavor = TextFlavor;\n\n /** Indicates which radio button was selected. Either public or private */\n public taskVisibility?: string;\n\n public canSave = false;\n public saveButtonText: string;\n public destructiveAction = MeltedModalAction.Optional;\n public publicTaskDisabled = false;\n public privateTaskDisabled = false;\n public showPartitionPicker = false;\n public partitionGuid = SafeGuid.EMPTY;\n public taskName = '';\n public existingTaskItems: Array = [];\n\n private wouldCreate?: boolean;\n private partitionFeatureEnabled = true;\n private privateTaskItems?: Array;\n private publicTaskItems?: Array;\n private evaluateSaveState: Subject = new Subject();\n\n constructor(\n injector: Injector,\n trackingService: TrackingService,\n authService: AuthService,\n private taskClient: TasksClient,\n private securityCenterClientService: SecurityCenterClientService,\n private translateService: TranslateService\n ) {\n super(authService, injector, trackingService);\n\n // TODO SCD: List of enabled features is not available from REST. Assume the feature is enabled for now\n this.partitionFeatureEnabled = true;\n this.saveButtonText = translateService.instant('STE_BUTTON_SAVE') as string;\n }\n\n ngOnInit(): void {\n this.publicTaskDisabled = !this.securityCenterClientService.scClient.isGlobalPrivilegeGranted(KnownPrivileges.modifyUserTasksPrivilege);\n this.privateTaskDisabled = !this.securityCenterClientService.scClient.isGlobalPrivilegeGranted(KnownPrivileges.managePrivateTasksPrivilege);\n\n // if (!this.privateTaskDisabled /* && !Proxy.EntityManager.CurrentUser.LastSelectedSaveAsPublicTask */) {\n // this.taskVisibility = 'private';\n // }\n\n this.evaluateSaveState\n .asObservable()\n .pipe(debounceTime(500), untilDestroyed(this))\n .subscribe(async () => await this.refreshSaveState());\n }\n\n public onSaveClick = async (): Promise => {\n const saveRequest = new SaveRequest();\n saveRequest.partitionId = SafeGuid.from(this.partitionGuid);\n saveRequest.fullPath = this.taskName;\n saveRequest.taskType = SaveTaskComponent.webAppTaskTypeId;\n saveRequest.taskSubtype = this.taskSubtype;\n saveRequest.context = this.taskContext;\n saveRequest.visibility = this.taskVisibility === 'private' ? TaskVisibility.Private : TaskVisibility.Public;\n\n try {\n await this.taskClient.save(saveRequest).toPromise();\n } catch (e) {\n console.log('Error saving task: ', e);\n return false;\n }\n\n // Returning true closes the modal.\n return true;\n };\n\n public async onDestinationChange(): Promise {\n const isPrivate = this.taskVisibility === 'private';\n\n this.refreshPartitionPickerVisibility();\n\n this.queueRefreshSaveState();\n\n let taskItems = isPrivate ? this.privateTaskItems : this.publicTaskItems;\n\n if (!taskItems) {\n // Not populated. Do the initial query\n const response = await this.taskClient.retrieve(isPrivate ? TaskVisibility.Private : TaskVisibility.Public).toPromise();\n taskItems = [];\n\n if (response.treeViewItems) {\n for (const item of response.treeViewItems) {\n const newChild: TreeViewItem = {\n id: item.id?.toString() ?? '',\n text: item.name ?? '',\n icon: item.isFolder ? MeltedIcon.Folder : MeltedIcon.Cards,\n isFolder: !!item.isFolder,\n alreadyVisited: false,\n };\n\n taskItems.push(newChild);\n }\n }\n\n if (isPrivate) {\n this.privateTaskItems = taskItems;\n } else {\n this.publicTaskItems = taskItems;\n }\n }\n\n this.existingTaskItems = taskItems;\n }\n\n // TODO Rework the typings design of TreeViewItem\n public async onSelectedTaskChange(item: TreeItem | null): Promise {\n if (!item) {\n // early exit if null or undefined\n return;\n }\n const treeViewItem = item as TreeViewItem;\n\n const fragments: string[] = [];\n\n let node: TreeItem = item;\n\n while (node) {\n if (node.text) {\n fragments.push(node.text);\n }\n if (node.parent) {\n node = node.parent;\n }\n }\n\n fragments.reverse();\n\n const searchPath = fragments.join('\\\\');\n this.taskName = '/' + fragments.join('/');\n this.queueRefreshSaveState();\n\n if (treeViewItem.alreadyVisited || !treeViewItem.isFolder) {\n return;\n }\n\n const response = await this.taskClient.retrieve(this.taskVisibility === 'private' ? TaskVisibility.Private : TaskVisibility.Public, searchPath).toPromise();\n\n treeViewItem.alreadyVisited = true;\n\n if (response.treeViewItems && response.treeViewItems.length > 0) {\n item.children = [];\n\n for (const child of response.treeViewItems) {\n const newChild: TreeViewItem = {\n parent: item,\n id: child.id?.toString() ?? '',\n text: child.name ?? '',\n icon: child.isFolder ? MeltedIcon.Folder : MeltedIcon.Cards,\n isFolder: !!child.isFolder,\n alreadyVisited: false,\n isChecked: false,\n };\n\n item.children?.push(newChild);\n }\n } else {\n item.children = undefined;\n }\n }\n\n public onNameChange(): void {\n this.queueRefreshSaveState();\n }\n\n public onSelectedPartitionChanged(): void {\n this.queueRefreshSaveState();\n }\n\n public canSelectPartition = async (model: EntityBrowserItemModel): Promise => {\n const user = (await this.securityCenterClientService.scClient.getEntityAsync(UserEntity, this.securityCenterClientService.scClient.userId)) as PrivilegedEntity;\n const hasPrivilege = await user.isPrivilegeGrantedAsync(KnownPrivileges.addPublicTasksPrivilege, model.id);\n\n return !!hasPrivilege;\n };\n\n /** Queues a state refresh of the Save button */\n private queueRefreshSaveState(): void {\n this.canSave = false;\n this.evaluateSaveState.next();\n }\n\n private async refreshSaveState(): Promise {\n const partitionRequired = this.taskVisibility === 'public' && SafeGuid.EMPTY.equals(this.partitionGuid);\n\n if (this.taskName !== '') {\n const result = await this.taskClient\n .evaluateSave(this.taskName, SafeGuid.EMPTY, SaveTaskComponent.webAppTaskTypeId, this.taskVisibility === 'private' ? TaskVisibility.Private : TaskVisibility.Public)\n .toPromise();\n\n switch (result.evaluateSaveOutcome) {\n case EvaluateSaveOutcome.CannotBeSaved: {\n this.canSave = false;\n this.wouldCreate = false;\n this.destructiveAction = MeltedModalAction.Optional;\n break;\n }\n case EvaluateSaveOutcome.WouldCreate: {\n this.canSave = !partitionRequired;\n this.saveButtonText = this.translateService.instant('STE_BUTTON_SAVE') as string;\n this.wouldCreate = true;\n this.destructiveAction = MeltedModalAction.Optional;\n break;\n }\n case EvaluateSaveOutcome.WouldOverwrite: {\n this.canSave = true;\n this.saveButtonText = this.translateService.instant('STE_BUTTON_OVERWRITE') as string;\n this.wouldCreate = false;\n this.destructiveAction = MeltedModalAction.Default;\n break;\n }\n }\n }\n\n this.refreshPartitionPickerVisibility();\n }\n\n private refreshPartitionPickerVisibility(): void {\n this.showPartitionPicker = this.taskVisibility === 'public' && this.partitionFeatureEnabled && this.wouldCreate === true; //and available partitions > 1\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';\nimport { of } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { AuthService } from './auth.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@UntilDestroy()\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n //#region Constructor\n constructor(private authService: AuthService) {}\n\n //#endregion\n\n //#region Public Methods\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n return this.authService.loggedIn$.pipe(\n map((isLoggedIn: boolean) => {\n // Redirects if the user is loggedIn.\n this.authService.loginRedirectUrl = state.url;\n // Indicate if we're loggedIn or not.\n return isLoggedIn;\n }),\n catchError((err) => {\n return of(false);\n }),\n untilDestroyed(this)\n );\n }\n\n //#endregion\n}\n","import { NgModule } from '@angular/core';\nimport { DefaultUrlSerializer, RouterModule, Routes, UrlSerializer, UrlTree } from '@angular/router'; // CLI imports router\nimport { Constants } from '@src/constants';\nimport { TaskPluginComponent } from '../components/nav-bar/task-plugin/task-plugin.component';\nimport { OptionsComponent } from '../components/options/options.component';\nimport { AuthGuard } from '../security-center/services/authentication/auth-guard.service';\n\nexport class LowerCaseUrlSerializer extends DefaultUrlSerializer {\n parse(url: string): UrlTree {\n return super.parse(url.toLowerCase());\n }\n}\n\nexport const routes: Routes = [\n { path: '', component: TaskPluginComponent, pathMatch: 'full', canActivate: [AuthGuard] },\n {\n path: `task/:${Constants.pluginTaskIdentifier}`,\n component: TaskPluginComponent,\n canActivate: [AuthGuard],\n },\n {\n path: `task/:${Constants.pluginTaskIdentifier}/:${Constants.subTaskIdentifier}`,\n component: TaskPluginComponent,\n canActivate: [AuthGuard],\n },\n { path: 'options', outlet: 'modal', component: OptionsComponent },\n { path: '**', component: TaskPluginComponent, canActivate: [AuthGuard] }, // wildcard match\n];\n\n// configures NgModule imports and exports\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n providers: [\n {\n provide: UrlSerializer,\n useClass: LowerCaseUrlSerializer,\n },\n ],\n})\nexport class AppRoutingModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\nimport { AuthService } from './auth.service';\n\n// ==========================================================================\n// Copyright (C) 2019 by Genetec, Inc.\n// All rights reserved.\n// May be used only in accordance with a valid Source Code License Agreement.\n// ==========================================================================\n@Injectable({ providedIn: 'root' })\nexport class AuthInterceptor implements HttpInterceptor {\n //#region Constants\n\n private static readonly knownAuthHeaders = ['Authorization', 'WebAppSessionIdHeader', 'WebAppUniqueIdHeader', 'X-XSRF-TOKEN'];\n\n //#endregion\n\n constructor(private authService: AuthService) {}\n\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const headersDictionary: { [name: string]: string | string[] } = {\n 'Content-Type': 'application/json; charset=utf-8',\n Accept: 'application/json',\n };\n\n // Try and get the active session headers\n const headers = this.authService.getConnectionHeaders();\n if (headers) {\n for (const header of headers) {\n if (!headersDictionary[header[0]] && AuthInterceptor.knownAuthHeaders.some((item) => item === header[0])) {\n headersDictionary[header[0]] = header[1];\n }\n }\n }\n\n // clone the request with the adjusted headers\n const clonedReq = req.clone({\n setHeaders: headersDictionary,\n });\n\n return next.handle(clonedReq);\n }\n}\n","// Array extensions\nexport {};\ndeclare global {\n interface TypedHistogramBin {\n count: number;\n center: TCenter;\n width: TWidth;\n }\n\n type HistogramBin = TypedHistogramBin;\n\n interface Array {\n /**\n * Returns an array where the elements are distinct given a selector of a property to do the distinct by\n *\n * @param selector - Function to select the property to compare\n * @returns The filtered array\n */\n distinctBy(selector: (a: T) => any): T[];\n\n /**\n * Remove all the elements of an array after the first match from the selector. Defaults to returning the entire array if no match\n *\n * @param selector - Function to select the match to trim after\n * @returns The adjusted array\n */\n removeAfter(selector: (a: T) => boolean): T[];\n /**\n * Shuffle the elements of the array using a uniform random distribution\n *\n * @returns The shuffled array\n */\n shuffle(): T[];\n\n /**\n * Compute a histogram of an array of values\n *\n * @param bins - The number of bins to create\n * @param selector - Function to select which value to use for the binning\n * @returns The histogram results\n */\n hist(bins: number, selector: (a: T) => number): HistogramBin[];\n\n /**\n * Get the maximum value of the array\n *\n * @returns The max value or null if the array is of length 0\n */\n max(): T | null;\n\n /**\n * Get the minimum value of the array\n *\n * @returns The min value or null if the array is of length 0\n */\n min(): T | null;\n\n /**\n * Compute the maximum value utilizing a selector\n *\n * @param selector - Function to select the value to use for computation\n * @returns the maximum value or null of array.length = 0\n */\n maxBy(selector: (a: T) => any): T | null;\n\n /**\n * Compute the minimum value utilizing a selector\n *\n * @param selector - Function to select the value to use for computation\n * @returns the minimum value or null of array.length = 0\n */\n minBy(selector: (a: T) => any): T | null;\n\n /**\n * Compute the sub-array at a given start index, optionally with a max number of elements\n *\n * @param start - The starting 0-based index\n * @param length - The max number of elements to take\n * @returns The new sub-array\n */\n sub(start: number, length?: number): T[];\n\n /**\n * Remove specific elements from the array (in-place)\n *\n * @param selector - Function to identify which element to remove\n */\n removeWhere(selector: (a: T) => boolean): void;\n\n /**\n * Remove the specified element from the array (in-place)\n *\n * @param element - The element to remove\n */\n remove(element: T): void;\n }\n}\n\nif (!Array.prototype.hist) {\n Array.prototype.hist = function (this: T[], nbins: number, selector: (a: T) => number): HistogramBin[] {\n const bins = Array(nbins);\n\n const values = this.map(selector);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const duration = max - min;\n const binWidth = duration / nbins;\n const halfWidth = binWidth / 2.0;\n\n for (let i = 0; i < nbins; i++) {\n let center = min + halfWidth;\n if (i > 0) {\n center += binWidth * i;\n }\n\n // left edge\n const low = center - halfWidth;\n // right edge\n const high = center + halfWidth;\n // count the points between the edges\n const count = values.filter((v) => v >= low && v < high).length;\n bins[i] = {\n center,\n width: binWidth,\n count,\n };\n }\n\n return bins;\n };\n}\n\nif (!Array.prototype.distinctBy) {\n Array.prototype.distinctBy = function (this: T[], selector: (a: T) => any): T[] {\n return this.filter((thing, i, arr) => {\n if (arr) {\n const found = arr.find((t) => selector(t) === selector(thing));\n if (found) {\n return arr.indexOf(found) === i;\n }\n }\n return false;\n });\n };\n}\n\nif (!Array.prototype.removeAfter) {\n Array.prototype.removeAfter = function (this: T[], selector: (a: T) => boolean): T[] {\n const idx = this.findIndex(selector);\n if (idx >= 0 && this.length - idx - 1 > 0) {\n this.splice(idx + 1, this.length - idx - 1);\n }\n return this;\n };\n}\n\nif (!Array.prototype.shuffle) {\n Array.prototype.shuffle = function (this: T[]): T[] {\n let currentIndex = this.length;\n let temporaryValue;\n let randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = this[currentIndex];\n this[currentIndex] = this[randomIndex];\n this[randomIndex] = temporaryValue;\n }\n\n return this;\n };\n}\n\nif (!Array.prototype.max) {\n Array.prototype.max = function (this: T[]): T | null {\n if (this.length === 0) return null;\n\n let max = this[0];\n for (let i = 1; i < this.length; i++) {\n if (this[i] > max) {\n max = this[i];\n }\n }\n return max;\n };\n}\n\nif (!Array.prototype.min) {\n Array.prototype.min = function (this: T[]): T | null {\n if (this.length === 0) return null;\n\n let min = this[0];\n for (let i = 1; i < this.length; i++) {\n if (this[i] < min) {\n min = this[i];\n }\n }\n return min;\n };\n}\n\nif (!Array.prototype.maxBy) {\n Array.prototype.maxBy = function (this: T[], selector: (a: T) => any): T | null {\n if (this.length === 0) return null;\n\n let item = this[0];\n\n // TODO: should we validate we are comparing valid types?\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n let max = selector(this[0]);\n for (let i = 1; i < this.length; i++) {\n if (selector(this[i]) > max) {\n max = selector(this[i]);\n item = this[i];\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n return item;\n };\n}\n\nif (!Array.prototype.minBy) {\n Array.prototype.minBy = function (this: T[], selector: (a: T) => any): T | null {\n if (this.length === 0) return null;\n\n let item = this[0];\n\n // TODO: should we validate we are comparing valid types?\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n let min = selector(this[0]);\n for (let i = 1; i < this.length; i++) {\n if (selector(this[i]) < min) {\n min = selector(this[i]);\n item = this[i];\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n return item;\n };\n}\n\nif (!Array.prototype.sub) {\n Array.prototype.sub = function (this: T[], start: number, length?: number): T[] {\n // null/undefined\n if (!this) return this;\n // no array to take\n if (this.length === 0) return this;\n // no length requested\n if (length !== undefined && length !== null && length === 0) return [];\n // array index out of bounds\n if (start >= this.length) return [];\n // at end of array, only 1 el to take\n if (start === this.length - 1) return [this[start]];\n\n if (length !== undefined && length !== null && length > 0 && start + length < this.length) {\n return this.slice(start, start + length);\n }\n return this.slice(start);\n };\n}\n\nif (!Array.prototype.removeWhere) {\n Array.prototype.removeWhere = function (this: T[], selector: (a: T) => boolean): void {\n let idx = this.findIndex((a) => selector(a));\n while (idx > -1) {\n this.splice(idx, 1);\n // loop and do it again if there are more matches\n idx = this.findIndex((a) => selector(a));\n }\n };\n}\n\nif (!Array.prototype.remove) {\n Array.prototype.remove = function (this: T[], element: T): void {\n const idx = this.findIndex((a) => a === element);\n if (idx > -1) {\n this.splice(idx, 1);\n }\n };\n}\n","import moment from 'moment';\n\ndeclare module 'moment' {\n interface Moment {\n /**\n * Get the min date based on utc and c# datetime\n */\n utcMinDate(): moment.Moment;\n\n /**\n * Get the max date based on utc and c# datetime\n */\n utcMaxDate(): moment.Moment;\n }\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nif (!moment.prototype.utcMinDate) {\n moment.prototype.utcMinDate = function () {\n return moment.utc('0001-01-01T00:00:00');\n };\n}\n\nif (!moment.prototype.utcMaxDate) {\n moment.prototype.utcMaxDate = function () {\n return moment.utc('9999-12-31T23:59:59');\n };\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n","// Promise extensions\nexport {};\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Promise {\n /**\n * Catches any error that the promise might trigger, essentially a way to handle a promise without caring for the results or waiting for it to complete.\n *\n * _Note_: Use intelligently and make sure the exceptions are handled properly in the promise itself!\n */\n fireAndForget(): void;\n }\n}\n\nif (!Promise.prototype.fireAndForget) {\n Promise.prototype.fireAndForget = function (this: Promise) {\n this.catch((e) => {\n console.error(e);\n });\n };\n}\n","import { IGuid, SafeGuid } from 'safeguid';\n\ndeclare global {\n // interface Map {\n // filter (predicate: (value: [K,V], index: number, array: [K,V][]) => unknown, thisArg?: any): [K,V][];\n // }\n\n function isString(object: unknown): object is string;\n function isNonEmptyString(object: unknown): object is string;\n function isNumber(object: unknown): object is number;\n function isNonEmptyGuid(object: unknown): object is IGuid;\n function isGuid(object: unknown): object is IGuid | string;\n function isInstanceOfGuid(object: unknown): object is IGuid;\n function toGuid(object: unknown): IGuid;\n function isOfType(object: unknown, ...fieldsToCheck: (keyof T)[]): object is T;\n function isObject(object: unknown): object is Record;\n function isArray(object: unknown): object is Array;\n /**\n * Puts the guids in the string in lower case, leave other characters as they were.\n *\n * @param object the string to lowercase the guids from.\n */\n function toLowerCaseGuids(object: string): string;\n}\n\nconst guidRegExp = /\\(?\\{?(([a-z0-9]{8})-([a-z0-9]{4})-([a-z0-9]{4})-([a-z0-9]{4})-([a-z0-9]{12}))\\)?}?|(([a-z0-9]{8})([a-z0-9]{4})([a-z0-9]{4})([a-z0-9]{4})([a-z0-9]{12}))/gi;\n\nglobalThis.isString = (object: unknown): object is string => {\n return typeof object === 'string';\n};\n\nglobalThis.isNonEmptyString = (object: unknown): object is string => {\n return typeof object === 'string' && object.length > 0;\n};\n\nglobalThis.isNumber = (object: unknown): object is number => {\n return typeof object === 'number';\n};\n\nglobalThis.isNonEmptyGuid = (object: unknown): object is IGuid => {\n return isInstanceOfGuid(object) && !object.isEmpty();\n};\n\nglobalThis.toLowerCaseGuids = (object: string): string => {\n return object.replace(guidRegExp, (match) => match.toLowerCase());\n};\n\n/**\n * Returns true if the argument is a valid guid (string of **Guid** class instance).\n *\n * @param object The object or string to test.\n * @returns True if the object is of the Guid instance or a valid guid represented as a **string**.\n */\nglobalThis.isGuid = (object: unknown): object is IGuid | string => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return !!(object && (typeof object === 'string' || Object.getPrototypeOf(object).constructor.name === 'SafeGuid') && SafeGuid.isGuid(object));\n};\n\n/**\n * Returns true if the argument is a **Guid** class instance.\n *\n * @param object The object or string to test.\n * @returns True if the object is an instance of Guid.\n */\nglobalThis.isInstanceOfGuid = (object: unknown): object is IGuid => {\n return typeof object !== 'string' && isGuid(object);\n};\n\n/**\n * Creates a new **Guid** class instance from the string or return itself if it's already a **Guid** instance. Retrurns empty guid if not a valid guid.\n *\n * @param object The string\n * @returns\n */\nglobalThis.toGuid = (object: unknown): IGuid => {\n if (isInstanceOfGuid(object)) {\n return object;\n }\n\n return isGuid(object) ? SafeGuid.parse(object as string) : SafeGuid.EMPTY;\n};\n\nglobalThis.isOfType = (object: unknown, ...fieldsToCheck: (keyof T)[]): object is T => {\n return object instanceof Object && fieldsToCheck.every((field) => field in object);\n};\n\nglobalThis.isObject = (object: unknown): object is Record => {\n const type = typeof object;\n return !!object && !Array.isArray(object) && (type === 'function' || type === 'object');\n};\n\nglobalThis.isArray = (object: unknown): object is Array => {\n return Array.isArray(object);\n};\n","import { APP_BASE_HREF, CommonModule } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { LOCALE_ID, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { environment } from '@environments/environment';\nimport { GenAngularModule, GenLanguageModule, GenModalService } from '@genetec/gelato-angular';\nimport { MissingTranslationHandler, TranslateModule } from '@ngx-translate/core';\nimport { NgxsEmitPluginModule } from '@ngxs-labs/emitter';\nimport { NgxsSelectSnapshotModule } from '@ngxs-labs/select-snapshot';\nimport { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin';\nimport { NgxsModule } from '@ngxs/store';\nimport { enableMapSet } from 'immer';\nimport { MapsModule } from '@modules/maps/maps.module';\nimport { AccessControlModule } from '@modules/access-control/access-control.module';\nimport { AlarmsModule } from '@modules/alarms/alarms.module';\nimport { ClearanceModule } from '@modules/clearance/clearance.module';\nimport { CorrelationModule } from '@modules/correlation/correlation.module';\nimport { GeneralModule } from '@modules/general/general.module';\nimport { MissionControlModule } from '@modules/mission-control/mission-control.module';\nimport { LprModule } from '@modules/lpr/lpr.module';\nimport { InternalCommandsService } from '@modules/shared/services/commands/commands.service';\nimport { ContentServicesProviderService } from '@modules/shared/services/content/content-services-provider.service';\nimport { FeaturesService } from '@modules/shared/services/features/features.service';\nimport { MissingTranslationHelper } from '@modules/shared/services/language/language.service';\nimport { SideContextDataService } from '@modules/shared/services/side-context-data/side-context-data.service';\nimport { SideContextDataState } from '@modules/shared/services/side-context-data/side-context-data.state';\nimport { UserSettingsService } from '@modules/shared/services/user-settings/user-settings.service';\nimport { UserSettingsState } from '@modules/shared/services/user-settings/user-settings.state';\nimport { FeatureFlagsState } from '@modules/feature-flags/feature-flags.state';\nimport { SharedModule } from '@modules/shared/shared.module';\nimport { TilesModule } from '@modules/tiles/tiles.module';\nimport { VideoModule } from '@modules/video/video.module';\nimport { ActivityTrailClient, baseUrl, FeaturesClient, LanguageClient, PasswordStrengthClient, SessionClient, TasksClient } from '@modules/shared/api/api';\nimport {\n COMMANDS_SERVICE,\n CONTENT_SERVICES_PROVIDER,\n FEATURES_SERVICE,\n MODAL_SERVICE,\n SIDE_CONTEXT_SERVICE,\n USER_SETTINGS_SERVICE,\n} from '@modules/shared/interfaces/plugins/public/plugin-services-public.interface';\nimport { GetBaseUriForCodeGen } from '@utilities/base-uri-getter';\nimport { WINDOW } from '@utilities';\nimport { PrivilegeService } from '@modules/shared/privilege/privilege.service';\nimport { AppComponent } from './app.component';\nimport { LoadingScreenComponent } from './components/loading-screen/loading-screen.component';\nimport { LoginComponent } from './components/login/login.component';\nimport { NavBarComponent } from './components/nav-bar/nav-bar.component';\nimport { TaskPluginComponent } from './components/nav-bar/task-plugin/task-plugin.component';\nimport { OptionsComponent } from './components/options/options.component';\nimport { SaveTaskComponent } from './components/save-task/save-task.component';\nimport { AppSidePaneComponent } from './components/side-pane/side-pane.component';\nimport { AppRoutingModule } from './routing/app-routing.module';\nimport { AuthInterceptor } from './security-center/services/authentication/auth-interceptor.service';\n// import & load globals\nimport '@utilities/extensions';\n\nconst baseHrefFactory = (_basePath: string, _window: Window) => {\n const basePathOnly = _basePath.substring(_window.location.origin.length);\n const currentBaseHref = _window.location.pathname.substring(0, basePathOnly.length);\n return currentBaseHref;\n};\n\n@NgModule({\n declarations: [AppComponent, NavBarComponent, AppSidePaneComponent, TaskPluginComponent, LoginComponent, OptionsComponent, LoadingScreenComponent, SaveTaskComponent],\n imports: [\n NgxsModule.forRoot([SideContextDataState, UserSettingsState, FeatureFlagsState], {\n developmentMode: !environment.production,\n compatibility: {\n strictContentSecurityPolicy: true,\n },\n }),\n NgxsEmitPluginModule.forRoot(),\n NgxsSelectSnapshotModule.forRoot(),\n NgxsReduxDevtoolsPluginModule.forRoot({ disabled: environment.production }),\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n SharedModule.forRoot(),\n MapsModule,\n TilesModule,\n AlarmsModule,\n VideoModule,\n AccessControlModule,\n CorrelationModule,\n MissionControlModule,\n GeneralModule,\n ClearanceModule,\n GenAngularModule.forRoot(),\n GenLanguageModule,\n AppRoutingModule,\n TranslateModule.forRoot({\n missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MissingTranslationHelper },\n }),\n LprModule,\n ],\n providers: [\n FeaturesClient, // Auto-generated service\n TasksClient,\n SessionClient,\n PasswordStrengthClient,\n LanguageClient,\n ActivityTrailClient,\n { provide: baseUrl, deps: [], useFactory: GetBaseUriForCodeGen },\n { provide: LOCALE_ID, useValue: 'en' },\n { provide: CONTENT_SERVICES_PROVIDER, useClass: ContentServicesProviderService },\n { provide: USER_SETTINGS_SERVICE, useClass: UserSettingsService },\n { provide: COMMANDS_SERVICE, useClass: InternalCommandsService },\n { provide: SIDE_CONTEXT_SERVICE, useClass: SideContextDataService },\n { provide: MODAL_SERVICE, useClass: GenModalService },\n { provide: FEATURES_SERVICE, useClass: FeaturesService },\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n { provide: WINDOW, useValue: window },\n { provide: APP_BASE_HREF, useFactory: baseHrefFactory, deps: [baseUrl, WINDOW] },\n PrivilegeService,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {\n constructor() {\n // Load map and set plugin in immer\n enableMapSet();\n }\n}\n","import { ApplicationRef, enableProdMode, isDevMode } from '@angular/core';\nimport { enableDebugTools } from '@angular/platform-browser';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from './app/app.module';\nimport { Constants } from './constants';\nimport { environment, getBaseUrl } from './environments/environment';\n\n// base url is the location of server\nconst providers = [{ provide: Constants.baseUrlIdentifier, useFactory: getBaseUrl, deps: [] }];\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic(providers)\n .bootstrapModule(AppModule)\n .then((moduleRef) => {\n // in dev mode, start the angular profiler to diagnose performance issues\n if (isDevMode()) {\n const applicationRef = moduleRef.injector.get(ApplicationRef);\n const componentRef = applicationRef.components[0];\n // allows to run 'ng.profiler.timeChangeDetection();'\n enableDebugTools(componentRef);\n }\n })\n .catch((err) => console.log(err));\n","var map = {\n\t\"./gen-actions_90.entry.js\": [\n\t\t92894,\n\t\t\"common\",\n\t\t\"node_modules_genetec_gelato_dist_esm_gen-actions_90_entry_js\"\n\t],\n\t\"./gen-combobox-item-group.entry.js\": [\n\t\t94215,\n\t\t\"node_modules_genetec_gelato_dist_esm_gen-combobox-item-group_entry_js\"\n\t],\n\t\"./gen-side-pane-header-left.entry.js\": [\n\t\t69162,\n\t\t\"common\",\n\t\t\"node_modules_genetec_gelato_dist_esm_gen-side-pane-header-left_entry_js\"\n\t],\n\t\"./gen-side-pane-header-right.entry.js\": [\n\t\t75600,\n\t\t\"common\",\n\t\t\"node_modules_genetec_gelato_dist_esm_gen-side-pane-header-right_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 41752;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": 51528,\n\t\"./af.js\": 51528,\n\t\"./ar\": 49851,\n\t\"./ar-dz\": 80932,\n\t\"./ar-dz.js\": 80932,\n\t\"./ar-kw\": 95917,\n\t\"./ar-kw.js\": 95917,\n\t\"./ar-ly\": 11682,\n\t\"./ar-ly.js\": 11682,\n\t\"./ar-ma\": 45443,\n\t\"./ar-ma.js\": 45443,\n\t\"./ar-sa\": 74632,\n\t\"./ar-sa.js\": 74632,\n\t\"./ar-tn\": 97216,\n\t\"./ar-tn.js\": 97216,\n\t\"./ar.js\": 49851,\n\t\"./az\": 5681,\n\t\"./az.js\": 5681,\n\t\"./be\": 6722,\n\t\"./be.js\": 6722,\n\t\"./bg\": 2270,\n\t\"./bg.js\": 2270,\n\t\"./bm\": 60308,\n\t\"./bm.js\": 60308,\n\t\"./bn\": 15809,\n\t\"./bn-bd\": 79354,\n\t\"./bn-bd.js\": 79354,\n\t\"./bn.js\": 15809,\n\t\"./bo\": 29029,\n\t\"./bo.js\": 29029,\n\t\"./br\": 58137,\n\t\"./br.js\": 58137,\n\t\"./bs\": 40426,\n\t\"./bs.js\": 40426,\n\t\"./ca\": 62899,\n\t\"./ca.js\": 62899,\n\t\"./cs\": 6567,\n\t\"./cs.js\": 6567,\n\t\"./cv\": 66573,\n\t\"./cv.js\": 66573,\n\t\"./cy\": 88873,\n\t\"./cy.js\": 88873,\n\t\"./da\": 84140,\n\t\"./da.js\": 84140,\n\t\"./de\": 85988,\n\t\"./de-at\": 80896,\n\t\"./de-at.js\": 80896,\n\t\"./de-ch\": 12202,\n\t\"./de-ch.js\": 12202,\n\t\"./de.js\": 85988,\n\t\"./dv\": 19653,\n\t\"./dv.js\": 19653,\n\t\"./el\": 79405,\n\t\"./el.js\": 79405,\n\t\"./en-au\": 24090,\n\t\"./en-au.js\": 24090,\n\t\"./en-ca\": 40924,\n\t\"./en-ca.js\": 40924,\n\t\"./en-gb\": 26317,\n\t\"./en-gb.js\": 26317,\n\t\"./en-ie\": 49792,\n\t\"./en-ie.js\": 49792,\n\t\"./en-il\": 62137,\n\t\"./en-il.js\": 62137,\n\t\"./en-in\": 90506,\n\t\"./en-in.js\": 90506,\n\t\"./en-nz\": 71854,\n\t\"./en-nz.js\": 71854,\n\t\"./en-sg\": 71761,\n\t\"./en-sg.js\": 71761,\n\t\"./eo\": 50398,\n\t\"./eo.js\": 50398,\n\t\"./es\": 13606,\n\t\"./es-do\": 66977,\n\t\"./es-do.js\": 66977,\n\t\"./es-mx\": 95147,\n\t\"./es-mx.js\": 95147,\n\t\"./es-us\": 67363,\n\t\"./es-us.js\": 67363,\n\t\"./es.js\": 13606,\n\t\"./et\": 36785,\n\t\"./et.js\": 36785,\n\t\"./eu\": 53285,\n\t\"./eu.js\": 53285,\n\t\"./fa\": 18660,\n\t\"./fa.js\": 18660,\n\t\"./fi\": 89341,\n\t\"./fi.js\": 89341,\n\t\"./fil\": 81593,\n\t\"./fil.js\": 81593,\n\t\"./fo\": 62067,\n\t\"./fo.js\": 62067,\n\t\"./fr\": 34618,\n\t\"./fr-ca\": 21955,\n\t\"./fr-ca.js\": 21955,\n\t\"./fr-ch\": 19467,\n\t\"./fr-ch.js\": 19467,\n\t\"./fr.js\": 34618,\n\t\"./fy\": 79598,\n\t\"./fy.js\": 79598,\n\t\"./ga\": 43211,\n\t\"./ga.js\": 43211,\n\t\"./gd\": 80069,\n\t\"./gd.js\": 80069,\n\t\"./gl\": 71028,\n\t\"./gl.js\": 71028,\n\t\"./gom-deva\": 54213,\n\t\"./gom-deva.js\": 54213,\n\t\"./gom-latn\": 83350,\n\t\"./gom-latn.js\": 83350,\n\t\"./gu\": 3179,\n\t\"./gu.js\": 3179,\n\t\"./he\": 48468,\n\t\"./he.js\": 48468,\n\t\"./hi\": 98767,\n\t\"./hi.js\": 98767,\n\t\"./hr\": 93390,\n\t\"./hr.js\": 93390,\n\t\"./hu\": 50472,\n\t\"./hu.js\": 50472,\n\t\"./hy-am\": 12268,\n\t\"./hy-am.js\": 12268,\n\t\"./id\": 32954,\n\t\"./id.js\": 32954,\n\t\"./is\": 9497,\n\t\"./is.js\": 9497,\n\t\"./it\": 1507,\n\t\"./it-ch\": 588,\n\t\"./it-ch.js\": 588,\n\t\"./it.js\": 1507,\n\t\"./ja\": 60760,\n\t\"./ja.js\": 60760,\n\t\"./jv\": 44375,\n\t\"./jv.js\": 44375,\n\t\"./ka\": 29709,\n\t\"./ka.js\": 29709,\n\t\"./kk\": 10262,\n\t\"./kk.js\": 10262,\n\t\"./km\": 59992,\n\t\"./km.js\": 59992,\n\t\"./kn\": 91882,\n\t\"./kn.js\": 91882,\n\t\"./ko\": 7293,\n\t\"./ko.js\": 7293,\n\t\"./ku\": 98432,\n\t\"./ku.js\": 98432,\n\t\"./ky\": 43308,\n\t\"./ky.js\": 43308,\n\t\"./lb\": 89660,\n\t\"./lb.js\": 89660,\n\t\"./lo\": 64236,\n\t\"./lo.js\": 64236,\n\t\"./lt\": 88886,\n\t\"./lt.js\": 88886,\n\t\"./lv\": 46210,\n\t\"./lv.js\": 46210,\n\t\"./me\": 89215,\n\t\"./me.js\": 89215,\n\t\"./mi\": 59533,\n\t\"./mi.js\": 59533,\n\t\"./mk\": 13717,\n\t\"./mk.js\": 13717,\n\t\"./ml\": 40976,\n\t\"./ml.js\": 40976,\n\t\"./mn\": 41120,\n\t\"./mn.js\": 41120,\n\t\"./mr\": 82303,\n\t\"./mr.js\": 82303,\n\t\"./ms\": 62750,\n\t\"./ms-my\": 65007,\n\t\"./ms-my.js\": 65007,\n\t\"./ms.js\": 62750,\n\t\"./mt\": 41538,\n\t\"./mt.js\": 41538,\n\t\"./my\": 41861,\n\t\"./my.js\": 41861,\n\t\"./nb\": 93946,\n\t\"./nb.js\": 93946,\n\t\"./ne\": 41459,\n\t\"./ne.js\": 41459,\n\t\"./nl\": 86892,\n\t\"./nl-be\": 10676,\n\t\"./nl-be.js\": 10676,\n\t\"./nl.js\": 86892,\n\t\"./nn\": 98738,\n\t\"./nn.js\": 98738,\n\t\"./oc-lnc\": 74304,\n\t\"./oc-lnc.js\": 74304,\n\t\"./pa-in\": 20212,\n\t\"./pa-in.js\": 20212,\n\t\"./pl\": 43580,\n\t\"./pl.js\": 43580,\n\t\"./pt\": 6697,\n\t\"./pt-br\": 69584,\n\t\"./pt-br.js\": 69584,\n\t\"./pt.js\": 6697,\n\t\"./ro\": 41956,\n\t\"./ro.js\": 41956,\n\t\"./ru\": 68903,\n\t\"./ru.js\": 68903,\n\t\"./sd\": 84305,\n\t\"./sd.js\": 84305,\n\t\"./se\": 77374,\n\t\"./se.js\": 77374,\n\t\"./si\": 18805,\n\t\"./si.js\": 18805,\n\t\"./sk\": 51696,\n\t\"./sk.js\": 51696,\n\t\"./sl\": 73063,\n\t\"./sl.js\": 73063,\n\t\"./sq\": 72075,\n\t\"./sq.js\": 72075,\n\t\"./sr\": 33220,\n\t\"./sr-cyrl\": 67571,\n\t\"./sr-cyrl.js\": 67571,\n\t\"./sr.js\": 33220,\n\t\"./ss\": 91486,\n\t\"./ss.js\": 91486,\n\t\"./sv\": 60846,\n\t\"./sv.js\": 60846,\n\t\"./sw\": 94725,\n\t\"./sw.js\": 94725,\n\t\"./ta\": 89390,\n\t\"./ta.js\": 89390,\n\t\"./te\": 79094,\n\t\"./te.js\": 79094,\n\t\"./tet\": 42982,\n\t\"./tet.js\": 42982,\n\t\"./tg\": 4637,\n\t\"./tg.js\": 4637,\n\t\"./th\": 59851,\n\t\"./th.js\": 59851,\n\t\"./tk\": 18136,\n\t\"./tk.js\": 18136,\n\t\"./tl-ph\": 9876,\n\t\"./tl-ph.js\": 9876,\n\t\"./tlh\": 660,\n\t\"./tlh.js\": 660,\n\t\"./tr\": 93107,\n\t\"./tr.js\": 93107,\n\t\"./tzl\": 45958,\n\t\"./tzl.js\": 45958,\n\t\"./tzm\": 92838,\n\t\"./tzm-latn\": 57379,\n\t\"./tzm-latn.js\": 57379,\n\t\"./tzm.js\": 92838,\n\t\"./ug-cn\": 25454,\n\t\"./ug-cn.js\": 25454,\n\t\"./uk\": 1615,\n\t\"./uk.js\": 1615,\n\t\"./ur\": 55309,\n\t\"./ur.js\": 55309,\n\t\"./uz\": 81879,\n\t\"./uz-latn\": 71537,\n\t\"./uz-latn.js\": 71537,\n\t\"./uz.js\": 81879,\n\t\"./vi\": 92341,\n\t\"./vi.js\": 92341,\n\t\"./x-pseudo\": 69015,\n\t\"./x-pseudo.js\": 69015,\n\t\"./yo\": 75430,\n\t\"./yo.js\": 75430,\n\t\"./zh-cn\": 46607,\n\t\"./zh-cn.js\": 46607,\n\t\"./zh-hk\": 61211,\n\t\"./zh-hk.js\": 61211,\n\t\"./zh-mo\": 30856,\n\t\"./zh-mo.js\": 30856,\n\t\"./zh-tw\": 34911,\n\t\"./zh-tw.js\": 34911\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["LogSeverity","All","Debug","Error","Fatal","Full","Information","None","Performance","Warning","values","environment","production","logSeverities","baseUrl","InjectionToken","MapsProviderClient","constructor","http","jsonParseReviver","undefined","this","getProviderKey","providerId","url_","encodeURIComponent","replace","options_","observe","responseType","withCredentials","headers","HttpHeaders","request","pipe","_observableMergeMap","response_","processGetProviderKey","_observableCatch","HttpResponseBase","_observableThrow","e","response","status","responseBlob","HttpResponse","body","error","Blob","_headers","key","keys","get","blobToText","_responseText","result200","resultData200","JSON","parse","_observableOf","throwException","HttpClient","factory","ApiException","message","result","super","isApiException","static","obj","blob","Observable","observer","reader","FileReader","onload","event","next","target","complete","readAsText","GetBaseUriForCodeGen","tags","document","getElementsByTagName","length","uri","href","endsWith","substr","CONTENT_SERVICES_PROVIDER","COMMANDS_SERVICE","SIDE_CONTEXT_SERVICE","USER_SETTINGS_SERVICE","MODAL_SERVICE","FEATURES_SERVICE","MAPS_BOTTOM_CONTEXT_SERVICE","mapsServiceId","SafeGuid","CommandEntry","keyValue","executeHandler","handlerValue","canExecuteHandler","canExecuteHandlerValue","isAvailableHandler","isAvailableHandlerValue","getDisplayHandler","getDisplayHandlerValue","commandId","CommandBindings","commandIds","Map","commandKeys","addCommand","commandInfo","entry","executeCommandHandler","isCommandAvailableHandler","canExecuteCommandHandler","getCommandDisplayHandler","set","toString","toLowerCase","assignKey","getCommand","getCommandFromKey","getCommands","Array","from","KnownPrivileges","Object","freeze","runConfigToolPrivilege","runSecurityDeskPrivilege","sdkLogonPrivilege","webClientConnectionPrivilege","federationLogonPrivilege","globalCardholderSynchronizerLogonPrivilege","mobileClientLogonPrivilege","patrollerLogonPrivilege","patrollerAccessReadsHitsPrivilege","viewSchedulesPrivilege","modifySchedulesPrivilege","addSchedulesPrivilege","deleteSchedulesPrivilege","viewAccessControlUnitsPrivilege","accessControlUnitFirmwareUpgradePrivilege","modifyAccessControlUnitsPrivilege","addAccessControlUnitsPrivilege","deleteAccessControlUnitsPrivilege","resetAccessControlUnitsPrivilege","viewPatrollersPrivilege","modifyPatrollersPrivilege","deletePatrollersPrivilege","viewLprUnitsPrivilege","modifyLprUnitsPrivilege","addLprUnitsPrivilege","deleteLprUnitsPrivilege","resetLprUnitsPrivilege","triggerReadLprUnitsPrivilege","viewPlatelistEntriesPrivilege","modifyPlatelistEntriesPrivilege","deletePlatelistEntriesPrivilege","addPlatelistEntriesPrivilege","viewCardholdersPrivilege","modifyCardholdersPrivilege","addCardholdersPrivilege","deleteCardholdersPrivilege","viewCardholderGroupsPrivilege","changeCardholderOptionsPrivilege","modifyCardholderGroupsPrivilege","addCardholderGroupsPrivilege","deleteCardholderGroupsPrivilege","modifyCardholderGroupCustomFieldsPrivilege","viewCredentialsPrivilege","modifyCredentialsPrivilege","addCredentialsPrivilege","deleteCredentialsPrivilege","modifyCredentialInformationPrivilege","viewAccessRulesPrivilege","modifyAccessRulesPrivilege","addAccessRulesPrivilege","deleteAccessRulesPrivilege","viewAlarmsPrivilege","modifyAlarmsPrivilege","addAlarmsPrivilege","deleteAlarmsPrivilege","viewMonitorGroupsPrivilege","modifyMonitorGroupsPrivilege","addMonitorGroupsPrivilege","deleteMonitorGroupsPrivilege","viewCamerasPrivilege","modifyCamerasPrivilege","addCamerasPrivilege","removeCamerasPrivilege","viewAnalogMonitorsPrivilege","modifyAnalogMonitorsPrivilege","addAnalogMonitorsPrivilege","removeAnalogMonitorsPrivilege","viewOutputBehaviorsPrivilege","modifyOutputBehaviorsPrivilege","addOutputBehaviorsPrivilege","deleteOutputBehaviorsPrivilege","viewDoorsPrivilege","modifyDoorsPrivilege","addDoorsPrivilege","deleteDoorsPrivilege","viewAreasPrivilege","modifyAreasPrivilege","addAreasPrivilege","deleteAreasPrivilege","viewElevatorsPrivilege","modifyElevatorsPrivilege","addElevatorsPrivilege","deleteElevatorsPrivilege","viewZonesPrivilege","modifyZonesPrivilege","addZonesPrivilege","deleteZonesPrivilege","viewAssetsPrivilege","modifyAssetsPrivilege","addAssetsPrivilege","deleteAssetsPrivilege","viewScheduledTasksPrivilege","modifyScheduledTasksPrivilege","addScheduledTasksPrivilege","deleteScheduledTasksPrivilege","viewMacroPrivilege","deleteMacroPrivilege","viewMapsPrivilege","modifyMapsPrivilege","addTilePluginsPrivilege","deleteTilePluginsPrivilege","viewBadgeTemplatesPrivilege","modifyBadgeTemplatesPrivilege","addBadgeTemplatesPrivilege","deleteBadgeTemplatesPrivilege","viewUserTasksPrivilege","modifyUserTasksPrivilege","addPublicTasksPrivilege","deletePublicTasksPrivilege","managePrivateTasksPrivilege","viewLprRulesPrivilege","modifyLprRulesPrivilege","addLprRulesPrivilege","deleteLprRulesPrivilege","viewCashRegistersPrivilege","modifyCashRegistersPrivilege","viewParkingZonesPrivilege","modifyParkingZonesPrivilege","addParkingZonesPrivilege","deleteParkingZonesPrivilege","viewParkingZoneRulesPrivilege","modifyParkingZoneRulesPrivilege","addParkingZoneRulesPrivilege","deleteParkingZoneRulesPrivilege","viewVisitorsPrivilege","modifyVisitorsPrivilege","viewIntrusionUnitsPrivilege","modifyIntrusionUnitsPrivilege","resetIntrusionUnitsPrivilege","intrusionUnitFirmwareUpgradePrivilege","addIntrusionDetectionUnitsPrivilege","deleteIntrusionDetectionUnitsPrivilege","viewIntrusionAreasPrivilege","modifyIntrusionAreasPrivilege","addIntrusionDetectionAreasPrivilege","deleteIntrusionDetectionAreasPrivilege","modifyCameraSequencePrivilege","addCameraSequencesPrivilege","deleteCameraSequencesPrivilege","viewVideoUnitsPrivilege","videoUnitFirmwareUpgradePrivilege","modifyVideoUnitsPrivilege","addVideoUnitsPrivilege","deleteVideoUnitsPrivilege","resetVideoUnitsPrivilege","reconnectVideoUnitsPrivilege","addCashRegistersPrivilege","deleteCashRegistersPrivilege","incidentsReportPrivilege","activityTrailsReportPrivilege","auditTrailsReportPrivilege","timeAttendanceReportPrivilege","cardholderActivityReportPrivilege","doorActivityReportPrivilege","areaActivityReportPrivilege","elevatorActivityReportPrivilege","areaPresenceReportPrivilege","intrusionAreaActivityReportPrivilege","intrusionUnitActivityReportPrivilege","credentialActivityReportPrivilege","credentialRequestHistoryReportPrivilege","visitorActivityReportPrivilege","assetActivityReportPrivilege","assetInventoryReportPrivilege","unitActivityReportPrivilege","zoneActivityReportPrivilege","hitsReportPrivilege","plateReadsReportPrivilege","readHitsPerLprZoneReportPrivilege","readHitsPerDayReportPrivilege","readsGroupingReportPrivilege","hitsGroupingReportPrivilege","hitsPerTypeReportPrivilege","hitsPerAgeReportPrivilege","lprZoneOccupationReportPrivilege","loginPerPatrollerReportPrivilege","dailyUsagePerPatrollerReportPrivilege","parkingZoneActivitiesReportPrivilege","parkingSessionsReportPrivilege","videoArchiveReportPrivilege","videoBookmarkReportPrivilege","videoMotionSearchReportPrivilege","forensicSearchReportPrivilege","cameraActivityReportPrivilege","cameraConfigurationReportPrivilege","archiverEventsReportPrivilege","videoFilesReportPrivilege","pointOfSaleReportPrivilege","iOConfigurationReportPrivilege","visitorReportPrivilege","accessReportPrivilege","enhancedAccessReportPrivilege","healthReportPrivilege","accessControlHealthHistoryPrivilege","accessTroubleshooterReportPrivilege","accessRulesConfigurationReportPrivilege","cardholdersConfigurationReportPrivilege","credentialsConfigurationReportPrivilege","unitsConfigurationReportPrivilege","alarmReportPrivilege","correlationReportPrivilege","cardholderCreatorPrivilege","credentialManagementPrivilege","peopleCountingPrivilege","surveillancePrivilege","changeCardholderStatusPrivilege","modifyCardholderNamePrivilege","modifyCardholderCustomFieldsPrivilege","modifyCardholderPicturePrivilege","changeCredentialStatusPrivilege","modifyCredentialNamePrivilege","modifyCredentialAssociationToCardholderPrivilege","modifyCredentialCustomFieldsPrivilege","printBadgesPrivilege","checkInVisitorsPrivilege","checkOutVisitorsPrivilege","modifyVisitorsCustomFieldsPrivilege","modifyVisitorPicturePrivilege","saveAndPrintSnapshotsPrivilege","useAudioPrivilege","setPtzPatternPrivilege","usePtzAuxiliariesPrivilege","setPtzAuxiliariesPrivilege","snoozeAlarmsPrivilege","forwardAlarmsPrivilege","forceAckAlarmPrivilege","inventoryReportPrivilege","incidentReportMCPrivilege","incidentBaseReportMCPrivilege","incidentProfilesReportMCPrivilege","logicalViewTaskPrivilege","mapDesignerTaskPrivilege","mapMonitoringTaskPrivilege","mapEditLayersPrivilege","systemTaskPrivilege","systemStatusTaskPrivilege","videoManagementTaskPrivilege","accessControlTaskPrivilege","intrusionDetectionTaskPrivilege","remoteSecurityDeskTaskPrivilege","lprTaskPrivilege","pluginTaskPrivilege","incidentMonitoringTaskPrivilege","incidentConfigurationTaskPrivilege","generalSettingsCustomFieldsPrivilege","generalSettingsEventsPrivilege","generalSettingsActionsPrivilege","generalSettingsLogicalIdPrivilege","generalSettingsPasswordSettingsPrivilege","generalSettingsActivityTrailsPrivilege","generalSettingsAudioPrivilege","generalSettingsIncidentCategoriesPrivilege","generalSettingsFeaturesPrivilege","allowAlarmManagementPrivilege","explicitlyUnlockDoorPrivilege","allowVisitorManagementPrivilege","patrollerPlaybackPrivilege","allowVideoPrivilege","allowPlaybackVideoPrivilege","removePrivacyProtectionPrivilege","recordManuallyPrivilege","protectVideoFilePrivilege","unprotectVideoFilePrivilege","addBookmarkPrivilege","editBookmarkPrivilege","deleteBookmarkPrivilege","exportVideoPrivilege","singleUserExportPrivilege","changeFocusAndIrisPrivilege","basicPtzOperationsPrivilege","lockPtzPrivilege","togglePtzMenuPrivilege","usePtzPresetsPrivilege","editPtzPresetPrivilege","usePtzPatternsPrivilege","acknowledgeAlarmsPrivilege","changeOwnPasswordPrivilege","triggerAlarmPrivilege","viewAdvancedCredentialInformationPrivilege","executeMacrosPrivilege","cameraMaintenanceModePrivilege","createIncidentsPrivilege","modifyIncidentsPrivilege","deleteIncidentsPrivilege","autoUnlockOverridePrivilege","viewWebPagesPrivilege","viewLiveCovertHitsPrivilege","sendEmailPrivilege","forgiveAntipassbackViolationPrivilege","sendMessagePrivilege","sendUserTaskPrivilege","playSoundPrivilege","triggerOutputPrivilege","printAndExportReportsPrivilege","removeResultsFromReportPrivilege","protectReadsHitsPrivilege","deleteLprHitPrivilege","triggerPastReadMatchingPrivilege","reconcileInventoriesPrivilege","parkingZoneInventoryResetPrivilege","parkingZoneSetOccupancyPrivilege","updateInlotViolationsPrivilege","hotlistAndPermitEditorPrivilege","modifyDeleteInventoryReadsPrivilege","editReadsPrivilege","armDisarmIntrusionAreaPrivilege","triggerIntrusionAlarmPrivilege","silenceIntrusionAlarmPrivilege","ackIntrusionAlarmPrivilege","armDisarmZonesPrivilege","useSpecificCommandsPrivilege","overrideLockPtzPrivilege","changeWorkspacePrivilege","startStopGuardtourPrivilege","changeSecurityDeskOptionsPrivilege","changeTileContextPrivilege","changeTilePatternPrivilege","editTilePatternPrivilege","changeClientViewsPrivilege","cameraAnalyticsPrivilege","digitalZoomPrivilege","displayVideoOverlaysPrivilege","overrideVideoQualityPrivilege","viewCameraSequencePrivilege","startStopSequencePrivilege","unitDiscoveryToolPrivilege","selectManufacturersPrivilege","addUnitManuallyPrivilege","moveUnitToolPrivilege","silenceSoundBuzzerPrivilege","maintenanceModePrivilege","emailReportPrivilege","displayEntityInSecurityDeskPrivilege","convertExportedFilesPrivilege","resetPeopleCountPrivilege","createMobileCredentialPrivilege","convertSharedEntitiesToLocalPrivilege","blockUnblockVideoPrivilege","setThreatLevelPrivilege","removeEncryptionPrivilege","viewStreamStatisticsPrivilege","viewStreamStatusPrivilege","viewRolePropertiesPrivilege","editRolePropertiesPrivilege","createNewRolePrivilege","deleteRolePrivilege","viewUserPropertiesPrivilege","editUserPropertiesPrivilege","createNewUserPrivilege","deleteUserPrivilege","viewUserGroupPropertiesPrivilege","editUserGroupPropertiesPrivilege","createNewUserGroupPrivilege","deleteUserGroupPrivilege","viewServerPropertiesPrivilege","editServerPrivilege","deleteServerPrivilege","viewNetworkPropertiesPrivilege","editNetworkPrivilege","viewPartitionPropertiesPrivilege","editPartitionPropertiesPrivilege","createNewPartitionPrivilege","deletePartitionPrivilege","hitsMultiRegionPrivilege","readsMultiregionPrivilege","viewTileLayoutsPrivilege","modifyTileLayoutsPrivilege","addTileLayoutsPrivilege","deleteTileLayoutsPrivilege","editAlarmContextPrivilege","viewChartsPrivilege","accessCameraStreamingInfoPrivilege","overrideElevatorAccessSchedulePrivilege","viewMobileUsersOnMapPrivilege","setCardholderSecurityClearancePrivilege","KnownFeatureFlagsToken","FeatureFlagsModule","featureFlagGroups","providers","push","provide","useValue","multi","ngModule","AccessStatus","Active","Inactive","Lost","Stolen","Expired","Requested","AccessStatusToColorPipe","transform","accessStatus","TextFlavor","pure","ActivityTrailClient","forgiveAntipassbackViolation","stringify","processForgiveAntipassbackViolation","saveSnapshot","processSaveSnapshot","EventsClient","getCacheLifetimeMilliseconds","processGetCacheLifetimeMilliseconds","events","processEvents","isArray","item","EventDefinition","fromJS","latestEvents","entityId","maxResults","processLatestEvents","EventEntry","supportedEntityTypes","processSupportedEntityTypes","EntityTypeResult","startMonitoringEvents","entityIds","forEach","processStartMonitoringEvents","stopMonitoringEvents","processStopMonitoringEvents","FeaturesClient","getAvailableFeatures","processGetAvailableFeatures","_guidConverters","toGuid","FilterClient","getFilterContent","processGetFilterContent","FilterContent","LanguageClient","getAvailableLanguages","processGetAvailableLanguages","Language","getAllWebClientStrings","language","processGetAllWebClientStrings","StringEntries","getCopyrights","processGetCopyrights","CopyrightInfo","getStrings","processGetStrings","NotificationsClient","getNotifications","processGetNotifications","NotificationItem","OptionsClient","getOptions","processGetOptions","OptionSection","setOptions","id","processSetOptions","PasswordStrengthClient","passwordStrength","processPasswordStrength","ResourcesClient","getCustomIcon","processGetCustomIcon","hasOwnProperty","result400","resultData400","getFileCache","processGetFileCache","getEncryptionKey","processGetEncryptionKey","EncryptionKey","getResources","processGetResources","SearchClient","getSearchResults","processGetSearchResults","SearchResult","SessionClient","getEvents","processGetEvents","getLoginInfo","redirectUri","processGetLoginInfo","LoginInfo","challengeAuthentication","processChallengeAuthentication","logoff","processLogoff","signoutOpenid","processSignoutOpenid","getIsAuthenticatedWithOpenId","processGetIsAuthenticatedWithOpenId","TasksClient","retrieve","visibility","parentPath","processRetrieve","RetrieveResponse","save","processSave","evaluateSave","fullPath","taskSubtype","taskType","processEvaluateSave","EvaluateSaveResponse","ThreatLevelClient","threatLevels","processThreatLevels","ThreatLevelInfo","setThreatLevel","threatLevelId","processSetThreatLevel","TimezonesClient","getTimezone","processGetTimezone","ITimezoneInfo","getTimezones","processGetTimezones","getSystemTimezone","processGetSystemTimezone","UserWatchlistClient","getUserWatchlist","processGetUserWatchlist","Watchlist","setUserWatchlist","processSetUserWatchlist","VersionClient","getVersionInfo","processGetVersionInfo","VersionInfo","data","property","init","_data","copyrights","toJSON","clone","json","CustomIconQueryEntry","_guidImplementation","state","CustomIconState","type","subType","EvaluateSaveOutcome","EvaluateSaveRequest","_discriminator","SaveRequest","evaluateSaveOutcome","eventType","eventSubType","correlationType","icon","name","rawName","category","listenByDefault","listenable","contextId","title","description","timestamp","timezone","color","FileCacheQueryEntry","fileCacheId","typeSpecificFields","FilterContext","filterProviderId","ForgiveAntipassbackViolation","cardholderToForgive","GeoCoordinate","altitude","latitude","longitude","SearchContext","text","GlobalSearchContext","MapSearchContext","ITimezoneAbbreviations","standard","daylight","iana","displayName","abbreviations","openIdProviders","OpenIdProvider","mapId","viewArea","MapViewArea","activeLayers","topLeft","bottomRight","ModuleLoadData","version","buildVersion","canDismiss","isGlobal","priority","details","navigation","NotificationType","NotificationsFilter","ids","globalsOnly","logo","challengeUri","localOnly","isAvailable","settings","PasswordStrengthRequest","newPassword","treeViewItems","TreeViewItem","partitionId","context","SaveSnapshotInfo","camera","videoFrameDateTime","fileName","fileType","results","groupName","hasMore","total","SearchResultItem","TaskVisibility","level","isActive","isFolder","path","modulesLoadData","appVersion","restVersion","securityCenterVersion","securityCenterExactVersion","securityCenterServerName","serverName","releaseDate","entries","WatchlistEntry","WatchlistPriority","inpt","Constants","baseUrlIdentifier","pluginsBaseUrl","pluginTaskIdentifier","subTaskIdentifier","altText","ctrlText","shiftText","accessToken","isWebAppTokenSet","CommandUsage","canExecute","canExecuteInternal","value","contextMenuRefreshRequired","command","commandContext","execute","targetElement","MeltedIcon","tooltip","createMenuItem","secondaryText","keyBinding","parts","split","i","toLocaleLowerCase","modifier","toUpperCase","iconColor","actionItem","isAllowed","isHidden","ApplicationType","Datastore","Test","ConfigTool","Controller","SecurityDesk","AdminTool","WDTray","WDService","SDK","AccessDatastoreMacroManager","DirectoryPlugin","UnitSimulator","RoleController","IntegrationService","WebClient","Federation","RoamingFederation","SecurityDeskSimulator","UnitEmulator","Patroller","ServerManager","RoleModule","MigrationTool","MobileServer","MobileServerSlave","ImportTool","PatrollerConfigTool","MobileClient","AuthenticationService","RoleAgent","GcsRemote","DirectoryCache","UnKnown","ConnectionState","StateChangeArg","Disconnected","EntityInvalidatedArg","entityType","flags","EntityRemovedArg","EntityAddedArg","EventReceivedArg","evt","QueryReceivedArg","UnknownRequestReceivedArg","msgType","payload","RequestReceivedArg","userId","applicationId","DisconnectRequestArgs","tryToReconnect","ConsoleCommandRequestReceivedArg","group","method","param1","param2","param3","ActionReceivedArg","action","HttpStatusCode","RestResponseError","RestResponse","_body","statusCode","_statusCode","cancelled","_cancelled","logonResult","_logonResult","passwordConstraints","_passwordConstraints","code","responseInfo","_error","parseLoginResponseBody","parseTransactionResult","shouldSucceed","shouldFail","str","DispatchError","PromiseSubscription","handler","isOnce","isExecuted","executeAsync","scope","args","fn","setTimeout","apply","EventManagement","unsub","propagationStopped","stopPropagation","Subscription","DispatcherWrapper","dispatcher","_subscribe","subscribe","_unsubscribe","unsubscribe","_one","one","_has","has","_clear","clear","_count","count","sub","DispatcherBase","_wrap","_subscriptions","createSubscription","some","splice","_dispatch","ev","nargs","prototype","slice","call","cleanup","indexOf","asEvent","PromiseDispatcherBase","_dispatchAsPromise","ps","PromiseSimpleEventDispatcher","dispatch","arguments","dispatchAsync","SimpleEventDispatcher","SignalDispatcher","EventDispatcher","AsyncEventDispatcher","SignalEventDispatcher","CancellationToken","timeout","_cancelDispatcher","isCancellationRequested","cancelToken","onCancel","sleepAsync","ms","Promise","resolve","Deferred","autoCompleteData","success","promise","reject","reset","FieldValue","fieldId","_object","dirty","outputFunc","_value","_fieldId","object","isExtracted","setValue","setObject","FilterSet","size","_array","add","delete","callbackfn","_a","Symbol","toStringTag","iterator","first","pred","elem","firstOrDefault","where","Set","any","ObservableCollection","onAdded","onRemoved","onCleared","suspend","array","FieldObject","_fields","_propertyChangedDispatcher","lastFieldName","lastFieldValidFlags","lastFieldType","roParent","typeConstructor","otherFieldObject","loadFrom","AllFieldsKey","isDirty","allFields","onPropertyChanged","dispose","hasField","getNullableField","validFlags","isNullableFieldNull","getField","container","getFieldOrDefault","defaultValue","setNullableField","newValue","setField","current","getNullableFieldDate","getFieldDate","Date","setNullableFieldDate","setFieldDate","toISOString","getNullableFieldGuid","getFieldGuid","setNullableFieldGuid","setFieldGuid","setFieldArray","dataArray","getFieldArray","currentValue","setFieldArrayGuid","stringArray","getFieldArrayGuid","getFieldDictionary","keyType","Number","jsonObject","setFieldDictionary","getFieldObject","classType","newFo","loadFields","toJson","setFieldObject","setFieldObjectArray","getFieldObjectArray","getFieldObjectDictionary","setFieldObjectDictionary","config","fieldLoaded","source","loadFieldsFrom","fields","fieldsCopy","map","x","fromJson","toQueryString","initializeAllFields","MultiJsonParser","braceCount","inString","escaped","buffer","onObject","S","pos","c","substring","EventFilter","expandInfo","entities","eventTypes","entityTypes","customEventTypeIds","sources","newFilter","merge","filter","compareTo","CompareResult","addedFilter","added","removedFilter","removed","eType","newFitler","modified","Entities","EntityTypes","EventTypes","CustomEventTypeIds","ExpandInfo","Value","Timer","callback","_previousId","_period","_callback","change","clearTimeout","period","Streamer","streamerConnectionId","_streamerConnectionId","streamerStarted","_streamerStarted","restSessionId","_restSessionId","restTimeout","delay","retryCount","retryDelay","parent","maxStreamerCallDelay","waitForRestDelay","_currentStreamerFilter","_requestedStreamerFilters","_currentRetryAttempt","_streamerStateChangedDispatcher","Helpers","_streamerEntityInvalidatedDispatcher","_streamerEntityAddedDispatcher","_streamerEntityRemovedDispatcher","_streamerEventDispatcher","_streamerActionDispatcher","_streamerQueryDispatcher","_streamerRequestDispatcher","_streamerDisconnectRequestDispatcher","_streamerConsoleCommandRequestReceivedDispatcher","_unknownRequestDispatcher","_streamerSessionIdReceivedDispatcher","_startStreamerToken","streamerConnectionState","authorizationHeader","_parent","_restartStreamer","onRestartStreamer","_connectionRetryTimer","onConnectionRetryDelayExpired","disposeAsync","stopStreamerAsync","stopStreamerInternalAsync","clearCurrentFilter","setStreamerFilterAsync","newId","filterJson","invokeOnStreamerAsync","addToStreamerFilterAsync","removeFromStreamerFilterAsync","filterIds","currentFilter","filterId","buildAsync","compareResult","sendRequestResponseAsync","increaseDelayRequestResponseAsync","setReportFilterAsync","customReportIds","sendQueryResultAsync","sendQueryCompletedAsync","addConsoleDebugCommandAsync","getApplicationIdAsync","getInvokeOnStreamerAsync","verifyConnectionAsync","getObjectInvokeOnStreamerAsync","parseResponseAsync","entity_ActionReceived","validflags","entity_Invalidated","entity_Removed","entity_Added","entity_EventReceived","report_QueryReceived","sourceUser","sourceApplication","request_Received","methodName","request_ConsoleCommandReceived","request_DisconnectReceived","unknownRequestReceived","executeRequestAsync","newFO","onStateChangedAsync","newState","sendState","Connected","scheduleReconnectionAsync","Connecting","Reconnecting","fireConnectionChange","arg","Args","apiAction","fo","apiEvent","query","user","application","failed","tokenSource","startStreamerAsync","fireEvent","stopStreamerInternalImplAsync","pauseConnectionAsync","_evtSource","_ws","isWebSocket","enableWebSocket","startWebSocket","enableSSE","startSSE","writeMessageToWebSocket","send","close","url","restUrl","restServerUrl","that","Authorization","additionalHeaders","EventSourcePolyfill","onopen","onerror","onmessage","reason","headerString","WebSocket","onclose","Globals","newAuthorizationHeader","allowImpersonateHeader","impersonateServiceCredentialHeader","impersonateAppHeader","publicKeyHeader","dedicatedSessionIdHeader","sessionTimeoutHeader","restAppNameHeader","xHttpMethodOverrideHeader","RestConnection","_restServerUrl","_additionalHeaders","appName","addAdditionalHeader","_authorizationHeader","_restStreamer","_retryCount","_retryDelay","streamer","_maxUriLength","allowImpersonate","windowsAuthentificationEnabled","entitiesStreamHubName","_restConnectionTestUrl","buildStreamer","username","password","window","btoa","token","input","setupConnection","authorizationToken","buildBasicAuthorizationHeader","executeRequestWithResponseTypeAsync","internalExecuteRequestAsync","cancelTokenSubscription","startsWith","requestHeaders","Headers","splitUrl","append","requestInit","controller","AbortController","abort","signal","restResponse","fetchResponse","fetch","responseBody","arrayBuffer","formData","getStreamedJsonAsync","verb","multiParser","getReader","read","done","TextDecoder","decode","waitForRestReadyAsync","headerKey","headerValue","normalize","normalizeValue","setImpersonatedApp","serviceCredential","app","clearCurrentFitler","onConnectionStateChanged","onEntityInvalidated","onEntityAdded","onEntityRemoved","onEventReceived","onActionReceived","onQueryReceived","onRequestReceived","onDisconnectRequestReceived","onConsoleCommandRequestReceived","onSessionIdReceived","LogonState","LogonStateChangedArgs","loggedOn","LoggedOn","ReloggedOn","RestOperation","_uri","RestRelationOperation","restObject","baseUri","RelationTrackerBase","pendingOperations","_pendingOperations","relation","_relation","elementId","readOnly","allowValueUpdate","isValid","_elementId","_readOnly","_allowValueUpdate","addRelationOperation","operation","addPendingOperation","transaction","addTransactionOperation","RelationFieldObjectTracker","_members","_classType","getValueAsync","canExecuteRelations","parseResponse","pushTransactionAsync","fieldObject","op","found","element","FieldList","Fields","_defaultFields","addField","fieldName","trim","field","QueryHelper","buildElemList","list","index","BuildElemDictionary","buildElem","aDate","strValue","buildFieldObjectList","EntityQuery","baseQuery","_queryHelper","_baseQuery","buildQuery","prepareQuery","customEntityTypes","GuidSet","entityOwnerTypes","entitySubTypes","excludedGuids","guids","includedGuids","roleTypeIds","runningStates","nameOrder","page","pageSize","logicalId","displayHiddenFromUI","federatedState","role","customFieldValues","fl","QueryFilter","columns","f","RelationGuidTracker","relationAndFilter","_relationAndFilter","client","itemKey","_query","_client","defaultFields","defField","scEntity","createEntityModel","Entity","RelationObjectTracker","_loaded","RelationSimpleFieldObjectTracker","updateSupported","_updateSupported","detectChanges","addOperation","RelationGuidTemplateTracker","RestObject","relations","_relations","updatedRelations","tracker","toDelete","canGet","_canGet","lastRelationValidFlags","lastRelationId","clearRelations","getRelation","relationId","getFieldObjectRelationAsync","getGuidRelationAsync","newTracker","getGuidTemplateRelationAsync","newtracker","resetRelation","updateDataRelationAsync","executeRequestTransactionAsync2","updateDataRelation2Async","getDataRelationAsync","getDataRelation2Async","newUri","rest","executeRequestTransactionAsync","responseHandler","reloadAsync","clearRelationOnly","getUpdateBody","getCreateBody","load","loadRelationsFrom","ValidFlags","Base","Specific","Membership","MemberOf","EntityDependency","RunningStatus","Event2action","Membership2","MemberOf2","PartitionOf","EntityStatus","AreaPeopleCount","Membership3","MemberOf3","EntityDependency2","EntityCustomfield","Behavior","EntityExtra","SpecificExtra","EntityMembership","EntityMemberOf","StealthData","EntityDependency3","EntityStatus2","EntityStatus3","Membership4","SyncStatus","EntityInfo","InformationProviders","MemberOf4","MemberOfMap","EntityFields","canDiagnoseField","creationTimeField","customIconIdField","defaultPartitionField","descriptionField","entityTypeField","federationLogicalParentField","hiddenFromUIField","idField","isCopyConfigSupportedField","isDeletableField","isFederatedField","isImportedFromExternalSystemField","isLogicalEntityField","isOwnedByPluginField","isReadOnlyField","isSynchronizedFromPluginField","isSynchronizingField","isVirtualChildField","localNameField","logicalIdField","maintenanceField","maintenanceEndTimeField","maintenanceReasonField","maxNameLengthField","nameField","nameDependsOnOtherEntityField","networkParentField","originalDirectoryField","originalIdField","originalNameField","ownerMasterApplicationField","ownerMasterRoleField","ownerMasterRoleTypeField","ownerMasterRoleTypeIdField","runningStateField","sharedField","sharedOverrideField","supportsMembershipField","synchronisedField","EntityNode","areas","FileCacheItem","localFilePath","relatedEntityGuid","fileGuid","fileLength","lastAccessTimeUtc","extension","Diagnostic","CustomIcon","guid","dataSmall","dataLarge","CustomField","canDiagnose","creationTime","customIconId","defaultPartition","federationLogicalParent","hiddenFromUI","isCopyConfigSupported","isDeletable","isFederated","isImportedFromExternalSystem","isLogicalEntity","isOwnedByPlugin","isReadOnly","isSynchronizedFromPlugin","isSynchronizing","isVirtualChild","localName","maintenance","maintenanceEndTime","maintenanceReason","maxNameLength","nameDependsOnOtherEntity","networkParent","originalDirectory","originalId","originalName","ownerMasterApplication","ownerMasterRole","ownerMasterRoleType","ownerMasterRoleTypeId","runningState","shared","sharedOverride","supportsMembership","synchronised","securityCache","newLoaded","getEntityAsync","getAreasAsync","getCopyConfigDataTemplateAsync","getCustomFieldValuesAsync","getCustomIconAsync","getCustomIconsAsync","getDiagnosticsAsync","enableMaintenanceAsync","endTime","inParam","getEntityPrivilegesAsync","deleteFilesCacheAsync","getFilesCacheAsync","addFilesCacheAsync","getInformationProvidersAsync","getLinkedMapsAsync","getPartitionsAsync","getRecursiveParentAreaAsync","sendHealthEventsAsync","sendRequestAsync","hasPrivilegesAsync","privileges","grantedPrivileges","tryGet","hasPrivileges","setEvery","guidString","privilegeGuid","insert","isOfType","AccessPointType","CardReader","Rex","DoorSensor","AreaDirection","PullStation","DoorLock","Zone","Floor","Buzzer","FloorInput","FloorOutput","EntrySensor","PlateReader","IntrusionAreaArming","IntrusionAreaDirection","LockSensor","OperatorConfirmation","AccessPointRuleType","Permanent","Temporary","CameraTypes","PTZCamera","VirtualCamera","PTZVirtualCamera","Sequence","GhostCamera","PanoramicCamera","WearableCamera","DeviceType","AlarmPanelInput","AlarmPanelOutput","AnalogMonitor","AudioDecoder","AudioEncoder","Input","Lpr","Output","Reader","Serial","VideoEncoder","VideoUnitInput","VideoUnitOutput","ScheduleType","Range","RangeAndTwilight","StreamType","Unknown","Video","Audio","MetaData","PrivacyProtection","AccessControlInterfaceType","V100","V200","V300","MR50","MR52","MR16IN","MR16OUT","MRDT","M52RP","M52SRP","M520In","M516Do","M516Dor","M58RP","M582K","MR51e","EP1502","EP1501","STidW33","STidUSB","DDSTPL2","DDSTPL4","KeriNXTWithEntraguard","KeriNXT","Sim","CorbinRusswin","Persona","Sargent","Tyco","AAother","Aperio","Sallis","A1001","EP1501WithExpansion","EP2500","M5IC","EP4502","PW6K1IC","PW6K1R2","PW6K1IN","PW6K1OUT","PIM400","AD400","AD300","PW5K1R1","PW5K1R2","PW5K1IN","PW5K1OUT","MSICS","MSACS","MSI8S","MSR8S","AutoVu","GatewayNode","SmartHandle","PadLock","Cylinder","External","SmartHandleWithInputs","CylinderWithInputs","NDEPIM400","NDEAD400","OSDP","SynergisIX","A1601","LP1501","LP1501WithExpansion","LP1502","LP2500","LP4502","MR62e","SynergisIX_Controller","SynergisIX_InputExpander","SynergisIX_OutputExpander","SynergisIX_ReaderExpander","SynergisIX_AnalogExpander","SynergisIX_Keypad","SynergisIX_Controller_CTRL_DIN","SynergisIX_Controller_CTRL_DIN_1D","SynergisIX_ReaderExpander_RDM2_DIN","PRO32IC","PRO32R2","PRO32IN","PRO32OUT","PRO22R1","SchlageIP","WiQGateway","WiQLock","PW7K1IC","PRO42IC","PW7K1R1","PW7K1R2","PW7K1IN","PW7K1OUT","PRO42R1","PRO42R2","PRO42IN","PRO42OUT","ZoneType","Hardware","Software","IO","ServerType","Extension","Main","LprUnitType","Mobile","Fixed","AccessPoints","AccessRules","Alarms","Applications","Areas","Cameras","Cardholders","CardholderGroups","Credentials","Devices","Doors","Elevators","Roles","OutputBehaviors","Partitions","SystemConfigurations","Schedules","Units","Users","UserGroups","Visitors","Zones","Macros","CashRegisters","LprUnits","Patrollers","Permits","Hotlists","OvertimeRules","PermitRules","SharedPermitRules","UserTasks","IntrusionAreas","IntrusionUnits","Servers","Assets","VideoUnits","Files","Monitors","ThreatLevels","Streams","Networks","Agents","Routes","Badges","Sequences","TilePlugins","MlpiRules","ScheduledTasks","AnalogMonitors","AnalogMonitorGroups","InterfaceModules","TransferGroups","CustomEntities","Maps","Keyboards","ArchivedStreams","HardwareUnits","ParkingZones","ParkingRules","FusionStreams","TileLayouts","DoorTemplates","InterfaceModuleDeviceDefinitions","Contact","Workstation","Endpoint","AlarmEntityFields","alarmRecordingTimeField","alarmVideoModeField","audioFileField","autoAckAfterField","canBeInvestigatedField","colorField","createIncidentField","distributionModeField","dwellTimeField","enableProcedureField","playbackPreTriggerTimeField","previewDefaultPositionField","previewSourceVideoModeField","priorityField","procedureField","protectVideoPeriodField","rearmThresholdField","TriggerInfo","sourceEntity","attachedEntities","forwardedRecipients","urls","Recipient","propagationLevel","AlarmEntity","alarmRecordingTime","alarmVideoMode","audioFile","autoAckAfter","canBeInvestigated","createIncident","distributionMode","dwellTime","enableProcedure","playbackPreTriggerTime","previewDefaultPosition","previewSourceVideoMode","procedure","protectVideoPeriod","rearmThreshold","getAttachedEntitiesAsync","forceAckAsync","getRecipientsAsync","getSchedulesAsync","triggerAsync","TransactionResult","RestTransactionResponse","transactionResult","StatusCode","Result","RestTransaction","_transaction","conn","_response","_rest","executeTransactionAsync","zeSingleTransaction","firstTransResult","subBody","SystemConfigurationEntityFields","enhancedPtzOnAllNewUnitField","isFirstRunField","maxImageFileSizeInKBField","passwordExpiryNotificationPeriodField","passwordMinCharacterField","passwordMinLowerCharacterField","passwordMinNumericalCharacterField","passwordMinSpecialCharacterField","passwordMinUpperCharacterField","securityLevelField","threatLevelField","totalActiveThreatLevelCountField","EntityManager","CustomEntityTypeAccessPrivilege","modify","view","CustomEntityTypeDescriptor","smallIcon","supportedEvents","supportedCustomEvents","childEntityTypesSupported","childCustomEntityTypesSupported","capabilities","accessPrivileges","properties","singleInstance","iconImage","smallIconImage","objAccessPrivileges","objProperties","MapServer","serverUrl","uniqueId","useAuthentication","MapProvider","licenseKey","supportLicense","invertCoordinates","isCustom","isDefault","maxZoom","projection","urlAddress","urlFormat","mapServers","mappingType","LicenseUsage","max","active","EventMetadata","CustomFieldConfig","groupPriority","mandatory","unique","showInReports","valueType","owner","customDataTypes","CustomEvent","roleSubType","supportedEntityType","CustomFieldTypeDescriptor","dataType","ActivityTrailConfig","enabled","descriptionId","SystemConfigurationEntity","enhancedPtzOnAllNewUnit","isFirstRun","maxImageFileSizeInKB","passwordExpiryNotificationPeriod","passwordMinCharacter","passwordMinLowerCharacter","passwordMinNumericalCharacter","passwordMinSpecialCharacter","passwordMinUpperCharacter","securityLevel","threatLevel","totalActiveThreatLevelCount","getActivityTrailsAsync","getCustomDataTypesAsync","getCustomEntityTypeDescriptorsAsync","getCustomEventsAsync","getCustomFieldConfigAsync","getDefaultSystemMapAsync","getEventsMetadataAsync","frozenSessionTestAsync","isPrivilegeLicenseSupportedAsync","getLicenseDetailsAsync","getLicenseUsageAsync","getLprAcceptReasonsAsync","getLprAnnotationFieldsDefinitionsAsync","getLprHotlistRejectReasonsAsync","getLprOvertimetRejectReasonsAsync","getLprPermitRejectReasonsAsync","getMapProvidersAsync","getMembersAsync","getRootPartitionsAsync","sendActivityTrailsAsync","TransactionContext","handled","transactionRequired","handleResponse","rr","res","Transaction","restTransaction","_lastContext","queueAsync","operations","ctx","UserTokenData","validUntil","millisecondsValid","getAuthentificationHeader","Debouncer","discardOnAction","maxTimeout","_timeout","_maxTimeout","_suspended","_discardOnAction","_triggeredWhileSuspended","_triggerCount","_isAsync","_action","_timer","timerCallback","_maxTimer","trigger","resume","Mutex","tasks","sched","shift","acquire","rej","released","use","then","release","catch","err","cleanupFields","copyEntity","entity","copy","MonitoreEntityCacheEntry","cacheId","fieldsToDownload","relationsToClear","validFlagFields","validFlagRelations","monitoredValidFlags","isInvalidated","clearInvalidate","MonitoredEntityEntry","monitoredFields","_monitoredFields","fieldsCaches","cacheEntries","addMonitoredField","validFlag","fieldCaches","cacheEntry","cacheEntryValidFlagFields","addMonitoredRelation","cacheEntryValidFlagRelations","removeCache","fieldsToRemove","EntityCacheTaskMonitor","monitors","monitoredEntityEntries","entityCacheTasks","getEntityMutexes","entityInvalidateCacheEntries","subscriptions","onLogonStateChanged","monitoredEntityEntry","invalidateCacheEntries","monitor","addMonitoredEntityField","addMonitoredEntityRelation","removeMonitoredEntity","monitoredEntityCacheEntryToDelete","setFind","equals","getEntitiesAsync","releases","mutex","entityIdsToDownload","entityFieldsToRefresh","invalidateFields","fields1","fields2","paddedFields","padFields","entityToReturn","invalideCacheEntriesToRemove","newCacheEntity","isEntryValid","newEntity","diagnosticManager","sendTraceAsync","ModificationHandler","comparer","CachedEntity","_entity","modificationHandlers","deleteHandlers","eventHandlers","RefreshEntity","timer","EntityCacheTask","debouncePeriod","debouncePeriodMax","downloadMask","getEntityMutex","_cache","_invalidatedEntities","_registeredFilter","_clearRelationDictionary","mask","includes","_defaultDownloadMask","_debouncerInvalidate","performCacheUpdateAsync","resetAsync","subscription","isLoggedOn","removeFromStreamerFiltersAsync","refreshEntity","removeCachedEntity","re","containsEntity","addToFilter","lst","addEntitiesAsync","entitiesToAdd","nonCachedEntity","nonCachedEntityIdsQuery","cacheEntity","castedEntity","newT","nonCachedEntities","getAllCachedEntities","cachedEntity","setEntityCacheLifetimeAsync","ts","setEntitiesCacheLifetimeAsync","clearRelationsAsync","reEvaluateCachedEntitiesAsync","entitiesToRefresh","mapFilter","entitiesToVerify","allFlags","newFlags","queryResult","find","detectChangeAsync","toBeCalledOnModify","detectEntityRemovedAsync","toBeCalledOnDelete","detectEntityChange","createObservable","obs","detectFieldChangeAsync","expr","lastValidFlags","orignalEntity","originalValue","comparedReturn","oldEntity","setupInvalidateSnifferAsync","detectRelationChangeAsync","clearAllDetection","detectEntityEventAsync","toBeCalledOnEvent","updateAsync","updatedEntity","setupDetector","ce","toNotify","cachedElement","isCachedEntityDirty","invalidatedFlags","needToNotify","tuple","foundElem","ele","ActionBase","recipients","destinationApplications","actionType","CurrentUserInfo","isAdministrator","directoryId","PrivilegedEntityFields","archiveViewingLimitationField","autoLogOffDurationField","autoLogOffDurationInMinutesField","domainField","emailAddressField","inheritArchiveViewingLimitationFromUserGroupField","inheritUserBurningConfigurationFromUserGroupField","isAdministratorField","isAutoLogOffInheritedField","isSecurityLevelInheritedField","qualifiedNameField","UserBurningConfiguration","isEnabled","opacity","includeUsername","includeCameraName","includeWorkstation","overlayType","mosaicOrientation","overlayPosition","PtzPriority","task","Privilege","parents","setChildren","setParentsIfNecessary","PrivilegedEntity","archiveViewingLimitation","autoLogOffDuration","autoLogOffDurationInMinutes","domain","emailAddress","inheritArchiveViewingLimitationFromUserGroup","inheritUserBurningConfigurationFromUserGroup","isAutoLogOffInherited","isSecurityLevelInherited","qualifiedName","isLicenseSupportPrivilegeAsync","privilege","isPrivilegeGrantedAsync","getPartitionAdminsAsync","getPartitionExceptionsAsync","getPartitionUserAccessAsync","getPrivilegesAsync","getPtzPrioritiesAsync","getPtzPrioritiesRecursiveAsync","getRelatedAlarmsAsync","getRemoteControllableAsync","sendMessageAsync","timeoutDuration","getUserBurningConfigurationAsync","getUsergroupsAsync","getUsergroupsRecursiveAsync","UserEntityFields","appendMapToIncidentContentField","areIncidentMonitoringTasksSynchronizedField","autoLogOffIsActivatedField","automaticallyChangeIncidentStateField","defaultMapIdField","defaultMeasurementSystemField","firstNameField","hideAreaViewForIncidentField","incidentContentSpecificScreenField","includeAuditMetadataField","isActiveField","isDomainDisplayedField","isOptionsAlreadyImportedField","isPrivateTasksSortedByTypeField","isPublicTasksSortedByTypeField","lastMobileApplicationIdField","lastNameField","lastSelectedBadgeTemplateField","lastSelectedBypassAntipassbackRulesOptionField","lastSelectedCameraForSnapshotField","lastSelectedCardholderGroupField","lastSelectedCredentialConfigurationField","lastSelectedCredentialFormatField","lastSelectedPartitionField","lastSelectedSaveAsPublicTaskField","lastSelectedTemporaryCardExpirationField","lastSelectedUseExtendedGrantTimeOptionField","lastSelectedVisitorEscortField","lastSelectedVisitorEscort2Field","lastSelectedVisitorEscortMandatoryField","lastSelectedVisitorExpirationTimeField","lastSelectedVisitorGroupField","maxConcurrentLogonsField","measurementSystemField","minumumIncidentPriorityInTrayField","needChangePasswordField","obfuscateEntityNamesField","openIncidentContentInSpecificScreenField","passwordField","passwordExpirationField","passwordLastModifiedField","queryUsingDeviceTimeZonesField","showAllIncidentsOnDefaultMapField","showMapAssistantField","skipPtzEvaluationField","specificTimezoneField","thumbnailIdField","useDeviceTimezoneField","useTimezoneAbbreviationsField","webClientLanguageField","WebClientTask","taskSubType","isSystemTask","UserSetting","LogOnSchedule","allowed","HotAction","HasAccessResult","hasAccess","UserEntity","appendMapToIncidentContent","areIncidentMonitoringTasksSynchronized","autoLogOffIsActivated","automaticallyChangeIncidentState","defaultMapId","defaultMeasurementSystem","firstName","hideAreaViewForIncident","incidentContentSpecificScreen","includeAuditMetadata","isDomainDisplayed","isOptionsAlreadyImported","isPrivateTasksSortedByType","isPublicTasksSortedByType","lastMobileApplicationId","lastName","lastSelectedBadgeTemplate","lastSelectedBypassAntipassbackRulesOption","lastSelectedCameraForSnapshot","lastSelectedCardholderGroup","lastSelectedCredentialConfiguration","lastSelectedCredentialFormat","lastSelectedPartition","lastSelectedSaveAsPublicTask","lastSelectedTemporaryCardExpiration","lastSelectedUseExtendedGrantTimeOption","lastSelectedVisitorEscort","lastSelectedVisitorEscort2","lastSelectedVisitorEscortMandatory","lastSelectedVisitorExpirationTime","lastSelectedVisitorGroup","maxConcurrentLogons","measurementSystem","minumumIncidentPriorityInTray","needChangePassword","obfuscateEntityNames","openIncidentContentInSpecificScreen","passwordExpiration","passwordLastModified","queryUsingDeviceTimeZones","showAllIncidentsOnDefaultMap","showMapAssistant","skipPtzEvaluation","specificTimezone","thumbnailId","useDeviceTimezone","useTimezoneAbbreviations","webClientLanguage","getApplicationLoggedAsync","getFavoritesAsync","getFavoritesCTAsync","getFavoritesMapsAsync","addForceUserStatusAsync","hasAccessAsync","hasAccessListAsync","getHotActionsAsync","getLogonSchedulesAsync","getRecentlyUsedAsync","getRecentlyUsedCTAsync","safeUpdatePasswordAsync","oldValue","getUserSettingsAsync","getWebClientTasksAsync","UserGroupEntityFields","externalUniqueIdField","externalUniqueIdProviderField","UserGroupEntity","externalUniqueId","externalUniqueIdProvider","getMembersRecursiveAsync","LocatableEntityFields","isPredefinedLocationField","latitudeField","longitudeField","timeZoneIdField","LocatableEntity","isPredefinedLocation","timeZoneId","ServerEntityFields","defaultDatabaseServerField","descriptiveOSVersionField","descriptiveProductVersionField","exactVersionField","fullyQualifiedNameField","isInBackwardCompatibilityModeField","isMainServerField","isProxyField","majorVersionField","networkField","oSVersionField","privateAddressField","privateAddressesField","privateLegacyPortField","privatePortField","publicAddressField","restBaseEndpointField","rootWebApplicationPathField","secureWebPortField","serverCertificateField","serverCertificateThumbprintField","serverTypeField","webPortField","RestRoleConfig","pluginType","supports64Bits","serviceDomain","pluginAssemblyLocation","pluginTypeFullName","NetworkInterface","macAddress","physicalAddress","iPv4","iPv6","ServerEntity","defaultDatabaseServer","descriptiveOSVersion","descriptiveProductVersion","exactVersion","fullyQualifiedName","isInBackwardCompatibilityMode","isMainServer","isProxy","majorVersion","network","oSVersion","privateAddress","privateAddresses","privateLegacyPort","privatePort","publicAddress","restBaseEndpoint","rootWebApplicationPath","secureWebPort","serverCertificate","serverCertificateThumbprint","serverType","webPort","getAgentsAsync","getDirectoriesAsync","getDrivesAsync","getFilesAsync","getNetworkInterfacesAsync","getRestRoleAvailableAsync","getRolesAsync","AreaEntityFields","accessControlSupportField","accessPermissionLevelField","antipassbackModeField","antipassbackScheduleField","antipassbackStrictField","antipassbackTimeoutField","captiveAccessPointField","duressField","enforceVisitorEscortRulesField","entryAccessPointField","exitAccessPointField","firstInRuleForAccessRulesApplyScheduleField","firstInRuleForAccessRulesEnabledField","firstInRuleForUnlockSchedulesEnabledField","firstInRuleUnlockScheduleOffsetField","inheritEnforceVisitorEscortRulesField","intrusionAccessPointInField","intrusionAccessPointOutField","intrusionArmingAccessPointField","intrusionDisarmingAccessPointField","isFederatedDirectoryField","linkField","maxOccupancyLimitField","maxOccupancyModeField","peopleCountEnabledField","peopleCountOwnerField","AccessPointGroupThreatLevelMapping","accessPointGroupId","xmlInfo","AreaEntity","accessControlSupport","accessPermissionLevel","antipassbackMode","antipassbackSchedule","antipassbackStrict","antipassbackTimeout","captiveAccessPoint","duress","enforceVisitorEscortRules","entryAccessPoint","exitAccessPoint","firstInRuleForAccessRulesApplySchedule","firstInRuleForAccessRulesEnabled","firstInRuleForUnlockSchedulesEnabled","firstInRuleUnlockScheduleOffset","inheritEnforceVisitorEscortRules","intrusionAccessPointIn","intrusionAccessPointOut","intrusionArmingAccessPoint","intrusionDisarmingAccessPoint","isFederatedDirectory","link","maxOccupancyLimit","maxOccupancyMode","peopleCountEnabled","peopleCountOwner","getAccessPointsAsync","createMapAsync","getFirstInRuleBypassListAsync","getFirstInRuleSupervisorsAsync","getThreatLevelMappingsAsync","CameraEntityFields","audioRecordingField","audioStreamInField","audioStreamOutField","automaticCleanupField","cameraSubTypeField","defaultManualRecordingTimeField","encryptionEnabledField","encryptionTypeField","externalSystemTypeField","federationStreamUsageField","federationUserIdField","federationUserSecurityLevelField","isDVRInputField","isEdgeAnalyticsCameraField","isLicensedCameraField","isNativeField","isPluginCameraField","isPrivacyProtectedField","lockingUserAppIdField","lockingUserIdField","lockingUserInfoField","lockStateField","metadataRecordingField","omnicastCameraGuidField","postEventRecordingTimeField","preEventRecordingTimeField","ptzAddressField","ptzCapabilitiesField","ptzIdleActionField","ptzIdleActionNumberField","ptzIdleDelayField","ptzLockDelayField","ptzLockStateTimeUpField","ptzProtocolField","ptzSerialPortIdField","ptzSpecificConfigField","recordingLengthField","recordingStateField","redundantArchivingField","retentionPeriodField","roleTypeField","signalStateField","streamGroupIdField","tailingField","unitField","useCustomRecordingSettingsField","videoEncoderDeviceField","FieldObjectWithRelations","VideoAttribute","scheduleId","brightness","contrast","hue","saturation","sharpness","StreamUsageInfo","streamUsage","RecordingMode","mode","PtzCapabilitiesInfo","protocolChangeSupported","ptzControlEnabled","ptzNumberChangeSupported","ptzSpeedControlSupported","cameraLinkChangeSupported","deletionSupported","idleDelayChangeSupported","lockDelayChangeSupported","supportedCommands","secondaryIOPortRequired","remoteDataRequired","numberOfPresets","numberOfPattern","numberOfPresetTours","numberOfAux","minimumCameraNumber","maximumCameraNumber","presetBase","patternBase","auxBase","presetTourBase","productCode","maximumZoomFactor","minimumPan","maximumPan","minimumTilt","maximumTilt","sphericalSpaceMinimumPan","sphericalSpaceMaximumPan","sphericalSpaceMinimumTilt","sphericalSpaceMaximumTilt","sphericalSpacePanLeftDeviceLimit","sphericalSpacePanRightDeviceLimit","sphericalSpaceTiltUpDeviceLimit","sphericalSpaceTiltDownDeviceLimit","zoomFactorSpaceMinimum","zoomFactorSpaceMaximum","minimumHorizontalFieldOfView","maximumHorizontalFieldOfView","minimumVerticalFieldOfView","maximumVerticalFieldOfView","minimumFocalLength","maximumFocalLength","unknownSpaceMinimumPan","unknownSpaceMaximumPan","unknownSpaceMinimumTilt","unknownSpaceMaximumTilt","unknownSpaceMinimumZoom","unknownSpaceMaximumZoom","MotionDetectionZone","macroBlockHeight","macroBlockWidth","mapHeight","mapWidth","motionOffEvent","motionOffThreshold","motionOnEvent","motionOnThreshold","sensitivity","MotionDetection","cameraApplicationHardwareDetection","consecutiveFrame","hardwareDetection","isH264","h264ChromaWeight","h264LumaWeight","h264MacroBlockWeight","h264VectorWeight","motionDetectorMode","getZonesAsync","LensType","manufacturer","Vector","y","LensConfiguration","lensProperties","isHardwareDewarpingSupported","vector","viewingModes","objVector","LensInfo","lensConfiguration","lensType","objLensConfiguration","objLensType","ThumbnailData","thumbnail","latestFrame","UserInfo","userLevel","systemId","FeatureCapability","supported","EncryptionCertificate","cert","BlockInfo","isBlocked","blockLevel","startTime","PtzInfo","CameraEntity","audioRecording","audioStreamIn","audioStreamOut","automaticCleanup","cameraSubType","defaultManualRecordingTime","encryptionEnabled","encryptionType","externalSystemType","federationStreamUsage","federationUserId","federationUserSecurityLevel","isDVRInput","isEdgeAnalyticsCamera","isLicensedCamera","isNative","isPluginCamera","isPrivacyProtected","lockingUserAppId","lockingUserId","lockingUserInfo","lockState","metadataRecording","omnicastCameraGuid","postEventRecordingTime","preEventRecordingTime","ptzAddress","ptzCapabilities","ptzIdleAction","ptzIdleActionNumber","ptzIdleDelay","ptzLockDelay","ptzLockStateTimeUp","ptzProtocol","ptzSerialPortId","ptzSpecificConfig","recordingLength","recordingState","redundantArchiving","retentionPeriod","roleType","signalState","streamGroupId","tailing","unit","useCustomRecordingSettings","videoEncoderDevice","addBookmarkAsync","playback","getArchivedStreamsAsync","getAttachedCashRegistersAsync","getAuxAsync","blockAsync","start","end","blockingLevel","getBlockCameraInfoAsync","boostQualityAsScheduledAsync","controlPtzAsync","donateArchivesAsync","getEncryptionCertificatesAsync","getFeatureCapabilitiesAsync","getFederationUserMultilevelInfoAsync","generateThumbnailsAsync","gotoHomeAsync","getHardwareConfigDataAsync","getLensAsync","getMetadataStreamsAsync","getMotionDetectionAsync","getPatternsAsync","getPresetsAsync","protectVideoPlaybackAsync","getPtzCapabilitiesAsync","getRecordingModesAsync","startLiveStreamingAsync","startRecordingAsync","stopLiveStreamingAsync","stopRecordingAsync","getStreamsAsync","getTransferGroupsAsync","unblockAsync","getVideoAttributesAsync","RoleEntityFields","apiUrlPrefixesField","automaticBackupFileCountField","automaticBackupFrequencyField","automaticBackupTimeField","backupFolderField","databaseFolderField","databaseInstanceField","databaseNameField","disabledField","enableAutomaticBackupField","enableBackupCompressionField","encryptDatabaseConnectionField","enforceDatabaseServerCertificateField","forceExecutionByPriorityField","groupField","notificationsDatabaseUsageField","notificationsDatabaseUsageAsPercentageField","notificationsDiskSpaceField","notificationsRemainingGbField","notifyOnlyWhenLimitIsReachedField","overriddenLoadingStrategyField","roleSubTypeField","roleTypeIdField","serverField","specificXmlField","SecureData","RoleServer","roleServerNetworkInterface","roleServerOrder","RoleEntity","apiUrlPrefixes","automaticBackupFileCount","automaticBackupFrequency","automaticBackupTime","backupFolder","databaseFolder","databaseInstance","databaseName","disabled","enableAutomaticBackup","enableBackupCompression","encryptDatabaseConnection","enforceDatabaseServerCertificate","forceExecutionByPriority","notificationsDatabaseUsage","notificationsDatabaseUsageAsPercentage","notificationsDiskSpace","notificationsRemainingGb","notifyOnlyWhenLimitIsReached","overriddenLoadingStrategy","roleTypeId","server","specificXml","createDatabaseAsync","createDatabaseBackupAsync","folder","enableCompression","getRoleDatabaseStatusAsync","deleteDatabaseAsync","getOwnershipEntitiesAsync","restoreDatabaseBackupAsync","file","getRoleServersAsync","deleteSecureDataAsync","getSecureDataAsync","addSecureDataAsync","setDatabaseAsync","upgradeDatabaseAsync","AgentEntityFields","agentTypeField","roleIdField","serverIdField","serverInfoField","specificConfigXmlField","xmlDataField","AgentEntity","agentType","roleId","serverId","serverInfo","specificConfigXml","xmlData","getAgentDatabaseStatusAsync","ZoneEntityFields","accessControlUnitField","armingDelayField","armingDelayOnField","armingStateField","zoneStateField","zoneTypeField","ZoneEntity","accessControlUnit","armingDelay","armingDelayOn","armingState","zoneState","zoneType","armZoneAsync","getDevicesAsync","disarmZoneAsync","TilePluginEntityFields","contextField","contextIdField","fileField","rawLargeImageField","rawSmallImageField","urlField","urlDisplayModeField","TilePluginEntity","rawLargeImage","rawSmallImage","urlDisplayMode","ThreatLevelEntityFields","levelField","ThreatLevelEntity","activateAsync","recursive","deactivateAsync","ScheduleEntityFields","coverageTypeField","dataField","isArchiverFriendlyField","scheduleTypeField","DateRange","ScheduleEntity","coverageType","isArchiverFriendly","scheduleType","getAccessPointRulesAsync","isTimeCoverAsync","time","normalizeFlattenedDatesAsync","PartitionEntityFields","canBeSharedField","PartitionEntity","canBeShared","getAdministratorsAsync","getChildPartitionsAsync","getUserPrivilegesAsync","getUsersAsync","RouteEntityFields","detectedTransportsFrom1To2Field","detectedTransportsFrom2To1Field","endPoint1Field","endPoint2Field","supportedTransportsField","usePrivateAddressFrom1To2Field","usePrivateAddressFrom2To1Field","RouteEntity","detectedTransportsFrom1To2","detectedTransportsFrom2To1","endPoint1","endPoint2","supportedTransports","usePrivateAddressFrom1To2","usePrivateAddressFrom2To1","NetworkEntityFields","iPv4AddressPrefixField","iPv4NetworkMaskField","iPv6PrefixField","iPv6PrefixLengthField","isDefaultNetworkField","parentRouteField","proxyServerField","remoteStreamLocatorIdField","supportsIpv6Field","PublicServer","publicEndPoint","NetworkEntity","iPv4AddressPrefix","iPv4NetworkMask","iPv6Prefix","iPv6PrefixLength","isDefaultNetwork","parentRoute","proxyServer","remoteStreamLocatorId","supportsIpv6","getPublicServersAsync","getRoutesAsync","getServersAsync","getSubNetworksAsync","MacroEntityFields","codeField","executionIntegrityField","languageField","loadingStrategyField","mustBeSingleInstanceField","MacroEntity","executionIntegrity","loadingStrategy","mustBeSingleInstance","UnitEntityFields","canRebootField","certificateIdField","certificateSigningRequestCommonNameField","extensionIdField","firmwareVersionField","iPAddressField","isUsingCertificateField","loginPolicyField","manufacturerField","modelField","physicalAddressField","platformVersionField","secureCommandPortField","serialNumberField","supportOutputDeviceStatesField","supportsCertificateManagementField","supportServerControlledFirmwareUpgradeField","supportsPasswordChangeField","timeZoneField","usernameField","UnitEntity","canReboot","certificateId","certificateSigningRequestCommonName","extensionId","firmwareVersion","iPAddress","isUsingCertificate","loginPolicy","model","platformVersion","secureCommandPort","serialNumber","supportOutputDeviceStates","supportsCertificateManagement","supportServerControlledFirmwareUpgrade","supportsPasswordChange","timeZone","moveUnitAsync","rebootAsync","getUnitOnlyDevicesAsync","IntrusionUnitEntityFields","aCFailureField","batteryFailureField","capabilitiesField","clearLogsAfterDownloadField","commandPortField","intrusionUnitIdField","isActivatedField","serialPortField","tamperField","IntrusionUnitEntity","aCFailure","batteryFailure","clearLogsAfterDownload","commandPort","intrusionUnitId","isActivated","serialPort","tamper","getIntrusionAreasAsync","IntrusionAreaEntityFields","alarmStateField","alarmTriggeringInputField","alarmTriggeringOutputField","extensionStatusField","inputActiveField","inputTroubleField","intrusionUnitField","isArmedField","isBypassedField","physicalNameField","synergisAreaField","IntrusionAreaEntity","alarmState","alarmTriggeringInput","alarmTriggeringOutput","extensionStatus","inputActive","inputTrouble","intrusionUnit","isArmed","isBypassed","physicalName","synergisArea","acknowledgeIntrusionAlarmAsync","cancelPostponeArmingAsync","getInputsAsync","postponeArmingAsync","masterArm","silenceIntrusionAlarmAsync","triggerIntrusionAlarmAsync","DeviceEntityFields","deviceTypeField","isDisabledField","uniqueIdField","DeviceEntity","deviceType","isDisabled","getAccessPointAsync","CustomEntityFields","customEntityTypeDescriptorIdField","CustomState","state0","state1","CustomInfo","info0","info1","CustomEntity","customEntityTypeDescriptorId","getInfosAsync","getStatesAsync","getTypeDescriptorAsync","ApplicationEntityFields","applicationVersionField","appTypeField","externalApplicationOwnerField","lastLoggedTimestampField","lastLoggedUserField","loggedUserField","machineNameField","streamingVersionField","versionField","ApplicationEntity","applicationVersion","appType","externalApplicationOwner","lastLoggedTimestamp","lastLoggedUser","loggedUser","machineName","streamingVersion","getMonitorsAsync","VideoUnitEntityFields","authenticationSchemeField","certificateValidationInfoField","connectionAddressField","dhcpField","discoveryPortField","firmwareUpgradePortField","firstAddFeatureSetField","gatewayField","hardwareVersionField","hostNameField","isRestrictedUnitField","lastPasswordChangeField","legacyConfigurationsField","passwordStrengthField","prefixLengthField","proxyIdentifierField","secureConnectionField","subnetMaskField","supportsAudioField","supportsChangeCommandPortField","supportsChangeDiscoveryPortField","supportsChangeIPField","supportsFirmwareUpgradeField","supportsIdentifyField","supportsRebootField","supportsSSLField","useDefaultCredentialsField","webPageField","PingSubResult","authenticationScheme","authenticationSuccesful","httpConnectionSuccessful","httpSupported","pingDelay","pingFailureReason","pingSuccessful","tcpConnectionEndPoint","tcpConnectionSuccessful","tcpSupported","PingResult","executed","VideoUnitEntity","certificateValidationInfo","connectionAddress","dhcp","discoveryPort","firmwareUpgradePort","firstAddFeatureSet","gateway","hardwareVersion","hostName","isRestrictedUnit","lastPasswordChange","legacyConfigurations","prefixLength","proxyIdentifier","secureConnection","subnetMask","supportsAudio","supportsChangeCommandPort","supportsChangeDiscoveryPort","supportsChangeIP","supportsFirmwareUpgrade","supportsIdentify","supportsReboot","supportsSSL","useDefaultCredentials","webPage","getCamerasAsync","identifyAsync","pingAsync","reconnectAsync","getSpecificConfigAsync","TransferGroupEntityFields","destinationField","minutesToIgnoreField","simultaneousDownloadField","transferGroupTypeField","TransferGroupEntity","destination","minutesToIgnore","simultaneousDownload","transferGroupType","getCamerasAndArchiversAsync","getSourceAreasAsync","getSourcesAsync","StreamEntityFields","blockSizeField","cameraField","configuredConnectionField","deviceField","isPresentField","multicastAddressField","multicastPortField","numberField","streamTypeField","supportedBlockSizeField","supportedConnectionField","uDPPortField","Compression","videoCompressionAlgorithm","frameRate","bitRate","imageQuality","keyframeInterval","resolutionX","resolutionY","recordingFrameInterval","StreamEntity","blockSize","configuredConnection","device","isPresent","multicastAddress","multicastPort","numberValue","streamType","supportedBlockSize","supportedConnection","uDPPort","getCompressionsAsync","SequenceMember","cameraId","dwell","auxiliary","commandNumber","auxiliaryNumber","SequenceEntity","getSequenceMembersAsync","TilePattern","columnSpans","rows","rowSpans","TileLayoutContent","pattern","objPattern","TileLayoutEntity","getContentAsync","AccessControlUnitEntityFields","extensionTypeField","AccessControlUnitEntity","extensionType","getDoorsAsync","getElevatorsAsync","getInterfaceModulesAsync","AccessPointEntityFields","accessPointSideField","accessPointTypeField","deviceStateField","parentField","twoManRuleEnabledField","AccessPointEntity","accessPointSide","accessPointType","deviceState","twoManRuleEnabled","AccessPointRuleEntityFields","accessPointRuleTypeField","defaultRuleField","endTimeField","positiveField","scheduleField","startTimeField","AccessPointRuleEntity","accessPointRuleType","defaultRule","positive","schedule","getAccessPointGroupsAsync","getCardholdersAsync","CardholderEntityFields","accessStatusField","activationDateField","antipassbackExemptionField","antipassbackExemptionIsInheritedField","canEscortField","expirationDateField","expirationDurationField","expirationModeField","hasPictureField","inheritAccessPermissionLevelFromGroupField","isVisitorField","lastAccessField","lastAccessGrantedField","lastAccessLocationField","mobilePhoneNumberField","pictureIdField","useExtendedGrantTimeField","CardholderPicture","CardholderEntity","activationDate","antipassbackExemption","antipassbackExemptionIsInherited","canEscort","expirationDate","expirationDuration","expirationMode","hasPicture","inheritAccessPermissionLevelFromGroup","isVisitor","lastAccess","lastAccessGranted","lastAccessLocation","mobilePhoneNumber","pictureId","useExtendedGrantTime","getCardholdergroupsAsync","getCredentialsAsync","forgiveAntipassbackAsync","getHostedVisitorsAsync","deletePictureAsync","getPictureAsync","addPictureAsync","CardholderGroupEntityFields","inheritAccessPermissionLevelFromParentGroupField","isVisitorGroupField","CardholderGroupEntity","inheritAccessPermissionLevelFromParentGroup","isVisitorGroup","GrantedPrivilegesCache","lastTouch","touch","SecurityCache","cleanuptTimeout","_grantedPrivileges","timeoutHandle","keep","isEmpty","cache","keepTime","getTime","keysToClear","forceOverwrite","exists","MapEntityFields","associatedAreaField","backgroundColorField","cruncherIdField","dPIField","geoLocalizedField","hideEmptyLayersField","infoField","isMapImageField","lockDisplayField","lockZoomField","maxZoomField","originalFileExtensionField","projectionField","providerIdField","rotationField","scaleFactorField","serverUrisField","statusField","CustomVisibleLayer","isVisible","subLayers","CustomRefreshableLayer","refreshRate","isLayerRefreshing","lastRefreshTime","isInDesignMode","CustomMapLayer","refreshableLayer","refreshRateTs","isRefreshingLayer","zIndex","isPartialChecked","parentLayerId","isDisplayed","objRefreshableLayer","CustomSpecificMapConfiguration","layers","StateColor","visible","MapObject","relativeHeight","relativeWidth","rotation","showFov","fovDistance","fovMaxDistance","fovElevation","fovOrientation","fovWidth","stateColors","VisibleLayer","Point","GeoReference","targetPoints","Coordinate","sourcePoints","MapFloorData","abbreviation","orderPosition","LatLngRectangle","objBottomRight","objTopLeft","DefaultView","scaleFactor","center","objCenter","objViewArea","Thickness","left","top","right","bottom","MapEntity","associatedArea","backgroundColor","cruncherId","dPI","geoLocalized","hideEmptyLayers","info","isMapImage","lockDisplay","lockZoom","originalFileExtension","serverUris","getCropAsync","getDefaultViewAsync","getFloorInfoAsync","getGeoReferenceAsync","getLayersAsync","getMapObjectsAsync","getSpecificMapsConfigurationsAsync","getViewAreaPresetsAsync","EventBase","coordinate","sourceEntityDesc","sourceEntityType","_convertedJObject","getSafeField","objCoordinate","Invalidate","ManualAction","AlarmTriggered","AlarmAcknowledged","ApplicationConnected","ApplicationDisconnected","ServerLost","CameraLiveBookmarkAdded","CameraPlaybackBookmarkAdded","CameraMotionOn","CameraMotionOff","CardholderAccessGranted","CameraAbnormalMotion","CameraNominalMotion","CardholderAccessRefused","CardholderWalkthrough","CardholderInactive","CardHolderCredentialExpired","CardHolderCredentialInactive","CardHolderCredentialLost","CardHolderCredentialStolen","CardholderAntipassback","UnitConnected","UnitDisconnected","InterfaceOnline","InterfaceOffline","AccessControlUnitWarningActivated","AccessControlUnitWarningDeactivated","FirmwareUpgradeScheduled","FirmwareUpgradeCancelled","InterfaceFirmwareUpgradeStarted","InterfaceFirmwareUpgradeSuccess","InterfaceFirmwareUpgradeFailure","InterfaceFirmwareUpgradeScheduled","InterfaceFirmwareUpgradeCancelled","InterfaceFirmwareUpgradeTransferred","UnitACFail","UnitBatFail","UnitInvalidConfiguration","UnitTemperatureAlarm","UnitTimeOutOfSync","UnitTimeOutOfSyncRecovered","UnitDiskActionError","UnitDiskFormatted","UnitDiskLocked","UnitDiskMounted","UnitDiskUnlocked","UnitDiskUnmounted","ArchiveTransferSequenceImported","UserLoggedOn","UserLoggedOff","UserLogonFailed","FirmwareUpgradeStarted","FirmwareUpgradeSuccess","FirmwareUpgradeFailure","DoorRexOn","DoorRexOff","DoorOpenedForTooLong","DoorPullStationActivated","DoorPullStationNormal","DoorOpen","DoorClose","DoorForcedOpen","DoorUnlock","DoorOpenWhileLockSecure","AccessUnknownCredential","AccessUnassignedCredential","AccessGranted","AccessRefused","AccessExpiredCredential","AccessStolenCredential","AccessLostCredential","AccessInactiveCredential","AccessInactivePerson","DoorTamper","InputTroubleShort","InputTroubleOpen","EmergencyDoorRex","EmergencyDoorUnlockPostponed","EmergencyDoorUnlocked","EmergencyDoorUnlockedOperatorUnlock","EmergencyDoorUnlockedReleaseDelayTimeExpired","EmergencyDoorUnlockedExtensionGuardLockingExpired","EmergencyDoorUnlockedMaximumLockingTimeExpired","EmergencyDoorUnlockedHostConnectionTimeout","EmergencyDoorReset","EmergencyDoorResetRemoteOperator","EmergencyDoorResetPhysicalButton","EmergencyDoorResetAuto","DoorTestStarted","DoorTestSucceeded","DoorTestFailed","DoorTestFailedAborted","DoorTestFailedReaderShunted","DoorTestFailedDoorNotSecured","DoorTestFailedError","DoorTestFailedUnlockFailed","DoorTestFailedRelockFailed","AreaFirstManIn","AreaLastManOut","AreaAntipassbackDetected","AreaAntipassbackForgiven","PeopleCountReset","AreaCardholderRemoved","AreaCardholderAdded","CredentialUnassigned","CredentialExpired","CredentialStolen","CredentialLost","CredentialInactive","CredentialHasExpired","CredentialIsExpiring","ZoneGlassBreak","ZoneWindowOpened","ZoneWindowClosed","ZoneDeadBoltLocked","ZoneDeadBoltUnlocked","ZoneKnobInplace","ZoneKnobRotated","ZoneLockSecured","ZoneLockReleased","MacroStarted","MacroCompleted","MacroAborted","AlarmAcknowledgedAlternate","LprFirst","LprRead","LprHit","ProcessMlpiResultsResultEvent","LprOffloadSucceeded","LprOffloadFailed","LprNoMatch","LprHotlistChanged","LprUpdateInstalled","LprUpdateUninstalled","LprUpdatePublished","LprUpdateError","LprUpdateInstalling","LprUpdateUninstalling","IntrusionAreaDuress","IntrusionAreaEntryDelay","IntrusionAreaAlarmActivated","IntrusionAreaArmingPostponed","IntrusionAreaMasterArmed","IntrusionAreaPerimeterArmed","IntrusionAreaDisarmed","IntrusionAreaInputTrouble","IntrusionAreaInputBypassActivated","IntrusionAreaInputBypassDeactivated","IntrusionAreaForcedArming","IntrusionAreaCanceledAlarm","IntrusionAreaMasterArmRequest","IntrusionAreaPerimeterArmRequest","IntrusionAreaDisarmRequest","IntrusionAreaArmingPostponedRequest","IntrusionAreaCanceledAlarmRequest","IntrusionAreaAlarmSilenced","IntrusionUnitTamper","ZoneArmed","ZoneDisarmed","ZoneMaintenanceOn","ZoneMaintenanceOff","ZoneWarningUnitOffline","DoorMaintenanceOff","DoorMaintenanceOn","DoorScheduledLock","DoorScheduledUnlock","DoorWarningUnitOffline","DoorWarningInterfaceAcFail","DoorWarningInterfaceAcFailRestored","DoorWarningInterfaceBatteryFail","DoorWarningInterfaceBatteryFailRestored","DoorWarningInterfaceTamperFail","DoorWarningInterfaceTamperFailRestored","DoorManuallyUnlocked","DoorOnline","DoorUnsecured","DoorSecured","VideoAnalyticsAudioAlarm","VideoAnalyticsLicensePlateInSight","VideoAnalyticsLicensePlateOutofSight","VideoAnalyticsLicensePlateReading","VideoAnalyticsObjectConditionChange","VideoAnalyticsObjectCrossedLine","VideoAnalyticsObjectEntered","VideoAnalyticsObjectExited","VideoAnalyticsObjectFall","VideoAnalyticsObjectFollowingRoute","VideoAnalyticsObjectInField","VideoAnalyticsObjectLeft","VideoAnalyticsObjectLoitering","VideoAnalyticsObjectMerged","VideoAnalyticsObjectRemoved","VideoAnalyticsObjectRun","VideoAnalyticsObjectSlide","VideoAnalyticsObjectSplit","VideoAnalyticsObjectStopped","VideoAnalyticsTailgating","VideoAnalyticsTampering","VideoAnalyticsFaceDetected","VideoAnalyticsUndefined","VideoAnalyticsDirectionAlarm","VideoAnalyticsTamperingOff","VideoAnalyticsCrowdDetected","VideoAnalyticsFaceRecognized","VideoAnalyticsObjectDetected","VideoAnalyticsHeatMapChanged","VideoAnalyticsObjectCountChanged","VideoAnalyticsObjectVelocityChanged","VideoAnalyticsObjectDirectionChanged","VideoAnalyticsPeopleCounting","VideoAnalyticsPeopleCountingAlarm","VideoAnalyticsCrowdSize","FloorAccess","AssetMoved","AssetLowBattery","AssetOffline","AssetOnline","ArchivingStartedAutomatically","ArchivingStoppedAutomatically","ArchivingStartedManually","ArchivingStoppedManually","ArchivingStartedOnMotionEvent","ArchivingStoppedOnMotionEvent","ArchivingStartedByExternalSource","ArchivingStoppedByExternalSource","ArchivingStartedByAlarm","ArchivingStoppedByAlarm","CameraStartLiveStreaming","CameraStopLiveStreaming","ArchiveFileDeleted","CameraSignalLost","CameraSignalRecovered","ArchivingQueueFull","CameraNotArchiving","CameraTransmissionLost","CameraRtpPacketsLost","CameraMultipleSourceDetected","CameraStartBlock","CameraStopBlock","CameraTransmissionRecovered","CameraEdgeRecordingCommandTimeout","CameraEdgestorageFailure","CameraMotion","CameraEdgestorageEnabled","CameraRtpPacketLostRecovery","PtzActivated","PtzStopped","PtzZoomByUserStarted","PtzZoomByUserStopped","PtzLocked","HealthMonitoringEvent","AreaAntipassbackDisabledMixedMode","AreaAntipassbackDisabledUnitOffline","AreaPeopleCountDisabledUnitOffline","AreaAntipassbackDisabledPerimeterOnElevator","AreaSasOverrideOn","AreaSasOverrideOff","AreaSasLockdownOn","AreaSasLockdownOff","AreaSasMultipleUnitWarning","AreaSasUnsupportedWarning","AreaSasMaintenanceModeWarning","AreaSasFreeAccessWarning","AreaSasAntipassbackWarning","AreaSasFloorWarning","AreaAntipassbackDisabledInvalidSettings","AreaSasDoorWithNoSensorConfigured","AreaSasOnlyOnePerimeterFloor","SinglePersonCheckFailed","SinglePersonCheckFailedNoPresenceDetected","SinglePersonCheckFailedTooManyPeople","AreaEvacuationStarted","AreaEvacuationEnded","AreaMusteringStarted","AreaMusteringEnded","AreaLast","ElevatorWarningUnitOffline","ElevatorSecuredOnSchedule","ElevatorFreeAccessOnSchedule","AlarmInvestigating","AlarmForciblyAcked","ThreatLevelActivated","ThreatLevelDeactivated","CardholderNoEntryDetected","DoorNoEntryDetected","CardholderEntryDetected","CardholderEntryAssumed","VisitorAstray","MissingTailEscort","DoorEntryDetected","DoorEntryAssumed","DoorSupervisorInAccessRule","DoorSupervisorInUnlockingSchedule","AreaMaxOccupancyReached","AreaMaxOccupancyExceeded","AreaBelowMaxOccupancy","DuressPinEntered","DoubleBadgeOn","DoubleBadgeOff","AccessGrantConfirmationRequested","IdentityValidationSucceeded","IdentityValidationSucceededBiometric","IdentityValidationSucceededManual","IdentityValidationFailed","IdentityValidationFailedBiometricMismatch","IdentityValidationFailedBiometricMissing","IdentityValidationFailedManual","IdentityValidationFailedTimeout","OfflineSynchronizationStarted","OfflineSynchronizationFailure","OfflineSynchronizationSuccess","AccessInvalidPin","AccessValidCardInvalidPin","AccessDeniedByAccessRule","AccessInsufficientPrivileges","AccessAntipassbackViolation","AccessOutOfSchedule","AccessNoAccessRuleAssigned","AccessAbsentSupervisor","AccessEscortRequired","AccessSecondCardholderRequired","AccessEscortNotSupported","CompanionVisitorDenied","Interlock","AccessCardAndPINTimeout","AccessValidCardInactivePIN","AccessDeniedByMaxOccupancy","UID","UID2","UserFirst","ModifiedIncident","UserLast","AccessPointFirst","AccessPointLast","AlarmFirst","AlarmConditionCleared","AlarmLast","DoorFirst","ScheduleUnlockIgnored","DoorLast","AreaFirst","UnitFirst","UnitLast","CredentialFirst","CredentialAccessDenied","CredentialLast","CardholderFirst","CardholderLast","CardholderDuressPinEntered","CardholderDoubleBadgeOn","CardholderDoubleBadgeOff","CardholderAccessGrantConfirmationRequested","CardholderIdentityValidationSucceeded","CardholderIdentityValidationSucceededBiometric","CardholderIdentityValidationSucceededManual","CardholderIdentityValidationFailed","CardholderIdentityValidationFailedBiometricMismatch","CardholderIdentityValidationFailedBiometricMissing","CardholderIdentityValidationFailedManual","CardholderIdentityValidationFailedTimeout","CardholderSinglePersonCheckFailed","CardholderSinglePersonCheckFailedNoPresenceDetected","CardholderSinglePersonCheckFailedTooManyPeople","CredentialRequested","CredentialRequestedComplete","CredentialRequestedCancelled","CredentialDoubleBadgeOn","CredentialDoubleBadgeOff","ApplicationFirst","ApplicationLast","CameraFirst","CameraLast","ExternalSystemFirst","ExternalSystemAlarmTriggered","ExternalSystemSyncStarted","ExternalSystemSyncCompleted","ExternalSystemSyncError","ExternalSystemSyncPartiallyCompleted","ExternalSystemLast","ZoneFirst","ZoneLast","ElevatorFirst","ElevatorLast","MacroFirst","MacroLast","LprLast","LprUpdatePackage","InvalidatePatrollerMlpiReadsResultEvent","MlpiLast","IntrusionAreaFirst","IntrusionAreaLast","IntrusionUnitInputFirst","IntrusionUnitInputTrouble","IntrusionUnitInputBypassActivated","IntrusionUnitInputBypassDeactivated","IntrusionUnitInputLast","ArchiverEventsFirst","ArchiverCanWrite","ArchiverDatabaseLost","ArchiverDatabaseRecovered","ArchiverDiskChanged","ArchiverDiskFull","ArchiverDiskLoad","ArchiverInvalidCustomEncryption","ArchiverNoWrite","ArchiverNoWriteOnSpecifiedDisk","ArchiverArchivingStopped","ArchiverBackupStarted","ArchiverBackupSucceeded","ArchiverBackupFailed","ArchiverProtectionThresholdExceeded","ArchiverVrmConnectionAttempt","ArchiverVrmConnectionFailure","ArchiverPathTooLong","ArchiverFileProtectionSuccess","ArchiverFileProtectionFailure","ArchiverDatabaseFlooding","ArchiverEventsLast","VideoAnalyticsFirst","VideoAnalyticsTemperatureDetectionOn","VideoAnalyticsTemperatureDetectionOff","VideoAnalyticsTemperatureDetectionAlarm","VideoAnalyticsAdaptiveMotion","VideoAnalyticsObjectCountReached","VideoAnalyticsLast","AssetFirst","AssetLast","HealthMonitoringFirst","HealthMonitoringLast","IntrusionUnitFirst","IntrusionUnitLast","ThreatLevelFirst","ThreatLevelLast","AutoActionExecute","DeviceFirst","InputStateActive","InputStateNormal","InputStateTrouble","InputAlarmActive","InputAlarmRestored","InputBypassed","InputBypassRestored","DeviceLast","InputStateChanged","ParkingZoneFirst","ParkingSessionStartedByVehicleEntered","ParkingSessionStartedByUnknownVehicleExited","ParkingSessionConvenienceTimeStarted","ParkingSessionValidatingPaidTimeByPaidTimeExpired","ParkingSessionValidatingPaidTimeByConvenienceTimeExpired","ParkingsessionPaidTimeStartedByPaidTimeValid","ParkingSessionPaidTimeStartedByValidationError","ParkingSessionGracePeriodStartedConvenienceTimeExpired","ParkingSessionGracePeriodStartedByPaidTimeInvalid","ParkingSessionViolationDetectedByConvenienceTimeExpired","ParkingSessionViolationDetectedByGracePeriodExpired","ParkingSessionViolationDetectedByPaidTimeInvalid","ParkingSessionViolationEnforced","ParkingSessionCompletedByInventoryReset","ParkingSessionCompletedByMaxSessionTimeExceeded","ParkingSessionCompletedByVehicledExited","ParkingSessionCompletedByUnknownVehicledExited","ParkingZoneInventoryReset","ParkingZoneMaximumCapacityReached","ParkingSessionStarted","ParkingSessionValidatingPaidTime","ParkingSessionPaidTimeStarted","ParkingSessionGracePeriodStarted","ParkingSessionViolationDetected","ParkingSessionCompleted","ParkingZoneLast","AlarmContextChanged","AudioAnalyticsFirst","AudioAnalyticsCustom","AudioAnalyticsLast","ActiveAlarms","ActiveAlarmsRecovered","AgentStarted","AgentStopped","AgentStoppedUnexpectedly","AllArchivingRestarted","AllArchivingStopped","ApplicationConnect","ApplicationDisconnectedByUser","ApplicationDisconnectedUnexpectedly","ApplicationStarted","ApplicationStoppedByUser","ApplicationStoppedUnexpectedl","ArchiveBackupFailure","ArchiveBackupSuccess","ArchiveConsolidationFailure","ArchiveConsolidationPartialFailure","ArchiveConsolidationSuccess","ArchiverTricklingFailure","ArchiverTricklingPartialFailure","ArchiverTricklingSuccess","ArchiverTricklingRetry","ArchiverTricklingCancel","CameraConnectionEstablished","CameraConnectionStoppedByUser","CameraConnectionStoppedUnexpectedly","CameraRecordingProblem","CameraRecordingProblemRecovered","ConnectionFailed","ConnectionRestored","DatabaseAutomaticBackupFailed","DatabaseAutomaticBackupRecovered","DatabaseFailoverMasterLost","DatabaseFailoverMasterRecovered","DatabaseLost","DatabaseRecovered","DatabaseRestoreFailure","DatabaseRestoreSuccess","DirectoryStarted","DirectoryStoppedByUser","DirectoryStoppedUnexpectedly","HighCPUUsage","HighCPUUsageRecovered","HighMemoryUsage","HighMemoryUsageRecovered","LiveHealthMonitoringRecovered","LiveHealthMonitoringStopped","LowArchiveSpace","LowArchiveSpaceRecovered","LowDatabaseSpace","LowDatabaseSpaceRecovered","OffloadFailed","OffloadRecovered","PatrollerOffline","PatrollerOnline","POSDatabaseLost","POSDatabaseRecovered","RoleStarted","RoleStoppedByUser","RoleStoppedUnexpectedly","RTPPacketLoss","RTPPacketLossRecovered","ServiceStarted","ServiceStoppedByUser","ServiceStoppedUnexpectedly","SynchronizationFailed","SynchronizationRecovered","TransmissionLost","TransmissionRecovered","UnauthorizedDisk","UnauthorizedDiskRecovered","UnitConnectionFailed","UnitConnectionRestored","UnitConnectionStopped","UnitTimeDrift","UnitTimeDriftRecovered","UnitTricklingFailure","UnitTricklingPartialFailure","UnitTricklingSuccess","VideoSignalLoss","VideoSignalRecovered","EdgeStorageRecovered","EdgeStorageFailure","EdgeStorageRecordingRecovered","EdgeStorageRecordingFailure","CertificateValid","CertificateWarning","CertificateError","ValidDriverPack","InvalidDriverPack","ArchivingNotMonitored","ApplicationConnectionNotMonitored","ApplicationNotMonitored","ConnectionNotMonitored","UnitConnectionNotMonitored","DatabaseAutomaticBackupNotMonitored","DatabaseNotMonitored","HighCPUUsageNotMonitored","HighMemoryUsageNotMonitored","LowDatabaseSpaceNotMonitored","OffloadNotMonitored","PatrollerNotMonitored","POSDatabaseNotMonitored","RoleNotMonitored","RTPPacketNotMonitored","ServiceNotMonitored","SynchronizationNotMonitored","VideoSignalNotMonitored","UnauthorizedDiskNotMonitored","ActiveAlarmsNotMonitored","DirectoryNotMonitored","LowArchiveSpaceNotMonitored","LiveHealthMonitoringNotMonitored","DatabaseFailoverMasterNotMonitored","DatabaseRestoreNotMonitored","UnitTricklingNotMonitored","ArchiveBackupNotMonitored","AgentNotMonitored","ArchiveConsolidationNotMonitored","CameraRecordingNotMonitored","CameraConnectionNotMonitored","UnitTimeDriftNotMonitored","TransmissionNotMonitored","EdgeStorageNotMonitored","EdgeStorageRecordingNotMonitored","ArchiverTricklingNotMonitored","CertificateNotMonitored","DriverPackNotMonitored","ScTokenValid","ScTokenError","ScTokenNotMonitored","EntityOnline","EntityOffline","EntityNotMonitored","OptimizedDirectoryStartupSucceeded","OptimizedDirectoryStartupFailed","OptimizedDirectoryStartupNotMonitored","CommunicationsInviteSent","CommunicationsCallFirst","CommunicationsCallRinging","CommunicationsCallDeclined","CommunicationsCallAnswered","CommunicationsCallRejected","CommunicationsCallTimeout","CommunicationsCallEnded","CommunicationsCallStarted","CommunicationsCallLast","CommunicationsContactFirst","CommunicationsContactRegistered","CommunicationsContactUnregistered","CommunicationsContactLast","CommunicationsTrunkFirst","CommunicationsTrunkRegistered","CommunicationsTrunkUnregistered","CommunicationsTrunkLast","CorrelationFirst","CorrelationEvent","CorrelationRuleHitEvent","CorrelationLast","SecretKeyEvent","ResourceDict","RoutableEvent","DynamicContentInfo","AlarmEvent","dynamicContent","instanceId","sourceConditionState","sourceConditionType","triggerEntity","triggerEntityDesc","triggerEntityType","triggerEvent","objDynamicContent","AlarmTriggeredEvent","triggeredTime","AlarmAcknowledgedEvent","ackBy","ackByDesc","ackByType","ackReason","AlarmInvestigatingEvent","investigatedBy","investigatedByDesc","investigatedByType","TimezoneEvent","sourceTimeZoneId","AccessEvent","cardholder","cardholderDesc","cardholderType","credentials","doorSideGuid","doorSideGuidDesc","doorSideGuidType","AccessUnknownCredentialEvent","bitLength","cardFormat","credentialType","uniqueID","ApplicationEvent","applicationName","CustomPayloadEvent","customEventId","Location","address","LprReadEvent","attributesXml","contextThumbnailImage","defaultColor","deviceId","editedRead","heading","isHit","isProtected","isRealTime","location","lprThumbnailImage","manualRead","patrollerId","plate","plateState","speed","unitId","vehicleMake","objLocation","LprHitEvent","hitType","lprRuleId","read1","read2","objRead1","objRead2","UserEvent","userDescriptor","DiagnosticManager","consoleCommandDefaultAnswerEnabled","_enabledLevel","_handlers","enableTraceLevel","enable","executeDebugCommandAsync","logger","params","parameters","param","zeParam","newConnectionCreated","onInternalConsoleCommandRequestReceived","MultiEvent","ModifiedIncidentEvent","incidentId","incidentNote","incidentTimestamp","incidentTitle","isDeleted","referencedEntities","CardholderEvent","CardholderAntipassbackEvent","areaDirectionGuid","CardholderAntipassbackForgivenEvent","DoorEntityFields","doorForcedBehaviorField","doorHeldBehaviorField","doorLockField","doorOpenedField","doorRelockDelayField","doorRelockOnCloseField","doorSensorField","entrySensorExtendedGrantTimeField","entrySensorStandardGrantTimeField","extendedGrantTimeField","interfaceModuleField","isLockedField","isLockSensorUnsecuredField","maintenanceModeActiveField","mainUnitField","manualStationPulledField","maskAccessWhenUnlockedByScheduleField","maskDoorOpenTooLongWhenUnlockedByScheduleField","maximumDelayBetweenSwipesField","normalGrantTimeField","rexHoldOffAfterClosedDelayField","rexHoldOffAfterGrantDelayField","rexHoldoffWhileOpenedField","unlockOnRexField","AutoUnlockOverride","isUnlocking","DoorEntity","doorForcedBehavior","doorHeldBehavior","doorLock","doorOpened","doorRelockDelay","doorRelockOnClose","doorSensor","entrySensorExtendedGrantTime","entrySensorStandardGrantTime","extendedGrantTime","interfaceModule","isLocked","isLockSensorUnsecured","maintenanceModeActive","mainUnit","manualStationPulled","maskAccessWhenUnlockedBySchedule","maskDoorOpenTooLongWhenUnlockedBySchedule","maximumDelayBetweenSwipes","normalGrantTime","rexHoldOffAfterClosedDelay","rexHoldOffAfterGrantDelay","rexHoldoffWhileOpened","unlockOnRex","deleteAutoUnlockOverrideAsync","getAutoUnlockOverrideAsync","addAutoUnlockOverrideAsync","getDoorSidesAsync","unlockAsync","CredentialEntityFields","badgeTemplateField","cardholderField","cardNumberField","credentialCodeField","credentialTypeField","facilityField","formatField","formatFriendlyNameField","keyPadField","CredentialEntity","badgeTemplate","cardNumber","credentialCode","facility","format","formatFriendlyName","keyPad","CardholderAccessEvent","accessPoint","doorSide","licensePlateExactMatch","underDuress","wrongPin","CredentialStatusEvent","accessPointGuid","accessPointGuidDesc","AccessPointCredentialStatusEvent","credentialGuid","credentialGuidDesc","CardholderIdentityValidationEvent","area","door","IdentityValidationEvent","CardholderAccessGrantConfirmationRequestedEvent","biometricScore","AccessGrantConfirmationRequestedEvent","Guids","AccessRuleReportTemplate","ActiveOutputBehavior","RemoteUser","Administrator","Administrators","SCCompactOperator","SCCompactViewer","SCCompactRestrictedPartition","AlarmReportTemplate","AlertAudioFile","AllCardholders","AllOpenRule","AlwaysSchedule","AntipassbackRule","AreaPresenceReportTemplate","AutoGeneratedReportTemplate","Bell1AudioFile","Bell2AudioFile","Bell3AudioFile","BuzzerAudioFile","CardholderActivityReportTemplate","CardholderUnknownImage","UnknownImage","RootPartition","MasterPartition","SystemPartition","DoorActivityReportTemplate","DoorAudioFile","DoorBell1AudioFile","DoorBell2AudioFile","FallbackPrivilege","GlassAudioFile","HealthReportTemplate","LockAudioFile","LockdownRule","NormalOutputBehavior","RootPrivilege","Service","SystemConfiguration","ThreeBellsAudioFile","TimeAndAttendanceReportTemplate","UnitActivityReportTemplate","VisitedPersonCustomField","VisitedPersonFirstNameCustomField","VisitedPersonLastNameCustomField","VisitorActivityReportTemplate","VisitorCompanyCustomField","VisitorPhoneNumberCustomField","VisitorVisitReasonCustomField","ZoneActivityReportTemplate","PermitZoneEveryone","PermitZoneNoPermits","PermitZoneAllPermits","DefaultUserId","DefaultLprPermitRuleId","DefaultLprOvertimeRuleId","LprSharedPermitRule","LprNewWantedRule","DefaultParkingZoneRule","PatrollerDefaultUserId","PublicUserGroup","RoleModuleApplication","DefaultMapId","DefaultArchiveConsolidationTransferGroup","RecommendedFirmwareTypeGuid","HardeningEntryGuid","LicenseCategory_SecurityCenter","LicenseCategory_Synergis","LicenseCategory_MissionControl","LicenseCategory_Omnicast","LicenseCategory_AutoVu","LicenseCategory_PlanManager","LicenseCategory_Mobile","LicenseCategory_Sipelia","SlotInfo","RoleAgentApplication","appId","AgentUrl","applicationPath","RestVersion","minor","major","build","revision","PluginRoleConfig","externalPlugin","configToolData","configToolHtml","configToolHtmlZip","configToolHtmlZipMd5","roleCustomData","supportDatabase","nameSpace","objVersion","DatabaseConnectionInfo","connectionString","PluginRoleEntity","getDatabaseConfigurationAsync","setDatabaseScriptsAsync","freeSlotAsync","groupId","slotId","modifyLicenseItemAsync","tag","getPluginRoleConfigAsync","reserveSlotAsync","maxCountAllowed","getRoleAgentApplicationsAsync","getFreeSlotAsync","startOpenIdServerAsync","authCallbackUri","port","FeatureDescriptor","generalAvailability","enabledByDefault","Feature","descriptor","specificConfig","serverSpecificConfig","objDescriptor","KeyValue","RestRoleConfigToolData","features","advancedSettings","WebAppConfig","useDefaultPorts","httpPort","httpsPort","httpsSupported","tokenDuration","maxClientSessions","useKestrel","roleUniqueId","bindCertificate","enableLoadBalancing","localAddress","LicenseDetails","_fieldObject","hasLicense","license","webAppUniqueIdHeader","WebAppConnection","project","fetchEventSubject","Subject","cancellationToken","defer","throttle","leading","trailing","exhaustMap","finalize","tap","fieldObjects","disposeWebSocketSubject","_","afterLogonOperationAsync","webSocketSubject","SecurityCenterVersionEquality","SecurityCenterVersion","minimumVersion","maximumVersion","currentVersion","tryParse","minVersion","maxVersion","isCompatible","parseInt","isEqual","Greater","Smaller","buildA","buildB","Equal","isGreaterOrEqual","minValidation","isSmallerOrEqual","maxValidation","backwardCompatible","propertyName","default","BackwardCompatible","propWrappers","classWrapped","propertyToWrap","propertyDescriptor","getOwnPropertyDescriptor","originalGet","originalSet","defineProperty","originalImpl","ElevatorEntityFields","cabinReaderField","ElevatorEntity","cabinReader","getFloorsAsync","VisitorEntityFields","checkinDateField","checkoutDateField","escortField","escort2Field","isArchivedField","mandatoryEscortField","validateEscortRulesField","visitDateField","VisitorImage","VisitorEntity","checkinDate","checkoutDate","escort","escort2","isArchived","mandatoryEscort","validateEscortRules","visitDate","LprUnitEntityFields","extendedInfoField","lprUnitTypeField","LprUnitEntity","extendedInfo","lprUnitType","PatrollerEntityFields","softwareVersionField","PatrollerEntity","softwareVersion","getUnitsAsync","ContentFileEntityFields","pathField","schemaField","supportsEditorField","userNameField","RuleTranslation","to","RuleAttribute","isMandatory","dateFormat","translations","ContentFileEntity","schema","supportsEditor","userName","getAttributesAsync","addPlateAsync","HotlistEntityFields","downloadOnlyAtLogonField","emailNotificationAddressField","expeditiveTransferField","hitPriorityField","isCovertField","overridePrivacyField","soundFileField","useWildcardsField","HotlistEntity","downloadOnlyAtLogon","emailNotificationAddress","expeditiveTransfer","hitPriority","isCovert","overridePrivacy","soundFile","useWildcards","UserTaskEntityFields","guidField","isSystemTaskField","taskSubTypeField","taskTypeField","UserTaskEntity","FileEntityFields","cacheGuidField","fileCategoryField","xmlInfoField","FileEntity","cacheGuid","fileCategory","DoorTemplateEntityFields","doorHeldOpenDelayField","enforceVisitorEscortRulesAlphaSideField","enforceVisitorEscortRulesBetaSideField","extendedEntryTimeField","grantOnRexField","interfaceModuleDeviceDefinitionField","isAccessRulesEnabledField","isDefaultField","isDoorPropertiesEnabledField","isHardwareMappingEnabledField","isHardwareSettingsEnabledField","normalEntryTimeField","CardAndPinSetting","cardAndPinCoverage","cardAndPinTimeout","side","readerMode","AccessRulesConfig","accessRule","AccessPointsInfo","DoorTemplateEntity","doorHeldOpenDelay","enforceVisitorEscortRulesAlphaSide","enforceVisitorEscortRulesBetaSide","extendedEntryTime","grantOnRex","interfaceModuleDeviceDefinition","isAccessRulesEnabled","isDoorPropertiesEnabled","isHardwareMappingEnabled","isHardwareSettingsEnabled","normalEntryTime","getAccessRulesAsync","getAppliedDoorsAsync","applyAsync","doorGuid","unitGuid","interfaceGuid","getCardAndPinSettingsAsync","AccessManagerRoleEntityFields","activateGlobalAntiPassbackField","activatePeerToPeerField","keepHistoryField","logRetentionDaysField","AccessControlExtension","AccessManagerRoleEntity","activateGlobalAntiPassback","activatePeerToPeer","keepHistory","logRetentionDays","getExtensionsAsync","AreaAccessPointEntityFields","areaField","AreaAccessPointEntity","getRulesAsync","DoorAccessPointEntityFields","doorField","DoorAccessPointEntity","DoorSideAccessPointEntity","setDeviceStateAsync","shunt","MobileApplicationEntityFields","altitudeField","headingField","isBlackListedField","mobileVideoUnitIdField","oSField","speedField","MobileApplicationEntity","isBlackListed","mobileVideoUnitId","oS","InputDeviceEntityFields","inputStateField","InputDeviceEntity","inputState","IntrusionInputDeviceEntityFields","bypassedStateField","inputTypeField","inputTypeCustomIconField","inputTypeIdField","inputTypeNameField","IntrusionInputDeviceEntity","bypassedState","inputType","inputTypeCustomIcon","inputTypeId","inputTypeName","getAlarmSourcesAsync","bypassInputAsync","unbypassInputAsync","OutputDeviceEntityFields","outputStateField","OutputDeviceEntity","outputState","triggerOutputAsync","outputBehaviorId","LicensePlateManagerRoleEntityFields","archiverIdField","eventRetentionInDaysField","hitImageRetentionInDaysField","hitRetentionInDaysField","occupancyRetentionInDaysField","parkingZoneDataRetentionInDaysField","positionRetentionInDaysField","readImageRetentionInDaysField","readRetentionInDaysField","ModuleConfig","LicensePlateManagerRoleEntity","archiverId","eventRetentionInDays","hitImageRetentionInDays","hitRetentionInDays","occupancyRetentionInDays","parkingZoneDataRetentionInDays","positionRetentionInDays","readImageRetentionInDays","readRetentionInDays","getAssociationAsync","getModulesAsync","ArchiverAgentEntityFields","archiveBackupPathField","archivingPriorityField","backupRetentionPeriodField","databasePasswordField","databaseUserField","deleteOldBackupFilesOnDiskFullField","notificationsOnlyWhenLimitIsReachedField","rtspPortField","rtspPortUnitControlField","telnetPortField","ArchiverAgentEntity","archiveBackupPath","archivingPriority","backupRetentionPeriod","databasePassword","databaseUser","deleteOldBackupFilesOnDiskFull","notificationsOnlyWhenLimitIsReached","rtspPort","rtspPortUnitControl","telnetPort","getArchiverStatsAsync","getDriveGroupsAsync","ArchiverRoleEntityFields","archiveBackupMaxBandwidthField","archiveFileSizeEnabledField","archivingLoadThresholdField","autodiscoverAreaField","deleteOldFilesOnDiskFullField","enableArchiveConsolidationField","enableAutomaticCleanupField","enableCloudArchivesField","enableEdgePlaybackRequestsField","enableThumbnailsRequestsField","isVideoWatermarkingField","maximumSimultaneousDownloadField","maximumVideoLenghtField","maximumVideoSizeField","primaryArchiverIdField","protectedVideoThresholdField","telnetEnabledField","telnetPasswordField","VideoQualityPreset","resolution","NTPSetting","pollTimeout","refuseBasicAuthentication","getAdvancedSettingsAsync","AdvanceSetting","ArchiverRoleEntity","archiveBackupMaxBandwidth","archiveFileSizeEnabled","archivingLoadThreshold","autodiscoverArea","deleteOldFilesOnDiskFull","enableArchiveConsolidation","enableAutomaticCleanup","enableCloudArchives","enableEdgePlaybackRequests","enableThumbnailsRequests","isVideoWatermarking","maximumSimultaneousDownload","maximumVideoLenght","maximumVideoSize","primaryArchiverId","protectedVideoThreshold","telnetEnabled","telnetPassword","getNTPSettingsAsync","getVideoQualityPresetsAsync","getVideoUnitsAsync","AuxiliaryArchiverRoleEntityFields","diskLoadWarningLimitField","enableAudioRecordingField","enableMetadataRecordingField","maximumVideoLengthField","AuxRecordingMode","AuxiliaryArchiverRoleEntity","diskLoadWarningLimit","enableAudioRecording","enableMetadataRecording","maximumVideoLength","MediaRouterRoleEntityFields","startMulticastAddressField","startMulticastPortField","useSecureCommunicationField","Strategy","networkCardMac","exportTricklingEnabled","liveEnabled","playbackEnabled","networkCardRtpPort","networkCardRtspPort","publicAddresses","networkCardIPAddress","UdpPortRange","lowerBound","upperBound","Redirector","udpPortRange","rtpPort","maximumLiveStreams","maximumPlaybackStreams","liveBandwidthHardLimit","liveBandwidthSoftLimit","playbackBandwidthHardLimit","playbackBandwidthSoftLimit","strategy","isAdvanceRedirectionStrategy","objUdpPortRange","MediaRouterRoleEntity","startMulticastAddress","startMulticastPort","useSecureCommunication","getRedirectorsAsync","ActiveDirectoryRoleEntityFields","connectionStatusField","dCField","defaultBadgeTemplateField","defaultCardFormatField","externalAddressField","maxPictureSizeField","maxPictureSizeLimitField","netBiosNameField","partitionGuidField","uploadPicturesToActiveDirectoryField","useApplicationCredentialsField","useDCField","useGlobalCatalogField","useSSLConnectionField","ImportedGroup","groupAccountGuid","groupAccountName","synchronizeCardholders","synchronizeCredentials","synchronizeUserGroup","synchronizeUsers","ActiveDirectoryRoleEntity","connectionStatus","dC","defaultBadgeTemplate","defaultCardFormat","externalAddress","maxPictureSize","maxPictureSizeLimit","netBiosName","partitionGuid","uploadPicturesToActiveDirectory","useApplicationCredentials","useDC","useGlobalCatalog","useSSLConnection","getImportedGroupsAsync","triggerSynchronizationAsync","NetworkEndPoint","metadataEndpoints","redirectUris","logoutUris","AuthenticationRoleEntity","getNetworkEndPointsAsync","DomainName","fullyQualifiedForm","netbiosForm","Domain","domains","relyingPartyId","enablePassiveAuth","externalIdentityProviders","AdfsRoleEntity","getTrustChainsAsync","DirectoryFailoverRoleEntityFields","forceDirectoryOnMasterField","DirectoryFailoverRoleServer","isGatewayOnly","isDisasterRecovery","DirectoryFailoverRoleEntity","forceDirectoryOnMaster","getValidationKeyAsync","servers","FederationBaseRoleEntityFields","defaultParentAreaField","enablePlaybackField","iPField","portField","statusDescriptionField","FederationBaseRoleEntity","defaultParentArea","enablePlayback","iP","statusDescription","HealthMonitoringRoleEntity","IncidentManagementRoleEntity","MapManagerRoleEntityFields","cacheLocationField","connectionPortField","MapManagerRoleEntity","cacheLocation","connectionPort","MediaGatewayRoleEntityFields","httpPortField","httpsPortField","listenPortField","rtspEnabledField","secureServerField","useDefaultPortsField","useRtspsField","webApplicationPathField","MediaGatewayRoleEntity","listenPort","rtspEnabled","secureServer","useRtsps","webApplicationPath","OmnicastFederationRoleEntityFields","defaultStreamUsageField","federateAlarmsField","videoRedirectionModeField","SecurityCenterFederationRoleEntityFields","forwardDirectoryReportsField","resiliencyTimeoutInMillisecondsField","rootAreaIdField","useResilientConnectionField","FederationEvent","SecurityCenterFederationRoleEntity","defaultStreamUsage","federateAlarms","forwardDirectoryReports","resiliencyTimeoutInMilliseconds","rootAreaId","useResilientConnection","getEventsAsync","OmnicastFederationRoleEntity","videoRedirectionMode","PointOfSaleRoleEntity","ReverseTunnelClientRoleEntityFields","encryptionModeField","keyFileField","remoteEncryptionModeField","ReverseTunnelClientRoleEntity","encryptionMode","keyFile","remoteEncryptionMode","ReverseTunnelServerRoleEntityFields","globalEncryptionModeField","globalTcpPortRangeEndField","globalTcpPortRangeStartField","ReverseTunnelServerRoleEntity","globalEncryptionMode","globalTcpPortRangeEnd","globalTcpPortRangeStart","addSitesAsync","deleteSitesAsync","PluginRoleEntityFields","WebClientRoleEntityFields","exportFolderField","useDefaultWebServerPortField","useInfiniteSessionsField","webAddressField","Setting","WebClientRoleEntity","exportFolder","useDefaultWebServerPort","useInfiniteSessions","webAddress","getSettingsAsync","ZoneManagementRoleEntityFields","ZoneManagementRoleEntity","EntityWrapper","customIcon","AccessControlUnitEntityWrapper","AccessManagerRoleEntityWrapper","AccessPointEntityWrapper","AccessPointRuleEntityWrapper","AreaAccessPointEntityWrapper","CardholderEntityWrapper","CardholderGroupEntityWrapper","CredentialEntityWrapper","DoorAccessPointEntityWrapper","DoorEntityWrapper","DoorSideAccessPointEntityWrapper","DoorTemplateEntityWrapper","ElevatorEntityWrapper","VisitorEntityWrapper","ZoneEntityWrapper","ApplicationEntityWrapper","MobileApplicationEntityWrapper","DeviceEntityWrapper","InputDeviceEntityWrapper","IntrusionInputDeviceEntityWrapper","OutputDeviceEntityWrapper","IntrusionAreaEntityWrapper","IntrusionUnitEntityWrapper","ContentFileEntityWrapper","HotlistEntityWrapper","LicensePlateManagerRoleEntityWrapper","PatrollerEntityWrapper","LprUnitEntityWrapper","ActiveDirectoryRoleEntityWrapper","AdfsRoleEntityWrapper","AuthenticationRoleEntityWrapper","DirectoryFailoverRoleEntityWrapper","FederationBaseRoleEntityWrapper","HealthMonitoringRoleEntityWrapper","IncidentManagementRoleEntityWrapper","MapManagerRoleEntityWrapper","MediaGatewayRoleEntityWrapper","OmnicastFederationRoleEntityWrapper","PluginRoleEntityWrapper","PointOfSaleRoleEntityWrapper","ReverseTunnelClientRoleEntityWrapper","ReverseTunnelServerRoleEntityWrapper","RoleEntityWrapper","SecurityCenterFederationRoleEntityWrapper","WebClientRoleEntityWrapper","ZoneManagementRoleEntityWrapper","ArchiverAgentEntityWrapper","ArchiverRoleEntityWrapper","AuxiliaryArchiverRoleEntityWrapper","CameraEntityWrapper","MediaRouterRoleEntityWrapper","SequenceEntityWrapper","StreamEntityWrapper","TransferGroupEntityWrapper","AgentEntityWrapper","AlarmEntityWrapper","AreaEntityWrapper","CustomEntityWrapper","FileEntityWrapper","LocatableEntityWrapper","MacroEntityWrapper","MapEntityWrapper","NetworkEntityWrapper","PartitionEntityWrapper","PrivilegedEntityWrapper","RouteEntityWrapper","ScheduleEntityWrapper","ServerEntityWrapper","SystemConfigurationEntityWrapper","ThreatLevelEntityWrapper","TileLayoutEntityWrapper","TilePluginEntityWrapper","UnitEntityWrapper","UserEntityWrapper","UserGroupEntityWrapper","UserTaskEntityWrapper","WrapperFactory","setPrototypeOf","console","WebAppRegistrationInfo","machineId","TokenIdentityClaims","expiration","UserTokenDataWithClaims","WebAppClient","currentLogonState","_logonState","currentUserInfo","_currentUserInfo","_diagnosticManager","debugAppName","connectStreamer","applicationType","tokenValidity","requestedPrivileges","supportWebSocket","supportSSE","_logonStateChangedDispatcher","LoggedOff","_logonCancellationToken","_currentToken","_wasLoggedOn","_entityTypeDic","_eventTypeDic","_tokenAppliedDispatcher","_entityInvalidatedDispatcher","_entityAddedDispatcher","_entityRemovedDispatcher","_actionDispatcher","_requestDispatcher","_securityCache","eventsReceivedSubject$","renewTokenDelayBeforeEnd","disposing","registerEvents","_timerTokenRenewal","onTimerRenewToken","eventsReceived$","asObservable","logoffAsync","logonAsync","logonInfo","disposeRestConnectionAsync","buildRestConnection","directory","onInternalEventReceived","onInternalEntityInvalidated","onInternalEntityAdded","onInternalEntityRemoved","onInternalActionReceived","onInternalRequestReceived","onInternalDisconnectRequestReceived","getCurrentUserInfoAsync","exception","changeExpiredPasswordAsync","oldPassword","newRest","buildEntityCache","debounce","maxDebouce","getAsync","identifier","objectUri","ro","createLocalEntity","transactionQuery","queryString","buildQueryResult","arrayResult","queryAsync","enableStreamedResponse","fireSubResult","createAsync","trans","restEntity","result2","result3","resetDirty","rep","t","instance","isValidEntityType","createEntityClass","createTransaction","deleteAsync","renewTokenAsync","toKenDuration","getUserToken","applyTokenAsync","authentificationHeader","privs","duration","restConnection","sb","priv","readUserTokenData","UserGuid","DirectoryGuid","IsAdministrator","UserName","registerAdditionalEventTypes","typeName","onTokenApplied","concatMap","startValidityProcess","afterTokenAppliedAsync","authToken","validateUrl","newConnection","dir","e2","activator","multiEvent","fireMultiEvents","eventArg","ReloggingOn","fireLogonStateChange","cleanedEntityType","eventsReceived","singleEvent","EventType","timeUntilNow","valueOf","now","_applicationId","_securityCenterVersion","_roleId","_serverId","_userId","userLogonLanguage","_userLogonLanguage","registrationFailReason","_registrationFailReason","registrationFailResponse","_registrationFailResponse","roleConfig","_roleConfig","_licenseDetails","registrationInfo","_afterLogonCallbacks","initialize","wrap","_postLogonFailResponse","WebAppGlobals","getIsAuthenticatedWithOpenIdAsync","isGlobalPrivilegeGranted","_grantedGlobalPrivileges","logonState","fetchScVersion","registerApplicationAsync","initClientData","getAdvancedSetting","isNaN","addLogonInterceptCallback","validatedUrl","claims","webAppConnection","registrationResult","fetchRoleConfig","systemConfig","delayAsPromise","timeToWait","WINDOW","SecurityCenterClientService","scClient","securityCenterClient","webAppMachineUniqueIdHeader","storedWebAppUniqueId","sessionStorage","getItem","resetUniqueAppId","storedWebAppMachineUniqueId","localStorage","setItem","xsrfToken","getCookie","resetToken","removeItem","cname","ca","decodeURIComponent","cookie","charAt","providedIn","noop","LoggerService","traceInformation","traceDebug","traceError","traceFatal","tracePerformance","traceWarning","logServerSide","currentLogSeverities","setAvailableLoggers","scwLogSeverity","scwSetAllLoggers","setAllLoggers","bind","scwSetFullLoggers","setFullLoggers","scwClearLoggers","clearLoggers","scwToggleSpecificLogger","toggleSpecificLogger","scwToggleLogServerSide","toggleLogServerSide","setCurrentLoggers","capitalizedLogger","setTraceDebug","setTraceError","setTraceFatal","setTraceInformation","setTracePerformance","setTraceWarning","debug","fullTracePrefix","Function","prefix","warn","TrackingService","securityCenterProvider","loggerService","activeComponents","addActiveComponent","activeCount","removeActiveComponent","logActionAsync","actionDescription","outputStats","component","TrackedComponent","Gelato","trackingService","componentId","ngOnInit","ngOnDestroy","logAction","originComponent","selectors","decls","vars","template","encapsulation","i0","CommandButtonComponent","ButtonFlavor","getName","getTooltip","onButtonClicked","cancelBubble","preventDefault","inputs","consts","MenuSeparator","ContextTypes","Content","EntityId","Unsubscribable","SubscriptionCollection","remove","unsubscribeAll","CommandsUsageContext","EntityCommandsUsageContext","entityCache","invalidateCanExecute","invalidateDisplay","CommandsUsage","subscriberCount","subscribers","commandsService","specificCommandIds","commands","isReady$","BehaviorSubject","usageDone","initializingCommands","commandDisplay","commandUsages","items","allCommands","sort","p1","p2","sectionName","isGroupHidden","isChildVisible","child","children","commandUsage","itemsToInsert","subMenu","groupIcon","findIndex","getValue","executeCommand","initializeCommand","fireAndForget","addCommands","createContextMenuItemsAsync","waitToBeReady","CommandsUsage_1","createContextMenuItems","other","represents","contains","refreshCanExecuteAsync","setCommandDisplay","refreshDisplayAsync","canExecuteCommandAsync","forceExecuteCommand","getCommandDisplayAsync","onCommandInitialized","resolvePromise","untilDestroyed","isReady","UntilDestroy","Element","CommandButtonsComponent","excludedCommandIds","areButtonsSpaced","mainButtonFlavor","isLoadingChange","EventEmitter","Icon","ItemSlot","MenuPosition","additionnalCommands","displayedCommands","isLoading","isMoreMenuOpen","moreMenuItemSource","ngOnChanges","changes","commandsUsage","previousValue","createCommandButtons","emit","onClicked","toggleMoreMenu","createAdditionnalCommands","moreMenu","toggle","excludedCommandId","maximumButtonCount","viewQuery","IDBService","Dexie","DBVersion","DBName","FilesStore","ResourcesStore","IDBService_1","files","resources","canOpenDBSubject","updateCanOpenDB","canOpenDB","setupTables","isIDBSupported","indexedDB","stores","table","newDB","open","onsuccess","deleteDatabase","Window","ResourcesService","securityCenterClientService","resourcesClient","idbService","encryptionKey","clearCache","maxAge","below","deletedRecords","getCachedItem","useEncryption","updateCache","getCachedItemInternalAsync","updateCachedItem","updateCachedItemInternalAsync","customIcons","options","useCache","bypassCache","encrypted","customIconQueryEntries","customIconIdsByEntityId","createPropsByEntityIdMap","cacheKey","createCustomIconCacheKey","customIconResult","toPromise","all","customIconData","fileCacheQueryEntry","fileCacheQueryEntries","fileCacheIdsByEntityId","fileId","fileCacheResult","fileCacheData","getResourcesAsync","keysArray","toArray","resourcesToFetch","resourcesData","getResourcesFromServerAsync","update","storeData","updateLastAccess","decryptAsync","put","encryptAsync","uniqueIdPropNamePath","reduce","isGuid","idString","CryptoJS","CustomIconComponent","resourcesService","cdRef","loadingFailed","needReloadCustomIcon","customIconState","customIconSrc","loadCustomIcon","isGenIconShowing","isNonEmptyGuid","customIconIdSrc","finally","iconFontSizePx","customIconWidthPx","customIconHeightPx","transition","style","animate","BrowserItem","canExpand","collapsed","expanded","isChecked","isExpanding","sortPriority","itemId","itemExpanded","isExpanded","EntityBrowserKeyboardNavigationDirective","elementRef","browserItem","htmlElement","nativeElement","DisplayContext","MetadataKey","FeatureFlagSymbol","String","featureFlagKey","advancedSettingsService","CreateFeatureFlag","CreateFeatureFlagGroup","AccessControlFeatureFlags","General","AddCardholders","CardholdersEditPane","CardholderEditPicture","EditPaneCreateCredentials","PluginItem","componentFactory","exposure","subTaskPlugins","commandTarget","ExternalPluginDescriptor","packageFileName","pluginDescriptor","ModulePluginDescriptor","dependencies","ExternalPluginDependency","objPluginDescriptor","libraryName","moduleClassType","componentType","PluginsController","getExternalDescriptorsAsync","AdvancedSettingsService","fallbackValue","PluginService","availablePlugins","availableContentPlugins","compiler","injector","componentFactoryResolver","resolvedExternalPluginDescriptors","pluginDescriptorsByPluginTypes","GuidMap","getPlugin","pluginId","filteredPlugins","getPlugins","toFilterPlugin","allPlugins","getInternalPluginsAsync","concat","pluginToFilter","requiredParentPlugin","plugin","getPluginName","pluginComponent","getPluginDescriptor","getPluginsGlobalPrivileges","globalPrivileges","requirements","optionalGlobalPrivileges","getPluginsFromContentGroup","contentGroup","plugins","mainContent","subContents","subContent","getWebAppLicensesPartsFromPlugins","licenseParts","licenses","getLicensesPartsState","licensePart","resolvedPluginType","pluginTypes","existingDescriptorsEntry","pluginItems","allRequirementsSatisfiedAsync","isSupported","resolveComponentFactory","subTaskPluginType","isContentSupported","getExternalPlugins","resolvedPluginDescriptors","pluginsController","pluginDescriptors","dependency","moduleType","moduleWithFactories","compileModuleAndAllComponentsAsync","ngModuleFactory","create","componentFactories","isFeatureSupportedAsync","isLicenseSupported","isGlobalPrivilegeSupported","areFeatureFlagsEnabled","enabledFeatureFlags","areFeatureFlagsDisabled","disabledFeatureFlags","licenseRequired","featuresRequired","featuresService","getFeaturesAsync","every","featureFlag","Reflect","getMetadata","PluginDescriptorImpl","defineMetadata","InternalPluginDescriptor","InternalContentPluginDescriptor","ContentLoad","typeId","contextContent","contextsubContents","PluginTypes","Task","AccessControlSubTask","Tray","NavBarExtension","Tile","Widget","Dashboard","Option","Filter","MapPopupCompact","MapPopupExpand","MapTray","TileHeader","SidePaneHeader","OptionSubSections","Peripherals","Advanced","Events","Tiles","TraySubSections","MainBar","Secondary","coerceBooleanProperty","ContentSerializer","deserializeContent","serializeContent","content","TilesConstants","TilesContentContextId","DragDropTypes","EntityBrowserItems","DragDropEffect","DragTarget","DragDropHelper","dragData","dropEffect","contentProviderService","tilePattern","tileContents","xml","dataTransfer","getData","extractSecurityCenterDragContent","contentGroupJson","deserializeContentGroup","entityQuery","tileLayout","contents","getContentsAsync","contentGroups","DOMParser","parseFromString","cameraIdString","getAttribute","dragType","getDragData","TilesTask","updateDragData","supportedDragTypes","supportedType","EntityTypeData","subTypeGuid","_idString","updateStringId","setTypeField","isInstanceOfGuid","setSubTypeGuidField","setSubTypeField","entitySubType","hasSubType","is","lowerCaseKey","isString","IconsService","getEntityTypeIcon","entityTypeData","getEntityTypeData","getEntityIcon","FieldObjectOverloads","CONSTRUCTORS","OVERLOADS","parentType","overloadType","childTypes","LAST_OVERLOAD_TYPE","RegisterFieldObjectConstructor","registerConstructor","RegisterFieldObjectOverload","registerOverload","overloadTypeName","HierarchicalFieldObject","getOverload","getConstructor","overload","ModelObject","EntityBrowserItemModel","canHaveChildren","objEntityType","AreaBrowserItemModel","EntityBrowserItemService","iconsService","getItemIcon","EntityBrowserSelection","allIds","allItems","hasMany","singleId","singleItem","EntityBrowserCheckSelection","itemMap","exclusions","naturalSort","item1","item2","caseSensitive","sre","dre","hre","ore","s","xN","yN","xMatch","match","yMatch","xD","yD","oFxNcL","oFyNcL","cLoc","numS","Math","parseFloat","PageInfo","lastEntityId","pageInfo","HierarchicalData","FieldFilterData","ExpanderFilterData","expanderType","objEntityTypeData","CustomFieldData","EntityBrowserFilterData","excludedEntities","fieldFilters","includedEntities","refresherType","searchLogicalIds","textFilter","objPageInfo","HierarchicalEntityBrowserFilterData","isRootExpanded","expanderData","expandedParents","FlatEntityBrowserFilterData","ownerRole","EntityBrowserResult","currentPage","includedEntityIds","isResultComplete","entityBrowserItemModels","HierarchicalEntityBrowserResult","subResults","HierarchicalEntityBrowserResult_1","EntityBrowserData","EntityBrowserExpandData","objFilter","EntityBrowserRefreshData","isFullRefresh","EntityBrowserController","getExpandAsync","getLogicalTypesAsync","getRefreshAsync","EntityTypeSet","addRange","subTypes","getSubTypes","subTypeData","thisArg","tryAdd","FieldFilterSet","_fieldFilters","fieldFilter","existingFilter","EntityBrowserFilter","isHierarchical","selectableEntityTypes","selectedEntityIds","clonedFilter","createFilter","extractRestParam","createRestParam","fillRestParam","formatText","textToFilter","HierarchicalEntityBrowserFilter","entityExpanderTypes","expanderDataCollection","EntityBrowserService","logicalTypesMutex","retrieveLogicalTypesAsync","cloneFilter","compareItems","getDefaultLogicalTypesAsync","defaultLogicalEntityTypes","refreshAsync","getController","expandAsync","logicalTypes","FeaturesService","featuresClient","scClientService","featuresInternal","getFeaturesMutex","getFeaturesMutexRelease","aquireGetFeaturesMutex","refreshFeatures","CommandsUsageManager","commandsUsages","invalidateCanExecuteForAllCommandsUsage","createUsageAsync","commandProviders","onlyUseSpecificCommands","existingUsage","entityFields","provider","requiredEntityFields","hasSpecificCommand","getCommandsAsync","getAvailableCommandsAsync","usageDoneUnsubscribe","CommandsUsageCollection","commandsUsageReadySubscriptions","commandSubscriptions","allCommandUsages","filteredCommands","addUsage","mapSome","commandSubscription","addUsages","commandsUage","removeUsages","take","switchMap","of","KEY_MAP","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","KEY_ALIAS","ctrl","del","down","esc","up","InternalCommandsService","isContextMenuOpen","contextMenuHandler","zone","onContextMenuShowSubject","onContextMenuHideSubject","activeCommandsUsages","activeContextMenuCommandsUsages","commandsUsageManager","knownShortcutCommands","normalizedKeys","additionnalRequirements","commandHandlerSubscriptions","onContextMenuShow$","onContextMenuHide$","listeners","runOutsideAngular","addEventListener","handleKeyboardEvent","addActiveCommandsUsages","appendRequirements","commandRequirements","currentRequirements","getAdditionnalRequirements","listener","commandEntry","bindings","internalCanExecuteCommandAsync","internalExecuteCommandAsync","contextArgs","getActiveCommandProvidersAsync","getAvailableCommandIdsAsync","getCommandAsync","executable","internalGetCommandDisplayAsync","activeTargetOverriden","isAnyAvailableAsync","activeTargetOverride","getCommandShortcut","getCommandsUsage","onlyUserSpecificCommands","registerCommandProvider","commandProvider","compareByPriority","registerCommands","registerCommandShortcut","shortcut","registerContextMenuHandler","removeActiveCommandsUsages","showContextMenuAsync","clearActiveContextMenuCommandsUsage","showContextMenu","mouseEvent","menuItems","reference","hideCurrentContextMenu","normalizeBindings","addListener","removeListener","canExecuteAsync","validationParams","isValidTargetForCommand","skipCommandValidation","hideContextMenu","a","b","requiredFeatures","feature","getKeyFromEvent","fromCharCode","altKey","ctrlKey","metaKey","shiftKey","normalizeKey","join","isInputEvent","isEventFromInput","targetData","executeCommandData","runGuarded","isHandled","displayHandler","internalIsCommandAvailableAsync","isAvailableAsync","Node","nodeName","activeTarget","normalizedKey","segment","listenerToRemove","NgZone","RunningState","NotRunning","Running","EntityBrowserItem","hasWarnings","isInMaintenance","isOffline","isViewHierarchical","entityBrowserItemService","isIncludedItem","canSelect","setText","setIcon","iconName","ShowMoreBrowserItem","isQuerying","isShowMore","EntityBrowserItemsSource","canSelectItemFunction","_canSelectItemFunction","checkedEntityIds","_checkedEntityIds","createItemFunction","_createItemFunction","excludedCheckedEntityIds","_excludedCheckedEntityIds","_isHierarchical","entityBrowserService","translateService","toastService","entityBrowserId","changeDetectorRef","isFiltered","allowMultiSelect","rootItems","selectedItems","lastSearchInstanceId","areSourceEntitiesSet","checkedItemsChangedSubject","firstItemOfSelection","itemEventUnsubscribes","lastItemOfSelection","selectedItemsChangedSubject","checkedItemsChanged$","selectedItemsChanged$","addCheckedEntityIds","checkedEntityId","addExcludedCheckedEntityIds","excludedCheckedEntityId","checkAll","setItemIsChecked","onCheckedItemsChanged","clearSelection","unsubscribes","unsubscribeFromItemEvents","expandItemAsync","entityBrowserFilter","expandInternalAsync","addItemsFromResult","setItemIsExpanded","markForCheck","getItemParentHierarchies","parentItems","selectedItem","getParentItemsRecursive","getAllParentItemsRecursive","searchInstanceId","insertResult","selectItemAsync","ignoreEvents","canSelectItemAsync","keepCurrentSelection","fillSelection","hasExistingSelection","setFirstItemOfSelection","KeyboardEvent","MouseEvent","newSelection","positionOfSelection","compareItemsPosition","nextItem","getNextItem","previousItem","getPreviousItem","setSelectedItems","itemIndex","selectNextItemAsync","itemToSelect","startItem","selectPreviousItemAsync","selectScrollDownItemAsync","minTop","maxBottom","selectScrollingItemAsync","selectScrollTopItemAsync","wasItemExpanded","ignoreEvent","entityBrowserItems","showMoreItems","getResultAsync","show","instant","flavor","Flavor","toggleItemsCheckbox","keyboardEventItem","itemsToCheck","parentItemIds","itemToCheck","itemParentIds","getAllParentIdsRecursive","parentId","itemUsedForIsCheckedValue","isCheckedValue","updateEntityIsChecked","uncheckAll","rootItem","updateParents","updateItemsIsChecked","canSelectEntityType","addChildren","subResult","addItem","parentItem","existingItems","firstItem","updateItemIsChecked","itemUnsubscribes","onItemExpanded","onItemCollapsed","createBrowserItem","resulIncludedEntityIds","existingItem","inlcudedItems","includedItem","insertIndex","lastItem","tryAddShowMoreButton","showMoreItem","item1Position","item2Position","item1Parents","item2Parents","getParentsFunc","commonParent","parentIndex","getPositionItem","itemParents","castedModel","doesItemHaveCheckedParent","parentIds","getCheckboxStateFromChildren","node","checkedCount","indeterminateCount","childrenCount","MeltedCheckboxState","getItemSiblings","getLastChild","lastChild","getNextChild","siblings","nextChild","isDown","getBoundingClientRect","setItemCheckboxState","isPartiallyChecked","updateItemChilrendIsChecked","updateItemParentIsChecked","checkboxState","checkItem","uncheckItem","EntityBrowserComponent","itemsSource","filteredItemsSource","dragAndDropEnabled","isDragAndDropEnabled","checkedEntities","checkedItemModels","exlcludedCheckedItemModels","currentItemsSource","currentTreeElementId","onlyShowCheckedItems","checkedTreeId","filteredTreeId","treeId","selectedEntities","treeElement","browserTree","changeDetectionRef","areItemsCheckable","autoRefresh","showFooter","alwaysShowCheckedItemsActions","entityDoubleClicked","checkedEntitiesChanged","refreshed","selectedEntitiesChanged","emptyText","isRefreshing","searchText","sortedCheckedItems","entityIdsToSelect","filterChangeRefreshDebouncer","isSelectingScrollItem","isUpdatingCheckedItems","refreshSelectedItemIds","searchDebouncer","searchAsync","timeouts","onSelectedItemsChanged","canCheckItem","clearSearch","getItemId","isItemSelected","resetItems","onBrowserDragEnd","endDrag","onCheckAllItemsClicked","onItemArrowDownPressed","selecteditem","focusItem","onItemArrowLeftPressed","onItemArrowRightPressed","onItemArrowUpPressed","onItemCheckboxToggled","isKeyboardEvent","onItemClicked","onItemContextMenu","onItemDoubleClicked","onItemEnter","onItemDragDrop","onItemDragStart","startDrag","onItemDragEnter","onItemExpanderToggled","offsetX","offsetLeft","offsetTop","onItemKeyDown","selectScrollItem","updateOnlyShowCheckedItemsAsync","onSearchTextChanged","onShowMoreItemClicked","onUncheckAllItemsClicked","focusOnSearch","selectedEntityId","refreshInternalAsync","clearFilteredItems","currentSearchId","selectionParentItems","applyFilteredSelectionAsync","hasSelectedSomething","missingEntityIds","foundSelectedItems","areSelectedItemsComplete","itemsToSelect","selectedItemFound","isRefreshRequired","selectionParentItem","existingParent","missingEntityId","focus","getScrollLeft","resetLeftScroll","scrollLeft","scrollOperation","scrollIntoView","behavior","block","inline","scroll","scrollTop","scrollTree","entitySearchInput","activeElement","treeLeft","treeRight","elementLeft","getScrollTop","isScrollingDown","height","treeTop","includeSelectionInFilter","filteredCheckedEntityId","filteredExcludedCheckedEntityId","ignoreCurrentSelection","pair","entityIdToSelect","scrollBehavior","ElementRef","TranslateService","GenToastService","ChangeDetectorRef","SharedEntityBrowserRefreshTypes","FlatView","LogicalView","FlatViewNoFederatedEntities","EntityBrowserTaskComponent","ngAfterViewInit","entityBrowser","EntityBrowserTaskComponent_1","stringFormat","_match","FocusPopupWhenOpenDirective","el","popup","didOpenCallback","mutationObserver","MutationObserver","hasAttribute","setAttribute","oldFocus","querySelector","attributes","disconnect","removeEventListener","EntityComboComponent","multiSelect","isMultiSelect","genFlavor","ComboboxFlavor","entityIdChange","entityIdsChange","PopupPosition","displayText","wasBrowserRefreshed","setEntitiesInFilter","refreshEntities","toGuids","emitChangeEventIfNecessary","toggleComboOpen","resetItem","onEntitySelected","selection","setSelectedEntity","onEntityChecksChanged","entityGuid","entityCustomId","loadEntityInfos","entityFieldsToDownload","previousEntityIds","pguid","GenPopup","NG_VALUE_ACCESSOR","useExisting","MethodEmitter","receiver","emitFunction","InjectorAccessor","emitter","ImmutableStateContext","frozenState","autobindStateContext","prop","getOwnPropertyNames","getPrototypeOf","getState","createDraft","setState","val","oldState","mutatedOldState","finishDraft","patchState","actions","Receiver","immutable","_target","_key","ImmutableContext","ngxsReceiver","Selector","ImmutableSelector","ngxsSelector","SecurityCenterStateService","clearState","loadState","FiltersState","filters","__decorate","EmitterAction","State","defaults","FiltersContext","Select","SelectSnapshot","FILTER_CONTEXT","FilterCoordinatorService","advancedSettingService","reportFilterService","allDefaulted","allValid","activeFilters","defaultDebouncerTimeout","filtersToUpdate","debouncerTimeout","setDebouncerActivity","register","isPrimary","unregister","pushUpdate","debouncer","updateFilter","performChecks","overrideTimeout","extraCallback","onDebouncerTriggered","applyAllUpdatesNow","cancelAllUpdates","resetAllFiltersToDefault","clearFilter","isDefaulted","FilterBaseComponent","filterValue","updateState","onValueChanged","filterClient","filterCoordinatorService","popupPosition","valueChange","storedValue","undefinedInputKeys","checkRequiredInputs","label","onFilterToggled","isFilterOpened","firstValue","secondValue","outputs","DateFilterMode","DateFilterPeriod","Seconds","Minutes","Hours","Days","Weeks","Months","Years","FilterHostComponent","filterType","filterDescriptor","staysOpen","filterToggled","IconSize","onPopupClose","onPopupOpen","popupHTMLRef","toggleFilter","FilterDateComponent","calendarTimeFrame","CalendarTimeFrame","calendarFlavor","CalendarFlavor","showDuringTheLastPeriod","showForTheNextPeriod","periodItems","dateFilterMode","Any","defaultDuration","invalidDateRange","durationWarning","defaultTimePeriod","initializePeriodItems","onFilterChange","newMode","timeStart","timeEnd","moment","subtract","startOf","endOf","updateValue","onDurationChange","newDuration","min","onPeriodChange","newPeriod","onTimeStartChange","newDate","onTimeEndChange","onSpecificDateTimeClicked","isStart","rowCount","DuringLastPeriod","ForNextPeriod","isCoveringAllTimelineInReportsContext","isAbsolute","quanta","timeUnit","getDefaultValue","validateDateRange","focusDomElement","selector","forceFocus","tagName","className","FilterEntityComponent","isBrowserRefreshRequired","onBrowserCheckedEntitiesChanged","refreshEntityList","browser","isCoveringAllSystemInReportsContext","arr1","arr2","FilterEnumComponent","lazyLoadEvent","ListSelectionType","SelectionType","enumValues","isContentLoaded","isContentLoading","selectedEnumValues","isFooterVisible","isAllSelected","isNothingSelected","onSelectedEnumValuesChanged","lazyLoadContent","enumValue","filterContext","FilterListComponent","isSearchable","reload","searchChange","visibleItemsSource","itemSourceCatalog","onReload","onSearchChange","search","itemSource","onSelectedItemsChange","computeValue","onSelectAll","setItemCheckedStateIfVisible","onUnselectAll","listItem","FilterNumericRangeComponent","MIN_VALUE","MAX_VALUE","initFilter","onFromInputChange","updateRange","onToInputChange","isRangeValid","validateInputRespectsBounds","FilterTextBaseComponent","actualText","onFilterChanged","FilterTextComponent","TreeViewFilterOptionTypes","hasChildren","TreeView","mapITreeViewItemsToTreeViewItems","getSelectedItemsRealIds","genTreeItems","getTreeItemsIdsByUniqueIds","generateTreeItems","mapTreeViewItemsToTreeItems","treeViewItem","getTreeViewLeaves","leaves","leaf","FilterTreeViewComponent","updateRootItemsEvent","SelectionTypes","MeltedSelectionType","displayedTreeItems","displayedShowOnlySelectedTreeItems","displayedSelectedTreeItems","showOnlySelectedTreeItems","isAllChecked","isTreeViewLoading","isSearchAvailable","isSelectAllAvailable","isViewSelectedAvailable","isTreeViewLoaded","loadedTreeItems","selectedTreeItems","nonFilteredTreeItems","filteredTreeItems","filteredSelectedItems","oldShowOnlySelectedItems","applyOptions","treeView","convertToTreeViewDefinition","cloneDeep","deactivateSpinner","isOnlyShowSelectedItemsVisible","isUncheckAllHidden","isNoItemsFound","lazyLoad","loadTreeViewItems","detail","updateSelectedItems","treeItemsToFlatList","updateIsAllChecked","onShowOnlySelectedItemsChange","difference","genTreeItemArrayDifference","itemToRemoveIndex","onOnlyShowCheckedItemsClicked","addTreeItemsToSelectedTreeItems","nonFilteredSelectedItems","removeTreeItemsFromSelectedTreeItems","activateSpinner","filterTreeViewItems_CaseInsensitive","intersectionBy","filteredItems","itemsToRemove","searcTextUpper","matchingChildren","nbDisplayedItems","getNbItems","nbSelectedItems","newSelectedItems","removeTreeItemFromSelectedTreeItems","addTreeItemToSelectedTreeItems","treeItems","nbItems","treeItem","flatList","array1","array2","a1","a2","mapTreeViewItemToTreeItem","Search","SelectAll","ViewSelected","treeViewDefinitions","def","Id","Label","Children","ClickActionOnSpaceEnterDirective","appClickActionOnSpaceEnter","onKeyUp","click","HideableFiltersContainerComponent","selectionChanged","wasChecked","Orientation","_isPopupOpen","isPopupOpen","isOpen","getCheckedItemsId","revert","checked","cancel","onSelectionChange","togglePopup","PLUGIN_CONTEXT","PLUGIN_CONTENT","PluginHostComponent","pluginItem","setPluginItem","dataContext","setDataContext","hostElement","viewContainerRef","pluginClick","onClickPressed","initData","theDataContext","commandsSubscription","componentInstance","pluginHost","componentRef","createComponent","Injector","hostView","applyInitData","isCommandHandler","setCommandBindings","commandHandler","getCommandBindings","setInitData","setContent","ViewContainerRef","FiltersComponent","filterDescriptors","filterDescriptorsValue","onDescriptorChanged","pluginService","allFilterPlugins","actualFilterPlugins","hideableFilters","alwaysVisibleFilterPlugins","hideableFilterPlugins","filtersLoaded","filtersService","onHideableFiltersSelectionChanged","displayedFilters","clearFilters","areFiltersCleared","loadFilters","assign","subSection","hideable","GenericSliderComponent","sliderValue","tickLabels","valueEnumerationType","updateValuePercentage","sliderValueChanged","genIsTooltipVisible","isTooltipVisible","tooltipPosition","newVal","normalFillColor","hoverFillColor","fillColor","valuePercentage","onPeriodSliderValueChanged","idx","currentTick","onMouseEnter","onMouseLeave","LogonResult","Success","Failure","InvalidServerVersion","ConnectionLost","NewConnection","NewBackupConnection","InvalidCredentials","InsufficientPrivileges","InsufficientSecurityLevel","ConnectionAttempt","OperationTimeout","LicenseError","UnableToRetrievePrivileges","UnableToIdentifyClientApplication","NoAuthenticationAgent","TooManyAuthenticationAgents","AuthenticationAgentResponseTimeout","AuthenticationAgentImportFailure","UserAccountDisabledOrLocked","UserAndSupervisorOnDifferentDomains","AlreadyConnected","PasswordExpired","SpecifyDomain","DisallowedBySchedule","ExceededNumberOfWorkstations","CertificateRegistrationError","PasswordComplexityInsufficient","InvalidSupervisor","SupervisorPasswordIsEmpty","CantSuperviseSelf","DirectoryRedirect","LogonAborted","MissingRequestUserChangePassordEvent","LogonNegotiate","DirectoryCertificateNotTrusted","SessionExpired","InteractiveLogonRequired","InvalidServerEndpoint","BruteForceThrottling","DeniedByFirewall","ExternalPasswordExpired","LogonInfo","BasicLogonInfo","TokenLogonInfo","buildTokenAuthorizationHeader","ModuleDescriptor","ModuleService","availableModules","getModulesGlobalPrivileges","module","getModuleDescriptor","inclusions","AuthenticationError","AuthService","defaultTimeout","loggedIn$","loggedIn","router","scProvider","moduleService","loginStatus","isLoggingOn","isExpired","isLoggingIn","userDirectory","isLoggingOut","loginRedirectUrl","initialLoginLogic","logInWithTokenAsync","pollSessionAlive","bypassTabDuplicateSessionStorage","getConnectionHeaders","logInWithCredentialsAsync","userLogin","loginInfo","logInAsync","passwordConstraint","getLogonResultErrorString","navigateByUrl","logOutAsync","isSigningIn","bool","isAuthTokenSet","isLoggedIn","lockName","TrackedGenModalBaseComponent","GenMeltedModal","result$","getModalInstance","genModalComponent","hiddenOnInit","hide","emitResult","GenMeltedModalComponent","TrackedGenModalComponent","TypedConnectionAwareModalComponent","authService","hideModal","ConnectionAwareModalComponent","ImageViewerModalComponent","image","ImageFit","ImageFlavor","SearchResultGroup","resultsCount","header","SearchService","searchClient","searchStartSubject","searchResults","takeUntil","taskPlugins","taskResults","sr","SharedCommands","AddBookmark","ClearTiles","ClearTile","DisplayEntities","ExpandTile","ExportVideo","FastForward","MaximizeTileFullscreen","PauseVideo","PlayVideo","PtzStartPanTilt","PtzStopPanTilt","Rewind","SaveSnapshot","ShowVideoDiagnostics","ShowOptions","SelectNextTile","SelectPreviousTile","ShowMessage","SlowMotion","StartStopRecording","ToggleListen","ShareEntity","SendMessage","CloseNavBar","ToggleAddToWatchlist","ToggleMaximizeVideo","MinimizeVideo","AutoFocusDirective","host","DebounceDirective","NgModel","debouncedViewToModelUpdate","viewToModelUpdate","DefaultDebounceTime","appDebounce","debouncetime","NgControl","KeydownStopPropagationDirective","onKeydown","hostBindings","MainSearchComponent","searchService","searchResultsChange","isSearchingChange","focusEvent","isMainSearchReady","clearText","mainTextInput","mainTextInputElement","closeSidePane","onFocus","onSearchTextChange","MenuItemsComponent","Separator","getKeysIn","dataSource","MultiPluginHostComponent","maxWidth","maxHeigth","captureContextMenu","mainClass","pluginsHostClassName","pluginHostClassName","supportStackedPlugins","contextMenu","onContextMenuRequested","showCommands","clickEvent","availableCommands","$event","NavigationPluginHostComponent","contextDataPlugins","hideNavigationArrows","displayedPluginsChanged","leftNavigationTitle","rightNavigationTitle","selectedIndex","displayedPluginsSubject$","displayedPlugins$","setDisplayedPlugin","updateNavigationTitle","onNavigatePlugin","canNavigate","onContextMenu","shown","multiPlugin","parentPlugin","childPlugins","leftIndex","rightIndex","leftData","rightData","DisplayEntity","forceDisplay","annotationMessage","enableAudio","playbackTime","SystemConfigurationManager","displayEntityAsync","addIncidentAsync","setIncidentAsync","deleteIncidentAsync","throwCustomEventAsync","entitySourceId","FocusModalWhenOpenDirective","genModal","genDialog","specificFocusElement","childList","SelectedEntity","ModalEntitiesSelectorComponent","allowMultiSelectSubject$","modalService","defaultActionText","entitiesSelected","entityIdsSelected","defaultTitle","defaultAllowMultiSelect","allowMultiSelect$","distinctUntilChanged","updateDefaultTitle","onAction","MeltedModalAction","onEntityDoubleClicked","onSelectedEntitiesChanged","ShareEntityModalComponent","selectedListItems","isShareButtonEnabled","isCurrentlySharing","userSelectionBrowserFilter","addUserAction","userEntitySelector","deleteUserAction","selectedUser","excludedEntity","selectedUserEntities","validate","onShareClick","userEntity","systemConfigurationManager","selectedUsersActions","recipientId","addRecipient","onSelectedEntityChanged","onEntityIdsSelected","addRecipients","onSelectedUserChange","onMessageChange","newMessage","recipientIds","users","createRecipientsEntityQuery","addRecipientEntities","recipient","OptionTypes","LanguageAndTime","Appearance","GenAlerts","OptionsConfirmRefreshAlert","UserSettingsState","refreshOnApply","Settings","holder","UserSettingsService","onCancel$","genAlertService","optionsClient","onSettingsChangedSubject","optionsConfirmRefreshAlertId","tempSettings","settings$","onSettingsChanged$","setSettings","setRefreshOnApply","confirmApplySubject","confirmRefreshAlert","getAlerts","genAlertAction","onApplyConfirmed","loadSettings","settingsItems","option","setNewSettings","resetState","settingSectionId","settingId","sectionId","v","k","lookupTemp","getSectionSettings","getOptionAvailability","getIsRefreshRequired","clearstate","setting","newSettings","getNewSettings","reloadCurrentRoute","currentUrl","skipLocationChange","updatedSettings","Router","GenAlertService","StringEntry","LanguageService","DefaultLanguage","supportedLocales","userSettingsService","genTranslateService","languageClient","titleService","ready","languageChanged","downloaded","languageBrowserTag","selectedlanguageTag","currentLanguage","LanguageService_1","currentTitle","useLanguage","fetchStrings","selectedLanguage","effectiveLanguage","setLanguage","languages","lang","setTranslation","retrieveCopyrightsAsync","copyrightsInfo","updateApplicationTitle","setTitle","baseTitle","strings","fullTitle","raiseEvent","GenTranslateService","Title","MissingTranslationHelper","handle","interpolateParams","defaultString","Default","TranslatePipeMock","TimeService","timezonesClient","displayTimezone","is24HourFormat","isSmartTime","timezonesMap","locale","navigator","withLatestFrom","applySettings","ensureTimezonesAsync","timezone$","shareReplay","convertToLocal","ianaTimezone","retrieveTimezoneIANA","tz","convertToUTC","utc","convertToTimeZone","formatDuration","milliseconds","useAbbrev","autoDetermineUnits","years","days","hours","minutes","seconds","totalYears","floor","MILLIS_PER_DAY","abbr","totalDays","MILLIS_PER_HOUR","totalHours","MILLIS_PER_MINUTE","totalMinutes","MILLIS_PER_SECOND","totalSeconds","formatRelative","currentLang","fromNow","formatTime","convertTimeZone","displayTimeZone","deviceTimezone","useSmartTimestamp","deviceTimezoneValue","formatValue","timezoneIana","timezoneId","isToday","DateFormat","year","timezoneAbbreviations","timezoneAbbreviation","isDST","getTimezonesAsync","timezones","getBrowserTimezone","Intl","DateTimeFormat","resolvedOptions","getLocalTimezone","browserTimezone","systemTimezone","retrieveTimezoneAsync","localeData","longDateFormat","setMomentGlobalTimezone","dateTime","nowDate","valueDate","tzInfo","AnalyticsClient","getInitializationData","processGetInitializationData","AnalyticsInitializationData","postSendFeedback","processPostSendFeedback","postAnalyticsTrackings","processPostAnalyticsTrackings","collectionPolicy","licenseType","VersionService","versionApiController","versionInfo","retrieveVersionAsync","TelemetryInitializers","regexp","RegExp","hostnameRegex","addPluginNameToEnvelope","envelope","baseType","ext","trace","exec","groups","pluginName","anonymizeHostNames","baseData","stringValue","addGeneralInfoToEnvelope","CollectionPolicy","AnalyticsService","versionService","analyticsApiController","telemetryInitializers","appInsights","Off","generalInfo","setupAppInsightsAsync","ingestionEndpoint","retrieveInitializationDataAsync","ApplicationInsights","enableAutoRouteTracking","loadAppInsights","addTelemetryInitializer","Anonymous","clearAuthenticatedUserContext","setAuthenticatedUserContext","clearAppInsightsData","logPageView","areAnalyticsEnabled","trackPageView","logEvent","trackEvent","customProperties","logMetric","average","trackMetric","logException","severityLevel","trackException","logTrace","trackTrace","stringToCollectionPolicy","On","objParameters","ContentGroup","objMainContent","ContentSource","sourceId","ContentFieldSource","objFields","ContentMultiSource","sourceIds","ContentController","getContentFromFieldsAsync","ContentProviderService","contentsCache","cacheDuration","contentController","adapted","adaptGroup","mutliSource","fieldSource","getContentFromString","contentGroupString","ControllerContentGroup","mainContentAdapted","adapt","subContentToAdapt","SideContextDataState","currentContent","pop","SideContextDataService","displayContext","Sidepane","setMainContent","pushContent","popContent","setLoadingMainContent","clearMainContent","contentCount","SharedContentFields","DomainEventType","SourceEntityGuid","SourceEntityName","Timestamp","Timezone","EventId","ContextId","NavigationService","sideContextService","navigationContextId","routeChanging$","NavigationStart","getCurrentTask","parseUrl","root","primary","segments","getCurrentTaskPath","taskIdPos","navigate","keepContext","queryParams","tokens","toLowerCaseGuids","routerParams","indexQuery","indexPair","queryKey","queryValue","modalTokens","modalPath","outlets","modal","commandTokens","eventId","eventField","ContentOverlayService","analyticsService","navigationService","contentOverlaySubject","contentOverlay$","clearOverlay","setOverlay","overlay","DomPortal","hasOverlay","PluginsStack","verticalPluginsSubject","verticalPlugins","verticalPlugins$","empty","fill","leftSiblingGroup","p","navigationPlugins","newNavigationPlugin","supportsCarousel","parentVerticals","parentExposure","childExposure","potentialParent","SidePaneHeaderComponent","headerInfo","NgLetDirective","viewContainer","templateRef","ngLet","$implicit","hasView","createEmbeddedView","SidePaneComponent","WidthPx","timeService","contentOverlayService","pluginsStack","defaultHeaderInfo","titleColor","titleIcon","titleCustomIconState","hasContent","hasCustomHeader","contentCountSubject","contentCount$","contextDataService","currentContent$","currentContentChanged","mainContentTimestamp","onNavigateBack","sidepane","getElementById","isLoadingContent","getTimestamp","getNoAlphaColor","getHeaderInfo","setCustomHeader","getSortedPlugins","setAdditionalStyling","titleCustomIconId","tryGuid","customHeaderId","sidePaneHeaderPluginItem","isContentEmpty","width","SidePaneComponent_1","classList","RenderingHelper","onRefresh","initialized","invalidated","setInterval","onTick","TimeSpan","Zero","InMs","m_milliseconds","between","trunc","toFixed","isGreaterThan","isLesserThan","divideBy","divider","Utils","Indentation","timeSpan","date","addMilliseconds","pad","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","getHours","getMinutes","getSeconds","getMilliseconds","getFullYear","getMonth","getDate","n","MediaSource","isTypeSupported","_1K","_1M","_1G","byteCount","indentation","repeat","assertUnreachable","_x","Logger","m_showDebug","m_showIntense","m_showInfo","m_showTimestamps","timestampsEnabled","m_id","m_debugTracer","DebugTracer","m_infoTracer","InfoTracer","m_warnTracer","WarnTracer","m_errorTracer","ErrorTracer","intense","timestamps","subLogger","Tracer","m_name","log","LiteEvent","m_isDisposed","handlers","boundTrigger","throwIfDisposed","h","previousCount","expose","Token","m_token","ExpirationDate","m_expirationDate","tokenParts","jsonTokenString","base64String","atob","expireTime","formatDate","PromiseCompletionSource","m_promise","m_resolver","PromiseCompletionSourceVoid","Cancellation","Reason","m_reason","IsCancelled","m_isCancelled","withCancellation","cancellablePromise","race","timeoutId","delayResult","TokenRenewer","SmallestRenewalDelay","fromSeconds","isValidLongEnough","waitRenewal","RenewalPromise","m_logger","m_renewalPromise","tokenRetriever","m_tokenRetriever","m_camera","m_renewCancel","doRenewal","expirationDelay","fromNowUntil","renewalDelay","sleep","newToken","retrieveToken","cancellableDelay","TokenRetriever","tokenRetrieverFct","m_tokenRetrieverFct","requestTime","acquireRenewer","initialToken","PlaySpeed","_1x","m_value","IsReverse","playbackRate","UnregisteredHub","streamId","eventHubProvider","timeBeforeUnregister","m_streamId","m_eventHubProvider","m_timeBeforeUnregister","unregisterAfterTimeout","receiveSegment","__","receiveJpeg","receivePlayerState","receiveStreamingConnectionStatus","receiveBufferingProgress","receiveErrorDetails","receiveTimelineContent","receivePlaySpeed","receiveAudioAvailable","delayFromTimeSpan","unregisterStream","EventHubDispatcher","m_registered","registerStream","dataHub","eventHub","unregisteredHub","findDataHub","findEventHub","progress","errorDetails","receivePlaySpeedChange","playSpeed","isAudioAvailable","hubTuple","hub","AutoReconnectSocket","ReconnectionAttemptDelay","ConnectionReestablished","m_connectionReestablishedEvent","m_connectionLostEvent","webSocketBuilder","webSocket","m_isConnected","m_webSocketBuilder","m_webSocket","establishWebSocket","unbind","closedPromise","onSocketMessage","messageEvent","onSocketClose","closeEvent","reconnect","onSocketError","connectLoop","debugStatus","indent","indentNewLine","Deserializer","Offset","m_offset","m_arrayBuffer","m_dataView","DataView","m_hasNativeTextDecoder","getUint8","getUint32","uint32","getInt32","int32","getString","stringLength","dataView","subArray","Serializer","ArrayBuffer","offset","writeUint8","byte","setUint8","writeUint32","setUint32","writeString","bytes","TextEncoder","encode","serializer","second","totalMessage","byteLength","totalMessageFirst","totalMessageSecond","WebSocketMessageHeader","versionSize","channelSize","channel","m_channel","messageType","toInteger","m_messageType","serialize","uint8Array","float","CreateStreamRequest","m_header","expectResponse","m_body","supportedFormats","clientVersion","CreateStreamRequestBody","combineDataView","SupportedFormats","getAvailableFormats","CameraId","AccessToken","ClientVersion","bodyJson","serializeString","StreamUsage","DeleteStreamRequest","DeleteStreamRequestBody","PtzSubCommand","PtzFocusDistance","PtzIrisOperation","PtzRequest","subCommandSeparator","m_requestBody","m_type","subCommand","requestBody","PanTiltBody","pan","tilt","Pan","Tilt","ZoomBody","zoom","Zoom","GoToBody","IsAbsolute","GoToPresetBody","preset","Preset","GoHomeBody","RunPatternBody","Pattern","LockBody","UnlockBody","FocusBody","distance","Distance","Speed","IrisBody","Operation","UpdateStreamRequest","UpdateStreamRequestBody","PlayerMode","playerMode","SeekTime","seekTime","Pause","pause","AudioEnabled","audioEnabled","TimeLine","timeLine","Start","End","ErrorResponse","VideoWatermarkConfig","Disabled","opacityOn255","position","cameraName","workstation","overlayText","Opacity","Size","Position","Rotation","Username","CameraName","IncludeUsername","IncludeWorkstation","IncludeCameraName","serialized","videoWatermarkConfig","TextOverlayPosition","Resolution","IsNone","Width","Height","isGreaterOrEqualThan","compared","fitInto","scale","scaleToFitInto","scaleW","scaleH","DefaultStreamUsage","lowToLiveThreshold","liveToHighThreshold","Automatic","LowToLiveThreshold","LiveToHighThreshold","getStreamUsage","HighResolution","Live","LowResolution","deserializeResolution","Coords","Origin","X","m_x","Y","m_y","PolarVector","Radius","m_radius","Angle","m_angle","radius","angle","rotate","toCartesian","Vec2","cos","InRadian","sin","Degree","InDegree","toRadian","Radian","PI","toDegree","radian","opposite","atan2","toPolar","toClipSpace","screenSpace","ClipSpaceVec2","fromVec2","plus","minus","multiply","divide","plusC","minusC","multiplyC","divideC","toNormalized","NormalizedVec2","coords","sqrt","pow","normalizedTranslation","normalizedScaled","vec2","normalized","fromNormalized","cliped","isInClipSpace","toScreenSpace","toPixel","rotate2","roundEspilonToZero","abs","clipLength","maxLength","polar","scaled","fromResolution","NormalizedCoords","toClipSpaceVec2","CameraPositionWall","getRotation","xy","CameraPositionCeiling","requiredRotation","CameraPositionFloor","Vec3","Z","m_z","z","dropZ","PolarBeta","PolarDelta","PolarVec3","beta","delta","m_beta","m_delta","Orthographic","applyCode","reverse","asin","reverseCode","variableName","adjustXY","ProjectionBase","unadjustXY","Stereographic","tan","atan","Equisolid","sqrtOf2","toFloat","Equidistant","twoOnPi","requestedAngle","polarPrimeXYZdelta","polarPrimeXYZbeta","isInteger","Projection","CameraPosition","DewarperSourceImageParameters","Wall","m_projection","m_cameraPosition","FovInDegrees","m_fovInDegrees","RadiusRatio","m_radiusRatio","CircleCenter","m_circleCenter","cameraPosition","fovInDegree","radiusRatio","circleCenter","Fov","InternalDewarperSourceImageParameters","FovInRadians","dewarperSourceImageParameters","CreateStreamResponse","CreateStreamResponseBody","videoWatermarkingConfig","dewarperConfig","transcodingAllowance","serverVersion","bodyContent","TranscodingAllowance","ServerVersion","SuccessResponse","UpdateStreamResponse","WebSocketMessageTypeV2","MessageParser","MessageParsing","parseMsg","SizeOfInt","m_deserializer","readVersion","channelId","readChannel","readMessageType","Segment","Jpeg","streamEvent","readEvent","Int8Array","DataOffset","WebSocketPayloadV2","Event","Buffering","StreamingStatus","PlayerState","TimelineUpdate","updateStreamResponseHeader","updateStreamResponseBody","readUpdateStreamResponseBody","successHeader","successBody","readSuccessResponseBody","errorHeader","errorBody","readErrorResponseBody","responseHeader","readCreateStreamResponseBody","deserialize","audioAvailable","AudioAvailable","errorMessage","ErrorMessage","msg","jsonString","InFlightQueries","m_map","inFlightQuery","fail","failAll","_map","InFlightQuery","failure","m_creation","m_request","spanBetweenDates","WebSocketBuilder","mediaGatewayUrl","m_webSocketEndpoint","URL","pathname","isSecure","protocol","binaryType","connectionPromise","SegmentInfo","isInit","isAudio","frameTime","sequenceId","baseDecodeTime","mediaTime","isFrameHidden","isKeyFrame","generation","IsInit","IsAudio","TotalSeconds","FrameTime","SequenceId","BaseDecodeTime","MediaTime","IsFrameHidden","IsKeyFrame","Generation","TotalMilliseconds","FrameTimeAsDate","m_frameTimeAsDate","IsVideo","ErrorDetails","errorCode","ErrorCode","streamingConnectionStatus","DateTimeSpan","StreamingConnectionStatus","TimelineEventKind","WebSocketTransportBuilder","m_url","eventDispatcher","autoReconnect","WebSocketTransportV2","marmotLogger","socket","messageParser","m_inFlightQueries","onConnectionLost","onConnectionReestablished","m_dispatcher","m_socket","onMessage","m_messageParser","stop","unbindEvents","win","MessageType","updateStreamResponse","receiveEvent","successResponse","errorResponse","createStreamResponse","ChannelId","Payload","streamingStatus","SessionState","m_playerMode","isPaused","m_paused","NotPaused","m_playSpeed","isAudioEnabled","m_audioEnabled","timelineRange","m_timelineRange","isLivePaused","LivePaused","isPtzMode","m_isPtzMode","m_streamUsage","m_lastRenderedFrameTime","m_lastSeekTime","getResumeLiveSeekTime","m_timeOfPlayLive","getRestorePlaybackSeekTime","getLiveToReverseSeekTime","updateRenderedFrameTime","live","Paused","validateNewState","desiredState","Span","DesiredStateStructure","DesiredStateBuilder","temp","ptzMode","DesiredState","Empty","m_pause","m_seekTime","isNoRequest","withPlayLive","withSeek","withPause","withResume","withPlaySpeed","withAudioEnabled","withPtzMode","isPtzModeEnabled","withStreamUsage","withTimelineRange","clearTimelineRange","getDifferences","serverState","paused","StateDifferences","isResuming","noDifference","VideoFormat","SupportedVideoFormats","m_supportedVideoFormats","m_availableFormats","supportsMse","Mjpeg","H264","setPtzMode","UpdateStreamRequestBuilder","m_channelId","m_supportedFormats","m_transcodingAllowance","updateStreamRequest","differences","toTimeLine","videoFormatsRequested","determineRequestedVideoFormats","seekTimeRequested","getSeekTime","Never","buildRestoreState","previousServerState","supportedVideoFormats","StatefulSession","DisconnectedSentinel","rejecter","rejectedPromise","sessionStateView","m_serverState","sessionParameters","m_session","SessionError","m_sessionErrorEvent","sessionBuilder","session","streamUsageSelectorBuilder","m_renewTokenRequest","replaceStreamUsageSelector","m_streamUsageSelector","restoreUpdateStreamRequest","m_updateStreamRequestBuilder","m_queryInFlightItself","m_queryInFlight","sendCommand","applyRequests","onRequiresStreamUsageUpdate","applyNewDesiredState","m_desiredState","m_sessionBuilder","m_streamUsageSelectorBuilder","m_defaultStreamUsage","tokenRenewalLoop","wsSessionV2","tokenRenewer","setLastFrameRendered","lastFrameRendered","playLive","seek","setPlaySpeed","setAudioEnabled","setTimelineRange","ptzControlSession","restartSession","sessionCreationParameters","sessionRestarted","FakeWebSocketResponse","newDesiredState","fromSendCompletion","processPendingRenewTokenRequest","renewTokenRequest","buildTokenUpdate","SessionCreationParameters","SessionParameters","m_sessionCreationParameters","withSupportedVideoFormats","newSupportedVideoFormat","withServerSideSessionParameters","dewarpConfig","WsSessionV2Builder","transport","m_transport","createStreamRequest","WsSessionV2","m_sessionParameters","deleteStreamCommand","webSocketTransportV2","buildMediaGatewayService","transportBuilder","MediaGatewayService","buildMediaGatewayServiceWithTransport","_eventDispatcher","_tokenRetriever","_transport","eventHubDispatcher","startStream","getVersion","gwpVersion","TileSizeObserverBuilder","htmlDivElement","m_htmlDivElement","TileSizeObserver","tileResolution","m_observedDivElement","clientWidth","tileResizeEvent","m_resizeEvent","onResize","newResolution","clientHeight","supportsResizeObserver","m_divElementResizeObserver","ResizeObserver","unobserve","HtmlElements","m_areEventListenersRegistered","m_lastMouseDownTarget","DivContainer","m_divContainer","CanvasElement","m_canvasElement","DebugOverlayCanvas","m_debugOverlayCanvas","VideoElement","m_videoElement","AudioElement","m_audioElement","DewarpingCanvas","m_dewarpingCanvas","DewarpingVwoCanvas","m_dewarpingVwoCanvas","DewarpingPreviewDiv","m_dewarpingPreviewDivContainer","DewarpingPreviewCanvas","m_dewarpingPreviewCanvas","DewarpedAreaCanvas","m_dewarpedAreaCanvas","DigitalZoomPreviewCanvas","m_digitalZoomPreviewCanvas","IsFocusOnVideo","getTileSizeObserverBuilder","divContainer","GwpPlayerClassName","createElement","appendChild","autoplay","muted","disablePictureInPicture","m_digitalZoomPreviewDivContainer","setMarmotStyle","setDewarperStyles","setDigitalZoomStyle","disableVideoRightClick","registerEventListeners","removeChild","canvas","debugCanvas","video","audio","display","flexDirection","webkitUserSelect","userSelect","overflow","objectFit","setCanvasStyle","divElement","pointerEvents","objectPosition","margin","dewarpingPreviewDivContainer","dewarping","dewarpingVwo","dewarpingPreview","dewarpedArea","borderColor","ErrorStatusEvent","isFatal","UpdateSessionError","StreamingConnectionStatusChangeEvent","streamStatus","PlayerStateChangeEvent","playerState","PlaySpeedChangeEvent","AudioStateChangeEvent","AudioAvailabilityChangeEvent","PlayerModeChangeEvent","TimelineContentEvent","coverageStart","coverageEnd","TimelineEvent","kind","DebugOverlay","m_debounceCtrlShiftA","m_sessionStateView","playerId","htmlElements","digitalZoomControl","eventManager","m_minWidthOverlay","m_playerState","Starting","m_streamingConnectionStatus","Initializing","onPlayerStateChanged","onStreamingConnectionStatusChanged","onError","m_errorDetails","render","m_htmlElements","scrollWidth","scrollHeight","getContext","clearRect","interestingData","collectInterestingData","font","fontHeight","fillStyle","minWidthLeft","minWidthRight","minHeight","numberOfProps","propNameSize","measureText","propValueSize","minWidth","roundRect","middlex","propNameWidth","fillText","strokeStyle","lineWidth","beginPath","moveTo","lineTo","closePath","stroke","m_playerId","m_digitalZoomControl","m_eventManager","frameRendered","playerStateChanged","streamStatusChanged","errorStateRaised","m_keyDownBinding","onKeyDown","toggleShown","codec","videoWidth","videoHeight","lastJpegResolution","networkLatency","globalLatency","lastFrameReceived","round","currentTime","frameRateToString","audioBitRate","keyFrameRateToString","quadraticCurveTo","BitRateComputer","m_ringBuffer","MaxSamplesCount","m_lastIdx","SamplesTimeDelta","MASK_SAMPLE_IDX","TotalTimeSpanInBuffer","getBitRate","compute","addBytes","num","resetBuffer","sum","BitRate","BitsPerByte","BitsPerSecond","m_bitCount","m_timeSpanInSeconds","timeSpanInMs","bitsPerSec","RingBuffer","TotalItemAdded","m_totalItemAdded","itemCount","m_idx","firstAndLast","firstIndex","lastIndex","getAll","FrameRateComputer","m_frameTimes","SampleCount","m_lastKeyFrame","m_theOneBeforeThat","m_currentPFrameCount","m_lastPFrameCount","addFrame","frame","getFrameRate","FrameRate","last","elapsedSeconds","frameCount","m_frameRate","timeBetween2Frames","pFrameCount","keyFrameIntervalInSeconds","m_pFrameCount","m_keyFrameIntervalInSeconds","StatisticProvider","m_bitRateProvider","m_audioBitRateProvider","m_frameRateProvider","bitRateProvider","audioBitRateProvider","frameRateProvider","getAudioBitRate","TimeResolver","currentMediaTime","currentBaseTime","m_mediaBaseTime","m_absoluteBaseTime","formatDateUTC","updateResolver","baseTime","ResolvedFrameTime","addSeconds","GenerationTimeResolver","mediaBaseTime","absoluteBaseTime","m_generation","m_timeResolver","canResolve","m_mediaTime","m_frameTime","EventManager","FrameRenderedEventFrequency","onFrameRendered","onStreamStatusChange","onPlayerStateChange","playSpeedChanged","onPlaySpeedChange","audioStateChanged","onAudioStateChange","audioAvailabilityChanged","onAudioAvailabilityChange","timelineContentUpdated","onTimelineContentUpdated","playerModeChanged","onPlayerModeChange","bufferingProgress","onBufferingProgress","m_videoCodec","m_lastJpegResolution","m_networkLatency","m_globalLatency","m_lastFrameReceived","m_lastFrameRendered","m_statisticProvider","m_audioAvailable","statisticProvider","frameRenderedEventFrequency","Codec","videoSpeed","receivePlayerMode","receiveAudioState","timelineContent","Coverage","EventTime","Kind","Duration","Details","m_lastRaisedFrameRendered","m_intervalHandle","onTimeToRaiseFrameRendered","clearInterval","setLastFrameReceived","receivedFrameTime","videoCodec","renderedFrameTime","setLastJpegFrameRendered","frameTimeMs","MseRenderer","timeUpdated","m_timeUpdateEvent","errorOccurred","m_errorOccurred","FrameRendered","streamResolution","initialization","videoElement","onTimeUpdated","onErrorOccurred","play","updateVideoWatermarkingConfig","updateZoomConfig","zoomConfig","setPlayerActive","isPlayerActive","getSnapshot","fromZoomedImage","PositionFinder","blockWidth","blockHeight","m_position","m_blockWidth","m_blockHeight","findPosition","TopLeft","Top","TopRight","CenterLeft","Center","CenterRight","BottomLeft","Bottom","BottomRight","VideoWatermarkingOverlay","SpaceBetweenLines","watermarkConfiguration","streamWidth","streamHeight","m_streamWidth","m_streamHeight","m_videoWatermarkingConfig","createVideoWatermarkingOverlay","overlayBlock","overlayContext","Mosaic","drawMosaic","drawImage","createOverlayBlock","fontSize","setOverlaySize","overlayBlockContext","yPosition","canvasContext","xPosition","isNextRowOffset","rotateOverlayBlock","PiOn180","newOverlayBlock","newOverlayBlockContext","oppositeRadian","radianForRotation","beforeRotationHeight","beforeRotationWidth","translate","calculateOverlayBlockSize","textSize","calculateFontSize","VideoWatermarkingRenderer","m_watermarkOverlay","drawVideoWatermarkingOverlay","offsetY","previousGlobalAlpha","globalAlpha","updateVideoWatermarkingOverlaySize","updateVideoWatermarkingOverlaySizeWithSpecificDimensions","fitWidth","fitHeight","overlayWidth","overlayHeight","videoWatermarkingOverlay","overlayBlockSize","newOverlayBlockElements","FitResolution","Source","m_source","Destination","m_destination","Scaled","m_scaled","Scale","m_scale","OffsetH","m_offsetH","OffsetV","m_offsetV","PixelOffset","OffsetRatio","scaledWidth","scaledHeight","Guard","parameterName","TopLeftCoords","clipX","clipY","NormalizedTopLeftCoords","isInRangeInclusive","toPixelTopLeftCoords","destRes","ZoomConfiguration","NoZoom","m_zoom","IsZoomed","m_topLeftCoords","topLeftCoords","toCanvasParameters","fitResolution","pixelTopLeftCoords","newOffsetX","newOffsetY","JpegRenderer","m_lastResolution","Image","m_image","m_frameRenderedPromise","m_renderingCanvas","canvasElement","renderingCanvas","m_zoomConfiguration","m_isStarted","m_isPlayerActive","m_videoWatermarkingRenderer","m_lastTimeUpdatedRaised","m_isCleared","m_frameDropStatistic","FrameDropStatistic","src","revokeObjectURL","createRenderer","frameDropped","oldSrc","createObjectURL","snapshotCanvas","getImageData","completeRender","raiseTimeUpdated","img","draw","triggerFrameRendered","toResolve","frameDroppedFrequency","FrameDroppedInLastMinute","frameDroppedMessage","m_frameDropped","frequencyOverLastMinuteOrLess","allEvents","oneMinuteAgo","subtractMinutes","eventInLastMinute","MseSourceBuffer","SecondsToKeepInCache","isUpdating","m_sourceBuffer","updating","sourceBuffer","parentMediaSource","m_parentMediaSource","readyState","MediaSourceReadyState","closed","removeSourceBuffer","abortAsync","buffered","SourceBufferExtensions","updateEndPromise","segmentInfo","wasUpdating","appendBuffer","_options","updatingEnd","updatingAwaitCount","emptyCache","getCacheDurationInSec","abortEventAwaiter","abortEventPromise","bufferedSeconds","eventPromise","SourceBufferEvent","updateEnd","eventName","once","Config","DebugSwitch","breakMse","mseCleanupFreqSeconds","DefaultMseCleanupFreqSeconds","IsMseBroken","MseCleanupFreqSeconds","switchName","MseMediaSource","VideoSourceBufferType","AudioSourceBufferType","VideoWebMSourceBufferType","m_mseSourceBuffer","m_mediaSourceInitialization","m_mediaSource","mediaSource","mediaType","bufferQueue","m_decoderOutputFps","m_nextCleanupTime","m_resetInProgress","m_isPaused","onUpdateEnded","m_queue","random","dequeue","onSourceClosed","MediaType","m_mediaSpecification","video_webm","MediaSourceEvent","sourceClose","clearLiveSeekableRange","enqueue","MseMediaSourceExtensions","openEventPromise","Infinity","addSourceBuffer","awaitEvent","SequenceInfo","ENDTIME_TO_FRAMETIME_THRESHOLD","segmentId","startResolvedTime","endResolvedTime","SegmentId","StartResolvedTime","m_endResolvedTime","EndResolvedTime","resolvedEndTime","DurationMs","segmentEndTime","isInSequence","BufferQueue","queueLength","dequeuedItem","frequency","m_callback","m_frequency","m_timerId","MseWatermarkOverlay","watermarkRenderer","m_watermarkRenderer","vwoRenderingCanvasElement","drawWatermarkOverlay","m_vwoRenderingCanvasElement","m_watermarkNeedsRefresh","m_htmlVideoElement","drawnWithVideoDimensions","offsetW","offsetH","m_timer","clearCanvas","toggleOverlay","MseHtmlVideoElement","RenderingDelayToleranceMilliseconds","m_errorEvent","m_mseMediaSource","m_antiJitter","m_renderInCanvas","onTimeUpdate","HtmlVideoElementReadyState","updateCanvas","requestAnimationFrame","HtmlVideoElementEvents","timeupdate","timeFor2Frames","minimumMediaTime","maximumSeekMediaTime","getMaximumSeekMediaTime","seekMediaTime","applyZoom","maximumSeekTime","ended","networkState","MseHtmlAudioElement","AudioSyncToleranceMilliseconds","AudioSyncMaxDifferenceMilliseconds","isMuted","m_isMuted","audioElement","m_htmlAudioElement","m_isPlayable","evaluatePlayability","mute","unmute","m_currentSequence","sync","syncDetails","calculateSyncParameters","ShouldPlay","sequenceInfo","currentPlaySpeed","targetRange","targetMediaTime","desyncMs","SynchronizationParameters","playable","shouldPlay","ThrottledCommand","PtzControl","PtzThrottlingService","m_ptzThrottlingService","ptzRequestBuilder","ptzThrottlingService","m_ptzRequestBuilder","startPanTilt","panSpeed","tiltSpeed","throttledCommand","buildStartPanTilt","stopPanTilt","buildStopPanTilt","startZoom","zoomSpeed","buildStartZoom","stopZoom","buildStopZoom","goToPreset","buildGoToPreset","goHome","buildGoHome","runPattern","buildRunPattern","lock","buildLock","unlock","buildUnlock","startFocus","buildStartFocus","stopFocus","buildStopFocus","startIris","buildStartIris","stopIris","buildStopIris","bypass","bypassQueue","PtzRequestBuilder","PanTilt","GoToPreset","RunPattern","GoHome","Lock","Unlock","buildGoToPosition","GoTo","Focus","Iris","StreamUsageSelectorBuilder","tileSizeProviderBuilder","m_tileSizeProviderBuilder","StreamUsageSelector","m_requiresStreamUsageUpdateEvent","determineStreamUsage","tileSizeProvider","onTileResized","m_lastStreamUsageRaised","m_tileSizeProvider","Uniformf","gl","program","uniformLocation","m_gl","m_program","m_uniformLocation","getUniform","Uniform1f","uniform1f","Uniform2f","getX","getY","uniform2f","setFromResolution","setFromVec2","uniformValue","Uniform3f","uniform3f","Uniform4f","w","uniform4f","Attribute","m_attributeLocation","getAttributeLocation","Buffer","WebGLBuffer","m_buffer","createWebGLBuffer","deleteBuffer","bindBuffer","ARRAY_BUFFER","BufferWithAttribute","attributeName","m_attribute","enableVertexAttribArray","GLUtils","x2","y2","Float32Array","Texture","CoordinatesBuffer","m_textureCoordinatesBuffer","bufferData","getRectangle12Points","STATIC_DRAW","texture","createTexture","m_texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","interpolation","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","deleteTexture","updateTexture","texImage2D","RGBA","UNSIGNED_BYTE","CompiledProgram","Program","VertexShaderSource","m_vertexShader","FragmentShaderSource","m_fragmentShader","vertexShader","fragmentShader","deleteProgram","ProgramLinker","createProgram","attachShader","Shader","linkProgram","getLinkStatus","useProgram","getProgramParameter","LINK_STATUS","m_compiledProgram","attribute","getAttribLocation","createBuffer","buildUniform1f","uniformName","getUniformLocation","buildUniform2f","buildUniform3f","buildUniform4f","ShaderBuilder","m_version300es","webGLRenderingContext","buildVertexShader","buildShader","VERTEX_SHADER","buildFragmentShader","FRAGMENT_SHADER","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","shaderInfoLog","getShaderInfoLog","deleteShader","VertexShader","m_shader","vertexShaderCode","shaderBuilder","DewarperVertexShader","VertexShaderCode","glContext","PositionBuffer","vertexAttribPointer","FLOAT","FragmentShader","fragmentShaderCode","floatPrecision","buildFloatPrecision","FloatPrecision","DewarperFragmentShader","dewarperParameters","DewarperFragmentShaderCodeBuilder","m_dewarperParameters","Variables","getToPolar","main","DewarpedPointSourceFinder","m_R","dewarpingParameters","dewarpingPlane","m_dewarpingParameters","m_dewarpingPlane","dewarpedPixel","dewarpedCliped","mapInput","clipSpaceVec2","pXYZ","to3D","polarBeta","polarDelta","r_p","DewarpingPlane","u","pPrime","m_pPrimeXYZ","uHat","m_uHat","vHat","m_vHat","Equation","m_equation","warpedPoi","cameraPositionRotation","poiPolar","pPrimeX","pPrimeY","pPrimeZ","dewarpingPlaneToHemisphere","PlaneEquation","buildFromNormalAndPoint","m_toString","BackTo2D","vec3","d","twoEquationsTwoUnknownResolve","normal","point","A","B","C","D","ImageGeometry","StreamResolution","rotateAroundCircle","CircleCenterInPixels","tiltInCircle","tiltInPixel","RadiusInPixels","panFrom","imageXY","tiltFrom","limitToWarpedCircle","angleMin","onXYPlane","circleClipedXY","imageToCircle","adjustedAndCliped","circleToImage","circleCoordinates","CircleResolution","Cropping","imageCoordinates","imagePixelToCircle","imagePixelCoordinates","ZoomFactor","Min","Max","Steps","IsMinimum","zoomFactor","increase","clip","decrease","DewarperController","sceneUpdated","m_sceneUpdatedEvent","XY","m_requestedImageXY","m_requestedZoom","m_imageGeometry","DewarpingParameters","gotoXY","controllerUniform","m_crossCenter","m_dewarperSourceImageParameters","m_controllerUniform","requestedImageXY","createScene","gotoPanTilt","panRatio","tiltRatio","translated","rotated","rotatedAndTilted","triggerSceneChanged","drag","dragInfo","StartOfDrag","pointFinder","startImage","endImage","Stop","startPolar","endPolar","radianMovement","radiusMovement","requestedPolar","newRequestedPolar","newRequestCartesian","newImageXY","limitedUnprojectedXY","userlimitedInput","planeEquationString","ControllerUniforms","toVec3","m_pPrime","m_dewarpingPlaneEquation","planeEquation","dewarpingPlaneEquation","uniform3","xyz","DewarperProgram","m_dewarperController","OutsideColor","m_outsideColor","R","G","high","m_positionBuffer","m_warpedImageResolution","m_canvasResolutionAdjustedToSrcAspectRatio","m_canvasResolutionAspectRatioOverflow","m_cropping","buildController","setDewarpingParameters","canvasResolution","DewarpedResolution","viewport","dewarp","imageSource","drawArrays","TRIANGLES","getParameter","VIEWPORT","DewarperControl","isDewarping","m_dewarper","stopDewarping","isFiniteNumber","m_dewarperControl","panDegrees","tiltDegrees","PanDegrees","TiltDegrees","gotoZoom","Preview","m_dewarperPreview","dewarper","dewarperPreview","dewarperControl","ControllerAggregate","m_internalControl","internalControl","secondListener","m_secondListener","Color","m_r","m_g","m_b","m_a","fillRect","rgba","r","g","NormalizedColor","DewarpedAreaFragmentShader","DewarpedAreaFragmentShaderCodeBuilder","medium","getReversedRdFunction","DewarpedAreaVertexShader","DewarpedAreaProgram","DewarpedAreaColor","newColor","dewarpedAreaColor","currentColorValues","currentColor","DewarpedAreaBorderColor","newBorderColor","dewarpedAreaBorderColor","currentBorderColorValues","currentBorderColor","onSceneChanged","m_lowerDewarpedLimit","m_higherDewarpedLimit","m_borderWidthRatio","m_viewportResolution","m_viewportOffset","canvasResolutionChanged","setViewport","computeAspectRatioOverflow","viewportResolution","viewportVerticalOffset","DewarpedArea","IsDewarping","m_isDewarping","setVisibility","Enabled","m_isEnabled","dewarpedAreaCanvas","getWebGL2Context","onCanvasResized","m_canvas","Resized","observeCanvasStyleLoop","Show","styleChangeAwaitingResult","StyleChange","VideoFrameSources","jpegRenderer","mseRenderer","htmlVideoElement","m_frameResolver","m_jpegSubscribed","m_mseSubscribed","m_jpegFrameSource","MjpegFrameSource","m_videoElementFrameSource","VideoElementFrameSource","getImage","videoElementFrameSource","m_interupt","m_mseRenderer","m_disposeToken","cancellation","videoFrame","VideoElementFrame","m_jpegRenderer","htmlImageElement","mjpegFrame","MjpegFrame","m_imageSource","m_resolution","ThrottledVideoSource","IsStarted","m_started","videoFrameSource","maxFps","m_videoFrameSource","m_minMsBetweenFrames","m_getFramePromise","videoFrameSourceListenLoop","currentFrameReception","nextFrameMinTime","toWait","DewarperPreview","m_dewarpedArea","setPreviewVisibility","Canvas","m_previewCanvas","previewCanvas","m_lastImageSource","onPreviewCanvasResize","onClick","clipSpaceCoordinates","refresh","Clicked","observeMouseWheelLoop","mouseWheeled","MouseWheel","newZoom","TopLeftPixelCoords","SafeResizeObserver","fct","m_observedElement","m_resizeObserver","StyleObserver","m_styleChangePromise","onStyleChanged","m_styleObserver","attributeFilter","CanvasWrapper","colorObj","fromCSSColor","fromColor","friendlyName","htmlCanvasElement","onResizeCanvas","m_friendlyName","MouseWheelObserver","m_listening","m_htmlElement","onMouseWheel","m_mouseWheelPromise","deltaY","PreviewCanvas","m_onClick","m_mouseWheelObserver","previewHtmlDiv","m_displayedResolution","m_videoWatermarkConfig","onPointerDown","pointerEvent","isCanvasEmpty","clickCoords","clipSpaceCoords","m_divElement","setPointerCapture","pointerId","onPointerUp","releasePointerCapture","onPointerMove","buttons","m_context","getCanvasRenderingContext2D","displayedResolution","HTMLVideoElement","DewarperCanvas","DefaultDewarpedAreaColor","DefaultDewarpedAreaBorderColor","m_streamResolution","m_dewarpedResolution","m_fitResolution","diameter","dewarpedResolution","DewarpingParametersBuilder","withDewarpedResolution","withStreamResolution","Dewarper","DefaultOutsideColor","m_frameRateComputer","dewarperHtmlCanvas","dewarperVwoOverlay","previewHtmlCanvas","dewarpedAreaHtmlCanvas","mouseWheelObserver","dragObserver","dewarperCanvas","m_dewarpingParametersBuilder","m_preview","ensureEnabled","m_dewarperVwoOverlay","logVersion","getOutsideColor","m_controllers","observeDragLoop","dewarpImageSource","imageElementCheck","HTMLImageElement","drawVwo","VERSION","SHADING_LANGUAGE_VERSION","VENDOR","getExtension","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","dragged","Drag","FeatureFlag","s_dewarperEnabled","IsDewarperEnabled","DigitalZoomControl","m_digitalZoom","m_digitalZoomPreview","onPositionChanged","digitalZoom","preview","goTo","move","zoomWithFocus","snapshot","DigitalZoom","m_zoomFactor","m_coords","m_viewOffset","ZoomConfigChange","m_zoomConfigUpdatedPromise","m_positionChanged","tile","updateTileResolution","m_tile","m_dragObserver","observeTileDimensionsChange","observeDragChange","newX","newY","applyDigitalZoomConfig","tileDimensionsChange","TileDimensionsChange","dragChange","StartNormalized","StopNormalized","activeRenderer","m_codec","m_tileDimensionsChangePromise","tileSizeObserver","m_tileSizeObserver","setCodec","refreshTileSize","Rectangle","Dimensions","m_dimensions","dimensions","isNotOverlapping","otherRight","otherBottom","intersectLeft","intersectRight","intersectTop","newWidth","newHeight","DigitalZoomPreview","CanvasResolution","m_videoFrameSourceListenLoopStarted","imageRes","onResized","zoomConfigUpdateListenLoop","drawRectangle","rectDimensions","fitRes","rectCoords","m_rectangleColor","rectangle","strokeRect","RenderingCanvas","zoomConfiguration","drawingCoordinates","overlaySizeX","overlaySizeY","DragObserver","m_draggingPromise","m_dragging","m_firstMovement","m_startDragCoordinates","m_pointerDownTimeStamp","isMouseMainButtonDown","timeStamp","newPosition","dragEvent","DragInfo","onPointerOver","m_startOfDrag","m_start","m_stop","startOfDrag","DewarperVwoOverlay","WebPlayer","SessionEstablishment","m_sessionEstablishment","m_ptzControl","isLive","lastFrameTime","m_audioPlayer","isPlayerStarted","mediaGatewayService","enableH264","onMseErrorOccurred","onJpegTimeUpdated","onSessionRecovered","onSessionLost","ConnectingToMediaGateway","onSessionError","PlayerId","digitalZoomPreview","m_debugOverlay","establishSession","getBrowserSupportedFormats","establishedSession","timeLineRange","showDebugOverlay","readableByteCount","onVideoSegmentReceived","onAudioSegmentReceived","Camera","TimeLineRange","m_endTime","m_startTime","TimelineProvider","m_timelineContentEvent","TimelineRangeLimit","fromHours","m_timelineEventSource","timelineEventSource","m_timeLine","newRange","PlayersList","m_players","m_isWeakRefDefined","WeakRef","Instance","WeakRefIsDefined","Count","weakRef","deref","players","maybeStillAlive","player","playersCopy","cleanedUp","m_nextId","buildPlayer","TypeError","PublicWebPlayer","ptzControl","webPlayer","timelineProvider","m_timelineProvider","isStarted","m_webPlayer","onErrorStateRaised","errorEvent","frameRenderedEvent","onStreamStatusChanged","streamStatusEvent","playerStateEvent","onPlaySpeedChanged","playSpeedEvent","onAudioStateChanged","audioEvent","onAudioAvailabilityChanged","audioAvailabilityEvent","onPlayerModeChanged","playerModeEvent","onErrorState","errorStatus","m_mediaGatewayService","mediaGatewayEndpoint","startWithService","subscribeToPlayerEvent","unsubscribeToPlayerEvent","mgService","throwIfDisposedOrNotStarted","enableLogs","disableLogs","globalThis","mapEvery","predicate","mapFind","setFilter","setSome","gwp","isEnabledDefault","TimelineController","getProvidersAsync","TimelineService","bookmarksProvider","activeProviders","bookmarksVisible","providersChanged","activeProvidersString","onSettingsChanged","applyDefaultSettingsIfNotSet","applyDefaultSettingsAsync","fetchProvidersAsync","timelineController","providersString","TimelineService_1","TimelinePart","isPersistent","renderer","toolTip","TimelineToolTip","objToolTip","picture","TimelineProviderId","BookmarkTimelineProviderId","MotionTimelineProviderId","RecordingSequenceTimelineProviderId","AccessControlTimelineProviderId","AlarmTimelineProviderId","TimelinePartEvent","TooltipItem","MouseCaptureDirective","activeId","ResizeDirective","appResize","oldWidth","oldHeight","ResizeSensor","resizeSensor","detach","ThumbnailPart","TimelineComponent","minLength","rangeThreshold","autoScrollThreshold","liveThreshold","autoscrollBuffer","cursorThumbWidth","livePopupTime","maindivContent","maindiv","onMouseWheelHandler","passive","allowPlayback","allowPlaybackValue","cameraIdValue","entityIdValue","videoPlayer","onLoopChanged","onTimelinePart","queryParts","timelineService","currentX","loopThumbs","isLoopEnabled","captureMouse","cursorTime","tooltips","cursorX","tooltipX","tooltipArrowOffset","showTooltip","isMouseOver","isPanning","loopTime","currentHeight","currentWidth","isAutoTooltip","isCompressible","isExpandable","isOverDiv","isOverTooltip","isTimelineProvidersSet","wasPlaying","isLoopExpandingWithRightThumb","queryControllerDebounce","hideTooltipDebounce2s","hideTooltip","hideTooltipDebounceLive","TimelineComponent_1","tickIntervals","ticks","sequenceEvents","thumbnailEvents","isDragging","isDraggingLoop","mouseDownPosition","currentProviders","enableLog","debouncedDraw","replaceThumbs","onRenderingRefresh","onProvidersChanged","diff","queriedStart","queriedEnd","queryStartX","getPercentageFromTime","limitWithinRange","queryEndX","drawEvents","drawParts","drawTicks","startX","getCurrentTimeX","stopX","isPonctual","posStartPercent","toDate","sorted","part","extractTokens","updateTickSpacing","currentTickInterval","majorTicks","showSeconds","showMinutes","showHours","timeFormat","tickCount","lineCap","lineJoin","textAlign","currentTimestamp","percentX","ticskHeight","lineHeight","startTimeText","totalMs","totalTimeText","totalTextWidth","totalTextX","textX","compress","origin","newLength","threshold","centerTime","updateCursorTime","expand","updateZoomAvailability","clearLoop","setupTimelineProviders","getLoop","setLoop","initStartTime","initEndTime","kv","trimLeft","autoRedraw","lastAutoRedraw","newStartTime","newEndTime","diffPercentage","positionTooltip","autoScroll","maxTime","containsPart","itr","getHoverEvents","eventPercentX","getThumbnail","getTimeFromPercentage","thumb","totalDifference","getTotalDifference","percentage","onLive","onPlayback","tooltipHalfWidth","offsetWidth","totalWidth","cursor","loop","setIsMouseOver","addProviders","removeProviders","toAdd","addTimelineProviders","toRemove","logText","timestampText","tickSpacing","updateTime","currentState","Playing","Rewinding","minX","maxX","thres","isBigEnough","isSmallEnough","onMouseUp","button","initialMovingTime","updateMovingThumb","loopStart","loopEnd","divRect","currentThumbnail","hoverEvents","onTooltipMouseEnter","onTooltipMouseLeave","onThumbnailClick","onCursorMouseDown","isLooping","newParts","RecordingSequence","thumbPart","TreeItemsComponent","itemCallbackToUse","sendNotInitializedWarning","onItemClick","EntityCommandsWidgetHostComponent","DISPLAYED_ACTION_COUNT","displayContextValue","includedCommandIds","isOwnerLoading","areCommandsLoading","isFirstChange","refreshIsLoading","createCommandsUsageAsync","onAreCommandsLoadingChanged","stateTooltip","ngContentSelectors","MonitoredEntityEvent","monitoredEntityId","eventEntry","eventEntryString","FinalizeReason","FinalizeCallbackSubject","callbackWhenCompleteOrNoMoreSubscribers","autoCompleteObservable$","isCompleteOrNoMoreSubscribers","source$","finalized","numberOfSubscribers","errored","completed","Complete","NoMoreSubscribers","Unsubscribe","EventTypeData","EventHelper","awaitedEvents","promises","TouchEventHandler","CONTEXT_MENU_DELAY","DOUBLE_CLICK_DELAY","DRAG_IMAGE_OPACITY","DRAG_MOVEMENT_THRESHOLD","dropTarget","dragSource","customDragImage","dragImage","dragImageOffset","isDoubleClicking","isPressingDown","lastClickTime","lastDragOverTarget","lastTouchMoveEvent","lastTouchStartEvent","touchStartPoint","subscribeToHost","copyStyle","removeAttribute","HTMLCanvasElement","sourceCopy","destinationCopy","HTMLElement","getComputedStyle","setProperty","getPropertyValue","createDragEvent","touchEvent","getTouch","movement","getMouvement","eventInit","bubbles","cancelable","clientX","clientY","composed","movementX","movementY","relatedTarget","screenX","screenY","DragEvent","createMouseEvent","createImage","destroyImage","cloneNode","rect","getPoint","TouchEventHandler_1","moveImage","parentElement","endTouchAsync","isCancel","isValidEvent","tryDispatchMouseEventAsync","tryDispatchDragEventAsync","getClosestDraggable","getDropTarget","elementFromPoint","touches","changedTouches","changeTouch","getTotalMovement","usePage","pageX","pageY","handleTouchCancelAsync","handleTouchEndAsync","handleTouchMoveAsync","DataTransfer","setDragImage","handleTouchStartAsync","sourceElement","defaultPrevented","TouchEvent","pt","touchStart$","fromEvent","touchMove$","touchEnd$","touchCancel$","tryDispatchEventAsync","dispatchEvent","tryCaptureEventAsync","releaseEvent","toError","messageOrError","originalError","convertToError","outerError","EventsSettingsService","defaultEventsLocalStorageKey","listeningEventsOptionsKey","listeningEvents$","getListeningEventsSettings","eventsData","setListeningEventsSettings","defaultEvents","serializeEvents","getListeningEventsFromLocalStorage","setListeningEventsToLocalStorage","MonitoredEntityEventObserver","entitySubjects","setObservableFor","finalizeCallback","setSubject","getObservableFor","getSubject","publishEvents","callbackWhenNoMoreObservers","newSubject","deleteSubject","EventsService","MinimumSecurityCenterVersionForFilteredEntityTypes","Version","entityEventObserver","eventsClient","eventsSettingsService","listeningEvents","lastAddFilterApplied","monitoredEntityEventKey","fetchRegisteredEventTypesAsync","eventDefinitions","getEventsSelectedFromEventDefinitions","applyListeningEvents","groupEventsByMonitoredEntityId","monitoredEntityEvents","acc","delayWhen","createEventsToAddFilter","eventTypeData","removeEntityTypeResultsSubTypesIfNotSupported","entityTypeResults","areSubTypesSupportedForEntityTypes","entityTypeResult","newType","subscribeMonitoredEntityEvents","subscribeApplySettingsOnUserSettingsChanged","subscribeApplySettingsOnLogonStateChanged","supportedEntityTypes$","combineLatest","cacheLifetimeMilliseconds$","eventsSubscription","multiEventsSubscription","retrieveLatestEvents","existingObservable","mergeMap","listeningEventsFromStorage","isAllEnabledByDefault","eventDefinition","isEventDefinitionInEventTypeData","getMonitoredEntitiesFromEventsReceived","getMonitoredEntityEvent","publishAllEvents","mappedEvents","eventBase","eventToAddFilter","onLoggedOut","areSubTypesSupported","full","EventsService_1","EventTimeService","EventItemComponent","eventTimeService","isNew","showDismissOnHover","showEntityName","dismissed","seen","showDismiss","onDismiss","formattedTime","formattedDate","monitoredEntity","LatestEventsWidgetComponent","MaxNumberOfDisplayedEvents","eventsService","recentEventsTitle","eventsSubject$","events$","retrieveLatestEvents$","LatestEventsWidgetComponent_1","getEntity$","eventEntries","fetchedEntity","onEventsReceived","updateRecentEventsTitle","contentService","monitoredEntityEvent","hasEvents","CaptureEventsDirective","previewClick","onClickHandler","capture","DebounceClickDirective","debounceTime","debounceClick","clicks","throttleTime","HoverClassDirective","appHoverClass","appHoverClassDelay","cancelTimeout","resetClassWithTimeout","addHoverClass","removeHoverClass","tryCancelTimeout","appHoverClassResetDelay","MenuDataSourceDirective","appMenuDataSource","menuItemsComponent","menuItemsComponentFactory","ResizeElementDirective","appResizeElement","isResizable","appResizableSides","nodes","limit","mousemove","mouseup","mousedown","direction","createNode","stylesDictionary","ResizeWidthDirective","appResizeWidth","throttler","asyncScheduler","resizeWidthEvent","ClickStopPropagationDirective","onDoubleClick","FullscreenService","fullscreenChangeTypes","genModalService","applicationRef","fullscreenElementChangedSubject","openedModalsSubscriptions","fullscreenElementChanged$","FullscreenService_1","fullscreenChanged","currentFullScreenElement","fullscreenElement","unsafeDocument","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","isFullscreenOn","displayModal","registerFullscreenModal","attachView","rootNodes","enterFullscreenFor","requestMethod","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","mozCancelFullScreen","msExitFullscreen","GenModalService","ComponentFactoryResolver","ApplicationRef","TooltipService","fullscreenService","registerTooltip","tooltipComponent","appTooltipComponent","tooltipElement","ensureCorrectParentElement","registerOnceCloseOnMouseLeave","mouseLeaveSubscription","listen","tooltipDOMElement","SharedModule","TooltipDirective","DELAY_MS","appTooltipOnlyIfOverflow","isTooltipOnlyIfOverflow","tooltipService","appTooltip","TreeDataSourceDirective","appTreeItemClick","treeItemsComponent","appTreeDataSource","treeItemsComponentFactory","ArgbPipe","argb","argbColor","FilterPipe","itemsToFilter","it","fieldValue","SafePipe","sanitizer","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","SortByPipe","order","column","defaultCompare","col","localeCompare","StringFormatPipe","argString","toLocaleString","StringToIconPipe","AudioService","playAudio","raw","KnownCellRendererTypes","ColoredDot","Thumbnail","ImageWithText","List","StatusWithColor","TableCellType","TableComponent","columnDescriptors","refreshing","selectedId","selectedChanged","sortChanged","loadMore","TableColumnHeaderSort","TableFlavor","isLoadingMoreSubject","isLoadingMore$","deselectAll","onLoadMore","row","showColumnSelection","showEditColumnsModal","onSortChange","columnHeaderSort","sortOption","columnKey","sortOrder","columnOrderChanged","col1","col2","newTableColumns","isKey","GenTable","EventMonitoringFeatureFlags","UserWatchlistService","userWatchlistClient","watchlist","addedSubject$","watchlistSubject$","removedSubject$","modifiedSubject$","onLoggedOut$","added$","watchlist$","modified$","removed$","subscribeAuthService","addedEntries","guidsNotAlreadyAdded","getExistingEntry","newItem","Normal","updateWatchlist","existingEntry","updateIsFlagged","isFlagged","newPriority","getItemPriority","isEntityBeingWatched","Flagged","saveWatchlist","isEventMonitoringFlagEnabled","onLoggedIn","fetchUserWatchlist","saveWatchlistWhenUpdated","skip","EventMonitoringContentTypes","WatchList","EditWatchList","EventMonitoringContext","AnalyticsNames","Investigate","ReportGenerated","SelectedColumns","Shared","EventMonitoring","SendFeedback","DialogOpened","DialogClosedSuccess","DialogClosedCancel","SubmitFailed","EventMonitoringLoggerService","WatchlistItem","flagged","WatchlistEditorComponent","userWatchlistService","eventMonitoringLoggerService","watchedEntities$","selectedEntitiesCache$","entityCacheTask","watchlistEntries","onUserWatchlistAdded","updateWatchedEntities","initializeUserWatchlistAsync","onUserWatchlistRemoved","onUserWatchlistModified","entityBrowserFilter$","scan","watchedEntities","addItems","entitiesSelector","addItemsToWatchlist","onEntitiesSelected","EditWatchlist","setItemIsFlagged","createWatchlistItem","isWatchlistEntryFlagged","fetchAndAddEntriesAsync","watchList","watchlistEntry","entryCache","entriesToFetch","findItem","entityItem","watchedEntity","WatchlistEditorComponent_1","standalone","GroupBy","keyValues","groupBy","createKeyValue","UserWatchlistRequestService","toggleShowWatchListAsync","watchListRequest","showWatchlistEditorAsync","editWatchListRequest","CachedMonitoredEntityEvent","userWatchlistItem","eventsDismisser","timeoutMs","isDestroyed","eventNumber","monitoredEntityPriority","monitoredEntityTimestampMs","timerSubscription","dismissEvent","cachedFormattedDate","cachedFormattedTime","timestampMs","updateUserWatchlistItem","newUserWatchlistItem","destroy","EventsMonitoringService","MAX_EVENTS_COUNT","fifteenMinutesInMilliseconds","missedEventsCountSubject$","monitoredEntitySubscriptionsMap","watchlistEntryMap","userWatchlistServiceSubscriptions","receivedEvents","newEventsSubject$","receivedEventsSubject$","isLiveMonitoring","isMonitoring","cacheLifetimeMilliseconds","missedEventsCount$","receivedEvents$","newEvents$","clearEvents","eventToDelete","findCachedEvent","removeReceivedEvent","markAllAsRead","eventsNotRead","markAsRead","emitReceivedEvents","eventToMarkAsRead","dismissAllEvents","dismissEvents","clearReceivedEvents","toggleLiveMonitoringState","resetMissedEventsCount","removeUserWatchlistItem","eventsToClear","cachedMonitoredEntityEvent","decreaseMissedEventsCount","startMonitoring","initializeMonitoring","stopMonitoring","fetchCacheLifetime","addUserWatchlistItems","subscribeToUserWatchlistObservers","userWatchlistItems","userWatchlistItemId","newEvents","entityEvent","event1","event2","combinedEvents","increaseMissedEventsCount","getEntityEvents","updatedUserWatchlistItem","affectedEvents","removeEntityReceivedEvents","receivedEvent","resetEventNumbers","currentMissedEventsCount","eventCount","newEventCount","EventItem","cachedEvent","EventListComponent","eventsMonitoringService","sideContextDataService","isScrollToTopVisible","cachedEntities","isLoadingSubject$","isScrolled","isLoading$","hasMultiplePriorities$","fetchEntities","createEventItems","eventItems","sortEventItemsByPriority","hasEvents$","updateNewEventsButtonVisibility","trackByItem","onDismissEvent","eventItem","onDismissPriority","onItemSeen","openEventDetailsAsync","translatePriority","priorityString","didPriorityChange","currentEvent","previousEvent","onScroll","topIndex","scrollBackToTop","viewPort","scrollToIndex","createEntityQueryFromWatchlist","addEntityIdsToCache","getEntitiesObservable","addEntitiesToCache","entityIdsNotInCacheToQuery","createEntityQuery","foundEntity","CdkVirtualScrollViewport","WatchlistComponent","userWatchlistRequestService","hasWatchlistEntries$","onAddItemsClick","WatchlistComponent_1","GelatoInvalidityCompatDirective","ngControl","formControlName","formControl","statusChanges","appGelatoInvalidityCompatControl","newStatus","getElementThatSupportsValidity","setCustomValidity","shadowRoot","FormControlName","ApplicationInsightsFeatureFlags","FormControlErrorDirective","defaultErrorMax","appFormControlError","textContent","touched","errorToTranslatedString","errors","errorMessages","errorKey","appFormControlErrorMax","FormControlErrorDirective_1","appFormControlErrorOverrides","required","email","requiredLength","getAccessStatusResourceString","AccessStatusToTranslatedStringPipe","FormGenComboboxComponent","genItemsSource","genLabel","genLabelComplement","LabelComplement","genMessage","genMessageSeverity","Severity","readonly","inputValue","onChange","onTouched","writeValueToCombobox","registerOnChange","registerOnTouched","writeValue","setDisabledState","onSelectedItemChange","onOffClick","genComboboxComponent","GenComboboxComponent","GeneralFeatureFlags","EntityState","ExpandWidget","ThreatLevelChangedEvent","newThreatLevelGuid","affectedAreaGuid","ThreatLevelService","activeThreatLevel$","activeThreatLevelSubject","threatLevelClient","threatLevelsEventKey","subscribeThreatLevelsEvents","threatLevels$","setupThreatLevels","threatLevelsSubscription","newThreatLevel","threatLevelA","threatLevelB","threatLevelsInfo","activeThreatLevel","findActiveThreatLevel","threatLevelsEvent","getThreatLevelsEvent","getThreatLevelInfo","ThreatLevelsContext","BoldStringPipe","subText","ThreatLevelConfirmationModalComponent","threatLevelService","selected","ConfirmThreatLevel","openThreatLevelModal","CancelThreatLevel","ThreatLevelModalComponent","ListFlavor","openThreatLevelConfirmationModal","ApplyThreatLevel","updateSelectedItem","isSelectedTheActiveThreatLevel","isThreatLevelAlreadyActive","resetThreatLevel","KnownLicenses","accessControl","LPR","maps","correlation","ingestion","ThreatLevelsTrayComponent","hasSetThreatLevelPrivilege","isThereAnActiveThreatLevel$","activeThreatLevelName$","threatLevelColor$","trayTooltip$","openThreatLevelsModal","ThreatLevelsTrayComponent_1","EntityStateItemComponent","withExpander","showIcon","LuminancePipe","luminance","TimePipe","mmt","PortalOutletComponent","activatePortalOutlet","portalDOM$","enablePortalOutlet","AppTooltipComponent","messageSubject","message$","genPopup","GenTooltip","DisableDefaultContextMenuDirective","onRightClick","WEB_SOCKET_SERVICE","WEB_SOCKET_SERIALIZER_SERVICE","WebSocketJsonSerializerService","webSocketContent","SCClientWebSocketService","webSocketSerializerService","responseSubject","response$","subscribeToWebSocketWhenLoggedIn","writeToWebSocket","serializedContent","retrieveStreamer","releaseStreamer","streamerBase","isSCStreamer","unsubscribeWebSocketResponse","unknownRequestReceivedArgs","notifyWebSocketResponse","ThumbnailComponent","fit","placeholderOpacity","displayPopup","isData","formatImageData","getIcon","thumbnailData","splitString","defaultPlaceholder","showPopupAsync","thumbnailBorderRadius","FilterSearchComponent","ScrollOnExpandDirective","banner","scrollAmountPx","genIsOpenChange","isExpand","scrollView","scrollContainerElement","scrollContainerSelector","scrollBy","enableMapSet","SharedModule_1","deps","useFactory","useClass","imports","CommonModule","GenAngularModule","BrowserAnimationsModule","ScrollingModule","forRoot","PortalModule","NgxsModule","declarations","exports","MapControlsComponent","floorsScrollContainer","scrollToSelectedFloorButton","defaultView","updatePresetsContextMenu","presets","selectedFloor","floorInfo","isGoToParent","isGoToParentEnabled","floorClick","goToParentClick","zoomInClick","zoomOutClick","presetSelect","widthChange","contextMenuPresets","isPresetsOpen","floors","handleMouseWheelEvent","getSortedFloors","floorA","floorB","isFloorSelected","goToParentMap","toggleIsPresetsOpen","querySelectorAll","switchFloor","zoomIn","onPresetClick","onMapControlResize","getMapControlMarginRight","horizontalMargin","computedStyle","mapControl","marginRight","addDefaultViewContextMenuItem","addCustomPresetsContextMenuItem","startIndex","smooth","floorButton","currentScroll","scrollContainerHeight","scrollTo","MapPopupComponent","TIMEOUT_TO_SHOW_EXPANDED_PLUGINS_MS","isPermanent","permanent","contextMenuOpen","expandedPluginsStack","mouseEnterSubject","mouseLeaveSubject","mouseEnter$","mouseLeave$","currentContextMenuCloseSubscription","closeOnMouseLeave","expanded$","MapPopupComponent_1","onPluginClick","closeContextMenu","updateContentAndOpenPopup","expandedPlugins","replacePopup","webMapsPopup","getSourceLayer","openPopup","clearCloseTimeoutAndSubscription","clearAndClosePopup","resetDelayToCloseInterval","delayToCloseMs","closePopup","newDelayToDisappear","timeToCloseTimeout","MapPopup","MapsBottomContextDataState","MapsBottomContextDataService","MapsBottomPaneComponent","InsufficientPrivilegesComponent","MapOptionsComponent","disableMinimapSettingId","showOfflineMobileUsersId","isMiniMapDisabled","isShowingOfflineMobileUsers","isInitialized","isContentVisible","MapOptionsComponent_1","onShowMiniMapChanged","showMiniMap","onShowingOfflineMobileUsersChanged","hidingOfflineMobileUsers","EntityTypeIds","Area","Door","Alarm","Device","IntrusionArea","LPRUnit","LPRDevice","Ellipse","Line","Macro","Text","TilePlugin","Polygon","Cluster","AccessControlUnit","ParkingZone","TileLayout","MobileUser","MobileApp","StreamDataView","useLittleEndian","getUByte","getByte","getInt8","getUInt16","getUint16","getInt16","getUInt32","getFloat32","getFloat64","getStringData","getGuidString","getGuidStringData","startOffset","chars","SerializationSteps","SerializationTypes","FieldColumn","keyName","WebMapObjectType","layerId","supportsNavigation","clusterable","WebMapLayer","includedTypes","WebMapObject","additionalLinks","background","overridenMainIcon","overlayIcon","overlayIconColor","stateColor","lettersToDisplayOnMarker","WebMapObjectResult","mapObjects","WebMapObjectFilter","layerIds","onlyOnlineLayerIds","WebMapLayerNotificationFilter","receiveNotifications","WebMapNotificationFilter","requesterId","layerFilters","ConcreteWebMapObjectFilter","mapObjectIds","WebMapNotificationFilterRequest","FloorQuery","parentAreaId","FloorQueryResult","parentMapId","coversMultipleAreas","PushResponseReceiver","_currentPacketView","_currentPacket","_currentPacketOffSet","_mergeNextBuffer","onMessageReceived","fullUrl","queueData","getJsonAsync","dv","jsonObj","mergedArray","Uint8Array","parseAgain","msgLength","parseMessage","messageLen","getGuid","getInt64","littleEndian","low","MapController","getAllMapObjectsAsync","getAvailableLayersAsync","getNotificationFilterAsync","ImageWebMapObject","stretch","ShapeWebMapObject","borderThickness","points","blockFieldOfView","blockFieldOfViewUsingAltitude","isPolyline","TextWebMapObject","fontFamily","fontIsBold","fontIsItalic","fontIsUnderline","foreground","textAlignment","isShadowDisplayed","MapObjectEventBase","MapObjectAddOrUpdateEvent","updateOnlyIfVisible","eventDisplayTime","MapObjectRemoveEvent","removeEventContentOnly","MapLayersRefreshEvent","MapObjectPositionUpdateEvent","MapEventProvider","mapItemUpdater","onEventAdded$","onEventRemoved$","onMapObjectPositionUpdateEvent","onMapLayersRefreshEvent","onMapObjectAddOrUpdateEvent","onMapObjectRemoveEvent","eventHandler","isMapInitialized","mapObjectView","getMapObjectView","toTypescriptGuid","mapObject","updateMapObjects","displayMapObject","refreshLayers","refreshMapObjects","mapObjectViewExists","updateMapObjectIfVisible","processEvent","removeItems","MapProviderTypes","Esri","BeNomad","Bing","BingHybrid","BingSatellite","Google","GoogleTerrain","Custom","GoogleMapProviderLoader","mapLoader","mapsProviderClient","detectChangeDone","loadMapAsync","mapOptions","clustering","chunkedLoading","maxClusterRadius","spiderfyOnMaxZoom","zoomToBoundsOnClick","attributionControl","closePopupOnClick","minZoom","maxBounds","bounceAtZoomLimits","inertia","maxBoundsViscosity","userLocationEnabled","initialBounds","getKey","mapProviderOptions","noWrap","apiKey","GoogleMapProvider","MapCommands","ToggleMinimap","RoleGuids","CloudArchiveRole","RestRole","ZoneManagement","WebSdk","IngestionRole","ReverseTunnelClientRole","AuthRole","PointOfSale","AccessManager","AuxiliaryArchiver","IntrusionDetection","LicensePlateManager","DirectoryFailover","AutomationRole","MediaGateway","MobileRole","SimulationRole","UnitAssistantRole","BwcManager","Plugin","PrivacyProtector","TaskAutomation","MapManagerRole","ReverseTunnelServer","StreamManagement","SharingManager","MobileCredentialManagerRole","HealthMonitoring","ActiveDirectory","ImageMapProviderLoader","commandService","imageMapTileUrlTemplate","imageMapApiRequestUrlTemplate","headersData","webToken","leafletOptions","isMinimapDisabled","providerOptions","useIndexedDBCache","authentication","cacheVersion","showMinimap","minimapOptions","minimumMapWidth","minimap","contextMenuItem","geoReference","targetCoordinates","geoReferencedImageCRS","createGeoReferencedImageCRS","halfSize","toLatLngBounds","crs","createImageCRS","bounds","GenImageMapProvider","applyToken","getCurrentProvider","updateWebToken","authorization","FallbackGeoreferencedMapProviderLoader","maxNativeZoom","defaultURL","attribution","CustomMapProvider","setGeolocationEnabled","MapProviderLoader","mapProviders","cacheTask","fallbackGeoMapProviderLoader","mapProvider","getMapProviderLoader","loadProviderAsync","logProviderNotFound","mapEntity","usingFallback","MapService","onMapObjectSelected$","onMapObjectSelectedSubject","onMapObjectUnselected$","onMapObjectUnselectedSubject","onMapObjectMouseEnter$","onMapObjectMouseEnterSubject","onMapObjectMouseLeave$","onMapObjectMouseLeaveSubject","onMapTypesLoaded$","onMapTypesLoadedSubject","onMapLoaded$","onMapLoadedSubject","onEventAddedSubject","onEventRemovedSubject","onMapUnavailable$","onMapUnavailableSubject","onMiniMapStateChanged$","onMiniMapStateChangedSubject","onSelectionRequested$","onSelectionRequestedSubject","onUpdateContextualDataRequested$","onUpdateContextualDataRequestedSubject","onClearContextualDataRequested$","onClearContextualDataRequestedSubject","mapAvailable","mapAvailableSubject","displayedLayerIds","currentlyDisplayedLayers","resourceService","contentServicesProvider","domSanitizer","currentMapEntity","markerRefreshMinDelay","markerRefreshMaxDelay","loadingDisplayTimeout","markersToDownload","markersToUpdateIfVisible","mapLoadItemsDownloaded","mapObjectTypes","hiddenMapObjectTypes","eventSubscriptions","callMapLoadedOnVisibilityChange","loadingMapObjectsSubject","onlyOnlineMapObjectTypes","eventsRegistered","mapEntityFieldsToDownload","mapProviderLoader","setupDebouncer","tokenData","emptyMap","mapEntityCacheTask","miniMap","getMiniMap","removeOnlyOnlineMapObjectTypeFilter","addOnlyOnlineMapObjectTypeFilter","setService","visibilityChangedHandler","onDocumentVisbilityChanged","mapAvailable$","loadingMapObjects$","off","debouncerMarkerDownload","cleanMapEventProvider","WebMap","leafletMap","setPrefix","whenReady","onLoaded","on","onAreaViewChanged","onMarkerAdded","onMarkerShown","initializeMap","getMapEntityAsync","withEvents","mapLoaded","loadMapProviderAsync","mapEventProvider","mapEvent","clearMap","layersToRefresh","layer","typesToRefresh","getTypesFromLayers","clearItemsOfTypes","insertMapObjectsFromLayersAsync","getNotificationFilter","mapController","getNotificationFilterInternal","mapObjectTypeId","setVisibleLayers","updateNotificationFilter","excludedLayers","layersToAdd","excludedTypes","hiddenLayers","mapObjectId","deferDisplayMapObject","deferUpdateMapObject","destroyMap","clearNotificationFilter","clearAllItems","getMapObjectsFromSourceIds","getMapObjects","getMapObjectsFromIds","insertMapObjects","areFullObjects","genMapObjects","getImagePromises","webMapObjectType","MapObjectCategory","fileResult","selectable","imageSrc","tooltipContent","sanitize","shape","getShapeTypeFromMapObjectType","LatLng","existingShape","getPopup","markerOptions","MarkerIconStyle","iconImgSrc","MarkerImgIcon","MarkerTextIcon","iconText","innerIconSize","MarkerClassNameIcon","iconClassName","MarkerClassNameOverlayIcon","addOrUpdateMapObjects","imageMapObjects","imageMapObjectsToAdd","imageMapObject","removeMapObjects","updateContextualData","clearContextualData","contentId","select","selectAndZoom","selectedMapView","Marker","fitBounds","getLatLng","lat","lng","Polyline","getBounds","centerMapObject","updateNotificationFilterFromTypes","types","objectType","layerFilter","addPin","pinId","DivIcon","html","iconSize","iconAnchor","removePin","filterEventsReceiverItems","criticalEvent","displayedMapObjects","marker","topMostCluster","getFloors","restoreMiniMapLeftOffset","transitionDuration","moveMiniMap","moveMiniMapLeft","leftOffset","setMiniMapRightMargin","setRightMargin","previousViewArea","createMapProviderOptionsAsync","getDefaultMapIdAsync","areaId","moveLeft","applyProviderViewOptionsAsync","isDefaultViewValid","LatLngBounds","newMapEntity","webMapNotificationFilterRequest","markerToUpdate","updateMapObjectsFromIds","itemsToDownload","fullObjects","divideMapObjectToAddAndRemove","mapObjectsToAdd","mapObjectsToRemove","layerTypes","includedType","layer2","insertAllMapObjectTypes","insertMapObjectTypes","displayType","HeaderStart","HeaderEnd","fieldKey","DataStart","DataEnd","newObj","Byte","Double","Guid","OptionalGuid","Int","Long","dataString","mapObjectResult","mapObjectsWithCustomIcons","customIconEntries","mapObjectWithCustomIcon","visibilityState","mapObjectType","originalEvent","mapContext","geoLocalised","latlng","alt","ShapeType","invalidateSize","reloadProviderAsync","valueWithoutBrackets","SecurityContext","MapState","selectedMap","selectedMapObject","StateMapService","resourcseService","setStateSelectedMap","setStateSelectedMapObject","setStateViewArea","setSelectedMap","setSelectedMapObject","MapsSideContextDataState","MapsSideContextDataService","MapsSidePaneComponent","mapService","miniMapTransitionDuration","componentRefSymbol","MapPopupService","pluginsService","showPopupOptions","compactPlugins","getOrCreatePopup","expandOnHover","openPopupWithNewContent","getMapPopupComponent","isPopupWithComponentRef","getComponentRefFromPopup","updateColor","webMapPopup","createWebMapPopup","bindPopup","contentComponentRef","Popup","autoClose","closeOnClick","togglePopupOnClick","autoPan","reopenWhenSourceUnclusters","setComponentReferenceToPopup","KnownContentContext","Dashboards","Navigation","Reports","Commmands","KnownFeatures","accessControlId","alarmsId","licensePlateManagementId","mapsId","videoId","UpdateFeatureFlagsCacheAction","FeatureFlagsState","knownFeatureFlags","FeatureFlagsState_1","knownFeatureFlagGroups","createSelector","cachedFlag","featureFlags","logFeatureFlagNotFound","featureFlagGroup","evaluatedGroup","propertyKey","flat","allFeatureFlags","registeredOnce","ngxsOnInit","MapEntryParams","MapSearchInputItem","MapsTaskComponent","currentMapId","route","mapPopupService","bottomContextDataService","iconService","SpinnerSize","mapSelectionBrowserFilter","initialMapLoadItemsDone","mapUnavailableReason","clickPositionX","clickPositionY","isSelectLayerOpen","isSelectMapOpen","contextMenuLinks","hoverTimeouts","initialLoadDone","wasMapEntityBrowserRefreshed","keepViewWhenChangingMap","floorSwitched","isCtrlKeyPressed","isSearchingSubject","isLoadingContextMenuSubject","layersAsListItemsSubject","minimapTooltipSubject","minimizeMiniMapTooltip","restoreMiniMapTooltip","defaultMapBounds","onMapSearch","applyLayersSelection","selectedLayers$","selectedLayers","isSearching$","isLoadingContextMenu$","layersAsListItems$","minimapTooltip$","handleKeyDownEvent","handleKeyUpEvent","mapTrayPlugins$","toggleMiniMapButton$","minimized","sideContextCurrentContent$","setCenterViewPaddingBottomRight","MapsTaskComponent_1","mapEntryParams","extractMapEntryParamsFromQueryParams","processLocationFromRoute","oldParentAreaId","setCurrentMap","setupFloors","stateSelectedMap","clearSideContextContent","subscribeMapService","canSelectMap","onMapSelected","currentMapAreaId","currentMapAreaCustomIconId","updateEntityBrowserSelectedId","navigateToMapAsync","mapSelectionBrowser","toggleLayerSelection","mapLayersBrowser","toggleMapSelectionAsync","needRefresh","entityBrowserSelectedId","mapEntityBrowser","onMapSearchResultSelected","itemSelected","onZoomIn","onZoomOut","zoomOut","defaultViewToLatLngBounds","onMapControlWidthChange","updateMiniMapPosition","onMouseDown","linkContextMenu","onLinkClick","clickedItem","navigateToLink","requestMapChange","clearMapFloorInfo","stateSelectedMap$","stateViewArea","onMapObjectSelected","onMapObjectUnselected","onMapTypesLoaded","onMapLoaded","onEventAdded","onEventRemoved","onMapUnavailable","updateSidePaneWithContent","clearSidePaneWithContent","sameBuilding","selectedMapId","insertAllMapObjects","setLayerFilters","viewLat","viewLng","notificationFilter","highlightColor","updateSidePane","activeContent","setSideContextMainContent","linkId","navigationLink","viewSupportsNavigation","viewType","viewTypeId","supportNavigationTypes","displayPopupAsync","floorQueryResult","newFloorInfo","queryParentId","getFloorInfoData","selectedMapObjectId","appMapControls","setupPresets","presetViews","currentMap","setupPresetsPromise","setupFloorsPromise","zoomOnSelectedMapObject","stateSelectedMapObject","nw","getNorthWest","se","getSouthEast","searchResult","lealfetMap","viewId","links","viewData","layerPoint","containerPoint","getContainer","displayLinksContextMenu","contextMenuLinks$","getContextMenuFromLinks","ActivatedRoute","MapContentTypes","MapsWidgetComponent","onOpenMap","contextService","distinct","fitMoViews","idArray","MapsWidgetComponent_1","isEntityCommandContext","arePrivilegesGrantedAsync","requiredPrivileges","privilegesToCheck","granted","checkedEntity","requiredPrivilege","CommandProviderBase","descriptors","commandDescriptors","languageService","isUserAdmin","areCommandsRegistered","subscribeCommands","areCommandContentRequirementsMet","supportedContentTypes","contentType","areCommandRequirementsMetAsync","commandArgs","extractRequirements","extractArgs","createCommand","commandDescriptor","nameResourceId","tooltipResourceId","groupNameResourceId","sectionNameResourceId","isEntity","specificData","descritor","req","fillCommandRequirements","userInfo","invalidateCommandCanExecute","invalidateCommandDisplay","safeCanExecuteCommand","canExecuteCommandFunction","safeCanExecuteCommandAsync","safeExecuteCommand","executeCommandFunction","safeGetCommandDisplay","getCommandDisplayFunction","safeGetCommandDisplayAsync","safeIsCommandAvailable","isCommandAvailableFunction","safeIsCommandAvailableAsync","setCommandCanExecute","fillCommandBindings","EntityCommandProviderBase","areContentRequirementsMet","extractEntityAsync","requiredFields","areFieldsDownloaded","fieldSetToString","prefetchPrivileges","safeCanExecuteEntityCommand","safeCanExecuteEntityCommandAsync","safeExecuteEntityCommand","safeGetEntityCommandDisplay","safeGetEntityCommandDisplayAsync","safeIsEntityCommandAvailable","safeIsEntityCommandAvailableAsync","updateEntityAsync","MapCommandsProvider","internalCommandDescriptors","isToggleMiniMapCommandAvailableAsync","isShowMiniMapCommandAvailable","toggleMiniMap","getShowMiniMapDisplay","getMiniMapState","MiniMapStateEnum","MapsModule","_mapCommandsProvider","TranslateModule","ActionType","ForwardAlarm","PlaySound","CorrelationSendDatums","ActionsService","registerHandler","unregisterHandler","ex","ExportStatus2","VideoExportProgressEvent","statusString","UnknownError","exportId","VideoExportCompletedEvent","VideoClient","downloadExportedVideo","mediaGatewayRoleId","mediaGatewayServerId","filename","processDownloadExportedVideo","contentDisposition","fileNameMatch","exportVideo","processExportVideo","VideoExportSession","ModelStateEntry","result404","resultData404","result500","resultData500","getThumbnails","processGetThumbnails","ThumbnailResponse","processGetThumbnail","processSupportedCommands","ExportRequest","alwaysZip","signalRConnectionId","timeRange","SerializableDateTimeSpan","secondUser","UserCredentials","ExportG64Request","ExportG64XRequest","ExportMp4Request","ExportAsfRequest","excludeAudio","includeDateTime","ModelError","rawValue","attemptedValue","validationState","isContainerNode","ModelStateNode","childNodes","subKey","StringSegment","hasValue","ThumbnailRequest","highPrecision","disableCachedResults","ThumbnailTimeStampRequest","ThumbnailRangeRequest","VideoExportInstance","service","videoClient","statusColor","closeTooltip","hasInsufficientPrivilege","downloadProgressReceived","downloadProgressReceived$","isError","isCancelled","exportModel","NoVideoError","EncryptedError","CodecNotSupportedError","CameraNotFoundError","TooManyConnectionsError","InsufficientPrivilegeError","Cancelled","TooManyConcurrentRequestsError","RequestIsThrottled","LegacyExportWithEncryptionNotSupported","onDestroy","force","lastEvent","yes","showMessage","setupCallbackOnRestConnection","onEvent","exportSession","flavorCustomColor","setError","onExportCompleted","convertErrorToString","VideoExportService","callbackSub","statusMessage","titleMessage","buildVideoExportRequest","exportRequest","modelValue","range","export2Model","supportsEncryption","encrypt","exportAudio","credentialModel","exportAsync","downloadProgressPromise","exportStatus","ExportVideoTrayComponent","videoExportService","instanceCount","showExportingVideos","exportPopup","onButtonRemoveClick","ExportVideoTrayComponent_1","ShowMessageAction","ShowMessageComponent","activeMessage","actionText","timerText","countdown","closedHandler","hasTimedOut","cancelText","forceClose","genModalAction","modalAction","stopTimer","Timeout","Ok","Cancel","countdownTimer","onTimerCountdown","updateTimerText","TileBoundary","startColumn","startRow","endColumn","endRow","TileItem","clearing$","clearingSubject","boundary","isSelected","isFullscreen","isDraggingOver","TilePatternDefinition","singleTile","columnDefinitions","rowDefinitions","gridCellDefinitions","colSpans","spans","topLeftPosisions","getTopLeftPositions","tileId","cols","colsDef","sanitizeSpacingDefinitions","rowsDef","getGridCellDefinitions","definition","matches","m","cellMapping","topLeftLocations","colSpan","rowSpan","colCount","j","span","startCol","topLeftCellIndex","cell","TilePatternItem","tileCount","patternDefinition","fromDefinition","toDefinition","deserializedObject","getGridTemplateColumns","getGridTemplateRows","createTiles","existingTiles","tiles","cellSpanDef","existingTile","HighlightTilePatternItem","defaultTilePattern","initializeContents","maxTileCount","TileCanvasState","tileHistorySize","allCurrentContents","tilesHistory","initializeTileHistory","returnedContent","isDraft","originalContent","original","previousContent","tileHistory","unshift","contentUpdateId","selectedTile","sourceTileIndex","sourceTileId","destinationTileIndex","destinationTileId","sourceTileContent","getContent","destinationTileContent","trySetContent","swapContents","TileCanvasStateService","contentsChanged$","setContentUpdateIdSubscription","internalContentsChanged$","contentMoved$","contentChanging$","clearTile","clearTiles","moveContent","emitMoveContent","changeContent","contentChange","changesAccepted","handleChangeContentAsync","clearContentUpdateIdSubscription","contentUpdateIdSubscription","emitChangeContent","contentUpdateIdChanged$","selectTile","setTilePattern","TilesTaskEventService","tilePatternChangedSubject","fullscreenChangedSubject","tilePatternChanged$","fullscreenChanged$","publishTilePatternChangedEvent","publishFullscreenChangedEvent","PtzPopupService","tileTaskService","popupTracker","destroyAllPopups","createPtzPopupRef","targetSelector","ptzPopupRef","domElement","extractHTMLPopupFromRef","appendToElement","fullscreenEnabled","embeddedView","rootNode","getPopupState","extractHTMLPopupFromKey","closeAllPopups","openAllPopups","destroyPopup","CarouselService","firstTileId","tilesTaskStateService","getFirstAvailableTileId","displayContent","displayContents","placedContents","availableTileId","TileService","tryUpdateTileContentAsync","dryRun","updateTileContent","tryDisplayEntityInTileAsync","tryUpdateTileSubContentsAsync","pluginsSupported","AccessControlContentTypes","Cardholder","Credential","ZoneContentTypes","VideoContentTypes","TilesOptionsComponent","TileHeaderVisibilityId","TileHeaderStateOptions","TileNumberDisplayPreference","tileHeaderVisibilityDefaultValue","Always","tileHeaderVisibility","TilesOptionsComponent_1","onTileHeaderVisibilityChange","TileStateHeaderComponent","tileNumber","tileState","tileHeaderService","TileHeaderVisibility","TileDetailsVisibility","TileNumberVisibility","onDestroySubject$","hasTileHeaderFeatureFlag","tileDetailsVisibility$","tileHeaderVisible$","Hidden","tileNumberVisibility$","usage","tileHostElement","TileHeaderService","stateSubject","state$","tileDetailsVisibility","Partial","tileDetailsVisibilitySubject","tileNumberDisplayPreference","OnlyWhenHovering","tileNumberVisibilitySubject","readFromAppStorage","Shown","updateCurrentState","TileComponent","activateCommands","deactivateCommands","displayedPlugins","hasAlreadyNavigationInHeader","onEnter","onLeave","supportedEntities","mainContentType","onDisplayedPluginsChanged","verticalStackIndex","resetCommandsAsync","getPluginCommandsAsync","TileCanvasComponent","tileService","tilesCanvasStateService","ptzPopupService","carouselService","gridClass","gridTemplateColumns","gridTemplateRows","activeThreatLevelColor$","contextMenuCommands","dragSourceTile","expandedTile","maximizedFullscreenTile","canExecuteClearAllTiles","fullOverlayEntityTypes","displayEntities","displayEntitiesInternal","displayEntity","elementToBeLoading","getAvailableTile","expandTile","updateGridClass","onFullScreenChange","onPatternChanged","onContentsChanged","contentMove","onContentMoved","selectedTileChanged$","onSelectedTileChanged","onContentChangingAsync","restoreExpandedOrFullscreenTile","doesTileHaveContent","getTile","extractTileId","getExpandTileDisplay","maximizeTileFullscreen","getMaximizeTileFullscreenDisplay","selectPreviousTile","selectNextTile","commandsTile","onDragLeave","onDragOver","getDragTarget","onDrop","dragResult","extractTileDragDropData","applyPattern","onTileDragEnd","onTileDragLeave","onTileDragOver","setDropEffect","Copy","Link","Move","onTileDragStart","serializeContentGroup","closest","onTileDrop","getDropEffect","destinationGuid","sourceGuid","onTileContextMenu","onTileSelected","onTilePreviewClick","onTileDoubleClick","tileLayoutEntity","displayTileLayoutContents","displayEntitiesContents","contentFromEntities","entitiesContentFromTileLayout","tryApplyPatternAndGetEntitiesContent","contentFromTileLayout","getEntitiesContentFromTileLayout","tileLayoutContent","restoreExpandedTile","restoreFullscreenTile","fromTilePattern","refreshCanExecuteClearAllTiles","isThereATileWithContent","isNonEmptyString","parsedNumber","isNumber","restore","maximize","sourceTile","destinationTile","sourceBoundary","destinationBoundary","tileContent","ref","existingPattern","selectedTileId","tileToSelect","shouldHideCurrentContextMenu","classInfo","TilesTaskComponent","entityBrowserContent","tilePatternSelectionModalId","allowChangeTilePattern","isEntityBrowserLoaded","isEntityBrowserPinned","tilePatterns","isEntityBrowserPinnedTag","refreshBrowser","parsed","tileCanvas","canSelectItem","entityTypeIsSupported","onBrowserEntitySelected","entitySelection","onSelectLayoutChange","tilePatternPopup","togglePatternSelectionPopup","toggleEntityBrowser","TilesTaskComponent_1","MailboxEnvelop","isRead","openHandler","MailboxService","envelops","mailboxChanged","supportNotifications","envelop","showNotification","Notification","permission","requestPermission","mails","mail","envObj","mailId","DisplayEntitiesActionHandler","mailboxService","actionEntities","sourceApp","sourceName","getSourceName","onExecute","addToMailbox","mailboxMessage","summary","onClosed","PlaySoundActionHandler","audioService","sound","SendMessageActionHandler","hasTimeout","AboutComponent","scVersion","modulesDisplayed","retrieveVersion","retrieveCopyrights","GenAlertComponent","userGuid","directoryGuid","UserManager","delegatedUserInfoAsync","authentification","executeHotActionAsync","ActionsTrayComponent","baseCommandId","maxShortcut","quickActions","currentUser","hotActions","togglePopupOpen","actionsPopup","executeAction","userManager","Pistacchio","Fragola","ActionsTrayComponent_1","GenInputModel","severity","resetMessage","UserLogin","rememberMe","NonRestrictedConnectionAwareModalComponent","ChangePasswordComponent","genToastService","passwordStrenghClient","isNewPasswordBlurredOrDirty","isConfirmPasswordBlurredOrDirty","confirmedPassword","minCharNum","minLowerCase","minUpperCase","minSpecialChar","minNumericalChar","isInvalidCredentials","isPasswordsMatching","isCharNumMatch","isLowerCaseMatch","isUpperCaseMatch","isSpecialCharMatch","isNumericalCharMatch","isPasswordAccepted","isPasswordEqualToUserName","isOldPasswordEqualToNew","passwordStrengthScore","complexityMessage","progressBarPercent","complexityMessageSeverity","specialRegex","numericalRegex","upperCaseRegex","lowerCaseRegex","passwordConstraintRest","evaluatePasswordStrength","onSave","initializePasswordConstraint","updatePasswordStrength","onOldPassword","oldPasswordInput","verifyPasswordConstraint","onNewPassword","newPasswordInput","onConfirmedPassword","confirmedPasswordInput","onNewPasswordBlurred","onConfirmPasswordBlurred","same","logonResultPasswordConstraint","MinCharacters","MinLowerCharacters","MinUpperCharacters","MinSpecialCharacters","MinNumericalCharacters","getComplexityPasswordInfo","score","ChangePasswordNotificationComponent","openChangePasswordModal","ContextMenuItemSwitcherService","getNextDataSourceWithNewSelection","newSelectionId","trackingDataSource","previousIdx","newSelectionIdx","EntityStateOverlayComponent","relatedContent","switchEntityCallback","entitySwitcherDataSource","entitySwitcherDataSourceSubject","firstEntity","currentEntity","currentEntityText","contextMenuItemSwitcherService","componentGuid","isComponentFullyLoaded","entitySwitcherDataSource$","ReplaySubject","associatedTileItem","entityIcon","isLoadingChangeCallback","toggleEntitySwitcher","caretMenu","tileItem","newSelectedCamera","FilterTypes","Enum","NumericRange","FilterPluginBaseComponent","filterService","lowerCaseFieldName","originalKeyValue","originalKeys","keyIndex","FilterPluginDateComponent","FilterPluginDateComponent_1","fieldsArray","calendarTypeField","calendarType","timeFrameField","timeFrame","FilterPluginEntityComponent","FilterPluginEntityComponent_1","extractTypeSpecificFields","guidStr","FilterPluginEnumComponent","FilterPluginEnumComponent_1","buildFilterContext","loadEnumValues","FilterPluginNumericRangeComponent","FilterPluginNumericRangeComponent_1","FilterPluginTextComponent","FilterPluginTextComponent_1","FilterPluginTreeViewComponent","FilterPluginTreeViewComponent_1","loadOptions","metadata","extractValueFromFieldObjects","includeCustomEvents","loadRootItems","extractArrayFromFieldObjects","MailboxTrayComponent","mailList","mailActions","itemsSelected","removeMail","onMailboxChanged","toggleIsPopupOpen","mailboxPopup","openMail","MailboxTrayComponent_1","MobileUserActionsWidgetComponent","mobileUser","isOnline","lastSeen","loggedUserId","MobileUserActionsWidgetComponent_1","ColumnInfo","indexValue","nameValue","typeValue","GeocodingResult","ToJson","isUnknown","streetNumber","locality","adminstrativeArea2","administrativeArea1","country","postalCode","confidenceScore","displayAddress","GeocodeReportResult","entityLookup","successful","errorSeverity","lastResult","parseSpecificResponse","getColumn","getRows","rowResult","getSafeValue","rowEntry","isNull","geocodingResults","getResults","ins","GeocodeReport","supportStreamedResponse","_supportStreamedResponse","_enableStreamedResponse","_streamedResultDispatcher","excludedExpansionEntities","includedExpansionEntities","onStreamedResultReceived","cultureName","maxResultsCount","addresses","coordinates","boundingBox","MobileUserWidgetComponent","thumbnailPicture","lastPosition","getUserAsync","mobileApplicationId","fetchAddress","fetchThumbnail","retrieveAddressAsync","fileCache","report","coor","MobileUserWidgetComponent_1","DomSanitizer","EventsOptionTreeComponent","eventsSource","keepParentExpanded","EventsOptionTreeService","eventsSubject","filteredEventsSubject","filteredEvents$","initService","getEventsFromDefinitions","saveListeningEventSelection","selectedEvents","flattenAllChildren","idToEventType","treeItemsSelected","eventTypeId","eventTypeToId","sortTreeItems","mergeEvents","eventsToMerge","flatEventsArray","eventsCategory","doSearch","criteria","eventsCopy","filteredEvents","filterEvents","splittedString","parentsToRemove","itemRemove","EventsOptionComponent","eventsTreeService","searchCriteria","availableEventTypes","onSearchCriteriaChange","syncWithRegularEvents","onEnterKeyPress","saveSelectionToLocalStorage","EventsOptionComponent_1","ButtonGamepadEventData","isButtonDown","AnalogicGamepadEventData","velocity","GamepadEventListenerService","onGamepadsConnectedChange$","gamepadsConnectedSubject","onNewGamepadEvents$","gamepadEventsSubject","gamepads","connectedGamepads","deadZoneDefaultValue","currentGamepad","oldGamepadSerialized","buttonsStates","pendingPanTilt","pollingTimer","deadZone","loadInitialData","onGamepadConnected","onGamepadDisconnected","getGamepadState","navigatorGamepads","getNavigatorGamepads","navigatorGamepad","gp","connected","setCurrentGamepadId","gamepad","updateGamepadEventMonitoringState","nav","getGamepads","webkitGetGamepads","startPollingTimer","scanGamepadEvent","JoystickService","pollingTime","stopPollingTimer","activeGamepadId","JoystickLocalConfigIds","ActiveJoystick","JoysticksConfigsList","joystickConfig","joystickId","updateConnectedGamepads","isGamepadConnected","newActiveGamepadId","activeGamepadInputs","getActiveGamepadInputs","buttonEvents","getButtonsInputEvents","analogicEvents","getAxesInputEvents","axes","gamepadEvents","gamepadInputs","btn","pressed","gamepadButtonsEvents","gamepadAxesEvents","JoystickCommandData","JoystickButtonConfig","downCommand","downArgs","upCommand","upArgs","maxButtons","gamepadEventListenerService","debugMode","gamepadEventHandler","onWindowKeyDown","onWindowKeyUp","Buttons","joystickEvent","buttonId","buttonConfig","JoystickSelectionComponent","activeJoystickChanged","joysticksItems","noneItemState","refreshComboboxSelection","joysticks","onActiveJoystickChanged","onCheckboxChanged","onComboboxChanged","activeJoystickId","JoystickOptionsColumn","JoystickOptionsComponent","gamepadService","enableJoystick","joysticksConfig","availableJoysticks","currentJoystick","buttonColumns","buttonRows","buttonActions","hasGamepadConneted","defaultDeadzoneValue","onConnectedGamepadsChanged","onNewGamepadEvents","loadJoystickSettingsFromStorage","columnName","cellType","cellTemplate","coloredLabelOnEventCellRenderer","pin","TableColumnPin","suppressSorting","suppressMovable","DownCommand","actionsDownComboTemplate","DownArgs","actionsDownArgsTemplate","UpCommand","actionsUpComboTemplate","UpArgs","actionsUpArgsTemplate","commandsMap","uiGuid","onActiveJoystickSelectionChanged","updateDeadzoneValue","onDeadZoneModified","onButtonsConfigModified","downId","upId","toggleNumericCommandPopupInfo","numericCommandPopup","conf","htmlTag","joystickLocalSettings","JoystickOptionsComponent_1","TimezoneMode","LanguageTimeOptionsComponent","timezoneMode","selectedTimezoneMode","webAppSelectedLanguage","webAppSelectedTimezone","webAppDisplayTimeZone","webAppUseDeviceTimezone","langs","selectedLanguageId","selectedTimezoneId","selectedTimezone","isTimezoneDisplayed","onSelectedLanguageChanged","onSelectedTimezoneChanged","onDisplayTimezoneChanged","onUseDeviceTimezoneChanged","LanguageTimeOptionsComponent_1","VideoOptionsComponent","selectedProvidersId","selectedProvider","providersSelectedString","providersSelected","VideoOptionsComponent_1","SendFeedbackService","platformService","analyticsGeneralInfo","sendFeedback","getCurrentBrowser","logSendFeedback","EDGE","ANDROID","SAFARI","FIREFOX","IOS","WEBKIT","TRIDENT","BLINK","deepUpdateValueAndValidity","markAllAsTouched","deepUpdateValueAndValidityInternal","control","controls","UntypedFormGroup","UntypedFormArray","updateValueAndValidity","emitEvent","SendFeedbackSuccessComponent","onClose","SendFeedbackComponent","sendFeedbackService","form","UntypedFormControl","Validators","sendFeedbackGenetecEmail","onSubmit","valid","ToastFlavor","handleCancel","setCurrentUserEmail","ProfileComponent","translateServive","optionsModal","isUserImportedFromExternalSystem","hasUserPicture","hasChangePasswordPrivilege","isLoggedInWithOpenId","defaultTechdocsUrl","loadAppInformation","loadUserInformation","onAbout","profilePopup","onHelp","onSendFeedback","onChangePassword","onOptions","onProfile","onSignOut","outputComponentStats","closeProfile","directoryDisplay","userNameDisplay","userPicture","PropertiesWidgetComponent","PropertiesWidgetComponent_1","SendMessageComponent","filterFieldChanged","pluck","notNullOrUndefined","ZoneArmingState","Armed","Disarmed","ZoneState","Trouble","ZoneWidgetBaseComponent","ZoneWidgetBaseComponent_1","stateAddtionnalInfo","zoneSubject","zone$","zoneIsArmed$","zoneStateString$","getTranslatedZoneStateString","initializeZone","updatedZone","ZoneEntityStateComponent","excludedCommands","commandsUsageSubject","commandsUsage$","ZoneEntityStateComponent_1","ZoneActionComponent","initZone","updateZoneState","ZoneActionComponent_1","ZoneEventWidgetComponent","ZoneEventWidgetComponent_1","ZoneEventsWidgetComponent","ZoneEventsWidgetComponent_1","OptionsComponent","activatedRoute","AsidePosition","allOptionPlugins","currentOptionPlugins","subSections","isClosing","onModalDefaultAction","changesSaved","onApplyChanges","onModalAlternativeAction","onCancelChanges","setCategoryDescriptors","onAppear","genAlertComponent","setCategory","desiredCategory","onCategoryChanged","showPlugins","currentCategoryDescriptor","onOptionsAction","nextTab","nextIndex","currentCategory","categories","previousTab","prevIndex","sections","distinctSections","uniq","subSectionID","section","GeneralCommandProvider","isShareEntityAvailable","isSendMessageAvailableAsync","isToggleAddToWatchlistAvailable","entityExecuteCommandData","executeShareEntity","entityCommandContext","executeOpenOptions","safeExecuteCommandData","executeDisplayEntities","executeShowMessage","executeSendMessage","executeToggleAddToWatchlist","getToggleAddToWatchlistDisplay","executeShareEntityAsync","specificEntityId","specificTimestamp","mobileAppEntity","WatchlistCommand","commandArgsToUse","isToggleWatchlistAllowed","translatedDisplayName","specificRecipient","specificMessage","specificTimeout","fullname","GeneralCommands","ArmZone","ZoneCommandProvider","createZoneCommandDescriptor","isArmZoneAvailableAsync","configureArmZoneInvalidateCanExecuteAsync","executeArmZone","canArmZoneAsync","getArmZoneDisplayAsync","extractZoneEntity","validState","zoneEntity","canIOZoneManuallyArmOrDisarmAsync","entity1","LimitToPipe","DEFAULT_TRAIL","trail","WatchlistTrayComponent","missedEvents","maxEventsCount","missedEventsCount","showWatchList","WatchlistTrayComponent_1","KnownCustomHeaderIds","WatchlistCustomHeaderId","WatchlistSidepaneHeaderComponent","monitoredEntities","isMenuOpened","headerTitle","monitoredEntitiesButtonLabel","hasUnreadEvents$","fetchMonitoredEntities","updateHeaderLabels","toggleMenu","enterEditMode","openEventOptions","setMonitoredEntities","monitoredEntitiesQuery","WatchlistSidepaneHeaderComponent_1","ZoneStateComponent","parameterIcon","initializeEntityCache","zoneEntityId","ZoneStateComponent_1","FilterPluginSearchComponent","FilterPluginSearchComponent_1","GeneralModule","references","actionsService","generalCommandProvider","zoneCommandProvider","displayEntitiesHandler","playSoundHandler","sendMessageHandler","PlatformModule","ReactiveFormsModule","GeneralModule_1","CardholderManagementClient","processSearch","ReportResult","processUpdate","result409","resultData409","processAdd","cardholderId","processDelete","ReportDescriptor","getReportDescriptor","processGetReportDescriptor","getExtendedCardholdersInformation","processGetExtendedCardholdersInformation","ReportExtendedSearchResult","CredentialsClient","getCardFormats","processGetCardFormats","CardFormatModel","formatLength","formatType","codeFormatString","formatFieldDefinitions","FormatFieldDefinition","parityChecks","ParityCheck","activation","canEscortVisitors","bypassAntipassback","securityClearance","partition","cardholderGroups","newCredentials","accessRules","facilityCode","FilterDescriptor","DateFilterDescriptor","EntityListFilterDescriptor","EnumFilterDescriptor","NumericRangeFilterDescriptor","SearchFilterDescriptor","TextFilterDescriptor","TreeViewFilterDescriptor","fixed","representation","minRange","maxRange","acceptsRange","parityPosition","parityType","ReportType","ReportTableColumnDescriptor","ReportExtendedSearchRequest","reportDescriptorId","extendedFieldId","reportItems","ReportResultError","ReportTableColumnCommandContextDescriptor","isCommandColumn","isContentRequired","commandContextDescriptor","isSortable","isContentSource","isTimezoneConvert","defaultSortOrder","cellRendererGuid","isExtendedProperty","ReportTableColumnType","SearchRequest","sourceTimeZone","sortBy","ExpirationMode","DontExpire","ExpiredAfterActivation","Expiring","ActivateOn","WhenNotUsed","PartitionManager","getGrantedPrivilegedPartitionsAsync","PrivilegeService","privilegeId","partitionManager","createEntityPrivilege","CardholderPrivileges","cardholderMonitoredFields","CardholderRelationType","CardholderEditService","excludedCardholdersGroupIds","excludedAccessRulesIds","refreshCardholderSubject","refreshCardholder$","fetchRelationEntitiesAsync","relationEntityType","inheritedStates","retrieveRelationInheritanceFromCardholder","toCardholderRelationEntityModel","fetchCardholder","cardholderEntity","toSimpleModel","catchError","handleRequestError","fetchGrantedPrivileges","cardholderGuid","privilegeKey","entityPrivilege","fetchCardholderRelationIdsAsync","getDefaultRelationsEntities","loadCardholders","savedAccessRules","rule","associatedCardholders","defaultRules","isInherited","associatedDefaultRule","commonModel","ClearCardholderEditContextCacheAction","FetchGloballyGrantedPrivilegesAction","CardholderEditContextState","cardholderEditService","privilegeService","CardholderEditContextState_1","isSideBySide","isAddMode","errorMessageId","cardholder$","privileges$","AccessControlTaskComponent","selectSubTaskPlugin","subTaskPlugin","getSubTaskPluginFromRouteAsync","getFirstAvailablePluginAsync","paramMap","subTaskId","AccessControlTaskComponent_1","CardholderWidgetBaseComponent","getCardholderAsync","initializeCardholerInfo","CardholderStateWidgetBaseComponent","displayLastAccess","lastAccessTime","wasLastAccessGranted","updateIsActive","updateLastAccessTime","updateLastAccessLocationAsync","updateWasLastAccessGranted","accessPointId","parentEntity","wasAccessGranted","CardholderActionWidgetComponent","CardholderActionWidgetComponent_1","CardholderCardComponent","isViewCardholdersPrivilegeGranted","onCardholderSelected","entityName","AccessControlCommands","ShuntReader","ShuntReaderDevice","UnlockDoor","OverrideUnlockSchedule","ForgiveAntiPassback","ActivateDeactivateCardholder","ActivateDeactivateCredential","ReportLostCredential","ReportStolenCredential","ReportLostCardholderCredential","ReportStolenCardholderCredential","ExitFullscreen","ActivationModeLabel","ActiveExpirationModeLabel","InactiveExpirationModeLabel","BypassAntipassbackRules","addInvalidControlErrors","invalidControl","invalidControls","innerInvalidControl","innerControl","invalid","LabeledFormControl","FormControl","formState","validatorOrOpts","asyncValidator","isValidDate","dateYear","CardholderHelper","getExpirationModeLabel","cardholderModel","expirationModeLabel","getActivationModeLabel","momentDate","isAfter","getBypassAntipassbackRule","Inherited","Yes","No","activationMode","expirationModeValue","expModeLabel","stringToExpirationModeKey","buildEntityName","invalidRangeError","invalidRange","isStatusFormGroup","firstNameLastNameValidator","firstNameControl","lastNameControl","firstNameErrors","lastNameErrors","setErrors","activationDateValidator","getRawValue","expirationDateValidator","CardholderEditFormGroup","FormGroup","defaultExpirationDuration","identityFormGroup","validators","statusFormGroup","nonNullable","accessRightsFormGroup","rules","advancedFormGroup","bypassAntipassbackRules","isSecurityClearanceInheritedFromGroup","partitions","CardholderDeleteModalComponent","cardholderManagementClient","onDeleteClicked","onDeleteSuccessful","cardholderName","UnsavedChangesModalActions","CardholderCancelModalComponent","Save","onDiscard","Discard","FileReaderService","readAsDataURL","fileReader","CardholderEditablePictureComponent","fileReaderService","isMouseOverCardholderPicture","isPictureEditMenuOpen","isLoadingSubject","isDisabledSubject","imageFileDataSubject","cardholderPictureSubject","onTouch","cardholderPictureSrc$","cardholderPicture","imageFileData","onImageFileSelected","currentTarget","readImageFileAsBase64","pictureData","removePicture","toggleRemovePictureConfirmationModal","toggleMouseOver","isMouseOverPicture","removePictureModal","forwardRef","CardholderEditablePictureComponent_1","_r4","ViewSelectSnapshot","CardholderIdentityFormComponent","formGroup","isPrivilegeGranted","CardholderStatusFormComponent","selectedStatusItem","ActivationMode","ActiveExpirationMode","InactiveExpirationMode","dateTimeFlavor","header3Flavor","subscriptionCollection","createAndTranslateItems","initializeSubscriptions","isExpirationDateOtherThanDontExpire","refreshStatusLayout","valueChanges","newActivationMode","updateActivationMode","newExpirationMode","updateExpirationMode","isDefaultValue","assignNonSelectableComboboxItemIfApplicable","defaultActivationDateMoment","today","activationDateValue","accessStatusValue","resetExpirationDuration","statuses","activationModes","updateExpirationModesItems","activeExpirationModes","inactiveExpirationModes","EntityBrowserRefreshTypes","UnassignedCredentialView","CardholderRelationsSubFormComponent","modalTitle","emptyMessage","showHeader","showDescriptionColumn","showDelete","showAdd","excludedIds","hasRequiredPrivileges","TableDensity","selectedTableRowIdsSubject","entitiesSubject","onCardholderChange","selectedIds","entityBrowserFilterSubject","formReset$","currentCardholderId","updateDisplayedEntities","forbidDelete$","removeEntity","removeAllSelectedRows","selectedTableRowIds","id1","id2","removeNonIncludedEntities","toggleRowSelection","rowId","openAddEntitiesModal","updateEntityBrowserExcludedEntities","alreadySelectedIds","idsToKeep","remainingEntities","CardholderRelationsSubFormComponent_1","attrs","CardholderAccessRightsFormComponent","Colors","CardholderAdvancedFormComponent","disable","onPassbackModeChanged","onClearanceModeChanged","CardholderDetailsPaneComponent","isFormDirty","editService","ButtonType","smartLastAccessString","lastAccessString","meltedIcon","formResetSubject","resetIsAddModeSubject","minDateISOString","resetForm","initializeMoreMenuItemSource","isLastAccessUnknown","onCancelClick","askForCancel","resetCardholderChanges","setEditMode","setCardholderIdAndPicture","markAsPristine","getErrorMessage","cardholderData","formToCardholder","addCardholder","updateCardholder","showDeleteCardholderModal","cardholderSnapshot","showSuccessToast","showErrorToast","markAsDirty","currentInvalidControl","isEntityNameDefaultValue","setAutomaticUpdateEntityName","firstName$","lastName$","displayName$","startWith","newEntityName","getBypassAntipassbackIsInherited","advancedGroup","antipassBackControl","getCalculatedBypassAntipassbackValue","isSecurityClearanceInherited","isSecurityClearanceInheritedControl","month","returnNullIfControlPristine","dateCopy","setDate","addDays","buildExpirationMode","CardholderInfoWidgetComponent","groupNames","CardholderInfoWidgetComponent_1","ContentFields","CardholderPictureWidgetComponent","CardholderPictureWidgetComponent_1","CardholderPreviewWidgetComponent","cardholderFullName","isLoadingPicture","navigateToCardholderAsync","CardholderPreviewWidgetComponent_1","tryParseJson","CardholderCardViewComponent","cardholders","onSelectedChanged","CardholderSubTaskComponent","selectedCardholder","isDetailsPaneOpened","reportColumnDescriptors","reportDescriptor","reportFilters","reportFiltersService","allResults","isBannerShowing","errorText","bannerFlavor","BannerFlavor","hasAddPrivilege","currentPageNumber","reportDataSubject","isCardViewSubject","hasMoreSubject","refreshingSubject","hasMore$","refreshing$","reportData$","isCardView$","reportItemCount$","commandBindings","toggleSideBySide","escapeCommandSubscription","subscribeToRefreshRequests","cardholderEditPaneRef","initializePrivileges","setReportDescriptor","isSideBySide$","cardholderDetailsPaneViewRef","sidePaneViewContainerRef","fullScreenViewContainerRef","refreshCardholders","resetSearch","loadMoreCardholders","searchRequest","CardholderSubTaskComponent_1","modifyFilters","currentSort","searchSubscription","onSearchResultsReceived","setListViewMode","setCardViewMode","askForFormCancelIfDirty","isObject","onAddCardholderButtonClicked","setAddMode","setNewCardholder","onSortChanged","shouldCancel","tableComponent","newData","getReportData","fetchExtendedProperties","showError","removeError","currentRowIndex","extendedProperties","getExtendedProperties","keyColumns","getKeyColumns","newResults","dataKeyColumns","getExtendedSearchQueryParams","extendedInfoResults","extendedFieldValue","extendedColumns","extendedSearchQueryParams","reportData","currentData","reportItem","rowData","buildTableRowForReportItem","isRowDataDuplicate","onReportDescriptionInitialized","filters$","previous","modifiedFilters","getFieldFromReportItem","isDuplicated","existingRowData","reportItemCell","cellValue","isCardView","setFullScreen","CredentialWidgetBaseComponent","credential","getCredentialAsync","initializeCredentialInfo","credentialId","CredentialActionWidgetComponent","changeCredentialStatusAsync","findCredentialAsync","CredentialActionWidgetComponent_1","CredentialInfoWidgetComponent","CredentialInfoWidgetComponent_1","CredentialPreviewWidgetComponent","credentialName","navigateToCredentialAsync","CredentialPreviewWidgetComponent_1","DoorCompactInfoComponent","DoorCompactInfoComponent_1","DoorWidgetBaseComponent","doorSubject","door$","doorIcon$","updatedDoor","DoorActionsWidgetComponent","stateAdditionalInfoStringSubject","isMaintenanceModeActiveStateString$","isOpenedStateString$","isLockedStateString$","stateAdditionalInfoString$","doorEntity","updateAdditionnalInfo","DoorActionsWidgetComponent_1","DoorEventsWidgetComponent","DoorEventsWidgetComponent_1","DoorPreviewWidgetComponent","doorSecondaryText$","getDoorString","navigateToDoorAsync","openedStateString","stateString","DoorPreviewWidgetComponent_1","TemporaryOverrideScheduleOption","OverrideScheduleOption","OverrideScheduleModalComponent","MinimumSecurityCenterVersionForFederatedDoors","hasOverrideSchedule","TemporaryOverride","isOverrideLocking","temporaryOverrideOption","ForNextX","durationTimeStart","durationTimeEnd","rangeTimeStart","rangeTimeEnd","maxDuration","durationError","rangeTimeError","onOverrideScheduleConfirm","Maintenance","override","updateOverrideSchedule","isSaveDisabled","initializeTimeInputs","onDefaultActionClick","onOverrideScheduleSave","onLockOverrideChange","checkDurationError","onRangeTimeStartChange","checkRangeTimeError","onRangeTimeEndChange","onOptionChange","newOption","onTemporaryOverrideOptionChange","isBefore","isSame","DeviceStates","ShuntReaderModalComponent","doorSideAccessPointEntityWithReaders","devicesShuntState","onShuntStateConfirm","initializeDevices","onShuntStateChange","DoorEventWidgetComponent","chContent","DoorEventWidgetComponent_1","ReaderActionsWidgetComponent","readerName","isShunted","isShuntedValue","isShuntedString","ReaderActionsWidgetComponent_1","initializeAccessPointInfo","DoorEntityStateComponent","doorCustomIconState$","DoorEntityStateComponent_1","DoorStateComponent","doorOpened$","doorId$","doorCustomIconId$","DoorStateComponent_1","CardholderCommandProvider","createCardholderCommandDescriptor","isActivateDeactivateAvailableAsync","configureActivateDeactivateInvalidateDisplayAsync","executeActivateDeactivate","getActivateDeactivateDisplayAsync","canReportCredentialLostAsync","extractCardholderEntity","canReportCredentialStolenAsync","changeAccessStatusAsync","configureChangeAccessStatusInvalidateCanExecuteAsync","executeActivateDeactivateAsync","executeReportLostCredential","executeReportStolenCredential","isSameAccessStatus","isReportLostCredentialAvailableAsync","isReportStolenCredentialAvailableAsync","CredentialCommandProvider","createCredentialCommandDescriptor","credentialEntity","extractCredentialEntity","DoorSideAccessPointEntityFields","AccessControlContentFields","DoorCommandProvider","createDoorCommandDescriptor","activityTrailClient","isUnlockDoorAvailableAsync","configureUnlockDoorInvalidateCanExecuteAsync","isOverrideUnlockScheduleAvailableAsync","configureOverrideUnlockScheduleInvalidatesAsync","isShuntReaderAvailableAsync","configureShuntReaderInvalidateCanExecuteAsync","isForgiveAntiPassbackAvailableAsync","executeUnlockDoor","canUnlockAsync","executeOverrideUnlockSchedule","getOverrideUnlockScheduleDisplay","executeShuntReaderAsync","canShuntReaderAsync","executeForgiveAntiPassback","cancelOverrideScheduleAsync","extractDoorEntity","doorentity","forgiveAntiPassbackAsync","executeOverrideUnlockScheduleAsync","isDoorUnlockOverrideActiveAsync","isDoorInMaintenanceMode","overrideUnlockScheduleAsync","getShuntReadersAsync","unlockDoorAsync","eventContent","forgiveEntry","isShuntReaderDefinedAsync","canUnlockForMaintenance","ReaderCommandProvider","isShuntCommandAvailable","configureShuntReaderInvalidateDisplayAsync","executeShuntReader","getShuntDisplay","accessPointEntity","extractAccessPointEntity","currentShuntState","AccessControlModule","doorCommandProvider","cardholderCommandProvider","credentialCommandProvider","readerCommandProvider","InfiniteScrollModule","AccessControlModule_1","AlarmContentTypes","AlarmList","AlarmStates","Acked","SourceConditionInvestigating","AcknowledgeRequired","RefreshAlarmsEvent","AlarmInstance","instanceID","alarmId","alarmName","triggerTime","ackTime","externalInstanceID","offlinePeriod","triggerEventSubType","investigatedTime","hasSourceCondition","AlarmAcknowledgeAction","alternate","AlarmCountResult","AlarmResult","alarmInstances","AlarmsController","acknowledgeAsync","getActiveInstancesCountAsync","forceAcknowledgeAllAsync","forwardAsync","getInstancesAsync","maxCount","investigateAsync","AlarmsService","alarmEventReceivedSubject$","activeAlarmCountUpdatedSubject$","defaultMaxAlarmsCount","strictMaxAlarmsCount","initialActiveAlarmsCountFetched","alarmEventReceived$","activeAlarmCountUpdated$","onAlarmTrayEventReceived","refreshActiveAlarmsCountAsync","alarmAction","getAlarmStateString","getListMaxCount","setActiveAlarmCount","alarmCountResult","AlarmsTrayComponent","alarmsService","instanceCount$","showMonitoredAlarms","alarmListRequest","AlarmsTrayComponent_1","ContextMenuFactory","currentMenu","buildMenu","showMenuAsync","genMenuRef","GenMenu","isCoords","positionX","positionY","AlarmsContextWidgetComponent","alarmService","contextMenuFactory","ContextMenuPosition","alarmItems","isAlarmActionsOpen","actionTarget","isAdminUser","alarmActionsSubject","alarmActions$","onAlarmContextEventReceived","refreshAlarmInstances","getAlarmIcon","alarmItem","investigating","onOptionsClicked","alarmActions","loadAlarmActions","onAlarmInfoRequested","contentRequest","alarmResult","instances","sortedInstances","removeWhere","sortedItem","entityData","descriptionText","hasMoreMenu","hasAlarmMoreMenuAsync","getAlarmEntityWithProcedureFieldsAsync","alarmFields","alarmEntity","hasAcknowledgeAlarmsPrivilege","hasProcedure","buildAckAction","alarmEvent","alarmIndex","AlarmsContextWidgetComponent_1","AlarmEventCompactWidgetComponent","alarmContent","AlarmEventCompactWidgetComponent_1","AlarmEventExpandWidgetComponent","onAckAlarmClicked","AlarmEventExpandWidgetComponent_1","AlarmContentFields","AlarmInstanceId","AlarmProcedure","IsUserRecipient","ActiveAlarmCount","InvestigatedTime","Priority","InvestigatedBy","AlarmInstanceWidgetBaseComponent","alarmStateString","eventArgs","tryGetAlarmInstanceInfo","setAlarmState","onAlarmAcknowledged","onAlarmInvestigating","AlarmActionsWidgetComponent","recipientInfo","instanceCountString","isRecipient","isEventContent","AlarmActionsWidgetComponent_1","AlarmInstanceInfoWidgetComponent","updateInvestigationInfoAsync","investigationTime","AlarmInstanceInfoWidgetComponent_1","AlarmCommands","AcknowledgeAlarm","AlternateAcknowledgeAlarm","ForceAcknowledgeAlarm","InvestigateAlarm","TriggerAlarm","ShowAlarmProcedure","AckType","AlarmCommandProvider","ackAlarmRequirements","createAlarmCommandDescriptor","isAckAvailableAsync","isForceAckAvailableAsync","configureAckAlarmInvalidateCanExecute","isTriggerAvailableAsync","isShowProcedureAvailableAsync","executeAck","canAck","executeNack","executeForceAck","executeInvestigate","canInvestigate","executeTrigger","executeShowProcedure","ackAlarmAsync","ackType","alarmInstanceInfo","extractAlarmInstanceInfo","Force","Nack","alarmInfo","alarmInstanceId","updateAlarmInstanceContentState","invalidateAckRelatedCommandsCanExecute","notification","Ack","executeShowProcedureAsync","extractAlarmProcedureAsync","alarm","AlarmsModule","_alarmCommandHandlersService","clearanceOptions","ClearanceFeatures","clearanceFeature","ClearanceOptionsComponent","currentSettings","clearanceSettings","settingsUpdated","ClearanceOptionsComponent_1","ClearanceClient","pushVideoEvidenceToClearance","processPushVideoEvidenceToClearance","result401","resultData401","result412","resultData412","ClearanceModule","CorrelationClient","listDataTypes","processListDataTypes","DataTypeDisplayModel","getRegistrations","processGetRegistrations","LightDataSourceRegistration","processQuery","CorrelationQueryResult","loadExtendedImages","processLoadExtendedImages","LightCorrelationExtendedFieldResult","computeAggregation","processComputeAggregation","AggregationChartable","DataIngestionClient","listIngestionTypes","processListIngestionTypes","IngestionType","getSchema","datatype","processGetSchema","DataSchema","getRecord","processGetRecord","DataRow","addRecord","processAddRecord","updateRecord","processUpdateRecord","deleteRecord","processDeleteRecord","GroupAggregationResult","formattedName","AggregationFieldType","AggregationGrouping","AggregationQueryFilter","dataTypes","aggregationType","aggregationFieldType","customAggregationField","aggregationGroup","customAggregationGroup","centerPoint","referenceTimeUtc","timeWindow","additionalParameters","LightCorrelationSearchParameter","AggregationType","CorrelationQueryArguments","locationFilter","LocationFilter","CorrelationQueryResultItem","hasThumbnailImage","sourceRoleName","dataTypeName","reportColor","gelatoIcon","CorrelationQueryResultItemField","otherFields","geofenceAreaId","isEventDriven","timeField","locationFields","FieldTypeSpecification","DatumKey","sourceRole","DisplayCategory","ErrorSeverity","ExtendedSearchParameterType","FieldType","sumOrValue","roleGuid","roleName","datumKey","LightCorrelationReportColumn","renderType","isExtended","comparison","LightCorrelationSupportedSearchParameter","supportedComparison","minimum","maximum","minDate","maxDate","supportedSearchParameters","supportsTemporalSearch","supportsSpatialSearch","intersection","wkt","includedAreas","excludedAreas","whereMode","ParameterComparison","WhereMode","CorrelationFeatures","investigationTaskFeature","ingestDataFeature","mobileUserDatumFeatureId","datumSidepaneFeatureId","aggregationWidgetFeatureId","IngestionFieldType","IngestionService","ingestionApiController","getIngestionTypeCache","ingestionTypes","listTypes","constructIngestionCache","addData","updateData","deleteData","feat","parseBase64FileAsync","onloadend","readAsBinaryString","IngestDataModalComponent","ingestionService","selectedRoleGuid","selectedSchema","selectedTypeItem","advanced","cannotSave","isUpdate","previousRecord","setPreviousRecord","updateSchemaChanges","clearPreviousRecord","fieldType","Base64Binary","LargeString","File","Integer","Boolean","DateTime","getFormattedValue","toNumber","getInstance","saved","record","fileList","onSelectedTypeChanged","typeGuid","toggleAdvancedSection","regenerateId","CorrelationContentTypes","datum","visualModel","specialCaseDatums","CorrelationDatumMapWidgetComponent","CorrelationDatumMapWidgetComponent_1","CorrelationDataSourcesRefreshedEvent","CorrelationService","correlationClient","getDataTypes","buildCaches","safeGuid","allRegistrations","reg","loadFirstImages","hasCorrelationFeaturesEnabled","flushCaches","invalidateCaches","dt","UnifiedReportFeatureFlags","UnifiedReportGenTable","MultiSelectWhatFilterFeatureFlag","RecordFusionFeatureFlags","CorrelationDatumSidepaneWidgetComponent","datumTableRows","selBox","execCommand","directive","onDirectiveChanged","copyToClipboard","CorrelationDatumSidepaneWidgetComponent_1","copyMessage","onImageOpened","DisplayText","allText","dataTypeString","special","CorrelationSearchParameter","FieldName","ValueType","isMultiselect","Comparison","In","NotIn","DisplayName","Bool","Categorical","GreaterThan","GreaterThanOrEqualTo","LessThan","LessThanOrEqualTo","NotEqual","Like","Regex","parameter","localizeComparison","getDisplayTextFromComparison","cat","setDisplayText","setDisplayTextAuto","resetValue","setValueString","arr","local","Region","toLightParameter","OneOrManyComboboxComponent","privateOptions","visibleOptions","privateMultiSelect","onMultiSelectChanged","genShowClearButton","showClearButton","valuesChanged","ItemDensity","comboboxId","selectedText","ensureIdGenerated","genPlaceholder","newSearchText","searchBackspace","selectItem","closeDropdown","opt","setSelectedText","onItemCheckChanged","onItemCheckClicked","openDropdown","toggleDropdown","searchInputClick","CorrelationParametersModalComponent","parameterValue","theValue","selectedLightSupportedParameter","defaultRangeParameter","selectedSupportedParameter","supportedParameters","correlationService","querying","allSupportedParameters","comparisons","comboValue","comboOptions","entityFilter","registrations","parameter2","density","fid","selectedSupported","setEntityFilterAsync","selectedComparison","setParameterDisplayText","returnResult","limitSupportedParameters","onSelectedSupportedParameterChanged","previousValueType","valueTypeConversionExists","onComparisonChanged","onComboboxValueChanged","newValues","onEntityGuidsChanged","previousType","pselected","isNullOrWhitespace","previouslySelected","ty","custom","FilterDataTypesModel","FilterDataTypesComponent","addParameterAction","editParameterAction","removeParameterAction","addParameterActionExecute","editParameterActionExecute","editParameterActionCanExecute","removeParameterActionExecute","removeParameterActionCanExecute","conditionActions","edit","onParametersChanged","onDataTypesChanged","selectedItemsIds","grp","loadDataTypes","Commands","ingestData","IngestionCommandProvider","createIngestionCommandDescriptor","isIngestAvailableAsync","executeIngestData","safeCommandContext","coord","MobileUserStateSidepaneWidgetComponent","isOnlineValue","isOnlineStateString","userStateString","Datum","online","AdditionalParameters","IsOnline","EntityName","userGuidString","MobileUserStateSidepaneWidgetComponent_1","MobileUserDetailsSidepaneWidgetComponent","lastConnectionTime","lastKnownAddress","emailLink","TimestampUtc","Email","goToUser","MobileUserDetailsSidepaneWidgetComponent_1","SortOrder","ViewMode","InvestigateContext","InvestigateSideContextDataState","InvestigateSideContextDataService","_content","InvestigateDataState","whatFilter","whenFilter","whereFilter","tableBusy","InvestigateDataContext","setWhatFilter","what","setWhenFilter","when","setWhereFilter","setColumns","setTableBusy","RowActionsService","loadedCommandUsages","currentRowDatumKeySubject","expandedCommandUsagesSubject","collapsedCommandUsagesSubject","areRowActionsReadySubject","expandedCommandUsages$","collapsedCommandUsages$","areRowActionsReady$","loadRowActions","sortCommandUsagesByVisibility","setCurrentRowDatumKey","newDatumKey","setMaximumVisibleCommands","maximumVisibleCommands","expandedCommandUsages","collapsedCommandUsages","InvestigateResultsContainerComponent","viewMode","privateViewMode","changeDetector","rowActionsService","loadingMessageChanged","queryingChanged","resultsChanged","infiniteScrollThresholdPx","currentResult","visibleResults$","visibleColumns","isMultiDataType","cachedIcons","hasMoreResults","scrollBatchSize","currentHoveredRowDatumKey","downloadMapObjects","currentMapObjects","allMapObjects","defaultColumnSorting","sortingType","columnFieldKey","defaultMaximumRowActions","isLoadRowActionsDebouncingSubject","loadRowActionsDebouncer","columnSorting","isLoadRowActionsDebouncing$","columns$","handleColumnsChanged","tableBusy$","setResults","sortResults","visibleResults","newVisibleResults","loadImagesAsync","fetchData","onSortClick","showPopup","popupElement","rowClicked","reportResult","extractResultGelatoIcon","hasThumbnail","extractResultImageIndex","mmtTime","clipboard","writeText","toastMessage","onMouseEnterRow","onMouseLeaveRow","clientCachedData","fulfilled","imageResult","tryInitializeMap","loadMapObjectsAsync","SortingOrder","sortingMethod","latLngBounds","sortingColumn","sortOptions","numeric","ignorePunctuation","sortedResults","columnToSort","changeDetection","commonInvestigateColumns","colIndex","displayed","sortAscending","obj1","obj2","SelectInvestigateColumnsComponent","selectedDataTypes","modalId","TreeFlavor","excludedColumnTypes","SoundPlayer","WebView","Geocode","Barcode","EntityIcon","handleApply","updateStateWithSpinner","logSelectedColumns","restoreFromState","whatFilter$","prev","curr","initializeColumns","onItemChecked","setColumnDisplayed","colKey","columnVis","updateTreeItemsIsChecked","generateColKey","allDataTypes","colIndexSart","dataTypeTreeViewRoot","colDesc","tree","colVis","colEntry","updateColumns","columnsPerDataType","columnVisibility","dataTypeColumns","columnType","selectedColumnsByDataType","InvestigateFilterBaseComponent","privateValue","filterToggle","dataSubscription","onUserInteracted","setupSubscription","silentSetValue","ImageNameToggleButtonComponent","isCheckedChanged","toggleButtonClick","InvestigateWhatFilterComponent","AnythingDataTypeId","tilesView","visibleDataTypes","dataTypesListItems","dataTypeDisplayModel","hasMultiSelectFeatureFlag","onDataTypeChanged","uncheckAllItemsExcept","onReportSelectedFromCard","setSelectionStatus","filterStatus","InvestigateWhatFilterComponent_1","checkAllItems","setAnythingDataType","anythingDataType","dataTypeItem","dataTypeResults","createAnythingDataType","anythingModel","DurationUnit","LastPeriodPreset","durationUnit","DateTimePeriodValidationState","InvestigateWhenFilterComponent","toStringFormat","MaxDurationValue","MinDurationValue","specificDateTimePeriodValidationState","Valid","lastPeriodFilters","durationUnitsComboboxItems","lastPeriodDuration","loadLastXFilters","updateFilterState","silent","onDurationValueChange","toEndOfMinute","onDurationUnitComboboxChange","durationUnitItem","durationUnitLabel","setDuringLastX","currentPeriod","currentLastPeriod","whenFilter$","selectedDurationUnit","updateFilterStatus","setFilterDefaultValue","isPeriodValid","validateTimePeriod","lastPeriod","dateTimeEnd","setSeconds","dateTimeStart","InvalidRange","InvestigateWhereFilterComponent","Anywhere","displayableEntityTypes","whereEntityBrowser","onCheckedEntitiesChanged","areaSelection","onAreaGuidChanged","onAnywhereClicked","onLogicalClicked","Logical","whereFilter$","InvestigateSidePaneComponent","InvestigateTaskComponent","maxResultCount","notificationService","isSplashSreenOpen","Grid","Ascending","defaultNumberOfResultsToDisplayInView","lastQueriedResults","maxNumberOfResultsToDisplayInView","getMaxUnifiedReportRows","whatFilterDescription$","whenFilterDescription$","whereFilterDescription$","isWhenFilterValid$","dataTypeId","openReport","displayLastGeneratedReport","onItemSelected","investigate","Report","logInvestigateEvent","executeQueryAsync","buildQueryArguments","displayReportError","len","numResults","setReportResults","showNoResults","subtext","toggleWhatFilter","whatPopup","toggleWhenFilter","whenPopup","toggleWhereFilter","wherePopup","onSelectionChanged","onQueryingChanged","showColumnSelector","selectColumnsComponent","getDataTypeDescription","requestedDataType","dataTypeDescription","investigateContext","whatFilterAnalyticsDescription","getSelectedDataTypesName","filterMap","whatFilterDataTypes","dataTypeModel","wFilter","Refresh","computeTimeFilter","InvestigateTaskComponent_1","toasted","resultsContainerComponent","contentSourceData","InvestigateResultsEventTimelineComponent","privateResults","sortByTimeDesc","dataStartTime","dataEndTime","privateTime","debouncedChanges","currentBinCount","currentBin","timeRangeChanged","binSelected","currentBins","selectedBin","o_radius","o_stroke","tl","tr","br","bl","nbins","startDate","endDate","bins","binWidth","halfWidth","filterTime","widthMs","loopStartX","loopEndX","histogram","hist","bin","fractionalDraw","posEndPercent","histPadding","showDays","currentbin","centerMs","WheelEvent","onRequery","BreadcrumbsComponent","breadcrumbs","crumbs","getVisibleBreadcrumbs","theCache","leftCrumbs","rightCrumbs","hasBreadcrumbOverflowLeft","overflowLeft","hasBreadcrumbOverflowRight","overflowRight","moreDataIcon","crumbSelected","refreshView","hasTooltip","truncation","isNullOrUndefined","levelLimit","getSelectedIndex","lOrR","depth","nbLeft","nbRight","nleft","nright","nbOfBreadcrumbsExceptRootToShow","nb","showRoot","hasIcon","truncate","itemName","clickItem","home","AggregationWidgetSettingsModalComponent","aggregationTypes","aggregationGroups","aggregationField","aggregationFields","AggregationWidgetSettingsModalComponent_1","setupLocalizations","agg","onAggregationTypeChanged","onAggregationGroupChanged","onAggregationCustomGroupChanged","onAggregationFieldChanged","onAggregationCustomFieldChanged","setSelectedDataTypes","csp","ofLightParameter","pushParameter","theItem","getId","AggregationDashboardWidgetComponent","knownChartingTypes","excludedAggregationDrillDownOptions","drillNoFurther","Month","Day","Hour","Minute","currentFilterPointer","baseFilter","chartType","selectedChartType","ContextMenuSize","chartOptions","responsive","activeElements","onElementClick","chartLegend","chartPlugins","chartLabels","chartData","chartColors","shuffle","chartTypes","contextMenuPositionX","contextMenuPositionY","contextMenuItemsSource","contextMenuOpened","localPopupTarget","Average","DataType","crumb","AggregationDashboardWidgetComponent_1","getChartingIcon","chart","onSettingsClick","onOpenReport","filterDataService","regionFilter","Physical","onSelectedChartTypeChanged","breadcrumbClicked","breadcrumbsComponent","_index","originalData","grouping","itm","SourceRole","drillDownClicked","currentGrouping","groupingValue","getValidRegistrations","registration","distinctBy","customGrouping","removeAfter","breadcrumb","computeNewOptions","setData","maxP20","minM20","ceil","Chart","selectedGroup","getFirstValueTypeForFieldName","customGroup","regs","formatValueFromGroupingType","oldOptions","aggregationResult","displayAndValue","breadcrumbDisplay","regName","Year","utcTime","day","hour","CorrelationFilterTypes","DataTypes","FilterPluginDataTypesComponent","FilterPluginDataTypesComponent_1","CorrelationModule","ingestionCommandProvider","ChartsModule","IncidentLocation","isSet","isGeoCoordinated","Header","messageid","correlationid","antecedentid","IncidentEvent","processTimeUtc","instigatorId","isEventForSort","sortParameter","isState","IncidentEventType","StateChanged","isPriority","PriorityChanged","isLocation","LocationChanged","LocationCleared","isName","IncidentTypeChanged","DescriptionChangedEvent","RecipientAlteredEvent","addedRecipients","removedRecipients","alterationType","recipientsMode","StateChangedEvent","stateId","PriorityChangedEvent","priorityId","IncidentCreatedEvent","LocationChangedEvent","entityid","TypeChangedEvent","incidentTypeId","ProcedureStepAnsweredEvent","comment","stepId","nextStepId","optionId","ProcedureStepActionType","OwnershipChangedEvent","CommentAddedEvent","commentId","CommentDeletedEvent","CommentChangedEvent","LinkedEvent","linkedIncidentIds","UnlinkedEvent","unlinkedIncidentIds","DisabledStatesChangedEvent","disabledStates","NoteAddedEvent","payloadFormat","ExternalEventAggregatedEvent","publicType","publicTypeName","locationEntity","triggeringEntity","raiseTimeUTC","LocationClearedEvent","ExternalIdChangedEvent","externalId","IncidentEventTypeValues","KeepAlive","RecipientsAltered","Created","Linked","Unlinked","CommentAdded","CommentChanged","CommentDeleted","DescriptionChanged","ExternalIdChanged","OwnershipChanged","NoteAdded","ProcedureStepAnswered","ExternalEventAggregated","DisabledStatesChanged","objectToLower","lowerCasedObject","eventFactory","incidentEvent","ie","incidentid","processtimeutc","instigatorid","commentid","disabledstates","linkedincidentids","unlinkedincidentids","stateid","publictype","publictypename","locationentity","triggeringentity","sourceentity","displaytext","payloadformat","addedrecipients","removedrecipients","alterationtype","recipientsmode","parentid","priorityid","externalid","incidenttypeid","procedurestepactiontype","actiontype","stepid","nextstepid","optionid","AlterationType","RecipientsMode","McClientError","isRetryable","isRetryableError","ServiceState","subMessage","StateEnum","ErrorRetrying","ErrorUnrecoverable","retryWithConstantTime","operationName","attempts","retryAttempt","StateGuids","McModuleHealthEvent","McClientSseError","McEventReceiverService","_state$","Unintialized","_events$","getIncidentEvents","isSupportedEventType","incidentEventType","throwError","bufferTime","share","_scClient","mcEvent","theEvent","serviceState","fromError","Name","ExecuteRequest","RoleManager","executeApiRequestAsync","WebApiResponse","McClientResponseError","requestUrl","httpMethod","createErrorMessage","getSubMessageKey","getDetailsFromResponseBody","toLogMessage","HttpMethod","McCustomHttpStatusCode","LicenseInvalid","McClientNotConnectedError","INCIDENT_MANAGER_GUID","McClient","_logger","searchParams","fetchAll","URLSearchParams","urlWithQuery","buildAndExecuteRequestWithType","isSuccess","post","isServerError","Exception","statusCodeRegexExp","errorCodeRegexMatch","actualErrorCode","totalResultCount","allElements","currentOffset","TotalResultsCount","Results","DEFAULT_STATES","IN_PROGRESS","NEW","PARKED","SOLVED","StateService","_mcClient","_refresh$","_stopObs$","obs$","fetchStates$","retryWhen","publishReplay","connect","_states$","getStates$","getStates","stateIds","getActiveStates$","states","CLOSED","getActiveStates","getActiveStatesIds","getState$","Comment","createdBy","lastModifiedTime","commentApi","CreatedBy","LastModifiedTime","MCIncident","typeRevision","displayId","ownerId","triggerTimeUtc","iconId","soundId","currentStepId","procedureId","procedureRevision","activeComments","locationAreaIds","subIncidentIds","incident","TypeId","TypeRevision","Description","DisplayId","ExternalId","RecipientIds","StateId","PriorityId","OwnerId","TriggerTimeUtc","Latitude","Longitude","IconId","ParentId","ArgbColor","SoundId","CurrentStepId","ProcedureId","ProcedureRevision","ActiveComments","LinkedIncidentIds","LocationAreaIds","SourceIds","SubIncidentIds","with","StateTranstition","PossibleStateTransitionList","totalResultsCount","nextState","stateTransition","NextState","Step","instructions","isSkippable","isCommentRequired","isFirstStep","step","Instructions","Options","IsSkippable","IsCommentRequired","IsFirstStep","isRoot","incidentEvents","forwardSteps","Resume","SystemComplete","stepAnsweredEvents","iie","stepAnsweredEvent","expandPropertyNames","IncidentApiService","_stateService","getIncident","getPossibleStateTransitions","getIncidents","sorting","createStateFilter","priorityIds","incidentTypeIds","dateTimeFrom","dateTimeTo","locationIds","ownerIds","incidents","getCurrentProcedureStep","IncidentHandler","stateChange","priorityChange","locationChange","linkIncidents","unlinkIncidents","descriptionChange","externalIdChange","currentStepChange","ownerChange","clearLocation","incidentTypeChange","newIncident","recipientChange","IncidentFilter","asURLSearchParams","IncidentSorting","orientation","IncidentPipelineParameter","IncidentService","_eventReceiver","_incidentStateService","_loggerService","_incidentApiService","_currentOffset","_pipeline$","_totalIncidents$","createServiceStateObservables","resetIncidentsPipeline","ipp","fetchIncidents","_fetchIncidentsOperationState$","incidentParameter","handleIncidentEvent","_serviceState$","totalIncidents$","applyFilter","applySorting","nextPage","isLastPage","previousPage","isFirstPage","getPage","totalIncidents","ss","currentTotalIncidents","calculateOffset","totalCount","pipelineParameter","handleListEvent","pipeline","handleListStateChange","handleListRecipientChange","handlePriorityChange","handleLocationChange","handleDescriptionChange","handleExternalIdChange","handleProcedureStepAnswered","handleOwnershipChange","handleClearLocation","handleListIncidentTypeChange","findEntry","incidentToModify","quarterLimit","LIMIT","handleEventWithFilter","decrementTotalIncident","Dispatch","Forward","Transfer","eventObjectId","actionToModify","filtersAsString","eventObjectIdsAsString","IncidentLocationService","_entityById","_subscription","getLocation","locationId","prefetch","concatAll","observable$","BatchEntitiesObservable","timeToBuffer","_startFetching$","_entitiesObsMap","_entityCache","accumulatedIds$","_subscription$","accumulatedIds","fetching","guidMap","queries","EMPTY","registerEntity","entity$","McUserService","onDestroy$","fetchUserGroup","fetchCurrentUserGroup","userBatchObservable","getUserOrGroup","getUser","isCurrentUserOwner","fetchCurrentUser","userInfo$","userGroup","PriorityService","fetchPriorities","_priorities$","getPriorities$","getPriority","priorities","Resources","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTDELETEDB","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATASERVER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBALREADYEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBNAME","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DSINCOMINGPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLETELNET","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FAILEDCREATEDB","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDDBNAME","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_OVERWRITEDB","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TELNETPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_EDIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_WINDOWS_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_FIRST","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_FOURTH","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_LAST","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_SECOND","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYORDINAL_THIRD","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_FRIDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_MONDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_SATURDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_SUNDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_THURSDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_TUESDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEDNESDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEEKDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DAYSELECTION_WEEKENDDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_APRIL","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_AUGUST","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_DECEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_EVERYMONTH","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_FEBRUARY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JANUARY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JULY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_JUNE","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_MARCH","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_MAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_NOVEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_OCTOBER","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_MONTHS_SEPTEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_PERIODTYPE_ORDINAL","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_PERIODTYPE_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_TIMECOVERAGE_ALLDAY","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_TIMECOVERAGE_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_DAILY_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_FUZZYDAILY_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_COVERAGE_TIMEFRAME_WEEKLY_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ADMINUSER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ADMINUSERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALWAYSCOVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWACCESSPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCOVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWDEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPERSONGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUSER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWUSERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SERVICEUSER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SYSTEMCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_SYSTEMSECTION","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_USERSUSERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_NICKNAME","Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_SERIAL","Genetec_Sentinel_Resources_RE_L_S_STE_DLG_CONNECT_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERSON","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERSONGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SYSTEMCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_USER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_USERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_VER","Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_READY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUDRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATASTORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_DELETEENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_PERSONGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_PERSONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_PERSONGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_PERSONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_HIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HANDSHAKE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIODTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIALPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPBIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMECOVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TREEVIEW_DISPLAYCATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TREEVIEW_TARGETFIELD_GROUPNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_HELP_ABOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_RENAME","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SAVEMODIFIEDCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_ADDR","Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_SAVEMODIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_CANCELLOGON","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOGGEDON","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOGONFAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_IDENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_TEST_WAZZA","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ABOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FIRMWARE_UPGRADE_SELECT_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENTITYTYPEFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TITLE_CAPSLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_CREATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_FIRSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_LASTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PASSWORD_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEPARTMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLIESTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSPECIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACILITYCODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTSPECIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALLPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_SERIAL_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ACCESSPOINTRULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ACCESSPOINTRULES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_PERSON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSONSAFFECTEDBYRULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSGRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSREFUSED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNASSIGNEDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNKNOWNCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGOUT","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ALLOPENRULE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_LOCKDOWNRULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITS","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_GATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_NETMASK","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_USE_DHCP","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_USE_STATIC","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERRESPONSETIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEREQUESTINTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWSECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DOORSIDE_A","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DOORSIDE_B","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_OCCURRENCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ABORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IGNORE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_YES","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUTOCLOSE_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_SECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_SECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_UPGRADE_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ENTITY_HAS_BEEN_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FINISH","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ENTITY_HAS_BEEN_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_MARRIEDCHANNELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_BEFORE","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_BETWEEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_HARDWARE_MODEL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_TOO_MANY_UNITS_DISCOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ENTITY_FROM_MEMBERSHIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_ACK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_TRIGGERED","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_ACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_CUSTOMACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_NACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SECURITYDESK_DISPLAY_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDMESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_IPENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_UNIT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_SENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_TRIGGERALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ACTIVEALARMCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ARCHIVEDALARMCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATASERVERVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENTITYCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_PICTURE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE_SEQUENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_MODE_SIMULTANEOUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY_HIGHEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIORITY_LOWEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REACTIVATION_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYPAD_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_ACCESS_TO_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANT_ACCESS_TO_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_RULE_IS_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DOOR_SIDE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMACCESSRIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMLICENSEKEY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SYSTEMVALIDATIONKEY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_BADLICENSEFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTOPENLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTSAVECHALLENGE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EXPIRATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDLICENSEFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSECOMPANY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEREADER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPACKAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPHONE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESYSTEMID","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEEXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_PORTLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSENOTSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_LAYOUT_NAME_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_VI_STATE_LOGIN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_UNIT_INPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_LICENSEVALID","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DBLOST","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DBRECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DEFAULTENTITIESFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NODBCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_WRONGDBVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_VERSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_CREATE_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ADD_NEW_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_OPENEDFORTOOLONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_VIEWENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_STOLEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_ASSIGN_TO_NEW_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_CAPTION_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLYING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CLIENTCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_DEVICETYPE_INPUTPIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_DOORSENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_PULLSTATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_BASIC_INFO_PAGE_SUBTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_BASIC_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_SECTION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_EXISTING_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_USER_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_POSTCREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECREATION_PAGE_SUBTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_NEW_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_COULD_NOT_ROLLBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_ROLLEDBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCESSFUL_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_USERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CARDHOLDER_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_UNIT_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_END_POINT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_AUTOMATIC_CREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_CREATION_MODE_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CREDENTIAL_CREATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_AUTOMATICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CREDENTIAL_CREATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_MANUAL_CREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CREDENTIAL_ASSIGNMENT_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_CREDENTIAL_LATER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_CREDENTIAL_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATED_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_OF_CREDENTIAL_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_DISCOVERED_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_CARDHOLDER_CREDENTIAL_CREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_LATER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CREDENTIAL_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_ACCESSPOINTRULE_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_DOOR_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_UNIT_PORT_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_UNIT_PORT_RESULT_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_DOOR_HARDWARE_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_TO_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLYCLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLYOPENED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_REX","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORCLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOOROPEN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_PULLSTATIONACTIVATE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_PULLSTATIONNORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_PERSONACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_UNASSIGNED_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_LAYOUTS_RENAME","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CLEAREVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_EVENTFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_BRINGTOFRONT","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_PAGESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_AREAINPERSONACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_AREAOUTPERSONACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_WIZARD_DEFAULTCREDENTIALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_NAME_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_NAME_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ENTITY_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USER_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USER_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ALARM_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_AREA_PARENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDER_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CARDHOLDERGROUP_PARENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CREDENTIAL_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_DOOR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SCHEDULE_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_PARENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_SECTION_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_UNIT_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUP_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUP_PARENTS","Genetec_Sentinel_Resources_RE_L_S_STE_CAPTURE_UNABLETOCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CARDHOLDER_NAME_WALKTHROUGH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_APPLICATION_NAME_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_APPLICATION_NAME_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_CONNECTIONLOST","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INSUFFICIENTPRIV","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDDATASTOREVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_NEWBACKUPDS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_OPERATIONTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_TRYCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_WALKTHROUGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_BY_REPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_MIXED_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_REALTIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_DOOR_WALKTHROUGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_DEVICE_DISCOVERY_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_DOOR_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALKTHROUGH_DOOR_CREATION_PAGE_SUBTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICTS_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_WALKTHROUGH_PRECREATION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONFLICTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_LEFT_PANE_CONSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_LOGON_CONSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_FINALIZING_RIGHT_PANE_CONSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_LOADING_LOGON_BAR","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_CONFIG_TOOL_REGISTERING_FOR_PROXY_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLER_ON_PORT_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISCOVERY_ITEM_REMOVED_FROM_CHANGE_PORT_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AREAACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIALACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_DOORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_PERSONACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_UNIT_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTOPRESET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_FORCEOPEN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EXPIREDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INACTIVECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INACTIVEPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LOSTCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_STOLENCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTHS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YEARS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_QUERY_RESULTCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_QUERY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FALSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRUE","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_DIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYLOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_TOOMANYRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_UNKNOWN_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISCELLANEOUS","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMQUERY_BASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_ACKBY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRSTUSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NIET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREAFTER","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_NORMALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DEENERGIZED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENERGIZED","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_NOSELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_TITLE_NOSELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOROPENED_WHEN_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONLOST","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_CONNECTIONRESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_DELETE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_START","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ACTION_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_UNIT_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_CONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SEPARATOR_GENERAL","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CREDENTIALNOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GENERIC","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_USERALREADYEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GENERICFOREIGNKEYDELETE","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDELETE","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDEP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EMAILADD","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVERIP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLEBACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_BACKUPFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_KEEP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_PLUGINS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACKED","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MANUALACTIONEXECUTE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBPATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EVENT_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_EVENT_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYREPORT_COLUMNNAME_SIDE_DIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ACKNOWLEDGED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ACKNOWLEDGED_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_TRIGGERING_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_DURING_THE_LAST_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_LAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNCHECK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LC_DAY_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_HOUR_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_GREATER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_GREATER_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_LESS_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_LESS_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LC_MINUTE_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_MONTH_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_SECOND_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_WEEK_S","Genetec_Sentinel_Resources_RE_L_S_STE_LC_YEAR_S","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_TAMPER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ARCHIVEDEVENTSCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APR_APG","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORDELETEALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LICENSEERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONCLUSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_X_NOT_IN_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_NOT_LINKED_TO_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_ACCESS_POINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_ACCESS_POINT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DOES_NOT_TARGET_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_NOT_BINDED_TO_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_ACCESS_NOT_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_LIKELY_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_OK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CONCLUSION_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKING_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_ALLOWED_CARDHOLDER_DURING_COVERAGE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DENIED_CARDHOLDER_DURING_COVERAGE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_AREA_X","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_DOOR_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKHARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKSOFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACKTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_FIRSTMANIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_LASTMANOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRICT","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_AUTOUNLOCK_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCK_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCK_EXCEPTION_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_SCHEDULED_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_SCHEDULED_UNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_GUESTACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_REPORTPREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_GUEST","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_FIRSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_LASTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_SUPERVISORFIRSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_SUPERVISORLASTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTREPORT_COLUMNNAME_VISITREASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTSGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_COULD_NOT_DELETE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_DOOR_SIDE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_DOOR_X","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ONLINE_ACCESS_POINT_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_AREA_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_ENTRANCE_AREA_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_FOR_EXIT_AREA_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AREAPRESENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_CAPTION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTITLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPANY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLTYPES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERSONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTSONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_UNIT_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_UNIT_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_COPYTOCLIP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_IMPORTFROMFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALID_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_NO_LICENSE_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_PASTEFROMCLIP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SAVETOFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_VALID_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORTS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TAB_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CARDHOLDERSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIALSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDEMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_CT_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_ACKED","Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_NACKED","Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_GUESTWIZARD_PHONENUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORT_TOOMANYRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUERYING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SETOUTPUTDEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_VISITORPERSONGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_AFTERGRANT","Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_AFTERCLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_REXHOLDOFF_WHILEOPENED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_JUMP_TO_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_INVERTED_READER_LEDS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ANTIPASSBACK_FORGIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_APR_SCHEDULE_WILL_BE_OVERWRITTEN","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_APR_SCHEDULE_REVERTED_TO_ALWAYS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REASSIGN_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ANTIPASSBACK_FORGIVEN","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SECTION_INSERTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTION_INSERTION_FAILED_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_ADVANCED_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_BASIC_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COMMIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ROLLBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NEXT_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PREVIOUS_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_SELECTED_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENTITY_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LATER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EARLIER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_HIGH_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_TO_LOW_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETE_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORCE_DOOR_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_IN_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXPAND_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_PLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_PAUSE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PLAYBACK_REWIND","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORGIVE_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIMELINE_ZOOM_IN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIMELINE_ZOOM_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UPGRADE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DESTROY_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHANGE_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWAP_DOOR_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_ITEM_UP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_ITEM_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_DATABASE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTRICTEDINFO","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DLG_DATABASEUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETEDWITHERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_OFFLINESYNC_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_WDMSG_OFFLINESYNC_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALL_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALARM_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CREATE_NEW_LAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXPLICITLY_UNLOCK_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_RECORD_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ADD_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VISITOR_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_CONTROLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_CHANGE_FOCUS_AND_IRIS_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_DO_BASIC_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_LOCK_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_USE_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_EDIT_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_GENERAL_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ACKNOWLEDGE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CHANGE_OWN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_REPORT_GENERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_EMPTYENTITYNAME","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INVALIDIMAGEFILE","Genetec_Sentinel_Resources_RE_L_S_STE_DB_UPGRADE_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TROUBLESHOOTER_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_FAILED_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TRACK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUAL_DISPLAYINFO","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_GENERAL_MAXEVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSECONTROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEEMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEPEOPLECOUTING","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUAL","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CREDDENTIALLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_GUESTLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_SHOWALARMPROCEDURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COLLAPSE_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFINITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLIMITED","Genetec_Sentinel_Resources_RE_L_S_STE_FIRMWARE_CANNOT_UPGRADE_ENCRYPTED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_KEEP_INFINITE","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ALLOW","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DENY","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_INHERITEDFROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TO_LC","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER_EXPIRES","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEOUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_CHANGEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_EVENTDB_DROPPED_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_EXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_EXTERNALSYSTEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_EXTERNALSYSTEMS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_LIVEBOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_PLAYBACKBOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_MOTIONON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_MOTIONOFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_EXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEO_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEO_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXPORT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWEXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CAMERAACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXECUTEMACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_EXTERNALSYSTEM_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_EXTERNALSYSTEM_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ALARM_EXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDSTRINGONSERIAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUNPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETEALLLINKEDENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILEDTOIMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATERN","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_BYTE","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_BYTES","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_KBYTES","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_MBYTES","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_GBYTES","Genetec_Sentinel_Resources_RE_L_S_STE_SIZEUNITS_TBYTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ALLOW_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXECUTE_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EXPORT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLIENTSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELAPSEDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_SAVEDIALOG_SELECTDESTINATIONFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDDATETIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INPUT_TROUBLE_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INPUT_TROUBLE_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_PLUGINLOADED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_PLUGINNOTLOADED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONRESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONNOTRESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_CONNECTIONERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOVIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNASSOCIATEDCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_ALARMTRIGGERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_WIEGAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_WIEGAND_X_BITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALTYPE_KEYPAD","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCESSPOINTGROUP_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ZONEACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMEVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATECUSTOMEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITCUSTOMEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTVIEWERNOTINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_ACIM_FIRMWARE_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_OUTPUTBEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_OUTPUTBEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_OUTPUTBEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISCOVERY_ITEM_REMOVED_FROM_UPGRADE_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_CAPTION_UPGRADE_UNIT_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FIRMWARE_SELECTION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_SELECTED_FOR_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_OUTPUTBEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_FIRMWARE_UPGRADE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIODIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_ASSOCIATEDEVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMULA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDFORMULA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VARIABLE_X_NOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_OUTPUTBEHAVIOR_OUTPUTTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MSEC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUTYCYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PROGESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CUSTOMEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_GLASSBREAK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_WINDOWOPENED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_WINDOWCLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DEADBOLTLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DEADBOLTUNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_KNOBINPLACE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_KNOBROTATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_LOCKSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_LOCKRELEASED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ZONETHRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ZONEONLINEMODEONLY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGEROUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_HEALTH_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_WARNING_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICASTSDKNOTINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_MIXEDMODE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PEOPLECOUNT_DISABLED_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEEPS","Genetec_Sentinel_Resources_RE_L_S_STE_UNITBEEP_REX","Genetec_Sentinel_Resources_RE_L_S_STE_UNITBEEP_ACCESSGRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLEENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTITY_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAC_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_UNITSTATS_NUMCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOEXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTSUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_3STATESUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_4STATESUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACTIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_HEALTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINESYNCHRONIZATIONMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONSCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTCHANGEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALPHADOORSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMEGADOORSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_NACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTUPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZENOW","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_MAINTENANCE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_MAINTENANCE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_WARNING_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SAVE_FILE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_START_TASK_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SWITCH_DATABASE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_SPACE_FOR_FILE_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_DATABASE_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAIN_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECONDARY_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_PLURAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLICKTOEDIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_SYNERGISSECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_MENU_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_MEDIUM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_URGENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORETODEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALSPREFIX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALSTATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVESTATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESTATE","Genetec_Sentinel_Resources_RE_L_S_STE_OPERATOR_AND","Genetec_Sentinel_Resources_RE_L_S_STE_OPERATOR_OR","Genetec_Sentinel_Resources_RE_L_S_STE_PLUGIN_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_RECURSIVESECTION","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERROR_RECURSIVEDETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_TRANSLATED_HOST_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAUNCHQUERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_USE_TRANSLATED_HOST_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCEDURE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKNOWLEDGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NACKNOWLEDGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLEINFO_DOORAREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBBROWSER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTRETRIEVECREDENTIALINFO","Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_VI_ERROR_OMNICASTSDKNOTINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CONTACTING","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_MAXIMUM_CREDENTIAL_LIMIT_REACHED_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_APPROXIMATION_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_NOT_USING_EXPANSION_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_UNIT_PROGRESS_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNSPECIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_ALREADYCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_INVALIDPARAMS","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNABLETOCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_UNITIDENTIFIERTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_INITFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_SECURITYLAYERINITFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNSPECIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_INVALIDPARAMS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_MACADDRESSUNRETRIEVABLE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FIRMWAREVERSIONUNRETRIEVABLE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FIRMWAREVERSIONUNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_CFGFILEUNRETRIEVABLE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COMMHOSTSUNRETRIEVABLE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COMMCFGUNRETRIEVABLE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDSAVECOMMCFG","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDSAVECOMMHOSTS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDCONTACTGATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COULDNOTCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDQUERYINFO","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDRETRIEVECONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_ERROR_DISCOVERYPORTMISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_BUILDCARDS_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DOORONLINEMODEONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_OFFLINE_SYNC_MULTI_TIMEZONE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OFFLINESYNC_NOTENOUGHSPACE_XY","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_CONFIGURATION_FILES_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_START_STOP_TASK_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_COULD_NOT_SET_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNEDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPTALKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTLISTENING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOPLISTENING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TALK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTEN","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENTERROR_UNITALREADYENROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULTVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITCUSTOMFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMERIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUERY_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_WITH_NO_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ACTIVE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANTED_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOLEAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATAENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_NOINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_DOUBLEINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_NOTENOUGHVALUES","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_EXCEPTION_PARSING","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_LINEPARSED","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_BOOL","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_DECIMAL","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_ULONG","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_CHAR","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_CSVIMPORTER_TYPE_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTCOLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_ACIM","Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_ION","Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_SIMULATION","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_DOORSAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUESTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_MUST_START_WITH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_MUST_CONTAIN_WORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECIMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_GUEST","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACCESSPOINTSIDENAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDEREMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERFIRSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERLASTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DEVICENAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTID","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_READERUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNDELIMITER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECIMALDELIMITER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAMPLEVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BINDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETCUSTOMFIELDSVALUES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMACKBY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMACKTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CABIN_READER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMEXTERNALINSTANCEID","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMINSTANCEID","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMSOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMTRIGGEREVENT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARMTRIGGERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CSVIMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMAT26WIEGAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10304","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10306","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATH10302","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERFIRSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERLASTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDFACILITY","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDCODE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_WIEGANDFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDEREMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_COLUMNNOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALIDDATATYPE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCOLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCARDHOLDERINFO","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_PICTURENOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THOUSANDSEPARATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTATLINE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_START","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FINISH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_IMPORTTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_SCHEDULE_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ELEVATORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_ONLINE_MODE_ONLY_UNIT_CAPABILITIES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ELEVATOR_FREEACCESS_ON_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ELEVATOR_SECURED_ON_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DOOR_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOPARSEFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_ACCESSPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_ACCESSPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALIDCARDDATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_DOOR_SIDE_FLOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANTED_ACCESSPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSV","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_CSVFILES","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_ALLFILES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_REX_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_ELEVATOR_OFFLINE_SYNC_ERROR_TOO_MANY_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_PERIMETERONELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_APPLICATIONNOTRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_APG_ALL_ACCESS_POINT_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALL_ACCESS_POINT_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTALTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_WEEKDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_MONDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_TUESDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_WEDNESDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_THURSDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_FRIDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_SATURDAY","Genetec_Sentinel_Resources_RE_L_S_STE_WEEKDAY_SUNDAY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BATFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LC_LABEL_TO_FLOOR_X","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MONITOR_ACFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MONITOR_BATFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_COMBO_BROWSEFORMORE","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_ELEVATOR_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPYTOCLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLICATION_SEMAPHORE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ELEVATOR_WARNING_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTRICTEDINFOCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TASKSCHEDULER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_TASKSCHEDULERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_TASKSCHEDULERS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_UNITSWAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED_GRANT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIALCODE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_ADVANCED_CREDENTIAL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL_WOULD_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL_COULD_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUDITTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSVALUES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ID","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MODIFICATIONTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USEREMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AUDITDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITYTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_TIMEATTENDANCE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_AUDITTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFIEDBY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_EXTENDED_GRANT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_MACRO_SOURCE_CODE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_AUDITTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_TIMEATTENDANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SOUND_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SILENCE_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_LANGUAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_SECURITY_LEVEL_AT_RUNTIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_NOBINDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLON_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_DEFINITION","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MACRO_VB","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_CANNOT_OPEN_FILE_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DEVICESDONTMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTENSIONDONTMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_MACROLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_IDALREADYEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_CONTEXT_ITEM_RUN_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FROM_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECK_SYNTAX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_X_COLUMN_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPILER_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SDKCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SWAP_NEWUNITDISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SWAP_OLDUNITCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_SYNTAX_IS_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_NO_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_MULTIPLE_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOAD_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOAD_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOCATE_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_CANNOT_LOCATE_BASE_CLASS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_MACRO_HAS_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_ERROR_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_COMPILATION_ERROR_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATETIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MACRO_EXECUTION_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_DEFAULT_EXECUTION_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_HAS_ERRORS_REVERTING_TO_ORIGINAL_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_MACRO_HAS_ERRORS_CHECK_SYNTAX_BEFORE_SAVING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUN_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ABORT_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_TASKSCHEDULER","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_FULLTRUST","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_LOCALINTRANET","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_SECURITY_LEVEL_INTERNET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_MAP_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ADDITIONNAL_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NORMALLYOPENED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NORMALLYCLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_NOTSUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_4STATESUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_FIRMWARE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_EEPROM_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_DOORBEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_CARDIN_CARDOUT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_CARDIN_FREEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PLUGIN_HOTACTIONS_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_MACRO_NAME_ABORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWINFREETILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCEVIEWINTILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGUREACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_EXECUTING_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACRO_START_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTIGATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERYMINUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAILY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECURRENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDEN_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_EDIT_MACRO_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLEAR_MACRO_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_BADGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_BADGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_BADGES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_BADGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_REPORTTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_REPORTTEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_REPORTTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_READER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USECARDKEYPAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDKEYPAD_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CREDENTIALHASEXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CREDENTIALISEXPIRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_SELECTPICTUREFROMDISK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_PICTUREBINDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_ENTERLABELTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_BADGENAME","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MINTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIREIN","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_DEBOUNCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STROKE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STROKETHICKNESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTRAIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LANDSCAPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZORDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BORDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BRINGTOFRONT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDTOBACK","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_COMPLEMENTARYCREDENTIALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CARDKEYPADERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CARDKEYPADMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTBADGEFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERTEXTHERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_INVALID_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VERTX_DOWNLOAD_INTERFACE_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_VERTX_DOWNLOAD_INTERFACE_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_EEPROM_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_INTERFACE_CODE_ERROR_PROGRAM_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALEXPIRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FONT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_FLOOR_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_INCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NOTES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREATEDBY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREATIONTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MODIFIEDBY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFERENCES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATENEWINCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITINCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_NEW_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CREATEINCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_MODIFYINCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_PRINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOREQUESTEXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_TIMEATTENDANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERDESCRIPTIONHERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITALIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNDERLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATEINCIDENTONACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_PDF","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_EXCEL","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_HTML","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGNMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_DEVICENOTATTACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_DEVICENOTATTACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_BUTTON_RELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DUPLICATE_KEYPAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_KEYPAD_CODE_OUT_OF_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_ADDMEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_REMOVEMEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_MODIFYMEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_SECOND","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_MINUTE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITIPADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITTIMEZONE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNITFIRMWAREVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR_RAISED_BY_MAP_CONTAINER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MEMBER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ICON","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTCOLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXTCOLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMAGESIZETOOBIG","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOGENERATEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_UNABLETOPROCESSREQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_INCOMPLETEFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAPVIEWER_MAPNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORTTOOL_UNABLETOACCESSSFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CREATEINCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE_OF_THE_HOUR","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_EXECUTE","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_CLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_MACRO_COMMENT_CLEANUP_INNER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INCIDENTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_NO_PRIVILEGE_TO_TRIGGER_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTBADGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_NOTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_CONFIRM_HOT_ACTION_DELETION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_TOO_MANY_CONFIRMING_PINS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_HOT_ACTION_OBSOLETE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTINCTCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAMEPERSONCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED_CREDENTIAL2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL2_COULD_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTER_CREDENTIAL2_WOULD_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL2_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_GRANT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERING_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CFDEFAULTVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_SYSTEM_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_WRITEEEPROM_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_DISCOVERING_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_PRE_CONNECTION_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_RESOLVING_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_REFRESHING_EEPROM_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CONTACTING_THE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CHECKING_FOR_MEMORY_EXPANSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_RETRIEVING_CONFIGURATION_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_QUERY_INTERFACE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_NETWORK_CARD_NOT_BINDED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_WRONG_INTERFACE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_INVALID_INTERFACE_EEPROM_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_INVALID_INTERFACE_PROGRAM_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_DHCP_UNIT_NOT_DISCOVERABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DHCP_UNIT_NOT_DISCOVERABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESSF1FORVERTXTROUBLESHOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USB_READER_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATCORPORATE1000","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLLMENT_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACTIVEDIRECTORY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACTIVEDIRECTORY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ACTIVEDIRECTORY_CONFLICT_ASK_FOR_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BROWSE_FOR_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CONFLICT_MANIFEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESSING_STEP_X_OF_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_DB_AFTER_CONFLICT_MANIFEST_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICT_MANIFEST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVEDIRECTORY_CONFLICT_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICASTVIDEOSDK_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_TOO_MANY_AUTHENTICATION_AGENTS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_NO_AUTHENTICATION_AGENT","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_AUTHENTICATION_AGENT_RESPONSE_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACTIVE_DIRECTORY_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACTIVE_DIRECTORY_LOGON_RESPONSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_AUTHENTICATION_AGENT_IMPORT_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_BADGEDESIGNER_FRONT","Genetec_Sentinel_Resources_RE_L_S_STE_BADGEDESIGNER_REAR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRINTDIALOGEXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRETCH","Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_FILL","Genetec_Sentinel_Resources_RE_L_S_STE_STRETCH_UNIFORM","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_BADGES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_OVERRIDE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_OVERRIDE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_LOCKDOWN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_LOCKDOWN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CREATEDATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_MULTIPLEUNIT_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_UNSUPPORTED_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_MAINTENANCE_MODE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_FREEACCESS_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_ANTIPASSBACK_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_FLOOR_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_CONFLICT_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MULTIPLEREADERASSIGNMENT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_IN","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MAX_AREAID_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APB_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_PRIORITIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_LOCKDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DLG_SAVEMANIFEST","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_NETWORK_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_SORT_BYNAME","Genetec_Sentinel_Resources_RE_L_S_STE_SORT_BYTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_SHOW_OFFLINE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_TEXT_HINT","Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_CUSTOM_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_BROWSER_CLEAR_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_IMPORTEDGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_IMPORTGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCCARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_NOTRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_ERREUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_IDLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DOWNLOADING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_UPDATINGCARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_UPDATINGUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_LINE2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_NOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_CANNOTAUTHENTICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_CANNOTFINDENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_INVALIDREQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_SERVERCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_SERVERINVALIDCREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE__","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_FEDERATION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_FEDERATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_MINOPENTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_SUCCEESS","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTING","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTIONESTABLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_CONNECTIONLOST","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INSUFFICIENTPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INVALIDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_INVALIDVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_LICENSEERROR","Genetec_Sentinel_Resources_RE_L_S_STE_FEDERATION_CONNECT_STATUS_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERANAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXTERNALSYSTEMAME","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_ARITHMETIC_EXCEPTION_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANTIPASSBACK_EXEMPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_AUTOSTARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_AUTOSTOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_USERSTARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_USERSTOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ARCHIVEFILEDELETED","Genetec_Sentinel_Resources_RE_L_S_STE_CONFLICT_RESOLUTION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_TRIGGER_SYNCHRONISATION","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_DETAILEDFOREIGNKEYDELETE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTIONSTARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MOTIONSTOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EXTERNALSTARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EXTERNALSTOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ALARMSTARTRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ALARMSTOPRECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CASHREGISTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_CASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEO_BOOKMARKS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_POS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_FRAMEHIT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_TIMEBETWEEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASKSAVELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVERASKAGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOSTARTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOENDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_BITMAP","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_JPEG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_CHOICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TIMEZONE_ABBREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_WITH_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_FILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_RESULTS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CONTROLS","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_FULL_PATH_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SNAPSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNIT_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_ALREADY_ASSOCIATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVELAYOUTSONEXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONAPPLICATIONEXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASKUSER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_SPECIFIC_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_AND_HARD_APB_MUTUALLY_EXCLUSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_OVERRIDING_HARD_APB","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONTROLLER_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONTROLERDONTMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_PNG","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SNAPSHOT_GIF","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_ROOTAREA_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTENSION_SUBTYPES_DONT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_MUST_BE_CONTROLLED_BY_SINGLE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_APB_READERMULTIPLE_CAPTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_CONTROLLER_WDMSG_OFFLINESYNC_COMPLETED_WITH_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CATEGORY_POS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_APPLICATION_EXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEDIRECTORY_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ACTIVEDIRECTORY_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIND_ACTIVEDIRECTORY_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTEDGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_DESTINATION_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ENCRYPT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMERANGE_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_SELECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_REMAINING","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_QUEUED","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_CANCELLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPONENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_UNABLETOCREATECOMPONENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_UNASSOCIATEDCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVEEXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVEEXTERNALSYSTEM_EX","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTRETRIEVE_ES_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_MOTION_BLOCKS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_IOCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_IOCONFIGREPORT_COLUMNNAME_CONTRLLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_WEB_CLIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_CLIENT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BIND_PICTURE_TO_CUSTOM_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_WRONG_BADGE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_CONVERTING","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_USE_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_DELETE_INT_G64","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_ASF_DISPLAY_DATE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UNKNOWN_ABBREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_DATELINE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAMOA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_HAWAIIAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ALASKAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAIN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USMOUNTAIN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRAL_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CANADACENTRAL_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALAMERICA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EASTERN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_USEASTERN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAPACIFIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ATLANTIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAWESTERN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICSA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWFOUNDLAND_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ESOUTHAMERICA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SAEASTERN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENLAND_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDATLANTIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZORES_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAPEVERDE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GMT_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GREENWICH_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALEUROPEAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ROMANCE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WEUROPE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WCENTRALAFRICA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EEUROPE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EGYPT_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FLE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GTB_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ISRAEL_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SOUTHAFRICA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_RUSSIAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARAB_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAFRICA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_IRAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARABIAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CAUCASUS_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AFGHANISTAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EKATERINBURG_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTASIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_INDIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEPAL_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALASIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SRILANKA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NCENTRALASIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MYANMAR_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SEASIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CHINA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SINGAPORE_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TAIPEI_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WAUSTRALIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NORTHASIAEAST_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KOREA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TOKYO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_YAKUTSK_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSCENTRAL_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENAUSTRALIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AUSEASTERN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_EAUSTRALIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TASMANIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VLADIVOSTOK_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_WESTPACIFIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALPACIFIC_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_FIJI_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NEWZEALAND_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_TONGA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_AZERBAIJAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALBRAZILIAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_CENTRALMEXICO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_GEORGIAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_JORDAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MIDDLEEAST_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MONTEVIDEO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOUNTAINMEXICO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_NAMIBIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PACIFICMEXICO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_VENEZUELA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SNOOZE","Genetec_Sentinel_Resources_RE_L_S_STE_SNOOZE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONSTARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_EVENT_FILTERS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SNOOZE_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERACTION_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PLAY_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_TO_PLAY","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_EVENT_FILTER_LABEL","Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLUP","Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_APPLICATIONLAUNCHER","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FPS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_PIXELS","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACK_NEXT_FRAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAVE_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRINT_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ABOUT_TO_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_ON_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_OFF_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_COMMAND_BAR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HIDE_COMMAND_BAR","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_WDMSG_DEFAULT_AUDIO_CREATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_DISPLAY_REPORT_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKBOX_DISPLAY_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVE_ALL_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVE_SHOW_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_PLAYING","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_PAUSED","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_FASTREVERSE","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_BEGINREACH","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACKSTATE_ENDREACH","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LICENSEMAXENTITYEXCEEDED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTCOPYVALIDATIONKEY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CANTPASTELICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RELATIVE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ABSOLUTE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CONNECTIONSTATUS_CONNECTING","Genetec_Sentinel_Resources_RE_L_S_STE_SPLASH_MODULE_LOADING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_REFRESHING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_LAYOUT_NAME_GUARDTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITERIAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUICKACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWERLAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOOP_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SLOW_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANLEFT","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANRIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILTUP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOMIN","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOMOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_NEAR","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_FAR","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_HOME","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FLIP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_SPECIFIC_COMMANDS","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_GOTO","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_SET","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERN_RUN","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERN_REC","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUX_SET","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUX_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_AUXILIARIES","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITAUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REQUIREDFIELDEMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERRORONTAB","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATE_REPORT_OVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRINT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_BADGE_BATCH_PRINTING","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BATCH_BADGE_PRINTING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PEOPLE_COUNT_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_WIEGAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_CLOCK_AND_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_XML","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NAME_DUPLICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_CARD_FORMATS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_WIEGAND_DORADO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_CLOCK_AND_DATA_DORADO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTSAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVINGLAYOUTS_INFORMATIVE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTBACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIMETER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MODIFY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTAPPLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ASSIGN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTASSIGN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DONTOVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_CARD_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_ID_DUPLICATES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_MASK_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_ID_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NAME_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FORMATFIELD_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_MASK_DUPLICATES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WIEGANDFIELD_SIZE_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_NAME_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATMULTIPLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_OCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_SAVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTIONSTATUS_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_INTEGRATION_CONNECTIONSTATUS_NOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARCHIVEPREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONSTATUS_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONSTATUS_NOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTRETRIEVESNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACCESSCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_GENERAL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_NOT_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_ORDER_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORMATFIELD_ORDER_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXEDFIELD_VALUE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_ABA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITERFIELD_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITERFIELD_MAXLENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SIZEDABAFIELD_LENGTH_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SIZEDABAFIELD_LENGTH_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABAFORMATFIELD_SIZE_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITEDABAFIELD_MAXLENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_WIEGAND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NON_WIEGANDFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_NON_ABAFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CATEGORY_PARITY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARITYFIELD_VALUE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDOPTION_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDOPTIONS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_WEB_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRODUCTORY_DELIMITER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_DELIMITER_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_EVENT_FILTER_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVING_PLEASEWAIT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_LARGE_FILE_WARNING_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITEDABAFIELD_DELIMITER_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ABADELIMITER_DELIMITER_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARITYCHECK_TYPE_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CODE_STRING_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_SELECTOR","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERASER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXTERNALSYSTEM_CANNOT_DELETE_USING_IMPORTEDUSER","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_INVESTIGATION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_SAVE_SNAPSHOT_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_HOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CUSTOM_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CUSTOM_BADGE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDTH","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_INCHES_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFINITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYOUT_OPTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_USAGE_NOTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GB_REMAINING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABSOLUTE_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MEMBER_OF","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARDHOLDER_GRANTED_ACCESS_BY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARDHOLDER_DENIED_ACCESS_BY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRIGGER_OUTPUT_BEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_OUTPUT_BEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_INPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPAND_CARDHOLDER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_TROUBLE_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_TROUBLE_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCESS_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TYPE_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TYPE_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLLEFT","Genetec_Sentinel_Resources_RE_L_S_STE_GENERIC_SCROLLRIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CARDHOLDERPARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALPARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTFIELD_CREDENTIALSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ZONES_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_PERIMETER_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALUE_MUST_BE_BETWEEN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_LOGICALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_PLAYBACK_RESTRICTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPLOYEE_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AMOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDIT_CARD_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIONSHIPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTRICTED_INFO_ON_READER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_SINGLEINSTANCEEXTERNALSYSTEM_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOG_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_SYNCHRONIZE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY_AND_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DO_NOT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROCESSING_PLEASE_WAIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CASH_REGISTER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_CASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTERNAL_SYSTEM_DELETION_MAY_TAKE_A_LONG_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ACTIVEDIRECTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESET_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_NOT_PROVIDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_PROVIDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOTENOUGHFREETILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_REFUSED_BY_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_CONNECTION_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_FORCED_OPEN_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_FORCED_OPEN_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_NAME_LAST_NAME_ORDERING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_COLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTIONS_ARE_APPLICABLE_WITH_UNLOCKING_SCHEDULES_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_BEING_ENROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_CARDHOLDER_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONAL_UPGRATE_STEP","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_VIDEOARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FILENAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FILESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCATE_FILE_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANIMPORTENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_TRANSACTION_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_OPERATOR_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_CLOSING_QUOTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_KEYWORDS_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMERIC_VALUES_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPLOYEE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OPERATOR_AND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OPERATOR_OR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COPYSTANDALONEAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CREATEAUTORUN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SAAP_UNKNOWNERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATIONPATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UPGRADETOFEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CUSTOM_CARD_EDITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELIMITER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODE_FORMAT_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_FORMAT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_ABA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BIT_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_XML","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT_XML","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VALIDATE_WITH_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ERRORDLG_HEADER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ERRORDLG_FOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILEDTOEXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_PARITY_CHECK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FORMAT_LENGTHS_NO_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CREDENTIAL_NO_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_AMBIGUOUS_MATCHES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDFORMAT_VALIDATION_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_INVALID_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDFORMAT_CHANGE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CORRECT_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DELIMITED_ABA_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SIZED_ABA_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DELIMITER_ABA_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIEGAND_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELIMITED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIXED_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARITY_CHECK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ODD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARITY_BIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_MASK_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_MASK_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_VALUE_MANDATORY_ON_FIXED_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_UNIQUE_PARITY_CHECK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_FIELDS_LENGTH_GREATER_THAN_CARD_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICKHEREMOREINFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHING_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MULTIPLE_GROUPS_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_GROUP_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_THAN_ONE_GROUP_MATCHED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDFOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MUST_PAUSE_TO_SCROLL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCROLL_BACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCROLL_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXPORT_INVALIDDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CONVERT","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_ACTIVE_DIRECTORY_USE_SERVICE_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_CHILD_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_CONVERSION_STATUS_INPROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PTZ_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CASH_REGISTER_EXTERNAL_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_ICON_AND_FIELD_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTOREFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_LOCK_NOT_PREFERRED_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_CUSTOM_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXTERNALSYSTEM_UPGRADE_NOTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARACTER_ENCODING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ELEVATOR_CONTROLLED_BY_MULTIPLE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIBLE_TO_ADMINISTRATORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONS_DATETIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASKBAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_TASKBAR_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_HOMEMENU_CATEGORY_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ERROR_DELETING_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNDO_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_WEBCAM","Genetec_Sentinel_Resources_RE_L_S_STE_INVALID_COLLATION_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_INVALID_COLLATION_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_SYSTEM_MESSAGES","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_ADMINISTRATION_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_ALL_DEVICES_INSIDE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_NETWORK_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_PLAYSOUND","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_DISPLAYOVERLAID","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_SWITCHALARMMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_ALARMHANDLED","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_GBHEADER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_RENAME","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOTENOUGHCREDENTIALINFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_PICTURE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_CREDENTIAL_AS_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_INVALID_PICTURE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_BATCH_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEASUREMENT_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_BADGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACK_BADGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_INCHES","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILLIMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_CATEGORY_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_CATEGORY_ADMINISTRATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_ALARM_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BARCODE_UNSUPPORTED_CHARACTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_CODE39","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_CODE39EXTENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BARCODETYPE_I25","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_INCLUDE_CHECK_DIGIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_BARCODE_SHOW_FOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_ENTER_BARCODE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_ALARM_ALARMQUERYRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_SAVEWORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TASK_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CPUUSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NOTIFICATIONS_MESSAGE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_ALARMPROCEDURE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_MUTED_VOLUME_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_UNMUTED_VOLUME_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_TILES_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_ALLTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_SYNCHRONIZATION_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FILTER_CRITERION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VISUALS_ASKFORTASKNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAITING_FOR_SIGNAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FAILURE_DIAMOND_FEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PROCESSING_CONFLICT_MANIFEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_PARTIAL_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_DISPATCH_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_ERRORS_OCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPTIONS_DATETIME_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_OVERRIDDEN_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_SUFFIX","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEDERATED_CREDENTIAL_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROXY_DENIED_MODIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTS_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNPACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMCONTENTVIEWER_INSTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_TROUBLESHOOT_FEDERATED_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVE_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DELETING_OBSELETE_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_DELETING_OBSELETE_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_CARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DELETING_CARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_DELETING_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_POPUP_VIDEO_TO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_POPUP_VIDEO_TO_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SAVE_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_DELETEALL","Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_ALREADY_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_WHEN","Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_WHERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_APPLICATION_NOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKINDATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISCELLANIOUS_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_ADMINISTRATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ACCOUNT_DISABLED_OR_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUEUEDCONNECTION_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONINQUEUE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_OF_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_SET_OF_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWER_PEOPLECOUNTING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_ONLY_PRIVILEGES_BECAUSE_OF_ADMIN_USER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CURRENT_READ_ONLY_PRIVILEGES_BECAUSE_OF_PARTITION_ADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_USER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOTED_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_TROUBLESHOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_TROUBLESHOOTER_ELLIPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESET_APPLIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_RETRIEVE_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_BACKWARD","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVESTIGATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_APPLICATIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FEDERATIONLOGON","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADMINISTRATIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LOGICALENTITYTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWMAPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYMAPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEMAPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PHYSICALENTITYTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITFIRMWAREUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWOUTPUTBEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYOUTPUTBEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEOUTPUTBEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWDOORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYDOORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEDOORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SCHEDULEMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETESCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSCHEDULEDTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSCHEDULEDTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETESCHEDULEDTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSCONTROLMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWACCESSRULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYACCESSRULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEACCESSRULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWBADGETEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYBADGETEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEBADGETEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TEMPLATEMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWREPORTTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYREPORTTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEREPORTTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TASKPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAINTENANCE_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSTROUBLESHOOTERREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONFIGURATIONREPORTS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_IOCONFIGURATIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSRULESCONFIGURATIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERSCONFIGURATIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALSCONFIGURATIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITSCONFIGURATIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INVESTIGATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAPRESENCEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOARCHIVEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOBOOKMARKREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOMOTIONSEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_POINTOFSALEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACTIVITYREPORTS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DOORACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ELEVATORACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNITACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ZONEACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_OPERATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CARDHOLDERCREATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIALENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PEOPLECOUNTING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SURVEILLANCE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACTIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACCESSCONTROL_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDERACTIVATIONOREXPIRATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDERSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERCUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECREDENTIALACTIVATIONOREXPIRATIONDATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECREDENTIALSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALASSOCIATIONTOCARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALCUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINTBADGES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DOORS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORGIVEANTIPASSBACKVIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VISITORS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHECKINANDCHECKOUTVISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORSCUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AUDIOVIDEO_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEAUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERAS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SAVEANDPRINTSNAPSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PTZMOTORPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEPTZPATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SETPTZPATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USEPTZAUXILIARIES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SETPTZAUXILIARIES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALARMS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SNOOZEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MACROS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USERS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDEMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDMESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PLAYSOUND","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERALPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINTANDEXPORTREPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SAVETASKTEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWVISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTNAME_COMMA_FIRSTNAME_ORDERING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTANT_REPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRINTTEMPLATEFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_FULLSCREEN_COLLAPSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIME_LOCAL_TO_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_INSUFFICIENTPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_UNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_OPENED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_CLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_PROVISIONNING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_SUPERVISOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_INVESTIGATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_REPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPHEADER_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUTTON_TEMPORARY_OVERRIDE_DOOR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOCK_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNLOCK_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_VIA_PARTITION_Y","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CREATING_INCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ACCEPTED_USER_OF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABA_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIEGAND_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_EXECUTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXECUTE_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIFFERENT_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TILE_TOOLBAR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCARDHOLDERGROUPCUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_NARROW_BAR_WIDTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_WIDE_BAR_WIDTH_RATIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_WHITE_SPACE_WIDTH_RATIO","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_DATABASE_SERVER_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWIPE_A_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DELETEFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEARAREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_RETRIEVE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EMPTY_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_ACCESS_TROUBLESHOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_ACCESS_TROUBLESHOOTER_ELLIPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_TRACKEDENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOGON_POPUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_BELONGS_TO_ANOTHER_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_PRIVILEGES_VIEW_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_FACILITY_OUT_OF_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DATA_OUT_OF_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_FORMAT_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_PARSE_CREDENTIAL_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLIENT_COULD_NOT_BE_IDENTIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_NAME_AND_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARDDELAYSECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_AUDIT_TRAIL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_DATA_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_CUSTOM_DATA_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOOR_COLON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_USER_AS_PARTITION_ADMINISTRATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKING_QUERY_ERRORS_OCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GHOST_PROCESS_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_MAP_OVERRIDE_SCHEDULE_FOR_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIDE_COLON","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_NOTSUPPORTEDONTARGETVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDSIMAGEMODIFY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KILL_GHOST_PROCESS2","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MESSAGE_SUPPLIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TAKE_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEEP_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISCARD_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_IN_ANOTHER_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDURL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLEVIEW_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_MODIFY_OWN_BASIC_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARITY_MASK_INCLUDES_POSITION_BIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_SEND_REPORT_BY_EMAIL_CHECK_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_READ","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AUTOPATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AUTOPATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_AUTOPATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACK_UP_RESTORE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TEST_DATABASE_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UPGRADE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_LPR_EVENT_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROPPED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_IN_PROGRESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_IN_PROGRESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_IN_PROGRESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNEXPECTED_LOGGING_ERROR_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROP_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARITY_BIT_USED_IN_MASK_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MASK_USES_LOWER_PRIORITY_PARITY_BIT_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDFORMAT_CORRECT_ERRORS_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSION_ERROR_NONE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TAILING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TAILING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAILING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPRMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_OVERTIME_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_OVERTIME_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_OVERTIME_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_SHARED_PERMIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_SHARED_PERMIT_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_SHARED_PERMIT_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_HOTLIST_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_HOTLIST_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_HOTLIST_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_NEW_WANTED_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_LOTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOURS_MAJ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_MAJ","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETURN_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SETDOORMAINTENANCEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_VALIDITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERYONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKDAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEEKEND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICABLE_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICABLE_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_PERMITZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_LOCKING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYDESK_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_LISTENING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_READ_LP_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_READ_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_GHOST_PATROLLER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELLIPSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZE_AND_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLORS_AND_LINES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDTH_ABREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEIGHT_ABREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_POSITION_ABBREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_Y_POSITION_ABBREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_HEADER_CREDENTIAL_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_AND_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_PATROLLER_TYPE_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCREDENTIALINFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGECARDHOLDEROPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RESTRICTION_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_PERMIT_RESTRICTION_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_PERMIT_RESTRICTION_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPPING_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_MSBING","Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_MAPINFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPINFO_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPINFO_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIAL_LONGITUDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIAL_LATITUDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_REJECT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_CATEGORIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_LISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_ELAPSED_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BASE_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_NOTIFICATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOCODER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_MATCHER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_IMPORTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_EXPORTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HORIZONTAL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTICAL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROOT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_SQLSERVERTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_USERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG_TERM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNKNOWNERROR_LICENSECALCULATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESENT_CARDS_TO_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTORE_ORIGINAL_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATEIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PATROLLERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEQUENCE_GENERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_READ","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_REMOTEDB_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_OVERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_PERMIT_RESTRICTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION_PARALLEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_POSITION_ANGLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATING_DATA_FOR_PRINTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAREDPERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PLATEREADS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_COUNT_OVER_MAX_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_LEGACY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_SUPPORTS_MAPINFO","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_LAW_ENFORCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_CITY_PARKING_ENFORCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_UNIVERSITY_PARKING_ENFORCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_DATA_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_FOLDER_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_TEMPLATE_FILE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_CREATING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_DROPPING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_RESTORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_BACKINGUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_WAITING_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_UPGRADING","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ASSIGN_TEMPORARY_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_OVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ALREADY_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTRICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCK_FACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_POSITION_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READS_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HITS_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CARDSEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FIND_ENTITY_BY_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ZONE_NAME_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRAWING_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS_OVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_GENERATINGDATA","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_EXPORTINGTOFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_PDFFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEL","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_EXCELFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_CREDENTIAL_BATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISREAD","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_ES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_IS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MAX_PIN_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKOUTDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARD_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CARD_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_USER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_HOTLIST_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_PERMIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_OVERTIME_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_UNKNOWN_SHARED_PERMIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DURING_EXTERNAL_SYSTEM_INITIALIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTER_PIN_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTER_PIN_CODE_VALIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PASSWORDS_DONT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_GHOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SERIALIZE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OFFLINEPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_GRACE","Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_OFFLINEALARM","Genetec_Sentinel_Resources_RE_L_S_STE_OFFLINEPERIOD_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SAVING_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ACKNOWLEDGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLETOCREATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_EXIST_NO_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_DOESNT_EXIST_NO_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_NAME_HAS_ILLEGAL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_TAMPERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_GOOD","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_WATERMARK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MULTIPLE_FORMAT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DURING_EXTERNAL_SYSTEM_DELETION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEEK_BACK_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SEEK_BACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_TAKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_ACCEPTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_NOTENFORCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_REJECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTOFMETADATAVALUES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CORRECT_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAPINFO_WORKSPACE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SYNCHRONIZING_LARGE_PATROLLER_USER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_HEADER_HIT_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REMOVE_ITEMS_FROM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HEADER_LPR_READ_TIRES_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTINGEXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CONNECTIONTOEXTERNALSYSTEMESTABLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETIONPROGRESS_PERCENTAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_PROTECT_READS_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROTECT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UNPROTECT","Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGCAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGCASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_SYNCHRONIZINGALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETINGORPHANENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENFORCED_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_BING_LICENSE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_DATA_IMPORT_MODULE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_DAILY_USAGE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWPATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYPATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEPATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYLPRUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETELPRRULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLERPLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_READHITSPERLPRZONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_READHITSPERDAY","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPRZONEOCCUPATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LOGINPERPATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETELPRUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWLPRUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETLPRUINTS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OPERATING_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MAX_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INSTANCES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MAX_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYLPRRULES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OMNICAST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PURCHASEORDER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYNERGIS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SECURITYCENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICEMAINTENANCEAGREEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMANUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_PRINT_HEADER_HIT_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRINT_HEADER_PHOTO_EVIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_READS_HITS_PER_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_ZONE_OCCUPATION","Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_LOGIN_PER_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_LPRREPORT_READS_HITS_PER_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CONTEXTIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVINGMAP_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LPR_READEVENT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LPR_HITEVENT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_UNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_XML_IMPORT_MODULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SMA_SUPPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ERROR_WIEGANDFIELD_MASK_PARITY_CHECK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIXED_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSLATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTRIBUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DELIMITERS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LOGINTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LOGOUTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_NOTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TOTAL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NOT_ENFORCED_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_REJECTED_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HIT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TIRE_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERSECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_INTERSECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_LOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VEHCILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCUPATION_PECENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_EVENT_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MANUALREAD","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CONTEXTIMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_TIRESIMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_HITSFROMREAD_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENTITY_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCETIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGEDESIGNER_UC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_YEAR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_ENROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATED_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_SHARPS_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_COVERT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_ON_SAME_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NETWORK_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIRM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DUPLICATE_DIRECTORIES_DETECTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACCESSFILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_COPY_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NAME_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATE_REPORT_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_DOESNT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERALSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PLATESTATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_REPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_INCONCLUSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DRAW_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_HEADER_ASSOCIATED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERCENT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SQLSERVER_DOESNT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRONG_ENGINE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_DOESNT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNKNOWN_SQL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_LIVE_COVERT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NETWORK_ADAPTER_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PAPER_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_READY","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWLPRRULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_MATCHER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONGITUDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATITUDE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_PARSE_LINE_VS_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_EMPTY_OR_NULL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_FILE_LOAD_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TOOLTIP_MAXIMUM_RESULT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_REFUSED_BY_UNIT_2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_AUTOVU_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENABLING_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_CREATE_FOLDER_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_WRITE_TO_EXPORT_FOLDER_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOAD_TEMPLATE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_XML_IMPORT_FOLDER_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GHOST_ENTITIES_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEMPLATE_PATH_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_XML_IMPORT_TEMPLATE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROOT_FOLDER_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLESHOOTER_CARDHOLDER_WILL_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLESHOOTER_CARDHOLDER_COULD_BE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THOUSANDSEPARATOR_NONBREAKINGSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_MLPI_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LPR_MLPI_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_LPR_MLPI_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_MOBILE_LICENSE_PLATE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_ANCESTORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_MANUAL_ATT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_MANUAL_ENTRY_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_MANUAL_ENTRY_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OVERTIME_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_OVERTIME_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_REJECT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_AUTOMATICALLY_APPLIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATED_CREATING_FUNCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRINT_EVIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_HOTLIST_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_PARTITION_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_TRAIL_MEMBERSHIP_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PERMIT_CONSTRAINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT_CONSTRAINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_IMPORTED_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOME_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_DOORSELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAY_LOSE_ACCESS_TO_ENTITIES_AFTER_DELETION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ENTITY_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOVU_DB_UPGRADE_RESTORE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALIDNAME","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECONCILE_INVENTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_DELETE_READS_NOT_IN_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGULATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MODIFY_DELETE_MLPI_READ","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_STATUS_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_ONE_OR_MORE_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_NAME_FIELD_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_HIGH_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_LOW_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_UPPER_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS_LOWER_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LAST_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_IMAGES_WERE_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORYREPORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HANDHELDDEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ADDEDREMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_NOACTION","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_MANUALLY_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MANUAL_ENTRIES_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FETCHIMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_SHOW_MANUALLY_REMOVED_READS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPAREWITH","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARRIVAL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ELAPSEDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPIZONE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPIROW","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_ISEDITED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_ISMANUALLYREMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_DELETE_PLATE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTAGGED_READS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MLPI_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_OPENED_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SEND_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNSPECIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_ORPHANRULE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNKNOWNRULE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_UNKNOWNEXTERNALSYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INITIALQUERYFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYINPROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYCREATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_INVENTORYDELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_CANCELED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVENTORY_EXCEPTION_DATETIMERANGEINVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION_MLPI_LOAD_PLUGIN_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION_MLPI_NO_PLUGIN_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OFFLOADS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_FIRST_READ_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_LAST_READ_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_READ_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXISTING_INVENTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_RECONCILIATION_POSSIBLE_MATCHES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CREATE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_PLATE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_DELETE_LAST_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READ_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CONFIRM_SAME_CAR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CONFIRM_DIFFERENT_CAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XML_TEMPLATE_FOLDER_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_INVENTORY_WARNING_COMPARE_UNTAGGED_READS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_INVALIDATE_PATROLLER_READS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_FROM_SENDER_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_YOU_ACCEPT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENDER_WANTS_TO_SEND_TASK_TO_YOU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MY_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SAVE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ITEMS_TO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_MEMEORY_TO_SYNCHRONIZE_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_X_COULD_NOT_BE_TRANSFERED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_FROM_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOST_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SAVE_AS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_UPGRADE_PRIVILEGETEMPLATERESET","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SYSTEM_STATUS_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_OPEN_THE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAY_NOT_HAVE_NECESSARY_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_BUFFERING","Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_STARTING","Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_STOPPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DWELL_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MLPI_CREATE_INVENTORY_OPEN_DIALOG","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SYSTEM_STATUS_FILTER_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ACTION_UNLOCK_DOOR_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_HEALTH_ISSUE","Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_ALL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_DELETE_BOOKMARK_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MACHINE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITY_LOGICAL_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DOOR_LOCK_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DOOR_OPEN_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERA_RECORDING_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CAMERA_ANALOG_SIGNAL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ZONE_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNIT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNIT_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONESTATE_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AREA_PEOPLECOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_HI_RES_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_PARKINGZONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MANAGE_PRIVATE_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_OPENED_TASK_IS_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELOAD_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TASK_HAS_BEEN_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_RELOAD_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CHANGES_TO_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_SHORTCUTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRESS_KEY_TO_RECORD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORTCUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_HI_RES_IMAGES_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRESS_ESCAPE_TO_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_KEYBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_NETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_NETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROUTES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ROUTES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_KEYBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_KEYBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_SET_OR_REMOVE_MAINTENANCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETDOORSMAINTENANCEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVEDOORSMAINTENANCEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_FILE_PATH_ON_SAME_IS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REBOOT_UNIT_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ALARM_PANEL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ALARM_PANELS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_INTRUSION_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_SIGNAL_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NAME_SIGNAL_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ALARM_PANEL_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_AC_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_BATTERY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_BYPASS_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_BYPASS_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_PANEL_INPUT_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ALARM_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ARMING_POSTPONED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DISARMED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DURESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_ENTRY_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_BYPASS_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_BYPASS_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_INPUT_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_MASTER_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_PERIMETER_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_POSTPONE_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_DISARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONDETECTION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMDISARMINTRUSIONZONES","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_INTRUSION_DETECTION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_INTRUSION_DETECTION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NO_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZ_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPABILITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCOMING_UDP_PORT_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT_1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT_2","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROUTE_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_A_NEW_ALARM_PANEL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ALARM_PANEL_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED_NOT_READY","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED_READY_TO_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ZONE_INPUT_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE__PERIMETER_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_MASTER_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ALARM_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ARCHIVER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ARCHIVER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_VIDEOUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_UC_VIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_ENTITYNAME_LC_VIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_GUARDTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_GUARDTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_NEW_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_POINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_TCP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_UDP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST","Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_SIGNALSTATE_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_DISK_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECT_RECORDED_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_PRETRIGGER_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACCESSMANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_ACCESSMANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_DISPLAY_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SALVO_MODE_DWELL_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_DISPLAYED_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_CAMERA_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYDESK_ON_MACHINE_IS_WATCHING_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_FORWARD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_READS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIPHERALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOCONNECT_KEYBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYBOARD_CONNECTION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_CONNECTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_LAST_COMMAND_RECEIVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BYTES_SENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BYTES_RECEIVED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEYBOARD_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEYBOARD_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMPORT_OPENED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMPORT_CLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_FAILED_TO_OPEN_COMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_PTZ_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BAD_PTZ_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYBOARD_BAD_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_USE_SPECIFIC_COMMANDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PTZ_OVERRIDE_LOCKS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_DEFAULT_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ROLES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_START_ALARM_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_ALARM_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_ALARM_RECIPIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_OPTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSION_ZONE_BYPASS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ARMING_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ROLE_CURRENT_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_STATUS_FILTER_ONLINE_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STREAM_MANAGEMENT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STREAM_MANAGEMENT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_STATE_MASTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM_IMMEDIATELY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_ARM_IN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_ZONE_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZSTOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PTZLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZOOMBYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZOOMBYUSERSTOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DWELL_TIME_SEC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_AUXILIARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_FEDERATED_CANNOT_BE_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_STATUS_HEALTH_ISSUES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GO_TO_SPECIFIC_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_CONNECTION_ESTABLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_SAVED_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_PREFETCH_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_ADD_PAGES_TO_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_ACTIVE_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_INITIALIZATION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_INITIALIZE_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGESERVICE_LOAD_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EXPLICITLY_START_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_START_CYCLING","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_STOP_CYCLING","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HIT_REPORT_PER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HIT_REPORT_PER_AGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOWARD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_VIDEOSTATE_WAITING_FOR_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEBACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASENOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENERALPROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DIRECTORYCONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENETECSERVERCONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_MAINSERVERCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SMTP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_HTTPPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LOCALMACHINEONLY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_ENABLECONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SMTPSERVERPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FROMEMAILADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LISTENINGTCPPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SENDEMAILON","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SAVEKEYTOFILE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEINSTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASESERVER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LAUNCHRESTORENOW","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SECURECOMMUNICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUTTON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOWN_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UP_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORWARDALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBNETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTING_TO_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JOYSTICK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEJOYSTICK","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_GENETECSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_INCIDENT_CREATION_ON_DOOR_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_DAYS_PRIOR_TO_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_ADD_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_IDENTIFY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CHANGE_COMMAND_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_Y_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGE_COMMAND_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AREA_ADD_FEDERATED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CYCLING","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ARCHIVING_QUEUE_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_MULTIPLE_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_NOT_ARCHIVING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RTP_PACKET_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_TRANSMISSION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_ARCHIVING_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_CAN_WRITE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DISK_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_INVALID_CUSTOM_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_NO_WRITE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_NO_WRITE_ON_SPECIFIED_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_INVALID_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_IN_SIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_OUT_OF_SIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_LICENSE_PLATE_READING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_CONDITION_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_CROSSED_LINE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_ENTERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_EXITED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_FALL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_FOLLOWING_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_IN_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_LOITERING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_MERGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_RUN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_SLIDE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_SPLIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAILGATING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAMPERING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_X_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_Y_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_Z_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RX_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RY_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_RZ_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_JOYSTICK_SLIDER_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGE_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTING_IP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IP_RANGE_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROUTE_STATUS_OPTIMAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROUTE_STATUS_NOT_OPTIMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETECTED_CAPABILITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_USER_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_POS_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_POS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTMANUALQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTMOTIONQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOSTSCHEDULEDQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTFILEPROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPFILEPROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PANSTOP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOM_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILT_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PAN","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_TILT","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_PLAYBACK_PREVIOUS_FRAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_ADDRESS_EXAMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_MANUFACTURERS_WEBPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATING_NEW_INTRUSION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_INTRUSION_AREA_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_ANTIPASSBACK_DISABLED_INVALIDSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_SHOW_ALL_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_SHOW_ONLY_NEW_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVINGMODE_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_MODES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MANUAL_RECORDING_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_TO_RECORD_AFTER_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_TO_RECORD_BEFORE_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BROWSE_FOR_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_ADDEMAILRECIPIENT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_REMOVEEMAILRECIPIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ARCHIVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_STATE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORTFULLIMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LIVE_CACHING_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SLOW_VIDEO_CACHING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_JITTER_BUFFER_NOT_BIG_ENOUGH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_VIDEO_CACHE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_VIDEO_CACHING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTIONS_APPLIED_AT_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATASERVERVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CACHE_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMAND_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CAMERA_DISTRIBUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRODUCT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISCOVER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_UNIT_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MANUFACTURER_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_SELECT_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLEMENTERROR_CANNOTCONNECTTOUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_OLD_FILES_ON_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEO_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_MEGABYTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NTP_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLL_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_DRIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPD_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEAKER_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_PIN_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_PIN_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIAL_PORT_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MICROPHONE_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_ZONE_CANCEL_POSTPONE_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSION_AREA_ACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSION_UNIT_ACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NESTED_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETREIVINGFILEVERSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASECREATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_EXTENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LOGICALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOCREATEINUSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABLASTOCREATEINUSEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDCREATE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_FAILEDRESTOREDB","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESTOREDATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESTOREINUSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESTOREINUSEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDRESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_BACKUPFILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILBACKUPBEFORECONFLICTMANIFEST","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TOOLS_COPYCONFIGTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_COPYCONFIGTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPYCONFIG_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ENTITYNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_INVALIDTYPES","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PERMISSION","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SETPROPERTY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_EXTENSIONNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ATTACHEDENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOENCODER","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_BOOSTQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_STREAMUSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_NETWORK","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ACCESSRULE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ACCEPTEDUSEROF","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_USERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOSTQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMUSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNITMODEL","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOUNITMANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_DOORSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENABLE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOUPGRADEINUSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETOUPGRADEINUSEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE_FROM_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_CONFIG_APPLY_CHANGES_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOTACKALARM_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENTPRIVILEGENEEDEDFORACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACTSYSTEMADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_X_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_CONNECT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_NOEXTENSION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_MAXCONNECTIONS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_EXTENSIONTYPE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_DISCOVERYPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_NODRIVER_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_UNIT_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FOWARD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLYCONFIGANDRESTARTSERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASKAPPLYCONFIGANDRESTARTSERVICEL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_SOURCE_AND_DESTINATION_EXACTLYSAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_WARNING_SOURCE_AND_DESTINATION_CONTAINS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MUST_SELECT_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SOURCEENTITYNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SAMEENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_LOGONENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SYSTEMENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACK_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_REPLY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTION_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_HTTPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TCP_NOTIFICATION_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTIFICATION_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_MANAGEMENT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEODATAFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFRAMEINTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROFILEANDLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOOBJECTTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDINGFRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATEPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_REDIRECTOR_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDIRECTORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_MULTICAST_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_IDS_LABEL_MAIN","Genetec_Sentinel_Resources_RE_L_S_STE_IDS_LABEL_CORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCEDSIMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ENTRY_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATEMODE_CONSTANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L0","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_SP_L3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_CP_L1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_CP_L2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_MP_L4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L0","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L3B","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG4PROFILELEVEL_ASP_L5","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_ALLFRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_ALLKEYFRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_15FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_10FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_6FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_1FS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2SF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5SF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_10SF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_15SC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_30SF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_1MF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_2MF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRREC_5MF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_HTTP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_TCP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_AS_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEST_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_HOTACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOST_QUALITY_ON_MANUAL_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOST_QUALITY_ON_EVENT_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGE_MULTICAST_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITSHIGHQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITPERSECONDLOWDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2MBITPERSECONDAND256KBITPERSECONDAUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFFULLMOTION25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFFULLMOTION30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFHIGH12FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFHIGH15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFLOW5FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFLOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM10FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM8FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM_LOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFMEDIUM_LOW7FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_2CIFVERYLOW2FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_3_5MBITPERSECONDHIGHQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_3_5MBITPERSECONDLOWDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4MBITPERSECONDAND256KBITPERSECONDAUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFHIGH15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFLOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFMEDIUM10FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_5MBITPERSECONDHIGHQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_5MBITPERSECONDLOWDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFFULLMOTION25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFFULLMOTION30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFHIGH12FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFHIGH15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFLOW5FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFLOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM10FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM8FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM_LOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFMEDIUM_LOW7FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_CIFVERYLOW2FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONHIGHBITRATE25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONHIGHBITRATE30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONLOWBITRATE25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONLOWBITRATE30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONMEDIUMBITRATE25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1FULLMOTIONMEDIUMBITRATE30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1HIGH12FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1HIGH15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1LOW5FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM10FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM8FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM_LOW6FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1MEDIUM_LOW7FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_D1VERYLOW2FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_DEFAULTSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_FULLMOTION25FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_FULLMOTION30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH12FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_HIGH15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW4FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_LOW5FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM15FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM6_8FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM8FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_HIGH10FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_MEDIUM_LOW5_7FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_VERYLOW1FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_VERYLOW2FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CONFIG_PRIORITY_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CONFIG_INHERIT_FROM_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_ONLY_PRIVILEGES_BECAUSE_OF_NOT_ACCEPTED_USER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_NETWORKCARDSELECTANY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_USED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_KEYSHORTCUT_USED_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ZONES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMDISARMZONES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_QCIF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_CIF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_HALFCIF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2THIRDD1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_3QUARTERD1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_4CIF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_D1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_VGA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS_AND_SHAREDTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARM_INTRUSION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_POSTPONED_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_INTRUSION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BRIGHTNESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTRAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SATURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWINTRUSIONAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVE_VIEWING_LIMITATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NTP_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_CANCELED_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_EXTENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ZONE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MORE_AVAILABLE_LOGICAL_IDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGICAL_MUST_BE_ASSIGNED_A_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ASSIGN_LOGICAL_ID_BECAUSE_RESERVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLE_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ZONE_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ZONE_DISARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_INTRUSION_CUSTOM_EXECUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_MULTIPLE_ADDRESSES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SINGLE_ADDRESSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_MULTIPLE_PORTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SINGLE_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMED_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_DOWN_SOUNDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VSIP_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_SSL_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AGENT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_AGENTS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_AGENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MUST_SELECT_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_CANT_GET_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISARM","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_PERIMETER_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_MASTER_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COLORPALETTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DISK_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_MASTER_ARM_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_PERIMETER_ARM_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_DISARM_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_MAXVARIABLE_IMAGEQUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ZONE_NAME_DISARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_WARNING_SHARED_STREAM_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_NULL_LOGICAL_IDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_UP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_ON_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_OK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_STATIC_DOWNSAMPLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_LOWLATENCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_VARIABLEBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEAUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_LIVE_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SELECT_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ARCHIVER_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUP_OPTION_UI_ENHANCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_SHOW_LOGICAL_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_SECURITYCENTER","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_TASK_FORWARDER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_TASK_FORWARDER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_BASE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FREE_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOTED_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTITLED_DISK_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ALL_VIDEO_STREAMS_AS_SEPARATE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREVIOUS_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEXT_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVERGAGE_DISK_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ESTIMATED_RECORDING_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_SPAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORSTCASE_BANDWITH","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXECUTE_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MPEG4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MPEG2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MJPEG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H264","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_CHECK_AUTO_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_I","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IPB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_GOPSTRUCTURE_IPBB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG2STREAMINGTYPE_VES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MPEG2STREAMINGTYPE_PRG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_STREAMINGTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_GOPMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MPEG2_GOPLENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_VIDEOFILEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INTRUSION_UNIT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_DISK_MUST_BE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNSUPPORTED_G64_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEEP_DELETED_GROUP_NETWORK_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SHOULD_HAVE_ZONE_MANAGER_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SHOULD_HAVE_ACCESS_MANAGER_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOOMANYSYSTEMS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TASK_NOT_A_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USED_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RW","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_AREA_POSTPONED_ARM_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_AREA_CANCEL_POSTPONE_ARM_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ACCESS_BEHAVIORS_TOGGLE_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TASK_FORWARDER_NOT_PRESENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_UNIT_OPTION_CLEAR_LOG_AFTER_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_OVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_OPEN_TOO_LONG_EVENT_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_DOOR_SCHEDULE_OVERRIDE_WIDGET_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MEDIA_ROUTER_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_STARTSTOP_GUARDTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_SECURITYDESK_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_TILE_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_TILE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CHANGE_CLIENT_VIEWS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DIGITAL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_OVERRIDE_VIDEO_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERA_ANALYTIC","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETECAMERASEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCAMERASEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_READ_G64","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEVIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYVIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWVIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGES_ADDDELETECASHREGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_STARTSTOPSEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HARDWARE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOUNIT_FIRMWAREUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_RECORDING_ACTION_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_RECORDING_ACTION_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_PROTECTION_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCAMERASEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_PROTECTION_AND_KEEP_PROTECT_NEXT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_PROTECTION_ACTION_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_EVENTSCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COMMAND_PROTECT_VIDEO_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COMMAND_UNPROTECT_VIDEO_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURRED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFIGURATION_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIED_SERVER_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENTITY_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_STATUS_EXPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_UNPROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_RPOTECTIONENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_PROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_PROTECTION_END_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_INFINITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_RELATIVE_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_END_ABSOLUTE_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_MEDIUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_SM4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_MPEG4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE_MPEG4_ASP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_INPUTFILTERMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_COMPRESSIONMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_BOSCH_MPEG4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_VERINT_SM4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_FW_IN_PROGRESS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORPHAN_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_TRANSPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENT1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENT2","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_FORWARDER_SEND_EMAIL_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PROTECT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNPROTECT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DEGREES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE_ABSOLUTE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE_RELATIVE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_ZOOM_FACTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_ZOOM_FACTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USE_CURRENT_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTORE_FACTORY_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_UNIQUE_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DISCOVERY_PORT_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_MULTICAST_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_UNICAST_REPLIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKETS_PER_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CA_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENTITIES_WERE_NOT_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TRACKING_LIMIT_REACHED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUTOVU_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4_NETWORK_IP_PREFIX","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WHITE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MEDIUM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOSTATS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTORESP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ONEPOINTCAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_GRAYSCALE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOPOLARITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WINDOWHEATER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HISTOGRAM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VIDEOGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGLMODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START_SEQ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_INSERT_PRESET_SEQ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEAR_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHOW_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SEQ_DWELL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUX_ON_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_SETUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SAVE_PRESET_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_INSERT_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RELAY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_STACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_FACTORY_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_STOP_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_R_GAIN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_B_GAIN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWB_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_ALC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS_PLC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MAX_DIGITAL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DSS_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EXPOSURE_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTLE_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WDR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_OFF_GATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_ON_GATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR_FILTER_CTRL_MTHD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DOME_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_TILTINGATDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_AUTOFLIP_ATDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_GAINUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_GAINDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_LIFTUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_LIFTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_ADVANCESYNC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_VIDEOCONTROL_RETARDSYNC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_RESET_FACTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_DIGITALZOOM_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_DIGITALZOOM_ENABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_STEADYSHOT_ENABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_STEADYSHOT_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_SHUTTER_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_PSPEED_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_360VISIONDLG_PSPEED_ENABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTOTRACKING_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTOTRACKING_NOTRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_STOP_ALL_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NIGHTMODE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NIGHTMODE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_FAR_FIX","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_DOME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FOCUS_ONE_SHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_BACKLIGHT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_BACKLIGHT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_60","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_100","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_FLUORESCENT_L","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_FLUORESCENT_H","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_MERCURY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_SODIUM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_HALOGEN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE_ONE_SHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSURE_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSURE_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_ONE_PUSH_AF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSED_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_EXPOSED_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SHUTTER_SPEED_PRO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE3","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_FADING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITEFADE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAMERA_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PT_INIT1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PT_INIT2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SER_RCON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SER_RCOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REMOTE_COMMAND_PASSO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REMOTE_COMMAND_PASSN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_CASCADE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_CASCADE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENTER_HOST_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENTER_LOCAL_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SCREEN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_SCREEN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SCREEN_TITLE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SCREEN_TITLE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE0","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_TIME_MODE2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE0","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_DATE_MODE2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DEFAULT_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE0","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_WHITE_BALANCE1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NOTIFY_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_NOTIFY_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_GLOBAL_NOTIFY_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_GLOBAL_NOTIFY_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AE_LOCK_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AE_LOCK_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_GREEN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_ALL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_RED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_LED_ORANGE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_ID_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_ID_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_POWER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_ACTIVATE_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_INIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_OSD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_CHANGE_OSD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_BACKLIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_FLICKER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_DIGITAL_EFFECTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_MIRROR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_NEGATIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_TOGGLE_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CNB_SPCDLG_SWITCH_AWB","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESTOREFACTORYDEFAULTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESTORESTOREDDEFAULTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SAVESETTINGSDEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_RESETCALIBRATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_STARTAUTOSCAN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_STOPAUTOSCAN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_ENABLEAUTOSCANPWRUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_DISABLEAUTOSCANPWRUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_ENABLEUSRLIMITS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_DISABLEUSRLIMITS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMINPANLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMAXPANLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMINTILTLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_SETMAXTILTLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DT_REINIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_WB_RED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_WB_BLUE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_ALL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_RIGHT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_RIGHT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_SHOT_KEY_RELEASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_ALL_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_LEFT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AUX_AUTO_PAN_LEFT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ALL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WIPER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WASHER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_LIGHT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_PAN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_NORMAL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_ALARM_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_IR_CUT_FILTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ZOOM_EXTENDER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_WHITE_BALANCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_CAMERA_SWITCHOVER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WIPER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_WASHER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_LIGHT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_PAN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_NORMAL_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_AUTO_SCAN_ALARM_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_BW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_IR_CUT_FILTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_ZOOM_EXTENDER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_WHITE_BALANCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_EQ_MANUAL_CAMERA_SWITCHOVER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_5MIN_STEPS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_30MIN_STEPS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_APT_1HR_STEPS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP2_WIPER_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST3","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST4","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_TEST5","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ERROR_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_AUTO_PAN_TIMER_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_STATUS_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_POWER_ON_RESQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ALL_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SP_ACCESS_LEVEL_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_RECALL_LAST_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_ALARM_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MR_RECALL_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_CLEARALL_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ALL_ALARM_PRESET_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ENTER_ALARM_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_MW_ENTER_LOCAL_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_BYPASS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_BYPASS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_NORMAL_AUTO_SCAN_TIMING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ELBEXDLG_AS_ALARM_AUTO_SCAN_TIMING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DZ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_DI","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_AUX_RELAY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IMAGELABSDLG_ANALOG_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_BRIGHTNESS_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_BRIGHTNESS_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CONTRAST_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CONTRAST_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CURSOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_ST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CALIBRATE_WITH_SHUTTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_CALIBRATE_WITHOUT_SHUTTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_POLARITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IR516_THERMAL_CAMERA_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PANTILT_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HOMING_CYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTOR_REVERSE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTOR_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOMENTARY_RELAY_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOHOME_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOFOCUSOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOIRISON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOIRISOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STARTPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STOPPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_TARGETTRACKINGON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_TARGETTRACKINGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INFRARED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INFRARED_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTO_FOCUS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTO_FOCUS_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SHUTTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_MONO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_NIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_CAM_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_CAM_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_HIGH_POWER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_LOW_POWER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_TX_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_TX_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_FOV_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLACK_HOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WHITE_HOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTOCAL_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_AUTOCAL_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_HIGH_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_LOW_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAYMODE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_DAYMODE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_D_ZOOM_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_D_ZOOM_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_IRIS_CAM_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ELC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANUAL_IRIS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_BURST_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BW_BURST_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_100","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_250","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_500","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_1000","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_2000","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_4000","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SHUTTER_1_10000","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_AUTO_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_MANU_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_MID","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AGC_GAIN_UP_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_MID","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MANU_GAIN_UP_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_MODE_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_MODE_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_END","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_MASK_REVERSE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BLC_SETUP_CURSOR_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AWC_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ATW_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_UP_PLUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_UP_MINUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_BURST_PHASE_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LINE_LOCK_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LINE_LOCK_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EL_ZOOM_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_EL_ZOOM_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRIVACY_ZONE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRIVACY_ZONE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTION_DETECT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_MOTION_DETECT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_D_RANGE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_D_RANGE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALL_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DIGITAL_FLIP_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DIGITAL_FLIP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_SMALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_MIDDLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_FOCUS_AREA_LARGE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_REVERSE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_LEFT_END_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_RIGHT_END_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SPEED_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SPEED_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ENDLESS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_ENDLESS_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_KEY_AUTO_PAN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_KEY_SEQ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_PAN_SORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PROPO_PAN_TILT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PROPO_PAN_TILT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PAN_LIMIT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PAN_LIMIT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_SEQ_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_MODE_SEQ_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_MODE_SORT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_PRESET_POS_ID_ALLCLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_1_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_1_POSI","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_2_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_2_POSI","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_3_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_3_POSI","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_POSI","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ALARM_IN_4_BW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_AUX_1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_1_VMD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_AUX_2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CONT_2_BW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_STARTPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOMODE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SUPER_DII_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SUPER_DII_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOFOCUSON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_NESW_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_USER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AREATITLE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SENS_UP_FIX_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LL_PHASE_INC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_LL_PHASE_DEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEANING_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CLEANING_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_START_PRESETSEQ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_STOP_PRESETSEQ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_AXISDLG_AUTO_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_ADDRESSSET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IFCLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_COMMANDCANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CAMPOWERON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CAMPOWEROFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOFOCUSON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MANUALFOCUSON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEAUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEINDOOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEOUTDOOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEONEPUSHMODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEONEPUSHTRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOEXPOSUREFULLAUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOEXPOSUREMANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AESHUTTERPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEIRISPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEBRIGHTMODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BRIGHTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_SHUTTERDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRISDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_GAINDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BACKLIGHTON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BACKLIGHTOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_KEYLOCKOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_KEYLOCKON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVEON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVEOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVERETURNON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_IRRECEIVERETURNOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_HOME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PANTILTRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_DATASCREENON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_DATASCREENOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEFORTARGETON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEFORTARGETOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOZOOMFORTARGET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOZOOMFORTARGETOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FRAMEDISPLAYFORTARGETON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FRAMEDISPLAYFORTARGETOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETOFFSETON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETOFFSETOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETSTARTSTOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE3","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETCHASE123","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY3","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTARGETENTRY4","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONFRAME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONDETECT1212","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTOTRACKINGLOSTINFO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONLOSTINFO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE1ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE1OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE2ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MOTIONDETECTIONMEASUREMODE2OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMORIENTATION_NONINVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMORIENTATION_INVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_OFF_AT_POR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CAMPWRPOR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_CYCLE_WIPER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_IRLAMP_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_IRLAMP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_SLOWSHUTTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_SLOWSHUTTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_CAM_STABILIZATION_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISION_CAM_STABILIZATION_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_MENU_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_MENU_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUENTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENUDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENULEFT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_MENURIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_ZOOMIN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZDLG_TOOLTIP_ZOOMOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_COMMAND_PTZ_STOP_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_MOUNT_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_MOUNT_DESKTOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_TOURRESUME_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_TOURRESUME_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_PANTILT_SPEED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_PANTILT_SPEED_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_COLOR_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_COLOR_BLACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_CAMERA_INIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_TIMER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INIT_COMPSCAN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CUSTOM_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_CUSTOM_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DISPINFO_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DISPINFO_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TALLY_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TALLY_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TILTREVERSE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_TILTREVERSE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_PANREVERSE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_PANREVERSE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DATAMIX_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_DATAMIX_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREFLIP_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREFLIP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_RGAIN_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_BGAIN_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_EXPOSURECOMPENSATION_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_APERTURE_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_NEGART","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_PICTUREEFFECT_MONO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_WIDE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYBRC300_SPCDLG_WIDE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHTMODE_SENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR1_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR1_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR2_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_SENSOR2_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_MANUAL_FUNC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONYRZ30_SPCDLG_DAYNIGHT_MANUAL_FUNC_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_EC_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AE_SPOT_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AE_SPOT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MIRROR_IMAGE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_MIRROR_IMAGE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FREEZE_IMAGE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_FREEZE_IMAGE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_INFRARED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AUTO_INFRARED_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IR_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_AUTO_IR_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_AUTO_IR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IMAGE_FLIP_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_CAM_IMAGE_FLIP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_COORDINATESOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_COORDINATESON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_FLASHBACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_BACKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_0","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_1","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_2","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_3","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_4","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_5","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_6","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_7","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_8","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_CHAR_9","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_ENTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_ESCAPE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_MENU_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_NIGHTMODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAK_SWITCH_BLC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_HOME","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_DEFINETOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_STARTTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_STOPTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_TOGGLEBW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_AUTOBW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_CAMERASETUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VCL_PRIVACY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTO_IRIS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_HALT","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_TEXTFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEAKER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MICROPHONE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PATH_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PTZ_COORDINATES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_BOTH_SIDES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_INDIVIDUAL_SIDES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_NO_READER_FOR_SIDE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NETWORK_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_TEXTFILES","Genetec_Sentinel_Resources_RE_L_S_STE_FILENAME_DEFAULT_FIRMWAREUPGRADE_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_ZONEMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CONTROLLING_UNIT_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSCONTROL_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSCONTROL_ZONE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWARE_ZONE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PTZ_NO_SERIAL_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_NIREMITTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_RVISON_NIREMITTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFRESH_DRIVE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_SENSITIVITY_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_SENSITIVITY_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_ZOOM_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_INIT_LENS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEAUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AEMANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_DELAYS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPBOX_ZONE_ARMING_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_AF_MODE_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SONY_SPCDLG_WHITEBALANCEMANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCDLG_WHITEBALANCEATW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LMW_SLOW_SHUTTER_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SLOW_SHUTTER_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_GUARDTOUR_ONLOGON","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_THUMBNAIL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CASH_REGISTER_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CASH_REGISTER_ID_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MENU_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_ERROR_OVERLAP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_VIDEO_PROGRESS_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_UNIT_EXTENSION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_UNIT_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SWAP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOLD_MOUSEDOWN_TO_EXECUTE_INSTANTLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTION_DOOR_SET_NEW_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTION_DOOR_REMOVE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_OR_OVERRIDE_DOOR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_INFO_OVERRIDE_DOOR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_FOR_DARK_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_SWAP_UTILITY","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECURSIVE_ACTION_WARNING_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_DISARMED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_EXTENSION_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ARM_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISARM_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_MASTER_ARM_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_OVERRIDE_SCHEDULE_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_PERIMETER_ARM_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ADDBOOKMARK_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STARTRECORDING_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STOPRECORDING_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_SERVER_ROLES_ASSOCIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINE_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIC_IN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_USERGROUP_WITH_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_UNITDEVICES_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOWALARMPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_PREVIOUS_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_NEXT_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAYENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAYCONTENT","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CYCLE_PREVIOUS_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CYCLE_NEXT_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DBCONNECTIONSUCCES_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DBCONNECTIONFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INITIALIZATIONFAILEDSPECIFIC_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INITIALIZATIONFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_ROLE_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONSUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_LOADFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_STARTSUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_STARTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPSUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_BACKUPFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_PROTECTIONTHRESHOLDEXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CCTV_KEYBOARD_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DEFAULT_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEO_FILES_STATS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LOGICALIDEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SYNCHRONIZING_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZ_UNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECENTLY_USED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_VIEW_ENTITY_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_VIEW_ENTITY_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESS_TROUBLESHOOTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANT_DRAW_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HEALTH_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DOOR_UNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_PERCENTAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNTIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERCENTAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_ABBREVIATION_GIGABYTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_LC","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_READING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_EDGE_ANALYTICS_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_CANCELOVERRIDE_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TRAIL_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_USER_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGES_FORCE_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOCATION_ALREADY_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_WATERMARK_NOT_SUPPORTED_BY_ALL_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPEVENTHISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPAUDITTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPINCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLYDISPLAYCHECKEDITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYALLITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETODELETEINUSEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDDELETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_BAR","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_DUE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CAMERAACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARCHIVERACTIVITYREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOFILEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_LPRMANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNAL_SYSTEM_DESCRIPTION_LPRMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROTECT_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DATABASE_NEEDUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_RTPSERVERSUCCESS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_RTPSERVERFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTOPPED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SERVERNOTRUNNING_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CREATEAGENTFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CREATEDEFAULTAGENTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATIONFAILED_PASSWORDERRORINFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE_CONNECTION_NOINFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE_CONNECTION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOSTUNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_DETECTION_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ON_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_OFF_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_TEST_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_TEST_ALL_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_VIEW_ALL_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_ON_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_OFF_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_MOTION_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_LUMA_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_CHROMA_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_VECTORS_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_MACROBLOCKS_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_LEARNING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORTPANE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_CANVASPANE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORTANDCANVASPANE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SILENCE_SOUND_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAINTENANCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EMAIL_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_ASF_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISPLAY_ENTITY_IN_SD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_OTHERTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_ADD_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_NOT_ACCESSIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_MUST_BE_WRITABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PORT_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CASH_REGISTER_MAPPINGS_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHORTCUT_USED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_RESTART_APPLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTIONS_APPLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_AUTHENTICATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_TAMPERED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_RUNNING_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_SPECIFIC_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESET_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_AREAS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PATTERN_STOP_REC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_PORT_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_UPNP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICK_TO_MODIFY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_PPROTECTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_EXPORT_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_LICENSEDENIED","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_PERMISSIONDENIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFEXP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_2CIFV","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOURCE_IP_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_H264ANDMJPEG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_JPEG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVEENCODER_BOTH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_DISK_GROUP_SHOULD_BE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_TRANSACTION_HEADER_TABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_TRANSACTION_DETAILS_TABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_FETCH_TRANSACTIONS_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_OUPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTP_STREAMING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VOLUME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENTHESES_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_MIX_YEARLY_MONTHLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_DAY_BEFORE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_INCOMPATIBLE_SCHEDULE_OPTIONS_DAY_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM_CODEC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTECTION_ENDING","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_METADATA_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISKGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODER_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_LAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_LUMA_EMPHASIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_VECTOR_EMPHASIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_H264_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DBALREADYEXIST_OVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATING_THUMBNAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THUMBNAILS_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCMINUS11_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PARAGUAY_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PARAGUAY_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARGENTINA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ARGENTINA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCMINUS02_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOROCCO_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MOROCCO_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTC_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SYRIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_SYRIA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MAURITIUS_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_MAURITIUS_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PAKISTAN_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_PAKISTAN_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_BANGLADESH_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_BANGLADESH_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ULAANBAATAR_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_ULAANBAATAR_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_UTCPLUS12_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KAMCHATKA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_KAMCHATKA_DAYLIGHTABBR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CUSTOM_FIELD_IS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_FIELDS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_WAIT_DOWNLOADING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHITE_BALANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSOR_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORTYPE_INTERLACED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORTYPE_PROGRESSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IQEYE_NUMBER_OF_VCAMS","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_EVENT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_SOURCE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_VIDEOFILE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_VIDEOFILELOST","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DB_INFO_SIZEONDISK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_QUADVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_SINGLEVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VIDEO_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOG_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_SETTING_REQUIRE_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_APPLICATION_NO_CAMERA_DISPLAYED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LOAD_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_ROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSION_IN_PROGRESS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POS_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS232","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS485","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RS422485","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IN_PROGRESS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE_FOR_X_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_DETECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE_INTERNAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY_TYPE_INSTANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_DELAY_TYPE_DELAYED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYINTRUSIONAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEINTRUSIONAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_DIAGNOSTIC_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_BYPASSED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_HAVE_THE_SAME_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING_FOR_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESULT_WILL_REFRESH_IN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISITOR_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PEOPLE_COUNTING","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVENTORY_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVESTIGATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AREA_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DOOR_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISITOR_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AREA_PRESENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_TIME_AND_ATTENDANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ELEVATOR_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VISIT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSION_DETECTION_AREA_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSION_DETECTION_UNIT_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ROUTE_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INVENTORY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DAILY_USAGE_PER_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_LOGONS_PER_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READSHITS_PER_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_READSHITS_PER_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ZONE_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_BOOKMARKS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MOTION_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VIDEO_FILE_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_TRANSACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ZONE_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_CONTROL_UNIT_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DOOR_TROUBLESHOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_CONTROL_UNIT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESS_RULE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CARDHOLDER_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_IO_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CAMERA_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVER_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVE_STORAGE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SYSTEM_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_AUDIT_TRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARM_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOHOME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_SSL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKED_BY_ON_MACHINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_AUTHENTICATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_TASK_COUNT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_IS_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_THE_DISK_DOES_NOT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROLEDATABASE_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLUGINDATABASE_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLUGINDATABASE_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS422","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS4854WIRES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_LINEDRIVERMODE_RS4852WIRES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_RECEIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_TRANSMITTER","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SERIALMODE_BIDIRECTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_VERYHIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_MEDHIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_MEDLOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PELCO_PRESET_VERYLOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOQUALITY_4CIFFULLMOTION30FPS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_AUDIO_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_ENTER_VALID_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOTRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DATABASE_NEEDUPGRADE_WITHINFO","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_ZONE_FORCED_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODERS_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIRECTORINITIALIZATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIECTORRTSPPORTUNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_CONFIGURATIONPROVIDERNOTYETSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_REDIECTORCONFIGURATIONADDRESSCONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_CONFIG_USE_DNS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_SECURE_COMMUNICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG320_MPEG4320","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG320_MPEG4640","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG384_MPEG4384","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG384_MPEG4640","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4320","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4384","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG640_MPEG4640","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG768_MPEG4OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG768_MPEG4640","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG960_MPEG4OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4320","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4384","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MJPEG1280_MPEG4640","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VMF_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TAMPERING_SENSIBILITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COAXITRON_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_AGENTSTARTING","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_ERROR_RETRY_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_AUTOSEEK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRINTEVIDENCE_CONFIRM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_SOME_INCOMPATIBLE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ACTIVITYTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACTIVITY_TRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_REPORTS_ACTIVITYTRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_CONFIGTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_SECURITYDESK","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_WEBCLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_INITIATOR","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_IMPACTED","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FILTER_ACTIVITY_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONCURRENT_LOGIN_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOGON_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VRM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SERVER_URL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_ISCSI_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_UDP_REDIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VRM_PLAYBACK_TCP_REDIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTION_HIGHER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFYLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_PLUGIN_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_PLUGIN_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBACTIVATION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATINGSECURITYCENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUALACTIVATION_PASTEORBROWSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEMANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VRM_LOGIN_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_COMMUNICATIONPROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_CANTCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_UNKNOWNPROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_BUSY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_BUSYDETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITYCENTER_LICENSESERVER_CANTCONNECTDETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDUNDANT_ARCHIVING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDBY_ARCHIVING_PRIORITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_CONFLICTRESOLUTIONFILES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_STOPANDRESOLVECONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESOLVECONFLICTINUSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASETORESOLVECONFLICTINUSEINFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESOLVECONFLICTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFLICTRESOLUTIONFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFLICTRESOLUTIONEXPLANATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_EXPIRED_ADMIN_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_WILL_EXPIRE_CHANGE_IT_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SUPERVISION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_OF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERITED_SUPERVISION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_OPEN_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOGON_DIALOG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICT_ACCESS_TO_CONNECTION_PARAMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_CURRENT_WINDOWS_CREDENTIALS_BY_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGEDREMOTE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_SELECTION_CHANGEREMOTEDETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DABASE_LOCATIONMISMATCHSERVERLOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPLACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEDEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLISHER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINTOOL_CERTIFICATEMAXCONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_ENTITY_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_MACHINE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_APPLICATION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_INITIATOR_APPLICATION_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_ACTIVITYNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_IMPACTED_ENTITY_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SAVE_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_BOOKMARK_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_BOOKMARK_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_UNIT_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_UNIT_IDENTIFY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ENTITY_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ENTITY_DISCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_PTZ_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATIVE_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MANAGERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CHOOSE_USER_ADMIN_RIGHT_OVER_PARTITIONNAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_IN_PROGRESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONFLICTRESOLUTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_WATERMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ENCRYPTION_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTAINS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BINDINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALS_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUMMARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WELCOME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRAMES_UC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTTOOL_PREVIOUSVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_PASSWORDEXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SUPERVISORREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_DISALLOWEDBYSCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_EXCEEDEDWORKSATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_GO_TO_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_SET_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_START_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_RUN_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PTZ_SPECIFIC_COMMANDS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPT_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_TEST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SAVE_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_TIME_OUT_OF_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_ACTIVATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CARDHOLDER_EXPIRATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_ACTIVATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_EXPIRATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_INTRUSIONUNITLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCRYPTING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPTING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_NOT_ENCRYPTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_SOURCE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TARGET_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_READ","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRITE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_CONNECTING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ALREADY_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ALREADY_EXISTING_ELSEWHERE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_BAD_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_LICSENSE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_DISCOVERY_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_VIDEO_DECODER_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_BAD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_UNEXPECTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BETWEEN_X_AND_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FROM_X_TO_Y","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_WELCOME","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_CANCEL_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_IMPORT_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_REMOTE_FILE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_ACTION_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_UPDATE_NEWPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTITYVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_ACTIVITY_TRAIL_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_CATEGORY_ACTIVITY_TRAIL_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_TRAIL_CONFIGURATION_PAGE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MOBILEDEVICESERVER_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MOBILEDEVICE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESOLVINGCONFLICTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIRECTORYSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOWACTIONSPROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DATABASENOTCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIRECTORY_DIRECTORYSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIRECTORY_DIRECTORYSTOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_UNIT_TO_ROLENAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPIREDMAPLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_UPPERCASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_LOWERCASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_NUMERICAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MINIMUM_OF_SPECIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELD_MUST_BE_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNITSWAP_SAME_SOURCE_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNITSWAP_SOURCE_IS_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_COUNT_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_DEVICE_MACHINE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_WILL_EXPIRE_TODAY_CHANGE_IT_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACKUP_DBSERVER_DBINSTANCE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_CERTIFICATE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_COMPLEXITY_NOT_RESPECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTE_ON_HIGHEST_PRIORITY_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETEARCHIVERDATABASE_DELETEVIDEOFILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_DELETE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITYCENTERDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_CLIENT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DECRYPT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DECRYPTION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DECRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDWEBLICENSEURLSCHEME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DECRYPTION_IN_PROGRESS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DECRYPTION_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_EDITOR_SUPPORT","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ROLE_IS_NOT_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WRONG_ENCRYPTION_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANIFESTFILETOOBIGDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANIFESTFILETOOBIG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALIDCONFLICTRESOLUTIONFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALIDCONFLICTRESOLUTIONFILEDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERRORWHILEREADINGFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_NIGHTTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_DAYTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFSETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUNSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUNRISE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COVERAGE_ALL_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_SUNRISE_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVERAGE_SUNSET_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUS_SIGN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUS_SIGN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOTLIST_MODIFICATION_TASK_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_LOAD_CUSTOM_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPT_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_NON_ENCRYPTED_MESSAGES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_THUMBNAIL_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURERESOLUTIONINHARDWARETAB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_PCM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G711","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_GSM0610","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G721","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_24","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_40","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G722","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G728","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G723_1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDSYSTEMID","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDVALIDATIONKEY","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALIDVALIDATIONKEYDETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STAR_MANDATORY_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CUSTOM_FIELDS_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLLOWING_CUSTOM_FIELDS_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_ACCEPT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOMFIELDNOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_GROUP_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON_IS_MANDATORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_SEEK_TO_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_RUN_TOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_HOME_RUN_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTEMPTS_COUNT_BEFORE_LOCK_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PASSWORD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_EXPIRY_NOTIFICATION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_STEPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_MAXIMUM_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_ADD_STEP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_TOUR_CLEAR_STEP_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_NO_INFRACTION_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_AUTO_FLIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_INFRARED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VCL_CAMERA_DIGITAL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_VIDEO_SELECTED_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_VIDEO_ALL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_ADD_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_EDIT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_ADD_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCEPT_REASON_EDIT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOAD_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DATE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DELIMITER_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIELD_LENGTH_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_DATE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_HOTLIST_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFLICTING_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TILE_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_USERINTERACTION_ASKFORTASKDELETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFIELD_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYFIELD_DISPLAY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON_ALLOW_MULTIPLE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BASE_URI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSL_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BIND_CERTIFICATE_TO_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RENDERING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REQUEST_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OUT_OF_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_PAN_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TILT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ZOOM_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_DATA_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DPI_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEVER_WARN_ME_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SUPERVISED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SUPERVISOR_OF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CUSTOM_FIELDS_NOT_INITIALIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ENCRYPTION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_IN_PROGRESS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_EXPIRES_TOMORROW_CHANGE_IT_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLAYBACK_WARNING_PRETRIGGER_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SHOW_OVERLAY_TASK_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_CAMERA_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_ERROR_OCCURRED_WHILE_PROCESSING_THE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOME_MANDATORY_VALUES_ARE_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_APPLICATIONID_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCRYPT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEXT_FILE_PARTIALLY_LOADED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALIDDBNAMEDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYFIELD_CANNOT_BE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ONLY_ALPHANUMERIC_CHARACTERS_ARE_ACCEPTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALUEFIELD_CANNOT_BE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_ROLLBACK_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_MISSINGKEYVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_SET_CF_UNIQUE_ON_CREATION","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_READONPLATE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOADING_FILE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LICENSE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_INVALID_CONTACT_ADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_IMPORTED_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_COMMENTED_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTTOOL_SUMMARY_NUMBER_OF_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINENUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOMANYERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_SELECTED_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_MOTION_MASK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TIMELIMIT_MUST_BE_HIGHER_THAN_ZERO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETECLATITUDELONGITUDE_EXAMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_BACKUPRESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_INTRUSION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_INTRUSION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRIGGER_NETWORK_DETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_VIDEO_RECEIVING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_VIDEO_WRITING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_AUDIO_RECEIVING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_AUDIO_WRITING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AVAILABLE_DATABASE_DISK_SPACE_NOTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY_ARM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STANDARD_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TWILIGHT_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SCHEDULE_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SCHEDULE_TIMERANGE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_SCHEDULE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWILIGHT_SCHEDULE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SCHEDULE_CREATION_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_AUTHENTICATION_REQUIRE_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPANSIONTOMAIN_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTIVATEDIRECTORYROLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEACTIVATEDIRECTORYROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVATEDIRECTORYROLEDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEACTIVATEDIRECTORYROLEDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANTCONNECTGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANTCONNECTGS_DESC_PORTOUTOFRANGE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DRIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEREQUIREREBOOT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEGENETECSERVERCONNECTPARAM_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_VISITOR_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_CANTSUPERVISESELF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_NO_AGENT_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_THE_NOTATIONS_MEAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_HOUR_MINUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_SECOND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_AM_PM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_HOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_WITH_LEADING_ZERO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_FORMAT_NOTATION_WITHOUT_LEADING_ZERO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_FORMAT_NOTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBNET_MASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SUBNET_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_CIDR_BLOCK_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_USER_ACTIVE_DIRECTORY_ACCOUNT_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_IMPORTERROR_NOREPLACECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INVALID_MULTICAST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_DBSERVER_DBINSTANCE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_DBSERVER_DBINSTANCE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_SYNCHRONIZATION_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASONS_RETAIN_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENFORCED_HIT_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_ENFORCED_HIT_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCED_HIT_ATT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ACKNOWLEDGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_VIDEO_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DISPLAY_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PROCEDURE_URL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DEASCTIVATE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DEASCTIVATE_ROLES","Genetec_Sentinel_Resources_RE_L_S_STE_MIGRATIONTOOL_APPNAME_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MP","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_COPYOTHERSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264BPPLUS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPSD","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED720P","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED720PFULLFRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_H264MPFIXED1080P","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_BOSCH_OPERATIONMODE_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CROPIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOIMAGESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_PRIVILEGE_TO_ADD_UNIT_TO_ARCHIVER_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_PROPERTIES_ADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOGGLE_OUT_OF_PROCESS_COMPONENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_EXPORT_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_HIT_REPORT_EVIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EXPORT_REPORT_NAME_TYPE_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_REPORT_NAME_TYPE_PRINTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_FILTER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_HEALTH_MONITORING_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_HEALTH_MONITORING_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_HOTLIST_EDITOR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_LOADFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_DBCONNECTIONSUCCESS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_DBCONNECTIONFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_IMPORTED_EVENT_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATCH_FLOOR_CREATE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_SELECT_DESTINATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_DEINTERLACE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ADD_RECORD_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DELETE_RECORD_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MODIFY_RECORD_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_FILTERING","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_INVALID_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_MODIFY","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_EMPTY_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LOGGING","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LOGGING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_PRIVACY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_CREATION_OUTCOME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ACTION_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SPECIFYDOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CHARACTER_IN_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_SHOW_USER_DOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPY_PROCESS_COMPLETED_SUCCESSFULLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FINALIZING_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPY_PROCESS_COMPLETED_WITH_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_OPTIONS_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_ENTITY_TYPE_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_SOURCE_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_WIZARD_SELECT_DESTINATIONS_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEARCH_MEMBER_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVING_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVING_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_DISCONNECTED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_DISCONNECTED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATIONSTOPPED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATIONSTOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_APPLICATION_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CONNECTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CONNECTION_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEAUTOMATICBACKUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEAUTOMATICBAKCUP_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHCPUUSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHCPUUSAGE_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHMEMORYUSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_HIGHMEMORYUSAGE_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWDATABASESPACE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWDATABASESPACE_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OFFLOAD_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OFFLOAD_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_PATROLLER_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_PATROLLER_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_POS_DATABASE_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_POS_DATABASE_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STOPPED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ROLE_STOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_RTPPACKET_LOSS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_RTPPACKET_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STOPPED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SERVICE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SYNCHRONIZATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SYNCHRONIZATION_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_VIDEOSIGNAL_LOSS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_VIDEOSIGNAL_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_VIDEOUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACCESSCONTROLUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INTRUSIONDETECTIONUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_GENETECSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACCESSMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_LPRMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_MEDIAROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ACTIVEDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATION_SECURITYCENTER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATION_OMNICAST","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_REPORTMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INTRUSIONMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_POINTOFSALE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_ZONEMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_SECURITYDESK","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_LPRUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_HOTLIST_INVALIDENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_MODIFIED_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_REMOVED_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EVENTSHEADER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAILSHEADER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CONFIGURATIONPARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERSUPERVISORDIFFERENTDOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_DOWNLOAD_ONLY_AT_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_DOWNLOAD_EXPEDITIVE_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CPUUSAGE_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_MEMORYUSAGE_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASESPACE_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_PACKETLOSS_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DETAIL_LONG_WITHTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERIOD_OF_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEACTIVEDIRECTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREFERRED_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUXILIARY_ARCHIVER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_LC","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_TIMELINE_AUTOHIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_NOT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_NOT_INITIALIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_START","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_UPDATING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_SYNC_PICTURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_DELETING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CREATING_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_INSERT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_PROXY_DENIED_MODIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_COMPONENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANNOTATION_EMAIL_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENT_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_LOGGING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_AND_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_DETECTION_SETTINGS_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JUMP_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JUMP_BACKWARD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_CUSTOMFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLING_MIGHT_AFFECT_SYSTEM_PERFORMANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SNAPSHOTS_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SORT_BY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EVENTSOURCE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SEVERITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HEALTHEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_SEVERITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JOGWHEEL_PLAYING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_JOGWHEEL_PAUSED","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME_PLURAL","Genetec_Sentinel_Resources_RE_L_S_STE_CONFIGTOOL_ERRORCOPYCONFIG_CONSTRAINTVIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_UPDATE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_VERSION_COMPATIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_VERSION_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_FORENSIC_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_FORENSIC_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_AUXILIARY_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXALLOWEDBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_MEDIAPLAYER_HOTFIX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_MIGHT_AFFECT_STABILITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_DECODERS_IN_ONE_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERS_PER_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAVIGATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_FILE_ANALYSER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONVERT_SHARED_TO_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_CONNECTIONLOST_RETRYING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_BADGE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PACKED_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SERVICE_MODE_ENABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SERVICE_MODE_DISABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANOTHER_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICE_MODE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MINIMIZE_SPLASHSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CANCEL_SPLASHSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_WEBCAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICEURI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYCHRONIZE_AUTOMATICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_ENTER_ADDRESS_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_CAMERA_EXPOSURE_ON_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_START_SUSPENDED_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_ADVANCED_DATABASE_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_MAX_LOGOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_STORAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_HIT_RECORD_STORAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_RECORD_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_OFFLOAD_QUERY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_PATROLLER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_LOGIN_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_DATABASE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_GENERAL_CONNECTION_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_COMMON","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_HOTLISTS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_OVERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENABLE_NEW_WANTED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_SHOW_COMMENT_FORM_NEW_WANTED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_EXPIRATION_NEW_WANTED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_HOSTLIST_HIT_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ALLOW_SAME_HITS_ROW","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PAUSE_READ_PLATES","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ALLOW_POPUP_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_FIRST_ON_TOP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DISPLAY_HITS_BY_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ADVANCED_OVERTIME_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_LINK_READ_PERSISTANCE_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MINUTES_TO_DUE_VEHICLES","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_OVERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_TIRE_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_WHEEL_IMAGING_ENFORCED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_PARALLEL","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_45_DEGREE_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_TIRE_CAM_PLATE_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MAXIMUM_VEHICLE_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DISTANCE_TRAVELLED_BEFORE_SAVING","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_SHARED_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_ODOMETRY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_GPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_CONSECUTIVE_INVALID_GPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_NOISE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_INIT_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAPPING_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS_DISTANCE_TOLERANCE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_GPS_ODOMETRY_CALIBRATION_TOLERANCE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_MAX_DISTANCE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_NAVBOX","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SHUTDOWN_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_ODOMETRY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_USE_REVERSE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_READ_CAR_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_POSITIONING_READ_MOVING_BACKWARDS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_LIVE_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_CONNECT_TO_SC","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_ENCRYPT_COMMUNICATION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_UPDATE_PROVIDER_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_LIVE_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_READS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_UNIT_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_PERIODIC_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_METHOD","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_DRIVE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_USE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_PUBLIC_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_INCLUDE_IMAGES_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_INCREMENTAL_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_MAX_FILE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_FORCE_OFFLOAD_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_DELETE_RECORD_OFFLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_DEFAULT_PLATE_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_HIGHLIGHT_PLATE_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_OVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_REVIEWS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_HOTLIST_STATUS_LED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_AUTO_POPUP_DOWNLOAD_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SOUNDS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_PLAY_SOUND_VEHICLE_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_PLAY_SOUNDS_MINIMIZED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_MINIMIZE_BUTTON","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_CONTEXT_MENU","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_START_MINIMIZED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SILENT_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_MAIN_BUTTONS","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_MILLISECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPEN_IN_WINDOWS_EXPLORER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_COMBOBOX_DATERANGE_LAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_ON_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_PLAYBACK_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TRIGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_SIMULTANEOUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_DOWNLOAD_LAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_LAST_FRAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_NEXT_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_START_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_STOP_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_START_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRICKLING_STOP_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_BEFORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_SYNCHRONIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CONFIGURATION_CHANGE_SYNC_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CONFIGURATION_CHANGE_SYNC_FAIL_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SYNCHRONIZE_FROM_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STAY_IN_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YESTERDAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_OF_WEEK_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_MODIFY_SHAREABLE_PARTITION_IMPACT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_REMOVE_SHAREABLE_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_REMOVE_SHAREABLE_ACCEPTED_USER_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_ADDING_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_REMOVING_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUXILIARY_ARCHIVER_CAMERA_ASSOCIATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ENTRANCE_AND_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_AUXILIARY_ARCHIVER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACK_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALGORITHM_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOAD_FORENSIC_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISPLAY_FORENSIC_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GET_FORENSIC_CONFIGURATION_FROM_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MTTR","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MTBF","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_FAILURES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_AVAILABILITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UPTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXPECTED_DOWNTIME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_UNEXPECTED_DOWNTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_COLORS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_CURRENT_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORENSIC_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATISTICS_NOT_AVAILABLE_OFFLINE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATISTICS_NOT_AVAILABLE_HEALTH_EVENT_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HEALTH_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CALCULATION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_NOTAUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SYNCHRONIZING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SYNCHRONIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_INSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_UNINSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_UNINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_APPLICATION_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_INSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_PUBLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_UPDATE_UNINSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NOTIFICATIONS_HEALTH_EVENT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TRICKLING_ARCHIVING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALID_MAC","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INVALID_SID","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNAUTHORIZED_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNAUTHORIZED_DISK_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_AUTOMATIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_SHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SYNCHORNIZATION_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_FEEDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CAPTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_WANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_ENFORCE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_REJECT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_NO_INFRACTION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_LABEL_REQUIRES_INTERNET","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_ACCEPT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_ONLINE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_OFFLINE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_MOVED_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_LOW_BATTERY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ASSET_LOW_BATTERY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ASSET_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_ASSET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ASSET_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ASSET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ASSET","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_EXITED_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENTERED_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSETMANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDDELETEASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_EXCEPTION_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_COMPLETED_WITH_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_IN_PROGRESS_X","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANNOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANEACHDAYSELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DATABASECLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIT_NOT_ENFORCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANUP_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASECLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEANUP_DBSERVER_DBINSTANCE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STEP_X_OF_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT_WITH_X_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_AUTO_ENFORCE_AFTER_ACCEPT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLERS_AND_SHARPS_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_SERVICES","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_ENTITLED","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_INSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_SYNCHRONIZED","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_SYNCHRONIZING","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UNINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UNINSTALLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITICAL_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOLTIP_NOTIFICATIONS_REMAINING_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_G711_VERINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_AAC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_BONJOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONHIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONREAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDWHENMINIMIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKBUFFERREJECTPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKBUFFERREJECTCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUXILIARY_ARCHIVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDGERECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DIRECTORY_FAILOVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_BASIC","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_ADVANCED_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_GIS","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GO_TO_PREVIOUS_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GO_TO_NEXT_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_PLATE_VALID_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLIST_FILTERING_LANGUAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_LATIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_ARABIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOBAL_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HORIZONTAL_FIELDOFVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTICAL_FIELDOFVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_OVERTIME_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_HOTLIST_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_PERMIT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_AUTO_ENFORCE_SHAREDPERMIT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ACTIVE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ACTIVE_ALARMS_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_WAVELET","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SELECT_PLAYBACK_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_ALL_PLAYBACK_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_OFFLOAD_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_DIRECTORYREDIRECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_TERMINATED_SUCCESSFULLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_CONNECTED_TO_SECURITYCENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FRONT_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REAR_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CHANGED_SUCCESSFULLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_IS_NOT_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_EXIT_ACTION_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_EXIT_ACTION_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_WILL_BE_DONE_TO_LOCAL_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWARCHIVEDISKSPACE_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LOWARCHIVEDISKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_USE_IPV6","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_EXTERNAL_TOOLS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEW_LOG_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_LAST_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_VIDEO_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPOSURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTSIDE_WEATHER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOWNLOAD_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRATION_IN_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_TASKBAR_WHEN_FULLSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_ENABLE_PRINTING","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_IOSERVICES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CLEAR_DB_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_DROP_DB_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OWNER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DATABASE_FAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER_MIRRORING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER_BACKUPANDRESTORE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_FAILOVER_DATABASES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STOPPED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIRECTORY_STOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_CAMERA_ORIENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_FULLSCREEN_OFFSET_BOX","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SUSPEND_READS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESUME_READS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAY_ERRORS_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_RETRIEVE_CURRENT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PCT_SHOW_DEFAULT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OFFLOAD_AND_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OFFLOAD_AND_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDING_SERVER_REQUIRE_LICENSE_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_SERVER_LICENSE_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGE_LICENSE_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFYLICENSE_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_FAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_FULL_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_PARTIAL_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GENERATE_FULL_BACKUP_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOUND_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACKNOWLEDGEMENT_BUFFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_DISK_SPACE_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_NUMBER_OF_ACTIVE_ALARMS_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_CONNECTION_TO_DIFFERENT_DIRECTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_AUTO_RECONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINSUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_ACCOUNTDEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_WRONGPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_ACCOUNTLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_INVALIDCREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGINFAIL_PASSWORDEXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATECOMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUALCAPTUREADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_ADDFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_UNRESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_READHITRATIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_TYPE_TIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITUSERACTION_ENFORCED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_AUXILIARY_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_ACTIVATE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGE_ACTIVE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ACTIVATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_GEMPEG4","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTARTING_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TRIGGER_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ERROR_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECIPIENT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_IS_MANUAL_CAPTURE_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_8KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_11KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_16KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_22KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_24KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_32KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_44KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_8KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_12KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_16KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_24KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_32KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_40KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_48KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_64KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_96KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_128KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_LICENSE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_LICENSE_WARNING_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ERROR_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_OCCURRENCE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_CAMERAS_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_REPORT_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_QUERY_TOO_COMPLEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_BACKUP_RESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SOME_CHANGES_NOT_SAVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESET_OPTIONS_TO_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LAUNCH_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PERMIT_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_ZONE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EXPORT_INCOMPLETE_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_INSERT_CUSTOMFIELDTYPENOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOMFIELDVALUENOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_UPDATE_CUSTOMFIELDTYPENOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_GUARD_TOUR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLOAD_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDRESS_CANNOT_BE_RESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_AGENT_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_CAMERAS_WILL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_TRICKLE_ON_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_TRICKLE_ON_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_AGENT_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_TRANSMISSION_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RTP_PACKET_LOST_RECOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_VRMCONNECTIONFAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_VRMCONNECTIONATTEMPT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LIVE_HEALTH_MONITORING_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_LIVE_HEALTH_MONITORING_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGE_ACTIVE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_ACTIVATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_CAMERAS_THAT_SUPPORT_TRICKLING_ARE_LISTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_ACTIVATION_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLEAR_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAVORITES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_ADD_FAVORITE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_REMOVE_FROM_FAVORITES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MOVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCOVERY_REQUEST_FAILED_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_MLPI_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_DIRECTORYFAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEFAILOVER_MAINDBLOST","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASEFAILOVER_MAINDBRECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIFFERENT_DATABASE_CONFIG_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_LICENSE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_APPLICATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_SERVERS_NOT_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SECONDS_ROUNDED_UP","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DESTINATION_MUST_BE_DIFFERENT_FROM_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CASH_REGISTER_MAPPINGS_INVALID_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITIONNING_NOT_SUPPORTED_3D_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ACTIVATE_DIFFERENT_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WARNING_EVENTS_WILL_NOT_BE_DOWNLOADED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DUE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ACTIVATE_DATABASE_DELETE_DIFFERENT_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_UPDATE_STATUS_UPTODATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PLATE_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_TO_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOMATIC_BACKUP_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTOMATIC_BACKUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICASTSDK_NOT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_OPEN_TO_HEALTH_MONITORING_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_LOGIN_TO_HEALTH_MONITORING_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SEND_CLEAR_USER_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_RESOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_INTRUSIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONTACT_US","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEINFO_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SYSTEM_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_CURRENT_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_ALL_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_CALIBRATE_ALL_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MOTIONDETECTION_CALIBRATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_CALIBRATE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_GLOBAL_CARDHOLDER_SYNC_CANNOT_RETRIEVE_HOST_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYBROWSER_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PLUGINS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_DIRECTORY_ON_FIRST_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_CALIBRATE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRICKLING_ARCHIVER_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ACCESSCONTROL_HEALTHHISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ACCESSCONTROL_HEALTHHISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_MOTIONMASK_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTIONDETECTION_MOTIONMASK_EMPTY_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_CONNECTED_TO_FEDERATE_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_ACTIVATE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUESTION_CANCEL_OFFLOAD_AND_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUESTION_CANCEL_OFFLOAD_AND_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RESTORESUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DATABASE_RESTOREFAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CLEANUP_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CREATION_IN_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_DROPPING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_STARTING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_WAITING_FOR_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SAVED_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DO_YOU_WANT_TO_SHUTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_CAMERA_ORIENTATION_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_LOG_ON_THROUGH_MOBILE_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_SMOOTH_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_AFFECT_USER_EXPERIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TRICKLING_NO_FILTER_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_TIME_HAS_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_SHARPS_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_CLEAR_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTING_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SERVEROFFLINE_DBCORRUPTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DROP_DATBASE_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_DROP_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTRUSION_UNIT_TAMPER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_MENU_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_INSUFFICIENT_PRIVILEGES_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERTIME_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ACTIVATE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REFRESH_DATABASE_STATES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_SELECTION_BOTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_DUPLICATE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_ADDRESSES","Genetec_Sentinel_Resources_RE_L_S_STE_HOTLISTFILTER_LOGGING_REMOVED_DUPLICATE_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNITCONNECTION_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_CONTEXTCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATIONMODE_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUXILIARY_ARCHIVER_ADD_OMNICAST_FEDERED_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GOTO_PREVIOUS_CONTENT_IN_CYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_GOTO_NEXT_CONTENT_IN_CYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOW_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_STE_LABEL_APPLYING_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_VISITOR_PROPERTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_STOPPED_FOR_AGENT_RUNNING_ON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_RESTORED_FOR_AGENT_RUNNING_ON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEW_DIRECTORY_FAILOVER_CONFIG_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESTART_MAIN_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_KEEP_EXPANSION_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEW_FAILOVER_CONFIG_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_VIEW_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABOUT_COPYRIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISMISS_HEALTH_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_POSITIONING","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_UNIT_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_CONNECTION_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_CONNECTION_NOTAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_OFFLOAD_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_NOINFO","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_GPS_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ODOMETRY_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_CAMERAS_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_CAMERAS_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_POSITIONING_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_MAP_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_UNIT_STATE_INFOS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SHOW_VEHICLE_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_DISPLAY_STREAM_USAGE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STREAM_USAGE_AUTOMATIC","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ALREADYCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_WAIT_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREPARING_CANVAS","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TRIGGER_INTRUSION_ALARM_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_TILT_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENSTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PTZ_SERIALPORT_NOT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_EXTENSIONTYPE_SMC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_EDGE_PLAYBACK_REQUESTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SENTRY360_CENTERCALIBRATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CALIBRATE_LENS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPED_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOT_ENOUGH_FREE_SPACE_ON_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVEPRESET_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CREATE_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALZOOM_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RFID_USB_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BADGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_WHEN_CARD_IS_READY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_FIRST_SEEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_LAST_SEEN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRINT_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ASSOCIATE_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ASSOCIATE_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DENY_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARD_REQUESTS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BATCH_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENROLL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIAL_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEED_CHANGE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE_TO_MOBILESHARPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE_TO_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK_PATROLLER_HOTFIX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLLBACK_SHARPS_HOTFIXES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDITIONAL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BADGE_PRINT_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACK_CONDITION_PENDING","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_READY_TO_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_CONDITION_CLEARED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_FORCIBLY_CLEARED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_PAN_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_PAN_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_TILT_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TILT_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_PAUSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TYPE_CREDENTIAL_REQUEST_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTCANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CREDENTIALREQUESTCOMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ROLE_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_DIAGNOSTICS_ROLE_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAYONANALOGMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALOGMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_EDIT_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_JPEG2000","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRY_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_EDIT_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NEWWANTED_EDIT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_PLAYBACK_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_TILE_OR_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADDITIONAL_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ANALOGMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BLOCK_UNBLOCK_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_MONITORGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_MONITORGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOGON_NOT_CONNECTED_TO_SC_PASSWORD_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGONABORTED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_MISSINGREQUESTUSERCHANGEPASSWORDEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_CLEAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSPARENCY_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOLERANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_NEW_WANTED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CREDENTIAL_REQUEST_HISTORY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_CREDENTIAL_REQUEST_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CREDENTIAL_REQUEST_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_CARDREQUEST_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUESTING_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTING_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_CUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_CUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_DATE_QUEUED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_DATE_PRINTED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_REQUESTER_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_REQUESTER_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_PRINT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_CREDENTIAL_PRINTED_BY_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWWANTED_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_NEWWANTED_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_MANAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_REQUEST_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOPAN_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PANORAMIC_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_NO_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_WINDOWS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_SECURE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_TYPE_SECURE_NAME_AND_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_ELAPSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_READ_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_TYPE_LOCAL_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLOAD_TYPE_WCF","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_READS_ON_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HITS_ON_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_GROUPING_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_GROUPING","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_GROUPING_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_GROUPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUB_TOTAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NUMBER_OF_READS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NUMBER_OF_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ANALOG_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERA_BLOCKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLED_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PERMITNAMEMATCHCATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STREAMINFORMATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CALIBRATE","Genetec_Sentinel_Resources_RE_L_S_STE_COLHEADER_ACTIVE_DIRECTORY_SYNCCREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPAZ_SIGNATURE_PAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYMO_CARD_SCANNER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOPAZ_SIGNATURE_PAD_INI_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOPAZ_SIGNATURE_PAD_INI_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKING_FOR_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CARD_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCANNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYZING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTRACTING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_CARD_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_SCANNING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AN_UNKNOWN_ERROR_OCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_SCANNING_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_DYMO_CARD_SCANNER_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOPAZ_SIGNATURE_PAD_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SETCOORDINATES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CALIBRATIONASSISTANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FETCHINGACTUALPTZPOSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLBOUNDARIESFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGMAXIMUMZOOMFACTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTOMINIMUMZOOMFACTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGTILTBOUNDARIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETERMININGPANBOUNDARIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCELLINGCALIBRATIONASSISTANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOMLEFTFOVCALIBRATION_DIRECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPRIGHTFOVCALIBRATION_DIRECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TESTABSOLUTECOORDINATES_DIRECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_PAN_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOTTOMRIGHTFOVCALIBRATION_DIRECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPLEFTFOVCALIBRATION_DIRECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_MONITORGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMAGEEDITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_UNDO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_REDO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_ROTATERIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_ROTATELEFT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_FLIP_HORIZONTALLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_FLIP_VERTICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_CROP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_TRANSPARENCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEEDITOR_ORIGINALPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEEDITOR_CURRENTPICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMAGEEDITOR_LOCK_AR","Genetec_Sentinel_Resources_RE_L_S_STE_IMAGEEDITOR_CROPPINGUNIT_PIXELS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_IMAGEEDITOR_TITLE_UNSAVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_VIDEOMODE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_ANALOGMONITORINOTHERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BADGE_PRINT_ACTIVITY_TRAILS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATERSERVICE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERDISPLAYCAMERANAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE_COLORBAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECODERSTARVEMODE_LASTIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REDUCING_VIDEO_RETENTION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_MONITORGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOFIFY_MONITORGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETE_MONITORGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOFIFY_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AC_READY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERY_READY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPLOAD_PICTURES_TO_ACTIVE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_SOURCECONDITION_ACK_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_INVESTIGATED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_INVESTIGATED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_INVESTIGATING","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMSTATE_ACKNOWLEDGEMENT_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_AS_DEFAULT_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_NEW_ENTITIES_IN_THE_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_INVESTIGATING","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYONANALOGMONITOR_CAMERA_UNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYONANALOGMONITOR_SEQUENCE_UNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYVIDEOCONTROLBUTTONSONTILE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_ALARM_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTDOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_MIX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BALANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGHSPEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOONLIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_BLUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_RED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SHARPNESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_ILLUMINATIOMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_AUTOEXPOSURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SHORTEXPOSURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_DAYNIGHTMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY_60HZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_SWITCHINGGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_TOGGLEGUARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_FREQUENCY_50HZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_LOWLIGHTMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_EXPOSUREWINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_CAMERA_OR_SEQUENCE_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_ACKREASON_FORCIBLY_ACKED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ALARM_SHOW_INVESTIGATE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ALARM_SHOW_ACK_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_FORCE_ACK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_FORCE_ACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_INVESTIGATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLETOAUTOCALIBRATE_ZOOM1X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLIPCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_TILT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TILT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USECENTERANDZOOMBOX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANALOG_MONITOR_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANALOG_MONITOR_DISCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_AND_ENROLL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDZOOMENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTERONCLICKENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOMBOXCENTERONCLICKENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDPTZCALIBRATIONNEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENHANCEDPTZ","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANNOTREACHTHATOBJECT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RECALCULATEBOUNDARIES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USETHISVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COORDINATEPASSEDBOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBSERVEDVALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CALIBRATEPTZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_JAPANESE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_PRINT_CREDENTIALS_NO_BADGE_ASSOCIATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_ALL_CARDHOLDERS_HAVE_CREDENTIALS_TO_PRINT_DO_YOU_WANT_TO_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWINTRUSIONUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYINTRUSIONUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDANDDELETEINTRUSIONUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PC_AND_ANALOG_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_DISPLAY_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EDIT_CARD_REQUEST_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_CARD_REQUEST_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CANNOT_BE_CHANGED_MUST_BE_RESET_BY_ADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_WHEEL_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_EXPORT_FULL_RES_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CARDHOLDER_STATUS_SYNCHRONIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VIOLATION_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALIDNETWORLADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICE_VEHICLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_DUPLICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALREADY_PROCESSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSON_OF_INTEREST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FELON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BE_ON_THE_LOOK_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_WANTED_STOLEN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TIREIMAGES_SET_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_CAMERATREE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_CAMERATREE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTIC_FAILED_TO_LOAD_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ARMING_STATE_ALARM_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULL_STATION_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_DISCOVERY_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_BASIC_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FILE_ASSOCIATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DENY_CARD_REQUESTS_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULD_NOT_LOAD_ROLE_CONFIGURATION_USING_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULD_NOT_FIND_THE_ROLE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUXILIARY_ARCHIVER_ROLE_SUCCESSFULLY_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WHILE_STOPPING_AUXILIARY_ARCHIVER_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUXILIARY_ARCHIVER_ROLE_SUCCESSFULLY_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WHILE_STARTING_AUXILIARY_ARCHIVER_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESSING_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_USER_NAME_IN_TRAY","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_UI_SHOW_PATROLLER_NAME_IN_TRAY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGURE_MANUFACTURERS_EXTENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OVERTIME_REGULATIONS_ORDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PRIMARY_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECONDARY_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_WRITE_TO_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVING_DISABLED_ON_THE_ARCHIVER_REASON_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PATROLLER_UPDATE_ALL_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_NOTIFICATION_CARDREQUEST_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOTRANSMISSIONMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOWFIRMWAREUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOMODEPUSHTOTALK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOMODEFULLDUPLEX","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVE_CONFIG_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOREDENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_EXPIREDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INACTIVECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_LOSTCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_STOLENCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_UNASSIGNEDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWITCHTOMAPMODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SWITCHTOTILEMODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_PLAYBACK_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWEVENTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWCANVAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GTAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GTAP_FORUM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWALARMLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_GROUPBOX_CONVERSATION_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERVAL_BETWEEN_TIRE_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STARTCONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONSUBJECT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOWRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SET_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_USER_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_ACCESS_PERMISSION_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_READER_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_THREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_THREAT_LEVEL_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_NO_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_DOES_NOT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_INTRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_TOTAL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_UPPERCASE_LETTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_LOWERCASE_LETTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_NUMERICAL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_N_SPECIAL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_DIRECTLY_ASSOCIATED_WITH_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LACKS_PRIVILEGES_TO_CHANGE_OWN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNIKEY_USB_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_THREATLEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_THREATLEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_START_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_STOP_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_NOTIFICATIONS_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_TRAY_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CONVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUARD_TOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CCTV_KEYBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRY_SENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE_CARDANDKEYPAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE_CARDORKEYPAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READERMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SET_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SETTHREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SETTHREATLEVEL_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_RESET_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RESETTHREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RESETTHREATLEVEL_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTPARTICIPANTSTOINVITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDINVITATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVITETOJOINCONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHERPARTICIPANTSINVITED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOYOUJOINCONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAITINGPARTICIPANTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHENJOININGCONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDEMYVIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_OPEN_TOO_LONG_CONFIG_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEWCONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_QUERY_COMPLETED_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_QUERY_COMPLETED_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TRAIL_REMOTE_SD_SUBSCRIBERS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_SUBSCRIBE_REMOTE_SD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_UNSUBSCRIBE_REMOTE_SD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_ACTIVATION_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREATLEVEL_DEACTIVATION_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_PERMISSION_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULL_DUPLEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HALF_DUPLEX_PUSH_TO_TALK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERIT_LPRFILES_FROM_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_CONFIG_INHERIT_FROM_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SUBJECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONVERSATIONOVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REMOTE_SECURITY_DESK","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REMOTE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_IDENTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOPARTICIPANTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOWMYVIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDPARTICIPANT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_POKEPARTICIPANT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LEAVECONVERSATION","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_ERROR_INVALID_PARAMETER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULLSCREEN_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_SELECTED_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KICKOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_THREAT_LEVEL_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMAIL_RESTORE_DEFAULT_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM_TWAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWAIN_CAPTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_PERMISSION_INSUFFICIENT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HARDWAREINVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_UNITTYPE_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_UNITTYPE_FIXED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILL_THE_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_FULL_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_VIDEO_ENABLE_QUALITY_DEGRADATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLING_MIGHT_AFFECT_SYSTEM_PERFORMANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_PHYSICALADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIGH_CPU","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COULD_NOT_LOCATE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYWEAK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_WEAK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_GOOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_STRONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYSTRONG","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIC_FOLDER_CACHE_LOCATION_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_AND_CHILDREN_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_AND_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_AND_CHILDREN_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_AND_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_SERVER_PUT_SYSTEM_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTORENAMESNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILEALREADYEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILENAMETOOLONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_FREEACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POWER_FAILURE_ACCESS_CONTROL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ELEVATOR_CABIN_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CABIN","Genetec_Sentinel_Resources_RE_L_S_STE_NETWORK_NAME_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTQUERY_UNITMODEL","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_BACKUP_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FLOOR_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRECT_PLATE_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_READ_CORRECT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND_READ_CORRECT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEW_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RELOAD_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONNECTED_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THIS_TASK_CANNOT_BE_REMOTELY_CONTROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_THIS_TILE_CONTENT_CANNOT_BE_REMOTELY_CONTROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_INVALID_LICENSE_HARDWARE_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROP_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_USER_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_USER_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETMYCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_BEFORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BELONGS_TO","Genetec_Sentinel_Resources_RE_L_S_STE_ALARMREPORT_COLUMNNAME_ALARMPRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATEPARTIALLYSUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATEFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDITING_NOT_SUPPORTED_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_WAITING_FOR_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_MEDIA_ROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_INITIAL_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_REQUESTING_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_SEARCHING_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_READING_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_CONNECTING_TO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_GETTING_DATA_FROM_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_NO_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ZEROCONF","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_REPORT_TO_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_UNASSIGNEDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_UNKNOWNCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_EXPIREDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_INACTIVECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_INACTIVEPERSON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_UNASSIGNEDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_EXPIREDCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INACTIVECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_LOSTCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_LOSTCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_STOLENCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_STOLENCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEVICES_COULD_NOT_BE_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_BACKUP_ERROR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_RESTORE_ERROR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_INTERLOCK_SAME_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ETHERNETPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_FILE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INVALIDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDINVALIDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INVALIDACCESSRULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_INSUFFICIENTPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_OUTOFSCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENFORCE_AFTER_ACCEPT_PERMIT_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENFORCE_AFTER_ACCEPT_SHARED_PERMIT_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_CHILDREN_IN_PARTITION_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_CHILDREN_IN_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSERT_AREA_ONLY_IN_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_CHILDREN_FROM_PARTITION_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_CHILDREN_FROM_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_AREA_ONLY_FROM_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_YP3040","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILOVER_UNAVAILABLE_HINTS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INVALIDACCESSRULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INVALIDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDINVALIDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_INSUFFICIENTPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_OUTOFSCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_NOENTRYDETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTRYDETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ENHANCED_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_CONVERSION_OUT_OF_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_LAST_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_RECEIVING_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RETURNING_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MINIMUM_SECURITY_CLEARANCE_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_LOCALADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_NOCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_LOGONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_TCPDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_REMOTECONNECTIONDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_ACCESSDENIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JITTER_BUFFER_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTION_INSERTION_FAILED_MULTIPLE_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED_ANYWAY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESOLVE_EACH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_INSERTION_FAILED_MULTIPLE_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITYNOTDIAGNOSABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_PARAMSNULL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_AUTOCONFSKIPPEDPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_FAULTOCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXCEPTIONOCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_SHARPCONFIG_EXTALREADYCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_SHARPCONFIG_EXTNOWCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXTENSIONLOADFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_EXTENSIONNOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SHARPCONFIG_AUTOCONFNOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_FIELD_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_ISSUES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_OK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_IS_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_MASTERDIRECTORYSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SLAVEDIRECTORYSTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SLAVEDIRECTORYLOST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DIRECTORYFAILOVEROCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DATABASEFAILOVEROCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_CONNECTEDTOPRIMARYDATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_MASTERDIRECTORYLOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_SAVE_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_RESTORE_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_RENAME_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_REFRESH_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_QUICKSNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_MOVE_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_KICKOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_SUBSCRIBERS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_VIDEO_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_GET_AVAILABLE_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_EXECUTE_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CREATE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CLOSE_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CHANGE_ACTIVE_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CLOSE_ALL_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_APPLY_MODIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSFERINGPORTABLEAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIALIZINGPORTABLEAPTRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTABLEAPTRANSFERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_EXIT_FULL_SCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERGROUP_CUSTOMFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEACTIVATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_BLOCK_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCK_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_THREAT_LEVEL_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MESSAGE_UPDATE_PENDING_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERRORWHILEDIAGNOSTICREQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_WARNING_SEARCH_COVERS_ENTIRE_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_EVENT_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CUSTOMFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_ACCESS_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_MONITOR_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_DISCONNECTED_KICK_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_DISCONNECTED_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECTOR_ROW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVENTORY_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLICK_TO_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEEP_DELETED_EDGEGROUP_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVALIDRESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICKTOCHANGERESOUTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UDP_DIFFERENT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_EDGE_GROUP_SHOULD_BE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_EXTENSION_FORMATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_READ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDING_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FINDING_ALL_CHILDRENS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADDING_CHILDREN_OF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_CHILDREN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_CHILDREN_OF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPT_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RELEARN_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RELEARN_BACKGROUND_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SAVING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JOYSTICK_DEAD_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVING_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVING_TO","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROXY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROXY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_AUTHENTICATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_CONNECT_INVALID_USER_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVILEGE_DENIED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_MATCHPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FAILOVER_ARCHIVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATA_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DVR_INPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_KEYBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_INVALID_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_INVALID_FILE_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_OPEN_CUSTOM_G64","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_OPEN_BENCHMARK_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_EXPORT_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CLEAR_BENCHMARK_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CONFIRM_CLEAR_BENCHMARK_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_ERROR_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_NO_RESULT_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BENCHMARK_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_CANT_RECOVER_BENCHMARK","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_SHOW_ERROR_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_SHOW_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BENCHMARK_ENDED_WITH_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TASK_FAILED_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_ERROR_LOADING_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_EXPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RUNNING_ASSESSMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_VIDEO_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TITLE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_WHAT_IS_RATED","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_SUBSCORE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_GLOBAL_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_LAST_MEASURED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_VIEW_ASSESSMENT_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_LAOD_CUSTOM_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RE_RUN","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RESULT_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_RESULT_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_TASK_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_FILE_USED","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_COMPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_ERRORS_DURING_BENCHMARK","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_CUSTOM_BENCHMARK","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_TASK_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_SUBRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_BASE_SCORE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_ERRORS_DURING_ASSESSMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_EXPORT_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_DELETE_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TOOLTIP_LOAD_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_BUTTON_CLEAR_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_RAW_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_DETAILED_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_NO_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEST_CUSTOM_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_1","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_2","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEXT_ERROR_DETAIL_3","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_HEADLINE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_SIMULTANEOUSLY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_RECOMMENDATION_STREMS_SIMULTANEOUSLY","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_VIDEO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_TEST_DECODING_RENDERING","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_HIT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_READ_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_EMAIL_NOTIFICATION_DEFAULT_SUBJECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_EMAIL_NOTIFICATION_DEFAULT_BODY","Genetec_Sentinel_Resources_RE_L_S_STE_HASHTAG_CATEGORY_READ_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READ1_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_READ2_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COPY_CONFIG_SYNCHRONIZED_CARDHOLDERS_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COPY_CONFIG_SYNCHRONIZED_CARDHOLDERS_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHECK_LOG_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AD_USER_IMPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_HAS_WARNINGS_CLICK_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_IN_BACKWARD_COMPATIBILITY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_USE_SIMPLE_MATCHER","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_ENABLE_PLATE_EDITING","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MISCELLANEOUS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_OLD_BACKUPS_CANNOT_BE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_CAMERA_DIAGNOSTIC_SCHEDULE_CONFLICT_COMPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_TCP","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_HTTP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGIN_SUPERVISORPASSWORDEMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_TCP_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_HTTP_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CAMERA_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_CAMERA_UNBLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CAMERA_BLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CAMERA_UNBLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_TIREIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CLOUDUNITMANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYSTEM_WIDE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SPECIFIC_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PROCESS_TERMINATED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PROCESS_FAILED_TO_CREATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_CANNOTCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_LOADERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_INVALID_PLAYER_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OMNICAST_WRONG_COMPATIBILITYPACK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXPORT_PLAYBACK_SOURCE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYSOUNDONTOOMANYREADS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOGGLE_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_SPACE_COUNT_PER_ROW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBSERVERINVALIDURL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_PROXY_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PROXY_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PING_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTINGTOWEBAUTHENTICATIONSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONECTERRORTOAUTHENTICATIONWEBSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROXY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPISPACECOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_ALL_READS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BESTEFFORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MINBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_TOOMANYREADS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOO_MANY_READS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VISUAL_TRACKING_LOAD_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STRATOCASTCOORDINATOR_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_STRATOCASTCOORDINATOR_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_FILE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_DISPLAY_NANE","Genetec_Sentinel_Resources_RE_L_S_STE_PERF_INDEX_LABEL_MAX_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_REGIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_DELETION_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_READS_DELETION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MLPI_READS_DELETION_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METRES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTO_TRACKING_HEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLETOFETCHONLINEHELP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_ROLE_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN_TIMER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HITMATCHER_ENABLENOEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_AUTOTRACKING_SELFRETURN_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIQSWINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_ENTITYTODISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_H264VIQS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_NOMATCHEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_EXPORTED_FILES_SAVED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENCRYPTION_KEY_LENGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_H264VIQS_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_THUMBNAILS_REQUESTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIQS_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_CURRENT_VS_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SKIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACFAIL_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERYFAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERYFAIL_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPER_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCFAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCFAILURE_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_VIDEOQUALITY_CAPABILITIES_NOT_EQUALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAVORITES_AND_RECENTLY_USED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_COMPONENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALL_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLOCK_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSE_ALL_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARGUMENTS_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_CONFIG_TOOL_SPECIFIC_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_CONFIG_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDIT_FEDERATED_ENTITY_SAME_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOG_OFF_AND_LOG_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ENTRYASSUMED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERAPOSITION_GROUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAPOSITION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNBLOCK_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UNBLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTOOPENSNAPSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTOPRINTSNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LICENSE_INVALID_HARDWARE_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEARED_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNASSIGNED_CLICK_TO_ASSIGN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISASSOCIATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION_ROW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_ROW_DELETION_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_CBR","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_AUTOFOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_START_REDIRECTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_ENTITIES_SYNC_IN_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNIT_WILL_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_MODE_HIGH_FPS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_OVERTIME_ENABLE_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_DIRECTORY_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_RETRIEVING_ALL_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_RETRIEVING_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DBVERSION_HIGHER_THEN_CURRENT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_PUSHBUTTONS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_FLOORTRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIRRORING_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MIRRORING_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_CAMERA_VIDEO_GHOST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOTRACKING_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AUTOTRACKING_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PASSWORD_CANNOT_NOT_BE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_EXTREME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_EQUAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_HIGHLIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_MIXED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_HORIZONTAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_VERTICAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_CREATE_INCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_ACCESS_TROUBLESHOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_PRIVILEGES_TROUBLESHOOTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_UNIT_DISCOVERY_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_UNIT_REPLACEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_IMPORT_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_COPY_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_SNAPSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_ADD_UNIT_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_FIRMWARE_UPGRADE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_DATABASE_ACTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_THREATS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_LAUNCH_SECURITY_DESK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_LAUNCH_CONFIG_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_MOVE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_CUT_FILTER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_1","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_2","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PLAY_AUDIO_CLIP_3","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_ZOOM_IN_FINE","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_ZOOM_OUT_FINE","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_WHITE_LED_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_WHITE_LED_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_AUTOBACKFOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_VCS_RESET_IVA_COUNTERS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RECONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ROLE_REJECTED_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_ALARM_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_ALARM_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_CAPACITY_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_RECORDING_START","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_RECORDING_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DVR_TIME_DIFFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_NOACCESSRULEASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_NOACCESSRULEASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_WILDCARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_MEGA_SD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_MEGA_SD_FACE_DETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_FILENOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_FILENOTFOUND_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPR_INVALID_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPS_EXTRACTOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_FROM_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_VIDEO_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOSAMPLINGRATE_48KHZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGEGENETECSERVER_IPV6_PARAM_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_ZONE_COUNT_SINGLE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_ZONE_COUNT_MULTIPLE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAXIMUM_ITEM_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MINIMUM_ITEM_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNKNOWN_FILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_PREVENT_LOCALADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SHORTCUT_CANNOT_BE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINCIPAL_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIRROR_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_NAME_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_VALUE_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PTZ_ON_THIS_ENCODER","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_COPY_STATISTICS_SELECTED_VIDEO_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOW_STATUS_OVERLAY_VIDEO_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_DIGITAL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SHOW_STATISTICS_OVERLAY_VIDEO_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_WATERMARK_NOT_ENABLED_FOR_ALL_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERADISPLAYMODE_NAVIGATION","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_CAMERADISPLAYMODE_PERIMETER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AD_CREDENTIAL_IMPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_CANNOT_VERIFY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CARD_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLES_AND_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_COULD_NOT_CONFIGURE_RECOVERY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERIFY_WATERMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANOMORPH_LENSTYPE_RPL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICKTOCLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_SMC_FIRMWARE_PACKAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DIGITAL_ZOOM_ON_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_CLEARANCE_RESET_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_CLEARANCE_RESET_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USER_LEVEL_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LEVEL_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SECURITY_CLEARANCE_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_LEVEL_RESET_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_HIT_MATCHPLATE_AND_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_ARCHIVE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECT_KEYBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPRESS_BACKUP_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_ENABLE_VIRTUAL_KEYBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_CHECKING_LISTENING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_FAILEDQUERYINTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_CANNOT_EXCEED_X_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_MUST_BE_LARGER_THAN_X_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CANNOT_BE_COMPLETED_BECAUSE_START_DATE_BEFORE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CANNOT_BE_COMPLETED_BECAUSE_END_DATE_AFTER_X","Genetec_Sentinel_Resources_RE_L_S_STE_HINT_ANNOTATION_EMAIL_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SWITCH_HIGH_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_MAPPING_TYPE_BENOMAD","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_UNIT_METRIC","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_UNIT_IMPERIAL","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_QUERYING_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EXCLUSIONFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPING_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPED_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPING_READERS","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_MAPPED_READERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_LINE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_RECTANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_ELLIPSIS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_BARCODE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGESTORAGE_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SERVER_ON_MASTER_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_FAILOVER_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGERECORDING_COMMAND_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_EDGEEVOMODULEFIRMWAREVERSIONUNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_COMMAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAVAILABLE_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARKING_FACILITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_DELETION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_MLPI_ENABLE_TOO_MANY_READS_POPUP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_MLPI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CAPACITY_EXCEEDED_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CAPACITY_EXCEEDED_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTIONS_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_PLAYER_DOES_NOT_RECOGNIZE_THE_SCHEME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLESYMBOLICLINKS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENABLESYMBOLICLINKS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_UNC_ROOT_SHARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_BACKWARD_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MLPI_READS_DELETION_PARKINGFACILITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MLPI_READS_PARKINGFACILITY_DELETION_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_WAIT_DLG_REFRESH_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_ACTIVATE_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BACKUP_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESTORE_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENTITY_CANNOT_MOVE_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UPDATE_MOBILE_SHARP_SUCCEED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UPDATE_MOBILE_SHARP_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOHIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_LIVE_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ALWAYS_DISPLAY_LIVE_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_USERINTERACTION_ASK_TO_ACCEPT_SENT_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_OPEN_SENT_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IMPORTTOOL_EMAIL_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INSUFFICIENT_SECURITY_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMMERVISION_CALIBRATION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMMERVISION_CALIBRATION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_RETRIEVINGENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_USE_TRICKLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_NO_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CALIBRATION_CALIBRATING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_DISPLAYED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_MORE","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_EDGEEVO_EDM_GRP1_AND_ELM_GRP1_CANNOT_COHABIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CAMERA_BLOCKING_UNBLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_BLOCKING_INDEFINITELY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_BLOCKING_BLOCKFROM","Genetec_Sentinel_Resources_RE_L_S_STE_TRAY_SYSTEMMESSAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTEMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGERALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_RECORDING_ACTION_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_VIRTUALCAMERA_NO_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BYPASS_ENFORCEMENT_SET_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEE_ALL_X_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_MORE_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WDR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PRIVILEGES_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_ENTITIES_READONLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_ENTITIES_READWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CAMERACONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PTZ_PRIORITY_OVERRIDES","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_OFFLOAD_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATEARCHIVERDATABASE_DELETEVIDEOFILES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VIDEOFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_KFI","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_NETWORK_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_RECORDING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK_OPEN_TOO_LONG_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASK_ACCESS_DENIED_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_UNLOCKED_BY_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_FORCEACKNOWLEDGEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FORMAT_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_EXCELFILES_RECENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_ERROR_GENERIC","Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_ERROR_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_EXCEL_REPORTING_VERSIONING_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_APPLY_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_INTERRUPTED","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_FORCESTOP","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_BUILDING","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_RECV_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_NOVIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_NOSEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_INCOMPLETE_LASTSEQ","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_SEQRECV_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_KIND_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_MAP_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_MAP_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PRIVILEGE_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_VIA_AREA_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAME_DURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEPENDENT_DURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_FRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRETRIGGER_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_AND_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_AND_STILL_FRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_DURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_FRAME_PRETRIGGER_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DURATION_LONGER_THAN_DWELL_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_SECURITYCENTER_HITS_AND_ASSOCIATED_READS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ERROR_ENTITY_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCEPTIONS_FOR_X","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VISUAL_TRACKING_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_CAMERA_CONFIGREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_PRIVATESECTION","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_RESTRICTEDSECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SET_PARTITION_ADMINISTRATOR_OF_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_ALREADY_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPATIBLE_CONFIGURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETVIDEOUNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ROLE_SERVERS_CLEAR_WARNINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_WALL_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWITCH_SIMPLE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZEROISUNLIMITED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_CLOSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK_WITH_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_3X3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_4X4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_5X5","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_3X3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_4X4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_5X5","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_6X6","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_7X7","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_8X8","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ANTIPASSBACK_SCHEDULE_WITH_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_LINK_UNIT_TO_SAME_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL_ASSOCIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_SIDE_A_TO_SMC_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_SIDE_B_TO_SMC_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACE_MODULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACE_MODULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_INTERFACE_MODULES","Genetec_Sentinel_Resources_RE_L_S_STE_FIRSTINRULE_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_NOSUPERVISORS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_MAXSUPERVISORS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_INVALIDSETTINGS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_UNITMIXMODE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ANTIPASSBACK_UNIT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_PEOPLECOUNT_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_ELEVATOR_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_MULTIPLEUNITS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_UNSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_MAINTENANCEMODE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_UNLOCKSCHEDULE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_ANTIPASSBACK_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAS_FLOORSINAREA_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_RTSP_PORT_ALREADY_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_NOTSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_DOORS_UNLOCK_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_ACCESS_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_PERSON_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BYPASS_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IP_RANGE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_ROUNDABOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_RAMP","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_MAP_BRANCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERSONAL_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGON_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVERY_LC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_PERMISSION_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_ABOUT_TO_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_INFORMATION_ANONYMOUS","Genetec_Sentinel_Resources_RE_L_S_STE_FEEDBACK_ATTACHMENTS","Genetec_Sentinel_Resources_RE_L_S_STE_SYSTEM_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ATTACH_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ATTACH_SCREENSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_CAMERA_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEND_FEEDBACK","Genetec_Sentinel_Resources_RE_L_S_STE_FEEDBACK_SENDING_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DROPPIN_LEARN_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MODIFY_NONEXISTANT_SHAPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOVE_NONEXISTANT_SHAPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CREDENTIAL_REQUEST_ACTIVITY_EVENTS_NOTCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ACTIVITY_TRAIL_EVENTS_NOT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYNCHRONIZATION_RECURRENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED_WHEN_DOOR_CLOSES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AT_CC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_EXPIRES_ON","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FORCE_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_SYNCHRONIZATION_FREQUENCY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLINE_SYNC_DAILY_SCHEDULE_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_OFFLINE_SYNC_FORCE_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULED_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OFFLINE_SYNC_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TAMPERING_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GHOST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIGITALAUTOTRACKING_START","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIGITALAUTOTRACKING_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_RELOCK_ON_CLOSE_NOT_SUPPORTED_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_MAXIMUM_DELAY_RELOCK_VERTX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALAUTOTRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_DOOR_RELOCK_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BENOMAD_FOLDER_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_MOBILECLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATORS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PRIVILEGE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTING_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVESTIGATOR_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVISIONING_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_OPERATOR_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ILLUMINATION_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ILLUMINATION_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PRESET_RECALL_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_CAMERA_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_CAMERA_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_WIPER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_WIPER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PUMP_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PUMP_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F0_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F0_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F1_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_AUX_F1_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_START_WIPER_CYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ALL_RELAYS_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ALL_RELAYS_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_1ON_2OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_2ON_1OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_12ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_RELAYS_12OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_START_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_STOP_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ADD_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_REMOVE_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_PAN_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_TILT_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_UP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_END_STOP_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_END_STOP_POSITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_END_STOP_POSISIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MAX_SPEED_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MIN_SPEED_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MAX_TIME_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MIN_TIME_RANDOM_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_ACTIVATE_PARK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DEACTIVATE_PARK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_DELAY_PARK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_AUTOPAN_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MODE_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_INITIALIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BUZZER_BEHAVIOR_SUPPRESSED_ON_ACCESS_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NETWORK_CARD_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARECONT_WDRENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_BEFORE_ALARM_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_FRAME_AFTER_ALARM_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ESCORTREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ESCORTREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_CARDHOLDERREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_CARDHOLDERREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_STREAMING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASK_BEFORE_UNIT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_VISITORESCORT_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_VISITORESCORT_NOTSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_TWORULE_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_TOWRULE_NOTSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRANT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_FORCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_HELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_TO_EXIT_PLUS_ACRONYM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_NONEXISTANT_SHAPE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DRAW_POLYGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HAS_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_CLOSE_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PROGRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_360_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_HORIZONTAL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_VERTICAL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_CIRCULAR","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_DOUBLE_PANO_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_DOUBLE_PANO_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_QUAD_PTZ_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_SINGLE_PTZ_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_DOUBLE_PANO_QUAD_PTZ_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_DOUBLE_PANO_SINGLE_PTZ_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_PANO_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_PANO_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_QUAD_PTZ_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_SINGLE_PTZ_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_PANO_QUAD_PTZ_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_PANO_SINGLE_PTZ_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_3M_FISHEYE_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1_3M_FISHEYE","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_VGA_QUAD_STREAMS_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DATABASE_TASK_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_DHCP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IGNORE_WEB_PROXY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_USE_MIXED_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_FACE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CATEGORIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMINISTRATOR_OF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHMENT","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_START_INCIDENT_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_STOP_INCIDENT_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NOTIFY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_COLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_COLUMNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_FULL_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_VIEW_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_MODIFY_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_DELETE_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_ADD_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST_WITH_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LOAD_HOTLIST_WITHOUT_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_UNCHECK_PARTITION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_GROUPSECURITYVIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_DEFAULT_RELAY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MAX_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMC_NOTSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FIRMWARE_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEXT_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREVIOUS_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAPDESIGNER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAPDESIGNER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_LIVE_CAMERA_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PLAYBACK_CAMERA_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_PLATE_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND_PROCESS_TRAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ATTACHMENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDING_FEEDBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEEDBACK_SENT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ATTACH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTENT_CYCLING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_SEC_BEFORE_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_ARCHIVE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_VIDEO_ARCHIVE_DELETED_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REVERT_INHERITED_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OUTPUT_TRIGGERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREFERRED_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AND_UNIT_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OUTPUT_TRIGGERED_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_STOPPED_TIMEDOUT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_NOTIFY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSERT_AN_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCIDENT_RECORDING_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_NETWORK_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_NETWORK_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_DOES_NOT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_ACCEPT_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_DIAGNOSTIC_A_REDIRECTOR_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_OMNICAST_DIAGNOSTIC_ALL_REDIRECTORS_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_ENCRYPT_COMMUNICATION_CHANNEL_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_ENCRYPT_COMMUNICATION_CHANNEL_NOT_SUPPORTED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_LOADED_MAP_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VAULT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_SNOOZED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ALARM_FORWARDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDERS_AND_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHANGE_ICON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_MAIN_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_FAILOVER_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PTZ_PRIORITY_ADD_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_PARENTS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_OVERRIDES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_LEVEL_OVERRIDES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LEVEL_OVERRIDES_PTZ_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_REQUEST_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VAULT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLIST_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_ANNOTATIONFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_IMAGE_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OMNICAST_FEDERATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_OMNICAST_VIDEOREDIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_SETTINGS_AS_STRING_EXTENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_SETTINGS_AS_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTORE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOAD_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_IN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVINGENTITY_FROM_VISIBLEPARTITIONS_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOTADDCAMERA_NOARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACCESS_MANAGER_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_DISCOVERY_PORT_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_LPRUNIT_DISCOVERY_PORT_MISMATCH_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED_NORESULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READS_IMAGE_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HITS_IMAGE_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_SQLVERSION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RGB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_TO_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_CONNECTION_RECOVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEC_UPON_RECONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_THREATS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_TO_WINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_CONFIG360","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_VIDEO_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_ENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_POINT_RULE_APPLIES_TO_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_VAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_VIDEO_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_VAULT_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_FOLDER_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGING_VAULT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNAVAILABLE_PREVIEW_ENCRYPTED","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVING_ENTITY_TO_PARTITION_MAKE_UNAVALIABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EFFECTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EVENT_TO_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MANUALLY_UNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MAINTEANCE_MODE_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DOOR_MAINTENNACE_MODE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_LOCKING_OVERRIDE_DOOR_UNLOCK_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_OVERRIDE_DOOR_UNLOCK_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_SCHEDULE_OVERRIDE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GO_TO_FILE_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_CUSTOMENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIO_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_AS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_G64X_DEFAULT_MULT_EXPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_VIEWABLE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_PARTIAL_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARHCIVE_RESTORE_PARTIAL_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIDGET_POLYGON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_ZONENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPRESENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENCODE_FIELD_USING_UTF8","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENCODE_FIELD_USING_UFT8_AND_SPECIFIED_MASK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MINIMUM_UTF8_FIELD_MASK_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SPECIFY_VALID_MASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAXIMUM_UTF8_FIELD_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UTF8","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKEDBCD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKING_PLAYBACK_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GO_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_PORT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_GPS_PORT_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_GPS_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_PORT_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NAVBOX_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLER_OPTION_AUTODETECT_NAVBOX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XDNR","Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_HEADER","Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_CONTENT1","Genetec_Sentinel_Resources_RE_L_S_STE_AUTOVU_RETENTIONPERIODPOPUP_CONTENT2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS_CHECKED","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_TITLE_SHARPPORTAL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_SHARPPORTAL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAMETER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOCAL_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GET_CAMERA_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIAGNOSTIC_DISKDB_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_AS_FAVORITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROJECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WALL_ANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SELECT_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_UNIT_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_FAVORITES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REMOTE_UNABLE_CONNECT_ACCESS_DENIED_USER_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_BADREQUEST_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_DOWNLOADING_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_UPLOADING_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEAR_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GATHER_DIAGNOSTIC_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_GENETEC_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_GENETEC_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPLOAD_RESULT_TO_CLOUD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_DROP_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIAGNOSTIC_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DOOR_SIDE_NAME_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DUPLICATE_DOOR_SIDE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DIRECTORY_FAILOVER_SERVER_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_CONNECTION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROADCAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNICAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKIN_EDIT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_STATISTICS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_DISK_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATISTICS_REPORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_NEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AGENT_SUCCESSFULLY_STARTED_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVICE_LOST_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AGENT_FAILED_TO_START_BY_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_FAILED_TO_INITIALIZE_ON_AGENT_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STARTED_SUCCESSFULLY_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STARTING_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STOPPING_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_STOPPED_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTION_ESTABLISHED_WITH_XYZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_XY_DATABASE_USED_BY_ANOTHER_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_CONNECTION_LOST_WITH_XYZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATE_SERVERS_TO_SAME_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ERROR_ON_AGENT_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_LISTENING_ON_XY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_FAILED_TO_LISTEN_ON_XY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_X_COULD_NOT_OPEN_ON_YZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHECK_PORT_NOT_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_FAILED_TO_START_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_LOST_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MEDIA_ROUTER_CONNECTION_SUCCESSFUL_ON_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MACHINEKEYS_FOLDER_PERMISSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DISPLAYING_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_BUFFERING_COMLPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CHANGES_FORCE_RESYNC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTING_SPY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTING_LOW_BANDWIDTH","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOTIONDETECTION_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DISKGROUP_VALIDATION_CONFLICTS_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DISKGROUP_VALIDATION_CONFLICTS_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_TIME_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_NOT_RECORDING_LIMIT_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_LIMIT_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_COUNT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ARCHIVING_QUEUE_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ARCHIVING_QUEUE_FULL_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_ASF_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READ_UNDERSTAND_STATEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIMARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDBY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_SPECIFY_VALID_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_SPECIFY_NETWORKTRANSPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNSUPPORTED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_NOTENOUGHBANDWIDTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INACTIVE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIDEOUNIT_COLLECT_POSTMORTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER_REGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITING_FOR_DIRECTORY_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FILE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FILE_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_ARCHIVER_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_CUSTOM_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FILE_ROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_START_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAPTURE_STOP_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NETWORK_TRACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_ALL_TRAFFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_TCP_HTTP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROLE_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H265","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_MXPEG","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_UNAVAILABLE_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_ALL_SERVERS_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_COULD_NOT_SEND_FEEDBACK","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNSUPPORTED_ENCODING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_VAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_ENCRYPTED_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED_PASSWORD_COPIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_SPECIFIC_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADVANCED_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_AUDITTRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_RETENTION_FOR_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_NO_DATA_FROM_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SEE_VIDEO_TROUBLESHOOTING_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_INITIALIZING","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_MEDIA_ROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_LIVE_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_ANALYZING_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_WAITING_FOR_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_PLAYBACK_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_RESUMING_PLAYBACK_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_CONNECTING_TO_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_VIDEO_UNIT_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NO_DATA_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NO_DATA_AVAILABLE_FROM_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_SEARCHING_FOR_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_READING_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_BUFFERING","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_SERVER_RESPONSE_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_NOT_ENOUGH_BANDWIDTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUTED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ZONE_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PRIVATE_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RECIPIENT_INVALID_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCESS_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_CYRILLIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VBR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_NOT_LISTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETTINGS_AND_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEAR_ADDED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCOVERING_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUFACTURERS_WE_ARE_LOOKING_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MANUFACTURERS_NOT_LISTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSIVE_SEARCH_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_RUN_EXTENSIVE_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RUN_EXTENSIVE_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVER_UNITS_AUTOMATICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MANUFACTURERS_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IGNORED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_IGNORED_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_IGNORED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_ALL_IGNORED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AS_DEFAULT_AUTHENTIFICATION_FOR_ALL_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNITS_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ACTIVEDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ACTIVITYTRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUDITTRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ENTITYMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_HEALTHMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_HOTACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_INTRUSIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_NETWORKING","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_OMNICAST","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_PLUGINS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_REMOTESD","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_SAVEDTASKS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_SYNERGIS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_CARDREQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_BADGETEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_GLOBALCARDHOLDERSYNCHRONIZERS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_THREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_TIMEZONE","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ZONEMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORKING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVITATION_TO_CREATE_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INITIAL_CONFIGURATION_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURE_ADMIN_ACCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_DO_YOU_NEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WELCOME_TO_SECURITY_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_AN_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOW_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLOSE_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_WIZARD_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_NEVER_SHOW_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERNAME_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_INTRODUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SET_ADMIN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIRM_PASSWORD_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPLAIN_DEFAULT_FEATURE_VISIBILITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_FEATURE_VISIBILITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REFER_TO_ABOUT_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LAUNCH_DISCOVERY_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIG_TOOL_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REFER_TO_USERS_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_CONFIGTOOL_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEATURE_SAVED_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_SET_AUTO_FOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUXILIARY_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANASONIC_SELF_RETURN","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RTSPROLE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ROLE_RTSPROLE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLEAR_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CACHE_CLEARED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIEW_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACEMODULENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTION_DISPLAY_FAVORITES_RECENTS_HOMEPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TILE_PATTERN_EDITOR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVERT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REVERT_TILE_PATTERN_TO_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATIC_IP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TILE_PLUGIN_INVALID_PROCESSOR_ARCHITECTURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOSTNAME_IP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_SYNCHRONIZATION_NEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DURATION_LONGER_THAN_RECURRENCE","Genetec_Sentinel_Resources_RE_L_S_STE_SHORTCUT_SCRATCH_PAD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_DATABASE_BEFORE_UNITSWAP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONTINUE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_OPEN_PDF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_ACCELERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_DECODING_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRIVER_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_USED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_REGIONS_NEEDS_TO_BE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_MULTIREGION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_HITS_MULTIREGION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_MULTIREGION","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_READS_MULTIREGION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MANAGE_INCIDENT_CATEGORIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORTED_TO_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_HAS_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_OPEN_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_VISUALTRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_CPU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ENGINE_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_CONTROLLER_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_FINISHED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_FINISHED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVER_TRICKLING_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_BACKUP_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_FINISHED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_RESTORE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_FINISHED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_UNIT_TRICKLING_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVER_TRICKLING_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVER_TRICKLING_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_UNIT_TRICKLING_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_UNIT_TRICKLING_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_BACKUP_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_BACKUP_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_RESTORE_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_RESTORE_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_REPORT_SELECTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_REPORT_SELECTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_RTSP_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CUSTOM_DATA_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_DATA_TYPE_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NOT_ENOUGH_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NO_PATH_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NO_PATH_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATING_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESOURCES_METER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKAGE_VIDEO_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_PORTABLEVIDEOPLAYER_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATH_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_IN_USE_OTHER_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_ENCRYPTED_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_FILTER_PWDFILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_USERACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVER_TRICKLING_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVER_TRICKLING_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_BACKUP_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_BACKUP_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_RESTORE_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_RESTORE_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_START_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_STOP_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_START_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNIT_TRICKLING_MANUAL_STOP_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MERGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_EXIST_AT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESTINATION_BEING_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_DESTINATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_NOT_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_BOTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_MOVED_RENAMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PACKAGE_WITH_VIDEO_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_MOVE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_SELECTED_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_FOLDERALREADYEXIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_UNUSED_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_CREATEAGENTFAILEDNOTRUNNING_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_CACHE_AT_LOGOFF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_WATERMARKED_AUTHENTICATED_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARK_TAMPERED_MANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_UPGRADE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_TO_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_DATABASE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACCESS_RIGHTS_TOOL_WHATS_NEW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEFAULT_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PUBLIC_PARTITION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTRICTED_PARTITION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_PARTITION_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_PARTITION_LC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACCESS_GRANTED_AREAS_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RIGHTS_TITLE_EXAMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_MODEL_UPGRADE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURITY_MODEL_UPGRADE_MODE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHOOSE_UPGRADE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEAST_RESTRICTIVE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEAST_RESTRICTIVE_DESCRIPTION1","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEAST_RESTRICTIVE_DESCRIPTION2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOST_RESTRICTIVE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOST_RESTRICTIVE_DESCRIPTION1","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOST_RESTRICTIVE_DESCRIPTION2","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_MODE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATING_NEW_SECURITY_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOADING_DATA_FROM_SPECIFIED_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READING_SPECIFIED_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPDATING_SECURITY_SYSTEM_USING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BUILDING_AUTOMATIC_UPGRADE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATE_UPGRADED_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BROWSE_UPGRADED_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_IMPACTED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_NEW_ACCESS_RIGHTS_TREE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERATING_UPGRADE_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_DATA_GENERATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FILE_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_AGREEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_SELECTED_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLE_SELECTED_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_MANAGER_MAXIMUM_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_MANAGER_EXPORT_LIMITATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_LIMITATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPACTED_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_REPORT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARTITIONS_UPGRADE_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUE_INSTALLATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACK_LOST_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANUAL_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_LOGICAL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASEWAIT_EXPORTINPROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_AVAILABILITY_IN_SYSTEM_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_WARNING_NOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERWRITE_EXISTING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPEND_A_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_FILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_INFORMATION_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_ACCESS_MANAGER_ROLES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AT_LEAST_ONE_ACCESS_MANAGER_ROLE_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUERY_TO_ACCESS_MANAGER_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISK_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_FREE_OF_NUMBER_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_DISK_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMPACTED_ENTITIES_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FILE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISDBCONNECTIONTOOL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REVERT_TO_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_ABSENTSUPERVISOR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ABSENTSUPERVISOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_SHUNTING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_INTRUSION_ZONE_ARM_MASTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_INTRUSION_ZONE_ARM_PERIMETER","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_AUTOHIDE_ALARMEVENT","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MBPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_LOAD_WEB_SDK_ROLE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_LOAD_ROLE_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_SNOOZED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_FORWARDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMTP_TEST_EMAIL_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMTP_TEST_EMAIL_BODY_SERVER_X_AT_TIME_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_EMAIL_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLY_CSV_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRED_AUTHENTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLY_PARTITION_TO_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_APPLY_PARTITION_TO_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCELERATION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TRANSFER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZONEARM_MINUTESDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ZONEARM_SECONDSDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_PARTIALLY_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_PARTIAL_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_PUBLIC_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_PUBLIC_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVATE_ADDRESSES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_ACKNOWLEDGED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_ACKNOWLEDGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_MBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PING_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VISUAL_TRACKING_ZONE_WILL_NOT_MOVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILES_DELETING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_UPGRADE_VALIDATING_PREREQUISITES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_ALREADY_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_USE_SPECIFIC_DOMAIN_CONTROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_FORCE_ACKNOWLEDGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_ERROR_FILE_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PROMOTIONAL_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SERVER_NOTRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_PATH_AIVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPON_RECONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAX_DURATION_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ANTIPASSBACK_VIOLATION_FORGIVEN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GATHERING_DIAGNOSTIC_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ADAPTERNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ADAPTERNOTUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MULTIPLE_VIDEOS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_VIDEO_FILENAME","Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_STORE_SOURCE_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SHARED_PARTITION_INSERT_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRIVILEGE_EXCEPTION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_PRIVILEGE_EXCEPTION_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_EXTRA_LARGE_ICONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_LARGE_ICONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_MEDIUM_ICONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_SMALL_ICONS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WATERMARKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FPSWITHUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EMAIL_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EMAIL_SNAPSHOT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SCHEDULED_UNLOCK_IGNORED_ABSENT_SUPERVISOR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGED_REQUIRE_REBOOT_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGED_LISTENING_PORT_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_FROM_EVENT_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_NOT_AVAILABLE_UNLESS_SWITCHING_TO_MAP_FRAGMENT1_ENDS_WITH_WHITESPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_NOT_AVAILABLE_UNLESS_SWITCHING_TO_MAP_FRAGMENT2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EXPORTWITHWARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYER_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_ANCESTORS_HAVE_BEEN_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTENSION_NOT_CONFIGURED_AM_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_DOUBLE_PANO_FISHEYE_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_DOUBLE_PANO_FISHEYE_CEILING","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_2M_PANO_FISHEYE_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_1M_PANO_FISHEYE_WALL","Genetec_Sentinel_Resources_RE_L_S_STE_PANASONIC_FISHEYE_QUAD_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ADDRESS_LOCATION_RELATIVE_TO_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_PATTERNS_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SELECTED_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_ERROR_WRITING_TO_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_ERROR_WRITING_TO_DB","Genetec_Sentinel_Resources_RE_L_S_STE_EDGETRANSFER_DETAILS_UNKNOWN_ARCHIVE_FILE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TEST_EMAIL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVINGENTITY_FROM_VISIBLEAREAS_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARTITION_UPGRADE_FILE_NEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_FILE_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILTORENAME_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_UNASSIGNED_TO_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_UNASSIGNED_TO_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANCESTOR_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_START_TIME_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_START_TIME_INVALID_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_END_TIME_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_END_TIME_INVALID_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_INVALID_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_DIRECTION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HITRULE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_OCCUPANCY_ALL_LOTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DRAG_VIDEO_FILES_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_MLPIACTION_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USERNAME_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONTYPE_MOBILESERVERSLAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTELY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATION_VALIDATION_FAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARING_MANAGER_CREDENTIAL_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_TILE_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_SAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_RECEIVING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_WRITING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVE_GENERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ARCHIVE_GENERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_VEHICULES_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_MLPI_INVENTORYINDEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE_ONE_SECOND","Genetec_Sentinel_Resources_RE_L_S_STE_REPORTING_ERROR_QUERY_TOO_COMPLEX","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_LOCATEME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_EMPTY_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REBOOT_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PRINT_READ_REPORT_EVIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_ASSOCIATED_MICROPHONE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_ASSOCIATED_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_SUFFIX_INHERITED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_GENERATED_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_VISITOR_ESCORT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FORMAT_CSV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_INDIVIDUAL_FILE_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_EXPORT_NOTAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_VAULT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_UNLIMITEDBITRATE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_ENTER_FULL_SCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_SNAPSHOT_TO_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_TO_OPEN_VAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DOTNET_FRAMEWORK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DOTNET_FRAMEWORK_NOTICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KEYFIELD_MAX_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RESTORE_ARCHIVE_TIME_RANGE_FROM_DATE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_FILE_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OVERRIDE_EXISTING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISPLAY_OVERLAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_CREATE_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOLDER_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_COMPLETED_WITH_PARTITION_COUNT_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_RESYNCHRONIZE_PARTITION_GCSROLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_RETRIEVESNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAPTURE_DONE_YET","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TRANSFER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_TRANSFER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERTX_FIR_SCHEDULES_NOTSUPPORTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTION_CHANGING_VAULT_FOLDER_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_OPTION_CHANGING_VAULT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_ACCESS_ALL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_DETECTIONMISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_PRIVILEGE_TO_ENABLE_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_AWAITING_SYNCHRONIZED_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_AWAITING_SYNCHRONIZED_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWILIGHT_SCHEDULES_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_OLD_BACKUPS_ON_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_UPGRADE_REQUIRED_MEDIAROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_UPGRADE_REQUIRED_MEDIAROUTER_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_ACCESS_DENIED_SUPERVISOR_ABSENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGEQUALITY_WITHUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED_FOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED_FOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS_FOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED_FOR_ONE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED_FOR_ONE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS_FOR_ONE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_SUCCESS_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_FAILED_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_PARTIALLY_FAILED_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_SUCCESS_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_FAILED_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_PARTIALLY_FAILED_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_FAME_INTERVAL_WITH_MESURE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_HEALTHSTATS_INCOMPLETE_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MISSING_THUMBNAILS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ERROR_HEALTHSTATS_INCOMPLETE_RESULTS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESET_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRESET_NOT_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETECTED_HARDWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_ACCELERATION_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_G64X_FILE_CORRUPTED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CUSTOM_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_OFFLINE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_OFFLINE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_OFFLINE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_OFFLINE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SLOW_VIDEO_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_DISK_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_DIRECTORY_0_IS_NOT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAIN_DB_IS_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_ARCHIVE_FOLDER_PATH_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_STILL_FRAME_OMNICAST_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_PAUSE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARD_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REWIND_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_FRAME_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIOUS_FRAME_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_FORWARD_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_JUMP_BACKWARD_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ESCORT_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DB_LOCATION_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GENERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_AGO_LC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_TRANSFER_GROUP_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARTITION_ADMINISTRATOR_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_MODE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_THERMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_BLACK_HOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_IDS_SPCPTZDLG_AXYS_WHITE_HOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_AXYS_AUTOFOCUS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LPR_INSUFFICIENT_DISK_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_MANAGER_INVALID_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_TYPE_PANORAMIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL_RS232","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TERMINAL_RS422485","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG_OPERATION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_ABOUT_TO_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_ABOUT_TO_EXPIRED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LICENSE_EXPIRED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_ABOUT_TO_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_ABOUT_TO_EXPIRED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SMA_EXPIRED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_LICENSE_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISMISS","Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_NOTIFICATION_SMA_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_OPTION_NOTIFICATION_LICENSE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOT_SHOW_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SUCCESSFULLY_ADDED_TO_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_AND_TRY_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PCAP_STREAMING_ALREADY_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_DOES_NOT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ACCESS_DIRECTORY_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_IN_FILES_ALREADY_IN_DB","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_IN_FILE_ALREADY_IN_DB","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_CHECKING_FILE_IN_DB","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_ADDING_FILE_TO_DB","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_MEDIA_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_AND_COPY_TO_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONVERSION_NOT_FINISH_CANCEL_OR_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONVERSION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILES_WILL_BE_DELETED_FROM_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_QUESTION_TROUBLE_BUILDING_SDP_CONTINUE_OR_ABORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SEARCH_UNTIL_NUMBER_OF_FRAMES_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OPENING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_THROW_IN_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_OPEN_ENCRYPTED_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISPLAY_FIRST_NUMBER_OF_STREAM_PACKET_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RETENTION_PERIOD_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXCLUDED_LOW_PACKETS_IN_CONVERSATION_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TROUBLE_BUILDING_SDP","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_STREAM_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_STREAM_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_HERE_FOR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_AND_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SAVE_AND_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_LOADING_FILES_FROM_DIRECTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_ADDING_FILES_TO_DB","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXCEPTION_WHILE_LOADING_FILES_FROM_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LOGIN_ACCESS_CONTROLS_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LOGIN_ACCESS_CONTROLS_UNITS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_AUTHENTIFICATION_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOW_ADD_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOW_ADD_CARDHOLDERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_MANAGEMENT_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_CARDHOLDER_MANAGEMENT_TASK_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAUNCH_IMPORT_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_LAUNCH_IMPORT_TOOL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_OTHERS_USERS_SECOND_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_PORT_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REX_EVENT_HOLDOFF_AFTERGRANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REX_EVENT_HOLDOFF_AFTERCLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LEGACYLOGONDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_LOGONNEGOTIATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_STATUS_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSIGNALEVENT_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOCKDETECTION_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGEERROR_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_4X3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_5X4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_6X5","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_4X3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_5X4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_6X5","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_8X6","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_9X7","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_BPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_MBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_GBPS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_ONE_PERIMETER_DOOR_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SAS_DOOR_NO_SENSOR_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_AVAILABLE_OF_NUMBER_FREE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACKED_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_IS_SHUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_IS_NOT_OURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IODIAGNOSTICS","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHER_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHINGPROCEDURE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_WASHINGPROCEDURE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_IR_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_OSM_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_PATROL_MODE_START","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ACCESS_FILES_OR_DIRECTORIES_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSH_LAYOUT_HIGHLIGHT_10X8","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_RECV_SEQUENCE_LIST_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_RTSP_SESSION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_UNHANDLED_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_NO_SESSION_DESCRIPTOR_RECV","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_NO_FOLDER_WRITE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FOLDER_PATH_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FILE_ALLOCATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_FILE_CREATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVE_TRANSFER_UNHANDLED_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVE_TRANSFER_INVALID_STATE_TRANSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDGE_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE_DETAILED_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_UP","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SUBSTRACT","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DIVIDE","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_MULTIPLY","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_HOME","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_RETURN","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_PAGEUP","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_PAGEDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_END","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_INSERT","Genetec_Sentinel_Resources_RE_L_S_STE_KEYBOARD_SCROLL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRANSFER_NOT_ENOUGH_SPACE_DETAILED_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_ABS_TILT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERT_ABS_PAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABS_TILT_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABS_PAN_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METADATAEVENTSTREAM_CONNECTION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_CARDHOLDR_IS_AN_ESCORT_CANNOT_BE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECONNECTION_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AXIS_EVNTSTRMCONNTYPE_FORCED_RTSPTCP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPECIFY_DIRECTION_RATION_OFFSETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_LEAST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_NO_MORE_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IPV4_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_IPADDRESS_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SUBMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TROUBLESHOOT_HARDWARE_PROBLEMS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_LEAST_X_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MUST_BE_AT_MOST_X_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IS_CONDITIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AND_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_A_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_DEVICE_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURE_UNIT_WEBPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORTCUTS_INVALID_KEY_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_HARDWARE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VECTOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LOGICAL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURRED_PROCESSING_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_WITHOUT_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_APPLICATIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_GENERALPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_CHANGE_OWN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_CREATE_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PRINT_AND_EXPORT_REPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_WEB_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_LIVE_COVERT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REMOVE_ITEMS_FROM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMINISTRATIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGICALENTITYTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PHYSICAL_ENTITY_TASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_LPR_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_LPR_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ANALOG_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ANALOGMONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_OUTPUT_BEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_OUTPUT_BEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_OUTPUT_BEHAVIORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ELEVATORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_INTRUSION_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_INTRUSION_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_INTRUSION_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CASH_REGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CASH_REGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ASSETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SCHEDULEMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_SCHEDULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SCHEDULED_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_SCHEDULED_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_SCHEDULED_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESSCONTROLMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONVERT_SHARED_TO_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CARDHOLDER_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_CUSTOM_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CARDHOLDER_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CARDHOLDER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CARDHOLDER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_CUSTOM_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_ADVANCED_CREDENTIAL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CREDENTIAL_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_ASSOCIATION_TO_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CREDENTIAL_CUSTOM_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PRINT_BADGES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ACCESS_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ACCESS_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ACCESS_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_BADGE_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_BADGE_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHECHIN_AND_CHECKOUT_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITORS_CUSTOM_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VISITOR_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPRMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARMMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_MONITOR_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MONITOR_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_MONITOR_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LPR_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_LPR_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_LPR_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PLATE_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADD_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASKPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_REPORT_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_REPORT_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_REPORT_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MANAGE_PRIVATE_TASKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CATEGORY_ADMINISTRATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGICAL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMINTOOL_TAB_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EXTERNALSYSTEM_CATEGORY_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONFIGTOOL_MENU_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONDETECTION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MENU_TOOLS_PLUGINS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CATEGORY_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SURVEILLANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_ALARM_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_UNIT_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SELECT_MANUFACTURERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_UNIT_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECONCILE_INVENTORIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_HOTLIST_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOTE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAP_DESIGNER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SYSTEM_STATUS_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HARDWARE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PEOPLE_COUNTING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VISITOR_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INVESTIGATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_INCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_POINT_OF_SALE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CATEGORY_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREA_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREA_PRESENCE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CARDHOLDER_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_REQUEST_HISTORY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DOOR_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ELEVATOR_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_TIME_ATTENDANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VISITOR_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VISITOR_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ASSET_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_ASSET_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_ASSET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ZONE_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSION_AREA_ACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSION_UNIT_ACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CATEGORY_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_ARCHIVE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_BOOKMARK_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_MOTION_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_FORENSIC_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_FILE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS_MULTIREGION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_HITS_GROUPING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TITLE_HIT_REPORT_PER_AGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TITLE_HIT_REPORT_PER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_PLATE_READS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_READS_MULTIREGION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_READS_GROUPING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PATROLLER_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_DAILY_USAGE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LOGIN_PER_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_READ_HITS_PER_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_READ_HITS_PER_LPR_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_ZONE_OCCUPATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAINTENANCE_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_ACTIVITY_TRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_REPORTS_AUDIT_TRAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_HEALTH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_CONTROL_HEALTH_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_IO_CONFIGURATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_CATEGORY_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ENHANCED_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_TROUBLESHOOTING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_CARDHOLDER_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_QUERY_CREDENTIAL_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVER_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CARDHOLDER_CREATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CREDENTIAL_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACTIONPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACCESSCONTROL_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DOORS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXPLICITLY_UNLOCK_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAINTENANCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORGIVE_ANTIPASSBACK_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SILENCE_SOUND_BUZZER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARM_DISARM_INTRUSION_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AREAS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERAS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISPLAY_OVERLAYS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PROTECT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNPROTECT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BLOCK_UNBLOCK_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ALLOW_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_RECORD_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADD_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EDIT_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SAVE_AND_PRINT_SNAPSHOTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PTZMOTORPRIVILEGES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_DO_BASIC_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_CHANGE_FOCUS_AND_IRIS_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_USE_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_EDIT_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_PTZ_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_PTZ_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_PTZ_AUXILIARIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_PTZ_AUXILIARIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SET_USE_SPECIFIC_COMMANDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_MENU_ON_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_LOCK_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PTZ_OVERRIDE_LOCKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ALLOW_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXPORT_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_ASF_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALARMS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ACKNOWLEDGE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SNOOZE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORWARD_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MACROS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXECUTE_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USERS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EMAIL_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISPLAY_ENTITY_IN_SD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PLAY_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SEND_CLEAR_USER_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_START_STOP_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_PROTECT_READS_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DELETE_READS_NOT_IN_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ZONES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARM_DISARM_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_WORKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_START_STOP_GUARDTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_SECURITYDESK_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_TILE_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_TILE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_TILE_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CHANGE_CLIENT_VIEWS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CAMERA_ANALYTIC","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DIGITAL_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_VIDEO_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_VIDEO_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_UNIT_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_VIDEO_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AND_DELETE_VIDEO_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_VIDEO_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECONNECTVIDEOUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_DELETE_CASH_REGISTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECONNECT_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_WEB_CLIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EXTERNALSYSTEM_CARDHOLDER_SYNCHRONIZER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LOG_ON_THROUGH_MOBILE_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FEDERATION_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_BADGE_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFORMATION_FROM_GTAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IRCUTFILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUEGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKLIGHTCOMPENSATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGESTABILIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CANCEL_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIRECTORY_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SQLSERVER_USER_PERMISSION","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SELECT_TILE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_QUERY_TIMEOUT_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_WINDOWS_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LETMECHOOSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_CACHE_OPTIONS_APPLIED_AT_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_STATUS_SYNCHRONIZING_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOCK_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDED_WITH_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_FOLDER_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ELEVATOR_DUPLICATE_PUSHBUTTONS_AND_FLOORTRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ACK_ALARMS_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_ASSIGNMENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_REMOVED_FROM_TRANSFER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_UPLOADED_PICTURE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOL_DESCRIPTION_GENETEC_VIDEO_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SHOCK_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOCK_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_SSTERROR_DHCPBUTCANNOTDISCOVER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PACKAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_DB_ASSOCIATED_VIDEO_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRMATION_DELETE_DB_VIDEO_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WRAP_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDS_FILTER_IS_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_FOLDER_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_FILE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BING_KEY_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TILE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TILE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TILE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TILE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ACCESS_CONTROL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ACCESS_CONTROL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ACCESS_CONTROL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ACCESS_CONTROL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_LPR_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_OUTPUT_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_OUTPUT_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_OUTPUT_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_OUTPUT_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_INTRUSION_DETECTION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_INTRUSION_DETECTION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_INTRUSION_DETECTION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_INTRUSION_DETECTION_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_INTRUSION_DETECTION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_INTRUSION_DETECTION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_INTRUSION_DETECTION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_INTRUSION_DETECTION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ASSET","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ASSET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ASSET","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ASSET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_SCHEDULED_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_SCHEDULED_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_SCHEDULED_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_SCHEDULED_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CARDHOLDER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CARDHOLDER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CARDHOLDER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CARDHOLDER_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_BADGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_BADGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_BADGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_BADGE_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_MONITOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_MONITOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_MONITOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_MONITOR_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_LPR_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_LPR_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_LPR_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_LPR_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PUBLIC_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PUBLIC_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_PUBLIC_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_PUBLIC_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERA_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_VIDEO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CASH_REGISTER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CASH_REGISTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CASH_REGISTER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CASH_REGISTER","Genetec_Sentinel_Resources_RE_L_S_STE_LPR_NOMATCHEVENT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNAVAILABLE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_UNITSTATS_NUMCARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDS_ACCESS_MANAGER_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_EDIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GEOCODING_INVALID_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_USER_GROUP_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GROUP_NO_PRIVILEGE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTICS_EXTERNALSYSTEM_PLUGINDEPENDENCYNOTLOADED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_ROLENOTLOADING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CANNOTAUTHENTICATEUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_CANNOTAUTHENTICATEUSERS_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SERVER_NEEDS_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER_SERVERS_GATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARMS_FORCEACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARMS_TRIGGERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_TRIGGERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VISUALTRACKING_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VISUALTRACKING_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLAYBACK_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEOUNIT_RECONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_BADGE_PRINTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DEVICE_SHUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PLATE_FILTERING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_GENERATE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PRINT_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_BOOKMARK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_SNAPSHOT_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SLOW_MOTION_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUAL_TRACKING_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_UNITS_AUTOMATICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_ASSOCIATED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLAT_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIERARCHICAL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTINUOUSLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUTE_ALL_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHOW_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_HIDE_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_HOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_MINUTE_PRECISION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_APPLY_THREAT_LEVEL_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MAP_MANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MAP_MANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_LENS_CAPABILITIES_NOT_EQUALS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_FAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_GHOST_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NOT_ALL_INPUTS_SHOWN","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_HEALTH_EVENT_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALARM_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ALWAYS_DISPLAY_TIMELINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_LIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAP_LAYERS_FILE_PATH_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_ON_PARSING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_FILE_TYPE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_LAYERS_NO_PLACEMARK_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EDIT_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEFAULT_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_MAP_LAYER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_MAP_LAYER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_USE_CLOUD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_OUTPUT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_WEB_SERVER_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_ACCOUNT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_ACCESS_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNCHECK_ALL_MAP_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHECK_ALL_MAP_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVIDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER_LICENSE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_EXPORT_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NEW","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_STATE_IS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATING_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_LPR_MANAGERS_ASSOCIATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NEW_PLATELIST_SPECIFIC_UNITS_ASSOCIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ASSIGNED_LPR_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_LPR_MANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_ASSIGNED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGNED_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PLATELIST_PREFETCHERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_ANOTHER_SIMILAR_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_ANOTHER_SIMILAR_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WAIT_FOR_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_HOTLIST_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSIGN_PERMIT_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS_HOTLIST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_LPR_MANAGERS_PERMIT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS_HOTLIST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_LPR_MANAGERS_PERMIT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS_HOTLIST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LPR_MANAGERS_PERMIT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS_HOTLIST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_PATROLLERS_PERMIT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS_HOTLIST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_SHARPS_PERMIT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_ENTITY_CREATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANCEL_ENTITY_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_ENTRY_WILL_BE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_CHECKING_VIDEOFILE_DATABASE_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_BUILDING_MISSING_FILES_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WHILE_BUILDING_ORPHAN_FILES_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYNCHRONIZE_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_BUTTON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_AND_RESTART_BUTTON","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DEVICES_CANNOT_BE_SWAPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CONFIGURED_ON_ACCESSPOINTGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ACCESSMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AS_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AS_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_PROMOTE_TO_ADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_WORLD_IMAGERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_WORLD_SHADED_RELIEF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_STREET_MAP_WORLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_2D_TOPOGRAPHIC_US","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_PHYSICAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_SHADED_RELIEF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_STREET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_TERRAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARC_GIS_WORLD_TOPOGRAPHIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BING_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD_MADE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_HISTORY_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CZECH_TURIST_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_CHINA_TERRAIN_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_KOREA_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOOGLE_TERRAIN_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATVIA_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA__3D_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_HYBRID_OLD_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_ORTO_FOTO_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LITHUANIA_ORTO_FOTO_OLD_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BENDER_WMS_DEMO_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE_LANDSCAPE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_CYCLE_TRANSPORT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_SEA_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_4U_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_STREET_MAPQUEST_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVI_TERRAIN_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPAIN_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURKEY_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIKIMAPIA_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YAHOO_SATELLITE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YANDEX_HYBRID_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YANDEX_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DECRYPTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ENROLLING_NEW_HID_EVO_CONTROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACCESS_MANAGER_IN_BACKWARDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENTPRIVILEGES_CREATE_ALARM_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_STE_LICENSE_BADLICENSE_ADC_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_STE_LICENSE_BADLICENSE_ADC_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDHOLDER_DUPLICATE_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXED_LENGTH_ATTRIBUTE_REQUIREMENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SAVE_HOTLIST_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_SAVE_PERMIT_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FIXED_LENGTH_ATTRIBUTES_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VAULT_FOLDER_DOES_NOT_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PARSE_EMAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_ENTITY_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EMAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_OCCURED_READING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_OPEN_GENETEC_VIDEO_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMPORT_KML","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_NO_VALID_POLYGON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_NO_POLYGON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_KML_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_BITRATE_REDUCTION_STRENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_DYNAMIC_GOP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_MAXLENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DYNAMIC_GOP_MIN_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REDIRECTION_STRATEGY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STRATEGY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXISTING","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_FAST_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_DESCRIPTION_FAST_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_INTERFACE_FROM_SMC_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_ACCESS_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_NO_FREE_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_WRITE_PROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_NOT_INSERTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MAINTENANCE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MAINTENANCE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORTTRICKLING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ADD_NETWORKCARD_PORT_TWICE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REDIRECTION_LIST_ORDER","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SILENCE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_SILENCED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SILENCE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ALARM_STATE_ALARM_SILENCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_INTRUSION_ALARM_ACKNOWLEDGED","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_ACKNOWLEDGE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACKNOWLEDGE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DOOR_UNLOCK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_NEXT_CONTENT_IN_CYCLE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_PREVIOUS_CONTENT_IN_CYCLE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_ACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_NACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALARM_FORCE_ACK_ALL_TILE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SNOOZE_ALARM_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TOGGLE_RECORDING_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOP_CYCLING_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TOGGLE_MONITORING_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ARM_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISARM_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_START_CYCLING_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSION_ALARM_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TALK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_LISTEN_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_REQUESTING_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_REQUESTING_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DECODING_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_STREAMING_STATUS_DETAILS_DECODING_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_OPEN_NOT_SUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_CLOSED_NOT_SUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_OPEN_SUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMALLY_CLOSED_SUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZE_PICTURES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRANSFER_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ACTIVE_DIRECTORY_DOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CLEAR_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_ADFS_USERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_TRUST_CHAINS_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_USER_GROUPS_HINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUDRATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_DATABASE_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOLIDAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROCEDURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EDITED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DIAGNOSTIC_DATA_COLLECTION_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_SUPERVISED_INPUT_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_PARTIALLY_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_USER_CANCELLATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LPR_CANT_START_WEB_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLER_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_PATROLLER_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_SECURITY_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PATROLLER_ACCESS_READS_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PATROLLER_ACCESS_READS_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATROLLER_USER_PRIVILEGE_TEMPLATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGETEMPLATE_PATROLLER_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSUPPORTED_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_LPRUNIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGER_LPRUNIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_LPRUNIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TRIGGER_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_ADFS_INTEGRATION_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ADFS_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ADFS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INPUT_STATE_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SUBTYPE_INPUT_STATE_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_SUBTYPE_INPUT_STATE_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_INTERFACE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_ASSIGN","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_ASSIGN_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PASSWORD_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DEFAULT_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_VALUE_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_BLOB_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_INT_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_STILLFRAME","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASEFAILOVER_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASEFAILOVER_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DIRECTORYFAILOVER_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DIRECTORYFAILOVER_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_THREATLEVEL_ACTION_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_THREATLEVEL_ACTION_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_HOTACTION_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_HOTACTION_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_LOGONSCHEDULE_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_LOGONSCHEDULE_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PTZPRIORITY_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PTZPRIORITY_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_TASK_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_USER_TASK_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ADGROUP_SYNC_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ADGROUP_SYNC_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PARTITION_ADMIN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_PARTITION_ADMIN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ACCESSRIGHT_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ACCESSRIGHT_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SUPERVISOR_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SUPERVISOR_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISSING_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RUN_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_ENCRYPTION_KEY_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTED_VIDEO_PROHIBITED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTION_DENIED_RENDERLESS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_STILLFRAME_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TWO_PERSON_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_VISITOR_ESCORT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INHERITED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_INHERITED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_DELAY_BETWEEN_CARD_PRESENTATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_ELEVATOR_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_IO_LINKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORT_IO_LINKING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_EVENT_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNLOCKING_DOOR_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCKING_DOOR_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ENCRYPTED_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRING_SOON_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENCRYPTION_CERTIFICATE_EXPIRING_SOON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_4KHIGHFRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_4KMULTISTREAMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_VGACROPPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_FHDCROPPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_FULLSIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_OUTPUTMODE_HDMI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_VIDEO_CODEC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_CAMERA_CONFIG_RESET_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_4_3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_16_9","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASPECT_RATIO_3_2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BFRAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLATION","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RETRICTION","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_OVERTIME","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_ACCEPT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_RETRY_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_GENERAL_SETTINGS_ENFORCED_HIT_ATTR","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ANNOTATION_FIELD_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFIED_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOADING_CERTIFICATE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CERTIFICATE_UNICITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISSUED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISSUED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BROWSE_CERTIFICATE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SELECT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_VIEW_CERTIFICATE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USE_SERVERADMIN_SERVER_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REMOVE_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_SERVER_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_SUMMARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_SHORTTERM","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_OVERTIMETYPE_LONGTERM","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENABLE_PLAYBACK","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SHARP_DISCOVERY_PORT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_EVENTFILTERS_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_EVENTFILTERS_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ERROR_DATA_RETRIEVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ITEM_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SWITCH_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_USER_LOGON_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGON_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_LINKEDID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEACTIVATE_X_DAYS_AFTER_FIRST_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_START_PROTECT_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_STOP_PROTECT_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_START_STOP_PROTECT_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESSPOINTTYPE_READER_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_SPECIFIC_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_STORAGE_DIFFERENT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LISTADDITIONTYPE_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LISTADDITIONTYPE_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKING_LOTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_SPECIFIC_SETTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_ROOM_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_BUILDING_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CAMPUS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CITY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_SPECIFIC_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_GEOGRAPHICAL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_ROOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_BUILDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CAMPUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_CITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE_GEOGRAPHICAL","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILLIMETERS_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCEPT_REASONS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ACCEPT_REASONS_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_DIRECTORY_0_CERT_NOT_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DISCOVER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_CUSTOM_HOTLISTS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_CUSTOM_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_INHERITS_HOTLISTS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_INHERITS_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PATROLLER_IS_IN_SERVICE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRUSTED_SERVER_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_SERVER_NOT_VERIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CERTIFYING_AUTHORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONTINUE_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACCEPT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBPRINT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALLOW_PREV_VER_INSECURE_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUT_OF_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_OR_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_SUPPORTS_TRIGGER_READ","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_INSTANCE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ENTITY_OWNER_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ENTITY_OWNER_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTED","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_AUTOCAD","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_PDF","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_PROVIDER_XPS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_CREATEINCIDENT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_SINGLEMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_MULTIMONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_SMARTCLICK","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_COMBO_EMPTY_SELECTION_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_HIDEEVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LINKSITEM_TOOLTIP_MULTIPLE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LINKSITEM_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MACRO_DEFAULTCONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_KML_ACTIVELAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_INVALIDFOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_UNABLETOCREATE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_ROLE_READPERMISSION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_STORAGE_ROLE_WRITEPERMISSION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SUPERVISOR_LOGON_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_H263","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLYGON","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_IOS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_FORMAT_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_USE_SUPPORTED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_LASSO_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_BRING_FORWARD","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_BRING_TO_FRONT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SEND_TO_BACK","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SEND_BACKWARD","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISCARD_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_CHANGE_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SET_DEFAULT_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_CENTER_HORIZONTAL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_TOP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_CENTER_VERTICAL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_ALIGN_BOTTOM","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISTRIBUTE_HORIZONTALLY","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_DISTRIBUTE_VERTICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_MENUITEM_SELECT_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_RECTANGLE_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_TOOL_TYPE_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEHAVIOR","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_ADD_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_BLOCK_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_BLOCK_FOV_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_SHOW_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV_MAX_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV_ALTITUDE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_PREVIEW_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIDGET_LAT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_PREVIEW_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARRANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROTATE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DESIGNER_DELETE_MAP_ASSOCIATED","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DESIGNER_DELETE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DEFAULT_SELECT_GEOGRAPHICAL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_DEFAULT_SET_IN_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DRILLDOWN_ADFS_ROOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_RELYINGPARTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_FULLYQUALIFIEDNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_NETBIOS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_DEFAULTCLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_NAME_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_LOGOFF_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PTZ_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATIONS_MAXIMUM","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASECLEANUP_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_FILESTREAM_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HOTLISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PROVIDER_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_PROPERTY_SERVICEDOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_XML","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_OWNERSHIP_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DRILLDOWN_IGNORE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_IMPORT_AREA_AS_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_IMPORT_AREA_ELEMENT_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SELECT_DEFAULT_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OR","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_FORCE_ACK_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOATING","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_RECENT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ALL_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_NO_THUMBNAIL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_BROWSE_ALL_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SELECT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SHOW_MINIMAP","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_ADD_TO_FAVORITE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_REMOVE_FROM_FAVORITE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_OPEN_IN_DESIGNER","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_AS_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_AS_DEFAULT_GLOBAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_NO_DEFAULT_SELECT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_APPLY_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IMAGE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_GEOGRAPHIC","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_GEOGRAPHIC_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATING_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_REPLACE_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_WHAT_KIND_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_FORMAT_NOT_SUPPORTED_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IDENTITY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_AREA_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ICON","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_IDENTITY_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WARNING_SELECT_EXISTING_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIZARD_SPECIFIC_SCALE_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_WIZARD_GEOGRAPHIC_SCALE_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_SET_MARKER","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_WIZARD_SCALE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_LABEL_GENERATING_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_LAYERS_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_SELECTED_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAD_FILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_ADDRESS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIODATAFORMAT_MPGA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_SERVER_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS_LC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ENCRYPTED_VIDEO_NO_PRIVATE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCEPTED_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_DEFAULT_GROUP_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_URL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_RELYING_PARTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_DIFFERENT_FROM_PREVIOUS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INVALID_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REQUIRED_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INVALID_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_VALIDATE_LOCALUSER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMIT_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_ENOUGH_MEMORY_FOR_BUFFERING","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_HIT_REJECT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_OVERTIME_HIT_REJECT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_HOTLIST_HIT_REJECT_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_RECORDINGSCHEDULE_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_RECORDINGSCHEDULE_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_STATES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_STATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIP_SMART_CLICK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_COMPRESSING_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_MAP_SOURCE_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_AUTOCAD","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_PDF","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_XPS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KILOMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CENTIMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FEET","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILES","Genetec_Sentinel_Resources_RE_L_S_STE_MEASUREMENT_UNIT_INCHES","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MOTIONZONE_MAP_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_DEFAULT_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_MAP_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLDER_FIRST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEWER_FIRST","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MACRO_CODECHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_1_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_1_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_2_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_2_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_3_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_3_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_4_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_5_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_5_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSISTANT_PAGE_7_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_USER_CANCELLATION_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_READ_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_READ_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPERATION_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_VIDEO_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_VIDEO_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_AN_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_NOT_REFERENCED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAPS_NOT_REFERENCING_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_CLUSTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_FAILOVER_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_FAILOVER_REMOVE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EXPORT_VIDEO_REMOVE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEACTIVEDIRECTORIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEADFS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_ERROR_DUPLICATEADFS_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTEXTMENU_SHOW_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIAGNOSTIC_STATE_PREPARING_ARCHIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_AT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVIEW_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VIDEO_DISPLAY_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESUME_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARM_ALL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_ALL_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_SUSPENDED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_EVENT_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_ALARM_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MONITORING_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_PRIVILEGES_CONVERT_ENCRYPTED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_SERVER_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_ROLE_SERVER_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_NOUN","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_METER_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CENTIMETERS_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_FEET_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_MILES_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_KILOMETERS_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALL_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MANAGER_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT2ACTION_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_CREDENTIALS_SYNCED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDNOPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDNOPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDREJECTEDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDREJECTEDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_LIVE_HTTP_LISTENING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_UPDATE_PROVIDER_HTTP_LISTENING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EMAIL_NOTIFICATION_LOGGING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_CARDANDPINTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_CARDANDPINTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_VALIDCARDINACTIVEPIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_VALIDCARDINACTIVEPIN","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_HOTLIST_PLATE_FILTER_LOGGING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTPS_LISTENING_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_OPTIMIZE_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_OPTIMIZE_PERFORMANCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNIT_USING_DEFAULT_USER_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READS_HITS_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PICTURE_IN_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND_TILE_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CREDENTIAL_REQUEST_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_USER_LOGOFF_FORCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_USE_CAMERA_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_PENDING","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_THUMBNAIL","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_TILES_REMAINING","Genetec_Sentinel_Resources_RE_L_S_STE_NOTIFICATION_MAP_CRUNCH_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AM_EXTENSION_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AM_EXTENSION_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_SYNC_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_REGISTRATION_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_DEFAULT_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_READS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTO_UNIT_WEBPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_MULTIMONITOR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_DETECTION_WHEN_ENCRYPTION_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CONFIGURATION_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_CONFIGURATION_TASK_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MONITORING_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCIDENT_MONITORING_TASK_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_MC_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_MC_INCIDENTS_DESC","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINPCAP_LIBRARY_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REQUIRED_PASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAXIMUM_INTERFACES_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMATS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_VALIDATE_MISSING_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ROOTFOLDER_INCORRECT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOM_CARD_FORMAT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_EXTRACT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EXTENSION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MEMBERSHIP_THREATLEVEL_ASSIGN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_NOT_ACCESSIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_SECURITY_INFORMATION_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_CARDHOLER_HAS_SHARED_CREDETIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALERT","Genetec_Sentinel_Resources_RE_L_S_STE_DISPLAYEVENT_ELEVATOR_UNKNOWN_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_ENCRYPTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_UNIT_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_UNIT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_UNIT_ENROLLMENT_DLG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDING_UNIT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_NO_ACCESS_MANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOCUMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STATIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYNAMIC","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAP_CACHE_LOCATION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISPLAY_SHADOW","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_MAPMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_VALIDITY_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_COLLAPSE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPAND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PEOPLE_IN_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_SWITCH_TO_LIVE_ALL","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MLPILOCATIONS_ROUTE_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_AUXILIARY_ARCHIVER_ADD_NO_ARCHIVE_STREAM_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HEX_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_IS_SYNCHRONIZING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_NO_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_TILE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_DISPLAY_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_MONITORING_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRICKLING_TRANSFER_SIMULTANEOUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPPROVIDER_CUSTOM","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PERMIT_RESTRICTION_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BROWSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_INDEXED_ARCHIVER_NEEDS_TO_BE_RESTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_INDEXED_ARCHIVER_NEEDS_TO_BE_RESTARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INCIDENTMANAGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBFUSCATE_ENTITY_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_FEATURE_ADVANCED_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_ADVANCED_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_CERTIFICATE_UNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_PROJECTION_WGS84","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PING_AUTHENTICATION_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UC_OCCURS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SECURITYCENTER_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_USER_VIEWER","Genetec_Sentinel_Resources_RE_L_S_STE_USER_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_FAILOVER_ARCHIVERS_PER_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_INVALIDAUTHENTICATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_SCHEME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_BASIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_DIGEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_ANONYMOUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_USERNAME_TOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_THIRD_PARTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFUSE_BASICAUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESET_AUTHENTICATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SYSTEM_AVAILABILITY_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_COLLECTION_POLICY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_DATA_COLLECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANONYMOUS_DATA_COLLECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_DATA_COLLECTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_PRIVACY_POLICY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_PRIVACY_POLICY_END","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_INTELLIGENT_CROPPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_INTELLIGENT_CODING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIDDLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_TRAP_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_TRACKING_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SONY_HIGHRESOLUTION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENROLL_DISCONNECTED_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDED_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISABLE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISABLE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DISABLE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MAINTENANCE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WELCOME_TO_SECURITY_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPACT_EDITION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_INTRODUCTION_COMPACT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_END_USER_LICENSE_AGREEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_AGREEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACHINE_NAME_BLANK_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_ACTIVATE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTART_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LANGUAGE_MODIFIED_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_I_ACCEPT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_I_DECLINE","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_STANDARD","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_APPLIANCE","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_COMPACT","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_APPLICATIONMODE_CLOUD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_NOT_USED","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_TOGGLE_FULL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK_AD400","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_LOCK_AD300","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESTART_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESTART_INTRUSION_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UPGRADE_INTRUSION_UNIT_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UPGRADE_INTRUSION_UNIT_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_HTTPFAILED_TOLISTEN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RTSP_SERVER_HTTPSUCCEED_TOLISTEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SQL_ALWAYSON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEN_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_GROUPING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_LAYER_SHAPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPS_HIDE_EMPTY_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOOKMARK_NOT_SAVED_IN_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLUR_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAINTENANCE_TURN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TURN_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_IN_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_IN_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_MODE_IS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_ENDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTSP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_RTSP_NOT_SECURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAM_ACCESSIBLE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IO_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IO_ZONE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DISASTERRECOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTBEHAVIOUR_WHEN_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUTBEHAVIOUR_WHEN_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SDK_ACCESS_1","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SDK_ACCESS_2","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_VIDEO_CODEC_MP4","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_AUDIO_CODEC_MP4","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_INVALID_NAMED_CODEC_MP4","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_OVERLAY_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IOZONE_INVALID_UNIT_TYPE_ONLY_SMC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_INPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBER_OF_OUTPUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_INACTIVE_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERT_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_SCHEDULE_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAILSNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SQL_NATIVE_CLIENT_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MEDIA_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLUGIN_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_USE_GLOBAL_CATALOG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COVER_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGTOOL_AUTHORIZED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGTOOL_UNAUTHORIZED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AVAILABILITY_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LBAEL_UPDATES_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTPONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNAUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_UPDATES_INSTALL_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES_WILL_BE_INSTALLED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MACHINE_UNAUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_UNAUTHORIZED_ANYMORE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_COMPACT_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTART_COMPACT_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPRGADED_COMPACT_TO_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTER_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CONNECTIONSCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERASCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REPORT_SENDEMAILSNAPSHOT_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DUPLICATE_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ADD_COLUMN","Genetec_Sentinel_Resources_RE_L_S_STE_LABLE_THEN_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_ASCENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_DESCENDING","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEB_CLIENT_ROLE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEB_CLIENT_ROLE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_PRIVACY_AGREEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_YES_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_DO_NOT_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ALLOW_ANONYMOUS_DATA_REPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIORITY_CRITICAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_USERLOGON_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ON_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_MUST_BE_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_X_FIELD_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_INVALID_BOUNDS_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_INVALID_ENUMERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_ACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIALS_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILED_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_ACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TELL_US_WHAT_YOU_THINK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBSITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEBCLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THUMBNAIL_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GUIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LANGUAGE_CULTURE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASK_AFTER","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_EMAIL_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_CANNOT_EXCEED_X_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_NAN","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_FIELD_IS_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_BETWEEN_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_INFORMATION_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERT_OUTPUT_BEHAVIOR_NORMAL_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_INACTIVE_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAMERAS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_AUDIT_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_COORDINATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSERS_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_DIRECTORY_OLD_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_UNTRUSTED_FED_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_SEARCH_FOR_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DBPROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTARTING","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVICEUNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_SERVICEUNAVAILABLEMSG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGSEVERITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREADID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THREADNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMANDPARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREATEDUMP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATEDUMP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WAITDUMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEME_DARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_THEMES_LIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMANDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACELOGGER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_USERCOMMANDONLY","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ACTIVELOGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_TRACE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ADDSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ASSEMBLY","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_KILLSERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATEDUMP","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_REDIRECTMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CANCELREDIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESTARTGENETECSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESTARTGENETECSERVERQUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_TIME_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_HTTPSPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MODIDYGENETECSERVERPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_ACCESS_SERVER_ADMIN","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PLEASEUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PLEASEUPGRADEPERFO","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_NOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BROWSERSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BROWSERIE9","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FAILOVERDESC","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_LOGFOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_DELETEFILESAFTER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATEFILEAFTER","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_LINES","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_DEBUG","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_PERFORMANCE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FATAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADDEDSERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_CREATE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_UPDATE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_DELETE_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLYING_EFFECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SETTINGS_MULTIPLE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_TOO_LARGE_MAX_X","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_IMAGE_DIMENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_TO_SAVE_LANGUAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_SET_AP_TO_APG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_GROUP_SECURITY_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_SENT_TO_MEDIA_ROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_X_ENTITIES_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_DELETE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENERAL_INVENTORY_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_RETRIEVING_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASSIGNMENT_NOT_POSSIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ETHERNET_CONNECTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_SAVE_CUSTOM_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_EXCEPTIONS_RELATED_TO_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_LOADING_FISHEYE_PARAMS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_SELECTED_TIME_CRITERIA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DATABASE_RESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_PEER_TO_PEER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NB_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNEXPECTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WRONGVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEM_MINIMUM_USER_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_PRIVILEGES_VIEW_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IOZONE_BACWARD_COMPATIBILITY_ISSUE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_UNTRACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENVIRONMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANT_ADD_UNIT_NO_INTRUSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_STARTINGDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_STOPPINGDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ALARM_ACKNOWLEDGED_ALTERNATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RENAMING_ASF_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILOVER_DATABASE_DIAGNOSTIC_CANNOT_VERIFY_TCP","Genetec_Sentinel_Resources_RE_L_S_STE_DIRECTORY_FAILOVER_DIAGNOSTICS_ACCESSDENIED_TCP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSGAGE_STOP_DIRECTORY_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MAINTENANCE_MODE_ENDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_MAINTENANCE_MODE_ENDTIME_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_PRIORITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROCEDURE_STEP_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_RESETTRACELOGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_IMPORTLOGGERCLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_EXPORTLOGGERCLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SHOWTRACELOGGERCONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEO_REFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_FACTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PLAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBSCRIPTION_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDED_WITH_SUBSCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANNUAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTHLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SUBSCRIPTION_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_CONNECT_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_NOT_ENOUGH_POINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_INVALID_POINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_GEOREFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLACE_MARKER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_MARKER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OWNERS","Genetec_Sentinel_Resources_RE_L_S_STE_EXPORT_STATUS_INVALID_CODEC","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DELETE_LPR_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DELETE_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETE_LPR_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_HIT_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_PROTECTED_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_DELETE_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_DELETE_HITS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EYE_DROPPER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIGHT_THEME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DARK_THEME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_SYSTEM_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHORIZATION_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONLINE_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_SECURITY_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STILL_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_SESSION_ABOUT_TO_EXPIRE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_LOST_MEDIAGATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO_FOR_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TILEPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_CONNECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AREAVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CARDHOLDERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_EVENTTIMERANGE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_LOST_MEDIAGATEWAY_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONNECTION_FAILED_MEDIAGATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_BOOKMARKS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_DOORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ZONE_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ZONE_DISARMED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_DOORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_ALARMREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENETEC_UPDATER_SERVICE_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_SCHEDULE_TIME_FOR_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_TO_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEP_ARCHIVES_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_PERMISSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_USE_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WELCOME_SECURITY_CENTER_COMPACT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADVANCED_SUPPORT_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ASSISTANCE_CONTACT_YOUR_INTEGRATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ENCRYPTION_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_ENCRYPTION_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SSLDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLEASE_ENTER_VALID_HOSTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CURRENT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_WARNING_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOCUMENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SELECTED_MAP_LAYER_EXCEEDS_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CONNECTION_SUBSCRIPTION_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_SERVEROFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_SPLASHSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PTZ_SLIDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALL_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALL_PATTERNS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CAMERA_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOOR_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BOOKMARKS_PLAY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REPORT_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONNECTION_ERROR_SEE_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_MOVE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_PROTECT_LPR_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNPROTECT_LPR_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_PROTECTION_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNDOABLE_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEINFINITESESSION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGER_PAST_READ_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRIGGER_PAST_READ_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_TRIGGER_PAST_READ_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_PAST_READ_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALARM_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PATROLLER_LOCKDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODIFY_GEO_REFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_GEO_REFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MEDIA_GATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_MEDIA_GATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_LPR_HOTLIST_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAG_PERMIT_INVALID_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_DIAG_PERMIT_INVALID_DATA_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_KB2588507_HOTFIX","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_MAP_ITEMS_TO_SET_GEOREF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_STATE_CHANGE_NOT_POSSIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPENWEBCLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ATTEMPTING_TO_PLAY_MJPEG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MP4_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_STREAM_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CAMERA_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_RECORDED_VIDEO_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INSUFFICIENT_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GOTOPATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAP_LAYER_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRYING_TO_RECONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_SELECTED_KMZ_EXCEEDS_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PROTECT_LPR_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNPROTECT_LPR_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PROTECTED_INDEFINITELY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PROTECTED_UNTIL","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_ERROR_FIREWALL","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_CREATECERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_CONNECTION_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_EQ_IR_ILLUMINATOR_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROTATION_CHANGED_MOTION_DETECTION_LOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FULLHD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_BACKGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYWEAK_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_WEAK_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_GOOD_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_STRONG_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_VERYSTRONG_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SERVERADMIN_NEEDS_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_UNIT_WEB_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EVENTS_CURRENT_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EVENTS_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ADDUNIT_SSLCERTIFICATE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_CLEANUP_BACKUP_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VIDEO_DEINTERLACING_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVBR","Genetec_Sentinel_Resources_RE_L_S_STE_DRIVER_AND_FIRMWARE_VER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_DEPRECATEDHASH","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_DEPRECATEDCRYPTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGE_SECUREMODE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLEX_CONFIG_HALF","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXCLUDE_RESULTS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_TO_BUILD_MAPPING_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_BWC_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_BWC_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TAB_HOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_GLOBAL_ANTI_PASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_IGNORE_REX_AFTER_CLOSE_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESET_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GENETEC_VIDEO_PLAYER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_DYNAMIC_FPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNSUPPORTED_SD_64","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SUPPORTED_SD_32","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_REQUIREMENTS_MAX_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_LPRMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_MAX_INVENTORY_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGZONE_PARKING_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_DEFAULT_EXPIRATION_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_ENABLE_PBP_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_FREE_PARKING_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK_PARKING_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_FULL_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_PARTIAL_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_REFRESHING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_CLICK_TO_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_MONITORING_COUNTDOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_ZONE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VEHICLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_OCCUPANCY_PERCENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VIOLATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_MONITORING_IN_LOT_VIOLATIONS_PERCENT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_PARKING_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_PARKING_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PARKING_ZONES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_INVENTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_INVENTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_UPDATE_INLOT_VIOLATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_UPDATE_INLOT_VIOLATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_MONITORING_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_MONITORING_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SESSION_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SESSION_ACTIVITY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SESSIONS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SESSIONS_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_INVENTORY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_INVENTORY_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_CONTROLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_DURATION_OF_STAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_STAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_ZONE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DIRECTORY_CERTIFICATE_NOT_FULLY_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DIRECTORY_CERTIFICATE_MANUALLY_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_BACKWARD_COMPATIBILITY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_CANNOT_MODIFY_VAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_ZONE_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_OCCUPANCY_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_INCIDENTMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PARKING_ZONE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGIS_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_2_AND_UP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_3_AND_UP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_LPR_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAX_INVENTORY_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CONVENIENCE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DEFAULT_EXPIRATION_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MISSING_LPR_MANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_EXIT_AND_ENTRANCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PARKING_DEVICE_ALREADY_ENTRANCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_UNABLE_TO_PLAY_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TIME_ZONE_NOT_SYNCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_BACK_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_LPR_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_LPR_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIOLATIONS_AMOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_CAMERAS_ATTACHED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_SOURCE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_DOORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOOR_WITHOUT_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY_DOORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_HOSTNAME_IP","Genetec_Sentinel_Resources_RE_L_S_STE_SECURITYDESK_OPTIONS_SNAPSHOT_WITH_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_CONTROLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_HOSTNAME_OR_IPADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SOURCE_ENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_PATH_ACCESS_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_UNABLE_TO_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_BASICAUTHENTICATION_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_PLAY_BOOKMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_POSTMATCHED_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTMATCHED_STATUS_POSTMATCHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSTMATCHED_STATUS_NOTPOSTMATCHED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAINTENANCE_INDEFINITELY","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_PTRZCALIBRATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PREVIOUS_YEAR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_NEXT_YEAR","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_CMD_CONFIGURE_X","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_CONVENIENCE_TIME_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_INVENTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_MAX_CAPACITY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_RULE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_RULE_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_ENFORCED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_CONSECUTIVE_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_INVENTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VEHICLE_EXIT_MAX_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DISCOVERY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DISCOVERY_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_IMAGEEDITOR_BRIGHTNESSCONTRAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_ENTERED_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_EXITED_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_ENDED_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_ENFORCED_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_TIME_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_PAID_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_VIOLATION_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_ENFORCED_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_CONVENIENCE_TIME_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_PAID_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_GRACE_PERIOD_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_GRACE_PERIOD_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_TOTAL_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_READ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ENTRY_LPR_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_CONTEXT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_EXIT_LPR_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LAYER_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LAYER_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LINK_SETTING_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_STATE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_SOFT_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_HARD_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_MAP_PROVIDER_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING_WARNING_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_PARKING_ZONE_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_NOT_AVAILABLE_GIF","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DISCOVER_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RTP_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNPIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEADER_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GROUPING_SWITCH_SIMPLE_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNABLE_TO_CHECKOUT_X","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_UNPROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_LINK_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TIME_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SET_MAX_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_RANGE_MULTICAST_PORT_EVEN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CONVENIENCE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PAID_TIME_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_GRACE_PERIOD_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PAID_TIME_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_NO_PAID_TIME_GRANTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_PBP_SERVER_ISSUE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DUMP_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_INTERFACE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IDENTIFIER_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESTRICTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_RESULTS_MAXIMUM_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CONFIGURE_PTZ_DRIVER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_SCHEDULE_COVERAGETYPE","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_EXTERIOR_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_EXTERIOR_CAMERAS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_OFFLINE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_FAULTED_CAMERAS_EXIST","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_FAULTED_CAMERAS_EXIST_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_WORKING","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ALL_CAMERAS_WORKING_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_NO_CAMERAS_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_NO_CAMERAS_ASSIGNED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_ENTRANCE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_ENTRANCE_CAMERAS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_EXIT_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_MISSING_EXIT_CAMERAS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_ERROR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_WORKING","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_ROLE_WORKING_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_ERROR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_WORKING","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKINGZONE_RULE_WORKING_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LPR_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_VEHICLES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_ENFORCEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED_UNKNOWN_VEHICLE_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_STARTED_VEHICLE_ENTERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD_CONVENIENCE_TIME_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_GRACE_PERIOD_PAID_TIME_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_CONVENIENCE_TIME_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_PAID_TIME_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME_PAID_TIME_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_PAID_TIME_PBP_SERVER_ISSUE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_CONVENIENCE_TIME_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_GRACE_PERIOD_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_PAID_TIME_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_INVENTORY_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_MAX_INVENTORY_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_VEHICLE_EXITED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_VEHICLE_REENTERED","Genetec_Sentinel_Resources_RE_L_S_STE_AXIS_DECODERS_MUST_USE_HTTPS","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARKINGZONE","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWPARKINGZONERULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION_EVENT_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_ENTERED_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_EXITED_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_MONITORING_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PAST_READ_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PAST_READ_MATCHING_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCE_DIGITAL_PTZ","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_INVALID_URL","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_ZONE_ACTIVITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_PARKING_ZONE_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDFORMATCORPORATE1000_48BIT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SUPERVISORIN_ACCESS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_SUPERVISORIN_UNLOCKING_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROOT_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_PARKING_ZONE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_SERVICE_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_FAILED_TIME_NOT_MONOTONIC_MP4","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_EXTERNALSYSTEM_NAME_SYNCHRONIZATION_PARTIALLY_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPERTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PBP_SYNC_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_LOADING_PARKING_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_RESET_PARKING_ZONE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERFACEDISCOVERY_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_GRACE_PERIOD_ENDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CONVENIENCE_TIME_ENDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_PAID_TIME_ENDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_IMAGE_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NO_UNIT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPEN_CONFIGURATION_WEB_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_TO_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETTOURS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STARTPRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PTZCOMMAND_STOPRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STARTPRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_STOPPRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELOG_FOR_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_PTZ_PRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_TASKBAR_STOPALLPRESETTOURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATE_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_OCCUPANCY_LAST_UPDATED_AT","Genetec_Sentinel_Resources_RE_L_S_STE_SENTENCE_AN_UPDATE_IS_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SOFTWARE_UPDATE_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_SENTENCE_UPDATE_FOR_X_VERSION_Y_IS_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SYSTEMMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWROLES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYROLES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDROLES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEROLES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWSERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYSERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETESERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWNETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYNETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDNETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETENETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADDPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETEPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESILIENTCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECONNECTIONTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FUSIONSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_FUSIONSTREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_FUSIONSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFIC_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SET_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_AGENT_STOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTORUNMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATIONTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWINGMODE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ENABLEAUTORUN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_DISABLEAUTORUN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARKING_SESSION_REPORT_SPECIFICTIME_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARKING_SESSION_REPORT_TIMERANGE_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SWING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSIONS_SPECIFIC_TIME_AT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEARING","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_PARKING_SESSION_ON","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_LOADED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_MANAGEMENT_UNABLE_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEXT_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_PICTURE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UPGRADE_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODEC_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYMAPLAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFYMAPLAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCH_TOLERANCE_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_MISSING_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_TO","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_INTRUSION_UNIT_STAGING","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PAYBYPLATE_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PAYBYPLATE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_FIRMWARE_UPGRADES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM_CONTENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SORT_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURE_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_SAVED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_SAVE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_LOADED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_LOAD_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_DELETE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_UPDATE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_LAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYOUT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RENAME_LAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_MATCHERNOTREADY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PAYPROVIDERERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PERMITNOTCONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_PERMITNOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_REQUESTTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PBP_SYNC_UNEXPECTEDERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_TIME_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PARKING_PBP_UNEXPECTEDERROR","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PBP_CONNECTION_ESTABLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PBP_CONNECTION_UNREACHABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOPAN_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOPAN_TILTANGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CODEC_CONFIGURATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_COMPATIBLE_EXTENSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSCH_ROTATION_MIRRORIMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIMERANGE_EXCEEDS_MINUTE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_RENAMED","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_LAYOUT_RENAME_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CANCEL_FIRMWARE_UPGRADES","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRMWARE_UPGRADE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_TIMERANGE_END_BEFORE_START","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTED_AT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPLETED_AT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VEHICLE_PARKING_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELAY_UPGRADE_UNTIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIFFERENT_VERSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEARABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_KIWI_MODULE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PLAN_MANAGER_ARCGIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPTURE_FREQUENCY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_CROWD_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_FACE_RECOGNIZED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_HEAT_MAP_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_COUNT_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_DIRECTION_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_IGNORED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_OBJECT_VELOCITY_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COMPLETING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PREPARING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_READYTODOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_VALIDATION_INVALID_FILENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_COMPLETED_PARKING_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_VIOLATION_PARKING_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PARKING_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PARKING_HIGH_RES_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_ERROR_GENERIC_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_BANDWIDTH_LIMIT_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_ADVANCED_LICENSE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ADVANCED_LICENSE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_BASIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_STANDARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSE_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLIENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CAMERA_RELATIVE_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACH_AS_ENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACH_AS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_VALUE_CHANGE_SIMPLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_PARTIALLY_FAILED_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_SUCCESS_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NOT_ENOUGH_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NO_PATH_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_CONSOLIDATION_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ARCHIVE_CONSOLIDATION_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_CONSOLIDATION_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_ARCHIVE_CONSOLIDATION_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ARCHIVE_CONSOLIDATION_PARTIALLY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CARDHOLDERS_FILTER_IS_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNUSED_CREDENTIALS_FILTER_IS_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_APPROACHING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVING_AWAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_RELATIVE_MOTION_DESCRIPTION_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION_APPROACHING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DIRECTION_MOVING_AWAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_CLOSE_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_CLOSE_SESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ENFORCE_IN_LOT_VIOLATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEWARPER_LIMITVIEWAREA","Genetec_Sentinel_Resources_RE_L_S_STE_RESILIENCY_NOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_RESILIENCY_RECOVERINGCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECURE_MODE_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SMART_CARD_ENCODING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STARTED_MANUAL_P","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STOPPED_MANUAL_P","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RECORDING_MANUAL_START","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_RECORDING_MANUAL_STOP","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_EXPORT_FOLDER_INITIALIZATION_ERROR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_TOO_MANY_INVALID_LOGIN_ATTEMPTS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NO_MAPS_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_CUSTOM_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_LOGICAL_ID","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_PASSWORD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ACTIVITY_TRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_GENERAL_SETTINGS_ACTIVITY_TRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_INCIDENT_CATEGORIES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LANE_DIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_IGNORE_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_APPROACHING_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_MOVING_AWAY_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_EXIT_APPROACH_TO_ENTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_IGNORE_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_APPROACHING_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_EXIT_MOVING_AWAY_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_ENTRY_EXIT_APPROACH_TO_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_SELECT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PARKING_CONFIG_RELATIVE_MOTION_INTRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_READER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_FOLDER_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_SELECTED_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_DISABLED_INVALID_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_PROCEED_FIRST_LOGON_UNSAFE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CANCEL_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IDENTITY_SERVER_NOT_VERIFIED_FIRST_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DESTINATION_SUBFOLDER_OF_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGES_SAVED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROLLERS_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCODE_BEFORE_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STID_USB_READER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTION_SENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_MANDATORY_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PLATELIST_MISSING_MANDATORY_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PLATELIST_CONFLICTING_ROWS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVEAWAY_AS_ENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_MOTION_MOVEAWAY_AS_EXIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SESSION_STATE_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_RESTRICTED_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECT_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LICENSEPLATE_CREDENTIALEXACTMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOCOMPRESSION_SMART_CODEC","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_SERIALNUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_DISCOVERYPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_TESTED_DISCOVERYPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_GOT_NETWORKSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_PROCESSED_HARDWAREMODEL","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_INITIALIZED_HARDWARE","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_RESOLVING","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_RESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_SOFTWIRE_IP_UNRESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TIMERANGE_EXCEEDS_HOUR_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURATION_OF_THE_EXPORT_CANNOT_EXCEED_X_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_UNKNOWN_VEHICLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_TOOMANYCONCURRENTREQUESTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORT_REQUESTTHROTTLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_ZONE_DEVICE_BROWSER_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAPACITY_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_FAILED_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_TRANSFER_FILE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_EXTRACT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_INSTALL_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_UNABLE_START","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_UNIT_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_WRONG_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_DOWNGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARKING_CAPACITY_THRESHOLD_EVENT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_ACTIVE_PARKING_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_VIOLATION_PARKING_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_REVOKED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_UNTRUSTED_ROOT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_CERTIFICATE_DNS_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_ENTITY_TYPE_CANNOT_BE_SHARED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_UPDATEDS_CANNOT_MODIFY_OFFLINE_SHARED_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_MULTIPLE_PARKING_VIOLATIONS_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_CANNOT_BE_UNDONE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADMIN_PASSWORD_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROOT_PASSWORD_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED_SECURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ROOT_PASSWORD_REQUIRED_SECURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PIN_ON_SCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_OBJECT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ARCHIVER_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADMIN_PASSWORD_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION_FAILED_OFFLINE_SHARED_PARTITION_CONTENT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENABLE_LAYER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_MANUAL_ENROLLMENT_REFUSED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ADD_UNIT_STATUS_ENROLLMENT_REFUSED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_LOADED_ESRI_MAP_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CAMERA_RESTRICTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_UNSELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IS_UNSELECTED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_VERIFY_ARCHIVER_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_LOGIN_FORBIDDEN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_LAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTRA","Genetec_Sentinel_Resources_RE_L_S_STE_DRILLDOWN_PARKING_ACTIVITIES_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_FIRMWARE_UPGRADE_CANCELED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIOLATION_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEDEFAULTWEBPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILED_QUERY_PARKING_READS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FAILED_QUERY_PARKING_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CHANGED_SUBTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CHANGE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_YES_CHANGE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_DATA_POINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_OPERATOR_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_DOCUMENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_RULES_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_WORKFLOWS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_INCIDENT_LINKING","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_OPERATING_PROCEDURES","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_FORMS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_CASE_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_SOPS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ESCALATION_PROCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DYNAMIC_DOCUMENT_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_SUPERVISORS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_NUMBER_OF_MOBILE_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSER_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ADVANCED_REPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CREATE_NEW_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PARKING_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECTED_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_IN_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_SNAPSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_NOT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FEDERATED_ESRI_MAP_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_BROWSE_REMOTE_DATABASE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WISE_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_WEBCLIENTROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INITIAL_CONFIGURATION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TASK_CANT_BE_DISPLAYED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PREPARE_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PREPARING_DOWNLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DOWNLOAD_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_CSV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEMS_COUNT_MAXIMUM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_DURATION_CANNOT_EXCEED_X_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXPORTING_VIDEO_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WEBCLIENT_APPLICATIONPATH_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_REPORTGENERATOR_EXCEPTIONREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PARKING_PBP_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PARKING_EXPORT_FOLDER_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWAREUPGRADE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CLOSE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_SPLASHSCREEN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_BOOKMARKS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_DOORACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_ALARMREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CARDHOLDERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_WEARABLE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MORE_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOWNLOAD_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_WILL_BE_AUTOMATICALLY_GENERATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_IN_PROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CAPTURE_INPROGRESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_READY_TO_BE_ENCODED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_NOT_READY_TO_BE_ENCODED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FIRMWARE_UPRADE_INTERFACES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_ACCESS_DISRUPTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_PARKING_OPERATOR_INITIALIZATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_PARKING_RULE_ADDITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_PARKING_RULE_REMOVALS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_STOP_SLOW_MOTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SESSION_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SESSION_EXPIRING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOUND_FILE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_EDIT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETE_MAP_ITEMS_TO_CLEAR_GEOREF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDIOBITRATE_80KBPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_UNLOCK_DOOR_EXPLICITLY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DOOR_EXPLICITLY_UNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_RESOLUTION_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DEFAULT_PARKING_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_G64_FORMAT_LONG_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INITIALIZE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIGURATION_INITIALIZED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_INITIALIZE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BIND_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CERTIFICATE_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_BIND_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DETAILS_UNABLE_TO_BIND_CERTIFICATE_TO_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOST_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DETAILS_HOST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_HOST_HTTPS_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_START_HOST_HTTPS_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_HOST_HTTPS_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START_WEBCLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_STARTED_WITH_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_START_WEBCLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_RETREIVE_VIDEO_EXPORT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_CREATE_VIDEO_EXPORT_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_START","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNSUPPORTED_CAMERA_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_MUSTCHANGEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_AUX_ARCHIVE_RECORDING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PORT_ALREADY_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHENTICATION_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPLACE_LAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_EXISTING_SESSION_OPENED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_EXPORT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_EXPORT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COOKIES_MUST_BE_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ANTIPASSBACK_NOTSUPPORTEDBY_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_INTERLOCK_NOTSUPPORTEDBY_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_DETAILS_PEOPLECOUNT_NOTSUPPORTEDBY_ELEVATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMAGE_EXPORT_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AUTHENTICATION_COOKIE_NOT_SET","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNIT_CLOCK_NOT_SYNCED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_SSLDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EVENT_TO_LOCATION_ON_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UPGRADE_BROWSER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VALIDATION_GLOBAL_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_BELOW_RECOMMENDED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAM_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAM_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WEBCLIENT_STREAM_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_SECURITY_DEMAND_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILEPLUGIN_DO_NOT_ASK_AGAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOT_EXECUTE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DOWNLOAD_CREATING_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FILE_TOO_LARGE_MAX_X_KB","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SAVE_AS_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TILELAYOUTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_OVERWRITE_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAM_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAM_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EDIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTING","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTFAILED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_UNITCONTROLSTARTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_OVERWRITE_TILELAYOUT_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_NODATACOLLECTION_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_ANONYMOUSDATACOLLECTION_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_YESDATACOLLECTION_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DISK_USAGE_REACHED_CONFIGURED_MAX","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DATABASE_USAGE_REACHED_CONFIGURED_MAX","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_CERTIFICATEERROR_AUTOUPGRADE_EXPANSION","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DECODER_PERFORMANCE_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_ENABLE_ARCHIVE_CONSOLIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_ONESHOT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_WASHER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_WIPER_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO1","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO2","Genetec_Sentinel_Resources_RE_L_S_STE_ENCODER_COMMAND_PANASONIC_BLACKWHITE_AUTO3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_ARCHIVE_CONSOLIDATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SERVER__X__VERSION__Y__IS_TOO_OLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_RETRIEVE_TILE_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GO_TO_SPECIFIC_DATE_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_DURATION_CANNOT_BE_UNDER_X_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOREF_CHANGE_BG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPLACE_ITEMS_CHANGE_BG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SENSORIMAGESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_CROPSENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WS_DISCOVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_HOSTNAME_CHANGE_NOT_HANDLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_SETTINGS_AUTOMATICALLY_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DELETE_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OVERWRITE_TILELAYOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PASSWORD_REQUIREMENTS_NOT_MET","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_PATROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_NEWSEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_ARCHIVER_SETTINGS_NOT_MODIFIABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CONVERT_EXPORTED_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CONVERT_EXPORTED_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EDIT_ALARM_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_EDIT_ALARM_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ALARM_CONTEXT_EDITED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_ALARM_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_ALARM_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TEXT_FILE_DATE_ORDER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_DATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIGINAL_ENTITY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNC_ENTITY_NAME_WITH_ORIGINAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENTUSERSEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MESSAGE_RESTORE_ENTITY_ORIGINAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SAVEASUSERSEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RECORDING_PROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSTIME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROCESSOR_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MEDIAPROCESSOR_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_UNABLE_TO_OPEN_WEB_BROWSER","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_REDUCING_DATA_RETENTION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ALARM_CONTEXT_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ALARM_CONTEXT_CHANGED_OVERWRITE","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ACTIVITY_ORIGINAL_INITIATOR_ENTITY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_FROM_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PIE_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOUGHNUT_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMNS_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STACKED_COLUMNS_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROWS_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STACKED_ROWS_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LINES_CHART","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_X_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_SHOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPLIT_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_TOTAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHARTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHART_TOO_MUCH_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_HOUR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_WEEK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_MONTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_BY_YEAR","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_CHARTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINT_GRAPH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHAT_TO_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_OTHERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRAPH_EXPORTED_TO_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CHECK_PAID_TIME_READ_EDITED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_SELECTED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_DEPLOY_ALL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_CONFIGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_STAGING_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DEPLOY_STAGING_CONFIG_CONFIRM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEST_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_READ_EDITED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_RULE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ROLE_TO_ENABLE_FEATURE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REMOVE_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOVE_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_OPACITY_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_LAYER_PROPERTY_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAPROCESSOR_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_Y_AXIS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SPECIFIC_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DELETING","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_CARDHOLDER_REMOVED_FROM_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_SDK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_PEOPLE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNCHRONIZATION_REFRESHING_GLOBAL_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CHANGE_ALARM_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CREDENTIAL_NO_LONGER_FITS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_RECORDING_PROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_RECORDING_PROBLEM_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_GOTOBACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_FAILEDAUTOBACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_WHATLIKEDO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_RESTART_ANYWAY","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOM_ENTITY_SINGLE_INSTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_THREAT_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_TEST_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STOP_TEST_FOV","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_ON","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EXTEND_MAINTENANCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CHARTS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_REMOVE_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_RECORDING_PROBLEM_RESOLVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARED_PERMIT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_VIOLATION_SHARED_PERMIT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SHARED_PERMIT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZIPSTREAM_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORPHAN_FILES_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_OPTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_RECOMMENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_CRITICAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDED_FIRMWARE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNITS_WITHOUT_RECOMMENDED_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILTER_RECOMMENDED_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIVE_STREAMING_UDP_PORT_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDER_EDITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMER_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_PRIVACY_PROTECTION_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LIVE_STREAMING_PORT_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDER_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MOBILE_CREDENTIAL_PROVIDERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOAST_TRIGGER_ALARMS_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_LEGACY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBJECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_FOV_COVERAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONCONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONSCHEME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_CONNECTIONVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORWARD_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_FORCE_ACK_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_NO_EMAIL_SERVER_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARM_ZONE_WITH_ACTIVE_TROUBLE_INPUT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_MOBILE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARM_INTRUSION_AREA_WITH_ACTIVE_TROUBLE_INPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIEW_PRESET_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PRESET_ALREADY_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SELECT_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ACTIVE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_PARTNUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_NOCRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BATTERY_SENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTNUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDED_FIRMWARE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_LAST_CHECK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CRITICAL_UPDATE_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRITICAL_UPDATE_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_OPEN_HARDWARE_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_MOBILE_INVITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRE_REASON_LPR_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_REASON_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DIRECTORY_WHERE_TO_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TRUSTED_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNTRUSTED_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NOT_RESPONDING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCOMPATIBLE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_USER_OR_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OTHER_LOGON_METHOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CARDHOLDER_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_EMAIL","Genetec_Sentinel_Resources_RE_L_S_STE_EMAIL_DO_NOT_REPLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SYNC_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_SUBTYPE_WEARABLECAMERA_HOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_UNIT_DOWNSTREAM_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_SYNC_NOT_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_SYNC_NOT_RUNNING_DIR_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SYNC_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANNOT_CONNECT_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_RETRIEVING_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SYNC_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_STOPPING","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_RECONNECTION_PENDING","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_NO_SCHEDULED_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_NO_SCHEDULED_TASK_TO_START_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CHANGES_CANT_SYNC_HOST_TO_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CHANGES_CANT_SYNC_SITE_TO_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_LICENSE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_SITE_LICENSE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_LICENSE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_CANT_APPLY_TO_HOST_LICENSE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETION_REVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETION_REVERTED_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATION_REVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATION_REVERTED_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MODIFICATION_REVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MODIFICATION_REVERTED_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CREATIONS_DELETIONS_MODIFICATIONS_REVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CHANGES_REVERTED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_CREATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_DELETION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_HOST_MODIFICATION_CANT_APPLY_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_SITE_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_SITE_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_CREATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_DELETION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SITE_MODIFICATION_CANT_APPLY_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_HOST_UNAVAILABLE_DEPENDENCIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_TO_HOST_UNAVAILABLE_DEPENDENCIES_DETAILED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DUPLICATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_SINGLE_DUPLICATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_MULTIPLE_DUPLICATE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CANT_SYNC_SYSTEM_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CUSTOMFIELD_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_MOBILE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOBILE_CREDENTIAL_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_CUSTOMFIELD_MISSING_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INTERACTIVELOGONREQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROVIDER_CREDENTIAL_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MOBILE_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWNETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYNETWORKS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEPARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWROLES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYROLES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDROLES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEROLES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWSERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYSERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETESERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEUSERGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEWUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFYUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_ADDUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETEUSERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_CUSTOM_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_LOGICAL_ID","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_PASSWORD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_INCIDENT_CATEGORIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SYSTEMCONFIG_ACTIVITYLOG_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_SYSTEMCONFIG_ACTIVITYLOG_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_START_OVER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_START_INVESTIGATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SEEK_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ROI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISUALLY_INSPECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAST_FINDER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECTING_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_SPECIFIC","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_PREVIOUS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INSPECT_NEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_MILLISECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_HOURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_1DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENTNAME","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMEVENT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_SERVERADMIN_BACKWARDAPPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_EMAIL_VALIDATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_TRUSTED_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_ACCESS_CONTROL_DOWNSTREAM_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AREA_PERIMETER_DOOR_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AREA_CAPTIVE_DOOR_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DOOR_REMOVE_DEVICE_UNASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_DOOR_REMOVE_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_IMPORTTOOL_UNABLETOACCESSSFILE_SCHEDULEDTASK","Genetec_Sentinel_Resources_RE_L_S_STE_EXTERNALSYSTEM_COMMUNICATIONS_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CHARTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SYSTEMMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACTIONS_INTRUSIONDETECTION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_AUTOVU_PARKING_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADMIN_ALARMMANAGEMENTTASKS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_DEPENDENCY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MOBILECREDENTIAL_REQUIREMENTS_NOTMET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PERSON_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_VIDEO_CONFIDENTIAL_VIDEO_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_ENABLE_ACCESS_CONTROL_UNIT_SUPPORT_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_DISABLE_ACCESS_CONTROL_UNIT_SUPPORT_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EVENT_COLOR_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_IGNORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEWINSYSTEMSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANYTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GRAPH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPENCYMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPENCYLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYLIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYMODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYSOFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYHARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXOCCUPANCYSTRICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_MAXOCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCY_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LEGACY_EXPORT_ENCRYPTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCYREACHED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MAXOCCUPANCYEXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BELOWMAXOCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCYREACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURESS_ISUNDERDURESS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_RESET_SYSTEM_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DURESSPINENTERED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OVERRIDE_ELEVATOR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_VISITOR_ASTRAY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DATABASE_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MISSING_TAIL_ESCORT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_CAPACITY_VALUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_VIRTUALINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_VALUE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_CUSTOMFIELDTYPE_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SDCARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIZEINBYTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGE_LOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STORAGE_MOUNT_ON_BOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DELETE_RECORDINGS_OLDER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEANUP_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECALIBRATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CALIBRATE_FOV_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEYPAD_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LED_DRIVE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIEGAND_PULSES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIM_ZEROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORMAT_NIBBLE_ARRAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_BI_MAG_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_NORTHERN_MAG_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CASI_1_WIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUTS_COME_FROM_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OSDP_2_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BAUD_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SMART_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_LC_MILLISECOND_S","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_UNIT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INCOMPATIBLE_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SKIPBACKUPANDSTARTDIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAY_BY_PLATE_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRED_SESSION_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_INVENTORY_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTRANCE_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXIT_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV6","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IPV4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SPECIFY_LPR_UNIT_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMANENT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_REMOVE_ALLENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CHANGING_SETTING_WILL_RECONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TOOLS_UNIT_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIRE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_FAILOVEROCCURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROVIDERS_CREATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_ENTITY_TO_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_TO_SEE_MESSAGE_CONTENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CRED_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ONLY_NUMERIC_CHARACTERS_ARE_ACCEPTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_NO_PP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR_NO_PP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME_NO_PP","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_STARTED_NO_PP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LPR_EDIT_READ","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_CARDHOLDER_ADDED_TO_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_EXTERNALSYSTEM_NOT_RUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_DIRECTORY_GROUP_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVE_DIRECTORY_GROUP_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ARCHIVING_PROBLEM_STREAMING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOTE_INSUFFICIENT_SECURITY_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVATE_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_MULTICAST_ENDPOINT_IPV6","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_MULTICAST_IPV6","Genetec_Sentinel_Resources_RE_L_S_STE_DATASTORE_ERROR_CUSTOM_FIELD_TYPE_ALREADY_EXISTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_ERROR_WITHFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED_WITHFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_UNIT_TRUSTED_CERTIFICATE_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ASSOCIATED_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SILENCE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACKNOWLEDGE_INTRUSION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SILENCEINTRUSIONALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACKNOWLEDGEINTRUSIONALARM","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRIGGERINTRUSIONALARM","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_AUDIO_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BOLD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ITALIC","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNDERLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNUSED","Genetec_Sentinel_Resources_RE_L_S_STE_CARDHOLDER_GROUP_IS_AN_ESCORT_CANNOT_BE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INVALID_TIME_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_CANNOTLOADSYSCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_WEBCLIENT_CANNOT_INIT_SYSMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MISSING_TIME_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_PERSON_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_SELECTED_EXPORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VIDEO_ROTATION_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_INVALIDDIRECTORYENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOO_MANY_ITEMS_TO_DISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_IS_TEMPORARY_AND_INACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_OFFLINE_ELEVATOR_SCHEDULE_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_SCHEDULE_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_CONTROL_RTSP_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_ALARM_CONTEXT","Genetec_Sentinel_Resources_RE_L_S_STE_VERTX_ENROLLMENT_DISCOVERY_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UDP_START_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UDP_END_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_TIME_OUT_OF_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_TIME_OUT_OF_SYNC_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING_DASHBOARD_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RESTROLE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_RESTROLE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATED_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_EVENTSOURCE_FEDERATEDCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CHOOSE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_STOPPED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_CONNECTION_STOPPED_BYUSER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_HEALTH_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_HEALTH_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOW_DISK_CHANGE_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTICAST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_GATEWAY_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKLIGHTCOMPENSATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WDR_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERRIDE_FLOOR_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_FREE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_RESTRICTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_OVERRIDE_FLOOR_ACCESS_SCHEDULE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_OVERRIDE_SCHEDULE_FOR_FLOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_FILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOMEONE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ELEVATORS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ELEVATORS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_30_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_1_MINUTE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_5_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SUPERVISION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SUPERVISION_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_INHERITS_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENFORCE_SINGLE_PARKING_VIOLATION_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCONNECT_USER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCONNECT_SELECTED_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_TEMPORARY_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_USE_EXISTING_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_TO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_NEW_TEMPORARY_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_ZOOM_LEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MAX_ZOOM_LEVEL_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOVE_UP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOVE_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_DELETE_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_DELETEINCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_READER_SUPERVISION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_CUSTOM_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_STREAMINGINFO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_STREAMINGINFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INVALID_INPUT_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTIPLE_MOBILE_CREDENTIAL_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPORARY_ACCESSPOINTRULE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSEMAXOCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POPUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CENTER_MAP_ALARM_RECEIVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PANEL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_PANEL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_PANEL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER_PANEL_POSITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_SINGLE_CLICK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_DOUBLE_CLICK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POPUP_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DO_NOTHING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_IN_MONITORING_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_THREATLEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_THREATLEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CAMERA_STREAMING_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_CAMERASTREAMINGINFO","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVACY_PROTECTED_CAMERA_CANNOT_BE_MOVED_TO_56_OR_EARLIER_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_REVERSETUNNEL_SERVER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_FEDERATED_SITES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_FEDERATED_SITES_STATUS_NOTREGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_SET_PARKING_ZONE_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_PARKING_ZONE_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_OCCUPANCY_SET","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PARKINGZONE_SET_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_PARKINGZONE_SET_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_SET_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DEPRECATED_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_ENABLE_PASSIVE_AUTH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORIGINAL_VIDEO_NOT_RECORDED_AUXILIARY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ORIGINAL_VIDEO_RECORDED_ARCHIVER_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OVERRIDE_ELEVATOR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONFIDENTIAL_VIDEO_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PRIVACY_PROTECTION_TO_VIEW_CONFIDENTIAL_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_REPORT_GENERATED_NO_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REPORT_GENERATED_NO_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_SELECT_PLAYBACK_ORIGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAYBACK_FILTER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STREAMING_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORIGINAL_ARCHIVE_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MSG_CONNECTION_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_BATTERY_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AC_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_TAMPER_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADFS_NO_RESPONSE","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_HEALTH_MONITOR_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CONFIGURE_ITEM_NUMBER_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_BATTERY_FAIL_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_AC_FAIL_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_INTERFACE_TAMPER_FAIL_RESTORED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_FAILED_CONNECT_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GCS_FAILED_CONNECT_HOST_REASON","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_SCHEDULE_ASSOCIATED_WITH_APR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ANTIPASSBACK_HARD_STRICT_SHOULD_SET_FOR_MAXOCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOAD_PART_NUMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PUT_BACK_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PATH_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARDS_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_DASHBOARD_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REMOTE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_REMOTE_CONFIGURATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ENROLL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISCOVERY_RULE_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_BACKUP","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_RESTORE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_DATABASE_CONFLICTRESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_PORT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_PATHS_MUST_BE_ENTERED_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARD_DIRECTORY_REPORTS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_EDGESTORAGE_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_SHARP_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_NO_CALIBRATION_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MAXOCCUPANCY_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS_WARNING_MAXOCCUPANCY_NOTSUPPORTEDBY_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_PRE_SHARED_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_ACCOUNT_TEMPORARILY_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_TILE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFLINE_PTZ_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPERVISOR_2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SD_LICENSE_USAGE_WARNING_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HM_DASHBOARD_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ESCORT_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANNOT_ESCORT_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_CARDHOLDER_GROUP_AS_ESCORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_SIMILAR_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERTEMPORARYLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_LOADING_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_UNSUPPORTED_REMOTE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_UNABLE_LOCATE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_CONNECTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_WINDOW_CLOSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_TOO_MUCH_TIME_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_TIMEZONE_LINEISLANDS_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENSION_PRODUCT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATE_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_TO_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILEROLE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILEROLE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_VIDEOFILE_REEXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIGITALPTZ_PRESETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ALL_EVENTS_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMIT_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_SECOND_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VISITOR_LIMIT_EXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_VISITOR_INVALID_HOST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDERGROUP_HAS_NO_CARDHOLDERS_WHO_CAN_ESCORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_SEQUENCE_PAUSED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITY_TYPE_SEQUENCE_RESUMED","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_LOCKDISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FLOORS_OF","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_EDIT_FLOORS_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_FLOOR_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_MAP_FLOOR_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ALARMS_LINKED_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_OUTOFSYNC_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_CAMERA_OUTOFSYNC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INTRUSIONAREAWIZARD_ERRORBECAUSEDUPLICATEPHYSICALNAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INTRUSIONAREAWIZARD_ERRORBECAUSEDUPLICATEPHYSICALNAMEWITHNAME","Genetec_Sentinel_Resources_RE_L_S_STE_DURESS_CONFIGURATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS_WARNING_DURESS_NOTSUPPORTEDBY_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HOST_ALREADY_ESCORTING","Genetec_Sentinel_Resources_RE_L_S_STE_COMMAND_UNLOCK_ALL_DOORS_OF_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SELECTED_CARDHOLDER_CANNOT_ESCORT_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_DOORS_OF_AREA_EXPLICITLY_UNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_UNLOCK_DOORS_OF_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_STREAMMISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READ_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_NOT_ARCHIVING_NO_STREAM_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRYING_TO_CONNECT_TO_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MULTIFACTOR_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_ENROLLMENT_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_INVALID_KEYFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_REENROLL_HINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_WRONG_KEYFILE_FOR_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_KEYFILE_ALREADY_CONSUMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_USE_MANAGED_ACCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNETION_NOT_TRUSTED_EXPLANATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EGRESS_TRAFFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGRESS_TRAFFIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTION_REFUSED_EXPLANATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_SITE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_SITE_X","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELAGENT_DISCONNECTED_FROM_SERVER_X","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELAGENT_CONNECTED_TO_SERVER_X","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_STATUS_TUNNELROLE_AGENT_LOST_ON_SERVER_X","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_NOT_YET_ENROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TUNNEL_REENROLL_WILL_STOP_WORKING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_RESET_ENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_TUNNELSERVER_DELETE_WILL_STOP_WORKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_SERVER_NOT_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_CONNECTION_REFUSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNEL_KEYFILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPY_KEYFILE_TO_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_SAVE_KEYFILE_TO_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TUNNEL_ALREADY_ENROLLED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_REFRESH_COPIE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDGETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_WIDGET_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_DASHBOARD_EDITION_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARD_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EMPTY_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_WIDGETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BACK","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_NEW_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_NOT_SUPPORTING_CHARTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIDGET_NOT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_RESULTS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOP_RESULTS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IF_RESULT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_COLORING_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULT_COUNT_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RESULTCOUNT_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOPROWS_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LEGEND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHART_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_COUNT_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITYCOUNT_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_TOP_ROWS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_NUMBER_OF_RESULTS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_TO_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_WEB_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TILE_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMAGE_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_IMAGE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_BYPASSANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_BYPASSANTIPASSBACK_EVENT_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARDS_PAGE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_DASHBOARDS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CONVERSION_PARTIAL_SUCCESS_INCOMPLETE_FRAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_FOV_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN_FLOORS_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDIT_ENTITY_ICON_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTENDED_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MODEL","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DOORTEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_DOORTEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACEMODULE_DEVICEDEFINITION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_INTERFACEMODULE_DEVICEDEFINITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_OUTPUT_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SET_OUTPUT_ACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RULE_LIMIT_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HOST_CANNOT_DISABLE_CAN_ESCORT","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_CHECKOUT_OR_UPDATE_VISITORS_SHORTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_VIDEO_FAILURE_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_FAILURE_SEQUENCE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEAUTHENTICATIONMODE_WINDOWS","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASEAUTHENTICATIONMODE_SQLSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_HOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CANNOT_MOVE_LPR_UNIT_LEGACY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_TRACKING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CANNOT_ADD_TO_HOTLIST_NO_LPRMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_ADD_ACCESS_RIGHT_NEW_PARTITION_EXCEPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARTITION_MODIFY_ACCESS_RIGHT_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_CREATION_PRIVILEGE_ESCALATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADD_TO_HOTLIST_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_VERTXERROR_UNABLETOCONFIGURETLS","Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_HIDENROLLMENT","Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_HARDWAREACCELERATION","Genetec_Sentinel_Resources_RE_L_S_STE_HELP_URL_LIVEVIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_DAYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEAR_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATIVE_TIME_LESS1MIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLEASE_SELECT_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILEONMAPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILEONMAPS","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSLOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSDECISION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AD_LIMITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROUP_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTASK_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTASK_ARCHIVETRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PART_NUMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_AGENTSTARTED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_DIRECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGIS_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ALREADY_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ALREADY_ASSIGNED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_AREA_ASSIGNED_TO_INTRUSION_AUDIT","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_PRIVACYPROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS10","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS11","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_TLS12","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROTOCOL_HID_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INCORRECT_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_PROTECT","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_PASSWORD_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OPEN_PROTECTED_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_REEXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_LOADING_ERROR_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_IS_PASSWORD_PROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEXT_WATERMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PASSWORD_PROTECTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_REGISTERARCHIVERSOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DATABASE_ENCRYPT_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VERIFY_DATABASE_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATE_SERVER_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENCRYPT_SERVER_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_WARNING_UNSUPPORTED_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_DATABASE_NOT_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPILING_MACRO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOR_THE_NEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CANCEL_SCHEDULE_OVERRIDE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_SCHEDULE_OVERRIDE_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_MOBILE_LOWSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFISTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOBILE_DOESNT_SUPPORT_ALL_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECT_ENTITY_UNIT_PROGRESS_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_RECONNECTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_RECONNECTION_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_PRECONNECTION_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHG_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WINDOWS_INTEGRITYLEVEL_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_STATUS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_STATUS_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENFORCE_STRONG_USER_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_LOCAL_SERVICE_ACCOUNT_FOR_GENETEC_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_LOGON_PASSORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACTIVATE_AUTO_LOCKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURATE_FEDERATION_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_WINDOWS_ACTIVE_DIRECTORY_INTEGRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_CLAIMS_BASED_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_SERVER_ADMIN_ACCESS_TO_LOCAL_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_USER_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_CONNECTION_OF_CLIENT_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_RECOMMENDTED_SECURITY_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REVIEW_PRODUCT_IMPROVEMENT_PROGRAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_TRUSTED_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONTROL_ACCESS_TO_RESOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_FUSION_STREAM_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_SC_IN_BACKWARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_DIRECTORY_GATEWAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_KEEP_SC_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RECOMMENDED_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_BASIC_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TURN_ON_SECURE_COMMUNICATION_MEDIA_ROUTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_CAMERA_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SET_ADMIN_PASSWORD_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONNECT_CAMERAS_HTTPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DEACTIVATE_UNUSED_SERVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_GLOBAL_CARDHOLDER_SYNCHRONIZER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_HID_ENABLE_SECURE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_HID_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SYNERGIS_APPLIANCE_FIRMWARE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD_APPLIANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENABLE_SECURE_MODE_APPLIANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_ACTIVATE_P2P_AND_GLOBAL_ANTIPASSBACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WHITELIST_IP_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACTIVATE_LOGGING_IN_ACTIVITY_TRAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_UNLIMITED_SESSION_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_INSTALL_VALID_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENSURE_HTTPS_MOBILE_ADMIN_AND_MOBILE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHOOSE_LONG_UNIQUE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER_AND_WEB_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER_AND_MOBILE_APPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_VIDEO_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_ADMIN_PRIVILEDGE_ACCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_ENCRYPTED_COMMUNICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DO_NOT_USE_ADMIN_PRIVILEDGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_WINDOWS_SECURELY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_MICROSOFT_EMET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SYNCHRONIZE_CLOCKS_WITHIN_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_STATUS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLE_STATUS_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_EVENT_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SENDMESSAGE_TO_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_PART_OF_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_SCORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_CHECKLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_SCORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_COMPLETED_SECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_SECURITY_CHECKLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_GUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SECURITY_CENTER_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WINDOWS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_NOT_RESPECTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_WARNING_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_SC_HARDENING_GUIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISARM_PRIMARY_AREA_ON_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REARM_IN_STAY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ACKNOWLEDGE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_ACKNOWLEDGE_SYSTEMTROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAN_LOGIN_REMOTELY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_LOITER_EXPIRY_COUNT_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HAS_DURESS_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GO_TO_MENU_ON_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GREET_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_ALARM_ON_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHONE_EXTENSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTING_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_NONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_INSTALLER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_MENU_USER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ILLEGITIMATE_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SWITCH_TO_MAP_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_SPY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_GENETEC_COPYRIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_ANALYTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_ALLOW_REX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_CHECK_UNLOCK_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_DISARMED_AND_SCHEDULE_VALID_UNLOCK_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_DISARMED_OR_SCHEDULE_VALID_UNLOCK_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_ENTRY_IF_INSIDE_AREA_IS_AREMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DENY_EXIT_IF_OUTSIDE_AREA_IS_AREMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_FOLLOWS_INSIDE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_FOLLOWS_OUTSIDE_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ACCESS_TAKEN_ON_DOOR_UNLOCK_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_ACCESS_TAKEN_ON_REX_REN_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_OPEN_CLOSE_EVENTS_ON_SCHEDULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORCED_DOOR_SENDS_DOOR_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_OUT_REX_WHEN_INSIDE_AREA_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTAIN_REX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_UNLOCK_ON_ECHEDULE_IF_INSIDE_AREA_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PREVENT_UNLOCK_ON_ECHEDULE_IF_OUTSIDE_AREA_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROMPT_USER_FOR_ACCESS_REASON_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PULSE_READER_BEEPER_ON_REX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RCYCLE_DOOR_OPEN_TIME_ON_REX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECYCLE_REX_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPERATED_LATE_TO_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_USER_AREA_WHEN_PASSBACK_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEPAD_ADDRESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOOR_PRE_ALARM_DELAY_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_PRE_ALARM_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECYCLE_DOOR_OPEN_TIME_ON_REX","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_LICENSESYNERGISIX","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_AGENTSTOPPED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_WAITINGFORCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_FAILEDCREATEAGENT","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_INITIALIZATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVERS_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVERS_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ON_BEHALF_OF","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_ON_HOST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_NETWORK_TRAFFIC_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_NETWORK_TRAFFIC_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_ARCHIVER_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CPU_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEMORY_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_TOTAL_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_NETWORK_RECEIVING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICSAGENT_NETWORK_SENDING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_MODEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_DRIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_VIDEO_ENGINE_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_VIDEO_MEMORY_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_MEMORY_CONTROLLER_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_BENCHMARK_FPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPU_BENCHMARK_LAST_RUN_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_SCORE_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PASSWORD_AND_CONFIRM_PASSWORD_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_CONTAINS_WHITESPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPERATES_LATE_TO_OPEN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PROCEED_ANYWAY_NOT_RECOMMENDED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_VIDEO_STREAM_NAME_WITH_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_PAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_TILT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_POSITION_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LENS_CALIBRATION_CIRCLE_RADIUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IDLE_COMMAND_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVEINTRUSIONUNIT_NOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_LASTACCESSGRANTEDTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_RAW_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTION_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CARDHOLDER_EXPIRE_AFTER_FIRST_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CREDENTIAL_EXPIRE_AFTER_FIRST_USE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CARDHOLDER_EXPIRE_WHEN_UNUSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_CREDENTIAL_EXPIRE_WHEN_UNUSED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_MULTICAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALWAYS_MULTICAST_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_ACTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_FORMATTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_MOUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_UNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_UNIT_DISK_UNMOUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MESSAGE_FROM_SENDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARE_VIDEO_FROM_SENDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MULTIPLE_ENTRIES_MORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATFORM_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAYERS_TO_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNABLE_EXTRACT_IMAGE_FROM_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MISSING_MAP_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUIRES_10_8_AND_UP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_IDENTIFIABLE_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_PERSONAL_DATA_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_DURESS_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_STREAM_QUALITY_MAXRESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_HIGH_RESOLUTION_CUTOFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION_AREAS_EXIST_BUT_NONE_IS_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUGIN_CANNOT_LEVERAGE_DATABASE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_PLATFORM_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROPOSED_PLATFORM_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_ENCRYPTED_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXTERNALSYSTEM_ACCEPT_NEXT_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANALYTICS_MODULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATE_THUMBNAIL","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_HOTLIST_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HDREADY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_HIDE_OUTPUT_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SHOW_OUTPUT_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOUBLESWIPEUNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOUBLESWIPELOCK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_IDENTITY_UNIT_NOT_VERIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COULDNT_CREATE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLATFORM_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_PLATFORM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_PLATFORM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PLATFORM_UPGRADE_ACCESS_DISRUPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CAMERA_INTEGRITY_MONITORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNCOMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECOMMENDATION_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_COPYCONFIG_ERROR_IMAGESTABILISATION_CAPABILITIES_NOT_EQUALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_CONNECTION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLESTATUS_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ROLESTATUS_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UAR_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRMWARE_UPGRADE_NEEDS_UAR","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_PARKINGRULE_PERMIT_OR_PERMIT_RESTRICTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_MOTOSCANS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_PARKING_ENFORCEMENT_LIGHT_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_GENETEC_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_AVOID_DIRECT_INTERNET_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DEACTIVATE_UNUSED_ROLES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_HID_ENROLL_ACCESS_CONTROL_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_ADMIN_PASSWORD_HID_CONTROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_AUTHENTICATE_DATABASE_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_MOTOSCAN","Genetec_Sentinel_Resources_RE_L_S_STE_PATROLLERTYPE_PARKING_ENFORCEMENT_LIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHITELIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WHITELIST_MOBILE_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLACKLIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_APPLICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BLACKLIST_MOBILE_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BLACKLISTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMISSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_S","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_SHOW_UNDEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_WHAT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_LIVE_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_GO_TO_UPDATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPDATES_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABILITY_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_NOT_PROPERLY_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_MACHINES_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REPORTING_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDITABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_USERTEMPORARILYLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ABBREVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KICKOUT_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PATROLLER_ROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_OCCUPANCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_PARKING_ZONE_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_HIT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOVU_READ_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BYPASS_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_OPERATION_DENIED_BY_FIREWALL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_GLOBAL_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TRUSTED_CERTIFICATES_SYNERGIS_APPLIANCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_LATEST_SYNERGIS_APPLIANCE_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTH_MONITORING_PAGE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_SECURITY_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_OPEN_GUS_WEBPORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RECEIVE_GUS_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GUS_OPEN_WEBPORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RECEIVE_GUS_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOVEVIDEOUNIT_NOTSUPPORTEDARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_DIRECTORY_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_JOURNAL_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_TOOLTIP_MAXIMUM_JOURNAL_TABLE_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTH_MONITORING_ROLE_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON_REMOTE_MONITOR","Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_VALIDATING","Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_INVALID_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_CREDENTIALS_VALIDATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION__REQUEST_ACCESSCONTROL_UNIT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_SECURITY_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DIRECTORY_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DOWNLOADINGENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_DELETINGENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_CREATINGENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MACRO_EXECUTE_METHOD_CANNOT_BE_ASYNCVOID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TODAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_LASSO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_VIEW_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_ADD_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_DELETE_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_RESETSENSORS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_RESETSENSORS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BYPASSINTRUSIONINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BYPASSINTRUSIONINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_THREAT_LEVELS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_IMPORT_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_ARCHIVE_TRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITOR_ALL_CAMERA_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_TIME_TO_MONITOR_ALL_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_CAMERA_INTEGRITY_TOOK_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CAMERA_INTEGRITY_TOOK_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_PROFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_SDK","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VISITORS","Genetec_Sentinel_Resources_RE_L_S_STE_MSGBOX_BODY_DELETE_VISITOR","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_VERIFY_FILE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BACKUP_FOLDER_LOCAL2","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDER_GROUPS_CANNOT_ESCORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILEDCONNNECTIONNOTIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_PROXY_DISCONNECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_PROCESSING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_MULTIPLE_SYSTEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_SCREENSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_MAP_SCREENSHOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_MAXCAMBANDWITH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_NOTAPPLICABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORDSTRENGTH_NOTAPPLICABLE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFIVIDEODATAFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_WIFIFRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARVIDEODATAFORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CELLULARFRAMERATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_HIGH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_STANDARD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_VIDEO_RESOLUTION_DESCRIPTION_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PASSWORD_WATERMARK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEVIDEOSETTINGS_WIFI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILEVIDEOSETTINGS_CELLULAR","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_DESFIRE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_VIDEOMODULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIEW_VIDEOMODULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_VIDEOMODULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_VIDEOMODULES_ACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_VIDEOMODULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEOMODULES_ACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_MAP_CONTEXTMENU_UNLOCKDISPLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIT_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_HIGHSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_LOWSTREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXITING_INTRUSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERING_INTRUSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULE_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_UNLOCK_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADVANCED_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERING_EXITING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_KICKOUTBLACKLISTMOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_KICKOUTBLACKLISTMOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWMOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEWMOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_FORCEARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_BYPASSARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_FORCEARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_BYPASSARMINTRUSIONAREA","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SMARTZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_USE_EVENT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RADIUS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_MAP_MANAGER_NOT_PRESENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_PENDING_ARRIVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_ON_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_AVERAGING_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_AVERAGING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MAXIMUM_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_HIGH_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MEDIUM_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_LOW_BIT_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BITRATE_OPTIMIZATION_MINIMUM_BIT_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISITOR_CONFIRM_CHECKIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIT_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAVE_AND_CHECKIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_OPEN_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXMOBILESESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXMOBILEVIDEOSESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_COMMUNICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_COMMUNICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CALL_PANEL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CALL_PANEL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MAKE_NEW_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MAKE_NEW_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_DIAL_PAD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_DIAL_PAD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_USE_CONTACT_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_USE_CONTACT_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TRANSFER_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TRANSFER_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CALL_REPORT_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CALL_REPORT_TASK","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_DESFIRE_PRELOADEDINDEX","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_DESFIRE_INLINEKEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USB_READER_TESTING","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_CARD_ENCODING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_VERB_FORMAT_CARD_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_DESFIRE_UPDATE_APPLICATIONMASTERKEY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_FREE_CREATE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRYPTO_METHOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_COMMUNICATION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_LENGTH_IN_BITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_VALIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEXADECIMAL_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_KEY_DIVERSIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SITE_CONFIGURATION_DIALOG","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CARD_MASTER_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_MASTER_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APPLICATION_READ_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OLD_APPLICATION_MASTER_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_KEY_AT_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_NUMBER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_READ_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_WRITE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_OFFSET_IN_BYTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUTTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INPUTDEFINITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_LOWERCASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECOND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FAILED_TO_OVERWRITE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIG_NAME_ALREADY_USED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INLINE_KEYS_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORTY_BYTES_HEXADECIMAL_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PICTURE_BEING_SYNCHRONIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GPNS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZUREHUB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUSH_NOTIFICATION_SERVICE_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HUB_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_TEST_SENDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_MOBILE_FEATURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_INBOX_MESSAGES_PER_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CAMERA_STREAMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_DYNAMIC_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_FIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_BURGLARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_PANIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_DOOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_MOTIONSENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_WINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_FENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_GAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDWARE_DECODING_NOT_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATE_SHARP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DUPLICATE_SHARP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OFFICERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_IS_WATCHING_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_DELTED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USEDEFAULTSECUREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SUMMARY_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DETAILS_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_GUIDE_INSUFFICIENT_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYNERGISIX","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_REVOKE_ENCRYPTED_KEY_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_REVOKE_ENCRYPTED_KEY_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CREDENTIAL_ALREADY_BELONGS_TO_ANOTHER_CARDHOLDER_NOT_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_INTRUSIONINPUTTYPE_ICONMODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_UPGRADE_OPTIMIZING_DATABASE_AND_CLEANUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_CHOOSE_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_ENROLLMENT_CHOOSE_EXTRA_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_FILE_FILTER_TXTFILES_CSVFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_TURN_ON_ENCRYPTION_ON_TRANSIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCLUDE_DELETED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_LOW_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_HIGH_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESET_CIM_MEDIUM_SENSITIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_FIELD_INTRUSIONINPUTTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHARP_PORT_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ATTEMPTING_TO_RECONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_STARTINGAGENT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DASHBOARD_ALREADY_REFRESH_EVERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSRXRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSTXRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSMAXTXRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSMAXRXRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSVIDEOSESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSACTIVECAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_COPYCONFIG_ERROR_DIFFERENT_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMUNICATION_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYSTEMSTATUSCLIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MUST_CONFIGURE_ONE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_INTERVENTION_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_USE_JOURNALING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MODIFY_USER_GRANTS_PARTITION_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MULTICAST_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_INFO_BEST_AVAILABLE_MULTICAST_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_UNREACHABLE_PEER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_EVENT_SOUNDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_PERMIT_RESTRICTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_NUMBER_OF_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HTTP_SERVER_START_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_EMPTY_PERSISTENCE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ENABLING_LARGE_RTP_PACKETS_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_UP","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_MOTION_ANOMALY_NOMINAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WEBCLIENTLICENSEEXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_DISCONNECT_SELECTED_USER","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REJECT_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REJECT_CALL","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_MANUALENROLLMENT_FAILED_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ACTION_ON_DISARMED_TROUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_PLATEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HELP_PLATEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECEIVED_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_CATEGORY_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REPORTING_NOT_IMPLEMENTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RUN_MACROS_WITH_LIMITED_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADVANCEDSECURITYSETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWUNKNOWNCA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWNONSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWINVALIDNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWINVALIDDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWWEAKSIGNATURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWUNKNOWNCA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWNONSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWINVALIDNAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWINVALIDDATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWWEAKSIGNATURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_UNKNOWNCAALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_NONSERVERALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_INVALIDNAMEALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_INVALIDDATEALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_WEAKSIGNATUREALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADVANCEDSETTINGS_INVALIDNAME","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_EXTENSIONIDENTIFIER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIMITMEDIAGATEWAYSERVER","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_MAX_ITEMS_SELECTED_REACHED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FIRST_HOST_ALREADY_ESCORTING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ENCODE_SMART_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ENCODE_SMART_CARDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ERROR_FIRST_OR_LAST_NAME_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_MACROS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_AC_GENERAL_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_REPORT_INTRUSIONINPUTACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_INTRUSIONINPUTACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_CATEGORY_INTRUSIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_REPORT_INTRUSIONINPUTACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_INTRUSIONINPUTACTIVITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AGENT_NETWORK_RECEIVING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AGENT_NETWORK_SENDING_RATE","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE_DATAFOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_ADMINTOOL_DATABASE_LOGFOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_AGENT_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GVP_NOT_ENOUGH_VIDEO_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_HID_SECURE_MODE_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_MOTION_SEARCH_WHEN_ENCRYPTION_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LIMITATIONS_WHEN_ENCRYPTION_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAYS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_NO_MATCHING_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_EXISTS_IN_XNUMBER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_USER_NO_CLAIMED_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_ADFS_NO_USERNAME_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUPPORTEDRESOLUTION_QVGA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIEW_ARCHIVER_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_FILTER_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CIM_SETTINGS_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMPUTER_NETWORK_TRAFFIC_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAIL_CAMERA_ANALYTIC_SETTINGS_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVER_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVER_STATISTICS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_CANNOT_ENROLL_ACCESSCONTROLUNIT_BECAUSE_DEFAULTPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OLD_ROLE_CANNOT_LEVERAGE_DATABASE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MOBILE_ROLE_GOOGLE_LICENSE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_MOBILE_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ABOUT_TRUSTED_ROOT_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_WEB_CLIENT_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REMOVE_MOBILE_DEVICE_SC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_CONFIG_TOOL_NESTED_FEDERATIONS_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTO_DIGITALZOOM_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GOTO_PTZ_PRESET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_CPU_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_PROCESS_MEMORY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MACRO_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MACRO_ABORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILED_PRINT_DASHBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_BULK_APPLY_THREAT_LEVEL_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_APPLICATION_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_HOTLIST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_OVERTIME_RULE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_PERMIT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_ANNOTATION_FIELDS_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_APPLICATION_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_HOTLIST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_OVERTIME_RULE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_PERMIT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_ANNOTATION_FIELDS_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATABASE_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_LOGS_FOLDER_HAS_MOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_REMOVE_UNIT_CERTIFICATE_HID","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_DECRYPTION_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_ENCRYPTION_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_NO_PRIVATE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_SIGN_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_UNKNOWN_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_OFFLINE_MOBILE_USERS","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_TOKEN_GENERATION_FAIL_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_GPNS_ACTIVATION_FAIL_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_PUSH_NOTIFICATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_DEVICE_CAMERA_STREAMING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_VIDEO","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_FEATURE_VIDEO_STREAM_MAX_SEQUENCE_LENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDETERMINATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_CATEGORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENING_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAUSED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_CURRENTUSER","Genetec_Sentinel_Resources_RE_L_S_STE_CERTIFICATE_VALIDATOR_STORE_LOCALMACHINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELSERVER_CREATE_FEDERATION_FOR_NEW_TUNNEL_QUESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NUMBEROFMEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ENTITIES_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDWINDOWSFILENAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEAK_ADMIN_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUDITTRAIL_REMOTEUSER_THROUGH_FEDUSER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_SHARP_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_HTTPS_CONNECTION_SHARPV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CHANGE_DEFAULT_SHARPX_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_CONFIGURE_HTTPS_CONNECTION_SHARPX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_ACCESS_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_NETWORK_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_COMMUNICATION_PATROLLER_AND_SC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENCRYPT_GENETEC_PATROLLER_DATABASE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_RESTRICT_ACCESS_GENETEC_PATROLLER_WORKSTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SELECT_GENETEC_PATROLLER_LOGON_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_SIMPLE_HOST_FUNCTIONALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_FLOORS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAVIGATE_TO_PARENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOOMANYRESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOACTIONSAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEVICE_CAMERA_STREAMING_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT_START_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PORT_STOP_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_REVOKE_PERMISSION_STORED_PROCEDURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DB_CONNECT_WINDOWS_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_LIMITING_CONCURRENT_LOGONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SCRAMBLE_ENTITY_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TECHDOC_HUB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BLACKLIST_MOBILE_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_SECTION_LPR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_TO_GET_VIDEO_DISPLAY_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_BACKWARD_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_NO_REGISTRATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_INACCESSIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANCEL_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ACTIONREQUEST_RECIPIENT_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_VALIDATOR_SUCCESS_BACKWARD_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_SECURITYDESK_OPTIONS_USERINTERACTION_ASKVISITORCHECKOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSMQ_NOT_RUNNING_ON_SERVER_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MOBILELOCALDB","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UNKNOWN_ENTRIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UNKNOWN_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPOSURE_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVALID_EXPOSURE_ZONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_REFRESH_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USER_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ACCESS_CONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_LPM_PROTOCOL_TO_CONNECT_SHARPV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOTE_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SECURITYCONFIG_FIXCONFIGURATIONPROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GRANT_PARTITION_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_REMOVE_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIXCONFIGURATIONPROBLEM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PRIVILEGECONFIG_PROBLEMATICPARTITIONACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANCONFIGURESECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANCONFIGURESECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACCESSRIGHTSCONFIG_PROBLEMATICPARTITIONACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TUNNELCLIENT_DISCONNECTED_FAILED_TO_CONNECT_TO_ADDRESSES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONITORING_WIDGET_ALLOW_DISPLAY_MODE_TOGGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEND_TO_TILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AREA_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EDIT_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALLOW4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_NORMALHIGH4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVELOW4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH2","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH3","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAIL_CUSTOM_SUPERVISED_INPUT_VALUES_ACTIVEHIGH4","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARKING_OVERLAY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_REVERT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_RECOMMENDED_IS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UNIT_UP_TO_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FACTORY_RESET_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FACTORY_RESET_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_FIRMWARE_READ_RELEASE_NOTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_DOWNLOAD_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_FIRMWARE_UPGRADE_NOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_CANNOT_MOVE_ACCESSCONTROLUNIT_SAAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GUS_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIA_PROCESSORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_DELETE_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAY_TYPE_SINGLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERLAY_TYPE_MOSAIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_CATEGORY_DIAGONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_VIDEO_WATERMARKING_OVERLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_CENTER_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_CENTER_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_TOP_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POSITION_BOTTOM_CENTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CREDENTIAL_MISSING_CARD_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AFTER_WIZARD_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CARDHOLDERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CARDHOLDERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGE_CAMERAS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_WIDGET_TOOMANYRESULTS_HEADER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPMANAGER_ROLE_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_GENERAL_SETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_LPR_GENERAL_SETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_WATERMARK_INVALID_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSMQ_SLOW_QUEUE_ON_SERVER_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_MSMQ_ERRORS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_CHAR_IN_ARCHIVE_BACKUP_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOMORROW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DURING_THE_NEXT_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_RETRIEVE_TILE_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADDSELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPY_MAP_OBJECT_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_VALIDATOR_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_VALIDATOR_EXPIRING_SOON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_VALIDATOR_NOT_VALID_YET","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_MODIFY_ACCESS_RIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANEDITPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANEDITPRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERS_CANEDITACCESSRIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_USERGROUPS_CANEDITACCESSRIGHTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_REQUIRES_AT_LEAST_ONE_USER","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSE_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDHOLDER_DUPLICATE_LICENCE_PLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IP_ADDRESS_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_MODE_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_STATE_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARM_WIDGET_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARVESTER_WHAT_TO_COLLECT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CONNECTION_LOST_WITH_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CONNECTION_ESTABLISHED_WITH_ARCHIVER","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INTERFACE_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_INTERFACE_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADAPTIVE_MOTION_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_HISTORY_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_COMPUTE_WINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_THRESHOLD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_TEST_WINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_COMPUTE_SAMPLES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_ABNORMAL_MOTION_HISTORY_WEIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_DATA_OVER_TUNNEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_ENFORCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_PREFERRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPT_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_STATUS_INCOMPATIBLE_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVERSETUNNEL_ENCRYPTION_STATUS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_INVALID_ENCRYPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DIAGNOSTIC_ENTITY_X_IS_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENGINEERING_BUILD","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERLOCKED_X_SECONDS","Genetec_Sentinel_Resources_RE_L_S_STE_PROXYRETURNCODE_USERLOCKED_X_MINUTES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PUBLIC_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOCK_SENSOR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_DOORUNSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_CARDHOLDER_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CARDHOLDER_GROUP_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PARENT_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_CONTROLLERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_MODULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_FIRMWARE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_READ_BEFORE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNKNOWN_FIRMWARE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FILE_WATERMARKED_WITH_OBSOLETE_ALGORITHM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPY_WATERMARKINGORIGIN_TO_CLIPBOARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WATERMARK_NOT_SUPPORTED_BY_ALL_SEQUENCES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WATERMARKING_TYPE_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_ARCHIVED_STREAM","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UC_ARCHIVED_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_ARCHIVED_STREAMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIELDSREQUIREATTENTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FILLREQUIREDFIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_RECORDING_ISSUE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_PANASONIC_PRIVACYMODE_ON","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_PANASONIC_PRIVACYMODE_OFF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVABLE_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_NOEXTENSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_GRID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXCLUDE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FAILOVER_LICENSE_SERVERS_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CAMERASTOINPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DEVICES_ALREADY_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADD_UNIT_API_UNSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRAY_INTRUSIONOVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INTRUSION_DETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_DISARMEDNOTREADY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_DISARMEDREADY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ARMING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_PERIMETERARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_MASTERARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ALARMACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ALARMSILENCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATE_INTRUSIONAREA_ENTRYDELAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_DISARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_ARMED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAPSTATECATEGORY_INTRUSIONAREA_ALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEPLATE_CONTAINSWHITESPACE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEPLATE_TOOLONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKUP_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATION_LOOP","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CONTACT","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_UP_CONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_LC_CONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWCONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_CONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFYCONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_CONTACTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_CONTACT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_CONTACT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CONTACT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CONTACT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CREATE_FEDROLE_FOR_TUNNEL_SITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOVE_INTERFACEMODULE_TO_OTHER_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOVE_INTERFACEMODULE_SELECTDESTINATIONUNIT_DIALOG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_MAX_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_ENABLE_HIGH_RESOLUTION_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_QUERY_INTERVAL_TIMESPAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_SELECTED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGEUNITPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_GENERATEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDCHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDNOTACCEPTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CHECKIFUNITONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGEPASSWORDUNSECURECONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_APPLYTOCONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_UARMUSTBEONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BUTTON_UNITMUSTBEONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSGBOX_MIGHTLOSEUNITCONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MSGBOX_MIGHTLOSEUNITCONNECTION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LENGTH_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_CANNOTCONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_CUSTOM_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_CANNOTCONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_LOWERCASE_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_CANNOTCONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_DIGIT_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_CANNOTCONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_EXACTLYXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_BETWEENXANDYCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_MINXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_CANNOTCONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_UPPERCASE_MAXXCHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURELOSTPASSWORDTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURELOSTPASSWORDDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURERECOVERYTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILURERECOVERYDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILUREOLDPASSWORDTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_FAILUREOLDPASSWORDDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_RECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARMING_STATE_PERIMETER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNKNOWNCUSTOMFIELDVALUENOTUNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WEBSDK_VIEWPRIVILEGE_ROLENOTLOADEDYET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_HEALTHEVENT_ARCHIVER_TRICKLING_PARTIALLY_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ROLE_BACKWARD_COMPATIBILITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_ROLE_BACKWARD_COMPATIBILITY","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETES_SUPPRESSED","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_GCS_DELETES_SUPPRESSED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_CANCEL_FOR_ONE_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_RETRY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ARCHIVER_TRICKLING_CANCEL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_COPYCONFIG_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_FILTER_TXTFILES_CSVFILES_DATFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_LOCKSETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_READERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_LAST_ERROR_TIMESTAMP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARVESTER_PERFORMANCE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_NO_PARKING_RULE_ASSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUSTERING","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_DESCRIPTION_MUSTERING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DELETE_OFFICER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LABEL_PRIVILEGES_FORCEACKNOWLEDGEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTING_MORE_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LASTING_MORE_THAN_X_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_CARDHOLDERMOBILEPHONE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSGRANT_CONFIRMATION_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_DENIED_CONFIRMATIONTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_GRANTCONFIRMATION_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_PASSAGECOUNTEXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_DENIED_PASSAGECOUNTEXCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONNECTED_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_ARCHIVERSERVICECONNECTIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_ARCHIVERSERVICECONNECTIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READS_MATCHING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVIDENCE_READY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_DESCRIPTION_EVIDENCE_READY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_FEDERATED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_VIDEOWATERMARKING_WORKSTATION_LIMITATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATED_ARCHIVERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_ENTITIESHAVEDIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_ENTITIESHAVEDIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CIM_WIDGET_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVIEW_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERAS_MONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAMPERING_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_TAMPERING_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_REFERENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADJECTIVE_CURRENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLICK_TO_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_THUMBNAIL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_EDIT_IN_CONFIGTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_VIEW_IN_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RESET_CAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RESET_ALL_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_READ_MATCHING_EXCLUDED_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DISMISS_HEALTH_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DISMISS_HEALTH_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_DISMISS_HEALTH_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ORDER_ALARM_MONITORING_BY_LATEST","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_UPDATE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNIT_UPDATE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_UPDATE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_DISMISSED_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASSWORD_STRENGTH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NOBADGETEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNIT_UPDATE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_PASSWORD_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_BACKUP_BEFORE_PASSWORD_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NONLOCALENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_THEOFFICERISACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_THEOFFICERISINACTIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_THEOFFICERISUNLICENSED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_YOUAREGOINGTODEACTIVATEOFFICER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INACTIVEOFFICERSCANNOTUPLOADNEWEVIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACAMERAISSTILLLINKEDTOOFFICER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_QUESTION_DOYOUWANTTOUNLINKTHECAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CAMERASLINKEDTOANINACTIVEOFFICERCANNOTUPLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLUGIN_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOURCE_AND_DESTINATION_ROLES_HAVE_DIFFERENT_CONFIGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_PASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_POLICY_SPECIAL_CONTAINEDINLIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CONFIRM_USER_PASSWORD_EXPORT_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INCORRECT_USER_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CREDENTIAL_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENAME_CREDENTIAL_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_VIEW_EXPORT_PASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_UNIT_VIEW_EXPORT_PASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_PARTIALLY_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DIAGNOSTIC_COMPLETED_SUCCESSFULLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_PASSWORDS_EXPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIT_PASSWORDS_EXPORTED_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MOBILE_CREDENTIAL_TRANSFER_NO_CARDHOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_UNIT_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_UNIT_INVENTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_PASSWORD_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_CHANGED_MANUAL_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_CHANGED_GENERATED_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIFFERENT_USER_IS_NEEDED_FOR_AUTHORIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VAULT_AUTOMATIC_CLEANUP_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATUREDESCRIPTION_UNITASSISTANT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANT_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATUREDESCRIPTION_UNITASSISTANT_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VALIDATE_SAAS_CLOUDLINK_LOCALIP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_IN_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_OUT_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TOTAL_TIME_PRESENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_SINCE_FIRST_ENTRY","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CIM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CIM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CIM_MISSING_PRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GROSS_TOTAL_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_EXPORT_VIDEO_REQUESTED_AUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_MULTIPLE_PARKING_SESSIONS_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOSE_SINGLE_PARKING_SESSION_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MAP_ROLE_DISABLING_BACKWARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTPORTALREADYUSED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTHASFAILOVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTNOTCOMPATIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BWCAGENTCANNOTSTART","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BWCROLECANNOTHAVEFAILOVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOASSOCIATEDARCHIVERSRUNNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_IN_WITH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_CLOSE_PARKING_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_CLOSED_MANUALLY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_PARKING_SESSION_COMPLETE_MANUAL_CLOSURE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_CORRELATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_SHORT_DESC_CORRELATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLEAR_SEARCH","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CORRELATION_MANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_CORRELATION_MANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CORRELATION_RULE_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_TRIGGERING_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_ROOT_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_CORRELATION_RULE_TRIGGER_CONDITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_CORRELATION_RULE_ACTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_NAME_CORRELATION_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CORRELATION_ALERT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_CORRELATION_RULE_HIT_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ALARM_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_DATA_SOURCES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_VIEW_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_ADD_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_REMOVE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CORRELATION_MODIFY_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_VIEW_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_ADD_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_REMOVE_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_MODIFY_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_AUTHENTICATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVE_DIRECTORY_LINK_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SHARED_PARTITION_CANNOTADD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SHARED_PARTITION_PARTIALADD_XY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADDELIGIBLEENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADD_UNIT_USER_INSUFFICIENT_PERMISSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_NETWORK_SETTINGS_COMBINATION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SET_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_SLOW_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTHORIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_PASSWORD_REQUEST_SENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITASSISTANT_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_REQUESTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_SUCCEEDED_OPERATOR_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_OPERATOR_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_VALIDATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_FAILED_OPERATOR_CONFIRMATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_BIOMETRIC_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ACCESSPOINT_IDENTITY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_IDENTITY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_SINGLE_PERSON_CHECK_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_NO_PRESENCE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_AREA_NO_PRESENCE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_AREA_TOO_MANY_PEOPLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_NAME_AREA_TOO_MANY_PEOPLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_REX","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_UNLOCK_POSTPONED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_UNLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_EXTENSION_GUARD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_EXTENSION_GUARD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_MAXIMUM_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_MAXIMUM_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_RELEASE_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_RELEASE_DELAY","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_UNLOCKED_HOST_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_UNLOCKED_HOST_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_RESET","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_AUTOMATIC","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_RESET_AUTOMATIC","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_HARDWARE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_RESET_HARDWARE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EMERGENCY_DOOR_RESET_OPERATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEMS_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ITEM_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_NAME_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SYNCHRONIZE_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SYNCHRONIZE_ENTITIES_OPTIONAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_REMOVED_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_SELECT_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_NAME_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_LATITUDE_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_LONGITUDE_ATTRIBUTE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_NO_MAPPINGS_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_AUTOCAD_ASSOCIATE_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_UNMODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBECREATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBECHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_AUTOCAD_ENTITY_STATUS_TOBEREMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_AUTOCAD_ITEM_TOBEREMOVED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MAP_AUTOCAD_ITEMS_TOBEREMOVED_X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATEDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROFILE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CARDSCANNER_REQUIRES_VC2008SP1RUNTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEASUREMENT_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUFFIX_WEEKS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOURCE_SYSTEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOFENCE_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MUST_BE_ADMIN_TOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SAML2_INTEGRATION_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_OPENID_INTEGRATION_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_REQUIRES_VC2008SP1RUNTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_DISPLAY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ISSUER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_DOMAIN_NAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_CLIENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_RESOURCE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_AUDIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_SCOPES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REDIRECT_URI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_USERNAME_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_GROUP_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_URL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_ACS_URL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_USER_ASSERTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_GROUP_ASSERTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_IDP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_MISSING_HTTPPOST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_NOTSUPPORTED_WANTAUTHNSIGNED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_ACS_MISSINGCHARACTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_URI_VALIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_IMPORTED_GROUP_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_IMPORTED_GROUP_INTERNAL_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ENROLLMENT_SUMMARY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ENABLE_DATA_TYPE_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CORRELATION_ENABLE_DATA_TYPE_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_REGISTRATION_HEARTBEAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_NUMBER_OF_QUERIES_PER_RULES_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_EXTENDED_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ENABLE_V1_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_CUSTOM_EVENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_EVENT_DESCRIPTION_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_V1_EVENT_DESCRIPTION_FORMAT_ALT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_ADDRESS_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_IMAGE_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_WEBSITE_LINK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_SOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_HTML_EMAIL_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_HIT_DEFAULT_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DATA_SOURCE_PLURAL_ENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_SELECTED_N_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_LIKE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHES_PATTERN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_CORRELATION_RULE_VARIABLE_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CORRELATION_CHANGING_TRIGGER_DATUM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_SEARCH_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ASSIGN_VARIABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_SEEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_CHILD_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_BLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ADD_FILTER_ON_TRIGGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALUE_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMOVE_VARIABLE_ASSIGNMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRIGGER_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOGICAL_CONDITION_OF_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_CORRELATION_RULE_DIAGNOSTICS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_DIAGNOSTICS_CUSTOM_ACTION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CLONED_CORRELATION_RULE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLONE_CORRELATION_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_FILE_FILTER_ALL_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_FILE_FILTER_ZIP_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CORRELATION_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_CORRELATION_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_CORRELATION_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_CORRELATION_RULE_DEFAULT_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTED_CORRELATION_RULE_DEFAULT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PATH_MUST_EXIST_ON_CORRELATION_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_CORRELATION_FILE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_RULE_ACTION_AUTOMATICALLY_ATTACH_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_ENTITIES_TO_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATIC_DISPATCH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AUTOMATIC_DISPATCH","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CUSTOM_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CORRELATION_HIT_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_CUSTOM_EVENT_DESCRIPTION_FMT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK_CAMERAS_DESCRIPTION_FMT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_BOOKMARK_CAMERAS_DESCRIPTION_FMT_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_EXPORT_FILE_TO","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SEND_MESSAGE_DESCRIPTION_FMT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TRIGGER_ALARM_AUTOMATIC_DISPATCH_DESCRIPTION_FMT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PLAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FREQUENCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WITHIN_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WITHIN_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TYPE_FMT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TEST_TAG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_TEST_SOURCE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CORRELATION_SERVICES_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_CORRELATION_RULE_FOUND_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_CORRELATION_RULE_NO_HIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_ATTACH_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATICALLY_SEND_TO_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIME_OF_SIMULATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CLICK_PIN_TO_SELECT_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_RULE_SIMULATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DOUBLE_CLICK_TO_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCES_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILES_OLDER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CLOSE_PARKING_SESSIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_IMAGE_COMPRESSED_IF_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_OF_THE_FOLLOWING_OCCURS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_GREATER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_LESS_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_GREATER_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_LESS_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_NOT_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SYMBOL_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ERROR_DUPLICATEFRIENDLYNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_ISSUER_NOTFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_METADATA_AVAILABLE_ISSUERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_ACCESS_TOKEN_CONFIG_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_OF_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_CONFIG_EXTERNAL_UNIQUE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_SEAMILES_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_SEAMILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_FAILED_CHECK_DIAG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_PROBLEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COORDINATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERATE_QR_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAMERA_ID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ZONES_CONTROLLED_WITH_MULTIPLE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DELETE_MAP_ITEMS_TO_CHANGE_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TASK_SENT_TO_YOU","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECTED_TEMPLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVAILABLE_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_MOBILEFORWARDCAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_MOBILEFORWARDCAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_ACCESSCONTROL_DOORFORCEDOPENWITHMOTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_ACCESSCONTROL_DOORFORCEDOPENWITHMOTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_ACCESSCONTROL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_AUTOMATICDISPATCH","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_AUTOMATICDISPATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_START_OF_DAY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_N_REGIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PATTERN_MATCHING_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_CHARACTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_DIGIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_NON_DIGIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_WORD_CHARACTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ANY_NON_WORD_CHARACTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_OR_MORE_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_OR_ONE_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_OR_MORE_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCR_EQUIVALENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCR_EQUIVALENTS_N_TIMES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU_ONTHEFLYHOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU_ONTHEFLYHOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_AUTOVU_SPECIFICHOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_AUTOVU_SPECIFICHOTLIST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_MOBILE_MOBILETHREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATION_TEMPLATE_DESCRIPTION_MOBILE_MOBILETHREATLEVEL","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_ACCOUNTLOCKEDDURINGRECOVERYTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_UNIT_DIAGNOSTIC_PASSWORDCHANGE_ACCOUNTLOCKEDDURINGRECOVERYDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_IMAGE_SYNC_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_WARNING_DELTA_SYNC_SLOW","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_DELTA_SYNC_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SET_MINIMUM_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SET_MINIMUM_SECURITY_CLEARANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TARGET_ENTITIES_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_IMAGE_FAILED_TO_UPLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_CAMERA_AUDIO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_SOUCRES_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_FILTER_KMLFILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_EVENTS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_DATASOURCES_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTERED_BY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_MAP_LOCATIONS_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLING_THREAT_LEVEL_REQ_AREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVE_NORULER_DIFFERENTTIMEZONES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_MINIMUM_SECURITY_CLEARANCE_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_MINIMUM_SECURITY_CLEARANCE_CHANGED_TO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_COPYCONFIG_OPTION_WARNINGS_TOOLTIP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_REPORT_CONTAINS_FIRST_X_RESULTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OHMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ACCESSRULE_GRANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ACCESSRULE_DENY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VERB_ACCESSRULE_ADDDOORSELEVATORSAREAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSPOINT_SIDE_X","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNIT_RENEW_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_ACCESSRULE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILE_SPYMODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILE_SPYMODE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIDEO_UNIT_UPDATE_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIDEO_UNIT_UPDATE_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MOBILE_MANAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MOBILE_MANAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MENU_PEOPLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_PROVIDER_CREDENTIAL_LICENSE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSV_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_IGNORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOUND_COLUMNS_AND_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_SKIPPED_DUPLICATE_EXTERNALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_USED_MORE_THAN_ONCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_SHOWADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_HIDEADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ROWS_WITH_EMPTY_NAME_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURENAME_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREDESCRIPTION_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREINFO_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRACEROUTESETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_EXECUTIONTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_MAXCONCURRENCY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_MAXCONCURRENCY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_MAXHOPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_MAXHOPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_EXECUTIONTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANTMODULENAME_DIAGNOSTIC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUPS_ALREADY_UPTODATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DUPLICATE_USERGROUPS_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ARCHIVE_TRANSFER_HISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_USERINFO_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ACCESSTOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CLIENT_SECRET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CONFIDENTIAL_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_OBTAIN_CLAIMS_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_DECODE_ACCESS_TOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_EXTRACT_GROUPS_FROM_TOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_TOKEN_HAS_NO_CLAIM_OF_TYPE_X","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_FAILED_TO_EXTRACT_USERNAME_FROM_TOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_CONTAINED_EXTRA_CLAIMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_DISPLAYNAME_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_X_FROM_REMOTE_WITH_DETAILS_Y","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_REMOTE_SERVER_CONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_CLIENTID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_VALIDATE_REMOTE_SERVER_ERROR_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_NOT_YET_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_NOT_TRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_WRONG_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_TOKEN_MISSING_PROOF_OF_POSSESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_UNSUPPORTED_RESPONSE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_UNAUTHORIZED_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_SCOPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_ERROR_INVALID_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_CONFIGURED_CLAIMS_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RADIO_CANTCHANGEACCESSRULETYPEAFTERCREATION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTHENTICATION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTHENTICATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_TSV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SSV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_GEOJSON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_JSON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_BSON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_KML","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_KMZ","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SHP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_SHX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_DBF","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_XLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_XLSX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_DATABASE_PREFIX","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_POPULATE_FROM_SAMPLE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_POPULATE_FROM_SAMPLE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_POPULATE_FROM_SAMPLE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DEFAULT_FIELD_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHAPE_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_IMAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAYED_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTROL_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_DESCRIPTOR","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DEFAULT_FIELD_NAME_NO_INDEX","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_ICON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTOR_ICON_FILE_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IMPORT_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REFRESH_COUNTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORTING_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_CONFIGURATION_BEGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_EVENT_DRIVEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOFENCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_GEOFENCE_SHOULD_BE_SET_FOR_EVENT_DRIVEN_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESCRIPTOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INDEXED_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELDS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZERO_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_INT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BOOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_DOUBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_DATETIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_BASE64","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_UTF8","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_BINARY_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_TYPE_NON_BINARY_EXTENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_DATABASE_METRICS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_DATABASE_COUNT_A","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INGESTION_DATABASE_COUNT_B","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_DATASOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESIGN_NEW_DATASOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PARSING_COMPLETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DISABLING_TRIGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_DISABLE_CONTRAINTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_RENABLE_CONTRAINTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_KEY_DETECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_PARSE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SELECT_IMPORT_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTION_ENGINE_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTINO_ENGINE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_DATA_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ADD_NEW_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_OR_DROP_FILE_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_QUERYING_INGESTION_ROLES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PLEASE_WAIT_SENDING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATION","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MUST_SELECT_DATA_TO_INGEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNABLE_TO_LOAD_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ERROR_INGESTING_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ERROR_SENDING_MESSAGE_TO_INGESTION_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_COULD_NOT_FIND_OWNING_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTION_REGISTRATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_WORKLOAD_PER_RULES_ENGINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_MAPPING_INDICIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COLUMN_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_EXPORTER_ENDPOINTS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_METADATA_DOWNLOAD_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_STATUS_METADATA_ENDPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REDIRECT_URIS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_SETTINGS_PUBLIC_ENDPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILE_CREDENTIAL_MANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_MOBILE_CREDENTIAL_MANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOREGROUND","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_LESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNKNOWN_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COMMIT_DATASOURCE_FIRST","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DISABLE_ADMIN_ACCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DISABLE_ADMIN_ACCOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_UARCOMPATIBILITYFAILURETITLE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_DIAGNOSTIC_UARCOMPATIBILITYFAILUREDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TRUST_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTOMATION_RULES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_RULE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_USER_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHERE_LC","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_INGESTION_ENGINE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITION_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITIONS_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTION_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIONS_LC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ON_EVENT_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_MANAGER_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_AUTOMATION_MANAGER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLEDDRIVERSVERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TYPE_GPX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TEMPLATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TAGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MODIFY_ENTITIES_NO_PRIVILEGE_WITH_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MODIFY_ENTITIES_NO_PRIVILEGE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_PASSWORDHISTORY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_DATEOFATTEMPT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_PREVIOUSPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COLUMN_NEWPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDHISTORYDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDCHANGECOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FOV_MAX_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID_REQUEST_OFFLINE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_USE_ARTIFACT_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_USE_ARTIFACT_RESOLUTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_GROUP_ASSERTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_USERNAME_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_METADATA_URL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_ISSUER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPENID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WSFED_AND_WSTRUST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SSO_PROTOCOL_CHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_FOV_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOV_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FOV_ANGLE_OF_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMPORT_CAMERAS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WSFED_OR_WSTRUST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNITPASSWORDHISTORYCONSULTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_UNITPASSWORDHISTORYCONSULTEDDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDING_PERCENTAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TASK_SHORTDESC_COINCIDENCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATURENOTE_TRACEROUTE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVE_TRANSFER_SEQUENCE_IMPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EDIT_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNITPASSWORDRECOVERED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_UNITPASSWORDRECOVEREDDESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_VERB_PASSWORDRECOVERY_RECOVER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDRECOVERY_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDRECOVERY_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDRECOVERY_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PASSWORDRECOVERY_ONGOING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSTIC_UNITCONTROLDRIVERPACKNOTINSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSTIC_UNITCONTROLDRIVERPACKNOTINSTALLED_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_ACCOUNTBLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_ACTIVEDIRECTORY_DELTA_SYNC_USN_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_DISABLE_DRIVE_OUTPUT_RELAYS_SYNERGIS_APPLIANCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_SECURE_READER_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_USE_STRONG_PASSWORDS_ACCESS_CONTROL_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_UPDATE_ACCESS_CONTROL_EQUIPMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INPUT_TYPE_DIGITAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_ACCESS_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_NO_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_REMOTE_CONNECTION_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_COULD_NOT_VERIFY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TITLE_DATABASE_INVALID_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DATABASE_VERIFYING_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_TOO_LARGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX_FILESIZE_IS_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOCODING_SERVICE_URL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOOLTIP_UNITALREADYONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IMPORT_MAP_OBJECTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OBJECT_SPECIFIC_PROPERTY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAP_OBJECT_PROPERTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASE_USED_BY_ANOTHER_ROLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_AUTO_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BACKGROUND_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VALID_DRIVER_PACK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_INVALID_DRIVER_PACK","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS_POLICIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_EXPIREDCERTIFICATERENEWAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITASSISTANTMODULENAME_SECURITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_ENABLEHTTPSAFTERINSTALLATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_NOTIFICATIONSENT_XDAYSBEFOREEXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESETTINGS_NOTIFICATIONSENT_XDAYSBEFOREEXPIRED_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DRIVERPACK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_OBSERVER_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_OBSERVED_RESOURCE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSO_STATUS_VIEW_LOGOUT_URIS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_SCOPES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_AUDIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_RESOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_GROUP_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_DISPLAY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SSO_CLIENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_ISSUER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_USERNAME_CLAIM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_ADDUNITDIALOG_DRIVERPACK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITENROLLMENT_DRIVERPACK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SPECIFICCOMMANDS_DRIVERPACK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRMWAREUPGRADE_DRIVERPACK_NOT_INSTALLED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOMATION_BASIC","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOMATION_ADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INGESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_INGESTION_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_SSL_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERTIFICATE_NOT_VERIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CORRELATION_REPORT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LATESTVERSIONRECOMMENDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILECREDENTIALSTATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ISMOBILECREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HEALTHEVENT_INVALID_DRIVER_PACK_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HEALTHEVENT_VALID_DRIVER_PACK_DESCRIPTION_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNITMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_CERTIFICATE_MANAGEMENT_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_YEARLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MONTH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ONLY_COMMA_SEPARATED_VALUES_ACCEPTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_USER_GROUPS_MATCH_WITH_PROVIDER_HINT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADDED_AND_UPDATED_ENTITIES_ON_MAP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_PREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_LPRMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_LPRMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CAR_PLATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_HIGH_RES_REPORT_IMAGES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATESETTINGS_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_VALIDITYPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_SUBJECTALTERNATIVENAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_COUNTRY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_STATEPROVINCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_LOCALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_ORGANIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_ORGANIZATIONALUNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CSR_COMMONNAME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CSR_SUBJECTALTERNATIVENAMES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMAL_CARDHOLDER_SYNCHRONIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_BEFORE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_RECOMMENDED_DAILY_RECURRENCE_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_SETTINGS_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_ROLE_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNITASSISTANT_UNEXPECTED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_INHERIT_FROM_UNITASSISTANT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_USE_CURRENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_FOR_ENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_ON_DEVICE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_ON_DEVICES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_FOR_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_EXPIRED_CERTIFICATES_NOT_PERMIT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHECKBOX_FORCE_UPDATE_EXPIRED_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MULTI_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UPDATE_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_MISSING_PRIVILEGES_UPDATE_EXPIRED_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_UNABLE_RETRIEVE_UNITASSISTANT_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_VIEW_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_CERTIFICATE_UPDATE_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_COMMON_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_KEY_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_REVOKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_EXPLICITLY_DISTRUSTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_CHAIN_OF_TRUST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_SIGNATURE_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_INVALID_CERTIFICATE_TRUST_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_REVOCATION_CHECK_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_CONSTRAINT_VIOLATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATESTATUS_CERTIFICATE_EXTENSION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_GENERATE_SIGNING_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_GET_SIGNED_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_APPLY_CERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_CURRENT_CERTIFICATE_REVOKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_CURRENT_CERTIFICATE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_UPDATERESULT_FAILED_UNEXPECTEDLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNITMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CERTIFICATE_MANAGEMENT_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CHANGING_SETTING_REQUIRE_ACCESSMANAGER_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HIGH_RES_IMAGE_USE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALIDVERSIONCONFIGURATIONNOTSUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PROTOCOL_VERIFYING_AVAILABILITY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PROTOCOL_INSTANCE_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PROTOCOL_INSTANCE_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_GOOD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_NEARING_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_FULL_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HID_MOBILELICENSESTATUS_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REMAININGLICENSECOUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NOMOBILECREDENTIALMANAGERROLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_APPLICATION_CONNECTION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_APPLICATION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CONNECTION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNITCONNECTION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASEAUTOMATICBACKUP_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_HIGHCPUUSAGE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_HIGHMEMORYUSAGE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDATABASESPACE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_OFFLOAD_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_PATROLLER_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_POS_DATABASE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ROLE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_RTPPACKET_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SERVICE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SYNCHRONIZATION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_VIDEOSIGNAL_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNAUTHORIZED_DISK_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ACTIVE_ALARMS_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DIRECTORY_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWARCHIVEDISKSPACE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LIVE_HEALTH_MONITORING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASEFAILOVER_MAINDB_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DATABASE_RESTORE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TRICKLING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_BACKUP_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_AGENT_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVE_CONSOLIDATION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_RECORDING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_UNIT_TIME_OUT_OF_SYNC_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_CONNECTION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CAMERA_TRANSMISSION_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_EDGESTORAGE_RECORDING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_ARCHIVER_TRICKLING_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_CERTIFICATE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_DRIVER_PACK_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_IMPORT_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_DUPLICATE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DIAGNOSTIC_INTRUSIONLICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_LPRMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HELP_LPRMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_LPR_LIVE_HIT_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_LPR_LIVE_HIT_MONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REVERSETUNNEL_CLIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_REVERSETUNNEL_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOTAPPLICABLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CUSTOM","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_KEYTRANSFER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_FILE_XML","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_UNITS_XML","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_EXPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORTHEADER_COMPONENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_INDEXED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_KCV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA256","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA384","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HASH_METHOD_SHA512","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETRIEVE_APPLICATION_READ_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_KEYS_CONFIGURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_NEW_KEY_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_KEY_COMPONENT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UNIT_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONINPUTTYPE_VIRTUAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CANNOT_SELECT_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_EXPORT_CONGURATIONS_AND_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_MODIFY_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREEXPORTCONGURATIONSANDKEYS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREMODIFYKEYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTRUSIONAREA_VIRTUALALARM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_INPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIRTUALALARM_REMINDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_VIRTUALALARM_INPUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_VIRTUALALARM_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHILD_LAYER_IN_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LAYER_TYPE_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_FIND_LAYER_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNAVAILABLE_ESRI_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALARMSOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CONFIDENTIAL_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLIENT_SECRET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLAIMS_FROM_ACCESSTOKEN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_CLAIMS_FROM_USERINFO_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OPENID_REQUEST_OFFLINE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVACUATION_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_EVACUATION_ENDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_LITE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCGIS_LICENSE_ADVANCED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_TOKEN_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NAME_MATCH_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STARTS_WITH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDS_WITH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXACT_MATCH","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOCERTIFICATEFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOCERTIFICATEFOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MUSTERING_ENDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_MUSTERING_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_TITLE_CERTIFICATEUPDATEFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_CERTIFICATEUPDATEFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALIGNMENT_ON_MULTILINE_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ALIGNMENT_ON_MULTILINE_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_CERTIFICATE_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEWROLERESOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEWROLERESOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITYTRAIL_UNIT_CERTIFICATE_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_INTRUSIONINPUTTYPE_VIRTUAL_EDITDISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_REQUEST_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PARAMETER_X_MUST_USE_ROLE_PROPERTIES_UI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_PARAMETERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CUSTOM_PROTOCOL_REQUEST_PARAMETERS_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML2_AUDIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML2_AUDIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_FILE_CONTENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NEWCREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CLOUD_STORAGE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ACCESSCONTROLUNIT_WARNING_ACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ACCESSCONTROLUNIT_WARNING_DEACTIVATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_COLOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_RETRIEVE_CLOUD_ARCHIVES_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DXDIAG_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INSTALLED_PROGRAMS_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RUNNING_PROCESSES_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLR_ASSEMBLIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NIC_LIST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NETWORK_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_PROCESS_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIG_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTRY_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERFORMANCE_COUNTERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CRASH_DUMP_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CERTIFICATE_ALLOWREVOKEDCERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATE_ALLOWREVOKEDCERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_ALLOWREVOKEDCERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIRMWAREUPGRADE_MISSINGPASSWORDPRIVILEGE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_ABORTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_READERSHUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_DOORNOTSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_UNLOCKFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_REASON_DESCRIPTION_EMERGENCY_DOOR_TEST_FAILED_RELOCKFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_SIPIDENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_USERNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_PASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_ABORTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_READERSHUNTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_DOORNOTSECURED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_UNLOCKFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_DOOR_EMERGENCY_DOOR_TEST_FAILED_RELOCKFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_FIRMWARE_UPGRADE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INTERFACE_MODULE_FIRMWARE_UPGRADE_TRANSFERRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRANSFERRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_SYSTEM_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_CACHE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_UNIT_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATION_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_AGENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAM_LOCK_UNLOCK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_GET_READ_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TOO_MANY_ENTITIES_REQUIRES_AUTO_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UAR_DIAGNOSTIC_PASSWORDCHANGEFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_DIAGNOSTIC_DETAILS_PASSWORDCHANGEFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_QUICK_MOBILE_CREDENTIAL_REFRESH_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NORMAL_MOBILE_CREDENTIAL_REFRESH_INTERVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_AUTO_REVOKE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_AS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RENDERED_AS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOM_EXPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_EXPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RAISE_EVENT_DATA_INGESTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RAISE_EVENT_DATA_INGESTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ASSOCIATE_EVENTS_TO_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ASSOCIATE_EVENTS_TO_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_IN_MAP_AS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_PIN_PREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATA_PRESENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_ITEMS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_X_ITEMS_IMPORTED_CREATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_SIPELIA","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_BASE","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_CPACK","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_FULLDUPLEX_DEVICE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_HALFDUPLEX_DEVICE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_SIPELIA_TRUNK_DEVICE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_POTENTIALPASSWORDLOSS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_POTENTIALPASSWORDLOSS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COULD_NOT_SAVE_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_GREATER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_GREATER_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_LESS_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_LESS_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATOR_NOT_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IN_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_IN_SET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MATCHES_PATTERN_UC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOOK_FOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_EXCLUDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_INCLUDED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_DEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXCLUDE_REGIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXCLUDEREGIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_REGION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONDITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CONDITION_SELECTFIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COINCIDENCE_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIMILAR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVITATION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESEND","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_INVITATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBSCRIPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOBILE_CREDENTIAL_CREATION_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PROVIDER_DELETE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PROVIDER_DELETE_INFORMATIVE_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MOBILE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVOKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REVOKING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HID_MOBILE_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CREDENTIAL_NORMAL_REFRESH_QUEUE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_CREDENTIAL_FAST_REFRESH_QUEUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SETTINGS_CHANGED_MOBILE_CREDENTIAL_ROLE_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CUSTOM_ACTION_NO_UI_COMPONENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_MAKE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_HELP_ACCESSRULES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HELP_ACCESSRULES","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_RELATIVE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_NAME_USER_GUIDE","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_FILE_NAME_ADMIN_GUIDE","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_ARGUMENT_XLANGUAGE_YPATH","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_ADMIN_GUIDE_LANGUAGE_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_URL_HOME_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_MOTION_ANOMALY_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_AUTOVU_EXPORTER_JSON2_ENDPOINTS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_CONFIG_IMPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_INDEX_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_MIFARE_DESFIRE_KEY_STORE_VERSION_MODIFIED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_INVALID_FIRMWARE_PACKAGE_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_NOT_SUPPORTED_BY_FIRMWARE_UPGRADE_PACKAGE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FAILED_INSTALL_CA_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FAILED_INSTALL_CA_CERTIFICATES","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_CONCURRENT_OPERATOR_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_MC_ACTIVE_INCIDENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_READER_SIDE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REFRESH_MOBILE_CREDENTIAL_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PENDING_PROVIDER_UPDATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GLOG_FILES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_CREDENTIAL_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_CREATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_CREDENTIAL_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_DELETION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_INVITATION_CANCELED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_INVITATION_CANCELLATION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MOBILE_INVITATION_RESENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_INVITATION_RESENT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVE_REVOKED_CREDENTIALS_HIDDEN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IGNORE_ACCESS_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_FILES_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_SIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_BACKLOG_OLDEST_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVER_STATISTICS_CLOUD_UPLOAD_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_MANAGER_QUERY_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MOBILE_CREDENTIAL_FAILED_LOADING","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_BACKUPFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_BACKUPFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_GENERATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_CANNOTCHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_CANNOTCHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_VALIDATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSEPOLICIES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSEFIRMARE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_FAILED_CAUSECONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_TESTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_TESTFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_ACCOUNTBLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_ACCOUNTBLOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_NOTSECURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PASSWORDCHANGERESULT_NOTSECURE","Genetec_Sentinel_Resources_RE_L_S_STE_ENUM_PASSWORDCHANGERESULT_UNSUPPORTEDMANUFACTURER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_COLUMN_PASSWORDCHANGERESULT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNSUPPORTEDENCODING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTH_SERVICE_MAX_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_ROTATIONANDDIRECTIONOFFSETS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_ROTATIONANDDIRECTIONOFFSETS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_EXTENDED_FIELDS_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_LIST_DATASOURCES_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DEFAULT_TEXT_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CORRELATION_DATUMS_BY_ID","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORRELATED_ALARM","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_GO_TO_ALARM_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATA_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_CORRELATION_QUERY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_ACTIVITY_TYPE_INGESTION_DATA_MODIFICATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_CONFIGURATION_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_CONFIGURATION_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_EXPORT_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_ENCODED_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_TESTED_ENCODING_CARD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ANNOTATION_FIELDSFILTERS_MUST_USE_PROMOTED_SEARCHFILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ANNOTATION_FIELDSFILTERS_MULTICRITERIA_SEARCH_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITSPASSWORDCHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNITSPASSWORDCHANGEREPORT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_MIFARE_DESFIRE_IMPORT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UPDATE_CERTIFICATE_REFRESH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTERSUBJECTALTERNATIVENAMEHERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_CALL_STRATEGY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_MAX_LOOP_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_CALL_RINGING_TIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ESRI_CLIENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROLE_SERVICES_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ROLE_ALL_SERVICES_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_PROVIDER_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_PROVIDER_DATA_INFORMATIVE_TEXT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SYNCHRONIZE_PROVIDER_DATA_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SYNCHRONIZE_PROVIDER_DATA_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SYNCHRONIZE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SYNCHRONIZE_PROVIDER_DATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_ALREADYPENDING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_UNITOFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PASSWORDCHANGE_CANNOTCHANGEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_DESFIRE_RANDOM_UID","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_RETRIEVE_UID_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_WARNING_DESFIRE_RANDOM_UID_DIVERSIFIED_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTERCOM","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_INGESTION_DATASOURCE_UPDATED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_CREATION_READY","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_CREATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_KEY_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_KEY_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_NEW_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_SCTOKEN_RESTART","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_VIEW_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_VIEW_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MODIFY_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ADD_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ADD_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_TRUNK","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCE_READ_WRITE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_CORRELATION_DATA_SOURCE_READ_ONLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HEALTHEVENT_SCTOKEN_INVALID_LICENSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_HEALTHEVENT_SCTOKEN_MISSING_SIGNING_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FIRWAREUPGRADE_FAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_ACTION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_ACTION_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_EVENT_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_EVENT_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_FILE_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_FILE_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INGESTION_INGEST_REST_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INGESTION_INGEST_REST_ACTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_EVENT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_INGEST_REST","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_EVENT_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_FILE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INGEST_REST_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_SCTOKEN_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SET_READER_CARDANDPIN","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_SET_READER_CARDORPIN","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVITYTRAIL_SET_READER_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALPRUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALPRUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONUNIT_VIEWEXPORTPASSWORDS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_UPDATEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_UPDATEPASSWORD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_UPDATECERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_UPDATECERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACEROUTESETTING_RETENTIONPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TRACEROUTESETTINGINFO_RETENTIONPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPIRING_ON_SPECIFIC_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVATE_ON_SPECIFIC_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_RINGING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_DECLINED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_ANSWERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_REJECTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_ENDED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CALL_CREATED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CONTACT_REGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_CONTACT_UNREGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_TRUNK_REGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_COMMUNICATIONS_TRUNK_UNREGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUBTRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LIST_OF_CSV_VALUES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGULAR_EXPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTEGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_RULE_EXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UAR_UNITCOMMANDQUEUEFULL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WARNING_UAR_UNITCOMMANDQUEUEFULL","Genetec_Sentinel_Resources_RE_L_S_STE_ERROR_INITIALIZING_CARD_SCANNER_DLL_MESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TOO_MANY_MAP_LAYERS","Genetec_Sentinel_Resources_RE_L_S_STE_ENTITY_TYPE_NAME_CUSTOMENTITY_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_TYPE_NAME_CUSTOMACTION_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_TO_UNIT_KEY_STORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONTACT_RINGGROUP_SEQUENTIAL_MEMBER_ORDER","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_ONLINE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_OFFLINE","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_ENTITY_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALLOW_MJPEG","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_TROUBLESHOOT_UNIT_IN_ANOTHER_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTICATEABOUTTOEXPIRE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTICATEABOUTTOEXPIRE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FIRMWARE_UPGRADE_11X","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARCOMMANDQUEUEFULL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARCOMMANDQUEUEFULL_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARQUEUEDCOMMANDTIMEOUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UARQUEUEDCOMMANDTIMEOUT_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_SHUNT_READER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WHEN_VISITOR_ESCORT_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_ENABLE_ESCORT_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_AUTO_ENABLE_ESCORT_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTO_ENABLE_ESCORT_REQUIRED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MOBILE_CREDENTIAL_MANAGER_PLURAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_FUNCTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ONE_RECORD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_X_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ITEM","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LAST_IMPORT_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ROTATE_CAMERA_PASSWORDS_PERIODICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MOBILE_FEATURE_INTRUSIONDETECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAY_OF_WEEK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINUTE_FIELD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COUNT_DISTINCT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISTINCT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAX","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_DEVIATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_STANDARD_DEVIATION_SHORT_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIANCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VARIANCE_SHORT_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MEDIAN_SHORT_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPERATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INGESTED_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_AUTOMATION_RULE_SCALE_BREACH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_AUTOMATION_RULE_INVALID_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTOMATION_RULE_TIMING_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUTOMATION_RULE_EXPIRED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FINISHED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_INGESTION_FILE_DELETED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MOBILE_FEATURES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_THIS_IN_CORRELATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_IN_CORRELATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_IN_CORRELATION_REPORT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_VIEW","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_AGGREGATION_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY_OVER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_AVAILABLE_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_POST_PAYLOAD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXECUTION_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALLOTED_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ALLOTED_TIME_ZERO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_GET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HTTP_POST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REQUEST_METHOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTH_HEADER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PATH_MUST_BE_ACCESSABLE","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ADAPTATIVEMOTIONNORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ADAPTATIVEMOTIONABNORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_CERTIFICATEVALIDATIONFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATEVALIDATIONFAILED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_HEADING_CERTIFICATEENABLEHTTPSFAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATEENABLEHTTPSFAILED_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SKIP_PTZ_EVALUATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SKIP_PTZ_EVALUATION","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDITPARTITIONMEMBERSHIPS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_EDITPARTITIONMEMBERSHIPS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_IMPORT_MAP_OBJECTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_OBJECT_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSIONMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSIONMANAGEMENT_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSION_GENERALSETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSION_GENERALSETTINGS_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_INTRUSION_ALARMCONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_INTRUSION_ALARMCONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DEFAULT_STREAM_USAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DIFFERENTCERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITPASSWORDCHANGEFAILURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INTRUSIONINPUT_ASSIGNCAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ADD_PRIVACY_PROTECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MISMATCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MANAGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNMANAGED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DATABASEDISK_USAGE_REACHED_CONFIGURED_MAX","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_ACTIVITYTRAIL_REMOVED_UNIT_FROM_CERTIFICATE_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_REMOVED_UNIT_FROM_CERTIFICATE_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_MANAGE_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_MANAGE_PARTITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_HOSTNAMECERTIFICATEWARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_H264_VIDEO_QUALITY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIFI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CELLULAR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_FOLDER_PATH_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZONE_STATE_UNKNOWN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_CERTIFICATESETTINGS_HTTPSPORTMAYCHANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VIDEOTYPE_AV1","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEATURENAME_ADVANCEDCERTIFICATEMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREDESCRIPTION_ADVANCEDCERTIFICATEMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATUREINFO_ADVANCEDCERTIFICATEMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEATURENOTE_ADVANCEDCERTIFICATEMONITORING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPERATION_MIGHT_HAVE_TIMED_OUT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_TLS_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PENDING_MOBILE_INVITATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_NAME_COMPARISON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLY_ROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_REENABLING_TRIGGERS","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEBSDK_FAILEDTOSTART_ERRORTITLE","Genetec_Sentinel_Resources_RE_L_S_STE_ROLE_WEBSDK_FAILEDTOSTART_ERRORMESSAGE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SETCUSTOMENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESETTODEFAULTENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CHANGEPKIENDPOINTRISK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CHANGEPKIENDPOINTRISK","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PKISETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_ACTION_MIGHT_AFFECT_UNITASSISTANT_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ACTION_MIGHT_AFFECT_UNITASSISTANT_OPERATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HARDENINGGUIDE_USECERTIFICATECAMERA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HARDENINGGUIDE_RENEWCAMERACERTIFICATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_BWC_INHERITFROMARCHIVERISDEPRECATED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_MAP_AUTOCAD_ROTATION_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SOFTWIRE_VERSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_COMMUNICATIONS_RINGGROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNALSYSTEM_COMMUNICATIONS_INTERCOMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WEB_API_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVICE_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_RETRIEVE_PKI_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CERTIFICATE_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_UNABLE_NAVIGATE_URL_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DELETED_FILES_ONLY_REMOVED_ON_SUCCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WARNING_GCS_CUSTOMFIELD_DUPLICATE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_RIGHT_CLICK_DRILL_DOWN_OPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_DISPLAY_ON_MAPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_ACTIVE_RECORDS_FOR_PAST","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_NUMBER_OF_RECORDS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AUTH_SERVICE_REMOVE_USER_GROUPS_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AUTH_SERVICE_REMOVE_USER_GROUPS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_APPLY_CHANGES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AUDITTRAIL_CUSTOMENTITYTYPE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEARCH_THIS_AREA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ALL_SOURCES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CARDHOLDER_SHARED_OVERRIDE_NOT_SYNCED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_PAN_AND_ZOOM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_DISPLAY_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_ZOOM_LOCKED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_CONTENT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_AD_CARDHOLDER_IMPORT_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CARDHOLDER_EXPIRATION_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_CREDENTIAL_EXPIRATION_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CARDHOLDER_EXPIRATION_CONFLICTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREDENTIAL_EXPIRATION_CONFLICTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADMIN_GROUP_NOT_ALLOWED","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_GENERAL_SETTINGS_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGES_GENERAL_SETTINGS_ADVANCED_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SPECIFIC_ACTIVATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_CONNECTION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_MAXARCHIVETRANSFERTHROUGHPUT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_MOBILE_SERVER_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BOSCH_COMMANDPROTOCOL_CHANGED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAP_MINIMAP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_ENABLE_MINIMAP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_DISABLE_MINIMAP","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_TOO_SMALL","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_FULLY_VISIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIVITY_LPR_UNIT_FIRMWARE_UPGRADE_SCHEDULED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LAST_SPECIFIC_EXPIRATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FILE_SAVED_TO_ARCHIVER_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_FILE_SAVED_TO_ARCHIVER_DISK","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_LIGHTWEIGHTRECORDER_TABNAME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EVENT2ACTION_USE_SOURCE_TIMEZONE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EVENT2ACTION_USE_SOURCE_TIMEZONE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LIGHTWEIGHTRECORDER_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_LIGHTWEIGHTRECORDER_UNAUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_MENU_ITEM_MAP_MINIMAP_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SSH_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_ENCRYPTEDCUSTOMFIELDNOFILTERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WIQ_LOCK_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MAC_ADDRESS_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_TYPE_CONFLICT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_WIQ_GATEWAY_LIMIT","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNLOCK_DOOR_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_UNLOCK_DOOR_MAINTENANCE_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_MAINTENANCE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_DISABLE_MAINTENANCE_RECURSIVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MISSING_ECM_PLUGIN","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_EXTERNALCARDHOLDERVALIDATION","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CARDHOLDERSANDCREDENTIALS_REMOVENEVEREXPIRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_SSL_OR_TLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_STARTTLS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_STARTTLS_IF_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLE_DYNAMIC_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DYNAMIC_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TIMEZONE_BAHIA_STANDARDABBR","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_KEEPCONFIGFROMUNITWEBPAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MAP_ROLE_BACKWARD_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INVALID_PASSWORD_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_PASSWORD_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_BOOST_QUALITY_VIDEO_GAPS","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_SELECT_EXPORT_ENTITY_TYPE_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TITLE_EXPORTTOOL","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_EXPORT_SELECT_SOURCE_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_SELECT_OPTIONS_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARRAYDELIMITER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_FILE_PATH","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTCONFIG_CANT_GET_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EXPORT_PROCESS_COMPLETED_SUCCESSFULLY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WIZARD_SELECT_SETTINGS_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOOL_DESCRIPTION_EXPORTCONFIG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPORT_ALL_ENTITIES_OF_TYPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FEDERATED_ENTITY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FEDERATED_ENTITY_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_PARTIAL_SUCCESS_SERVER_DOWN","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_VIDEOQUALITY_SUPERHIGH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SENDEMAIL_TO_EXTERNAL_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_SENDEMAIL_TO_EXTERNAL_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_UNIT_REPLACEMENT_STATUS_CANNOT_COMPLETE_AT_THIS_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_GROUPING_SORTORDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_MERCURY_OSDP_READER_ON_SAME_PORT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_MUST_BE_ADMIN_SAAS_MOVE_UNIT","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_CONNECTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_EVENTINSERTIONTIME","Genetec_Sentinel_Resources_RE_L_S_STE_LICENSE_WEB_MOBILE_CONNECTIONS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CUSTOM_PLUGINS_UNABLE_LOAD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SEE_STATISTICS_FOR_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_FLOODING_CAMERA_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_FLOODING_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ARCHIVER_DATABASE_FLOODING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FORWARDEVENTSIFNOTSOURCEENTITYOWNER","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FORWARDEVENTSIFNOTSOURCEENTITYOWNER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DYNAMIC_STARTUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_FEATUREDESCRIPTION_WORKSTATION_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_LPRUNIT_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_AREA_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ASSET_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CAMERA_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CUSTOMENTITY_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_DEVICE_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_DOOR_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_INTRUSIONUNIT_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_MAP_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_VIDEOUNIT_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ZONE_LOCATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ACCESS_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_CAMERA_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ZONE_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_ALARM_INSTANCES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_TYPE_INTRUSION_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HRECORD_TYPE_EALTH_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TASKSHORTDESC_WORKSTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRST_CONNECTION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_USER_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOUN_DISPLAY_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_WIZARD_ADD_NEW_WORKSTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ADD_ENTITY_ENTITY_WORKSTATION_INFO_PAGE_TITLE","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_WIZARD_ADD_SELECT_SOURCE_STEP_INSTRUCTION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_ARCHIVER_DATABASE_FLOODING","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_LIVE_STREAM_STARTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PHYSICAL_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GEOGRAPHICAL_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRESETTOUR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SELECT_PHYSICAL_LOCATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_MOVE_LPR_UNIT_SSH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUM_ROLES_REQUIRING_QUERY_EXPANSION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_REPORT_MISSING_EVENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_PARTITION_ACCESS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REMOVE_WORKSTATION_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DEPENDENTENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DEPENDENTENTITIESSHOWMORE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEEPDEPENDENTENTITIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_LOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_NORMAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HEALTHEVENT_LOWDISKSPACE_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_LIVE_STREAM_STOPPED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_ACCESS_RIGHTS_EXCEPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WORKSTATION_PRIVILEGES_EXCEPTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REMOVE_MEMBER_FROM_WORKSTATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_LIST_CHANGES_AUTOMATICALLY_APPLIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHARP_SSH_CONNECTION_STATUS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MULTISORTING_COLUMN_HEADER_CLICK_OVERRIDE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESS_DECISION_AUTHORITY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_LPR_UNIT_FIRMWARE_UPGRADE_CANCELLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERADMIN_SSL_PROTOCOL_OPTION_USE_OS_DEFAULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVERADMIN_SSL_PROTOCOL_OPTION_USE_WHITELIST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVERADMIN_SELECT_AT_LEAST_ONE_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ALPR_UNIT_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ALPR_UNIT_FIRMWARE_UPGRADE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPGRADE_PROGRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MARGINS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MORE_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PAGES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_COPIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTER_PROPERTIES","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRINTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_PAGE_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_TOTAL_SHEETS_COUNT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_ILLEGAL_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_NEGATIVE_END_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_NEGATIVE_START_PAGE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_END_SMALLERTHAN_START","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_PAGE_OUT_OF_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_LPRUNIT_SUPPORTS_REBOOT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXTERNAL_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_EXTERNAL_RECIPIENTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_WEB_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LEGACY_WEB_CLIENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PDF_PRINT_CUSTOM_MARGINS_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_TEST_USB_READER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_FILE_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_READ_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CUSTOM_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BADGE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_APPLICATION_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_FILE_SELECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_ASCII","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_UTF16","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT_LEFT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT_RIGHT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CUSTOM_STRING_MANAGEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_CONTENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_REMAINING_SPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_OFFSET","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_TEXT_ALIGNEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_X_KEYS_USED_OF_Y","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UPDATE_ALL_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_WRITE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_READ_WRITE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_CHANGE_ACCESS_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_DESFIRE_KEY_NUMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_FREE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_NOTHING_TO_IMPORT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_ACCESSMANAGER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_SOFTWIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACCESSDECISIONAUTHORITY_INTELLIGENTCONTROLLER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_CHANGE_CONFIG_WITHOUT_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_CARDHOLDER_INFORMATION_NOT_BE_ENCODED","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_DUPLICATE_READS","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_DUPLICATE_READS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UTF16_CUSTOM_STRING_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_FILL_WITH_NULL","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_SUCCEEDED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_OPTIMIZEDDIRECTORYSTARTUP_NOTMONITORED","Genetec_Sentinel_Resources_RE_L_S_STE_DIAGNOSTIC_SECURE_CONNECTION_NOT_ESTABLISHED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGE_MODIFY_MAINTENANCE_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MODIFY_MAINTENANCE_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_READER_ADDRESS_ALREADY_IN_USE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_PDF_PRINT_NO_PRINT_SERVER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PDF_PRINT_CHECK_PRINT_SERVICES_AND_PRINTERS","Genetec_Sentinel_Resources_RE_L_S_STE_VALUE_HELP_USER_GUIDE_LANGUAGE_CODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXPANDO_EVENT_TIMESPAN_RANGE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOWER_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UPPER_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_MINIMUM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_UPPER_BOUND","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_MAINTENANCE_REASONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_REASON_ADD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAINTENANCE_REASON_MODIFY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_CREDENTIAL_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_DELETE_CUSTOMSTRING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLED_TO_SATISFY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_PROFILE_SECURE_EMAILS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SET_USER_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PERMISSION_DENIED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_REPORTMANAGER_NO_SECURE_USER_PROFILE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HOTLISTLANGUAGE_THAI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ENABLE_DIGITAL_SIGNATURE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_DIRECTORY_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_STARTUP_FASTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OPTIMIZEDDIRECTORYSTARTUP_STARTUP_SLOWER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIMIZEDDIRECTORYSTARTUP_FAILURE_PHASE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIMIZEDDIRECTORYSTARTUP_FAILURE_COMPLETE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_ACUNIT_VIEWPORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_ACUNIT_VIEWPORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LC_NOT_LIKE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_CONDITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_EDIT_CONDITIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONVERSION_PARTIAL_SUCCESS_FOUND_FRAMES_BACK_IN_TIME","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_XOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_CRITERION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_ROTATE_SYNERGIS_PASSWORDS_PERIODICALLY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_BADGE_TEMPLATE_IMAGE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_NOT_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DOES_NOT_CONTAIN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_NOT_IN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_GREATER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_LESS_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_GREATER_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_LESS_THAN_OR_EQUAL_TO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONVERSION_PARTIAL_SUCCESS_H264_FRAME_SLICE_MISSING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATED_ENTITY_TYPES","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENTITYTYPEFILTERS_ADDED","Genetec_Sentinel_Resources_RE_L_S_STE_AUDITTRAILS_FEDERATION_ENTITYTYPEFILTERS_REMOVED","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_LIVE_STREAM_REQUESTED_FEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_PLAYBACK_STREAM_REQUESTED_FEDERATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WORKSTATION_MANAGEMENT_FEATURE_DEACTIVATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_PRIVILEGE_TO_ADD_UNIT_TO_ACCESSMANAGER_PARTITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_CREATION_DATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CREATEAGENTSONROLESERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CREATEAGENTSONROLESERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_FEDERATION_ENTITY_ADVANCED_SETTINGS_INFO","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NUMBER_2_RESERVED_FOR_UID_RETRIEVAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_NUMBER_IN_APPLICATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_READKEY_OR_READ_WRITEKEY_MUST_BE_DEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_HAVE_AT_LEAST_ONE_CUSTOM_STRING","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_MODIFY_DATA_OF_CREDENTIAL_SECTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NEW_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CONFIGURATIONS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_UID_RETRIEVAL_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_UTF16_CUSTOM_STRING_TOO_LONG","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_READ_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_WRITE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_READ_WRITE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_NOUN_DESFIRE_CHANGE_ACCESS_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_LEAST_ONE_CONFIGURATION_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTODISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SESSION_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SESSION_ABOUT_TO_DISCONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENHANCED_SEARCH_PASTE_CANCELED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENHANCED_SEARCH_PASTE_INCORRECT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_GIVE_RIGHTS_TO_MACHINEKEYS_FOLDER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_ALARMRESOLUTIONTIMESPAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REPORT_WINDOWS_FONT_FAMILY__DONT_TRANSLATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USERGROUP_DISCONNECT_DURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DAYS_AND_OLDER","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_OVERWRITE_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_OVERWRITE_CONDITION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PRIVILEGES_BULKACKNOWLEDGEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_LABEL_PRIVILEGES_BULKACKNOWLEDGEALARMS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECLAIM_OWNERSHIP_CB","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INPUT_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OUTPUT_UNIQUE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_LOGON_PREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_BROWSER_CONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_EXPORT_LOGS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TEST_AUTHENTICATION","Genetec_Sentinel_Resources_RE_L_S_STE_CHECKBOX_INCLUDE_WARNING","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ITEM_OVEWRITTEN","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_RESET_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ENDPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_ENDPOINT_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RESET_ENDPOINTS_PROCEDURE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_INVALID_URI","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_USER_DEFINED_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_EDIT_READ_ANALYTIC","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_LOGON_SUCCESSFUL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TOGGLE_PII","Genetec_Sentinel_Resources_RE_L_S_STE_ACTION_CONNECTION_SERVERCONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_EDIT_READ_ANALYTIC","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_REPORT_SINGLE_USER_AUTHORIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SHOW_SCALE_INDICATOR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HIDE_SCALE_INDICATOR","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_LOGS_SERVERSIDE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OLDVERSIONCONFIGURATION_INCOMPATIBLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NO_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_SUBSCRIBING_TO_LOGGERS_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BROWSER_CONSOLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CONNECTION_SERVERADMIN_CONSOLE_FAILED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SOME_UNITS_CONTAIN_EXPIRED_CERTIFICATES_CANNOT_RENEW_DUE_TO_POLICY","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_EXPORT_REPORT_NAME_TYPE_LOCATION_AUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_ACTIVITYTRAIL_PRINT_REPORT_NAME_TYPE_PRINTER_AUTHORIZED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_REPLACE_CARHOLDER_FIELDS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_BEFORE_START","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_CONSULT_TECH_DOC","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIND_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUSPEND_WIZARD","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SUSPEND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_STEP_BY_STEP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_INDICATOR_UNAVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_APP_REGISTRATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_AZURE_AD_APP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_PORTAL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED_DOCUMENTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INTEGRATE_AZURE_OPEN_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_REGISTER_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SERVER_INDEPENDENT_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PER_SERVER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PER_SERVER_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_RECORDING_DISABLED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ARCHIVING_ENABLED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_3RDPARTY_NEEDED_TO_OPEN_ZIP_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_OPTIONS_FILE_ERROR_LINE_X_POSITION_Y","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MIGRATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_BACKUP_OLDVERSIONCONFIGURATION_DESFIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_HITCH","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_MAKE_MODEL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_REAR_ATTACHMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_SPARE_TIRE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIELD_VEHICLE_TYPE_ENHANCED","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CORE_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_CLAIMS_AND_SCOPES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_LOAD_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEMPORARY_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RELATED_HELP","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_EXAMPLE_AZURE_AD_METADATA_URL","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_MANUAL_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VALID_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_METADATA_UTILITY","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_HIDE_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SHOW_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_PASTE_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_SAVE_ROLE_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CUSTOMFIELDENCRYPTION_REQUIRESDIRECTORY5111ANDUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_IDENTITY_AND_PROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP_WHICHPROTOCOL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_HELP_THIRDPARTYAUTH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_OIDC_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SAML_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBAPP_PREVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_GENETEC_WEBAPP_PREVIEW_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_TOGGLE_PII","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISPLAY_OFFLINE_UNITS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUMDISKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUMDISKSPACE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VERB_ENABLECOMPRESSION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MAXIMUMLOGFILESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_VISIBLE_FROM","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CURRENT_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_SCALE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ZOOM_AUTO","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SCALE_FACTOR_ITEM_NOT_VISIBLE_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_VERB_CREATETRACERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RETENTIONPOLICY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DISKUSAGE_LOGFILESIZE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_TRACERGROUPNAME","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TRACERGROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_FILTER_NOT_SUPPORTED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AVERAGE_SPEED","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_DUPLICATE_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_WITH_ADMIN_USER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DESFIRE_DIVERSIFICATION_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_UNSUPPORTED_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNCHRONIZE_WITH_ADMIN_USER_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USER_DEFINED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTER_URL_HERE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENETEC_WEBCLIENT_LEGACY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER1_RETENTION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER2_RETENTION_PERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_MIFAREDESFIREREMOVEKEYS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_MIFARE_DESFIRE_REMOVE_KEYS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KEY_HASH","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_REMOVE_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_SHOW_KEY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MILES_PER_HOUR_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_KILOMETER_PER_HOUR_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEET_PER_HOUR_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_METER_PER_HOUR_ABBREV","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIAGNOSTIC_LPR_MAXIMUM_UNITS_LIMITS","Genetec_Sentinel_Resources_RE_L_S_STE_HEALTHEVENT_DIAGNOSTIC_LPR_MAXIMUM_UNITS_LIMITS_DETAILS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER1_RECORDING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FAILOVER2_RECORDING_MODE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_WINDOW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIT_TO_WINDOW_DETAIL","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AUTO_HIDE_HEADER","Genetec_Sentinel_Resources_RE_L_S_STE_TASKSHORTDESC_IDENTICAL_PLATE_MULTI_VEHICLE","Genetec_Sentinel_Resources_RE_L_S_STE_REPORT_IDENTICAL_PLATE_MULTI_VEHICLE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MINIMUM_DISTANCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_EVEN_NUMBER_OF_CHARACTERS","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_IP_ADDRESS_FILTER","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FIRMWARE_UPGRADE_WITH_LOCAL_FILE","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_PRINT_EXPORT_SINGLE_USER_AUTHORIZATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENTITY_STATE_WIDGET","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_WIDGET_ENTITYSTATE_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_NOT_AVAILABLE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CERT_KEY_SMALLER_THAN","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_FEDERATE_CUSTOM_ICONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SEARCH_SELECTED_HOTLISTS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OCCURRENCE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SEARCH_SELECTED_HOTLISTS_AND_PERMITS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_DESFIRE_CONFIGURATION_CANNOT_BE_ENCODED_WITHOUT_CREDENTIAL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DESFIRE_NO_CONFIGURATION_WITH_CREDENTIAL_SELECTED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_METADATA_RETRIEVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_INITIAL_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_IDP_RESPONSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_TOKEN_PROVIDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_TOKEN_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_STEP_SYNCHRONISATION_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_RECORD_SOURCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPTIONS_SHOW_STATE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_ACTIVE_DIRECTORY","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OPEN_ID_CONNECT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SAML_2_0","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_NAME_DESCRIPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUCCESSFULL_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEE_AUTHENTICATION_ERROR","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_LOG_PII","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_PII_ACTIVATION_TEST_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_COPIED","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SELECT_OKTA_APP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_ADD_REDIRECT_URI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_OPEN_ID_HELP_LINK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_SAML2_HELP_LINK","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_WS_FAMILY_HELP_LINK","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_CONFIRM_ENDPOINTS_REGISTERED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_ENDPOINTS_PURPOSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SUSPEND_SAVES_SETTINGS","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_TEST_CONFIGURATION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_AUTHENTICATION_SERVICE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_RECOMMEND_TEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_TEST_LOGIN","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_FILES_DELETED_BEFORE_UPLOAD_TO_CLOUD_ON_RETENTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_AZURE_AD_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_OKTA_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WS_FED_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_DEFAULT_USER_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_GROUP_HAS_MEMBERS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_DISASSOCIATING_SSO_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_USER_GROUP_NO_LOGIN_PRIVILEGES","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SELECT_EXISITING_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_CREATE_GROUP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_EXTERNAL_UNIQUE_ID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OBJECT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALIDATE_INFORMATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_UNIQUE_TO_EACH_USER","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_ADD_ANOTHER_SCOPE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ADD_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_HAVE_AT_LEAST_ONE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_USE_PROVIDER_AS_LOGON_OPTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_DUPLICATE_DOMAIN","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TEST_LOGON_RESULT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ENABLEKEYROTATION","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_DATAKEYROTATIONPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_MASTERKEYSROTATIONPERIOD","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_SECRET_PURPOSE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_IS_CLIENT_SECRET_CONFIGURED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_SECRET_EMPTY","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNABLE_TO_RETRIEVE_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_SECRET_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_SECRET_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_WS_FAMILY_DOMAIN_NO_TEST_LOGON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_DOMAIN_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALID_DOMAINS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SSO_NO_DISPLAY_NAME","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_EMPTY_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_VALID_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_INPUT_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_URI_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_RESPONSE_FROM_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_METADATA_RESPONSE_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_INFO_COMMUNICATE_IDP","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ISSUER_URI","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNREACHABLE_OPEN_ID_ENDPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_METADATA_RETREIVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_ISSUER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_UNREACHABLE_SAML2_ENDPOINTS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ISSUER_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_FORMAT_INVALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_GUID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_CLIENT_ID_URI","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_APPLICATION_CLIENT_ID_NOT_FOUND","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_CLIENT_ID_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_WARNING_SAML2_AUDIENCE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_APPLICATION_CLIENT_ID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALID_URI","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_CLOUD","Genetec_Sentinel_Resources_RE_L_S_STE_EVENT_CAMERA_FILES_DELETED_BEFORE_UPLOAD_TO_CLOUD_ON_DISK_FULL","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_WIZARD_PREREQUISITES","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_SUSPEND_BUTTON","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_SSO_AUTO_SAVE","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_ISSUER_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERVIEW_ENDPOINT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_AZURE_AD_CLIENT_ID_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OVERVIEW","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_OPEN_ID_ISSUER_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SECURITY_API_AUTHORIZATION_SERVERS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_COMPLEMENT","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_CLIENT_CREDENTIALS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_ON_SAML_SETUP_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_GENERAL_AUDIENCE_RESTRICTION","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_AZURE_AD_SAML2_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_OPEN_ID_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_OKTA_ISSUER_URI","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_OKTA_SAML2_INSTRUCTIONS","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_SIGN_ON","Genetec_Sentinel_Resources_RE_L_S_STE_LABEL_ACTIONS_VIEW_IDP_METADATA","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_METADATA_RETRIEVED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_INITIAL_REQUEST","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_IDP_RESPONSE","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_TOKEN_PROVIDED","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_TOKEN_VALID","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_STEP_SYNCHRONISATION_GROUPS","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_ERROR_TEST_LOGIN_NO_LOG","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_SEE_LOG_OUTPUT","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_BEFORE_YOU_CONTINUE","Genetec_Sentinel_Resources_RE_L_S_STE_TITLE_COMMUNICATE_WITH_PROVIDER","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_ITEMS_ARE_NOW_IN_TASK_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_BUTTON_TAKE_ME_TO_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_MESSAGE_INFO_WHEN_READY_REMOVE_TASK_FORMAT","Genetec_Sentinel_Resources_RE_L_S_STE_PRIVILEGE_DELETE_CAMERAS_WITH_ARCHIVES","Genetec_Sentinel_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_DELETE_CAMERAS_WITH_ARCHIVES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_PRODUCTGROUP_LPR","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DEFAULT_OUTPUT_RELAY_NAME","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HOTLIST_AND_PERMIT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_PATROLLER_OPTION_HITS_DUPLICATE_HIT_DELAY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ASSIGNMENT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PASSIVE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_UNITNOTAVAILABLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_ENTITYISRUNNING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_DIFFERENTMODELS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_NOTFIXEDSHARP","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_ENTITYISREADONLY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_SWAPERROR_DIFFERENTDEVICES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_UNITSWAPPED_DELETEME","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_NOT_SENT_EMAIL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_EDIT_READ_PROTECTED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_EDIT_READ_MODIFIED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PROTECTION_STATUS_NO_EXPIRATION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_DAYS_LEFT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMONITOR_DIAGNOSTICS_PASTREADERROR","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_FIELD_POSTMATCHED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_ALLHOTLISTSNOTASSOCIATED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_MATCHINGMUSTBEENABLED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_SOMEHOTLISTSNOTASSOCIATED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHMESSAGE_PASTREADMATCHING_UPDATEACTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_CONFIRM_UNPROTECTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_CONFIRM_UNPROTECTION_INFORMATION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTIVITYTRAIL_DELETE_HIT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PAST_READ_MATCHING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_NO_MATCH_EVENTS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTOVU_PASTREADMATCHING_HOTLISTS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_BODY_UNSELECT_FROM_PASTREADMATCHING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MSGBOX_ACTION_UNSELECT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_SLOW_QUERY_WITH_IMAGES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PATROLLER_POSITIONS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PATROLLER_EVENTS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PARKING_EVENTS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PARKING_OCCUPANCY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTION_SET_PARKING_ZONE_OCCUPANCY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONNECTION_CONNECTING_TO_SHARP_PORTAL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONNECTION_ADD_UNIT_NOT_SECURE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_HEALTHEVENT_DEVICES_CONNECTIVITY_PROBLEM_WITH_FUSIONSTREAM","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUDITTRAILS_LPM_PROTOCOL_HTTP_LISTENING_PORT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_UPDATE_PORT_WARNING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATED_LIVE_PORT_MESSAGE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_PORT_DETAILS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_DISCOVERY_PORT_MESSAGE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_DIAGNOSTIC_DUPLICATE_LPM_PROTOCOL_PORT_MESSAGE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPM_PROTOCOL_DISABLED_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CANNOT_UPGRADE_TO_LPM_PROTOCOL_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL_FAILED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UPGRADE_TO_LPM_PROTOCOL_SUCCESS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_WHILE_GETTING_LPR_UNIT_CAPABILITIES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_PBP_PERMIT_OR_PERMIT_RESTRICTION_MISSING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PERMIT_OR_PERMIT_RESTRICTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_PERMIT_RESTRICTION_REQUIRES_PAY_BY_PLATE_VERSION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_INVALID_IPADDRESS_OR_PORT_USED_FOR_HTTPS_CONNECTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_SWAP_DIFFERENTPROTOCOLMODELS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HOURS_LEFT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_UNIT_UNREACHABLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_UNIT_UNREACHABLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_DUPLICATE_LPR_UNIT_ROLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HTTPS_PORT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_FILE_ASSOCIATION_FOR_SHARP_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_UNIT_UPGRADE_REQUIRED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_FOLDER_DOES_NOT_USABLE_TEMPLATES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_FOLDER_IS_MISSING_USABLE_TEMPLATES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLEMENT_FAILED_TIMEOUT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_WARNING_ZERORETENTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MANUALENROLLMENT_CONFIGURED_MINUTE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ERROR_DUPLICATE_LPR_UNIT_AREA","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_FAILED_TO_EXPORT_PDF","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_IPADDRESS_CHANGE_LPMSHARP","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_UNITSWAP_NO_PHYSICAL_ADDRESS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPR_MANAGER_UNREACHABLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LEGACY_PROTOCOL_UPGRADEABLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LEGACY_PROTOCOL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_DATABASE_REFERENCE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_DUPLICATE_DATABASE_REFERENCE_DETAILS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_EDIT_EMAILS_DELIMITTER_TO_USE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SEARCH_TIPS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_PLATE_FILTER_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_PLATE_FILTER_LABEL_INFO","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTER_PUBLISH_FAILED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EXPORTER_EXPORT_FAILED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_LPR_MONITORING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_NO_HOTLIST_HIT_TO_DISPLAY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_SSLCERTIFICATEREQUIRED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_FILEISNOTVALIDCERTIFICATE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_URL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_MANDATORYINT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSLCERTIFICATE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_TOKENURL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SCOPE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CUSTOMERID","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ENDPOINTS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ENDPOINTNAME","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SERVERURL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_FILEFORMATSPECIFIC","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTHORIZATION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_AUTHORIZATIONMODE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_DATAEXPORTER_INVALIDCONFIG","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_LICENSEMAXENDPOINTSEXCEEDED","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_DATAEXPORTER_DISPLAYNAME","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_DATAEXPORTER_DESCRIPTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_LIVE_HIT_MONITORING","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CRITICAL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_DATAEXPORTER_CRITICAL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_HITS_ENFORCEDONLY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_FILENAMETEMPLATE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSHKEY","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_SSHPASSPHRASE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_FILENAMETEMPLATE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_INFO_EDIT_METADATASUGGESTIONS_WITHDELIMITER","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_EDIT_METADATASUGGESTIONS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TOOLTIP_EDIT_METADATASUGGESTIONS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_MODIFY_KNOWN_VALUE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_KNOWN_VALUE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_COMPANYCODE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CONTRACTCODE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_QUEUEINGPROTOCOL","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_RABBITMQCOMMUNICATION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_MAXENDPOINTSEXCEEDEDPERALPRROLE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_WATERMARKSTEMPLATE_AVAILABLEVARIABLES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_ADDWATERMARKSTOCONTEXTIMAGES","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_WATERMARKSTEMPLATE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDAUTHTOKEN","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_EMPTYAUTHTOKEN","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_ERROR_INVALIDENDPOINT","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_CANNOT_USE_HOSTNAME_WITH_LEGACY_CONNECTION","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_LABEL_FILTER_TIMESTAMP_SHARPS","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_TITLE_UNITS_OFFLINE","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITS_OFFLINE_LIST","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_ACTION_ADDTOHOTLIST","Genetec_LicensePlateManagement_Resources_RE_L_S_STE_MESSAGE_WARNING_NOPLATEINFO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRODUCTGROUP_VIDEO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_METADATA_RECEIVING_RATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_METADATA_WRITING_RATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_RIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_LEFT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_UP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_END_STOP_DOWN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_ACTIVATE_END_STOP_POSITIONS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_VT_DEACTIVATE_END_STOP_POSISIONS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BACKLIGHT_COMPENSATION_ON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BACKLIGHT_COMPENSATION_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_COAX_PTZ_CONTROL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_ARCHIVE_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_RESTORE_VIDEO_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_BACKUP_FOLDER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_FIND_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVERS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OFFLINE_CAMERA_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVERYTHING_SINCE_LAST_BACKUP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PLAYBACK_REQUESTS_FROM_EDGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_ANALYTICS_EVENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESPECTIVE_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVENTS_OFFLOAD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFER_GROUP_PROPERTIES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TYPE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EDGE_TO_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_TO_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESPECTIVE_ARCHIVER_BACKUP_FOLDER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_FULL_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_CLEAR_PRESET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_CLEAR_PATTERN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEOSPECIFIC_VIDEOINPUTFORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_NIGHTMODE_ON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_NIGHTMODE_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_AUTOIRIS_ON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_AUTOIRIS_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_BACKLIGHTCOMPENSATION_ON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SPCPTZDLG_ULTRAKDIAMOND_BACKLIGHTCOMPENSATION_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_H264","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MPEG4","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MJPEG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MPEG2","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_JPEG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_JPEG2000","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_WAVELET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_CONTAINERSTREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_DEC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_ENC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_INPUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_OUTPUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_PTZ","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_SERIAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_SPK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_MIC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_UNIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_UNITPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS232","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS485","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_SERIAL_RS422485","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_SUCCESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_FAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_PENDING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_STARTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_INCOMPLETE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_NOVIDEO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_NOSEQUENCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_TRICKLING_STATUS_INITIALIZING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_DEFAULT_DISK_GROUP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_HANDSHAKE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_DONE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_REQSENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_WAIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_FINALIZING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_GET_INFO_MSG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_PREPARING_FLASH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_REBOOTING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_LOADING_NEW_FILE_SYSTEM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_STATUS_STARTUPGRADENONAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_DOWNFIRMFOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_DOWNGRADE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FLASHERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FWU_LIB_TOO_OLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_GENERALFAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INSUFMEM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDARCH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDCOMPORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDFILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDFILENAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_INVALIDIP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_LOADFAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_MEMIMAGEFAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_OLDFWULIB","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RELOCFAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RESOLVESYMBOLFAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RETRY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_RXFAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_TIMEOUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNABLECONNECT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNEXPFAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNRAMSETTING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNSIGN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UNKNOWNSTP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UPGRADE_17XX_35_TO_40","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_UPGRADE_17XX_35_TO_42","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_USERCANCEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_WININET_LIB_OFFLINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FILETOOSHORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_FORMATERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_READFIRMFILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_PASSWORD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEODATAFORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_FRAMERATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_STORAGE_FAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CONNECTION_TIMEOUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CONNECTION_TIMEOUT_DESC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_INVALID_STREAM_RESOLUTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MULTIPLESOURCE_DESC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_RTPPACKETLOST_DESC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_DETECTION_WINDOW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_DETECTION_ZONE_TYPE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_GLOBAL_CHANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_IMAGE_TOO_BLURRY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_REFERENCE_CHECK_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_BRIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_DARK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_SIGNAL_TOO_NOISY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_NOT_ENOUGH_RSC_FOR_CONFIG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_ANALYTICS_SONY_VMF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_INVALID_CONFIG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_INVALID_BOOSTQUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_PELCO_EVENT_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_KEEPING_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_LOOSING_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_ANALYTICS_SONY_VMF_FILTER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_ANALYTICS_PRESENCE_DETECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_TRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_EVENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_SECTION_MOTION_ACTIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MOTIONDETECTION_SECTION_MOTION_INACTIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_H265","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BOSCH_INVALIDCONFIG_NUMBER_OF_STREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_SCHEDULE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_QUALITY_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_SECURITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PROMPT_FOR_CAMERA_CREDENTIALS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_DEFAULT_RECORDING_SCHEDULE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_SPECIFY_DEFAULT_CAMERA_CREDENTIALS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CHOOSE_QUALITY_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_REFER_TO_ARCHIVER_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_HIGH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_STANDARD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_LOW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_HIGHEST_RESOLUTION_AVAILABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_ALWAYS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_CUSTOM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_MANUAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_MOTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECORDING_MODE_DESCRIPTION_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_CAMERA_DEFAULT_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_VIDEO_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_QUALITY_CHANGED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_APPLY_TO_ALL_CAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_AUTHENTICATION_USERNAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_HIGH_SPEED_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_SLOW_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_AUTO_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_OVERLAYS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHOW_OVERLAYS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_BACKUP_FOLDER_CONFLICT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_ORIGIN_TYPE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_MEDIA_TYPE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_EDGEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_EXPORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_METADATA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVER_TRICKLING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIORITIZED_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGETOARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVERTOARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASKSHORTDESC_ARCHIVETRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_ARCHIVETRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_MODIFIED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETE_CONFIRMATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_START_TRANSFER_TRANSFERGROUPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_STOP_TRANSFER_TRANSFERGROUPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_BACKUP_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVER_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_EDGE_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_TRANSFERGROUP_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_TRANSFERRED_SIZE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_START","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_END","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_LAST_TRANSFER_STATUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_NEXT_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFERGROUP_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_START_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_STOP_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_INCOMPATIBLE_SOURCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_DELETED_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFER_ARCHIVER_OFFLINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVEBACKUP_MAX_THROUGHPUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_MAIN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_BASELINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_AVCPROFILE_HIGH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENABLE_PLAYBACK_REQUESTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_PARTIAL_SUCCESS_SUMMARY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_FAILURE_SUMMARY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_NORMAL_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ELBEXDLG_SHUTTER_SPECIAL_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SEQUENCE_OVERLAP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAX_UNIT_PLAYBACK_COUNT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAX_PLAYBACK_CAPACITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NO_OTHER_ARCHIVER_OWNER_FOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_REMOTEZOOM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_INCREMENT_ZOOM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_DECREMENT_ZOOM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_INCREMENT_FOCUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_DECREMENT_FOCUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_FULLRANGE_FOCUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_SHORTRANGE_FOCUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_ARECONT_RESET_ZOOM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_APPLICATION_FAILURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RESTORE_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RESTORE_MULTIPLE_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_OPTION_VIDEO_WATERMARKING_ENABLED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM_ABOVE_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_TEMPERATURE_ALARM_BELOW_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DELETE_OLD_BACKUP_ON_DISK_FULL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_PARTIALLY_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIT_TRICKLING_SUCCESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_APPLICATION_EVENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RESTORED_BACKUP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ORIGINTYPE_EDGE_TRICKLING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CONNECTION_TO_MEDIAROUTER_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MEDIAROUTER_DESCRIBE_EMPTY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_ARCHIVING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_MOTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_AUXARC_COVERAGE_CONFLICT_DIAGNOSE_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_COVERAGE_USERTYPE_COMPRESSION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NETWORK_ROUTE_NOT_FOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MEDIAROUTER_NO_STREAM_SOURCE_FOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_NO_CONNECTION_TO_ANY_SOURCE_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVETRANSFER_COVERAGE_TIMESPAN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_ARCHIVER_OFFLINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING_UP_TO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFER_GROUP_NO_VALID_SOURCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSFERGROUP_RELATIVE_TIMEZONE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_COMMAND_SHOW_DIAGNOSTIC_TIMELINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DUAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_HINT_REORDER_SEQUENCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_RESULT_NOT_SET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NO_VALID_RTSP_RESULT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_CONNECTION_TO_MEDIA_ROUTER_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_ARCHIVER_NOT_OWNER_OF_TRANSFER_GROUP_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NO_DATA_RECV_FROM_MEDIA_PLAYER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_BACKUP_SET_FILE_NOT_FOUND_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_CANT_RESTORE_NOT_A_BACKUP_SET_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_EMPTY_BACKUP_SET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_RESTORE_NOT_ENOUGH_SPACE_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_NOWHERE_TO_ALLOCATE_FILE_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_FILE_ALLOCATION__FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_START_FANS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_STOP_FANS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_START_HEATERS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCODER_COMMAND_AXIS_TEMPERATURE_CTRL_STOP_HEATERS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PLAYBACK_DURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_WRITE_TO_DISK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_WRITE_TO_DB","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EDGE_TRICKLING_ARCHIVE_FILE_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DATABASE_USED_BY_ANOTHER_AUXARC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NOT_ENOUGH_SPACE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NOT_ENOUGH_SPACE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_TRICKLING_NO_PATH_AVAILABLE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVE_BACKUP_NO_PATH_AVAILABLE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_ON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_AUTO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_DAY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_NIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNINGMODE_DAYNIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_BINNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENDED_WITH_ERRORS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_SYSTEM_CANCEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_TRANSFERED_FROM_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_RECORDED_BY_LOCAL_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_STORED_ON_UNIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_TRICKLED_UNIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_TRANSFERGROUP_CANNOT_MODIFY_ACTIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_SHOCK_DETECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_MANUAL_BACKUP_DUPLICATE_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PELCO_OBJECT_COUNT_REACHED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PELCO_ADAPTIVE_MOTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INSUFFICIENT_CAPABILITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SONY_ROTATION_INFO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_SHOULD_BE_REPLACED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_SDCARD_MUST_BE_REPLACED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_AXIS_WS_CONFIGURATION_WEBPAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_DOWNSCALING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_DOWNSCALING_RESOLUTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHOCK_DETECTION_TRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_NOT_FOUND_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_ACCESS_ERROR_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_IMPORT_FILE_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_CAMERA_INVALID_ENCRYPTION_CONFIG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_VIEWING_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PARTIAL_SUCCESS_LEGACY_EXPORT_SOME_SEQUENCE_ENCRYPTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_LEGACY_EXPORT_ALL_SEQUENCE_ENCRYPTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONNECTED_TO_UC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_LOSTCONNECTION_TO_UC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_RECOVERED_UC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_UC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_UC_STOPPED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_UC_RESTORED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_SERVICE_CREATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_TEST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_RUN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_SINGLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_QUAD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_PANORAMIC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_RUN_BENCHMARK_TEST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_VIDEO_FILE_IMPORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_UNIQUEID","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LENS_NOT_CONFIGURED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LENS_NOT_CONFIGURED_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_SINGLE_PANORAMIC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_DUAL_PANORAMIC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_CLIP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_UNABLE_TO_SET_MC_PORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_ANY_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_INVALID_NETWORK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_GPU_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BENCHMARK_TEST_RERUN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_SUCCESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_IN_PROGRESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_NARROW_PANORAMA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_WIDE_PANORAMA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITYTRAIL_LIVE_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITYTRAIL_PLAYBACK_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ARCHIVE_TRANSFER_AUDIO_IMPORT_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_APPLICATIONS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VENDOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_MOTION_SEARCH_NOTSUPPORTED_FOR_CAMERA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_THERMAL_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_CELSIUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_FAHRENHEIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_UPPER_LEVEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MIDDLE_LEVEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOWER_LEVEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_CELSIUS_SHORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_UNIT_FAHRENHEIT_SHORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_RESOLUTION_DESCRIPTION_DEFAULT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ASSUME_DATES_AS_LOCAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_AXISDLG_SPEEDDRY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOCAL_TIME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INFO_TIME_REPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RTSP_AUTHENTICATION_INVALID","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_AUTHENTICATION_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_STREAM_OVER_HTTPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_HTTP_SERVER_FAILED_TO_LISTEN_ON_XY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DELETE_CERTIFICATE_FILES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PANASONIC_INVALIDCONFIG_MJPEG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_TCP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_UDP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSPS_STREAM_OVER_MULTICAST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INPUT_NUMBER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_LICENSE_COUNT_EXCEEDED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_LICENSE_COUNT_EXCEEDED_DETAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USE_SECURE_RTSP_WHEN_AVAILABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DELETE_CERTIFICATE_FILES_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WIZARD_COPY_CONFIG_VALIDATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_SUBFOLDER_ACCEPTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_SUSPICIOUS_RETENTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_SUSPICIOUS_RETENTION_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CANNOT_DISPLAY_STREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENABLE_SECURE_COMMUNICATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENCRYPTION_NOT_SUPPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENABLE_METADATA_STREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_UNIT_REPLACEMENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_MAXIMUM_ITEM_COUNT_FAILOVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_DISABLING_METADATA_STREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_STATIONS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_STATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_ADD_NEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_DUPLICATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_FIRMWAREUPGRADE_ERROR_CERTIFICATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_AUXILIARY_RECORDING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CAMERA_DUPLICATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EQUIPMENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_HOLDERS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_HOLDER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_PARTIAL_FAILURE_SUMMARY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PROTECTED_VIDEOS_FILTER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_MOTION_CAPABILITIES_INCOMPATIBLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_MC_RANGE_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_MC_PORT_RANGE_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_VIDEOTYPE_MXPEG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_METADATA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_OMNICASTCPNOTINSTALLED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PANASONIC_INVALID_RESOLUTION_MJPEG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_BOSCH_IVA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_AXIS_DECODER_USE_HTTPS_WHEN_NOBASICAUTH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_SMARTCODEC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_STORAGEMEDIA_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_ACCESS_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_NO_FREE_SPACE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_STORAGE_WRITE_PROTECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NETWORKSHARE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_REDIRECTOR_NOUDPPORTAVAILABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_TRUE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCRIPTION_FALSE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONFIGURE_MOTION_ZONE_FROM_CONFIGTOOL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SHORT_LIVED_OBJECTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SWAYING_OBJECTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_IGNORE_SMALL_OBJECTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_EDGE_SIMULTANEOUS_CAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NOT_ENOUGH_SPACE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_CONSOLIDATION_NO_PATH_AVAILABLE_MESSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVECONSOLIDATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFERGROUP_ARCHIVECONSOLIDATION_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ORIGIN_ARCHIVE_CONSOLIDATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STARTED_MANUAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTIVITY_TYPE_RECORDING_STOPPED_MANUAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_PANASONIC_SMARTCODEC_INVALIDCFG_FMT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_TIME_DETECTION_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_DISTANCE_DETECTION_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_OBJECT_MIN_SIZE_DETECTION_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MEDIAGATEWAY_APPLICATIONPATH_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARECONT_SNAPSTREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MOTIONONZONE_DESC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EVENT_MOTIONOFFZONE_DESC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SAMPLE_URL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SAMPLE_URL_RTSP_TOOLTIP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_BWC_REGENERATE_CONFIG_FILES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_STATION_CONFIG_REGENERATE_ALL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_STATIONS_CONF_FILE_OBSOLETE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_REGENERATE_ALL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_INCOMING_UDP_PORT_RANGE_EXHAUSTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USER_UNAUTHORIZED_EXPORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MEDIAGATEWAY_WEBCLIENTCONNECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_ARCHIVE_CONSOLIDATION_CONFIG_ONLY_IN_ADVANCED_SETTINGS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_ARCHIVER_AGENT_FORMAT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_ROLE_LOST_ARCHIVER_AGENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_NOVIDEO_ALLSOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_EXPORT_NOVIDEO_SPECIFICSOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_VIDEO_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_NONE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_VIDEO_ERROR_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_ALL_ERROR_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_NONE_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BWC_CONVERSION_POLICY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_BWC_CONVERSION_POLICY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_COPY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_COPIED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_BWC_CONVERSION_ERROR_RETENTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_FIELD_STREAMINGTYPE_PRIVATE_VIDEO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INHERIT_FROM_ROLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_NO_ARCHIVER_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_NOT_RUNNING_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_SUCCESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MSGBOX_INFO_DELETE_BWCAMERA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LINKED_CAMERA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_DATABASE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_STREAMING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_RECORDING_PROBLEM_FILEWRITE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_CHANGING_SETTINGS_REQUIRE_REGENERATE_STATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_CUSTOM_EVENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_RECEPTION_UDP_PORT_RANGE_OVERLAP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_DEFAULT_ARCHIVER_HAS_MULTIPLE_AGENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_HAS_FAILOVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ADD_PUBLIC_ADDRESS_OVERRIDE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_REMOVE_PUBLIC_ADDRESS_OVERRIDE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_REMOVING_PRIVACY_PROTECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CANNOT_DELETE_MEDIAPROCESSOR_ASSOCIATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_BWC_NO_DEFAULT_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BWC_UNIT_DIAGNOSTIC_ARCHIVER_INWARNINGSTATE_WARNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUBLIC_ADDRESSES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_METHOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_INTENSITY_LEVEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_COLOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_HIGHLIGHT_INTENSITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_TOLERANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PRESET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_NUM_ILLUMINATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ILLUMINATION_TOLERANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_CONTRAST_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_LOADING_PREVIEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_STARTUP_PERIOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_CONTINUOUS_PERIOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_GRID_BLOCK_SIZE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ANALYSIS_RESOLUTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SHOW_ZONES_BOUNDARIES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENEPRESET_OUTDOOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENEPRESET_INDOOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_PIXELATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_BLUR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_COLORIZE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_NAME_VIRTUAL_OUTPUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_FAST_PREVIEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVACY_PROTECTION_FAST_PREVIEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_LEARNING_PERIOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_CANNOT_CHANGE_VIRTUAL_PORT_STATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PRESET_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PREVIEW_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVACY_PROTECTION_PREVIEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OUT_OF_SYNC","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CAMERA_TIME_IS_OFF_BY_MS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CAMERA_TIME_NOT_SUPPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MULTICAST_IPV6","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_NO_ANALYSIS_CONFIG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_SAVING_DEFAULT_UNRELIABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_VIDEO_INVALID_BITRATE_VALUE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_INACURATE_DETECTION_BLOCKS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_PERFORMANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_BALANCED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_PRIVACYPROTECTION_ANALYSISQUALITY_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_ANALYSIS_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_BLOCK_PRECISION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_0_DEGREE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_90_DEGREE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_180_DEGREE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_270_DEGREE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_PRESET_SEQUENCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_PATROL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PANASONIC_HOME_POSITION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PEOPLE_COUNTING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_PEOPLE_COUNTING_ALARM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUNCTUAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DIRECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RULENAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_TOGGLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_CAMERALIST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CALLUPTIMEOPTIMIZATION_TOOLTIP_CONTINUOUSSTREAMING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CALLUPTIMEOPTIMIZATION_AUTOMATIC_STREAMUSAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TEMPERATURE_ALARM_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MSGBOX_INFO_DELETE_BWCAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_DELETE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_FILESYSTEM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_OTHER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_WRITE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_SDCARD_READ","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MTU","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_TRANSMISSION_LOST_MTU_JUMBO_FRAME_DETECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_CHECKBOX_KEEPMOTIONDETECTIONFROMUNITWEBPAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CALLUPTIMEOPTIMIZATION_NOSEQUENCESELECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_CALLUPTIMEOPTIMIZATION_NOSEQUENCEFOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_ADD_NEVER_BLUR_ZONE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_ADD_ALWAYS_BLUR_ZONE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_REDIRECTION_STRATEGY_USAGE_NOT_SUPPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_CANNOT_RESOLVE_GENETEC_SERVER_ADDRESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ERROR_EXPORT_NOT_POSSIBLE_CURRENT_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SECURE_COMMUNICATION_ENCRYPTION_ON_TRANSIT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LARGERTPPACKETS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_LARGERTPPACKETS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERA_INTEGRITY_MONITOR_SYSTEMWIDE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_SCREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_GUNSHOT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_EXPLOSION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_GLASSBREAKING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTICS_DETECTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTICS_DETECTED_WITH_LIKELIHOOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_USE_PUBLIC_ADDRESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_IN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_OUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_LEFT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_MOVED_RIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_IN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_OUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_LEFT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTING_SUMMARY_RIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_PEOPLECOUNTINGALARM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_STATUS_STARTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_STATUS_STOPPED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_EDGE_RECORDING_STORAGE_FAILURE_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_RECOVERED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_FULL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_MEDIUM_EMPTY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_UNEXPECTED_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_EDGE_STORAGE_STATUS_UNKNOWN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OFF_BY_SEC_MS_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_OFF_BY_MINUS_SEC_MS_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_CAMERA_TIME_UNKNOWN_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_GPU_WARNING_DRIVER_OUTDATED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EVIDENCE_NAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAPTURE_TIME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_UPLOAD_TIME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONVERSION_STATUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CONVERSION_PROGRESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_REPORT_WEARABLE_CAMERA_EVIDENCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASKSHORTDESC_REPORT_WEARABLE_CAMERA_EVIDENCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_IMAGE_COVERED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_IMAGE_BLURRY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_CAMERA_MOVED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_BAD_LIGHTING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEO_CIM_TAMPERING_LOW_CONSTRAST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_PERSISTENCE_PATH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_MODULES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_NETWORK_PATH_HINT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MEDIAROUTER_CONFIG_ENCRYPTION_ON_TRANSIT_BACKWARD_REDIRECTOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MEDIAROUTER_CONFIG_ENCRYPTION_ONTRANSIT_LIMITATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_PRESETS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_INDOOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_OUTDOOR_NEAR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_OUTDOOR_FAR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENUM_ANALYTIC_CONFIGURATION_PRESET_THERMAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_SELECTED_PRESET","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_EVENT_STORAGE_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_LEARNING_RATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_CONTRAST_CHANGE_DETECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTIC_CONFIGURATION_LIGHTING_CHANGE_DETECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_NO_SELECTED_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_INVALID_FIELDS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYTIC_CONFIGURATION_INVALID_PATH","Genetec_VideoSurveillance_Resources_RE_L_S_STE_AUDITTRAILS_REDIRECTION_STRATEGY_ADDED_REMOVED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ARCHIVER_DOES_NOT_EXISTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ARCHIVER_DIAGNOSTIC_SERVERVERSION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CREATEREMOTESITEARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PTZ_CONFIGURATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EXTENDED_PTZ_RANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_ENABLE_ENCRYPTION_ON_TRANSIT_TILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_MULTICAST_ADDRESSES_NOT_VACANT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MEDIAROUTER_DIAGNOSTIC_MULTICAST_ADDRESSES_VALID","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_REDIRECTOR_NEEDS_UPDATE_FOR_ENCRYPTION_ON_TRANSIT_TILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_LIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BANDWIDTH_CONTROL_PLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_EXPORT_G64X_FILE_CREATION_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_REPORT_WEARABLE_CAMERA_EVIDENCES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_CANNOT_CREATE_FILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_FILE_PATH_LENGTH_TOO_LONG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_EXPORT_FILE_PATH_TOO_LONG","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACYMETHOD_TRANSPARENCY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ERROR_FEDERATION_RETURN_ON_TILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MULTICAST_PORT_IPV6","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_PRIVACYPROTECTION_ADDEDAGENTSLOADBALANCING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ENCRYPTION_ONTRANSIT_STREAM_INFO","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_FULL_ANALYSIS_TIME_RANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAXIMUM_SIMULTANEOUS_ANALYSIS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CIM_CAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CIM_RELATIONSHIPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LIST_CAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PP_RELATIONSHIPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WARNING_CIM_CONFIG_SHORT_TIME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MESSAGE_NO_RELATED_CAMERA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTP_PORT_IN_USE_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_PORT_IN_USE_ERROR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_DISABLING_SETTING_MIGHT_RECONNECT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INFO_MULTICAST_FROM_UNIT_NOT_SUPPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ENCRYPTION_TYPE_IN_TRANSIT_AT_REST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_WARNING_ENCRYPTION_IN_TRANSIT_REQUIRES_SECURECOMM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ANALYSING_STREAMING_STATUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_REMOVETILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_STREAMING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MEDIA_GATEWAY_GENERAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MINIMUM_RESOLUTION_FOR_HIGH_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOW_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DEFAULT_STREAM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_RESOLUTION_JPEG_TRANSCODING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NO_LIMIT_RESOLUTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HIGH_QUALITY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HARDENINGGUIDE_MOBILE_SERVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_GPU_WARNING_INTELDRIVER_OUTDATED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_BLOCK_HIGHLIGHT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PRIVACY_PROTECTION_PIXELATION_ADVANCED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PT_SPEED_TYPE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PT_PROPORTIONAL_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIDEO_CIM_ROLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCENE_CHANGED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO__ABOUT_REMOVE_CIM_FROM_CAMERAS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVER_VIDEO_FILE_NOT_FOUND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SHRINK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_EXPAND","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_AXIS_START_WIPER_SEQUENCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ENCODER_COMMAND_AXIS_STOP_WIPER_SEQUENCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_LOADING_MEDIAPROCESSOR_DATA","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_DIAGNOSE_AUXILIARY_DECRYPTION_NO_KEY_DROPPED_FRAMES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_RENDER_ONLY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BENCHMARK_RESULT_FAIL_GRAPHIC_CARDS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CONFIGURATION_WILL_BE_LOST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_PARTIAL_SUCCESS_EXPORT_SOME_SEQUENCE_ENCRYPTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_PARTIAL_SUCCESS_EXPORT_LOST_FILE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_FILE_HEADERS_RETRIEVED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_FILE_HEADERS_RETRIEVED_RANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_VIDEO_DIGITALLY_SIGNED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILE_WONT_CONTAIN_DIGITAL_SIGNATURE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_FEDERATION_ARCHIVER_PLAYBACK_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_FEDERATION_AUXILIARY_ARCHIVER_PLAYBACK_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_ANY_FEDERATION_PLAYBACK_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVE_TRANSFER_MISSING_FILES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_CAMERAINTEGRITY_REFRESHALLTHUMBNAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CAMERAINTEGRITY_REFRESHTHUMBNAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_CAMERAINTEGRITY_REFRESHTHUMBNAILSCONFIRM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ANALYTICMODULEOFFLINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERAINTEGRITY_MUSTBERUNNING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CAMERAINTEGRITY_MUSTBEUPGRADED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_EXPORT_SINGLE_USER_AUTHORIZATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_EXPORT_SINGLE_USER_AUTHORIZATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_AUTHENTICATION_FAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_INVALID_LICENSE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CERTIFICATE_DELETED_VIDEO_URECOVERABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_KEEP_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ROLE_CLOUD_ARCHIVE_PLAYBACK_NAME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ROLE_CLOUD_ARCHIVE_PLAYBACK_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TRIGGER_DATE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_END_TRANSFER_TIME","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRIGGER_REASON","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_TIMESTAMP_FILTER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_COUNT_FILTER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MANUAL_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SCHEDULED_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DUPLICATES_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_BACKUP_TRANSFER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_FAIL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_SUCCESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_PARTIAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RESULT_CANCEL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_SHOW_LAST","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_ATTEMPTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_REPORT_ARCHIVE_TRANSFER_HISTORY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TASK_TASKSHORTDESC_ARCHIVER_TRANSFER_HISTORY","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_RETRY_COUNT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_TRANSFER_RESULT_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_CAMERA_RESULT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_DESCR_GPSLOCATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_GPSLOCATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_MOTION_DETECTION_CODEC_NOT_SUPPORTED_IN_SOFTWARE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NEVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ALLOW_TRANSCODING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONLY_FOR_PTZ_CONTROL_AND_MOBILE_SERVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ALWAYS_FOR_UNSUPPORTED_DEVICES_AND_CODECS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAMS_LOCAL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAMS_FEDERATED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_START_ADDRESS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PORT_INCREMENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PORT_INCREMENT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_UNIT_METADATAFILELOCATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONE_ROW_FOR_ALL_ORIGINS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ONE_ROW_PER_ORIGIN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DISPLAY_MODE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_TEMPERATURE_DETECTION_ALARM_TO_REMOVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_CANNOT_CONNECT_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CANNOT_CONNECT_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MENU_ITEM_CLOUD_ARCHIVE_PLAYBACK_SOURCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ARCHIVES_REPORT_FORCE_DISPLAY_GAPS_GREATER_THAN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOW_RESOLUTION_TO_LIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LIVE_TO_HIGH_RESOLUTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_STREAM_DISPLAY_THRESHOLD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MAX_RESOLUTION_MJPEG_TRANSCODING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SHOW_ORIGINAL_STREAMS_FOR_ALL_TILES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_SHOW_PROTECTED_STREAMS_FOR_ALL_TILES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_SHOW_ORIGINAL_STREAMS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_SHOW_PROTECTED_STREAMS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_RETRIEVE_CLOUD_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_PRIVILEGE_TOOLTIP_RETRIEVE_CLOUD_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_NOT_ACTIVATED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_OPEN_BROWSER_ACTIVATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WHAT_IS_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CLOUD_STORAGE_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LEARN_MORE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ACTIVATE_PRODUCT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_ACTIVITYTRAIL_RETRIEVE_FROM_CLOUD_ARCHIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_ACTION_ACTIVITYTRAIL_TYPE_RETRIEVEFROMCLOUD_REQUESTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_PLAYBACK_IS_OFFLINE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_ORIGIN_RECORDED_BY_AUXILIARY_ARCHIVER","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_REQUIRE_TLS_RTSPS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_ACTIVATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_CONNECTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOT_ENOUGH_REFERENCE_POINTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_REFERENCE_POINTS_CHANGED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_VIDEOANALYTICS_CROWD_COUNTING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_ARCHIVE_TOKEN_MISSING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_ARCHIVE_TOKEN_MISSING_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_ERROR_FORBIDDEN_TRANSFORMATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_LIVE_TO_HIGH_MUST_BE_GREATER_OR_EQUAL_TO_LOW_TO_LIVE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CLOUD_ARCHIVES_LONG_TERM_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_CLOUD_ARCHIVES_REQUESTED_FROM_LONG_TERM_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NO_CLOUD_PLAYBACK_ROLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_CREATE_ROLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_DEACTIVATE_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_DEACTIVATE_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_EXISTING_CONFIG_NOT_DELETED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_NOT_ACTIVATED_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_SERVER_UNAUTHORIZED_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_SERVER_UNAUTHORIZED_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_NOT_FOUND_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_NOT_FOUND_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_SYNCHRONIZATION_ERROR_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TITLE_WARNING_NETWORK_ERROR_CLOUDARCHIVEPLAYBACK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_NOT_SUPPORTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_STORAGE_AUTHENTICATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_COMMUNICATE_CLOUD_SERVICES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CLOUD_TURNED_OFF","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_CLOUD_STORAGE_DESCRIPTION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUD_PLAYBACK_NOT_ACTIVATED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOTIFICATION_NAME_RETRIEVE_CLOUD_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVING_CLOUD_ARCHIVES_CAMERAS_NOTIFICATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_RETRIEVE_LTS_CLOUD_ARCHIVES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_SHOULD_RETRY_STATUS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_EXPIRED_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_FAILURE_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_RETRYABLE_ERROR_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RETRIEVE_LTS_NOTIFICATION_COMPLTED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_COLUMNNAME_LTS_READY_BEFORE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_BUTTON_RETRIEVE_LTS_REMOVE_NOTIFICATION","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_RETRIEVE_LTS_ROLE_UNAVAILABLE_NOT_UPDATING","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_HTTP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_TILE_CLOUD_PLAYBACK_DOWNLOAD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_EVENT_AUDIOANALYTICS_VEHICLEHORN","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_SECURITYDESK_OPTIONS_VIDEO_SYNC_VIDEO_BY_DEFAULT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_ARCHIVE_TRANSFER_CONSOLIDATION_BEFORE_INTEGRITY_CHECK","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_BIGGEST_TIME_DIFFERENCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_TOLERANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_SERVER_NOT_SYNCHRONIZED_TIMEOUT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_SERVER_UNREACHABLE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_LIST_SERVERS_NOT_SYNCHRONIZED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MANAGED_APPLIANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_TASK_MANAGED_APPLIANCE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_DATAREQUESTFAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_NODATARECEIVED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_MANAGEDARCHIVER_STORAGEPROBLEM","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MANAGEDARCHIVER_INCOMPLETEDATARECEIVED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MANAGEDARCHIVER_PERFORMANCEISSUES","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_ERROR_CLOUDSCADAPTER_STATUSREQUESTFAILED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_MONITOR_INCOMING_EVENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_NOTIFY_HIGH_NUMBER_OF_EVENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_THRESHOLD_NUMBER_OF_EVENTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TIME_PERIOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TIME_PERIOD_MINUTE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_TOOLTIP_TIME_PERIOD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LISTVIEW_COLUMN_EVENTS_LAST_MINUTE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RTSP_PORT","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_INCOMING_UDP_PORT_RANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_PTZ_OVERVIEW","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_VIEWING_MODE_CORRIDOR","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_TRANSFER_EVERYTHING_THAT_IS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_PUBLIC_IP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_CAMERAS_MISSING_STREAMGROUP","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_MEDIAPROCESSOR_NO_NETWORK_MATCHING_CONSTRAINTS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_LOCAL_UDP_PORT_RANGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILES_DELETION_BEFORE_SENT_CLOUD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_OLDEST_FILES_DELETION_DISK_FULL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_FILES_DELETION_BEFORE_SENT_CLOUD","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_OLDEST_FILES_DELETION_DISK_FULL","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_WARNING_ENUMERATE_FILES_DELETED","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_FILES_DELETION_DETAILS","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_INFO_RESOLUTION_STEPS_COULD_NOT_CONNECT_TO_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_MESSAGE_WARNING_COULD_NOT_CONNECT_TO_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_RECONNECTED_TO_CLOUD_STORAGE","Genetec_VideoSurveillance_Resources_RE_L_S_STE_LABEL_WARNING_COULD_NOT_CONNECT_TO_CLOUD_STORAGE","Genetec_AccessControl_Resources_RE_L_S_STE_PRODUCTGROUP_ACCESSCONTROL","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENFORCE_VISITOR_ESCORT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VISITOR_ESCORT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENFORCE_TWOMAN_RULE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MAX_DELAY_SWIPES","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_ON","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_SIDE_A","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_SIDE_B","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_UNIT_ESCORTNOTSUPPORTED","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_ESCORTNOTSUPPORTED","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_ACCESSPOINT_COMPANIONVISITORDENIED","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_COMPANIONVISITORDENIED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDHOLDER_PICTURE","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_WAS_MANUALLY_UNLOCKED_BY","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_MAINTENANCE_MODE_SET","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DOOR_MAINTENANCE_MODE_CANCELLED","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_UNLOCKING_OVERRIDE_FOR_DOOR","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_LOCKING_OVERRIDE_FOR_DOOR","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_UNLOCK_SCHEDULE_OVERRIDE_CANCELLED","Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_HARDNOTSTRICT","Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_TIMEOUT","Genetec_AccessControl_Resources_RE_L_S_STE_VERTXERROR_APB_ONEDOORONEREADER","Genetec_AccessControl_Resources_RE_L_S_STE_MSGBOX_BODY_INTERLOCK_AND_APB_VERTX_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_FAILED_CREDENTIAL_FETCH","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_CONFLICTING_CRED_FOUND","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READERLESS_DOOR","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_TYPE","Genetec_AccessControl_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISSCHEDULEIMPORT_NAME","Genetec_AccessControl_Resources_RE_L_S_STE_EXTERNALSYSTEM_SYNERGISSCHEDULEIMPORT_DESCRIPTION","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_OUT_OF_RANGE_VERIFYING_PIN","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_ACCESSPOINT_WAS_SHUNTED_BY","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ACTIVITY_DEVICE_WAS_SHUNTED_BY","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_DOOR","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_DISABLE_SHUNT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ONE_POTENTIAL_MATCH","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POTENTIAL_MATCHES","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STATE_ACTIVE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STATE_SHUNTED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATCSN32BIT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ALL_READERS_SHUNTED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_FIRST_PERSON_RULE_OFFSET","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_FIR_OFFSET_NOTSUPPORTED_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_CONFLICT_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_LENGTH_OF_CREDENTIAL_IS_INVALID","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SECURITY_CLEARANCE_IS_NOT_SYNCHED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_ACCESSRULES_NOTSUPPORTED_PERIMETER_UNIT","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_SCHEDULES_NOTSUPPORTED_PERIMETER_UNIT","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_DEVICE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_TOO_MANY_DEVICES","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_DEVICE_NOT_RUNNING","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ARMING_INPUT_CANNOT_BE_QUERIED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ARMING_INPUT_TROUBLE_STATE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_IN_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_DOES_NOT_EXIST","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ARMING_INPUT_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SMC_LOGIN","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_LOGIN_TIMEOUT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LOGIN_SUCCEEDED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_READER_ON_ENTRY","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_READER_ON_EXIT","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_DEVICES_IN_TROUBLE_SHORT_STATE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_DEVICES_IN_TROUBLE_OPEN_STATE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_WITH_ALWAYS_SCHEDULE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_NO_UNLOCK_SCHEDULE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AUTONOMOUS_CAPACITIES_EXCEEDED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENROLLMENT_UPDATED_UNIT_ENDPOINT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_ENROLLED_NOT_STEALING","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_UNIT_ALREADY_ENROLLED_STEAL_IT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_NOT_AUTO_ENROLLING","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONNECTION_REFUSED_BY_FACTORY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTACTING_TIMING_OUT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTACTING_FOR_LAST","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_ONE_PERIMETER_DOOR_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_DOOR_WITH_NO_SENSOR_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_OFFLINE_DEVICE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_TOUBLE_STATE_DEVICE","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ELEVATOR_NO_ONLINE_DEVICES","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ELEVATOR_RELAY_NOT_CONFIGURED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_UNIT_UNABLE_TO_DISCOVER","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_READER_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ALL_INPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ONE_OR_MORE_INPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_ALL_OUTPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ONE_OR_MORE_OUTPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_READER_IS_CONFIGURED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_READER_CONFIGURED_ALL_INPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_NO_READER_CONFIGURED_AT_LEAST_ONE_INPUT_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_NO_READER_CONFIGURED_BUT_OUTPUT_CONFIGURED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_I_O_CONFIGURED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_INPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_OUTPUTS_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_ACCESSRULE_SUPPORT","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_SCHEDULE_SUPPORT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_DISCONNECTED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WIRING","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_TRIGGER_DOOR_HELD","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_TRIGGER_DOOR_FORCED","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_CARDHOLDERGROUP_CANNOT_ADD_CHILD","Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE_A","Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_REX_SIDE_B","Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE_A","Genetec_AccessControl_Resources_RE_L_S_STE_ACCESSPOINTTYPE_ENTRYSENSOR_SIDE_B","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SIDE_A","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SIDE_B","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_DUPLICATE_WIRINGTEMPLATE_NAME_X","Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_SAVE_WIRINGTEMPLATE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CAMERAS_SIDE_A","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CAMERAS_SIDE_B","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_ADD_ANOTHER_DOOR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_FIR_AREA_UNLOCKING_SCHEDULE_WITH_ALWAYS_SCHEDULE","Genetec_AccessControl_Resources_RE_L_S_STE_DATASTORE_NEWINTERFACEMODULE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_ENCLOSURE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_2","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_3","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_TB2","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_TB3","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_WIEGAND","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_MAGSTRIPE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_OSDP","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_F2F","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_STANDARD_SUPERVISED_F2F","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_BI_COLOR","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_2_WIRE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DORADO_780","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LCD","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_BIOSCRYPT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OSDP","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SNET","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_MR20","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_HID","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_INDALA","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_MR20_NO_TAMPER","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_4BIT_60SEC_KEEP_ALIVE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_8BIT_60SEC_KEEP_ALIVE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_4BIT_10SEC_KEEP_ALIVE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_KEYPAD_8BIT_10SEC_KEEP_ALIVE","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_ADDRESS_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_IP_ADDRESS_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TWOMAN_RULE_FEATURE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_LEVELS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_LEVELS_PER_CARDHOLDER","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_READERS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MONITOR_POINTS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONTROL_POINTS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MONITOR_POINT_GROUPS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INTERFACE_COUNT_PER_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PIN_DIGITS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARD_BITS_SIZE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PRECISION_ACCESS_LEVELS_PER_CARDHOLDER","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INPUTS_PER_ZONE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_DEVICE_OR_INTERFACE_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_CHANNEL_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ELEVATOR_CAB_READER_SHUNTED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SUPERVISED_F2F_WITH_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POWER_INPUT_MEANING","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INVALID_DEBOUNCE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WIRING_TEMPLATE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_PASSWORD_CHANGE_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_SOME_REX_IN_OR_OUT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_PLAIN","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_CRYPTED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_SIGNED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_CRYPTEDSIGNED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COMMUNICATIONMODE_RESERVED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_INVALID_INPUT_CONFIGURATION","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_SHARED_MERCURY_ZONE_INPUT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_EXPIRATIONMODE_WHEN_NOT_USED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_NUMBER","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_INTENANCE_ON","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_TYPE_NAME_ZONE_MAINTENANCE_OFF","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_REVERT_OUTPUT_BEHAVIOR_INACTIVE_TROUBLE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OUTPUT_BEHAVIOR_NORMAL_COMPLEMENT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACTIVATE_ACTION_ON_DISARMED_TROUBLE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SYNERGIS_SUPPORT_LOGS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ENABLE_UNIT_SUPPORT_LOGS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DISABLE_UNIT_SUPPORT_LOGS","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_BUS_GRACE_PERIOD_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_UNLOCKING_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ZONE_ARMING_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESS_LEVEL_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_CREDENTIAL_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_DOOR_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_READER_COUNT_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_WEBSERVICE_VERSION_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_EP_ACCESSRULE_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_MREP_ACCESSRULE_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_MASTER_CONTROLLER_NOT_RUNNING","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_NO_INPUT_SELECTED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AT_LEAST_ONE_IN_OUT_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SECUREMODE_DISABLED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SECUREMODE_INVALID_FIRMWARE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_UNSECURE_PROTOCOLS_ENABLED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_VERTX_SSL_PROTOCOL_DISABLED_SECUREMODE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_EXCEPTION_DETAILS_WITH_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE_DEFAULT_USER_INFO","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_VERTX_SECUREMODE_MUST_BE_ENABLED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_ATLEAST_TWO_PERIMETER_DOORS_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ROUTER","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_LOCK_NUMBER","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_DOOR_LOCK_NUMBER_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_READER_SECURED_OSDP","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_INTERFACE_MODULE_ROUTER_CONFLICT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CUSTOM_OSDP","Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_FETCHING_FROM_DIRECTORY","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_READER_OSDP_SECURE_STATUS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_RIBBON_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ANTIPASSBACK_EXEMPTION_IS_NOT_SYNCHED","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_MISSING_DISCOVERY_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DOOR_MAXIMUM_DELAY_INVALID","Genetec_AccessControl_Resources_RE_L_S_STE_ERROR_UNIT_EXTENSION_NOT_REACHABLE","Genetec_AccessControl_Resources_RE_L_S_STE_ACCESS_CONTROL_SCHEDULE_NOT_SUPPORTED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_ZONE_SINGLE_IN_OUT_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_FAILOVER_DATABASE_LOCALADDRESS","Genetec_AccessControl_Resources_RE_L_S_STE_DIAGNOSTIC_ACCESSMANAGER_ROLES_SYNERGIS_NODISCOVERYPORTS","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_IOZONE_MULTIPLEUNITS_NOPEERTOPEER","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_REASON_NAME_ACCESSPOINT_MAXOCCUPANCY","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NON_ZERO_TIMEOUT","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_INVALID_USERNAME_OR_PASSWORD","Genetec_AccessControl_Resources_RE_L_S_STE_EVENT_ASSET_ON_WIRELESS_LOCK","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SAS_INPUT_ON_DIFFERENT_UNIT_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_WITH_MAXOCUUPANCY_MULTIPLEUNITS_NOPEERTOPEER","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_NO_UNLOCKING_SCHEDULES","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_AREA_WITH_ANTIPASSBACK_MULTIPLEUNITS_NOGLOBALANTIPASSBACK","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_REACHED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_MAXOCCUPANCY_ON_AREA","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SETTING_IS_NOT_SYNCHED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_DESC","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_PASSED","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_WARNING","Genetec_AccessControl_Resources_RE_L_S_STE_HEALTHREPORT_UNIT_UNLOCKING_TIMEZONE_INTERVALS_FAILED","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATFASCN_75BIT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATFASCN_200BIT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CARDFORMATCSN_32BIT","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AGENCY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_SYSTEM","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ICI","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_PI","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OC","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_OI","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_POA","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LRC","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_RAW","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCERTIFICATE_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_NOGATEWAYCERTIFICATE_MESSAGE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_NOGATEWAYCERTIFICATE_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_EVENTPOLLING_OK","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_EVENTPOLLING_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCOMMUNICATION_OK","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_GATEWAYCOMMUNICATION_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_OK","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_ERROR","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_UNITCONFIGURATIONREPORTED_ERROR_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_ONLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_OFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_SOFTWIRE_OFFLINE_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TOGGLEOUTPUTNOTSUPPORTED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TOGGLEOUTPUTNOTSUPPORTED_DETAILS","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_SYNERGISSAAS_TENANTALREADYLINKED","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_STRICT_ANTIPASSBACK_MAINTENANCE_MODE_ON","Genetec_AccessControl_Resources_RE_L_S_STE_WARNING_REPORTING_SUBSYSTEM_NOT_RUNNING","Genetec_AccessControl_Resources_RE_L_S_STE_TIMED_APB_ONEDOORONEENTERINGREADER","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MERCURY_PORT_1","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_CANNOT_ENROLL_ACCESSCONTROLUNIT_BECAUSE_CLOUDAGENTVERSION","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_WARNING_SYNERGIS_P2P_TOO_MANY_UNITS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DIP_SWITCH","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESS_CONTROL_INTELLIGENT_CONTROLLER_DIALECT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_PIM400_DOOR_NUMBERS_CANT_OVERLAP_ON_SAME_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_CANNOT_HAVE_MORE_9_PIM_ON_SAME_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MERCURY_CANNOT_HAVE_GAETWAY_AND_MR51E_ON_SAME_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MSACS_DOWNSTREAM_ADDRESSES_SHOULD_BE_UNIQUE","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_MSICS_CANNOT_HAVE_MORE_THAN_2_MSCACS","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_EP_MSACS_MISCONFIGURED","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_MERCURY_CANNOT_HAVE_DOWNSTREAM_DEVICES_FROM_DIFFERENT_MANUFACTURERS_ON_SAME_PORT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_DOOR_LOCK_NUMBER_170","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INVALID_CERTIFICATE","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MISSING_ECM_PLUGIN","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ACCESSMANAGER_ROLES_MAXUNITCOUNTREACHED","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_ACCESSMANAGER_ROLES_APPROACHINGMAXUNITCOUNT","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_SYNERGIS_P2P_PASSWORD_NOT_SUPPORTED","Genetec_AccessControl_Resources_RE_L_S_STE_TASK_REPORTQUERY_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_TASKSHORTDESC_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_UNIT_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_DEVICE_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_ACCESSPOINT_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_LATESTEVENT_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TOTALEVENTS_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_TOTALDELAY_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_AVERAGEDELAY_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MINDELAY_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_MAXDELAY_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTBELOW_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTBETWEEN_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNTABOVE_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNT4_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_COUNT5_UNITPROPAGATIONDELAY","Genetec_AccessControl_Resources_RE_L_S_STE_PRIVILEGE_UNITPROPAGATIONDELAYREPORT","Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_UNIT_PROPAGATIONDELAY_REPORT","Genetec_AccessControl_Resources_RE_L_S_STE_PRIVILEGE_SHUNT_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_PRIVILEGE_SHUNT_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_TOOLTIP_SHUNT_UNSHUNT_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_ALL_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_DOOR_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_ENTRY_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_LOCK_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_MANUAL_STATIONS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_SHUNT_REQUEST_TO_EXIT_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_ALL_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_DOOR_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_ENTRY_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_LOCK_SENSORS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_MANUAL_STATIONS","Genetec_AccessControl_Resources_RE_L_S_STE_ACTION_UNSHUNT_REQUEST_TO_EXIT_INPUTS","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_INPUTS_SHUNTED","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_WARNING_UNITOFFLINE","Genetec_AccessControl_Resources_RE_L_S_STE_LABEL_CONFIRM","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MAC_ADDRESS_LENGTH","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_MAC_ADDRESS_HEX_ONLY","Genetec_AccessControl_Resources_RE_L_S_STE_MESSAGE_ERROR_INTERFACE_MODULE_DOOR_LOCK_NUMBER_SHOULD_BE_UNIQUE","Genetec_Sentinel_Resources_RE_T_S_STE_DATASTORE_APP_NAME","Genetec_Sentinel_Resources_RE_T_S_STE_SECURITYDESK_APPNAME_SHORT","Genetec_Sentinel_Resources_RE_T_S_STE_WD_APP_NAME_SHORT","Genetec_Sentinel_Resources_RE_T_S_STE_LICENSE_AUTOVU_MANAGER_GEOCODER","Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_COULD_NOT_CONNECT_TO_SHARP","Genetec_Sentinel_Resources_RE_T_S_STE_SERVICE_DISPLAY_NAME_SERVER_SERVICE","Genetec_Sentinel_Resources_RE_T_S_STE_DIAGNOSTICS_WARNING_DUPLICATE_LIVE_PORT_MESSAGE","Genetec_Sentinel_Resources_RE_T_S_STE_DIAGNOSTICS_ERROR_PORT_DETAILS","Genetec_Sentinel_Resources_RE_T_S_STE_TOOLTIP_PRIVILEGE_CONFIGTOOL_APPNAME_SHORT","Genetec_Sentinel_Resources_RE_T_S_STE_CALCULUS_INPUT","Genetec_Sentinel_Resources_RE_T_S_STE_TOOLTIP_PRIVILEGE_GUS_APPNAME_SHORT","Genetec_Sentinel_Resources_RE_T_S_STE_GUS_APPNAME","Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_SHARP_BELONGS_TO_ANOTHER_ROLE","Genetec_Sentinel_Resources_RE_T_S_STE_MESSAGE_INFO_COPYRIGHT","ActivityEvent","delimiter","isSameDay","textDisplay","ActivityEventService","_incidentService","_locationService","_priorityService","_userService","_translateService","_ignoredInitialValue","isAccessPointEvent","getRelatedAlarmGuid","AlarmId","getRelatedAlarmInstanceId","_unavailableInformation","getActivityEvents","buildActivityEventForIncident","createdEvent","instigators$","buildInstigatorsObs","commentHistory","buildCommentHistory","ownershipHistory","buildOwnershipHistory","disabledStateHistory","buildDisabledStateHistory","recipientNameById$","buildRecipientsMap","forkJoin","instigators","recipientNameById","instigatorName","generateStateChangedEvent","generateRecipientAlteredActivity","generateCreatedActivity","generatePriorityChangedActivity","generateLinkedActivity","generateUnlinkedActivity","generateCommentAddedActivity","generateCommentChangedActivity","generateCommentDeletedActivity","generateLocationChangedActivity","generateDescriptionChangedActivity","generateExternalIdChangedActivity","generateIncidentTypeChangedActivity","generateOwnershipChangedActivity","generateLocationClearedActivity","generateNoteAddedActivity","generateProcedureStepAnsweredActivity","generateDisabledStatesChangedActivity","generateExternalEventAggregatedActivity","determineCategory","activityEvents","determineDelimiter","stateEvent","translatedString","eventCategory","userActionLabel","systemActionLabel","commentsLabel","displayableEvents","isYesterday","isThisWeek","isThisMonth","isLastMonth","isThisYear","stringId","sortedEvents","ownershipEvents","userIds","flatMap","generateDispatchActivity","usersString","dispatchToSupervisorsOnly","Everyone","Supervisors","activityString","generateForwardActivity","generateTransferActivity","generateAutoDispatchActivity","procedureAnsweredEvent","translateString","steps","o","recipientEvent","activity","AutoDispatch","incidentCreatedEvent","priorityEvent","linkedEvent","linkedId","linkedIds","unlinkedEvent","unlinkedId","commentAddedEvent","commentChangedEvent","arrayLength","previousComment","commentDeletedEvent","locationChangeEvent","descriptionChangedEvent","externalIdEvent","incidentTypeChangeEvent","ownershipEvent","previousOwner","currentOwner","instigatorIsNewOwner","instigatorWasOwner","locationClearedEvent","noteAddedEvent","disabledStatesEvent","pastDisableStates","enabledStates","isEnablingEvent","messageStates","eeaEvent","relatedAlarmGuid","relatedAlarmInstanceId","locationGuid","triggeringEntityGuid","translateExternalEvent","stringKey","getResourceId","fullString","getResourceString","getStringKey","locationEntityName","activityEvent","alarmEntityName","triggeringEntityName","sourceEntityName","MissionControlContentTypes","incidentList","overview","linkedIncident","LinkedIncidentController","getFilteredLinkedIncidents","incidentFilter","LinkedIncidentService","getLinkableIncidents","getLinkedIncidents","incidentIds","MCPrivileges","triggerIncidents","editIncidentPriority","takeOwnership","overrideOwnership","forwardIncident","transferIncident","modifyReportedIncidents","editIncidentDescription","addComment","MCCommandType","MCCommandBase","successMessage","commandType","LinkIncidents","LinkIncidentCommand","incidentToLink","Type","Ids","McNotificationService","toastNotificationService","notifyFromCommandResponse","notifyWarning","notifySuccess","notifyError","primaryTextKey","secondaryTextKey","toastNotify","IncidentCommandService","_notificationService","isSuccessStatusCode","tryExecute","UnlinkIncidents","UnlinkIncidentCommand","incidentsToUnlink","McProcedure","Revision","ProcedureService","getProcedure","procedureGuid","IncidentEventService","getAllFromMcClient","getIncidentEvent","getAllIncidentEvents","IncidentSelectionService","_incidentEventService","_procedureService","createSelectedObservable","selectedIncident","selectedIncident$","_selectedIncident$","selectIncident","incidentEventsPromise","procedurePromise","handleSelectedEvent","oldEventList","handleSelectedStateChange","handleSelectedRecipientChange","handleSelectedIncidentTypeChange","LinkedIncidentFilterComponent","_incidentSelectionService","hiddenFilter","incidentFilterChanged","ComboboxPosition","timeFrameList","sameIncidentType","sameLocation","selectedTimeRange","anyTime","_sameIncidentType$","_sameLocation$","_isFilterVisible$","_dateTimeFrom$","_lastHour","_lastDay","_lastWeek","_lastMonth","onSameIncidentTypeChanged","onSameLocationChanged","isFilterVisible","onTimeFrameChanged","IconService","DefaultIncidentIconID","mcClient","icons","defaultIcon","idGuid","IconService_1","isDefaultIncidentIcon","IncidentIconComponent","incidentSubject","incident$","icon$","LocationNamePipe","noLocationTranslatedName","unavailableInformationTranslatedName","defaultIfEmpty","TimezoneConversionPipe","utcTimezoneId","traceErrorIfNull","formatIana","StateNamePipe","stateService","IncidentCardComponent","PriorityNamePipe","priorityService","ctx_r23","LinkedIncidentWidgetComponent","_privilegeService","_linkedIncidentService","_incidentCommandService","_contentProviderService","_modalService","targetLinkIncident","targetUnlinkIncident","linkIncidentModalId","unlinkIncidentModalId","hasLinkIncidentPrivilege","hasModifyReportedIncidentPrivilege","linkDisplayId","unlinkFlavor","unlinkMessage","timeList","_linkedIncident$","_requestingContext","_selectedIncidentDisplayId","_incidentFilter$","_searchDisplayId$","canLinkIncident","selectedDisplayId","linkedDisplayIds","canUnlinkIncident","showLinkIncidentModal","resetFilter","showModal","closeLinkIncidentModal","closeUnlinkIncidentModal","linkIncidentAction","linkIncident","unlinkIncidentAction","unlinkIncident","linkedIncidents$","linkableIncidents$","selectLinkIncident","selectUnlinkIncident","navigateToIncident","updateIncidentFilter","updateSelectedIncident","hasIncidentId","hasContextId","showUnlinkIncidentModal","unavailableInformation","targetIncidentDisplayId","blur","LinkedIncidentWidgetComponent_1","AddComment","AddCommentCommand","incidentCommentFirstCharRegex","incidentCommentRegex","incidentCommentValidator","invalidFirstChar","invalidChars","regex","appendRegexMatches","IncidentCommentComponent","multiline","autofocus","placeholder","valueAccessor","validator","setValidators","onCommentChange","maxlength","customError","QuickActionWidgetComponent","_selectionService","hasCommentPrivilege","addCommentModalId","_selectedIncidentId","openModal","closeModal","addCommentAction","stateName$","getStateName","ownerName$","getOwnerName","data$","stateName","ownerName","translatedMessage","translatedPrivilegeName","incidentIdString","QuickActionWidgetComponent_1","Category","CategoryApiService","getCategory","getCategories","IncidentType","isManuallyTriggerable","categoryId","incidentType","IsManuallyTriggerable","CategoryId","IncidentTypeService","fetchIncidentTypes","_incidentTypes$","getIncidentTypes","getIncidentType","ChangeDescription","ChangeDescriptionCommand","ChangeExternalId","ChangeExternalIdCommand","ChangePriority","ChangePriorityCommand","SourceIdsNamePipe","incidentLocationService","_none","LocationAreaNamePipe","UserNamePipe","defaultName","defaultTranslateName","OverviewWidgetComponent","selectedEventTypes","_selectedEventTypes$","_incidentTypeService","_incidentLocationService","_categoryApiService","_mcUserService","maxTextLength","isOwner$","incidentDescriptionInput","incidentExternalIdInput","incidentPriorityName","incidentPriorityInput","prioritiesList","hasEditIncidentDescriptionPrivilege","hasEditIncidentExternalIdPrivilege","hasEditIncidentPriorityPrivilege","editing","incidentPriorityId","_previousDescription","_previousExternalId","_previousPriorityId","hasChanged","hasDescriptionChanged","hasExternalIdChanged","hasPriorityChanged","priorityText","sourceIds$","locationAreaIds$","category$","initializePriorities","toggleEditing","saveChangesClick","externalIdText","externalIdCommand","descriptionCommand","priorityCommand","allSettled","OverviewWidgetComponent_1","McSetting","eventFilter","McSettingNameError","McSettingTypeError","McSettingService","doesSettingExist","settingName","getEventFilter","objectToStore","IncidentRecipientModalComponent","seletedRecipients","recipientChangeAction","onRecipientChangePressed","onRecipientChange","recipientSelection","FilterOwnerMode","FilterOwnerComponent","ownerBrowserFilter","OwnedByMe","onUserChange","User","entityCombo","INCIDENT_LOCATION","IncidentFilterComponent","_filterCoordinatorService","incidentFilterChange","locationEntityTypes","emitFilter","onReloadPriorities","onReloadStates","onReloadTypes","convertToFilterItem","priorityFilterItem$","stateFilterItem$","typeAvailableFilterItem$","typeFilteredFilterItem$","onSearchTypeChange","typeFilterChange","applyCheckedListItemFilters","priorityFilterChange","stateFilterChange","onDateChange","dateFilter","onEntityChange","applyIdListFilter","onOwnerChange","owners","filterKey","filterItems","MCFeature","missionControlfeature","ModalGuids","ChangeState","ChangeStateCommand","ForwardIncident","ForwardCommand","Recipients","ReleaseOwnership","ReleaseOwnershipCommand","TakeOwnership","TakeOwnershipCommand","TransferIncident","TransfertCommand","IncidentActionService","closeContextMenu$","getActions","createItem","createHandler","pairwise","createChangePriorityItem","createTakeOwnershipItem","createReleaseOwnershipItem","createChangeStateItem","createForwardItem","createTransferItem","priorityItems","menuItem","isIncidentAlreadyOwned","stateTransitions","stateItems","executeForward","executeTransfer","MissionControlContextIds","IncidentMapSelectorService","_mapService","_currentDisplayedIncident$","_onIncidentClose","_activeContentId","currentDisplayedIncident$","hideWidgets","setMapSidePaneSelection","getAssociatedMap","toRecord","keySelector","valueSelector","TriggerIncident","TriggerIncidentCommand","IncidentTypeId","TriggerIncidentModalComponent","incidentTypeService","incidentCommandService","incidentCategoryApiService","selectedLocation","selectedIncidentTypeId","selectedCoordinates","canUserTrigger","incidentTypeModalBrowserFilter","TreeDensity","_nameFilter$","_skipCoordinateReset","availableTypes","triggerAction","onTriggerClick","categories$","incidentTypes$","incidentTypes","elements$","elementImages$","elements","requests","pairs","incidentTypeTreeItems$","elementImages","buildTreeItems","onSearchInputChange","initializeLocation","isGeoLocalised","geoCoordinates","onSelectedIncidentTypeChange","isNewValudIncluded","stopImmediatePropagation","onLocationChanged","getParentId","elementsRecord","displayItems","shouldIncludeItem","displayItem","LocationIconPipe","IncidentTemplateStyle","IncidentOrientation","IncidentComponentParameter","_incidentOrientation","_incidentTemplateStyle","_infiniteScrollContainer","infiniteScrollContainer","incidentTemplateStyle","Card","incidentOrientation","IncidentsListComponent","_incidentActionService","_incidentMapSelectorService","_contextMenuFactory","_viewContainerRef","stateEnum","hasTriggerIncidentPrivilege","isScrollEnabled","incidentActions$","contextPosition","isListRendered","incidentComponentParameter","savedScrollPosition","containsNewData","allLabels","currentSortingOrientation","incidentTable","supportedSorting","STE_LABEL_ABBREV_IDENTIFIER","STE_LABEL_NAME","STE_LABEL_INCIDENT_LOCATION","STE_LABEL_INCIDENT_TRIGGERINGTIME","STE_LABEL_INCIDENTSTATE","STE_LABEL_PRIORITY","eventModelUpdated","eventVirtualColumnsChange","arrangeSorting","eventGridSizeChange","gridApi","sizeColumnsToFit","toTranslate","incidentServiceState$","nonEmptyLocationIds","incidents$","saveScrollPosition","listOrientation","tables","addEventsForIncidentTable","components","nameTemplate","locationNameTemplate","timeTemplate","stateNameTemplate","priorityNameTemplate","ownerNameTemplate","ngAfterViewChecked","arrangeScrollbar","onTriggerIncidentClick","triggerIncidentModalId","removeFocusFromActiveElement","onSelectItem","onIncidentFilterChange","onIncidentSortingChange","toggleOrientation","iconElem","iconElement","currentSortingParameter","onScrollDown","onScrollUp","incidentListContainer","openContextMenu","preventDefaultContext","itemList","forEachNode","selectThisNode","innerText","labelCell","sortLabeltemplate","sortingLabelTemplate","innerHTML","offsetHeight","IncidentsListComponent_1","McContentNames","McActionService","_audioService","handleEvent","playSound","IncidentsTrayComponent","bottomContextService","actionService","mcEventReceiver","isBottom","incidentListContentType","toggleIncidents","incidentListRequest","incidentListContent","MissionControlCommands","IncidentsTrayComponent_1","IncidentCommandProvider","triggerIncident","isTriggerIncidentAvailable","executeTriggerIncident","IncidentCountService","getNewIncidentCount","joinedStates","IncidentNotificationComponent","_eventService","initializingEvent","targetedEvent","incidentCount$","IncidentNotificationComponent_1","AnswerProcedureStep","AnswerProcedureCommand","OptionId","SECONDS_IN_MILLISECONDS","MINUTES_IN_MILLISECONDS","HOUR_IN_MILLISECONDS","DAYS_IN_MILLISECONDS","totalMilliseconds","DsopConstant","ProcedureWidgetComponent","isCurrentStepRoot","ttrDetails","skipReason","restartReason","manualCommentOpen","procedureMenuOptions","ttrColumns","completedLabel","isReadonly","startId","STEP_PROCEDURE_BEGIN","loadingId","interruptedId","endId","STEP_PROCEDURE_COMPLETED","loadingStep","_currentStep$","_hadFirstStateChangeToInProgress","_lastKnownStepId","_hasOwner","_isOwner","_isReverting","_skipStepModalId","_restartModalId","_ttrModalId","startStep","interruptedStep","endStep","_steps","isInProgress","isEnd","isInterrupted","isProcedureStarted","_incident","isProcedureInterrupted","isProcedureCompleted","isResetCommandVisible","toggleSkipModal","toggleRestartModal","toggleTTRModal","closeTTRModal","currentStepDisplayed$","skipAction","restartAction","restartProcedure","closeAction","cancelRestart","ttrOkAction","ttrDetails$","handleUpdate","currentStepOptionsAsGenItem$","elapsedTimeTemplate","cumulativeTimeTemplate","back","executeCommandOrThrow","Previous","revertToLatest","Skip","onOptionClicked","optionsPopup","toggleOptions","toggleContextMenu","loseFocus","Reset","updateContextMenu","buildTTRDetails","eventsOrderedByProcessTime","startedTime","previousElapsedTime","processTime","cumulativeTime","elapsedTime","latestKnownStep","getStepName","stateChangedEvents","nextStep","processTimeSortedEvents","startEvent","endEvent","ProcedureWidgetComponent_1","ActivityWidgetComponent","_mcSettingService","_activityEventService","_incidentId","cachedSelectedEventTypes","onEventFilterSelectionSaved","onEventFilterSelectionCancelled","trackById","Incident","Person","Message","LogFile","targetedIncident","_filteredIncidentEvents$","filteredIncidentEvents$","refreshEventTypesFromSettings","eventFilterChange","selectEventType","toggleEventFilterSelection","eventFilterModal","ActivityWidgetComponent_1","IncidentCustomHeaderId","IncidentSidePaneHeaderComponent","isHeaderInfo","iconID","IncidentSidePaneHeaderComponent_1","MissionControlModule","incidentCommandProvider","AsyncPipe","DatePipe","HitClient","hitRule","hitRuleId","processHitRule","IHitRule","ReadClient","readInformation","readId","processReadInformation","ReadInformation","getReadImages","processGetReadImages","ReadImages","PlateRead","PlateReadSource","isManual","contextImage","lprImage","ReadLocation","plateRead","LprContentFields","LprContentTypes","HitEvent","ReadEvent","ReadEventContent","ReadGeneralInformationComponent","generalInformation","addGeneralEntryFromEntityWithTitle","getEntityName","addGeneralEntry","patroller$","getEntityObservable","unit$","formattedTimestamp","translatedKey","AdditionalInformationEntry","information","PlateReadWidgetComponent","readClient","additionalInformation","initializeFields","ReadId","readTimestamp","readSourceId","readImages$","PlateReadWidgetComponent_1","ReadLocationWidgetComponent","readLocations","ReadLocations","addAndZoomToReadLocations","addReadLocationsToMap","fitMapBoundsToReadLocations","readLocation","latitudes","longitudes","southWest","northEast","ReadLocationWidgetComponent_1","HitEventWidgetComponent","hitClient","hitFields","initializeHitFields","LprRuleId","hitRule$","HitType","HitEventWidgetComponent_1","LprModule","ContentServicesProviderService","contentServices","getService","services","removeService","indexOfService","TilesModule","DndModule","TilesModule_1","BookmarkComponent","protectVideo","createBookmark","keyPressed","onMessageChanged","RecordingState","OffLocked","OnLocked","OnAboutToStop","Problem","CameraBaseComponent","cameraFields","cameraRunningState","isRecording","isRecordingState","recordingText","statusText","cameraEntity","cameraCustomIconId","isMaintenanceModeActive","CameraEntityStateComponent","CameraEntityStateComponent_1","CameraActionsWidgetComponent","CameraActionsWidgetComponent_1","CameraEventsWidgetComponent","twentyFourHoursValidator","startTimeKeyOrControl","endTimeKey","twentyFourHours","removeErrors","timeRangeValidator","controlOrStartTime","CameraEventsWidgetComponent_1","ExportVideoComponent","endTimeError","formats","fromAuthorizationComponent","hasExportPrivilege","timeFormatInFilename","durationSubject","duration$","thumbnailSubject","thumbnail$","defaultFormat","formatsDefinition","G64","G64x","MP4","ASF","formRawValue","ExportVideoAuthorizationComponent","exportVideoForm","getFormats","setEncryptionKeyValidators","computeDuration","markAsUntouched","updateThumbnail","errorMessageString","enableAuthorize","startTimeString","endTimeString","timeString","isNewDay","onAuthorize","authorized","formRawValues","onBack","exportVideoComponent","patchValue","entityInformationStringProducer","onUsernameChanged","userInput","GotoTimeComponent","translationService","isMilitaryTime","onCloseClick","CameraEventWidgetComponent","videoContent","CameraEventWidgetComponent_1","LcdPanelComponent","maxCharUntilOverflow","textValue","fontColorValue","backgroundColorValue","fontColor","bgColor","getStyles","shouldTextWrap","PtzPrivileges","allowBasicPtz","allowVideo","allowDigitalZoom","allowAudio","allowPtzLockOverride","allowSpecificCommands","allowChangeFocusAndIris","allowPresetsUse","allowEditPtzPreset","allowTogglePtzMenu","allowSetPtzAuxiliaries","allowUsePtzAuxiliaries","allowPatternsUse","allowLockPtz","hasAtLeastOnePtzPrivilege","HideableComponent","hideRequestSubject","hideCssClassSelector","rootWrapperElementSelector","condition","retrieveRootElement","hideComponent","showComponent","rootWrappingElement","SupportedCommands","InvalidCommand","StartZoom","StopZoom","StartPanTilt","StopPanTilt","SetPreset","ClearPreset","StartIris","StopIris","StartFocus","StopFocus","SetAuxiliary","ClearAuxiliary","StartPattern","StopPattern","ClearPattern","Flip","Enter","Home","MenuOn","MenuOff","MenuUp","MenuDown","MenuLeft","MenuRight","MenuNext","MenuPrevious","MenuStop","MenuCancel","MenuTextMode","SpecificCommand","Vcr","Eject","Record","Play","Fastfoward","NextFrame","PrevKeyFrame","GoToPosition","RunTour","RunSequence","SetPositionZero","GoToAbsolutePosition","GoToRelativePosition","GetPosition","MenuUpUp","MenuDownUp","MenuLeftUp","MenuRightUp","MenuUpDown","MenuDownDown","MenuLeftDown","MenuRightDown","Clear","First","MenuBank","MenuStart","MenuNumber","MenuExit","MenuScrollLeft","MenuScrollRight","MenuScrollUp","MenuScrollDown","OverrideLock","GoToNormalizedPosition","GoToImagePosition","StartPresetTour","StopPresetTour","LastCommand","supportsInvalidCommand","supportsStartZoom","supportsStopZoom","supportsStartPanTilt","supportsStopPanTilt","supportsGoToPreset","supportsSetPreset","supportsClearPreset","supportsStartIris","supportsStopIris","supportsStartFocus","supportsStopFocus","supportsSetAuxiliary","supportsClearAuxiliary","supportsStartPattern","supportsStopPattern","supportsRunPattern","supportsClearPattern","supportsFlip","supportsEnter","supportsHome","supportsMenuOn","supportsMenuOff","supportsMenuUp","supportsMenuDown","supportsMenuLeft","supportsMenuRight","supportsMenuNext","supportsMenuPrevious","supportsMenuStop","supportsMenuCancel","supportsMenuTextMode","supportsSpecificCommand","supportsVcr","supportsEject","supportsStop","supportsRecord","supportsPause","supportsPlay","supportsRewind","supportsFastfoward","supportsNextFrame","supportsPrevKeyFrame","supportsGoToPosition","supportsRunTour","supportsRunSequence","supportsSetPositionZero","supportsGoToAbsolutePosition","supportsGoToRelativePosition","supportsGetPosition","supportsMenuUpUp","supportsMenuDownUp","supportsMenuLeftUp","supportsMenuRightUp","supportsMenuUpDown","supportsMenuDownDown","supportsMenuLeftDown","supportsMenuRightDown","supportsAlarm","supportsSequence","supportsClear","supportsSet","supportsFirst","supportsMenuBank","supportsMenuStart","supportsMenuNumber","supportsMenuExit","supportsMenuScrollLeft","supportsMenuScrollRight","supportsMenuScrollUp","supportsMenuScrollDown","supportsLock","supportsOverrideLock","supportsGoToNormalizedPosition","supportsGoToImagePosition","supportsStartPresetTour","supportsStopPresetTour","supportsLastCommand","PtzControlsService","videoApiClient","defaultSupportedCommandsHex","lockingStateInformationSubject","ptzPrivilegesSubject","ptzPrivileges","iscontentReceived","contentSubject","content$","cameraEntitySubject","cameraEntity$","cameraCapabilitiesSubject","ptzPatternsSubject","ptzPresetsSubject","supportedCommandsHexSubject","supportedCommandsSubject","playerModeSubject","registerPlayerModeChangedCallback","getCameraEntityFromCache","checkForLockingStateInformation","ptzPatterns","ptzPresets","getZoomSpeed","getPtzPrivileges","getLockingStateInformation","getCameraCapabilities","getPlayerMode","getCameraPresets","getCameraPatterns","ptzTriggerLock","isPtzServiceProperlyInitialized","isPtz","ptzTriggerUnlock","ptzGoHomePosition","ptzGoToPreset","ptzRunPattern","patternNumber","setZoomSpeed","stopPtz","ptzStartPanTilt","ptzFocusIn","ptzSpeed","Far","ptzFocusOut","Near","ptzStopFocus","ptzIrisOpen","Open","ptzIrisClose","Close","ptzStopIris","getAllSupportedCommands","supportedCommandHex","subject","supportedCommandList","emptyCommands","getPtzLockingStateInformation","guidset","ptzLockOwnerAppObject","ptzLockOwnerObject","ptzLockOwner","ptzLockOwnerApp","currentLockingUserId","currentLockingUserAppId","lockingStateInfo","PtzControlsComponent","ptzControlsService","hideRequested","NUMBER_PAD_PRESETS_AMOUNT","PTZ_DEFAULT_SPEED","speedIconToUse","ptzPrivileges$","allSupportedCommands$","ptzCapabilities$","playerMode$","currentSelection","viewOptionsList","onContextMenuItemChange","hamburgerOptionsList","presetsNumpadDisabledState","patternComboBoxItemListSubject","presetsComboBoxItemListSubject","presetsNumpadItemListSubject","generateGenericPresetsTooltip","patternComboBoxItemList$","presetsComboBoxItemList$","presetsNumpadItemList$","vals","addActionsInHamburger","processCapabilities","toggleHamburgerMenu","hamburgerMenu","triggerHomePosition","unlockPtz","lockPtz","toggleSpeedMenu","speedMenuPopup","onSpeedSliderChange","currentSpeed","onUpArrowMouseDown","onDiagDownRightArrowMouseDown","onDownArrowMouseDown","onDiagDownLeftArrowMouseDown","onRightArrowMouseDown","onLeftArrowMouseDown","onDiagUpRightArrowMouseDown","onDiagUpLeftArrowMouseDown","onZoomInMouseDown","onZoomOutMouseDown","onAnyZoomMouseUp","presetNumber","onPresetSelectionChange","presetsComboBoxSelection","onPatternSelectionChange","patternComboBoxSelection","focusIn","focusOut","irisOpen","irisClose","lockCallback","unlockCallback","newOptionsList","addHomeMenuItem","addLockMenuItem","lockString","mapLockCallback","textKey","processPatterns","processPresets","patternAmount","patternsNoValueDropdown","patternsDefaultString","emptyDropdown","patternArray","patterns","amount","presetsNumpadArray","generateGenericPresetsDropdownItems","startingId","desiredAmount","presetDropdownArray","deactivateCorrespondingPresets","presetsBase","presetsAmount","userDefinedPresets","PtzControlsPluginComponent","PtzControlsPluginComponent_1","CameraHelper","CameraFeatureCapabilties","Trickling","Backup","Restore","EdgeTrickling","Thumbnails","Bookmarks","MotionSearch","DegradeVideo","BlockCamera","LiveVideo","Snapshot","LiveCache","VideoInfo","ProtectVideoFile","Transparency","Playback","NetworkTrace","Ping","Ptz","LockPtz","EnhancedPtz","PtzCoordinates","Lens","CustomIcons","CopyConfig","CameraColor","CameraStreams","Recording","VisualTracking","ArchiveStorageDetails","VideoPage","SystemStatus","RecordOnAuxArc","RecordOnEdge","ForensicSearch","Overlay","Encrypted","PtzConnectionShareable","DeniedRetrieveCloudArchives","CameraConfigurationReport","CameraEventReport","LocationEdit","CameraSwap","FeatureLast","LoopChangeEvent","ExportProgressEvent","WebAppTransport","_connectionReestablishedEvent","_connectionLostEvent","_inFlightQueries","_sessionId","_isWebSocket","_isOpen","_messageParser","_dispatcher","_socket","getHttpHeaders","internalSend","getTokenRetriever","setExportEventHandler","_exportHandler","setTimelinePartEventHandler","_timelinePartHandler","des","exportProgressPayload","Status","Progress","timelinePartPayload","arrayBufferToBase64","binary","WebAppTransportBuilder","getTransport","m_lastCommand","ThrottlingDelayInMS","queueCommands","processQueue","throttled","performance","heigth","VideoCorePlayer","_nextPlayerId","_playerId","renderingDimension","_timelineProvider","_webPlayer","_lastPlayerState","_htmlElements","loopEvent","onExportProgress","exportProgress","timelinePart","_cameraId","lastLoopingSeek","_isDisposed","Stopped","convertBlobToBase64","onFrameRenderedHandler","isReverse","safeSeek","onPlayerStateChangedHandler","_placeholder","_mediaGatewayService","startAsync","builder","cam","maintainSpeed","takeSnapshotAsync","imageData","putImageData","toBlob","getExportAsync","getThumbnailAsync","base64","ok","providerIds","VideoDiagnosticService","debugOverlayActivated$","debugOverlayActivated","debugOverlay","isDebugOverlayActivated","VideoPlayerComponent","parentContent","onParentMouseWheelHandler","freelookContent","freelook","isDigitalZoomEnabled","isGhost","tryGetCameraSubType","joystickService","restService","videoDiagnosticService","freeLookIsGripped","freeLookMousecapture","dotOpacity","supportPtz","allowLiveVideo","allowPlaybackVideo","displayVideo","isInPopup","wheelTimerInterval","wheelCumulativeDelta","wheelDeltaFactor","isWheelSpeedPending","unitToMouseWheelDeltaFactor","freelookFocused","isInSidePane","isPanoramic","actualVelocity","updateDisplayedStateDebounce","updateDisplayedState","onParentMouseWheel","onAudioAvailabilityChangedHandler","onAudioStateChangedHandler","onErrorStateHandler","errorState","InsufficientPrivilege","InsufficientCapability","LiveCapacityExceeded","PlaybackCapacityExceeded","UnsupportedEncoding","Mp4CodecNotSupported","NoTranscodingAllowed","ForbiddenTransformation","MissingCertificate","CantUsePrivateKey","DatabaseUpgradeRequired","RequestTimedOut","StreamNotFound","invalidate","onExportProgressHandler","onLoopChangedHandler","onStreamingConnectionStatusHandler","streamingState","Blocked","CameraNotRunning","onTimelinePartHandler","onPlayerModeChangedHandler","updatePtzSupport","onPlayerSpeedChangedHandler","displayPlayerState","getPlayerState","NoVideoSequenceAvailable","stateBackgroundColor","onDigitalZoomPositionChangedHandler","ptzStopPanTilt","toggleListen","entityContent","startPlayerAsync","wheelTimerId","playerSubscription","BeginReached","EndReached","AwaitingSynchronizedTime","WaitingForArchiverData","Stopping","InsufficientSecurityInformation","onMouseDoubleClick","getSelection","getVelocity","movePtz","onTimerWheelActivity","currentZoom","incrementZoom","clientSize","getClientSize","onGotFocus","onLostFocus","xx","yy","div","increment","joystickCommandData","extract","seekTimeValue","updatedCameraEntity","getCameraEntityCache","displayedState","VideoPlayerComponent_1","VideoButtonsLeftBar","VideoButtonsRightBar","VideoSpeedPipe","speedSymbol","videoSpeedFractions","speedFraction","VideoControlsComponent","MinDate","canShowPlayback","isPlaybackCapabilitySupported","hasPlaybackVideoPrivilege","moreMenuItemSourceInternal","newMoreMenuItemSource","destroyMoreMenu","tilesService","gotoTimeModalId","isSlowMotion","isListening","isWithinTile","isCameraStreaming","canListen","relativeTimeText","leftBarVisibleButtons","rightBarVisibleButtons","hasLiveVideoPrivilege","hasBasicPtzPrivilege","canAddBookmark","canSaveSnapshots","speeds","forward","normalMotion","slowMotion","backward","leftBarAllowedButtons","leftBarButtonsPriority","leftBarAdditionalButtons","rightBarAllowedButtons","rightBarButtonsPriority","rightBarAdditionalButtons","BUTTON_WIDTH","lastRightBarAvailableWidth","lastLeftBarAvailableWidth","computeButtonsVisibilityDebounced","hasStartRecordingPrivilege","hasExportVideoPrivilege","hasBookmarkPrivilege","hasSaveSnapshotsPrivilege","playerStateChangedSubject","recordingStates","isRecordingLocked","recordingStatesSubject","moreItemMenuClosed","onPlayerAudioAvailabilityChangedHandler","computeRightButtonsVisibility","onPlayerAudioStateChangedHandler","recordingStates$","computeButtonsVisibility","updateIsCameraStreaming","handleGlobalKeyboardEvent","downloadAsync","fastForward","rewind","takeSnapshot","audioStreamInId","updateFromCameraCapabilities","initializeButtons","entityTimezone","initTimeline","updateRecordingState","setMoreMenuItemSource","parentHost","togglePlayingState","switchToNearLive","changeSpeed","toggleExpandWidget","jumpBackAsync","toGo","jumpForwardAsync","lastReceivedFrame","addBookmark","gotoTime","gotoTimeComponent","gotoTimeModal","handleGotoTime","defaultFilename","defaultExtension","replaceAll","FileSaver","saveSnapshotInfo","buildMoreMenu","togglePtzControls","generateUniqueKeyForContent","newPopup","ptzPopupTemplate","ptzPopup","onHidePtzRequested","isForward","speedDirectionValues","newSpeed","speedIndex","timeline","tokensString","units","model2","exportVideoModal","toggleRecording","getRecordColor","getRecordIcon","getRecordTooltip","resourceId","newFrameTime","relativeTime","VideoControlsComponent_1","bookmarkCapabilities","playbackCapabilities","onMoreMenuItemClick","enumToArray","enumToConvert","getColor","getText","computeLeftButtonsVisibility","getVisibleAndAdditionalButtons","visibleButtons","additionalButtons","moreMenuCloseSubscription","getAllowedButtons","allowedButtons","buttonsByPriority","availableWidth","buttonByPriority","getLeftBarButtons","getRightBarButtons","PlayOrPause","JumpBack","JumpForward","GoLive","Expand","PTZControls","CameraCommandProvider","createCameraCommandDescriptor","isAddBookmarkAvailableAsync","extractCameraEntity","bookmarkCap","isExportVideoAvailableAsync","isStartStopRecordingAvailableAsync","configureStartStopRecordingInvalidatesAsync","executeAddBookmark","executeExportAsync","executeStartStopRecording","canStartStopRecordingAsync","getStartStopRecordingDisplayAsync","getRecordingStateAsync","executeAddBookmarkAsync","speficicData","extractAddBookmarkSpecificData","startedRecording","bookmarkComponent","startTimestamp","preStartTimestamp","executeStartStopRecordingAsync","argsData","isSaveSnapshotAvailableAsync","ExpandWidgetComponent","isExpanded$","registerVideoCommands","isPortalEnabled","ExpandWidgetComponent_1","VideoModule","cameraCommandProvider","VideoModule_1","NotificationsChangedEvent","NotificationsService","messageType$","notificationsClient","notifications","notificationsMap","refreshNotifications","nt","setMainNotification","onNotificationsChangedEvent","maxPriorityValue","newItems","UpgradeStartedEvent","UpdaterService","isUpgrading","stateChanged","isTimedOutValue","messageValue","ReconnectionDelayInMS","MaximumUpgradeDelayInMS","isTimedOut","isTimedOut$","onUpgradeStartedEvent","upgradeTimestamp","onStateChanged","tryReconnectAsync","NavBarService","isPinned$","isPinned","isOpened$","isOpened","isFocused$","isFocused","skipHoveringCheck$","skipHoveringCheck","isPinnedLocalStorage","setIsOpenedState","setIsPinnedState","setPinnedAndStore","toggleIsPinnedState","setIsFocusedState","setSkipHoveringCheck","NavBarComponent","activatedTask","navBarService","hasAccessControlGeneralFeatureFlag","navBarExtensionPlugins","wasPinned","groupedSearchResults","resetNavbarAnimation","clearMainSearchText","isSearching","onClickAnywhere","specifiedElement","burgerMenuButton","isClickFromMenuBurger","dispatchIsOpenedStateMutation","mainSearch","onCancelMenu","onIsSearchingChange","onSearchClick","onTaskSelected","selectedTask","subTasksPopup","onSubTaskClick","onSearchResultsChange","onSidePaneOpenChange","onTogglePin","pinMouseEnter","pinMouseLeave","focusResultSection","resultSection","onMainSearchFocus","hasParams","hasSubTask","AppSidePaneComponent","ChangePasswordNotificationService","milsInDay","lastTimeModified","openPasswordNotificationModalIfNeeded","verifyPasswordNotificationPeriod","daysRemaining","getRemainderToExpirePassword","userSysConfig","notificationPeriod","notificationWindow","LoginComponent","changePasswordNotificationService","sessionClient","isWaitingForReload","hasCancelled","waitOnOpenId","encodedRedirectUri","onSignIn","LoadingScreenComponent","updaterService","showProgressEllipsis","showSpinner","isReconnecting","refreshMessage","progressEllipsis","AppComponent","notificationsService","contextMenuReference","mainTrayPlugins","secondaryTrayPlugins","touchEventHandler","trayPlugins","isDevMode","onOpenOptionsClicked","onShowSecondaryTrayClicked","secondaryTrayPopup","onHamburgerMenuClick","TaskPluginComponent","useFirstAvailableTask","taskPlugin","SaveTaskComponent","webAppTaskTypeId","partitionFeatureGuid","setPartitionEntityCombo","taskClient","taskContext","canSave","destructiveAction","publicTaskDisabled","privateTaskDisabled","showPartitionPicker","taskName","existingTaskItems","partitionFeatureEnabled","evaluateSaveState","onSaveClick","saveRequest","SaveTaskComponent_1","taskVisibility","Private","Public","canSelectPartition","saveButtonText","refreshSaveState","onDestinationChange","isPrivate","refreshPartitionPickerVisibility","queueRefreshSaveState","taskItems","privateTaskItems","publicTaskItems","newChild","alreadyVisited","onSelectedTaskChange","fragments","searchPath","onNameChange","onSelectedPartitionChanged","partitionRequired","CannotBeSaved","wouldCreate","WouldCreate","WouldOverwrite","AuthGuard","canActivate","LowerCaseUrlSerializer","DefaultUrlSerializer","routes","pathMatch","outlet","AppRoutingModule","UrlSerializer","RouterModule","AuthInterceptor","knownAuthHeaders","intercept","headersDictionary","Accept","clonedReq","setHeaders","thing","temporaryValue","randomIndex","currentIndex","maxBy","minBy","guidRegExp","fieldsToCheck","baseHrefFactory","_basePath","_window","basePathOnly","AppModule","bootstrap","LOCALE_ID","HTTP_INTERCEPTORS","APP_BASE_HREF","developmentMode","compatibility","strictContentSecurityPolicy","NgxsEmitPluginModule","NgxsSelectSnapshotModule","NgxsReduxDevtoolsPluginModule","BrowserModule","HttpClientModule","FormsModule","GenLanguageModule","missingTranslationHandler","MissingTranslationHandler","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","moduleRef","enableDebugTools","webpackAsyncContext","__webpack_require__","webpackContext","webpackContextResolve"],"sourceRoot":"webpack:///","x_google_ignoreList":[1283,1284]}